diff --git a/.github/workflows/all-dev-rig.yml b/.github/workflows/all-dev-rig.yml
index d4034cd7..ee992317 100644
--- a/.github/workflows/all-dev-rig.yml
+++ b/.github/workflows/all-dev-rig.yml
@@ -3,7 +3,7 @@ name: ALL rig dev Deployment
on:
push:
branches:
- - all-2.0.0.1
+ - all-2.5.0
jobs:
deploy:
@@ -77,6 +77,7 @@ jobs:
REACT_APP_SHOW_HELP_VIDEO_LINK: ${{ vars.REACT_APP_SHOW_HELP_VIDEO_LINK }}
REACT_APP_MAX_LEVEL: ${{ vars.REACT_APP_MAX_LEVEL }}
REACT_APP_LEARNER_AI_BASE_URL: ${{ vars.REACT_APP_LEARNER_AI_BASE_URL }}
+ REACT_APP_USE_RECOMMENDATION_API: ${{ vars.REACT_APP_USE_RECOMMENDATION_API }}
CI: false # Disabling CI to not treat warnings as errors
run: npm run build
diff --git a/package.json b/package.json
index 795f775c..9d0e2e71 100644
--- a/package.json
+++ b/package.json
@@ -4,10 +4,12 @@
"private": true,
"homepage": ".",
"dependencies": {
+ "@ai4bharat/indic-transliterate": "^1.3.8",
"@aws-sdk/client-s3": "^3.388.0",
"@emotion/react": "^11.7.0",
"@emotion/styled": "^11.6.0",
"@fingerprintjs/fingerprintjs": "^4.2.2",
+ "@indic-transliteration/sanscript": "^1.3.3",
"@mui/icons-material": "^5.2.5",
"@mui/material": "^5.2.2",
"@mui/styles": "^5.2.3",
@@ -35,6 +37,8 @@
"homophones": "^1.0.1",
"jwt-decode": "^4.0.0",
"lodash": "^4.17.21",
+ "lottie-react": "^2.4.1",
+ "lucide-react": "^0.540.0",
"memoize-one": "^6.0.0",
"metaphone": "^2.0.1",
"react": "^18.2.0",
diff --git a/public/index.html b/public/index.html
index 21f55d17..368bebf0 100644
--- a/public/index.html
+++ b/public/index.html
@@ -36,7 +36,7 @@
base-uri 'self';
connect-src 'self' *.theall.ai https://all-dev-storage.s3.ap-south-1.amazonaws.com https://all-dev-content-service.s3.ap-south-1.amazonaws.com https://all-prod-content-service.s3.ap-south-1.amazonaws.com blob: https://huggingface.co https://cas-bridge.xethub.hf.co https://cdn.jsdelivr.net;
font-src 'self' https://fonts.googleapis.com https://fonts.cdnfonts.com https://fonts.gstatic.com;
- frame-src 'self';
+ frame-src 'self' https://www.google.com https://www.gstatic.com https://www.youtube.com https://www.youtube-nocookie.com;
img-src 'self' data: blob:
https://images.squarespace-cdn.com
https://all-prod-content-service.s3.ap-south-1.amazonaws.com
diff --git a/src/RFlow/Barakhadi.jsx b/src/RFlow/Barakhadi.jsx
new file mode 100644
index 00000000..58f224b8
--- /dev/null
+++ b/src/RFlow/Barakhadi.jsx
@@ -0,0 +1,3758 @@
+import React, { useState, useEffect, useRef } from "react";
+import Confetti from "react-confetti";
+import * as Assets from "../utils/imageAudioLinks";
+import {
+ ThemeProvider,
+ createTheme,
+ useMediaQuery,
+ Grid,
+ Box,
+} from "@mui/material";
+import MainLayout from "../components/Layouts.jsx/MainLayout";
+import listenImg from "../assets/listen.svg";
+import correctSound from "../assets/correct.wav";
+import wrongSound from "../assets/audio/wrong.wav";
+import RecordVoiceVisualizer from "../utils/RecordVoiceVisualizer";
+import {
+ practiceSteps,
+ getLocalData,
+ NextButtonRound,
+ RetryIcon,
+ setLocalData,
+ sendTestRigScore,
+} from "../utils/constants";
+import { useNavigate } from "react-router-dom";
+import { response } from "../services/telementryService";
+import { Typography, Stack, IconButton } from "@mui/material";
+import { ArrowRight, RotateCcw } from "lucide-react";
+import trainImg from "../assets/trainImg.svg";
+import { motion, AnimatePresence } from "framer-motion";
+import VoiceAnalyser from "../utils/VoiceAnalyser";
+import * as s3Assets from "../utils/rFlowS3Links";
+import { getAssetUrl } from "../utils/rFlowS3Links";
+import { getAssetAudioUrl } from "../utils/rFlowS3Links";
+
+import ballonImg from "../assets/ballon.svg";
+import bearImg from "../assets/bear.svg";
+import boyImg from "../assets/boy.svg";
+import deleteImg from "../assets/delete.svg";
+import eraseImg from "../assets/erase.svg";
+import listenImgBox from "../assets/listenimgbox.svg";
+import boyballonflyImg from "../assets/boyballonfly.svg";
+import wordbanaoImg from "../assets/wordbanao.svg";
+import dottimg from "../assets/dottimg.svg";
+import nextImg from "../assets/nextImg.svg";
+import closebuttonImg from "../assets/closebtn.svg";
+import { callTelemetryDiscovery } from "../utils/apiUtil";
+import audiowaveImg from "../assets/audiowave.svg";
+import hintimg from "../assets/hintsicon.svg";
+
+import {
+ addLesson,
+ addPointer,
+ fetchUserPoints,
+ createLearnerProgress,
+} from "../services/orchestration/orchestrationService";
+import { fetchGetSetResult } from "../services/learnerAi/learnerAiService";
+import {
+ fetchAssessmentData,
+ fetchPaginatedContent,
+} from "../services/content/contentService";
+import { updateLearnerProfile } from "../services/learnerAi/learnerAiService";
+
+const theme = createTheme();
+
+const vowelsData = {
+ hi: ["अ", "आ", "इ", "ई", "उ", "ऊ", "ऋ", "ए", "ऐ", "ओ", "औ", "अं", "अः"],
+
+ ta: [
+ "அ",
+ "ஆ",
+ "இ",
+ "ஈ",
+ "உ",
+ "ஊ",
+ "எ",
+ "ஏ",
+ "ஐ",
+ "ஒ",
+ "ஓ",
+ "ஔ",
+ "ஃ",
+ "ஂ",
+ "",
+ ],
+
+ te: [
+ "అ",
+ "ఆ",
+ "ఇ",
+ "ఈ",
+ "ఉ",
+ "ఊ",
+ "ఋ",
+ "ఎ",
+ "ఏ",
+ "ఐ",
+ "ఒ",
+ "ఓ",
+ "ఔ",
+ "అం",
+ "అః",
+ ],
+
+ kn: [
+ "ಅ",
+ "ಆ",
+ "ಇ",
+ "ಈ",
+ "ಉ",
+ "ಊ",
+ "ಋ",
+ "ಎ",
+ "ಏ",
+ "ಐ",
+ "ಒ",
+ "ಓ",
+ "ಔ",
+ "ಅಂ",
+ "ಅಃ",
+ ],
+};
+
+const barakhadiCharts = {
+ hi: {
+ क: [
+ "क",
+ "का",
+ "कि",
+ "की",
+ "कु",
+ "कू",
+ "कृ",
+ "के",
+ "कै",
+ "को",
+ "कौ",
+ "कं",
+ "कः",
+ ],
+ ख: [
+ "ख",
+ "खा",
+ "खि",
+ "खी",
+ "खु",
+ "खू",
+ "खृ",
+ "खे",
+ "खै",
+ "खो",
+ "खौ",
+ "खं",
+ "खः",
+ ],
+ ग: [
+ "ग",
+ "गा",
+ "गि",
+ "गी",
+ "गु",
+ "गू",
+ "गृ",
+ "गे",
+ "गै",
+ "गो",
+ "गौ",
+ "गं",
+ "गः",
+ ],
+ घ: [
+ "घ",
+ "घा",
+ "घि",
+ "घी",
+ "घु",
+ "घू",
+ "घृ",
+ "घे",
+ "घै",
+ "घो",
+ "घौ",
+ "घं",
+ "घः",
+ ],
+ ङ: [
+ "ङ",
+ "ङा",
+ "ङि",
+ "ङी",
+ "ङु",
+ "ङू",
+ "ङृ",
+ "ङे",
+ "ङै",
+ "ङो",
+ "ङौ",
+ "ङं",
+ "ङः",
+ ],
+
+ च: [
+ "च",
+ "चा",
+ "चि",
+ "ची",
+ "चु",
+ "चू",
+ "चृ",
+ "चे",
+ "चै",
+ "चो",
+ "चौ",
+ "चं",
+ "चः",
+ ],
+ छ: [
+ "छ",
+ "छा",
+ "छि",
+ "छी",
+ "छु",
+ "छू",
+ "छृ",
+ "छे",
+ "छै",
+ "छो",
+ "छौ",
+ "छं",
+ "छः",
+ ],
+ ज: [
+ "ज",
+ "जा",
+ "जि",
+ "जी",
+ "जु",
+ "जू",
+ "जृ",
+ "जे",
+ "जै",
+ "जो",
+ "जौ",
+ "जं",
+ "जः",
+ ],
+ झ: [
+ "झ",
+ "झा",
+ "झि",
+ "झी",
+ "झु",
+ "झू",
+ "झृ",
+ "झे",
+ "झै",
+ "झो",
+ "झौ",
+ "झं",
+ "झः",
+ ],
+ ञ: [
+ "ञ",
+ "ञा",
+ "ञि",
+ "ञी",
+ "ञु",
+ "ञू",
+ "ञृ",
+ "ञे",
+ "ञै",
+ "ञो",
+ "ञौ",
+ "ञं",
+ "ञः",
+ ],
+
+ ट: [
+ "ट",
+ "टा",
+ "टि",
+ "टी",
+ "टु",
+ "टू",
+ "टृ",
+ "टे",
+ "टै",
+ "टो",
+ "टौ",
+ "टं",
+ "टः",
+ ],
+ ठ: [
+ "ठ",
+ "ठा",
+ "ठि",
+ "ठी",
+ "ठु",
+ "ठू",
+ "ठृ",
+ "ठे",
+ "ठै",
+ "ठो",
+ "ठौ",
+ "ठं",
+ "ठः",
+ ],
+ ड: [
+ "ड",
+ "डा",
+ "डि",
+ "डी",
+ "डु",
+ "डू",
+ "डृ",
+ "डे",
+ "डै",
+ "डो",
+ "डौ",
+ "डं",
+ "डः",
+ ],
+ ढ: [
+ "ढ",
+ "ढा",
+ "ढि",
+ "ढी",
+ "ढु",
+ "ढू",
+ "ढृ",
+ "ढे",
+ "ढै",
+ "ढो",
+ "ढौ",
+ "ढं",
+ "ढः",
+ ],
+ ण: [
+ "ण",
+ "णा",
+ "णि",
+ "णी",
+ "णु",
+ "णू",
+ "णृ",
+ "णे",
+ "णै",
+ "णो",
+ "णौ",
+ "णं",
+ "णः",
+ ],
+
+ त: [
+ "त",
+ "ता",
+ "ति",
+ "ती",
+ "तु",
+ "तू",
+ "तृ",
+ "ते",
+ "तै",
+ "तो",
+ "तौ",
+ "तं",
+ "तः",
+ ],
+ थ: [
+ "थ",
+ "था",
+ "थि",
+ "थी",
+ "थु",
+ "थू",
+ "थृ",
+ "थे",
+ "थै",
+ "थो",
+ "थौ",
+ "थं",
+ "थः",
+ ],
+ द: [
+ "द",
+ "दा",
+ "दि",
+ "दी",
+ "दु",
+ "दू",
+ "दृ",
+ "दे",
+ "दै",
+ "दो",
+ "दौ",
+ "दं",
+ "दः",
+ ],
+ ध: [
+ "ध",
+ "धा",
+ "धि",
+ "धी",
+ "धु",
+ "धू",
+ "धृ",
+ "धे",
+ "धै",
+ "धो",
+ "धौ",
+ "धं",
+ "धः",
+ ],
+ न: [
+ "न",
+ "ना",
+ "नि",
+ "नी",
+ "नु",
+ "नू",
+ "नृ",
+ "ने",
+ "नै",
+ "नो",
+ "नौ",
+ "नं",
+ "नः",
+ ],
+
+ प: [
+ "प",
+ "पा",
+ "पि",
+ "पी",
+ "पु",
+ "पू",
+ "पृ",
+ "पे",
+ "पै",
+ "पो",
+ "पौ",
+ "पं",
+ "पः",
+ ],
+ फ: [
+ "फ",
+ "फा",
+ "फि",
+ "फी",
+ "फु",
+ "फू",
+ "फृ",
+ "फे",
+ "फै",
+ "फो",
+ "फौ",
+ "फं",
+ "फः",
+ ],
+ ब: [
+ "ब",
+ "बा",
+ "बि",
+ "बी",
+ "बु",
+ "बू",
+ "बृ",
+ "बे",
+ "बै",
+ "बो",
+ "बौ",
+ "बं",
+ "बः",
+ ],
+ भ: [
+ "भ",
+ "भा",
+ "भि",
+ "भी",
+ "भु",
+ "भू",
+ "भृ",
+ "भे",
+ "भै",
+ "भो",
+ "भौ",
+ "भं",
+ "भः",
+ ],
+ म: [
+ "म",
+ "मा",
+ "मि",
+ "मी",
+ "मु",
+ "मू",
+ "मृ",
+ "मे",
+ "मै",
+ "मो",
+ "मौ",
+ "मं",
+ "मः",
+ ],
+
+ य: [
+ "य",
+ "या",
+ "यि",
+ "यी",
+ "यु",
+ "यू",
+ "यृ",
+ "ये",
+ "यै",
+ "यो",
+ "यौ",
+ "यं",
+ "यः",
+ ],
+ र: [
+ "र",
+ "रा",
+ "रि",
+ "री",
+ "रु",
+ "रू",
+ "रृ",
+ "रे",
+ "रै",
+ "रो",
+ "रौ",
+ "रं",
+ "रः",
+ ],
+ ल: [
+ "ल",
+ "ला",
+ "लि",
+ "ली",
+ "लु",
+ "लू",
+ "लृ",
+ "ले",
+ "लै",
+ "लो",
+ "लौ",
+ "लं",
+ "लः",
+ ],
+ व: [
+ "व",
+ "वा",
+ "वि",
+ "वी",
+ "वु",
+ "वू",
+ "वृ",
+ "वे",
+ "वै",
+ "वो",
+ "वौ",
+ "वं",
+ "वः",
+ ],
+
+ श: [
+ "श",
+ "शा",
+ "शि",
+ "शी",
+ "शु",
+ "शू",
+ "शृ",
+ "शे",
+ "शै",
+ "शो",
+ "शौ",
+ "शं",
+ "शः",
+ ],
+ ष: [
+ "ष",
+ "षा",
+ "षि",
+ "षी",
+ "षु",
+ "षू",
+ "षृ",
+ "षे",
+ "ষৈ",
+ "ষো",
+ "ষৌ",
+ "ষং",
+ "ষঃ",
+ ],
+ स: [
+ "स",
+ "सा",
+ "सि",
+ "सी",
+ "सु",
+ "सू",
+ "सृ",
+ "से",
+ "सै",
+ "सो",
+ "सौ",
+ "सं",
+ "सः",
+ ],
+ ह: [
+ "ह",
+ "हा",
+ "हि",
+ "ही",
+ "हु",
+ "हू",
+ "हृ",
+ "हे",
+ "है",
+ "हो",
+ "हौ",
+ "हं",
+ "हः",
+ ],
+ },
+
+ ta: {
+ க: [
+ "க",
+ "கா",
+ "கி",
+ "கீ",
+ "கு",
+ "கூ",
+ "கெ",
+ "கே",
+ "கை",
+ "கொ",
+ "கோ",
+ "கௌ",
+ "கஂ",
+ "கஃ",
+ "க",
+ ],
+ ங: [
+ "ங",
+ "ஙா",
+ "ஙி",
+ "ஙீ",
+ "ஙு",
+ "ஙூ",
+ "ஙெ",
+ "ஙே",
+ "ஙை",
+ "ஙொ",
+ "ஙோ",
+ "ஙௌ",
+ "ஙஂ",
+ "ஙஃ",
+ "ங",
+ ],
+ ச: [
+ "ச",
+ "சா",
+ "சி",
+ "சீ",
+ "சு",
+ "சூ",
+ "செ",
+ "சே",
+ "சை",
+ "சொ",
+ "சோ",
+ "சௌ",
+ "சஂ",
+ "சஃ",
+ "ச",
+ ],
+ ஞ: [
+ "ஞ",
+ "ஞா",
+ "ஞி",
+ "ஞீ",
+ "ஞு",
+ "ஞூ",
+ "ஞெ",
+ "ஞே",
+ "ஞை",
+ "ஞொ",
+ "ஞோ",
+ "ஞௌ",
+ "ஞஂ",
+ "ஞஃ",
+ "ஞ",
+ ],
+ ட: [
+ "ட",
+ "டா",
+ "டி",
+ "டீ",
+ "டு",
+ "டூ",
+ "டெ",
+ "டே",
+ "டை",
+ "டொ",
+ "டோ",
+ "டௌ",
+ "டஂ",
+ "டஃ",
+ "ட",
+ ],
+ ண: [
+ "ண",
+ "ணா",
+ "ணி",
+ "ணீ",
+ "ணு",
+ "ணூ",
+ "ணெ",
+ "ணே",
+ "ணை",
+ "ணொ",
+ "ணோ",
+ "ணௌ",
+ "ணஂ",
+ "ணஃ",
+ "ண",
+ ],
+ த: [
+ "த",
+ "தா",
+ "தி",
+ "தீ",
+ "து",
+ "தூ",
+ "தெ",
+ "தே",
+ "தை",
+ "தொ",
+ "தோ",
+ "தௌ",
+ "தஂ",
+ "தஃ",
+ "த",
+ ],
+ ந: [
+ "ந",
+ "நா",
+ "நி",
+ "நீ",
+ "நு",
+ "நூ",
+ "நெ",
+ "நே",
+ "நை",
+ "நொ",
+ "நோ",
+ "நௌ",
+ "நஂ",
+ "நஃ",
+ "ந",
+ ],
+ ப: [
+ "ப",
+ "பா",
+ "பி",
+ "பீ",
+ "பு",
+ "பூ",
+ "பெ",
+ "பே",
+ "பை",
+ "பொ",
+ "போ",
+ "பௌ",
+ "பஂ",
+ "பஃ",
+ "ப",
+ ],
+ ம: [
+ "ம",
+ "மா",
+ "மி",
+ "மீ",
+ "மு",
+ "மூ",
+ "மெ",
+ "மே",
+ "மை",
+ "மொ",
+ "மோ",
+ "மௌ",
+ "மஂ",
+ "மஃ",
+ "ம",
+ ],
+ ய: [
+ "ய",
+ "யா",
+ "யி",
+ "யீ",
+ "யு",
+ "யூ",
+ "யெ",
+ "யே",
+ "யை",
+ "யொ",
+ "யோ",
+ "யௌ",
+ "யஂ",
+ "யஃ",
+ "ய",
+ ],
+ ர: [
+ "ர",
+ "ரா",
+ "ரி",
+ "ரீ",
+ "ரு",
+ "ரூ",
+ "ரெ",
+ "ரே",
+ "ரை",
+ "ரொ",
+ "ரோ",
+ "ரௌ",
+ "ரஂ",
+ "ரஃ",
+ "ர",
+ ],
+ ல: [
+ "ல",
+ "லா",
+ "லி",
+ "லீ",
+ "லு",
+ "லூ",
+ "லெ",
+ "லே",
+ "லை",
+ "லொ",
+ "லோ",
+ "லௌ",
+ "லஂ",
+ "லஃ",
+ "ல",
+ ],
+ வ: [
+ "வ",
+ "வா",
+ "வி",
+ "வீ",
+ "வு",
+ "வூ",
+ "வெ",
+ "வே",
+ "வை",
+ "வொ",
+ "வோ",
+ "வௌ",
+ "வஂ",
+ "வஃ",
+ "வ",
+ ],
+ ழ: [
+ "ழ",
+ "ழா",
+ "ழி",
+ "ழீ",
+ "ழு",
+ "ழூ",
+ "ழெ",
+ "ழே",
+ "ழை",
+ "ழொ",
+ "ழோ",
+ "ழௌ",
+ "ழஂ",
+ "ழஃ",
+ "ழ",
+ ],
+ ள: [
+ "ள",
+ "ளா",
+ "ளி",
+ "ளீ",
+ "ளு",
+ "ளூ",
+ "ளெ",
+ "ளே",
+ "ளை",
+ "ளொ",
+ "ளோ",
+ "ளௌ",
+ "ளஂ",
+ "ளஃ",
+ "ள",
+ ],
+ ற: [
+ "ற",
+ "றா",
+ "றி",
+ "றீ",
+ "று",
+ "றூ",
+ "றெ",
+ "றே",
+ "றை",
+ "றொ",
+ "றோ",
+ "றௌ",
+ "றஂ",
+ "றஃ",
+ "ற",
+ ],
+ ன: [
+ "ன",
+ "னா",
+ "னி",
+ "னீ",
+ "னு",
+ "னூ",
+ "னெ",
+ "னே",
+ "னை",
+ "னொ",
+ "னோ",
+ "னௌ",
+ "னஂ",
+ "னஃ",
+ "ன",
+ ],
+ },
+
+ te: {
+ క: [
+ "క",
+ "కా",
+ "కి",
+ "కీ",
+ "కు",
+ "కూ",
+ "కృ",
+ "కె",
+ "కే",
+ "కై",
+ "కొ",
+ "కో",
+ "కౌ",
+ "కం",
+ "కః",
+ ],
+ ఖ: [
+ "ఖ",
+ "ఖా",
+ "ఖి",
+ "ఖీ",
+ "ఖు",
+ "ఖూ",
+ "ఖృ",
+ "ఖె",
+ "ఖే",
+ "ఖై",
+ "ఖొ",
+ "ఖో",
+ "ఖౌ",
+ "ఖం",
+ "ఖః",
+ ],
+ గ: [
+ "గ",
+ "గా",
+ "గి",
+ "గీ",
+ "గు",
+ "గూ",
+ "గృ",
+ "గె",
+ "గే",
+ "గై",
+ "గొ",
+ "గో",
+ "గౌ",
+ "గం",
+ "గః",
+ ],
+ ఘ: [
+ "ఘ",
+ "ఘా",
+ "ఘి",
+ "ఘీ",
+ "ఘు",
+ "ఘూ",
+ "ఘృ",
+ "ఘె",
+ "ఘే",
+ "ఘై",
+ "ఘొ",
+ "ఘో",
+ "ఘౌ",
+ "ఘం",
+ "ఘః",
+ ],
+ ఙ: [
+ "ఙ",
+ "ఙా",
+ "ఙి",
+ "ఙీ",
+ "ఙు",
+ "ఙూ",
+ "ఙృ",
+ "ఙె",
+ "ఙే",
+ "ఙై",
+ "ఙొ",
+ "ఙో",
+ "ఙౌ",
+ "ఙం",
+ "ఙః",
+ ],
+ చ: [
+ "చ",
+ "చా",
+ "చి",
+ "చీ",
+ "చు",
+ "చూ",
+ "చృ",
+ "చె",
+ "చే",
+ "చై",
+ "చొ",
+ "చో",
+ "చౌ",
+ "చం",
+ "చః",
+ ],
+ ఛ: [
+ "ఛ",
+ "ఛా",
+ "ఛి",
+ "ఛీ",
+ "ఛు",
+ "ఛూ",
+ "ఛృ",
+ "ఛె",
+ "ఛే",
+ "ఛై",
+ "ఛొ",
+ "ఛో",
+ "ఛౌ",
+ "ఛం",
+ "ఛః",
+ ],
+ జ: [
+ "జ",
+ "జా",
+ "జి",
+ "జీ",
+ "జు",
+ "జూ",
+ "జృ",
+ "జె",
+ "జే",
+ "జై",
+ "జొ",
+ "జో",
+ "జౌ",
+ "జం",
+ "జః",
+ ],
+ ఝ: [
+ "ఝ",
+ "ఝా",
+ "ఝి",
+ "ఝీ",
+ "ఝు",
+ "ఝూ",
+ "ఝృ",
+ "ఝె",
+ "ఝే",
+ "ఝై",
+ "ఝొ",
+ "ఝో",
+ "ఝౌ",
+ "ఝం",
+ "ఝః",
+ ],
+ ఞ: [
+ "ఞ",
+ "ఞా",
+ "ఞి",
+ "ఞీ",
+ "ఞు",
+ "ఞూ",
+ "ఞృ",
+ "ఞె",
+ "ఞే",
+ "ఞై",
+ "ఞొ",
+ "ఞో",
+ "ఞౌ",
+ "ఞం",
+ "ఞః",
+ ],
+ ట: [
+ "ట",
+ "టా",
+ "టి",
+ "టీ",
+ "టు",
+ "టూ",
+ "టృ",
+ "టె",
+ "టే",
+ "టై",
+ "టొ",
+ "టో",
+ "టౌ",
+ "టం",
+ "టః",
+ ],
+ ఠ: [
+ "ఠ",
+ "ఠా",
+ "ఠి",
+ "ఠీ",
+ "ఠు",
+ "ఠూ",
+ "ఠృ",
+ "ఠె",
+ "ఠే",
+ "ఠై",
+ "ఠొ",
+ "ఠో",
+ "ఠౌ",
+ "ఠం",
+ "ఠః",
+ ],
+ డ: [
+ "డ",
+ "డా",
+ "డి",
+ "డీ",
+ "డు",
+ "డూ",
+ "డృ",
+ "డె",
+ "డే",
+ "డై",
+ "డొ",
+ "డో",
+ "డౌ",
+ "డం",
+ "డః",
+ ],
+ ఢ: [
+ "ఢ",
+ "ఢా",
+ "ఢి",
+ "ఢీ",
+ "ఢు",
+ "ఢూ",
+ "ఢృ",
+ "ఢె",
+ "ఢే",
+ "ఢై",
+ "ఢొ",
+ "ఢో",
+ "ఢౌ",
+ "ఢం",
+ "ఢః",
+ ],
+ ణ: [
+ "ణ",
+ "ణా",
+ "ణి",
+ "ణీ",
+ "ణు",
+ "ణూ",
+ "ణృ",
+ "ణె",
+ "ణే",
+ "ణై",
+ "ణొ",
+ "ణో",
+ "ణౌ",
+ "ణం",
+ "ణః",
+ ],
+ త: [
+ "త",
+ "తా",
+ "తి",
+ "తీ",
+ "తు",
+ "తూ",
+ "తృ",
+ "తె",
+ "తే",
+ "తై",
+ "తొ",
+ "తో",
+ "తౌ",
+ "తం",
+ "తః",
+ ],
+ థ: [
+ "థ",
+ "థా",
+ "థి",
+ "థీ",
+ "థు",
+ "థూ",
+ "థృ",
+ "థె",
+ "థే",
+ "థై",
+ "థొ",
+ "థో",
+ "థౌ",
+ "థం",
+ "థః",
+ ],
+ ద: [
+ "ద",
+ "దా",
+ "ది",
+ "దీ",
+ "దు",
+ "దూ",
+ "దృ",
+ "దె",
+ "దే",
+ "దై",
+ "దొ",
+ "దో",
+ "దౌ",
+ "దం",
+ "దః",
+ ],
+ ధ: [
+ "ధ",
+ "ధా",
+ "ధి",
+ "ధీ",
+ "ధు",
+ "ధూ",
+ "ధృ",
+ "ధె",
+ "ధే",
+ "ధై",
+ "ధొ",
+ "ధో",
+ "ధౌ",
+ "ధం",
+ "ధః",
+ ],
+ న: [
+ "న",
+ "నా",
+ "ని",
+ "నీ",
+ "ను",
+ "నూ",
+ "నృ",
+ "నె",
+ "నే",
+ "నై",
+ "నొ",
+ "నో",
+ "నౌ",
+ "నం",
+ "నః",
+ ],
+ ప: [
+ "ప",
+ "పా",
+ "పి",
+ "పీ",
+ "పు",
+ "పూ",
+ "పృ",
+ "పె",
+ "పే",
+ "పై",
+ "పొ",
+ "పో",
+ "పౌ",
+ "పం",
+ "పః",
+ ],
+ ఫ: [
+ "ఫ",
+ "ఫా",
+ "ఫి",
+ "ఫీ",
+ "ఫు",
+ "ఫూ",
+ "ఫృ",
+ "ఫె",
+ "ఫే",
+ "ఫై",
+ "ఫొ",
+ "ఫో",
+ "ఫౌ",
+ "ఫం",
+ "ఫః",
+ ],
+ బ: [
+ "బ",
+ "బా",
+ "బి",
+ "బీ",
+ "బు",
+ "బూ",
+ "బృ",
+ "బె",
+ "బే",
+ "బై",
+ "బొ",
+ "బో",
+ "బౌ",
+ "బం",
+ "బః",
+ ],
+ భ: [
+ "భ",
+ "భా",
+ "భి",
+ "భీ",
+ "భు",
+ "భూ",
+ "భృ",
+ "భె",
+ "భే",
+ "భై",
+ "భొ",
+ "భో",
+ "భౌ",
+ "భం",
+ "భః",
+ ],
+ మ: [
+ "మ",
+ "మా",
+ "మి",
+ "మీ",
+ "ము",
+ "మూ",
+ "మృ",
+ "మె",
+ "మే",
+ "మై",
+ "మొ",
+ "మో",
+ "మౌ",
+ "మం",
+ "మః",
+ ],
+ య: [
+ "య",
+ "యా",
+ "యి",
+ "యీ",
+ "యు",
+ "యూ",
+ "యృ",
+ "యె",
+ "యే",
+ "యై",
+ "యొ",
+ "యో",
+ "యౌ",
+ "యం",
+ "యః",
+ ],
+ ర: [
+ "ర",
+ "రా",
+ "రి",
+ "రీ",
+ "రు",
+ "రూ",
+ "రృ",
+ "రె",
+ "రే",
+ "రై",
+ "రొ",
+ "రో",
+ "రౌ",
+ "రం",
+ "రః",
+ ],
+ ల: [
+ "ల",
+ "లా",
+ "లి",
+ "లీ",
+ "లు",
+ "లూ",
+ "లృ",
+ "లె",
+ "లే",
+ "లై",
+ "లొ",
+ "లో",
+ "లౌ",
+ "లం",
+ "లః",
+ ],
+ వ: [
+ "వ",
+ "వా",
+ "వి",
+ "వీ",
+ "వు",
+ "వూ",
+ "వృ",
+ "వె",
+ "వే",
+ "వై",
+ "వొ",
+ "వో",
+ "వౌ",
+ "వం",
+ "వః",
+ ],
+ శ: [
+ "శ",
+ "శా",
+ "శి",
+ "శీ",
+ "శు",
+ "శూ",
+ "శృ",
+ "శె",
+ "శే",
+ "శై",
+ "శొ",
+ "శో",
+ "శౌ",
+ "శం",
+ "శః",
+ ],
+ ష: [
+ "ష",
+ "షా",
+ "షి",
+ "షీ",
+ "షు",
+ "షూ",
+ "షృ",
+ "షె",
+ "షే",
+ "షై",
+ "షొ",
+ "షో",
+ "షౌ",
+ "షం",
+ "షః",
+ ],
+ స: [
+ "స",
+ "సా",
+ "సి",
+ "సీ",
+ "సు",
+ "సూ",
+ "సృ",
+ "సె",
+ "సే",
+ "సై",
+ "సొ",
+ "సో",
+ "సౌ",
+ "సం",
+ "సః",
+ ],
+ హ: [
+ "హ",
+ "హా",
+ "హి",
+ "హీ",
+ "హు",
+ "హూ",
+ "హృ",
+ "హె",
+ "హే",
+ "హై",
+ "హొ",
+ "హో",
+ "హౌ",
+ "హం",
+ "హః",
+ ],
+ },
+
+ kn: {
+ ಕ: [
+ "ಕ",
+ "ಕಾ",
+ "ಕಿ",
+ "ಕೀ",
+ "ಕು",
+ "ಕೂ",
+ "ಕೃ",
+ "ಕೆ",
+ "ಕೇ",
+ "ಕೈ",
+ "ಕೊ",
+ "ಕೋ",
+ "ಕೌ",
+ "ಕಂ",
+ "ಕಃ",
+ ],
+ ಖ: [
+ "ಖ",
+ "ಖಾ",
+ "ಖಿ",
+ "ಖೀ",
+ "ಖು",
+ "ಖೂ",
+ "ಖೃ",
+ "ಖೆ",
+ "ಖೇ",
+ "ಖೈ",
+ "ಖೊ",
+ "ಖೋ",
+ "ಖೌ",
+ "ಖಂ",
+ "ಖಃ",
+ ],
+ ಗ: [
+ "ಗ",
+ "ಗಾ",
+ "ಗಿ",
+ "ಗೀ",
+ "ಗು",
+ "ಗೂ",
+ "ಗೃ",
+ "ಗೆ",
+ "ಗೇ",
+ "ಗೈ",
+ "ಗೊ",
+ "ಗೋ",
+ "ಗೌ",
+ "ಗಂ",
+ "ಗಃ",
+ ],
+ ಘ: [
+ "ಘ",
+ "ಘಾ",
+ "ಘಿ",
+ "ಘೀ",
+ "ಘು",
+ "ಘೂ",
+ "ಘೃ",
+ "ಘೆ",
+ "ಘೇ",
+ "ಘೈ",
+ "ಘೊ",
+ "ಘೋ",
+ "ಘೌ",
+ "ಘಂ",
+ "ಘಃ",
+ ],
+ ಙ: [
+ "ಙ",
+ "ಙಾ",
+ "ಙಿ",
+ "ಙೀ",
+ "ಙು",
+ "ಙೂ",
+ "ಙೃ",
+ "ಙೆ",
+ "ಙೇ",
+ "ಙೈ",
+ "ಙೊ",
+ "ಙೋ",
+ "ಙೌ",
+ "ಙಂ",
+ "ಙಃ",
+ ],
+ ಚ: [
+ "ಚ",
+ "ಚಾ",
+ "ಚಿ",
+ "ಚೀ",
+ "ಚು",
+ "ಚೂ",
+ "ಚೃ",
+ "ಚೆ",
+ "ಚೇ",
+ "ಚೈ",
+ "ಚೊ",
+ "ಚೋ",
+ "ಚೌ",
+ "ಚಂ",
+ "ಚಃ",
+ ],
+ ಛ: [
+ "ಛ",
+ "ಛಾ",
+ "ಛಿ",
+ "ಛೀ",
+ "ಛು",
+ "ಛೂ",
+ "ಛೃ",
+ "ಛೆ",
+ "ಛೇ",
+ "ಛೈ",
+ "ಛೊ",
+ "ಛೋ",
+ "ಛೌ",
+ "ಛಂ",
+ "ಛಃ",
+ ],
+ ಜ: [
+ "ಜ",
+ "ಜಾ",
+ "ಜಿ",
+ "ಜೀ",
+ "ಜು",
+ "ಜೂ",
+ "ಜೃ",
+ "ಜೆ",
+ "ಜೇ",
+ "ಜೈ",
+ "ಜೊ",
+ "ಜೋ",
+ "ಜೌ",
+ "ಜಂ",
+ "ಜಃ",
+ ],
+ ಝ: [
+ "ಝ",
+ "ಝಾ",
+ "ಝಿ",
+ "ಝೀ",
+ "ಝು",
+ "ಝೂ",
+ "ಝೃ",
+ "ಝೆ",
+ "ಝೇ",
+ "ಝೈ",
+ "ಝೊ",
+ "ಝೋ",
+ "ಝೌ",
+ "ಝಂ",
+ "ಝಃ",
+ ],
+ ಞ: [
+ "ಞ",
+ "ಞಾ",
+ "ಞಿ",
+ "ಞೀ",
+ "ಞು",
+ "ಞೂ",
+ "ಞೃ",
+ "ಞೆ",
+ "ಞೇ",
+ "ಞೈ",
+ "ಞೊ",
+ "ಞೋ",
+ "ಞೌ",
+ "ಞಂ",
+ "ಞಃ",
+ ],
+ ಟ: [
+ "ಟ",
+ "ಟಾ",
+ "ಟಿ",
+ "ಟೀ",
+ "ಟು",
+ "ಟೂ",
+ "ಟೃ",
+ "ಟೆ",
+ "ಟೇ",
+ "ಟೈ",
+ "ಟೊ",
+ "ಟೋ",
+ "ಟೌ",
+ "ಟಂ",
+ "ಟಃ",
+ ],
+ ಠ: [
+ "ಠ",
+ "ಠಾ",
+ "ಠಿ",
+ "ಠೀ",
+ "ಠು",
+ "ಠೂ",
+ "ಠೃ",
+ "ಠೆ",
+ "ಠೇ",
+ "ಠೈ",
+ "ಠೊ",
+ "ಠೋ",
+ "ಠೌ",
+ "ಠಂ",
+ "ಠಃ",
+ ],
+ ಡ: [
+ "ಡ",
+ "ಡಾ",
+ "ಡಿ",
+ "ಡೀ",
+ "ಡು",
+ "ಡೂ",
+ "ಡೃ",
+ "ಡೆ",
+ "ಡೇ",
+ "ಡೈ",
+ "ಡೊ",
+ "ಡೋ",
+ "ಡೌ",
+ "ಡಂ",
+ "ಡಃ",
+ ],
+ ಢ: [
+ "ಢ",
+ "ಢಾ",
+ "ಢಿ",
+ "ಢೀ",
+ "ಢು",
+ "ಢೂ",
+ "ಢೃ",
+ "ಢೆ",
+ "ಢೇ",
+ "ಢೈ",
+ "ಢೊ",
+ "ಢೋ",
+ "ಢೌ",
+ "ಢಂ",
+ "ಢಃ",
+ ],
+ ಣ: [
+ "ಣ",
+ "ಣಾ",
+ "ಣಿ",
+ "ಣೀ",
+ "ಣು",
+ "ಣೂ",
+ "ಣೃ",
+ "ಣೆ",
+ "ಣೇ",
+ "ಣೈ",
+ "ಣೊ",
+ "ಣೋ",
+ "ಣೌ",
+ "ಣಂ",
+ "ಣಃ",
+ ],
+ ತ: [
+ "ತ",
+ "ತಾ",
+ "ತಿ",
+ "ತೀ",
+ "ತು",
+ "ತೂ",
+ "ತೃ",
+ "ತೆ",
+ "ತೇ",
+ "ತೈ",
+ "ತೊ",
+ "ತೋ",
+ "ತೌ",
+ "ತಂ",
+ "ತಃ",
+ ],
+ ಥ: [
+ "ಥ",
+ "ಥಾ",
+ "ಥಿ",
+ "ಥೀ",
+ "ಥು",
+ "ಥೂ",
+ "ಥೃ",
+ "ಥೆ",
+ "ಥೇ",
+ "ಥೈ",
+ "ಥೊ",
+ "ಥೋ",
+ "ಥೌ",
+ "ಥಂ",
+ "ಥಃ",
+ ],
+ ದ: [
+ "ದ",
+ "ದಾ",
+ "ದಿ",
+ "ದೀ",
+ "ದು",
+ "ದೂ",
+ "ದೃ",
+ "ದೆ",
+ "ದೇ",
+ "ದೈ",
+ "ದೊ",
+ "ದೋ",
+ "ದೌ",
+ "ದಂ",
+ "ದಃ",
+ ],
+ ಧ: [
+ "ಧ",
+ "ಧಾ",
+ "ಧಿ",
+ "ಧೀ",
+ "ಧು",
+ "ಧೂ",
+ "ಧೃ",
+ "ಧೆ",
+ "ಧೇ",
+ "ಧೈ",
+ "ಧೊ",
+ "ಧೋ",
+ "ಧೌ",
+ "ಧಂ",
+ "ಧಃ",
+ ],
+ ನ: [
+ "ನ",
+ "ನಾ",
+ "ನಿ",
+ "ನೀ",
+ "ನು",
+ "ನೂ",
+ "ನೃ",
+ "ನೆ",
+ "ನೇ",
+ "ನೈ",
+ "ನೊ",
+ "ನೋ",
+ "ನೌ",
+ "ನಂ",
+ "ನಃ",
+ ],
+ ಪ: [
+ "ಪ",
+ "ಪಾ",
+ "ಪಿ",
+ "ಪೀ",
+ "ಪು",
+ "ಪೂ",
+ "ಪೃ",
+ "ಪೆ",
+ "ಪೇ",
+ "ಪೈ",
+ "ಪೊ",
+ "ಪೋ",
+ "ಪೌ",
+ "ಪಂ",
+ "ಪಃ",
+ ],
+ ಫ: [
+ "ಫ",
+ "ಫಾ",
+ "ಫಿ",
+ "ಫೀ",
+ "ಫು",
+ "ಫೂ",
+ "ಫೃ",
+ "ಫೆ",
+ "ಫೇ",
+ "ಫೈ",
+ "ಫೊ",
+ "ಫೋ",
+ "ಫೌ",
+ "ಫಂ",
+ "ಫಃ",
+ ],
+ ಬ: [
+ "ಬ",
+ "ಬಾ",
+ "ಬಿ",
+ "ಬೀ",
+ "ಬು",
+ "ಬೂ",
+ "ಬೃ",
+ "ಬೆ",
+ "ಬೇ",
+ "ಬೈ",
+ "ಬೊ",
+ "ಬೋ",
+ "ಬೌ",
+ "ಬಂ",
+ "ಬಃ",
+ ],
+ ಭ: [
+ "ಭ",
+ "ಭಾ",
+ "ಭಿ",
+ "ಭೀ",
+ "ಭು",
+ "ಭೂ",
+ "ಭೃ",
+ "ಭೆ",
+ "ಭೇ",
+ "ಭೈ",
+ "ಭೊ",
+ "ಭೋ",
+ "ಭೌ",
+ "ಭಂ",
+ "ಭಃ",
+ ],
+ ಮ: [
+ "ಮ",
+ "ಮಾ",
+ "ಮಿ",
+ "ಮೀ",
+ "ಮು",
+ "ಮೂ",
+ "ಮೃ",
+ "ಮೆ",
+ "ಮೇ",
+ "ಮೈ",
+ "ಮೊ",
+ "ಮೋ",
+ "ಮೌ",
+ "ಮಂ",
+ "ಮಃ",
+ ],
+ ಯ: [
+ "ಯ",
+ "ಯಾ",
+ "ಯಿ",
+ "ಯೀ",
+ "ಯು",
+ "ಯೂ",
+ "ಯೃ",
+ "ಯೆ",
+ "ಯೇ",
+ "ಯೈ",
+ "ಯೊ",
+ "ಯೋ",
+ "ಯೌ",
+ "ಯಂ",
+ "ಯಃ",
+ ],
+ ರ: [
+ "ರ",
+ "ರಾ",
+ "ರಿ",
+ "ರೀ",
+ "ರು",
+ "ರೂ",
+ "ರೃ",
+ "ರೆ",
+ "ರೇ",
+ "ರೈ",
+ "ರೊ",
+ "ರೋ",
+ "ರೌ",
+ "ರಂ",
+ "ರಃ",
+ ],
+ ಲ: [
+ "ಲ",
+ "ಲಾ",
+ "ಲಿ",
+ "ಲೀ",
+ "ಲು",
+ "ಲೂ",
+ "ಲೃ",
+ "ಲೆ",
+ "ಲೇ",
+ "ಲೈ",
+ "ಲೊ",
+ "ಲೋ",
+ "ಲೌ",
+ "ಲಂ",
+ "ಲಃ",
+ ],
+ ವ: [
+ "ವ",
+ "ವಾ",
+ "ವಿ",
+ "ವೀ",
+ "ವು",
+ "ವೂ",
+ "ವೃ",
+ "ವೆ",
+ "ವೇ",
+ "ವೈ",
+ "ವೊ",
+ "ವೋ",
+ "ವೌ",
+ "ವಂ",
+ "ವಃ",
+ ],
+ ಶ: [
+ "ಶ",
+ "ಶಾ",
+ "ಶಿ",
+ "ಶೀ",
+ "ಶು",
+ "ಶೂ",
+ "ಶೃ",
+ "ಶೆ",
+ "ಶೇ",
+ "ಶೈ",
+ "ಶೊ",
+ "ಶೋ",
+ "ಶೌ",
+ "ಶಂ",
+ "ಶಃ",
+ ],
+ ಷ: [
+ "ಷ",
+ "ಷಾ",
+ "ಷಿ",
+ "ಷೀ",
+ "ಷು",
+ "ಷೂ",
+ "ಷೃ",
+ "ಷೆ",
+ "ಷೇ",
+ "ಷೈ",
+ "ಷೊ",
+ "ಷೋ",
+ "ಷೌ",
+ "ಷಂ",
+ "ಷಃ",
+ ],
+ ಸ: [
+ "ಸ",
+ "ಸಾ",
+ "ಸಿ",
+ "ಸೀ",
+ "ಸು",
+ "ಸೂ",
+ "ಸೃ",
+ "ಸೆ",
+ "ಸೇ",
+ "ಸೈ",
+ "ಸೊ",
+ "ಸೋ",
+ "ಸೌ",
+ "ಸಂ",
+ "ಸಃ",
+ ],
+ ಹ: [
+ "ಹ",
+ "ಹಾ",
+ "ಹಿ",
+ "ಹೀ",
+ "ಹು",
+ "ಹೂ",
+ "ಹೃ",
+ "ಹೆ",
+ "ಹೇ",
+ "ಹೈ",
+ "ಹೊ",
+ "ಹೋ",
+ "ಹೌ",
+ "ಹಂ",
+ "ಹಃ",
+ ],
+ },
+};
+
+const wordData = {
+ hi: [
+ {
+ text: "भारत",
+ audio: "e0babcda-d6ff-4fed-a36d-5ccdd831b1f2.mp3",
+ segmentedAudio: getAssetAudioUrl(s3Assets.bharataudio),
+ },
+ {
+ text: "राजा",
+ audio: "b4edcfa0-91cf-4343-91f9-35fd8c691fcf.mp3",
+ segmentedAudio: getAssetAudioUrl(s3Assets.rajaaudio),
+ },
+ {
+ text: "जल",
+ audio: "551fee7a-fad6-4c0b-a384-5cee9aa7c7c2.mp3",
+ segmentedAudio: getAssetAudioUrl(s3Assets.jalaudio),
+ },
+ {
+ text: "भालू",
+ audio: "18cf4ec8-4669-49eb-81dc-622196bd226a.mp3",
+ segmentedAudio: getAssetAudioUrl(s3Assets.bhaluaudio),
+ },
+ {
+ text: "किताब",
+ audio: "42dfd842-8e09-4ab1-b14a-5b2afab33b5c.mp3",
+ segmentedAudio: getAssetAudioUrl(s3Assets.kitabaudio),
+ },
+ {
+ text: "नदी",
+ audio: "07346231-fd5b-4a41-82e8-c1f0be6a7a85.mp3",
+ segmentedAudio: getAssetAudioUrl(s3Assets.nadiaudio),
+ },
+ {
+ text: "केला",
+ audio: "1b1b2c77-88e1-46e0-b8a9-f94561d34d4a.mp3",
+ segmentedAudio: getAssetAudioUrl(s3Assets.kelaaudio),
+ },
+ {
+ text: "पपीता",
+ audio: "7ffaaae5-31ff-413c-ae1f-eb51780cf4d3.mp3",
+ segmentedAudio: getAssetAudioUrl(s3Assets.papitaaudio),
+ },
+ {
+ text: "पहाड",
+ audio: "97cd336e-0495-4aaa-8f64-6764f2714f6f.mp3",
+ segmentedAudio: getAssetAudioUrl(s3Assets.pahadaudio),
+ },
+ {
+ text: "सेब",
+ audio: "1ce9cb46-6761-4c97-b184-ed123ea49de5.mp3",
+ segmentedAudio: getAssetAudioUrl(s3Assets.sebaudio),
+ },
+ ],
+
+ ta: [
+ {
+ text: "மலை",
+ audio: "bf0f13d5-f206-4fe2-b0fc-39462362b948.mp3",
+ segmentedAudio: getAssetAudioUrl(s3Assets.மலைAudio),
+ },
+ {
+ text: "நதி",
+ audio: "47c2b4ee-88bf-4b4f-92e6-07716978b021.mp3",
+ segmentedAudio: getAssetAudioUrl(s3Assets.நதிAudio),
+ },
+ {
+ text: "புழு",
+ audio: "49500432-222b-475c-81c9-d331adfbca3a.mp3",
+ segmentedAudio: getAssetAudioUrl(s3Assets.புழுAudio),
+ },
+ {
+ text: "வலி",
+ audio: "5c7cdc08-b216-4317-80e2-a2995aeb1239.mp3",
+ segmentedAudio: getAssetAudioUrl(s3Assets.வலிAudio),
+ },
+ {
+ text: "தலை",
+ audio: "e782655f-6da9-4dc8-9f36-ce404c4c53c2.mp3",
+ segmentedAudio: getAssetAudioUrl(s3Assets.தலைAudio),
+ },
+ {
+ text: "நாடு",
+ audio: "37a8ced6-8fa4-451d-a712-627c09bd8398.mp3",
+ segmentedAudio: getAssetAudioUrl(s3Assets.நாடுAudio),
+ },
+ {
+ text: "மாடு",
+ audio: "37a8ced6-8fa4-451d-a712-627c09bd8398.mp3",
+ segmentedAudio: getAssetAudioUrl(s3Assets.மாடுAudio),
+ },
+ {
+ text: "மழை",
+ audio: "0d6e3293-7cd1-40ac-a971-46062a2c5bda.mp3",
+ segmentedAudio: getAssetAudioUrl(s3Assets.மழைAudio),
+ },
+ {
+ text: "கடை",
+ audio: "81bf37f3-4517-4af1-94d6-d8f801e20534.mp3",
+ segmentedAudio: getAssetAudioUrl(s3Assets.கடைAudio),
+ },
+ {
+ text: "வீடு",
+ audio: "7837a882-d5c5-40b6-b4d2-3d72d42427c7.mp3",
+ segmentedAudio: getAssetAudioUrl(s3Assets.வீடுAudio),
+ },
+ ],
+
+ te: [
+ {
+ text: "నీరు",
+ audio: "b2a623f9-e4d1-427f-a50a-83471aeb8d6e.mp3",
+ segmentedAudio: getAssetAudioUrl(s3Assets.నీరుAudio),
+ },
+ {
+ text: "పాలు",
+ audio: "6a5b2232-1afe-49eb-a467-d0d86b1e5daf.mp3",
+ segmentedAudio: getAssetAudioUrl(s3Assets.పాలుAudio),
+ },
+ {
+ text: "చేప",
+ audio: "4b9977d3-2b1a-4819-ab81-eae005b93192.mp3",
+ segmentedAudio: getAssetAudioUrl(s3Assets.చేపAudio),
+ },
+ {
+ text: "లేడి",
+ audio: "4204ec95-d07c-452f-884b-8a625ef23bb7.mp3",
+ segmentedAudio: getAssetAudioUrl(s3Assets.పక్షిAudio),
+ },
+ {
+ text: "నది",
+ audio: "ab310a2b-a6d4-435a-bcd2-589b33689c23.mp3",
+ segmentedAudio: getAssetAudioUrl(s3Assets.నదిAudio),
+ },
+ {
+ text: "కథలు",
+ audio: "fb3d428a-cd3f-45e5-85a8-162c823cfecb.mp3",
+ segmentedAudio: getAssetAudioUrl(s3Assets.కుక్కAudio),
+ },
+ {
+ text: "తిను",
+ audio: "8017f67a-1f3c-4286-82fa-5fb8a290d500.mp3",
+ segmentedAudio: getAssetAudioUrl(s3Assets.పిల్లిAudio),
+ },
+ {
+ text: "మనిషి",
+ audio: "6dc6f74e-44e2-4c1d-99d0-c08dbd740caf.mp3",
+ segmentedAudio: getAssetAudioUrl(s3Assets.మనిషిAudio),
+ },
+ {
+ text: "బడి",
+ audio: "4a3fafe7-b90c-4341-9c38-c40caed08494.mp3",
+ segmentedAudio: getAssetAudioUrl(s3Assets.బడిAudio),
+ },
+ {
+ text: "పని",
+ audio: "9f7f13c0-95b4-4fec-ae0f-28308d8261a8.mp3",
+ segmentedAudio: getAssetAudioUrl(s3Assets.ఇల్లుAudio),
+ },
+ ],
+ kn: [
+ {
+ text: "ತಂಡ",
+ audio: "e90023db-551d-462a-a132-dd2d93fd026a.mp3",
+ segmentedAudio: getAssetAudioUrl(s3Assets.ನೀರುAudio),
+ },
+ {
+ text: "ಹಾಲು",
+ audio: "c8b3656f-1f13-404e-8409-864fd33c56ac.mp3",
+ segmentedAudio: getAssetAudioUrl(s3Assets.ಹಾಲುAudio),
+ },
+ {
+ text: "ಮೀನು",
+ audio: "18ae34eb-1151-4692-bef4-6c4e9d45c68e.mp3",
+ segmentedAudio: getAssetAudioUrl(s3Assets.ಮೀನುAudio),
+ },
+ {
+ text: "ಕಮಲ",
+ audio: "6c751bea-e1d2-440a-8d1c-b8847f59312d.mp3",
+ segmentedAudio: getAssetAudioUrl(s3Assets.ಹಕ್ಕಿAudio),
+ },
+ {
+ text: "ನದಿ",
+ audio: "a11f0fe3-431f-4e15-9f85-0e50c6927e1e.mp3",
+ segmentedAudio: getAssetAudioUrl(s3Assets.ನದಿAudio),
+ },
+ {
+ text: "ನಾಯಿ",
+ audio: "be34bf1d-1a30-4244-a9fc-93872eac28d9.mp3",
+ segmentedAudio: getAssetAudioUrl(s3Assets.ನಾಯಿAudio),
+ },
+ {
+ text: "ಸಿಹಿ",
+ audio: "cb55bceb-11c9-4eeb-bd4f-28835fdccfdd.mp3",
+ segmentedAudio: getAssetAudioUrl(s3Assets.ಬೆಕ್ಕುAudio),
+ },
+ {
+ text: "ಮನೆ",
+ audio: "9d2e0804-5d26-456f-bcae-6d92d39d4091.mp3",
+ segmentedAudio: getAssetAudioUrl(s3Assets.ಮನೆAudio),
+ },
+ {
+ text: "ಪಾಠ",
+ audio: "26a8679c-cbc5-4a55-84bf-eb87de6678a6.mp3",
+ segmentedAudio: getAssetAudioUrl(s3Assets.ಪಾಠAudio),
+ },
+ {
+ text: "ತಂಡ",
+ audio: "ebf6d7ed-84f3-48f7-999b-61ba7ba67e5d.mp3",
+ segmentedAudio: getAssetAudioUrl(s3Assets.ಬಳ್ಳಿAudio),
+ },
+ ],
+};
+function getScriptFromLang(lang) {
+ const scriptMap = {
+ hi: "devanagari",
+ kn: "kannada",
+ te: "telugu",
+ ta: "tamil",
+ };
+ return scriptMap[lang] || "devanagari";
+}
+
+function getConsonantsFromWord(word, lang) {
+ const chart = barakhadiCharts[lang];
+ if (!chart) return [];
+
+ const consonants = Object.keys(chart);
+ return Array.from(word).filter((char) => consonants.includes(char));
+}
+
+function getBarakhadiForWord(word, lang) {
+ const chart = barakhadiCharts[lang];
+ if (!chart) return {};
+
+ const wordConsonants = getConsonantsFromWord(word, lang);
+ const allConsonants = Object.keys(chart);
+
+ let selectedConsonants = [...wordConsonants];
+ const needed = 4 - selectedConsonants.length;
+
+ if (needed > 0) {
+ const availableConsonants = allConsonants.filter(
+ (c) => !selectedConsonants.includes(c)
+ );
+ const randomConsonants = availableConsonants
+ .sort(() => Math.random() - 0.5)
+ .slice(0, needed);
+ selectedConsonants = [...selectedConsonants, ...randomConsonants];
+ } else if (selectedConsonants.length > 4) {
+ selectedConsonants = selectedConsonants.slice(0, 4);
+ }
+
+ selectedConsonants = selectedConsonants.sort(() => Math.random() - 0.5);
+
+ const barakhadi = {};
+ selectedConsonants.forEach((consonant) => {
+ barakhadi[consonant] = chart[consonant] || [];
+ });
+
+ return barakhadi;
+}
+
+const playAudio = (audioUrl) => {
+ if (audioUrl) {
+ const audio = new Audio(audioUrl);
+ audio.play().catch((error) => {
+ console.error("Error playing audio:", error);
+ });
+ }
+};
+
+const Barakhadi = ({
+ setVoiceText,
+ setRecordedAudio,
+ setVoiceAnimate,
+ storyLine,
+ type,
+ handleNext,
+ background,
+ parentWords = "",
+ showTimer,
+ points,
+ steps,
+ currentStep,
+ contentId,
+ contentType,
+ level,
+ isDiscover,
+ progressData,
+ showProgress,
+ playTeacherAudio = () => {},
+ callUpdateLearner,
+ disableScreen,
+ isShowCase,
+ handleBack,
+ loading,
+ setOpenMessageDialog,
+ audio,
+ currentImg,
+ vocabCount,
+ wordCount,
+}) => {
+ steps = 1;
+
+ const [word, setWord] = useState("");
+ const [targetWord, setTargetWord] = useState("");
+ const [showConfetti, setShowConfetti] = useState(false);
+ const [showFullChart, setShowFullChart] = useState(false);
+ const [currentBarakhadi, setCurrentBarakhadi] = useState({});
+ const [currentWordIndex, setCurrentWordIndex] = useState(0);
+ const [incorrectCell, setIncorrectCell] = useState(null);
+ const [voicesReady, setVoicesReady] = useState(false);
+ const [voiceStatus, setVoiceStatus] = useState("");
+ const navigate = useNavigate();
+ const correctAudio = new Audio(correctSound);
+ const wrongAudio = new Audio(wrongSound);
+ const lang = getLocalData("lang") || "hi";
+ const [showAudioWave, setShowAudioWave] = useState(false);
+ const [showWordAudioWave, setShowWordAudioWave] = useState(false);
+ const sessionId = getLocalData("sessionId");
+ const virtualId = getLocalData("virtualId");
+ const [currentCollectionId, setCurrentCollectionId] = useState("");
+ const [totalSyllableCount, setTotalSyllableCount] = useState("");
+ const [open, setOpen] = useState(false);
+
+ const langWiseAnswers = {
+ en: {
+ c: true,
+ j: true,
+ x: true,
+ k: true,
+ h: true,
+ n: true,
+ p: true,
+ u: true,
+ s: true,
+ o: true,
+ },
+ ta: {
+ அ: true,
+ ஆ: true,
+ இ: true,
+ ஈ: true,
+ உ: true,
+ ஊ: true,
+ எ: true,
+ ஏ: true,
+ ஐ: true,
+ ஒ: true,
+ },
+ te: {
+ అ: true,
+ ఆ: true,
+ ఇ: true,
+ ఈ: true,
+ ఉ: true,
+ ఊ: true,
+ ఎ: true,
+ ఏ: true,
+ ఐ: true,
+ ఒ: true,
+ },
+ kn: {
+ ಅ: true,
+ ಆ: true,
+ ಇ: true,
+ ಈ: true,
+ ಉ: true,
+ ಊ: true,
+ ಎ: true,
+ ಏ: true,
+ ಐ: true,
+ ಒ: true,
+ },
+ hi: {
+ अ: true,
+ आ: true,
+ इ: true,
+ ई: true,
+ उ: true,
+ ऊ: true,
+ ए: true,
+ ऐ: true,
+ ओ: true,
+ औ: true,
+ },
+ };
+
+ const swar = vowelsData[lang] || vowelsData.hi;
+ const vowels = vowelsData[lang] || vowelsData.hi;
+
+ useEffect(() => {
+ const loadVoices = () => {
+ const voices = speechSynthesis.getVoices();
+ if (voices.length > 0) {
+ setVoicesReady(true);
+ console.log(
+ "Voices loaded successfully:",
+ voices.map((v) => ({ name: v.name, lang: v.lang }))
+ );
+
+ const hasTamil = voices.some(
+ (v) => v.lang === "ta-IN" || v.lang.startsWith("ta")
+ );
+ if (!hasTamil && lang === "ta") {
+ setVoiceStatus("Tamil voice not available. Using Hindi instead.");
+ } else {
+ setVoiceStatus("");
+ }
+ }
+ };
+
+ if (speechSynthesis.onvoiceschanged !== undefined) {
+ speechSynthesis.onvoiceschanged = loadVoices;
+ }
+
+ loadVoices();
+
+ return () => {
+ speechSynthesis.onvoiceschanged = null;
+ };
+ }, [lang]);
+
+ const getWordData = () => {
+ return wordData[lang] || wordData.hi;
+ };
+
+ const wordDataList = getWordData();
+
+ const getTitle = () => {
+ const titles = {
+ hi: "हिंदी बारहखड़ी चार्ट",
+ ta: "தமிழ் பாராகடி சார்ட்",
+ te: "తెలుగు బారాఖడీ చార్ట్",
+ kn: "ಕನ್ನಡ ಬಾರಾಖಡಿ ಚಾರ್ಟ್",
+ };
+ return titles[lang] || titles.hi;
+ };
+
+ const getButtonTexts = () => {
+ const texts = {
+ hi: {
+ listen: "सुनो",
+ delete: "पिछला मिटाओ",
+ erase: "सब मिटाओ",
+ viewChart: "पूरा चार्ट देखें",
+ },
+ ta: {
+ listen: "கேள்",
+ delete: "கடைசியை நீக்கு",
+ erase: "அனைத்தையும் துடை",
+ viewChart: "முழு விளக்கப்படத்தைக் காண்க",
+ },
+ te: {
+ listen: "వినండి",
+ delete: "చివరిది తొలగించు",
+ erase: "అన్నీ తొలగించు",
+ viewChart: "పూర్తి చార్ట్ చూడండి",
+ },
+ kn: {
+ listen: "ಕೇಳಿ",
+ delete: "ಕೊನೆಯದನ್ನು ಅಳಿಸಿ",
+ erase: "ಎಲ್ಲಾ ಅಳಿಸಿ",
+ viewChart: "ಪೂರ್ಣ ಚಾರ್ಟ್ ನೋಡಿ",
+ },
+ };
+ return texts[lang] || texts.hi;
+ };
+
+ const buttonTexts = getButtonTexts();
+
+ const getChartTitle = () => {
+ const titles = {
+ hi: "हिंदी बारहखड़ी चार्ट",
+ ta: "தமிழ் மெய்யெழுத்துக்கள்",
+ te: "తెలుగు బారాఖడీ చార్ట్",
+ kn: "ಕನ್ನಡ ಬಾರಾಖಡಿ ಚಾರ್ಟ್",
+ };
+ return titles[lang] || titles.hi;
+ };
+
+ const getSpeechLang = () => {
+ const langCodes = {
+ hi: "hi-IN",
+ ta: "ta-IN",
+ te: "te-IN",
+ kn: "kn-IN",
+ };
+
+ const requestedCode = langCodes[lang] || "hi-IN";
+ const voices = speechSynthesis.getVoices();
+
+ const isVoiceAvailable = voices.some(
+ (voice) =>
+ voice.lang === requestedCode ||
+ voice.lang.startsWith(requestedCode.split("-")[0])
+ );
+
+ console.log("Voice availability check:", {
+ requested: requestedCode,
+ available: isVoiceAvailable,
+ allVoices: voices.map((v) => v.lang),
+ });
+
+ if (!isVoiceAvailable) {
+ console.log(`Voice for ${requestedCode} not available, using fallback`);
+
+ if (voices.some((v) => v.lang === "hi-IN" || v.lang.startsWith("hi"))) {
+ return "hi-IN";
+ } else if (
+ voices.some((v) => v.lang === "en-US" || v.lang.startsWith("en"))
+ ) {
+ return "en-US";
+ } else if (voices.length > 0) {
+ return voices[0].lang;
+ }
+ }
+
+ return requestedCode;
+ };
+
+ const getInstructionAltText = () => {
+ const altTexts = {
+ hi: "शब्द",
+ ta: "சொல்",
+ te: "పదం",
+ kn: "ಪದ",
+ };
+ return altTexts[lang] || altTexts.hi;
+ };
+
+ useEffect(() => {
+ const initialTargetWord = wordDataList[0].text;
+ setTargetWord(initialTargetWord);
+ const barakhadi = getBarakhadiForWord(initialTargetWord, lang);
+ setCurrentBarakhadi(barakhadi);
+ }, [lang]);
+
+ useEffect(() => {
+ if (targetWord) {
+ const barakhadi = getBarakhadiForWord(targetWord, lang);
+ setCurrentBarakhadi(barakhadi);
+ }
+ }, [targetWord, lang]);
+
+ useEffect(() => {
+ (async () => {
+ try {
+ const lang = getLocalData("lang");
+ // Fetch assessment data
+ const resAssessment = await fetchAssessmentData(lang);
+ const sentences = resAssessment?.data?.find(
+ (elem) => elem.category === "Char"
+ );
+
+ if (!sentences?.collectionId) {
+ console.error("No collection ID found for sentences.");
+ return;
+ }
+
+ const resPagination = await fetchPaginatedContent(
+ sentences.collectionId,
+ 10
+ );
+
+ setTotalSyllableCount(resPagination?.totalSyllableCount);
+ setCurrentCollectionId(sentences?.collectionId);
+ } catch (error) {
+ console.error("Error fetching data:", error);
+ }
+ })();
+ }, []);
+
+ const handleCompletion = async () => {
+ const sub_session_id = getLocalData("sub_session_id");
+ let currentContentType = "Char";
+
+ try {
+ const milestoneLevel = "B";
+
+ let requestBody = {
+ original_text: "Char",
+ audio: "",
+ //user_id: virtualId,
+ session_id: sessionId,
+ language: lang,
+ date: new Date(),
+ sub_session_id,
+ contentId: contentId,
+ contentType: "Char",
+ mechanics_id: getLocalData("mechanism_id") || "",
+ milestone: milestoneLevel,
+ ansSelectionStatus: langWiseAnswers[lang],
+ };
+
+ const result = await updateLearnerProfile(lang, requestBody);
+ console.log("Learner progress result:", result);
+ } catch (error) {
+ console.error("Error creating learner progress:", error);
+ }
+
+ try {
+ const getSetResultRes = await fetchGetSetResult(
+ sub_session_id,
+ currentContentType,
+ currentCollectionId,
+ totalSyllableCount
+ );
+ console.log("GetSet result:", getSetResultRes);
+ } catch (error) {
+ console.error("Error fetching set result:", error);
+ }
+
+ if (!(localStorage.getItem("contentSessionId") !== null)) {
+ let point = 1;
+ let milestone = "B";
+
+ if (point !== 1) {
+ if (process.env.REACT_APP_IS_APP_IFRAME === "true") {
+ navigate("/");
+ } else {
+ navigate("/discover-start");
+ }
+ return;
+ }
+
+ try {
+ const result = await addPointer(point, milestone);
+ const awardedPoints = result?.result?.points;
+ if (awardedPoints !== 1) {
+ if (process.env.REACT_APP_IS_APP_IFRAME === "true") {
+ navigate("/");
+ } else {
+ navigate("/discover-start");
+ }
+ return;
+ }
+ } catch (error) {
+ console.error("Error adding points:", error);
+ }
+ } else {
+ sendTestRigScore(5);
+ }
+ navigate("/discover-start");
+ };
+
+ const handleNextWord = async () => {
+ const nextIndex = currentWordIndex + 1;
+
+ if (nextIndex >= wordDataList.length) {
+ setLocalData("rFlow", false);
+ setLocalData("mFail", false);
+ if (level === "B") {
+ await handleCompletion();
+ navigate("/discover-end");
+ return;
+ }
+ if (process.env.REACT_APP_IS_APP_IFRAME === "true") {
+ navigate("/");
+ } else {
+ navigate("/discover-start");
+ }
+ callTelemetryDiscovery("R1-Barakhadi");
+
+ return;
+ }
+
+ setCurrentWordIndex(nextIndex);
+ setTargetWord(wordDataList[nextIndex].text);
+ setWord("");
+ setShowConfetti(false);
+ setIncorrectCell(null);
+ };
+
+ const handleLetterClick = (letter, rowIndex, colIndex) => {
+ const remainingTarget = targetWord.slice(word.length);
+
+ const isCorrect = remainingTarget.startsWith(letter);
+
+ const newWord = word + letter;
+ setWord(newWord);
+
+ if (isCorrect) {
+ if (newWord === targetWord) {
+ correctAudio.play();
+ setShowConfetti(true);
+ setTimeout(() => {
+ setShowConfetti(false);
+ }, 3000);
+ }
+ }
+ };
+
+ const handleErase = () => {
+ setWord("");
+ setIncorrectCell(null);
+ };
+
+ const handleDelete = () => {
+ setWord((prevWord) => prevWord.slice(0, -1));
+ setIncorrectCell(null);
+ };
+ const handleListen = () => {
+ if (word.length > 0) {
+ console.log("Playing audio for user-typed word:", word);
+
+ if (word === targetWord) {
+ playSegmentedAudio(currentWordData);
+ } else {
+ playTTS(word);
+ }
+ }
+ };
+
+ const playTTS = (textToSpeak) => {
+ if (!voicesReady) {
+ console.log("Voices not loaded yet, retrying in 500ms...");
+ setTimeout(() => playTTS(textToSpeak), 500);
+ return;
+ }
+
+ if ("speechSynthesis" in window) {
+ speechSynthesis.cancel();
+
+ const utterance = new SpeechSynthesisUtterance(textToSpeak);
+ const requestedLang = getSpeechLang();
+ const voices = speechSynthesis.getVoices();
+
+ // Find the best available voice
+ let selectedVoice = null;
+
+ // First try: Exact match
+ selectedVoice = voices.find((voice) => voice.lang === requestedLang);
+
+ // Second try: Language family match (e.g., ta-IN for ta)
+ if (!selectedVoice) {
+ const langFamily = requestedLang.split("-")[0];
+ selectedVoice = voices.find((voice) =>
+ voice.lang.startsWith(langFamily)
+ );
+ }
+
+ // Third try: Hindi fallback
+ if (!selectedVoice) {
+ selectedVoice = voices.find(
+ (voice) => voice.lang === "hi-IN" || voice.lang.startsWith("hi")
+ );
+ }
+
+ if (!selectedVoice) {
+ selectedVoice = voices.find(
+ (voice) => voice.lang === "en-US" || voice.lang.startsWith("en")
+ );
+ }
+
+ if (!selectedVoice && voices.length > 0) {
+ selectedVoice = voices[0];
+ }
+
+ if (selectedVoice) {
+ utterance.voice = selectedVoice;
+ utterance.lang = selectedVoice.lang;
+ console.log("Using voice:", selectedVoice.name, selectedVoice.lang);
+ } else {
+ utterance.lang = requestedLang;
+ console.log("No suitable voice found, using default");
+ }
+
+ utterance.rate = 0.8;
+ utterance.pitch = 1;
+ utterance.volume = 1;
+
+ console.log("TTS Final Settings:", {
+ text: textToSpeak,
+ requestedLang: requestedLang,
+ actualLang: utterance.lang,
+ voice: utterance.voice?.name,
+ });
+
+ utterance.onstart = () => {
+ console.log("TTS started successfully");
+ setShowAudioWave(true);
+ };
+
+ utterance.onend = () => {
+ console.log("TTS ended");
+ setShowAudioWave(false);
+ };
+
+ utterance.onerror = (event) => {
+ console.error("TTS error:", event);
+ setShowAudioWave(false);
+ };
+
+ speechSynthesis.speak(utterance);
+ } else {
+ console.error("Speech synthesis not supported");
+ alert("Text-to-speech is not supported in your browser.");
+ }
+ };
+
+ const playSegmentedAudio = (wordData) => {
+ if (wordData && wordData.segmentedAudio) {
+ setShowAudioWave(true);
+
+ const audio = new Audio(wordData.segmentedAudio);
+
+ audio.play().catch((error) => {
+ console.error("Error playing segmented audio:", error);
+ setShowAudioWave(false);
+ playTTS(wordData.text);
+ });
+
+ audio.onended = () => {
+ setShowAudioWave(false);
+ };
+
+ setTimeout(() => {
+ setShowAudioWave(false);
+ }, 5000);
+ } else {
+ playTTS(wordData.text);
+ }
+ };
+
+ const playWordAudio = (wordData) => {
+ if (wordData && wordData.audio) {
+ setShowWordAudioWave(true);
+
+ const audioUrl = `${process.env.REACT_APP_AWS_S3_BUCKET_CONTENT_URL}/mechanics_audios/${wordData.audio}`;
+ console.log("Attempting to play audio from:", audioUrl);
+
+ const audio = new Audio(audioUrl);
+
+ audio.play().catch((error) => {
+ console.error("Error playing audio:", error);
+ setShowWordAudioWave(false);
+ playTTS(wordData.text);
+ });
+
+ audio.onended = () => {
+ console.log("Audio playback completed");
+ setShowWordAudioWave(false);
+ };
+
+ audio.onerror = (e) => {
+ console.error("Audio element error:", e);
+ setShowWordAudioWave(false);
+ };
+ } else {
+ console.log("No audio found, using TTS");
+ playTTS(wordData.text);
+ }
+ };
+
+ const debugVoices = () => {
+ const voices = speechSynthesis.getVoices();
+ console.log("=== VOICE DEBUG INFO ===");
+ console.log("Total voices:", voices.length);
+ console.log(
+ "Available languages:",
+ [...new Set(voices.map((v) => v.lang))].sort()
+ );
+ console.log(
+ "Detailed voices:",
+ voices.map((v) => ({
+ name: v.name,
+ lang: v.lang,
+ localService: v.localService,
+ default: v.default,
+ }))
+ );
+ };
+
+ const currentWordData =
+ wordDataList.find((item) => item.text === targetWord) || wordDataList[0];
+ const vyajan = Object.keys(currentBarakhadi);
+
+ const generateFullBarakhadi = () => {
+ return barakhadiCharts[lang] || {};
+ };
+
+ const containerStyle = {
+ fontFamily: "sans-serif",
+ background: "#f2fbe9",
+ padding: "0px",
+ textAlign: "center",
+ overflow: "hidden",
+ };
+
+ const cardStyle = {
+ background: "#fff",
+ padding: "23px",
+ borderRadius: "12px",
+ display: "inline-block",
+ position: "relative",
+ boxShadow: "0px 4px 8px rgba(0,0,0,0.15)",
+ width: "95%",
+ maxWidth: "1200px",
+ height: "70vh",
+ };
+
+ const titleStyle = {
+ fontSize: "15px",
+ fontWeight: "bold",
+ color: "rgba(51, 63, 97, 1)",
+ marginBottom: "10px",
+ marginTop: "-12px",
+ fontFamily: "Quicksand",
+ gap: "10px",
+ };
+
+ const wordBoxStyle = {
+ border: "1px dashed #ff9800",
+ padding: "15px",
+ borderRadius: "10px",
+ marginBottom: "15px",
+ boxShadow: "0px 4px 8px rgba(0,0,0,0.15)",
+ zIndex: 1000,
+ background: "#FFF9ED",
+ height: "130px",
+ position: "relative",
+ display: "flex",
+ flexDirection: "column",
+ justifyContent: "space-between",
+ alignItems: "flex-start",
+ };
+
+ const btnRowStyle = {
+ display: "flex",
+ justifyContent: "center",
+ gap: "200px",
+ marginTop: "auto",
+ flexShrink: 0,
+ };
+
+ const buttonStyle = {
+ padding: "8px 30px",
+ borderRadius: "8px",
+ border: "none",
+ cursor: "pointer",
+ fontWeight: "bold",
+ boxShadow: "0px 4px 8px rgba(0,0,0,0.15)",
+ display: "flex",
+ alignItems: "center",
+ justifyContent: "center",
+ gap: "8px",
+ fontSize: "13px",
+ height: "35px",
+ flexDirection: "column",
+ };
+
+ const disabledButtonStyle = {
+ padding: "8px 30px",
+ borderRadius: "8px",
+ border: "none",
+ fontWeight: "bold",
+ boxShadow: "0px 4px 6px rgba(0, 128, 0, 0.3)",
+ opacity: 0.6,
+ cursor: "not-allowed",
+ display: "flex",
+ alignItems: "center",
+ justifyContent: "center",
+ gap: "8px",
+ fontSize: "13px",
+ height: "35px",
+ };
+
+ const tableStyle = {
+ marginTop: "10px",
+ borderCollapse: "collapse",
+ width: "100%",
+ tableLayout: "fixed",
+ position: "relative",
+ };
+
+ const tdStyle = {
+ padding: "4px",
+ border: "1px solid #ccc",
+ fontSize: "23px",
+ textAlign: "center",
+ width: "58px",
+ cursor: "pointer",
+ fontWeight: 800,
+ transition: "background-color 0.3s ease",
+ };
+
+ const circleStyle = {
+ width: "22px",
+ height: "22px",
+ borderRadius: "50%",
+ background: "#2c3e50",
+ color: "#fff",
+ display: "flex",
+ alignItems: "center",
+ justifyContent: "center",
+ fontWeight: "bold",
+ fontSize: "12px",
+ boxShadow: "0px 4px 6px rgba(0,0,0,0.15)",
+ margin: "0 auto",
+ marginBottom: "4px",
+ };
+
+ const leftCircleStyle = {
+ position: "absolute",
+ width: "28px",
+ height: "28px",
+ borderRadius: "50%",
+ background: "#ffeb3b",
+ color: "#000",
+ display: "flex",
+ alignItems: "center",
+ justifyContent: "center",
+ fontWeight: "bold",
+ fontSize: "12px",
+ boxShadow: "0px 4px 6px rgba(0,0,0,0.15)",
+ border: "1px solid black",
+ };
+
+ return (
+
+
+ {showConfetti &&
}
+

setOpen(true)}
+ />
+
+ {/* Modal */}
+ {open && (
+
+
+ {/* Close Button */}
+
+
+ {/* YouTube Video */}
+
+
+
+ )}
+ {voiceStatus && (
+
+ {voiceStatus}
+
+ )}
+
+
+
+ {showFullChart && (
+
+
+

setShowFullChart(false)}
+ />
+
+
+ {getChartTitle()}
+
+
+
+ {/* Vowels Header */}
+
+ {vowels.map((v, i) => (
+
+ {v}
+
+ ))}
+
+
+
+
+ {Object.keys(generateFullBarakhadi()).map(
+ (consonant, index) => (
+
+ {consonant}
+
+ )
+ )}
+
+
+
+
+
+ {Object.entries(generateFullBarakhadi()).map(
+ ([consonant, syllables], rowIdx) => (
+
+ {syllables.map((syllable, idx) => (
+ |
+ {syllable}
+ |
+ ))}
+
+ )
+ )}
+
+
+
+
+
+
+
+ )}
+
+
+
+
+ {lang === "hi"
+ ? "शब्द बनाओ"
+ : lang === "ta"
+ ? "சொல்லை உருவாக்கு"
+ : lang === "te"
+ ? "పదం తయారు చేయండి"
+ : lang === "kn"
+ ? "ಪದವನ್ನು ರಚಿಸಿ"
+ : "Make a Word"}
+
+
+
+
+
+
+
+ {currentWordData.text}
+
+
+
+ {showWordAudioWave ? (
+

+ ) : (
+ <>
+

playWordAudio(currentWordData)}
+ />
+
+ >
+ )}
+
+
+
+
+
+
+ {word ? word : }
+
+
+
+
+
+
+
+ {vyajan.map((v, i) => (
+
+ {v}
+
+ ))}
+
+
+
+
+ {swar.map((v, i) => (
+ |
+ {v}
+ |
+ ))}
+
+
+
+ {vyajan.map((consonant, rowIndex) => (
+
+ {currentBarakhadi[consonant]?.map((cell, colIndex) => (
+ |
+ handleLetterClick(cell, rowIndex, colIndex)
+ }
+ >
+ {cell}
+ |
+ ))}
+
+ ))}
+
+
+
+
+
setShowFullChart(true)}
+ >
+

+
+ {buttonTexts.viewChart}
+
+
+
+

+
+
+
+

+
+

+

+
+
+
+ );
+};
+
+export default Barakhadi;
diff --git a/src/RFlow/R0.jsx b/src/RFlow/R0.jsx
new file mode 100644
index 00000000..ec3ad541
--- /dev/null
+++ b/src/RFlow/R0.jsx
@@ -0,0 +1,5633 @@
+import React, { useState, useEffect, useRef, useMemo } from "react";
+import Confetti from "react-confetti";
+import * as Assets from "../utils/imageAudioLinks";
+import {
+ ThemeProvider,
+ createTheme,
+ useMediaQuery,
+ Grid,
+ Box,
+} from "@mui/material";
+import MainLayout from "../components/Layouts.jsx/MainLayout";
+import listenImg from "../assets/listen.svg";
+// import Mic from "../assets/mikee.svg";
+// import Stop from "../assets/pausse.svg";
+import correctSound from "../assets/correct.wav";
+import wrongSound from "../assets/audio/wrong.wav";
+import RecordVoiceVisualizer from "../utils/RecordVoiceVisualizer";
+import {
+ practiceSteps,
+ getLocalData,
+ NextButtonRound,
+ RetryIcon,
+ setLocalData,
+} from "../utils/constants";
+import { useNavigate } from "react-router-dom";
+import { response } from "../services/telementryService";
+import { Typography, Stack, IconButton } from "@mui/material";
+import { ArrowRight, RotateCcw } from "lucide-react";
+import trainImg from "../assets/trainImg.svg";
+import { motion, AnimatePresence } from "framer-motion";
+import VoiceAnalyser from "../utils/VoiceAnalyser";
+import * as s3Assets from "../utils/rFlowS3Links";
+import { getAssetUrl } from "../utils/rFlowS3Links";
+import { getAssetAudioUrl } from "../utils/rFlowS3Links";
+import { ArrowLeft } from "lucide-react"; // or your icon library
+import hintimg from "../assets/hintsicon.svg";
+
+const theme = createTheme();
+
+const dataEn = [
+ {
+ letter: "E",
+ items: [
+ {
+ id: 1,
+ title: "Vowel",
+ letters: "Ee",
+ letter: "e",
+ word: "Egg",
+ image: getAssetUrl(s3Assets.eggFiveImg),
+ audio: getAssetAudioUrl(s3Assets.eggPhonemeAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.eggPhonemeAudio),
+ },
+ {
+ id: 2,
+ title: "Vowel",
+ letters: "Ee",
+ letter: "e",
+ word: "Pen",
+ image: getAssetUrl(s3Assets.penFourteenImg),
+ audio: getAssetAudioUrl(s3Assets.penPhonemeAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.penPhonemeAudio),
+ },
+ {
+ id: 3,
+ title: "Vowel",
+ letters: "Ee",
+ letter: "e",
+ word: "Kite",
+ image: getAssetUrl(s3Assets.kiteFiveImg),
+ audio: getAssetAudioUrl(s3Assets.kitePhonemeAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.kitePhonemeAudio),
+ },
+ ],
+ },
+ {
+ letter: "A",
+ items: [
+ {
+ id: 4,
+ title: "Vowel",
+ letters: "Aa",
+ letter: "a",
+ word: "Apple",
+ image: getAssetUrl(s3Assets.appleOneImg),
+ audio: getAssetAudioUrl(s3Assets.applePhonemeAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.applePhonemeAudio),
+ },
+ {
+ id: 5,
+ title: "Vowel",
+ letters: "Aa",
+ letter: "a",
+ word: "Cat",
+ image: getAssetUrl(s3Assets.catOneImg),
+ audio: getAssetAudioUrl(s3Assets.catPhonemeAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.catPhonemeAudio),
+ },
+ {
+ id: 6,
+ title: "Vowel",
+ letters: "Aa",
+ letter: "a",
+ word: "Pea",
+ image: getAssetUrl(s3Assets.peaOneImg),
+ audio: getAssetAudioUrl(s3Assets.peaPhonemeAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.peaPhonemeAudio),
+ },
+ ],
+ },
+ {
+ letter: "O",
+ items: [
+ {
+ id: 7,
+ title: "Vowel",
+ letters: "Oo",
+ letter: "o",
+ word: "Orange",
+ image: getAssetUrl(s3Assets.orangeFifteenImg),
+ audio: getAssetAudioUrl(s3Assets.orangePhonemeAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.orangePhonemeAudio),
+ },
+ {
+ id: 8,
+ title: "Vowel",
+ letters: "Oo",
+ letter: "o",
+ word: "Dog",
+ image: getAssetUrl(s3Assets.dogSevenImg),
+ audio: getAssetAudioUrl(s3Assets.dogPhonemeAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.dogPhonemeAudio),
+ },
+ {
+ id: 9,
+ title: "Vowel",
+ letters: "Oo",
+ letter: "o",
+ word: "Mango",
+ image: getAssetUrl(s3Assets.mangoThirteenImg),
+ audio: getAssetAudioUrl(s3Assets.mangoPhonemeAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.mangoPhonemeAudio),
+ },
+ ],
+ },
+ {
+ letter: "I",
+ items: [
+ {
+ id: 10,
+ title: "Vowel",
+ letters: "Ii",
+ letter: "i",
+ word: "Ice",
+ image: getAssetUrl(s3Assets.iceThreeImg),
+ audio: getAssetAudioUrl(s3Assets.icePhonemeAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.icePhonemeAudio),
+ },
+ {
+ id: 11,
+ title: "Vowel",
+ letters: "Ii",
+ letter: "i",
+ word: "Pig",
+ image: getAssetUrl(s3Assets.pigNineImg),
+ audio: getAssetAudioUrl(s3Assets.pigPhonemeAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.pigPhonemeAudio),
+ },
+ {
+ id: 12,
+ title: "Vowel",
+ letters: "Ii",
+ letter: "i",
+ word: "Chilly",
+ image: getAssetUrl(s3Assets.chilliImg),
+ audio: getAssetAudioUrl(s3Assets.chillyAud),
+ singleAudio: getAssetAudioUrl(s3Assets.chillyAud),
+ },
+ ],
+ },
+ {
+ letter: "U",
+ items: [
+ {
+ id: 13,
+ title: "Vowel",
+ letters: "Uu",
+ letter: "u",
+ word: "Umbrella",
+ image: getAssetUrl(s3Assets.umbrellaTwentyOneImg),
+ audio: getAssetAudioUrl(s3Assets.umbrellaPhonemeAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.umbrellaPhonemeAudio),
+ },
+ {
+ id: 14,
+ title: "Vowel",
+ letters: "Uu",
+ letter: "u",
+ word: "Dustbin",
+ image: getAssetUrl(s3Assets.DustbinTwentyOneImg),
+ audio: getAssetAudioUrl(s3Assets.dustbinPhonemeAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.dustbinPhonemeAudio),
+ },
+ {
+ id: 15,
+ title: "Vowel",
+ letters: "Uu",
+ letter: "u",
+ word: "Laddu",
+ image: getAssetUrl(s3Assets.LadduTwentyOneImg),
+ audio: getAssetAudioUrl(s3Assets.ladduPhonemeAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.ladduPhonemeAudio),
+ },
+ ],
+ },
+ {
+ letter: "T",
+ items: [
+ {
+ id: 16,
+ title: "Consonant",
+ letters: "Tt",
+ letter: "t",
+ word: "Tiger",
+ image: getAssetUrl(s3Assets.tigerSevenImg),
+ audio: getAssetAudioUrl(s3Assets.tigerPhonemeAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.tigerPhonemeAudio),
+ },
+ {
+ id: 17,
+ title: "Consonant",
+ letters: "Tt",
+ letter: "t",
+ word: "Watch",
+ image: getAssetUrl(s3Assets.watchTwentyImg),
+ audio: getAssetAudioUrl(s3Assets.watchPhonemeAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.watchPhonemeAudio),
+ },
+ {
+ id: 18,
+ title: "Consonant",
+ letters: "Tt",
+ letter: "t",
+ word: "Plant",
+ image: getAssetUrl(s3Assets.plantTwentyImg),
+ audio: getAssetAudioUrl(s3Assets.plantPhonemeAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.plantPhonemeAudio),
+ },
+ ],
+ },
+ {
+ letter: "N",
+ items: [
+ {
+ id: 19,
+ title: "Consonant",
+ letters: "Nn",
+ letter: "n",
+ word: "Nest",
+ image: getAssetUrl(s3Assets.NestFourteenImg),
+ audio: getAssetAudioUrl(s3Assets.nestPhonemeAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.nestPhonemeAudio),
+ },
+ {
+ id: 20,
+ title: "Consonant",
+ letters: "Nn",
+ letter: "n",
+ word: "Honey",
+ image: getAssetUrl(s3Assets.HoneyFourteenImg),
+ audio: getAssetAudioUrl(s3Assets.honeyPhonemeAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.honeyPhonemeAudio),
+ },
+ {
+ id: 21,
+ title: "Consonant",
+ letters: "Nn",
+ letter: "n",
+ word: "Pen",
+ image: getAssetUrl(s3Assets.penFiveImg),
+ audio: getAssetAudioUrl(s3Assets.penPhonemeAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.penPhonemeAudio),
+ },
+ ],
+ },
+ {
+ letter: "S",
+ items: [
+ {
+ id: 22,
+ title: "Consonant",
+ letters: "Ss",
+ letter: "s",
+ word: "Sun",
+ image: getAssetUrl(s3Assets.sunNineteenImg),
+ audio: getAssetAudioUrl(s3Assets.sunPhonemeAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.sunPhonemeAudio),
+ },
+ {
+ id: 23,
+ title: "Consonant",
+ letters: "Ss",
+ letter: "s",
+ word: "Horse",
+ image: getAssetUrl(s3Assets.horseNineteenImg),
+ audio: getAssetAudioUrl(s3Assets.horsePhonemeAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.horsePhonemeAudio),
+ },
+ {
+ id: 24,
+ title: "Consonant",
+ letters: "Ss",
+ letter: "s",
+ word: "Bus",
+ image: getAssetUrl(s3Assets.busNineteenImg),
+ audio: getAssetAudioUrl(s3Assets.busPhonemeAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.busPhonemeAudio),
+ },
+ ],
+ },
+ {
+ letter: "R",
+ items: [
+ {
+ id: 25,
+ title: "Consonant",
+ letters: "Rr",
+ letter: "r",
+ word: "Rat",
+ image: getAssetUrl(s3Assets.ratEighteenImg),
+ audio: getAssetAudioUrl(s3Assets.ratPhonemeAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.ratPhonemeAudio),
+ },
+ {
+ id: 26,
+ title: "Consonant",
+ letters: "Rr",
+ letter: "r",
+ word: "Carrot",
+ image: getAssetUrl(s3Assets.carrotEighteenImg),
+ audio: getAssetAudioUrl(s3Assets.carrotPhonemeAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.carrotPhonemeAudio),
+ },
+ {
+ id: 27,
+ title: "Consonant",
+ letters: "Rr",
+ letter: "r",
+ word: "Car",
+ image: getAssetUrl(s3Assets.carEighteenImg),
+ audio: getAssetAudioUrl(s3Assets.carPhonemeAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.carPhonemeAudio),
+ },
+ ],
+ },
+ {
+ letter: "H",
+ items: [
+ {
+ id: 28,
+ title: "Consonant",
+ letters: "Hh",
+ letter: "h",
+ word: "Hand",
+ image: getAssetUrl(s3Assets.handEightImg),
+ audio: getAssetAudioUrl(s3Assets.handPhonemeAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.handPhonemeAudio),
+ },
+ {
+ id: 29,
+ title: "Consonant",
+ letters: "Hh",
+ letter: "h",
+ word: "Teacher",
+ image: getAssetUrl(s3Assets.teacherEightImg),
+ audio: getAssetAudioUrl(s3Assets.teacherPhonemeAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.teacherPhonemeAudio),
+ },
+ {
+ id: 30,
+ title: "Consonant",
+ letters: "Hh",
+ letter: "h",
+ word: "Earth",
+ image: getAssetUrl(s3Assets.earthEightImg),
+ audio: getAssetAudioUrl(s3Assets.earthPhonemeAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.earthPhonemeAudio),
+ },
+ ],
+ },
+ {
+ letter: "L",
+ items: [
+ {
+ id: 31,
+ title: "Consonant",
+ letters: "Ll",
+ letter: "l",
+ word: "Lion",
+ image: getAssetUrl(s3Assets.LionTwelveImg),
+ audio: getAssetAudioUrl(s3Assets.lionPhonemeAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.lionPhonemeAudio),
+ },
+ {
+ id: 32,
+ title: "Consonant",
+ letters: "Ll",
+ letter: "l",
+ word: "Balloon",
+ image: getAssetUrl(s3Assets.ballTwoImg),
+ audio: getAssetAudioUrl(s3Assets.balloonPhonemeAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.balloonPhonemeAudio),
+ },
+ {
+ id: 33,
+ title: "Consonant",
+ letters: "Ll",
+ letter: "l",
+ word: "Bell",
+ image: getAssetUrl(s3Assets.bellTwelveImg),
+ audio: getAssetAudioUrl(s3Assets.bellPhonemeAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.bellPhonemeAudio),
+ },
+ ],
+ },
+ {
+ letter: "D",
+ items: [
+ {
+ id: 34,
+ title: "Consonant",
+ letters: "Dd",
+ letter: "d",
+ word: "Dog",
+ image: getAssetUrl(s3Assets.dogFourImg),
+ audio: getAssetAudioUrl(s3Assets.dogPhonemeAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.dogPhonemeAudio),
+ },
+ {
+ id: 35,
+ title: "Consonant",
+ letters: "Dd",
+ letter: "d",
+ word: "Window",
+ image: getAssetUrl(s3Assets.windowFourImg),
+ audio: getAssetAudioUrl(s3Assets.windowPhonemeAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.windowPhonemeAudio),
+ },
+ {
+ id: 36,
+ title: "Consonant",
+ letters: "Dd",
+ letter: "d",
+ word: "Sword",
+ image: getAssetUrl(s3Assets.swordFourImg),
+ audio: getAssetAudioUrl(s3Assets.swordPhonemeAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.swordPhonemeAudio),
+ },
+ ],
+ },
+ {
+ letter: "C",
+ items: [
+ {
+ id: 37,
+ title: "Consonant",
+ letters: "Cc",
+ letter: "c",
+ word: "Cat",
+ image: getAssetUrl(s3Assets.catOneImg),
+ audio: getAssetAudioUrl(s3Assets.catPhonemeAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.catPhonemeAudio),
+ },
+ {
+ id: 38,
+ title: "Consonant",
+ letters: "Cc",
+ letter: "c",
+ word: "Ice",
+ image: getAssetUrl(s3Assets.iceThreeImg),
+ audio: getAssetAudioUrl(s3Assets.icePhonemeAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.icePhonemeAudio),
+ },
+ {
+ id: 39,
+ title: "Consonant",
+ letters: "Cc",
+ letter: "c",
+ word: "Garlic",
+ image: getAssetUrl(s3Assets.garlicThreeImg),
+ audio: getAssetAudioUrl(s3Assets.garlicPhonemeAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.garlicPhonemeAudio),
+ },
+ ],
+ },
+ {
+ letter: "M",
+ items: [
+ {
+ id: 40,
+ title: "Consonant",
+ letters: "Mm",
+ letter: "m",
+ word: "Mango",
+ image: getAssetUrl(s3Assets.mangoThirteenImg),
+ audio: getAssetAudioUrl(s3Assets.mangoPhonemeAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.mangoPhonemeAudio),
+ },
+ {
+ id: 41,
+ title: "Consonant",
+ letters: "Mm",
+ letter: "m",
+ word: "Lemon",
+ image: getAssetUrl(s3Assets.lemonThirteenImg),
+ audio: getAssetAudioUrl(s3Assets.lemonPhonemeAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.lemonPhonemeAudio),
+ },
+ {
+ id: 42,
+ title: "Consonant",
+ letters: "Mm",
+ letter: "m",
+ word: "Jam",
+ image: getAssetUrl(s3Assets.jamTenImg),
+ audio: getAssetAudioUrl(s3Assets.jamPhonemeAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.jamPhonemeAudio),
+ },
+ ],
+ },
+ {
+ letter: "F",
+ items: [
+ {
+ id: 43,
+ title: "Consonant",
+ letters: "Ff",
+ letter: "f",
+ word: "Fish",
+ image: getAssetUrl(s3Assets.fishSixImg),
+ audio: getAssetAudioUrl(s3Assets.fishPhonemeAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.fishPhonemeAudio),
+ },
+ {
+ id: 44,
+ title: "Consonant",
+ letters: "Ff",
+ letter: "f",
+ word: "Giraffe",
+ image: getAssetUrl(s3Assets.girraffeSixImg),
+ audio: getAssetAudioUrl(s3Assets.giraffePhonemeAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.giraffePhonemeAudio),
+ },
+ {
+ id: 45,
+ title: "Consonant",
+ letters: "Ff",
+ letter: "f",
+ word: "Leaf",
+ image: getAssetUrl(s3Assets.LeafSixImg),
+ audio: getAssetAudioUrl(s3Assets.leafPhonemeAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.leafPhonemeAudio),
+ },
+ ],
+ },
+ {
+ letter: "Y",
+ items: [
+ {
+ id: 46,
+ title: "Consonant",
+ letters: "Yy",
+ letter: "y",
+ word: "Yak",
+ image: getAssetUrl(s3Assets.yakTwentyFiveImg),
+ audio: getAssetAudioUrl(s3Assets.yakPhonemeAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.yakPhonemeAudio),
+ },
+ {
+ id: 47,
+ title: "Consonant",
+ letters: "Yy",
+ letter: "y",
+ word: "Papaya",
+ image: getAssetUrl(s3Assets.papayaTwentyFiveImg),
+ audio: getAssetAudioUrl(s3Assets.papayaPhonemeAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.papayaPhonemeAudio),
+ },
+ {
+ id: 48,
+ title: "Consonant",
+ letters: "Yy",
+ letter: "y",
+ word: "Key",
+ image: getAssetUrl(s3Assets.KeyTwentyFiveImg),
+ audio: getAssetAudioUrl(s3Assets.keyPhonemeAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.keyPhonemeAudio),
+ },
+ ],
+ },
+ {
+ letter: "W",
+ items: [
+ {
+ id: 49,
+ title: "Consonant",
+ letters: "Ww",
+ letter: "w",
+ word: "Window",
+ image: getAssetUrl(s3Assets.windowFourImg),
+ audio: getAssetAudioUrl(s3Assets.windowPhonemeAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.windowPhonemeAudio),
+ },
+ {
+ id: 50,
+ title: "Consonant",
+ letters: "Ww",
+ letter: "w",
+ word: "Sword",
+ image: getAssetUrl(s3Assets.swordFourImg),
+ audio: getAssetAudioUrl(s3Assets.swordPhonemeAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.swordPhonemeAudio),
+ },
+ {
+ id: 51,
+ title: "Consonant",
+ letters: "Ww",
+ letter: "w",
+ word: "Crow",
+ image: getAssetUrl(s3Assets.CrowTwentyThreeImg),
+ audio: getAssetAudioUrl(s3Assets.crowPhonemeAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.crowPhonemeAudio),
+ },
+ ],
+ },
+ {
+ letter: "G",
+ items: [
+ {
+ id: 52,
+ title: "Consonant",
+ letters: "Gg",
+ letter: "g",
+ word: "Goat",
+ image: getAssetUrl(s3Assets.goatSevenImg),
+ audio: getAssetAudioUrl(s3Assets.goatPhonemeAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.goatPhonemeAudio),
+ },
+ {
+ id: 53,
+ title: "Consonant",
+ letters: "Gg",
+ letter: "g",
+ word: "Tiger",
+ image: getAssetUrl(s3Assets.tigerSevenImg),
+ audio: getAssetAudioUrl(s3Assets.tigerPhonemeAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.tigerPhonemeAudio),
+ },
+ {
+ id: 54,
+ title: "Consonant",
+ letters: "Gg",
+ letter: "g",
+ word: "Dog",
+ image: getAssetUrl(s3Assets.dogFourImg),
+ audio: getAssetAudioUrl(s3Assets.dogPhonemeAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.dogPhonemeAudio),
+ },
+ ],
+ },
+ {
+ letter: "P",
+ items: [
+ {
+ id: 55,
+ title: "Consonant",
+ letters: "Pp",
+ letter: "p",
+ word: "Pen",
+ image: getAssetUrl(s3Assets.penFiveImg),
+ audio: getAssetAudioUrl(s3Assets.penPhonemeAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.penPhonemeAudio),
+ },
+ {
+ id: 56,
+ title: "Consonant",
+ letters: "Pp",
+ letter: "p",
+ word: "Apple",
+ image: getAssetUrl(s3Assets.appleOneImg),
+ audio: getAssetAudioUrl(s3Assets.applePhonemeAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.applePhonemeAudio),
+ },
+ {
+ id: 57,
+ title: "Consonant",
+ letters: "Pp",
+ letter: "p",
+ word: "Cap",
+ image: getAssetUrl(s3Assets.capSixteenImg),
+ audio: getAssetAudioUrl(s3Assets.capPhonemeAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.capPhonemeAudio),
+ },
+ ],
+ },
+ {
+ letter: "B",
+ items: [
+ {
+ id: 58,
+ title: "Consonant",
+ letters: "Bb",
+ letter: "b",
+ word: "Ball",
+ image: getAssetUrl(s3Assets.ballGif),
+ audio: getAssetAudioUrl(s3Assets.ballPhonemeAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.ballPhonemeAudio),
+ },
+ {
+ id: 59,
+ title: "Consonant",
+ letters: "Bb",
+ letter: "b",
+ word: "Zebra",
+ image: getAssetUrl(s3Assets.zebraTwentySixImg),
+ audio: getAssetAudioUrl(s3Assets.zebraPhonemeAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.zebraPhonemeAudio),
+ },
+ {
+ id: 60,
+ title: "Consonant",
+ letters: "Bb",
+ letter: "b",
+ word: "Cub",
+ image: getAssetUrl(s3Assets.cubTwoImg),
+ audio: getAssetAudioUrl(s3Assets.cubPhonemeAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.cubPhonemeAudio),
+ },
+ ],
+ },
+ {
+ letter: "V",
+ items: [
+ {
+ id: 61,
+ title: "Consonant",
+ letters: "Vv",
+ letter: "v",
+ word: "Van",
+ image: getAssetUrl(s3Assets.VanTwentyTwoImg),
+ audio: getAssetAudioUrl(s3Assets.vanPhonemeAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.vanPhonemeAudio),
+ },
+ {
+ id: 62,
+ title: "Consonant",
+ letters: "Vv",
+ letter: "v",
+ word: "Guava",
+ image: getAssetUrl(s3Assets.GuavaTwentyTwoImg),
+ audio: getAssetAudioUrl(s3Assets.guavaPhonemeAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.guavaPhonemeAudio),
+ },
+ ],
+ },
+ {
+ letter: "K",
+ items: [
+ {
+ id: 64,
+ title: "Consonant",
+ letters: "Kk",
+ letter: "k",
+ word: "Kite",
+ image: getAssetUrl(s3Assets.kiteFiveImg),
+ audio: getAssetAudioUrl(s3Assets.kitePhonemeAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.kitePhonemeAudio),
+ },
+ {
+ id: 65,
+ title: "Consonant",
+ letters: "Kk",
+ letter: "k",
+ word: "Monkey",
+ image: getAssetUrl(s3Assets.monkeyElevenImg),
+ audio: getAssetAudioUrl(s3Assets.monkeyPhonemeAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.monkeyPhonemeAudio),
+ },
+ {
+ id: 66,
+ title: "Consonant",
+ letters: "Kk",
+ letter: "k",
+ word: "Book",
+ image: getAssetUrl(s3Assets.bookElevenImg),
+ audio: getAssetAudioUrl(s3Assets.bookPhonemeAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.bookPhonemeAudio),
+ },
+ ],
+ },
+ {
+ letter: "J",
+ items: [
+ {
+ id: 67,
+ title: "Consonant",
+ letters: "Jj",
+ letter: "j",
+ word: "Jam",
+ image: getAssetUrl(s3Assets.jamTenImg),
+ audio: getAssetAudioUrl(s3Assets.jamPhonemeAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.jamPhonemeAudio),
+ },
+ {
+ id: 68,
+ title: "Consonant",
+ letters: "Jj",
+ letter: "j",
+ word: "brinjal",
+ image: getAssetUrl(s3Assets.brinjalTenImg),
+ audio: getAssetAudioUrl(s3Assets.brinjalPhonemeAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.brinjalPhonemeAudio),
+ },
+ ],
+ },
+ {
+ letter: "X",
+ items: [
+ {
+ id: 70,
+ title: "Consonant",
+ letters: "Xx",
+ letter: "x",
+ word: "Xray",
+ image: getAssetUrl(s3Assets.xrayTwentyFourImg),
+ audio: getAssetAudioUrl(s3Assets.xrayPhonemeAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.xrayPhonemeAudio),
+ },
+ {
+ id: 71,
+ title: "Consonant",
+ letters: "Xx",
+ letter: "x",
+ word: "Textbook",
+ image: getAssetUrl(s3Assets.bookElevenImg),
+ audio: getAssetAudioUrl(s3Assets.textbookPhonemeAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.textbookPhonemeAudio),
+ },
+ {
+ id: 72,
+ title: "Consonant",
+ letters: "Xx",
+ letter: "x",
+ word: "Fox",
+ image: getAssetUrl(s3Assets.foxTwentyFourImg),
+ audio: getAssetAudioUrl(s3Assets.foxPhonemeAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.foxPhonemeAudio),
+ },
+ ],
+ },
+ {
+ letter: "Q",
+ items: [
+ {
+ id: 73,
+ title: "Consonant",
+ letters: "Qq",
+ letter: "q",
+ word: "Queen",
+ image: getAssetUrl(s3Assets.queenSixteenImg),
+ audio: getAssetAudioUrl(s3Assets.queenPhonemeAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.queenPhonemeAudio),
+ },
+ {
+ id: 74,
+ title: "Consonant",
+ letters: "Qq",
+ letter: "q",
+ word: "Mosquito",
+ image: getAssetUrl(s3Assets.mosquitoSeventeenImg),
+ audio: getAssetAudioUrl(s3Assets.mosquitoPhonemeAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.mosquitoPhonemeAudio),
+ },
+ ],
+ },
+ {
+ letter: "Z",
+ items: [
+ {
+ id: 76,
+ title: "Consonant",
+ letters: "Zz",
+ letter: "z",
+ word: "Zebra",
+ image: getAssetUrl(s3Assets.zebraTwentySixImg),
+ audio: getAssetAudioUrl(s3Assets.zebraPhonemeAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.zebraPhonemeAudio),
+ },
+ {
+ id: 77,
+ title: "Consonant",
+ letters: "Zz",
+ letter: "z",
+ word: "Puzzle",
+ image: getAssetUrl(s3Assets.PuzzleTwentySixImg),
+ audio: getAssetAudioUrl(s3Assets.puzzlePhonemeAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.puzzlePhonemeAudio),
+ },
+ {
+ id: 78,
+ title: "Consonant",
+ letters: "Zz",
+ letter: "z",
+ word: "Quiz",
+ image: getAssetUrl(s3Assets.PuzzleTwentySixImg),
+ audio: getAssetAudioUrl(s3Assets.quizPhonemeAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.quizPhonemeAudio),
+ },
+ ],
+ },
+];
+
+const dataKn = [
+ {
+ letter: "ಅ",
+ items: [
+ {
+ id: 1,
+ title: "ಸ್ವರಗಳು",
+ letters: "ಅ",
+ letter: "ಅ",
+ word: "ಅರಸ",
+ image: getAssetUrl(s3Assets.kingAlpTelImage),
+ audio: getAssetAudioUrl(s3Assets.kingAlpAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.kingAlpAudio),
+ },
+ ],
+ },
+ {
+ letter: "ಆ",
+ items: [
+ {
+ id: 2,
+ title: "ಸ್ವರಗಳು",
+ letters: "ಆ",
+ letter: "ಆ",
+ word: "ಆನೆ",
+ image: getAssetUrl(s3Assets.elephentAlpTelImage),
+ audio: getAssetAudioUrl(s3Assets.elephantAlpAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.elephantAlpAudio),
+ },
+ ],
+ },
+ {
+ letter: "ಇ",
+ items: [
+ {
+ id: 3,
+ title: "ಸ್ವರಗಳು",
+ letters: "ಇ",
+ letter: "ಇ",
+ word: "ಇಲಿ",
+ image: getAssetUrl(s3Assets.ratAlpTelImage),
+ audio: getAssetAudioUrl(s3Assets.mouseAlpAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.mouseAlpAudio),
+ },
+ ],
+ },
+ {
+ letter: "ಈ",
+ items: [
+ {
+ id: 4,
+ title: "ಸ್ವರಗಳು",
+ letters: "ಈ",
+ letter: "ಈ",
+ word: "ಈಜು",
+ image: getAssetUrl(s3Assets.swimAlpTelImage),
+ audio: getAssetAudioUrl(s3Assets.swimAlpAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.swimAlpAudio),
+ },
+ ],
+ },
+ {
+ letter: "ಉ",
+ items: [
+ {
+ id: 5,
+ title: "ಸ್ವರಗಳು",
+ letters: "ಉ",
+ letter: "ಉ",
+ word: "ಉದರ",
+ image: getAssetUrl(s3Assets.bellyAlpTelImage),
+ audio: getAssetAudioUrl(s3Assets.bellyAlpAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.bellyAlpAudio),
+ },
+ ],
+ },
+ {
+ letter: "ಊ",
+ items: [
+ {
+ id: 6,
+ title: "ಸ್ವರಗಳು",
+ letters: "ಊ",
+ letter: "ಊ",
+ word: "ಊಟ",
+ image: getAssetUrl(s3Assets.foodAlpTelImage),
+ audio: getAssetAudioUrl(s3Assets.mealAlpAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.mealAlpAudio),
+ },
+ ],
+ },
+ {
+ letter: "ಋ",
+ items: [
+ {
+ id: 7,
+ title: "ಸ್ವರಗಳು",
+ letters: "ಋ",
+ letter: "ಋ",
+ word: "ಋಷಿ",
+ image: getAssetUrl(s3Assets.monkAlpTelImage),
+ audio: getAssetAudioUrl(s3Assets.sageAlpAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.sageAlpAudio),
+ },
+ ],
+ },
+ {
+ letter: "ಎ",
+ items: [
+ {
+ id: 8,
+ title: "ಸ್ವರಗಳು",
+ letters: "ಎ",
+ letter: "ಎ",
+ word: "ಎಲೆ",
+ image: getAssetUrl(s3Assets.leafAlpTelImage),
+ audio: getAssetAudioUrl(s3Assets.leafAlpAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.leafAlpAudio),
+ },
+ ],
+ },
+ {
+ letter: "ಏ",
+ items: [
+ {
+ id: 9,
+ title: "ಸ್ವರಗಳು",
+ letters: "ಏ",
+ letter: "ಏ",
+ word: "ಏಣಿ",
+ image: getAssetUrl(s3Assets.stairAlpTelImage),
+ audio: getAssetAudioUrl(s3Assets.ladderAlpAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.ladderAlpAudio),
+ },
+ ],
+ },
+ {
+ letter: "ಐ",
+ items: [
+ {
+ id: 10,
+ title: "ಸ್ವರಗಳು",
+ letters: "ಐ",
+ letter: "ಐ",
+ word: "ಐದು",
+ image: getAssetUrl(s3Assets.fiveAlpTelImage),
+ audio: getAssetAudioUrl(s3Assets.fiveAlpAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.fiveAlpAudio),
+ },
+ ],
+ },
+ {
+ letter: "ಒ",
+ items: [
+ {
+ id: 11,
+ title: "ಸ್ವರಗಳು",
+ letters: "ಒ",
+ letter: "ಒ",
+ word: "ಒಂಟೆ",
+ image: getAssetUrl(s3Assets.camelAlpTelImage),
+ audio: getAssetAudioUrl(s3Assets.camelAlpAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.camelAlpAudio),
+ },
+ ],
+ },
+ {
+ letter: "ಓ",
+ items: [
+ {
+ id: 12,
+ title: "ಸ್ವರಗಳು",
+ letters: "ಓ",
+ letter: "ಓ",
+ word: "ಓಡು",
+ image: getAssetUrl(s3Assets.runAlpTelImage),
+ audio: getAssetAudioUrl(s3Assets.runningAlpAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.runningAlpAudio),
+ },
+ ],
+ },
+ {
+ letter: "ಔ",
+ items: [
+ {
+ id: 13,
+ title: "ಸ್ವರಗಳು",
+ letters: "ಔ",
+ letter: "ಔ",
+ word: "ಔಷಧ",
+ image: getAssetUrl(s3Assets.medicineAlpTelImage),
+ audio: getAssetAudioUrl(s3Assets.medicineAlpAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.medicineAlpAudio),
+ },
+ ],
+ },
+ {
+ letter: "ಕ",
+ items: [
+ {
+ id: 14,
+ title: "ವ್ಯಂಜನಗಳು",
+ letters: "ಕ",
+ letter: "ಕ",
+ word: "ಕಮಲ",
+ image: getAssetUrl(s3Assets.lotusAlpTelImage),
+ audio: getAssetAudioUrl(s3Assets.lotusAlpAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.lotusAlpAudio),
+ },
+ {
+ id: 15,
+ title: "ವ್ಯಂಜನಗಳು",
+ letters: "ಕ",
+ letter: "ಕ",
+ word: "ಏಕದಳ",
+ image: getAssetUrl(s3Assets.cerealAlpTelImage),
+ audio: getAssetAudioUrl(s3Assets.seedCornGrainAlpAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.seedCornGrainAlpAudio),
+ },
+ {
+ id: 16,
+ title: "ವ್ಯಂಜನಗಳು",
+ letters: "ಕ",
+ letter: "ಕ",
+ word: "ಪದಕ",
+ image: getAssetUrl(s3Assets.medalAlpTelImage),
+ audio: getAssetAudioUrl(s3Assets.medalAlpAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.medalAlpAudio),
+ },
+ ],
+ },
+ {
+ letter: "ಖ",
+ items: [
+ {
+ id: 17,
+ title: "ವ್ಯಂಜನಗಳು",
+ letters: "ಖ",
+ letter: "ಖ",
+ word: "ಖಡ್ಗ",
+ image: getAssetUrl(s3Assets.swordAlpTelImage),
+ audio: getAssetAudioUrl(s3Assets.swordAlpAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.swordAlpAudio),
+ },
+ {
+ id: 18,
+ title: "ವ್ಯಂಜನಗಳು",
+ letters: "ಖ",
+ letter: "ಖ",
+ word: "ಲೇಖನಿ",
+ image: getAssetUrl(s3Assets.penAlpTelImage),
+ audio: getAssetAudioUrl(s3Assets.penAlpAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.penAlpAudio),
+ },
+ {
+ id: 19,
+ title: "ವ್ಯಂಜನಗಳು",
+ letters: "ಖ",
+ letter: "ಖ",
+ word: "ಪಂಖ",
+ image: getAssetUrl(s3Assets.fanAlpTelImage),
+ audio: getAssetAudioUrl(s3Assets.fanAlpAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.fanAlpAudio),
+ },
+ ],
+ },
+ {
+ letter: "ಗ",
+ items: [
+ {
+ id: 20,
+ title: "ವ್ಯಂಜನಗಳು",
+ letters: "ಗ",
+ letter: "ಗ",
+ word: "ಗರಿ",
+ image: getAssetUrl(s3Assets.featherAlpTelImage),
+ audio: getAssetAudioUrl(s3Assets.featherAlpAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.featherAlpAudio),
+ },
+ {
+ id: 21,
+ title: "ವ್ಯಂಜನಗಳು",
+ letters: "ಗ",
+ letter: "ಗ",
+ word: "ಆಗಸ",
+ image: getAssetUrl(s3Assets.skyAlpTelImage),
+ audio: getAssetAudioUrl(s3Assets.skyAlpAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.skyAlpAudio),
+ },
+ {
+ id: 22,
+ title: "ವ್ಯಂಜನಗಳು",
+ letters: "ಗ",
+ letter: "ಗ",
+ word: "ಉರಗ",
+ image: getAssetUrl(s3Assets.snakeAlpTelImage),
+ audio: getAssetAudioUrl(s3Assets.snakeAlpAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.snakeAlpAudio),
+ },
+ ],
+ },
+ {
+ letter: "ಘ",
+ items: [
+ {
+ id: 23,
+ title: "ವ್ಯಂಜನಗಳು",
+ letters: "ಘ",
+ letter: "ಘ",
+ word: "ಘಂಟೆ",
+ image: getAssetUrl(s3Assets.drumAlpTelImage),
+ audio: getAssetAudioUrl(s3Assets.bellAlpAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.bellAlpAudio),
+ },
+ {
+ id: 24,
+ title: "ವ್ಯಂಜನಗಳು",
+ letters: "ಘ",
+ letter: "ಘ",
+ word: "ಘಮಘಮ",
+ image: getAssetUrl(s3Assets.fragranceAlpTelImage),
+ audio: getAssetAudioUrl(s3Assets.fragranceAlpAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.fragranceAlpAudio),
+ },
+ {
+ id: 25,
+ title: "ವ್ಯಂಜನಗಳು",
+ letters: "ಘ",
+ letter: "ಘ",
+ word: "ಸಂಘ",
+ image: getAssetUrl(s3Assets.childrenassociationAlpTelImage),
+ audio: getAssetAudioUrl(s3Assets.associationAlpAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.associationAlpAudio),
+ },
+ ],
+ },
+ {
+ letter: "ಚ",
+ items: [
+ {
+ id: 26,
+ title: "ವ್ಯಂಜನಗಳು",
+ letters: "ಚ",
+ letter: "ಚ",
+ word: "ಚಮಚ",
+ image: getAssetUrl(s3Assets.spoonAlpTelImage),
+ audio: getAssetAudioUrl(s3Assets.spoonAlpAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.spoonAlpAudio),
+ },
+ {
+ id: 27,
+ title: "ವ್ಯಂಜನಗಳು",
+ letters: "ಚ",
+ letter: "ಚ",
+ word: "ಈಚಲ",
+ image: getAssetUrl(s3Assets.treeAlpTelImage),
+ audio: getAssetAudioUrl(s3Assets.palmAlpAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.palmAlpAudio),
+ },
+ {
+ id: 28,
+ title: "ವ್ಯಂಜನಗಳು",
+ letters: "ಚ",
+ letter: "ಚ",
+ word: "ಮಂಚ",
+ image: getAssetUrl(s3Assets.couchAlpTelImage),
+ audio: getAssetAudioUrl(s3Assets.cotAlpAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.cotAlpAudio),
+ },
+ ],
+ },
+ {
+ letter: "ಜ",
+ items: [
+ {
+ id: 29,
+ title: "ವ್ಯಂಜನಗಳು",
+ letters: "ಜ",
+ letter: "ಜ",
+ word: "ಜನ",
+ image: getAssetUrl(s3Assets.peopleAlpTelImage),
+ audio: getAssetAudioUrl(s3Assets.peopleAlpAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.peopleAlpAudio),
+ },
+ {
+ id: 30,
+ title: "ವ್ಯಂಜನಗಳು",
+ letters: "ಜ",
+ letter: "ಜ",
+ word: "ಗೀಜಗ",
+ image: getAssetUrl(s3Assets.birdAlpTelImage),
+ audio: getAssetAudioUrl(s3Assets.weaverbirdAlpAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.weaverbirdAlpAudio),
+ },
+ {
+ id: 31,
+ title: "ವ್ಯಂಜನಗಳು",
+ letters: "ಜ",
+ letter: "ಜ",
+ word: "ಭುಜ",
+ image: getAssetUrl(s3Assets.shoulderAlpTelImage),
+ audio: getAssetAudioUrl(s3Assets.shoulderAlpAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.shoulderAlpAudio),
+ },
+ ],
+ },
+ {
+ letter: "ಟ",
+ items: [
+ {
+ id: 32,
+ title: "ವ್ಯಂಜನಗಳು",
+ letters: "ಟ",
+ letter: "ಟ",
+ word: "ಟಗರು",
+ image: getAssetUrl(s3Assets.sheepAlpTelImage),
+ audio: getAssetAudioUrl(s3Assets.maleSheepAlpAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.maleSheepAlpAudio),
+ },
+ {
+ id: 33,
+ title: "ವ್ಯಂಜನಗಳು",
+ letters: "ಟ",
+ letter: "ಟ",
+ word: "ಕಿಟಕಿ",
+ image: getAssetUrl(s3Assets.windowAlpTelImage),
+ audio: getAssetAudioUrl(s3Assets.windowAlpAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.windowAlpAudio),
+ },
+ {
+ id: 34,
+ title: "ವ್ಯಂಜನಗಳು",
+ letters: "ಟ",
+ letter: "ಟ",
+ word: "ಆಟ",
+ image: getAssetUrl(s3Assets.weplayAlpTelImage),
+ audio: getAssetAudioUrl(s3Assets.playAlpAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.playAlpAudio),
+ },
+ ],
+ },
+ {
+ letter: "ಠ",
+ items: [
+ {
+ id: 35,
+ title: "ವ್ಯಂಜನಗಳು",
+ letters: "ಠ",
+ letter: "ಠ",
+ word: "ಕೊಠಡಿ",
+ image: getAssetUrl(s3Assets.bedroomAlpTelImage),
+ audio: getAssetAudioUrl(s3Assets.roomAlpAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.roomAlpAudio),
+ },
+ {
+ id: 36,
+ title: "ವ್ಯಂಜನಗಳು",
+ letters: "ಠ",
+ letter: "ಠ",
+ word: "ಕಂಠ",
+ image: getAssetUrl(s3Assets.neckAlpTelImage),
+ audio: getAssetAudioUrl(s3Assets.frontPartOfTheNeckAlpAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.frontPartOfTheNeckAlpAudio),
+ },
+ ],
+ },
+ {
+ letter: "ಡ",
+ items: [
+ {
+ id: 37,
+ title: "ವ್ಯಂಜನಗಳು",
+ letters: "ಡ",
+ letter: "ಡ",
+ word: "ಡಬ್ಬಿ",
+ image: getAssetUrl(s3Assets.boxAlpTelImage),
+ audio: getAssetAudioUrl(s3Assets.smallBoxOrChestAlpAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.smallBoxOrChestAlpAudio),
+ },
+ {
+ id: 38,
+ title: "ವ್ಯಂಜನಗಳು",
+ letters: "ಡ",
+ letter: "ಡ",
+ word: "ಕಡಲು",
+ image: getAssetUrl(s3Assets.beachAlpTelImage),
+ audio: getAssetAudioUrl(s3Assets.oceanAlpAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.oceanAlpAudio),
+ },
+ {
+ id: 39,
+ title: "ವ್ಯಂಜನಗಳು",
+ letters: "ಡ",
+ letter: "ಡ",
+ word: "ಗಿಡ",
+ image: getAssetUrl(s3Assets.plantAlpTelImage),
+ audio: getAssetAudioUrl(s3Assets.plantAlpAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.plantAlpAudio),
+ },
+ ],
+ },
+ {
+ letter: "ಢ",
+ items: [
+ {
+ id: 40,
+ title: "ವ್ಯಂಜನಗಳು",
+ letters: "ಢ",
+ letter: "ಢ",
+ word: "ಢಣಢಣ",
+ image: getAssetUrl(s3Assets.drumAlpTelImage),
+ audio: getAssetAudioUrl(s3Assets.manRingingTheBellAlpAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.manRingingTheBellAlpAudio),
+ },
+ {
+ id: 41,
+ title: "ವ್ಯಂಜನಗಳು",
+ letters: "ಢ",
+ letter: "ಢ",
+ word: "ಪ್ರೌಢಶಾಲೆ",
+ image: getAssetUrl(s3Assets.schoolAlpTelImage),
+ audio: getAssetAudioUrl(s3Assets.highschoolAlpAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.highschoolAlpAudio),
+ },
+ {
+ id: 42,
+ title: "ವ್ಯಂಜನಗಳು",
+ letters: "ಢ",
+ letter: "ಢ",
+ word: "ಗಾಢ",
+ image: getAssetUrl(s3Assets.eggFiveImg),
+ audio: getAssetAudioUrl(s3Assets.gaadhaNoImagAlpAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.gaadhaNoImagAlpAudio),
+ },
+ ],
+ },
+ {
+ letter: "ಣ",
+ items: [
+ {
+ id: 43,
+ title: "ವ್ಯಂಜನಗಳು",
+ letters: "ಣ",
+ letter: "ಣ",
+ word: "ಹಣತೆ",
+ image: getAssetUrl(s3Assets.candleAlpTelImage),
+ audio: getAssetAudioUrl(s3Assets.earthenLampDiyaAlpAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.earthenLampDiyaAlpAudio),
+ },
+ {
+ id: 44,
+ title: "ವ್ಯಂಜನಗಳು",
+ letters: "ಣ",
+ letter: "ಣ",
+ word: "ಹಣ",
+ image: getAssetUrl(s3Assets.coinAlpTelImage),
+ audio: getAssetAudioUrl(s3Assets.moneyAlpAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.moneyAlpAudio),
+ },
+ ],
+ },
+ {
+ letter: "ತ",
+ items: [
+ {
+ id: 45,
+ title: "ವ್ಯಂಜನಗಳು",
+ letters: "ತ",
+ letter: "ತ",
+ word: "ತಬಲ",
+ image: getAssetUrl(s3Assets.tabalaAlpTelImage),
+ audio: getAssetAudioUrl(s3Assets.tabalaAlpAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.tabalaAlpAudio),
+ },
+ {
+ id: 46,
+ title: "ವ್ಯಂಜನಗಳು",
+ letters: "ತ",
+ letter: "ತ",
+ word: "ಸಂತಸ",
+ image: getAssetUrl(s3Assets.happyAlpTelImage),
+ audio: getAssetAudioUrl(s3Assets.joyHappyAlpAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.joyHappyAlpAudio),
+ },
+ {
+ id: 47,
+ title: "ವ್ಯಂಜನಗಳು",
+ letters: "ತ",
+ letter: "ತ",
+ word: "ಗಣಿತ",
+ image: getAssetUrl(s3Assets.mathematicsAlpTelImage),
+ audio: getAssetAudioUrl(s3Assets.mathAlpAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.mathAlpAudio),
+ },
+ ],
+ },
+ {
+ letter: "ಥ",
+ items: [
+ {
+ id: 48,
+ title: "ವ್ಯಂಜನಗಳು",
+ letters: "ಥ",
+ letter: "ಥ",
+ word: "ಥಳಥಳ",
+ image: getAssetUrl(s3Assets.necklaceAlpTelImage),
+ audio: getAssetAudioUrl(s3Assets.shiningNecklaceAlpAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.shiningNecklaceAlpAudio),
+ },
+ {
+ id: 49,
+ title: "ವ್ಯಂಜನಗಳು",
+ letters: "ಥ",
+ letter: "ಥ",
+ word: "ಥರಥರ",
+ image: getAssetUrl(s3Assets.fearAlpTelImage),
+ audio: getAssetAudioUrl(s3Assets.shakingWithFearAlpAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.shakingWithFearAlpAudio),
+ },
+ {
+ id: 50,
+ title: "ವ್ಯಂಜನಗಳು",
+ letters: "ಥ",
+ letter: "ಥ",
+ word: "ರಥ",
+ image: getAssetUrl(s3Assets.horsechariotAlpTelImage),
+ audio: getAssetAudioUrl(s3Assets.chariotAlpAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.chariotAlpAudio),
+ },
+ ],
+ },
+ {
+ letter: "ದ",
+ items: [
+ {
+ id: 51,
+ title: "ವ್ಯಂಜನಗಳು",
+ letters: "ದ",
+ letter: "ದ",
+ word: "ದನ",
+ image: getAssetUrl(s3Assets.cowAlpTelImage),
+ audio: getAssetAudioUrl(s3Assets.cowAlpAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.cowAlpAudio),
+ },
+ {
+ id: 52,
+ title: "ವ್ಯಂಜನಗಳು",
+ letters: "ದ",
+ letter: "ದ",
+ word: "ಕೂದಲು",
+ image: getAssetUrl(s3Assets.hairAlpTelImage),
+ audio: getAssetAudioUrl(s3Assets.hairAlpAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.hairAlpAudio),
+ },
+ {
+ id: 53,
+ title: "ವ್ಯಂಜನಗಳು",
+ letters: "ದ",
+ letter: "ದ",
+ word: "ಕಾಗದ",
+ image: getAssetUrl(s3Assets.paperAlpTelImage),
+ audio: getAssetAudioUrl(s3Assets.paperAlpAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.paperAlpAudio),
+ },
+ ],
+ },
+ {
+ letter: "ಧ",
+ items: [
+ {
+ id: 54,
+ title: "ವ್ಯಂಜನಗಳು",
+ letters: "ಧ",
+ letter: "ಧ",
+ word: "ಧನ",
+ image: getAssetUrl(s3Assets.treasureAlpTelImage),
+ audio: getAssetAudioUrl(s3Assets.assetMoneyAndJewelsAlpAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.assetMoneyAndJewelsAlpAudio),
+ },
+ {
+ id: 55,
+ title: "ವ್ಯಂಜನಗಳು",
+ letters: "ಧ",
+ letter: "ಧ",
+ word: "ಬುಧವಾರ",
+ image: getAssetUrl(s3Assets.wednesdayAlpTelImage),
+ audio: getAssetAudioUrl(s3Assets.wednesdayAlpAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.wednesdayAlpAudio),
+ },
+ {
+ id: 56,
+ title: "ವ್ಯಂಜನಗಳು",
+ letters: "ಧ",
+ letter: "ಧ",
+ word: "ಔಷಧ",
+ image: getAssetUrl(s3Assets.medicineAlpTelImage),
+ audio: getAssetAudioUrl(s3Assets.medicineAlpAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.medicineAlpAudio),
+ },
+ ],
+ },
+ {
+ letter: "ನ",
+ items: [
+ {
+ id: 57,
+ title: "ವ್ಯಂಜನಗಳು",
+ letters: "ನ",
+ letter: "ನ",
+ word: "ನರಿ",
+ image: getAssetUrl(s3Assets.foxAlpTelImage),
+ audio: getAssetAudioUrl(s3Assets.foxAlpAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.foxAlpAudio),
+ },
+ {
+ id: 58,
+ title: "ವ್ಯಂಜನಗಳು",
+ letters: "ನ",
+ letter: "ನ",
+ word: "ಕನಸು",
+ image: getAssetUrl(s3Assets.dreamAlpTelImage),
+ audio: getAssetAudioUrl(s3Assets.dreamAlpAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.dreamAlpAudio),
+ },
+ {
+ id: 59,
+ title: "ವ್ಯಂಜನಗಳು",
+ letters: "ನ",
+ letter: "ನ",
+ word: "ನಮನ",
+ image: getAssetUrl(s3Assets.pranamAlpTelImage),
+ audio: getAssetAudioUrl(s3Assets.namasteAlpAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.namasteAlpAudio),
+ },
+ ],
+ },
+ {
+ letter: "ಪ",
+ items: [
+ {
+ id: 60,
+ title: "ವ್ಯಂಜನಗಳು",
+ letters: "ಪ",
+ letter: "ಪ",
+ word: "ಪದಕ",
+ image: getAssetUrl(s3Assets.medalAlpTelImage),
+ audio: getAssetAudioUrl(s3Assets.medalAlpAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.medalAlpAudio),
+ },
+ {
+ id: 61,
+ title: "ವ್ಯಂಜನಗಳು",
+ letters: "ಪ",
+ letter: "ಪ",
+ word: "ಗಾಳಿಪಟ",
+ image: getAssetUrl(s3Assets.kiteAlpTelImage),
+ audio: getAssetAudioUrl(s3Assets.kiteAlpAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.kiteAlpAudio),
+ },
+ {
+ id: 62,
+ title: "ವ್ಯಂಜನಗಳು",
+ letters: "ಪ",
+ letter: "ಪ",
+ word: "ಕೋಪ",
+ image: getAssetUrl(s3Assets.angerAlpTelImage),
+ audio: getAssetAudioUrl(s3Assets.angryBoyAlpAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.angryBoyAlpAudio),
+ },
+ ],
+ },
+ {
+ letter: "ಫ",
+ items: [
+ {
+ id: 63,
+ title: "ವ್ಯಂಜನಗಳು",
+ letters: "ಫ",
+ letter: "ಫ",
+ word: "ಫಲ",
+ image: getAssetUrl(s3Assets.fruitAlpTelImage),
+ audio: getAssetAudioUrl(s3Assets.fruitsAlpAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.fruitsAlpAudio),
+ },
+ {
+ id: 64,
+ title: "ವ್ಯಂಜನಗಳು",
+ letters: "ಫ",
+ letter: "ಫ",
+ word: "ಸೌರಫಲಕ",
+ image: getAssetUrl(s3Assets.solarAlpTelImage),
+ audio: getAssetAudioUrl(s3Assets.solarPanelAlpAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.solarPanelAlpAudio),
+ },
+ {
+ id: 65,
+ title: "ವ್ಯಂಜನಗಳು",
+ letters: "ಫ",
+ letter: "ಫ",
+ word: "ಕಫ",
+ image: getAssetUrl(s3Assets.coughAlpTelImage),
+ audio: getAssetAudioUrl(s3Assets.phlegmAlpAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.phlegmAlpAudio),
+ },
+ ],
+ },
+ {
+ letter: "ಬ",
+ items: [
+ {
+ id: 66,
+ title: "ವ್ಯಂಜನಗಳು",
+ letters: "ಬ",
+ letter: "ಬ",
+ word: "ಬಟಾಣಿ",
+ image: getAssetUrl(s3Assets.peasAlpTelImage),
+ audio: getAssetAudioUrl(s3Assets.greenPeasAlpAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.greenPeasAlpAudio),
+ },
+ {
+ id: 67,
+ title: "ವ್ಯಂಜನಗಳು",
+ letters: "ಬ",
+ letter: "ಬ",
+ word: "ತಬಲ",
+ image: getAssetUrl(s3Assets.tabalaAlpTelImage),
+ audio: getAssetAudioUrl(s3Assets.tabalaaAlpAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.tabalaaAlpAudio),
+ },
+ {
+ id: 68,
+ title: "ವ್ಯಂಜನಗಳು",
+ letters: "ಬ",
+ letter: "ಬ",
+ word: "ಕುಟುಂಬ",
+ image: getAssetUrl(s3Assets.familyAlpTelImage),
+ audio: getAssetAudioUrl(s3Assets.familyAlpAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.familyAlpAudio),
+ },
+ ],
+ },
+ {
+ letter: "ಭ",
+ items: [
+ {
+ id: 69,
+ title: "ವ್ಯಂಜನಗಳು",
+ letters: "ಭ",
+ letter: "ಭ",
+ word: "ಭರಣಿ",
+ image: getAssetUrl(s3Assets.boxAlpTelImage),
+ audio: getAssetAudioUrl(s3Assets.smallBoxOrChestAlpAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.smallBoxOrChestAlpAudio),
+ },
+ {
+ id: 70,
+ title: "ವ್ಯಂಜನಗಳು",
+ letters: "ಭ",
+ letter: "ಭ",
+ word: "ಆಭರಣ",
+ image: getAssetUrl(s3Assets.jewelleryAlpTelImage),
+ audio: getAssetAudioUrl(s3Assets.jewelariesAlpAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.jewelariesAlpAudio),
+ },
+ {
+ id: 71,
+ title: "ವ್ಯಂಜನಗಳು",
+ letters: "ಭ",
+ letter: "ಭ",
+ word: "ವೃಷಭ",
+ image: getAssetUrl(s3Assets.bullAlpTelImage),
+ audio: getAssetAudioUrl(s3Assets.anOxOrBullAlpAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.anOxOrBullAlpAudio),
+ },
+ ],
+ },
+ {
+ letter: "ಮ",
+ items: [
+ {
+ id: 72,
+ title: "ವ್ಯಂಜನಗಳು",
+ letters: "ಮ",
+ letter: "ಮ",
+ word: "ಮರ",
+ image: getAssetUrl(s3Assets.treeAlpTelImage),
+ audio: getAssetAudioUrl(s3Assets.treeAlpAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.treeAlpAudio),
+ },
+ {
+ id: 73,
+ title: "ವ್ಯಂಜನಗಳು",
+ letters: "ಮ",
+ letter: "ಮ",
+ word: "ಕಮಲ",
+ image: getAssetUrl(s3Assets.lotusAlpTelImage),
+ audio: getAssetAudioUrl(s3Assets.lotusAlpAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.lotusAlpAudio),
+ },
+ {
+ id: 74,
+ title: "ವ್ಯಂಜನಗಳು",
+ letters: "ಮ",
+ letter: "ಮ",
+ word: "ಹಿಮ",
+ image: getAssetUrl(s3Assets.snowAlpTelImage),
+ audio: getAssetAudioUrl(s3Assets.snowAlpAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.snowAlpAudio),
+ },
+ ],
+ },
+ {
+ letter: "ಯ",
+ items: [
+ {
+ id: 75,
+ title: "ವ್ಯಂಜನಗಳು",
+ letters: "ಯ",
+ letter: "ಯ",
+ word: "ಯಮ",
+ image: getAssetUrl(s3Assets.yamrajAlpTelImage),
+ audio: getAssetAudioUrl(s3Assets.yamaAlpAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.yamaAlpAudio),
+ },
+ {
+ id: 76,
+ title: "ವ್ಯಂಜನಗಳು",
+ letters: "ಯ",
+ letter: "ಯ",
+ word: "ಪಾಯಸ",
+ image: getAssetUrl(s3Assets.stewAlpTelImage),
+ audio: getAssetAudioUrl(s3Assets.kheerAlpAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.kheerAlpAudio),
+ },
+ {
+ id: 77,
+ title: "ವ್ಯಂಜನಗಳು",
+ letters: "ಯ",
+ letter: "ಯ",
+ word: "ಭಯ",
+ image: getAssetUrl(s3Assets.fearAlpTelImage),
+ audio: getAssetAudioUrl(s3Assets.fearAlpAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.fearAlpAudio),
+ },
+ ],
+ },
+ {
+ letter: "ರ",
+ items: [
+ {
+ id: 78,
+ title: "ವ್ಯಂಜನಗಳು",
+ letters: "ರ",
+ letter: "ರ",
+ word: "ರಥ",
+ image: getAssetUrl(s3Assets.horsechariotAlpTelImage),
+ audio: getAssetAudioUrl(s3Assets.chariot1AlpAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.chariot1AlpAudio),
+ },
+ {
+ id: 79,
+ title: "ವ್ಯಂಜನಗಳು",
+ letters: "ರ",
+ letter: "ರ",
+ word: "ಬೆರಳು",
+ image: getAssetUrl(s3Assets.fingerAlpTelImage),
+ audio: getAssetAudioUrl(s3Assets.fingerAlpAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.fingerAlpAudio),
+ },
+ {
+ id: 80,
+ title: "ವ್ಯಂಜನಗಳು",
+ letters: "ರ",
+ letter: "ರ",
+ word: "ಉದರ",
+ image: getAssetUrl(s3Assets.bellyAlpTelImage),
+ audio: getAssetAudioUrl(s3Assets.bellyAlpAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.bellyAlpAudio),
+ },
+ ],
+ },
+ {
+ letter: "ಲ",
+ items: [
+ {
+ id: 81,
+ title: "ವ್ಯಂಜನಗಳು",
+ letters: "ಲ",
+ letter: "ಲ",
+ word: "ಲತೆ",
+ image: getAssetUrl(s3Assets.leafAlpTelImage),
+ audio: getAssetAudioUrl(s3Assets.creeperAlpAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.creeperAlpAudio),
+ },
+ {
+ id: 82,
+ title: "ವ್ಯಂಜನಗಳು",
+ letters: "ಲ",
+ letter: "ಲ",
+ word: "ಚಿಲಕ",
+ image: getAssetUrl(s3Assets.colorpencilAlpTelImage),
+ audio: getAssetAudioUrl(s3Assets.boltAlpAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.boltAlpAudio),
+ },
+ {
+ id: 83,
+ title: "ವ್ಯಂಜನಗಳು",
+ letters: "ಲ",
+ letter: "ಲ",
+ word: "ಮೊಲ",
+ image: getAssetUrl(s3Assets.rabbitAlpTelImage),
+ audio: getAssetAudioUrl(s3Assets.rabbitAlpAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.rabbitAlpAudio),
+ },
+ ],
+ },
+ {
+ letter: "ವ",
+ items: [
+ {
+ id: 84,
+ title: "ವ್ಯಂಜನಗಳು",
+ letters: "ವ",
+ letter: "ವ",
+ word: "ವನ",
+ image: getAssetUrl(s3Assets.forestAlpTelImage),
+ audio: getAssetAudioUrl(s3Assets.jungleAlpAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.jungleAlpAudio),
+ },
+ {
+ id: 85,
+ title: "ವ್ಯಂಜನಗಳು",
+ letters: "ವ",
+ letter: "ವ",
+ word: "ಲವಣ",
+ image: getAssetUrl(s3Assets.saltAlpTelImage),
+ audio: getAssetAudioUrl(s3Assets.rockSaltAlpAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.rockSaltAlpAudio),
+ },
+ {
+ id: 86,
+ title: "ವ್ಯಂಜನಗಳು",
+ letters: "ವ",
+ letter: "ವ",
+ word: "ಶಿವ",
+ image: getAssetUrl(s3Assets.shivAlpTelImage),
+ audio: getAssetAudioUrl(s3Assets.shivaGodAlpAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.shivaGodAlpAudio),
+ },
+ ],
+ },
+ {
+ letter: "ಶ",
+ items: [
+ {
+ id: 87,
+ title: "ವ್ಯಂಜನಗಳು",
+ letters: "ಶ",
+ letter: "ಶ",
+ word: "ಶಶಿ",
+ image: getAssetUrl(s3Assets.moonAlpTelImage),
+ audio: getAssetAudioUrl(s3Assets.moonAlpAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.moonAlpAudio),
+ },
+ {
+ id: 88,
+ title: "ವ್ಯಂಜನಗಳು",
+ letters: "ಶ",
+ letter: "ಶ",
+ word: "ದಶಕ",
+ image: getAssetUrl(s3Assets.fiveAlpTelImage),
+ audio: getAssetAudioUrl(s3Assets.tenInASetAlpAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.tenInASetAlpAudio),
+ },
+ {
+ id: 89,
+ title: "ವ್ಯಂಜನಗಳು",
+ letters: "ಶ",
+ letter: "ಶ",
+ word: "ದೇಶ",
+ image: getAssetUrl(s3Assets.countryAlpTelImage),
+ audio: getAssetAudioUrl(s3Assets.countryAlpAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.countryAlpAudio),
+ },
+ ],
+ },
+ {
+ letter: "ಷ",
+ items: [
+ {
+ id: 90,
+ title: "ವ್ಯಂಜನಗಳು",
+ letters: "ಷ",
+ letter: "ಷ",
+ word: "ಷಡ್ಭುಜ",
+ image: getAssetUrl(s3Assets.hexagonAlpTelImage),
+ audio: getAssetAudioUrl(s3Assets.hexagoneAlpAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.hexagoneAlpAudio),
+ },
+ {
+ id: 91,
+ title: "ವ್ಯಂಜನಗಳು",
+ letters: "ಷ",
+ letter: "ಷ",
+ word: "ಔಷಧ",
+ image: getAssetUrl(s3Assets.medicineAlpTelImage),
+ audio: getAssetAudioUrl(s3Assets.medicine2AlpAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.medicine2AlpAudio),
+ },
+ {
+ id: 92,
+ title: "ವ್ಯಂಜನಗಳು",
+ letters: "ಷ",
+ letter: "ಷ",
+ word: "ಪುರುಷ",
+ image: getAssetUrl(s3Assets.manAlpTelImage),
+ audio: getAssetAudioUrl(s3Assets.purushaManAlpAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.purushaManAlpAudio),
+ },
+ ],
+ },
+ {
+ letter: "ಸ",
+ items: [
+ {
+ id: 93,
+ title: "ವ್ಯಂಜನಗಳು",
+ letters: "ಸ",
+ letter: "ಸ",
+ word: "ಸರ",
+ image: getAssetUrl(s3Assets.tinklechainAlpTelImage),
+ audio: getAssetAudioUrl(s3Assets.goldChainAlpAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.goldChainAlpAudio),
+ },
+ {
+ id: 94,
+ title: "ವ್ಯಂಜನಗಳು",
+ letters: "ಸ",
+ letter: "ಸ",
+ word: "ಮೊಸಳೆ",
+ image: getAssetUrl(s3Assets.crocodileAlpTelImage),
+ audio: getAssetAudioUrl(s3Assets.crocodileAlpAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.crocodileAlpAudio),
+ },
+ {
+ id: 95,
+ title: "ವ್ಯಂಜನಗಳು",
+ letters: "ಸ",
+ letter: "ಸ",
+ word: "ಹಂಸ",
+ image: getAssetUrl(s3Assets.swanAlpTelImage),
+ audio: getAssetAudioUrl(s3Assets.swanAlpAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.swanAlpAudio),
+ },
+ ],
+ },
+ {
+ letter: "ಹ",
+ items: [
+ {
+ id: 96,
+ title: "ವ್ಯಂಜನಗಳು",
+ letters: "ಹ",
+ letter: "ಹ",
+ word: "ಹಸು",
+ image: getAssetUrl(s3Assets.cowAlpTelImage),
+ audio: getAssetAudioUrl(s3Assets.cow2AlpAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.cow2AlpAudio),
+ },
+ {
+ id: 97,
+ title: "ವ್ಯಂಜನಗಳು",
+ letters: "ಹ",
+ letter: "ಹ",
+ word: "ವಾಹನ",
+ image: getAssetUrl(s3Assets.carAlpTelImage),
+ audio: getAssetAudioUrl(s3Assets.vehicleAlpAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.vehicleAlpAudio),
+ },
+ {
+ id: 98,
+ title: "ವ್ಯಂಜನಗಳು",
+ letters: "ಹ",
+ letter: "ಹ",
+ word: "ಸಿಂಹ",
+ image: getAssetUrl(s3Assets.lionAlpTelImage),
+ audio: getAssetAudioUrl(s3Assets.lionAlpAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.lionAlpAudio),
+ },
+ ],
+ },
+ {
+ letter: "ಳ",
+ items: [
+ {
+ id: 99,
+ title: "ವ್ಯಂಜನಗಳು",
+ letters: "ಳ",
+ letter: "ಳ",
+ word: "ಹಳದಿ",
+ image: getAssetUrl(s3Assets.yellowAlpTelImage),
+ audio: getAssetAudioUrl(s3Assets.yellowAlpAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.yellowAlpAudio),
+ },
+ ],
+ },
+];
+const dataHi = [
+ {
+ letter: "अ",
+ items: [
+ {
+ id: 1,
+ title: "स्वर",
+ letters: "अ",
+ letter: "अ",
+ word: "अनार",
+ image: getAssetUrl(s3Assets.अनारImg),
+ audio: getAssetAudioUrl(s3Assets.अनारAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.अनारAudio),
+ },
+ ],
+ },
+ {
+ letter: "आ",
+ items: [
+ {
+ id: 2,
+ title: "स्वर",
+ letters: "आ",
+ letter: "आ",
+ word: "आम",
+ image: getAssetUrl(s3Assets.आमImg),
+ audio: getAssetAudioUrl(s3Assets.आमAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.आमAudio),
+ },
+ {
+ id: 3,
+ title: "स्वर",
+ letters: "आ",
+ letter: "आ",
+ word: "कछुआ",
+ image: getAssetUrl(s3Assets.कछुआImg),
+ audio: getAssetAudioUrl(s3Assets.कछुआAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.कछुआAudio),
+ },
+ ],
+ },
+ {
+ letter: "इ",
+ items: [
+ {
+ id: 4,
+ title: "स्वर",
+ letters: "इ",
+ letter: "इ",
+ word: "इमली",
+ image: getAssetUrl(s3Assets.इमलीImg),
+ audio: getAssetAudioUrl(s3Assets.इमलीAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.इमलीAudio),
+ },
+ {
+ id: 5,
+ title: "स्वर",
+ letters: "इ",
+ letter: "इ",
+ word: "साइकिल",
+ image: getAssetUrl(s3Assets.साइकिलImg),
+ audio: getAssetAudioUrl(s3Assets.साइकिलAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.साइकिलAudio),
+ },
+ ],
+ },
+ {
+ letter: "ई",
+ items: [
+ {
+ id: 6,
+ title: "स्वर",
+ letters: "ई",
+ letter: "ई",
+ word: "ईख",
+ image: getAssetUrl(s3Assets.ईखImg),
+ audio: getAssetAudioUrl(s3Assets.ईखAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.ईखAudio),
+ },
+ {
+ id: 7,
+ title: "स्वर",
+ letters: "ई",
+ letter: "ई",
+ word: "नई",
+ image: getAssetUrl(s3Assets.नईImg),
+ audio: getAssetAudioUrl(s3Assets.नईAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.नईAudio),
+ },
+ ],
+ },
+ {
+ letter: "उ",
+ items: [
+ {
+ id: 8,
+ title: "स्वर",
+ letters: "उ",
+ letter: "उ",
+ word: "उड़",
+ image: getAssetUrl(s3Assets.उड़Img),
+ audio: getAssetAudioUrl(s3Assets.उड़Audio),
+ singleAudio: getAssetAudioUrl(s3Assets.उड़Audio),
+ },
+ ],
+ },
+ {
+ letter: "ऊ",
+ items: [
+ {
+ id: 9,
+ title: "स्वर",
+ letters: "ऊ",
+ letter: "ऊ",
+ word: "ऊपर",
+ image: getAssetUrl(s3Assets.ऊपरImg),
+ audio: getAssetAudioUrl(s3Assets.ऊपरAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.ऊपरAudio),
+ },
+ ],
+ },
+ {
+ letter: "ऋ",
+ items: [
+ {
+ id: 10,
+ title: "स्वर",
+ letters: "ऋ",
+ letter: "ऋ",
+ word: "ऋषि",
+ image: getAssetUrl(s3Assets.ऋषिImg),
+ audio: getAssetAudioUrl(s3Assets.ऋषिAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.ऋषिAudio),
+ },
+ ],
+ },
+ {
+ letter: "ए",
+ items: [
+ {
+ id: 11,
+ title: "स्वर",
+ letters: "ए",
+ letter: "ए",
+ word: "एड़ी",
+ image: getAssetUrl(s3Assets.एड़ीImg),
+ audio: getAssetAudioUrl(s3Assets.एड़ीAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.एड़ीAudio),
+ },
+ {
+ id: 12,
+ title: "स्वर",
+ letters: "ए",
+ letter: "ए",
+ word: "पढ़िए",
+ image: getAssetUrl(s3Assets.पढ़िएImg),
+ audio: getAssetAudioUrl(s3Assets.पढ़िएAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.पढ़िएAudio),
+ },
+ ],
+ },
+ {
+ letter: "ऐ",
+ items: [
+ {
+ id: 13,
+ title: "स्वर",
+ letters: "ऐ",
+ letter: "ऐ",
+ word: "ऐनक",
+ image: getAssetUrl(s3Assets.ऐनकImg),
+ audio: getAssetAudioUrl(s3Assets.ऐनकAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.ऐनकAudio),
+ },
+ ],
+ },
+ {
+ letter: "ओ",
+ items: [
+ {
+ id: 14,
+ title: "स्वर",
+ letters: "ओ",
+ letter: "ओ",
+ word: "ओखली",
+ image: getAssetUrl(s3Assets.ओखलीImg),
+ audio: getAssetAudioUrl(s3Assets.ओखलीAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.ओखलीAudio),
+ },
+ ],
+ },
+ {
+ letter: "औ",
+ items: [
+ {
+ id: 15,
+ title: "स्वर",
+ letters: "औ",
+ letter: "औ",
+ word: "औरत",
+ image: getAssetUrl(s3Assets.औरतImg),
+ audio: getAssetAudioUrl(s3Assets.औरतAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.औरतAudio),
+ },
+ ],
+ },
+ {
+ letter: "अं",
+ items: [
+ {
+ id: 16,
+ title: "स्वर",
+ letters: "अं",
+ letter: "अं",
+ word: "अंगूर",
+ image: getAssetUrl(s3Assets.अंगूरImg),
+ audio: getAssetAudioUrl(s3Assets.अंगूरAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.अंगूरAudio),
+ },
+ ],
+ },
+ {
+ letter: "क",
+ items: [
+ {
+ id: 17,
+ title: "व्यंजन",
+ letters: "क",
+ letter: "क",
+ word: "कबूतर",
+ image: getAssetUrl(s3Assets.कबूतरImg),
+ audio: getAssetAudioUrl(s3Assets.कबूतरAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.कबूतरAudio),
+ },
+ {
+ id: 18,
+ title: "व्यंजन",
+ letters: "क",
+ letter: "क",
+ word: "बकरी",
+ image: getAssetUrl(s3Assets.बकरीImg),
+ audio: getAssetAudioUrl(s3Assets.बकरीAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.बकरीAudio),
+ },
+ {
+ id: 19,
+ title: "व्यंजन",
+ letters: "क",
+ letter: "क",
+ word: "नमक",
+ image: getAssetUrl(s3Assets.नमकImg),
+ audio: getAssetAudioUrl(s3Assets.नमकAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.नमकAudio),
+ },
+ ],
+ },
+ {
+ letter: "ख",
+ items: [
+ {
+ id: 20,
+ title: "व्यंजन",
+ letters: "ख",
+ letter: "ख",
+ word: "खरगोश",
+ image: getAssetUrl(s3Assets.खरगोशImg),
+ audio: getAssetAudioUrl(s3Assets.खरगोशAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.खरगोशAudio),
+ },
+ {
+ id: 21,
+ title: "व्यंजन",
+ letters: "ख",
+ letter: "ख",
+ word: "लेखन",
+ image: getAssetUrl(s3Assets.लेखनImg),
+ audio: getAssetAudioUrl(s3Assets.लेखनAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.लेखनAudio),
+ },
+ {
+ id: 22,
+ title: "व्यंजन",
+ letters: "ख",
+ letter: "ख",
+ word: "भूख",
+ image: getAssetUrl(s3Assets.भूखImg),
+ audio: getAssetAudioUrl(s3Assets.भूखAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.भूखAudio),
+ },
+ ],
+ },
+ {
+ letter: "ग",
+ items: [
+ {
+ id: 23,
+ title: "व्यंजन",
+ letters: "ग",
+ letter: "ग",
+ word: "गधा",
+ image: getAssetUrl(s3Assets.गधाImg),
+ audio: getAssetAudioUrl(s3Assets.गधाAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.गधाAudio),
+ },
+ {
+ id: 24,
+ title: "व्यंजन",
+ letters: "ग",
+ letter: "ग",
+ word: "नगर",
+ image: getAssetUrl(s3Assets.नगरImg),
+ audio: getAssetAudioUrl(s3Assets.नगरAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.नगरAudio),
+ },
+ {
+ id: 25,
+ title: "व्यंजन",
+ letters: "ग",
+ letter: "ग",
+ word: "लोग",
+ image: getAssetUrl(s3Assets.लोगImg),
+ audio: getAssetAudioUrl(s3Assets.लोगAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.लोगAudio),
+ },
+ ],
+ },
+ {
+ letter: "घ",
+ items: [
+ {
+ id: 26,
+ title: "व्यंजन",
+ letters: "घ",
+ letter: "घ",
+ word: "घर",
+ image: getAssetUrl(s3Assets.घरImg),
+ audio: getAssetAudioUrl(s3Assets.घरAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.घरAudio),
+ },
+ {
+ id: 27,
+ title: "व्यंजन",
+ letters: "घ",
+ letter: "घ",
+ word: "घुँघरू",
+ image: getAssetUrl(s3Assets.घुँघरूImg),
+ audio: getAssetAudioUrl(s3Assets.घुँघरूAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.घुँघरूAudio),
+ },
+ {
+ id: 28,
+ title: "व्यंजन",
+ letters: "घ",
+ letter: "घ",
+ word: "बाघ",
+ image: getAssetUrl(s3Assets.बाघImg),
+ audio: getAssetAudioUrl(s3Assets.बाघAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.बाघAudio),
+ },
+ ],
+ },
+ {
+ letter: "च",
+ items: [
+ {
+ id: 29,
+ title: "व्यंजन",
+ letters: "च",
+ letter: "च",
+ word: "चढ़",
+ image: getAssetUrl(s3Assets.चढ़Img),
+ audio: getAssetAudioUrl(s3Assets.चढ़Audio),
+ singleAudio: getAssetAudioUrl(s3Assets.चढ़Audio),
+ },
+ {
+ id: 30,
+ title: "व्यंजन",
+ letters: "च",
+ letter: "च",
+ word: "खिचड़ी",
+ image: getAssetUrl(s3Assets.खिचड़ीImg),
+ audio: getAssetAudioUrl(s3Assets.खिचड़ीAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.खिचड़ीAudio),
+ },
+ {
+ id: 31,
+ title: "व्यंजन",
+ letters: "च",
+ letter: "च",
+ word: "पाँच",
+ image: getAssetUrl(s3Assets.पाँचImg),
+ audio: getAssetAudioUrl(s3Assets.पाँचAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.पाँचAudio),
+ },
+ ],
+ },
+ {
+ letter: "छ",
+ items: [
+ {
+ id: 32,
+ title: "व्यंजन",
+ letters: "छ",
+ letter: "छ",
+ word: "छत",
+ image: getAssetUrl(s3Assets.छतImg),
+ audio: getAssetAudioUrl(s3Assets.छतAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.छतAudio),
+ },
+ {
+ id: 33,
+ title: "व्यंजन",
+ letters: "छ",
+ letter: "छ",
+ word: "मछली",
+ image: getAssetUrl(s3Assets.मछलीImg),
+ audio: getAssetAudioUrl(s3Assets.मछलीAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.मछलीAudio),
+ },
+ {
+ id: 34,
+ title: "व्यंजन",
+ letters: "छ",
+ letter: "छ",
+ word: "पूछ",
+ image: getAssetUrl(s3Assets.पूछImg),
+ audio: getAssetAudioUrl(s3Assets.पूछAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.पूछAudio),
+ },
+ ],
+ },
+ {
+ letter: "ज",
+ items: [
+ {
+ id: 35,
+ title: "व्यंजन",
+ letters: "ज",
+ letter: "ज",
+ word: "जग",
+ image: getAssetUrl(s3Assets.जगImg),
+ audio: getAssetAudioUrl(s3Assets.जगAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.जगAudio),
+ },
+ {
+ id: 36,
+ title: "व्यंजन",
+ letters: "ज",
+ letter: "ज",
+ word: "गाजर",
+ image: getAssetUrl(s3Assets.गाजरImg),
+ audio: getAssetAudioUrl(s3Assets.गाजरAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.गाजरAudio),
+ },
+ {
+ id: 37,
+ title: "व्यंजन",
+ letters: "ज",
+ letter: "ज",
+ word: "सूरज",
+ image: getAssetUrl(s3Assets.सूरजImg),
+ audio: getAssetAudioUrl(s3Assets.सूरजAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.सूरजAudio),
+ },
+ ],
+ },
+ {
+ letter: "झ",
+ items: [
+ {
+ id: 38,
+ title: "व्यंजन",
+ letters: "झ",
+ letter: "झ",
+ word: "झण्डा",
+ image: getAssetUrl(s3Assets.झण्डाImg),
+ audio: getAssetAudioUrl(s3Assets.झण्डाAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.झण्डाAudio),
+ },
+ ],
+ },
+ {
+ letter: "ट",
+ items: [
+ {
+ id: 39,
+ title: "व्यंजन",
+ letters: "ट",
+ letter: "ट",
+ word: "टमाटर",
+ image: getAssetUrl(s3Assets.टमाटरImg),
+ audio: getAssetAudioUrl(s3Assets.टमाटरAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.टमाटरAudio),
+ },
+ {
+ id: 40,
+ title: "व्यंजन",
+ letters: "ट",
+ letter: "ट",
+ word: "मटर",
+ image: getAssetUrl(s3Assets.मटरImg),
+ audio: getAssetAudioUrl(s3Assets.मटरAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.मटरAudio),
+ },
+ {
+ id: 41,
+ title: "व्यंजन",
+ letters: "ट",
+ letter: "ट",
+ word: "ऊँट",
+ image: getAssetUrl(s3Assets.ऊँटImg),
+ audio: getAssetAudioUrl(s3Assets.ऊँटAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.ऊँटAudio),
+ },
+ ],
+ },
+ {
+ letter: "ठ",
+ items: [
+ {
+ id: 42,
+ title: "व्यंजन",
+ letters: "ठ",
+ letter: "ठ",
+ word: "ठठेरा",
+ image: getAssetUrl(s3Assets.ठठेराImg),
+ audio: getAssetAudioUrl(s3Assets.ठठेराAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.ठठेराAudio),
+ },
+ {
+ id: 43,
+ title: "व्यंजन",
+ letters: "ठ",
+ letter: "ठ",
+ word: "गुठली",
+ image: getAssetUrl(s3Assets.गुठलीImg),
+ audio: getAssetAudioUrl(s3Assets.गुठलीAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.गुठलीAudio),
+ },
+ {
+ id: 44,
+ title: "व्यंजन",
+ letters: "ठ",
+ letter: "ठ",
+ word: "आठ",
+ image: getAssetUrl(s3Assets.आठImg),
+ audio: getAssetAudioUrl(s3Assets.आठAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.आठAudio),
+ },
+ ],
+ },
+ {
+ letter: "ड",
+ items: [
+ {
+ id: 45,
+ title: "व्यंजन",
+ letters: "ड",
+ letter: "ड",
+ word: "डमरू",
+ image: getAssetUrl(s3Assets.डमरूImg),
+ audio: getAssetAudioUrl(s3Assets.डमरूAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.डमरूAudio),
+ },
+ {
+ id: 46,
+ title: "व्यंजन",
+ letters: "ड",
+ letter: "ड",
+ word: "पेड़",
+ image: getAssetUrl(s3Assets.पेड़Img),
+ audio: getAssetAudioUrl(s3Assets.पेड़Audio),
+ singleAudio: getAssetAudioUrl(s3Assets.पेड़Audio),
+ },
+ ],
+ },
+ {
+ letter: "ढ",
+ items: [
+ {
+ id: 47,
+ title: "व्यंजन",
+ letters: "ढ",
+ letter: "ढ",
+ word: "ढक्कन",
+ image: getAssetUrl(s3Assets.ढक्कनImg),
+ audio: getAssetAudioUrl(s3Assets.ढक्कनAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.ढक्कनAudio),
+ },
+ {
+ id: 48,
+ title: "व्यंजन",
+ letters: "ढ",
+ letter: "ढ",
+ word: "मेंढक",
+ image: getAssetUrl(s3Assets.मेंढकImg),
+ audio: getAssetAudioUrl(s3Assets.मेंढकAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.मेंढकAudio),
+ },
+ ],
+ },
+ {
+ letter: "ण",
+ items: [
+ {
+ id: 49,
+ title: "व्यंजन",
+ letters: "ण",
+ letter: "ण",
+ word: "लवण",
+ image: getAssetUrl(s3Assets.लवणImg),
+ audio: getAssetAudioUrl(s3Assets.लवणAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.लवणAudio),
+ },
+ ],
+ },
+ {
+ letter: "त",
+ items: [
+ {
+ id: 50,
+ title: "व्यंजन",
+ letters: "त",
+ letter: "त",
+ word: "तट",
+ image: getAssetUrl(s3Assets.तटImg),
+ audio: getAssetAudioUrl(s3Assets.तटAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.तटAudio),
+ },
+ {
+ id: 51,
+ title: "व्यंजन",
+ letters: "त",
+ letter: "त",
+ word: "सुतली",
+ image: getAssetUrl(s3Assets.सुतलीImg),
+ audio: getAssetAudioUrl(s3Assets.सुतलीAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.सुतलीAudio),
+ },
+ {
+ id: 52,
+ title: "व्यंजन",
+ letters: "त",
+ letter: "त",
+ word: "रात",
+ image: getAssetUrl(s3Assets.रातImg),
+ audio: getAssetAudioUrl(s3Assets.रातAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.रातAudio),
+ },
+ ],
+ },
+ {
+ letter: "थ",
+ items: [
+ {
+ id: 53,
+ title: "व्यंजन",
+ letters: "थ",
+ letter: "थ",
+ word: "थक",
+ image: getAssetUrl(s3Assets.थकImg),
+ audio: getAssetAudioUrl(s3Assets.थकAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.थकAudio),
+ },
+ {
+ id: 54,
+ title: "व्यंजन",
+ letters: "थ",
+ letter: "थ",
+ word: "हाथ",
+ image: getAssetUrl(s3Assets.हाथImg),
+ audio: getAssetAudioUrl(s3Assets.हाथAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.हाथAudio),
+ },
+ ],
+ },
+ {
+ letter: "द",
+ items: [
+ {
+ id: 55,
+ title: "व्यंजन",
+ letters: "द",
+ letter: "द",
+ word: "दरवाजा",
+ image: getAssetUrl(s3Assets.दरवाजाImg),
+ audio: getAssetAudioUrl(s3Assets.दरवाजाAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.दरवाजाAudio),
+ },
+ {
+ id: 56,
+ title: "व्यंजन",
+ letters: "द",
+ letter: "द",
+ word: "बादल",
+ image: getAssetUrl(s3Assets.बादलImg),
+ audio: getAssetAudioUrl(s3Assets.बादलAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.बादलAudio),
+ },
+ {
+ id: 57,
+ title: "व्यंजन",
+ letters: "द",
+ letter: "द",
+ word: "आनंद",
+ image: getAssetUrl(s3Assets.आनंदImg),
+ audio: getAssetAudioUrl(s3Assets.आनंदAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.आनंदAudio),
+ },
+ ],
+ },
+ {
+ letter: "ध",
+ items: [
+ {
+ id: 58,
+ title: "व्यंजन",
+ letters: "ध",
+ letter: "ध",
+ word: "धनुष",
+ image: getAssetUrl(s3Assets.धनुषImg),
+ audio: getAssetAudioUrl(s3Assets.धनुषAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.धनुषAudio),
+ },
+ {
+ id: 59,
+ title: "व्यंजन",
+ letters: "ध",
+ letter: "ध",
+ word: "इधर",
+ image: getAssetUrl(s3Assets.इधरImg),
+ audio: getAssetAudioUrl(s3Assets.इधरAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.इधरAudio),
+ },
+ {
+ id: 60,
+ title: "व्यंजन",
+ letters: "ध",
+ letter: "ध",
+ word: "दूध",
+ image: getAssetUrl(s3Assets.दूधImg),
+ audio: getAssetAudioUrl(s3Assets.दूधAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.दूधAudio),
+ },
+ ],
+ },
+ {
+ letter: "न",
+ items: [
+ {
+ id: 61,
+ title: "व्यंजन",
+ letters: "न",
+ letter: "न",
+ word: "नल",
+ image: getAssetUrl(s3Assets.नलImg),
+ audio: getAssetAudioUrl(s3Assets.नलAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.नलAudio),
+ },
+ {
+ id: 62,
+ title: "व्यंजन",
+ letters: "न",
+ letter: "न",
+ word: "जानवर",
+ image: getAssetUrl(s3Assets.जानवरImg),
+ audio: getAssetAudioUrl(s3Assets.जानवरAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.जानवरAudio),
+ },
+ {
+ id: 63,
+ title: "व्यंजन",
+ letters: "न",
+ letter: "न",
+ word: "बहन",
+ image: getAssetUrl(s3Assets.बहनImg),
+ audio: getAssetAudioUrl(s3Assets.बहनAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.बहनAudio),
+ },
+ ],
+ },
+ {
+ letter: "प",
+ items: [
+ {
+ id: 64,
+ title: "व्यंजन",
+ letters: "प",
+ letter: "प",
+ word: "पतंग",
+ image: getAssetUrl(s3Assets.पतंगImg),
+ audio: getAssetAudioUrl(s3Assets.पतंगAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.पतंगAudio),
+ },
+ {
+ id: 65,
+ title: "व्यंजन",
+ letters: "प",
+ letter: "प",
+ word: "कपड़े",
+ image: getAssetUrl(s3Assets.कपड़ेImg),
+ audio: getAssetAudioUrl(s3Assets.कपड़ेAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.कपड़ेAudio),
+ },
+ {
+ id: 66,
+ title: "व्यंजन",
+ letters: "प",
+ letter: "प",
+ word: "साँप",
+ image: getAssetUrl(s3Assets.साँपImg),
+ audio: getAssetAudioUrl(s3Assets.साँपAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.साँपAudio),
+ },
+ ],
+ },
+ {
+ letter: "फ",
+ items: [
+ {
+ id: 67,
+ title: "व्यंजन",
+ letters: "फ",
+ letter: "फ",
+ word: "फल",
+ image: getAssetUrl(s3Assets.फलImg),
+ audio: getAssetAudioUrl(s3Assets.फलAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.फलAudio),
+ },
+ {
+ id: 68,
+ title: "व्यंजन",
+ letters: "फ",
+ letter: "फ",
+ word: "बर्फ",
+ image: getAssetUrl(s3Assets.बर्फImg),
+ audio: getAssetAudioUrl(s3Assets.बर्फAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.बर्फAudio),
+ },
+ ],
+ },
+ {
+ letter: "ब",
+ items: [
+ {
+ id: 69,
+ title: "व्यंजन",
+ letters: "ब",
+ letter: "ब",
+ word: "बतख",
+ image: getAssetUrl(s3Assets.बतखImg),
+ audio: getAssetAudioUrl(s3Assets.बतखAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.बतखAudio),
+ },
+ {
+ id: 70,
+ title: "व्यंजन",
+ letters: "ब",
+ letter: "ब",
+ word: "सुबह",
+ image: getAssetUrl(s3Assets.सुबहImg),
+ audio: getAssetAudioUrl(s3Assets.सुबहAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.सुबहAudio),
+ },
+ {
+ id: 71,
+ title: "व्यंजन",
+ letters: "ब",
+ letter: "ब",
+ word: "सेब",
+ image: getAssetUrl(s3Assets.सेबImg),
+ audio: getAssetAudioUrl(s3Assets.सेबAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.सेबAudio),
+ },
+ ],
+ },
+ {
+ letter: "भ",
+ items: [
+ {
+ id: 72,
+ title: "व्यंजन",
+ letters: "भ",
+ letter: "भ",
+ word: "भय",
+ image: getAssetUrl(s3Assets.भयImg),
+ audio: getAssetAudioUrl(s3Assets.भयAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.भयAudio),
+ },
+ {
+ id: 73,
+ title: "व्यंजन",
+ letters: "भ",
+ letter: "भ",
+ word: "अनुभव",
+ image: getAssetUrl(s3Assets.अनुभवImg),
+ audio: getAssetAudioUrl(s3Assets.अनुभवAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.अनुभवAudio),
+ },
+ {
+ id: 74,
+ title: "व्यंजन",
+ letters: "भ",
+ letter: "भ",
+ word: "नभ",
+ image: getAssetUrl(s3Assets.नभImg),
+ audio: getAssetAudioUrl(s3Assets.नभAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.नभAudio),
+ },
+ ],
+ },
+ {
+ letter: "म",
+ items: [
+ {
+ id: 75,
+ title: "व्यंजन",
+ letters: "म",
+ letter: "म",
+ word: "मछली",
+ image: getAssetUrl(s3Assets.मछलीImg),
+ audio: getAssetAudioUrl(s3Assets.मछलीAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.मछलीAudio),
+ },
+ {
+ id: 76,
+ title: "व्यंजन",
+ letters: "म",
+ letter: "म",
+ word: "गमला",
+ image: getAssetUrl(s3Assets.गमलाImg),
+ audio: getAssetAudioUrl(s3Assets.गमलाAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.गमलाAudio),
+ },
+ {
+ id: 77,
+ title: "व्यंजन",
+ letters: "म",
+ letter: "म",
+ word: "कदम",
+ image: getAssetUrl(s3Assets.कदमImg),
+ audio: getAssetAudioUrl(s3Assets.कदमAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.कदमAudio),
+ },
+ ],
+ },
+ {
+ letter: "य",
+ items: [
+ {
+ id: 78,
+ title: "व्यंजन",
+ letters: "य",
+ letter: "य",
+ word: "यह",
+ image: getAssetUrl(s3Assets.यहImg),
+ audio: getAssetAudioUrl(s3Assets.यहAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.यहAudio),
+ },
+ {
+ id: 79,
+ title: "व्यंजन",
+ letters: "य",
+ letter: "य",
+ word: "पायल",
+ image: getAssetUrl(s3Assets.पायलImg),
+ audio: getAssetAudioUrl(s3Assets.पायलAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.पायलAudio),
+ },
+ {
+ id: 80,
+ title: "व्यंजन",
+ letters: "य",
+ letter: "य",
+ word: "गाय",
+ image: getAssetUrl(s3Assets.गायImg),
+ audio: getAssetAudioUrl(s3Assets.गायAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.गायAudio),
+ },
+ ],
+ },
+ {
+ letter: "र",
+ items: [
+ {
+ id: 81,
+ title: "व्यंजन",
+ letters: "र",
+ letter: "र",
+ word: "रथ",
+ image: getAssetUrl(s3Assets.रथImg),
+ audio: getAssetAudioUrl(s3Assets.रथAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.रथAudio),
+ },
+ {
+ id: 82,
+ title: "व्यंजन",
+ letters: "र",
+ letter: "र",
+ word: "भारत",
+ image: getAssetUrl(s3Assets.भारतImg),
+ audio: getAssetAudioUrl(s3Assets.भारतAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.भारतAudio),
+ },
+ {
+ id: 83,
+ title: "व्यंजन",
+ letters: "र",
+ letter: "र",
+ word: "चार",
+ image: getAssetUrl(s3Assets.चारImg),
+ audio: getAssetAudioUrl(s3Assets.चारAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.चारAudio),
+ },
+ ],
+ },
+ {
+ letter: "ल",
+ items: [
+ {
+ id: 84,
+ title: "व्यंजन",
+ letters: "ल",
+ letter: "ल",
+ word: "लड़का",
+ image: getAssetUrl(s3Assets.लड़काImg),
+ audio: getAssetAudioUrl(s3Assets.लड़काAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.लड़काAudio),
+ },
+ {
+ id: 85,
+ title: "व्यंजन",
+ letters: "ल",
+ letter: "ल",
+ word: "चलना",
+ image: getAssetUrl(s3Assets.चलनाImg),
+ audio: getAssetAudioUrl(s3Assets.चलनाAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.चलनाAudio),
+ },
+ {
+ id: 86,
+ title: "व्यंजन",
+ letters: "ल",
+ letter: "ल",
+ word: "बाल",
+ image: getAssetUrl(s3Assets.बालImg),
+ audio: getAssetAudioUrl(s3Assets.बालAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.बालAudio),
+ },
+ ],
+ },
+ {
+ letter: "व",
+ items: [
+ {
+ id: 87,
+ title: "व्यंजन",
+ letters: "व",
+ letter: "व",
+ word: "वन",
+ image: getAssetUrl(s3Assets.वनImg),
+ audio: getAssetAudioUrl(s3Assets.वनAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.वनAudio),
+ },
+ {
+ id: 88,
+ title: "व्यंजन",
+ letters: "व",
+ letter: "व",
+ word: "चावल",
+ image: getAssetUrl(s3Assets.चावलImg),
+ audio: getAssetAudioUrl(s3Assets.चावलAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.चावलAudio),
+ },
+ {
+ id: 89,
+ title: "व्यंजन",
+ letters: "व",
+ letter: "व",
+ word: "नाव",
+ image: getAssetUrl(s3Assets.नावImg),
+ audio: getAssetAudioUrl(s3Assets.नावAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.नावAudio),
+ },
+ ],
+ },
+ {
+ letter: "श",
+ items: [
+ {
+ id: 90,
+ title: "व्यंजन",
+ letters: "श",
+ letter: "श",
+ word: "शहर",
+ image: getAssetUrl(s3Assets.शहरImg),
+ audio: getAssetAudioUrl(s3Assets.शहरAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.शहरAudio),
+ },
+ {
+ id: 91,
+ title: "व्यंजन",
+ letters: "श",
+ letter: "श",
+ word: "बारिश",
+ image: getAssetUrl(s3Assets.बारिशImg),
+ audio: getAssetAudioUrl(s3Assets.बारिशAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.बारिशAudio),
+ },
+ ],
+ },
+ {
+ letter: "ष",
+ items: [
+ {
+ id: 92,
+ title: "व्यंजन",
+ letters: "ष",
+ letter: "ष",
+ word: "षट्कोण",
+ image: getAssetUrl(s3Assets.षट्कोणImg),
+ audio: getAssetAudioUrl(s3Assets.षट्कोणAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.षट्कोणAudio),
+ },
+ {
+ id: 93,
+ title: "व्यंजन",
+ letters: "ष",
+ letter: "ष",
+ word: "विषय",
+ image: getAssetUrl(s3Assets.विषयImg),
+ audio: getAssetAudioUrl(s3Assets.विषयAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.विषयAudio),
+ },
+ {
+ id: 94,
+ title: "व्यंजन",
+ letters: "ष",
+ letter: "ष",
+ word: "धनुष",
+ image: getAssetUrl(s3Assets.धनुषImg),
+ audio: getAssetAudioUrl(s3Assets.धनुषAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.धनुषAudio),
+ },
+ ],
+ },
+ {
+ letter: "स",
+ items: [
+ {
+ id: 95,
+ title: "व्यंजन",
+ letters: "स",
+ letter: "स",
+ word: "समय",
+ image: getAssetUrl(s3Assets.समयImg),
+ audio: getAssetAudioUrl(s3Assets.समयAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.समयAudio),
+ },
+ {
+ id: 96,
+ title: "व्यंजन",
+ letters: "स",
+ letter: "स",
+ word: "आसमान",
+ image: getAssetUrl(s3Assets.आसमानImg),
+ audio: getAssetAudioUrl(s3Assets.आसमानAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.आसमानAudio),
+ },
+ {
+ id: 97,
+ title: "व्यंजन",
+ letters: "स",
+ letter: "स",
+ word: "घास",
+ image: getAssetUrl(s3Assets.घासImg),
+ audio: getAssetAudioUrl(s3Assets.घासAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.घासAudio),
+ },
+ ],
+ },
+ {
+ letter: "ह",
+ items: [
+ {
+ id: 98,
+ title: "व्यंजन",
+ letters: "ह",
+ letter: "ह",
+ word: "हाथी",
+ image: getAssetUrl(s3Assets.हाथीImg),
+ audio: getAssetAudioUrl(s3Assets.हाथीAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.हाथीAudio),
+ },
+ {
+ id: 99,
+ title: "व्यंजन",
+ letters: "ह",
+ letter: "ह",
+ word: "बाहर",
+ image: getAssetUrl(s3Assets.बाहरImg),
+ audio: getAssetAudioUrl(s3Assets.बाहरAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.बाहरAudio),
+ },
+ {
+ id: 100,
+ title: "व्यंजन",
+ letters: "ह",
+ letter: "ह",
+ word: "मुँह",
+ image: getAssetUrl(s3Assets.मुँहImg),
+ audio: getAssetAudioUrl(s3Assets.मुँहAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.मुँहAudio),
+ },
+ ],
+ },
+ {
+ letter: "क्ष",
+ items: [
+ {
+ id: 101,
+ title: "व्यंजन",
+ letters: "क्ष",
+ letter: "क्ष",
+ word: "क्षत्रिय",
+ image: getAssetUrl(s3Assets.क्षत्रियImg),
+ audio: getAssetAudioUrl(s3Assets.क्षत्रियAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.क्षत्रियAudio),
+ },
+ {
+ id: 102,
+ title: "व्यंजन",
+ letters: "क्ष",
+ letter: "क्ष",
+ word: "अक्षर",
+ image: getAssetUrl(s3Assets.अक्षरImg),
+ audio: getAssetAudioUrl(s3Assets.अक्षरAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.अक्षरAudio),
+ },
+ ],
+ },
+ {
+ letter: "त्र",
+ items: [
+ {
+ id: 103,
+ title: "व्यंजन",
+ letters: "त्र",
+ letter: "त्र",
+ word: "त्रिशूल",
+ image: getAssetUrl(s3Assets.त्रिशूलImg),
+ audio: getAssetAudioUrl(s3Assets.त्रिशूलAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.त्रिशूलAudio),
+ },
+ {
+ id: 104,
+ title: "व्यंजन",
+ letters: "त्र",
+ letter: "त्र",
+ word: "चित्र",
+ image: getAssetUrl(s3Assets.चित्रImg),
+ audio: getAssetAudioUrl(s3Assets.चित्रAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.चित्रAudio),
+ },
+ ],
+ },
+ {
+ letter: "ज्ञ",
+ items: [
+ {
+ id: 105,
+ title: "व्यंजन",
+ letters: "ज्ञ",
+ letter: "ज्ञ",
+ word: "ज्ञानी",
+ image: getAssetUrl(s3Assets.ज्ञानीImg),
+ audio: getAssetAudioUrl(s3Assets.ज्ञानीAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.ज्ञानीAudio),
+ },
+ ],
+ },
+];
+
+const dataTe = [
+ {
+ letter: "అ",
+ items: [
+ {
+ id: 1,
+ title: "అచ్చులు",
+ letters: "అ",
+ letter: "అ",
+ word: "అల",
+ image: getAssetUrl(s3Assets.అలImg),
+ audio: getAssetAudioUrl(s3Assets.అలAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.అలAudio),
+ },
+ ],
+ },
+ {
+ letter: "ఆ",
+ items: [
+ {
+ id: 2,
+ title: "అచ్చులు",
+ letters: "ఆ",
+ letter: "ఆ",
+ word: "ఆట",
+ image: getAssetUrl(s3Assets.ఆటImg),
+ audio: getAssetAudioUrl(s3Assets.ఆటAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.ఆటAudio),
+ },
+ ],
+ },
+ {
+ letter: "ఇ",
+ items: [
+ {
+ id: 3,
+ title: "అచ్చులు",
+ letters: "ఇ",
+ letter: "ఇ",
+ word: "ఇల",
+ image: getAssetUrl(s3Assets.ఇలImg),
+ audio: getAssetAudioUrl(s3Assets.ఇలAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.ఇలAudio),
+ },
+ ],
+ },
+ {
+ letter: "ఈ",
+ items: [
+ {
+ id: 4,
+ title: "అచ్చులు",
+ letters: "ఈ",
+ letter: "ఈ",
+ word: "ఈగ",
+ image: getAssetUrl(s3Assets.ఈగImg),
+ audio: getAssetAudioUrl(s3Assets.ఈగAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.ఈగAudio),
+ },
+ ],
+ },
+ {
+ letter: "ఉ",
+ items: [
+ {
+ id: 5,
+ title: "అచ్చులు",
+ letters: "ఉ",
+ letter: "ఉ",
+ word: "ఉడుత",
+ image: getAssetUrl(s3Assets.ఉడుతImg),
+ audio: getAssetAudioUrl(s3Assets.ఉడుతAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.ఉడుతAudio),
+ },
+ ],
+ },
+ {
+ letter: "ఊ",
+ items: [
+ {
+ id: 6,
+ title: "అచ్చులు",
+ letters: "ఊ",
+ letter: "ఊ",
+ word: "ఊయల",
+ image: getAssetUrl(s3Assets.ఊయలImg),
+ audio: getAssetAudioUrl(s3Assets.ఊయలAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.ఊయలAudio),
+ },
+ ],
+ },
+ {
+ letter: "ఋ",
+ items: [
+ {
+ id: 7,
+ title: "అచ్చులు",
+ letters: "ఋ",
+ letter: "ఋ",
+ word: "ఋషి",
+ image: getAssetUrl(s3Assets.ఋషిImg),
+ audio: getAssetAudioUrl(s3Assets.ఋషిAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.ఋషిAudio),
+ },
+ ],
+ },
+ {
+ letter: "ౠ",
+ items: [
+ {
+ id: 8,
+ title: "అచ్చులు",
+ letters: "ౠ",
+ letter: "ౠ",
+ word: "ౠక",
+ image: getAssetUrl(s3Assets.ౠకImg),
+ audio: getAssetAudioUrl(s3Assets.ౠకAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.ౠకAudio),
+ },
+ ],
+ },
+ {
+ letter: "ఎ",
+ items: [
+ {
+ id: 9,
+ title: "అచ్చులు",
+ letters: "ఎ",
+ letter: "ఎ",
+ word: "ఎలుక",
+ image: getAssetUrl(s3Assets.ఎలుకImg),
+ audio: getAssetAudioUrl(s3Assets.ఎలుకAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.ఎలుకAudio),
+ },
+ ],
+ },
+ {
+ letter: "ఏ",
+ items: [
+ {
+ id: 10,
+ title: "అచ్చులు",
+ letters: "ఏ",
+ letter: "ఏ",
+ word: "ఏనుగు",
+ image: getAssetUrl(s3Assets.ఏనుగుImg),
+ audio: getAssetAudioUrl(s3Assets.ఏనుగుAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.ఏనుగుAudio),
+ },
+ ],
+ },
+ {
+ letter: "ఐ",
+ items: [
+ {
+ id: 11,
+ title: "అచ్చులు",
+ letters: "ఐ",
+ letter: "ఐ",
+ word: "ఐదు",
+ image: getAssetUrl(s3Assets.ఐదుImg),
+ audio: getAssetAudioUrl(s3Assets.ఐదుAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.ఐదుAudio),
+ },
+ ],
+ },
+ {
+ letter: "ఒ",
+ items: [
+ {
+ id: 12,
+ title: "అచ్చులు",
+ letters: "ఒ",
+ letter: "ఒ",
+ word: "ఒక",
+ image: getAssetUrl(s3Assets.ఒకImg),
+ audio: getAssetAudioUrl(s3Assets.ఒకAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.ఒకAudio),
+ },
+ ],
+ },
+ {
+ letter: "ఓ",
+ items: [
+ {
+ id: 13,
+ title: "అచ్చులు",
+ letters: "ఓ",
+ letter: "ఓ",
+ word: "ఓడ",
+ image: getAssetUrl(s3Assets.ఓడImg),
+ audio: getAssetAudioUrl(s3Assets.ఓడAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.ఓడAudio),
+ },
+ ],
+ },
+ {
+ letter: "ఔ",
+ items: [
+ {
+ id: 14,
+ title: "అచ్చులు",
+ letters: "ఔ",
+ letter: "ఔ",
+ word: "ఔషధం",
+ image: getAssetUrl(s3Assets.ఔషధంImg),
+ audio: getAssetAudioUrl(s3Assets.ఔషధంAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.ఔషధంAudio),
+ },
+ ],
+ },
+ {
+ letter: "అం",
+ items: [
+ {
+ id: 15,
+ title: "అచ్చులు",
+ letters: "అం",
+ letter: "అం",
+ word: "అంగడి",
+ image: getAssetUrl(s3Assets.అంగడిImg),
+ audio: getAssetAudioUrl(s3Assets.అంగడిAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.అంగడిAudio),
+ },
+ ],
+ },
+ {
+ letter: "క",
+ items: [
+ {
+ id: 16,
+ title: "హల్లులు",
+ letters: "క",
+ letter: "క",
+ word: "కల",
+ image: getAssetUrl(s3Assets.కలImg),
+ audio: getAssetAudioUrl(s3Assets.కలAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.కలAudio),
+ },
+ {
+ id: 17,
+ title: "హల్లులు",
+ letters: "క",
+ letter: "క",
+ word: "ఆకలి",
+ image: getAssetUrl(s3Assets.ఆకలిImg),
+ audio: getAssetAudioUrl(s3Assets.ఆకలిAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.ఆకలిAudio),
+ },
+ {
+ id: 18,
+ title: "హల్లులు",
+ letters: "క",
+ letter: "క",
+ word: "చిలుక",
+ image: getAssetUrl(s3Assets.చిలుకImg),
+ audio: getAssetAudioUrl(s3Assets.చిలుకAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.చిలుకAudio),
+ },
+ ],
+ },
+ {
+ letter: "ఖ",
+ items: [
+ {
+ id: 19,
+ title: "హల్లులు",
+ letters: "ఖ",
+ letter: "ఖ",
+ word: "ఖరం",
+ image: getAssetUrl(s3Assets.ఖరంImg),
+ audio: getAssetAudioUrl(s3Assets.ఖరంAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.ఖరంAudio),
+ },
+ ],
+ },
+ {
+ letter: "గ",
+ items: [
+ {
+ id: 20,
+ title: "హల్లులు",
+ letters: "గ",
+ letter: "గ",
+ word: "గద",
+ image: getAssetUrl(s3Assets.గదImg),
+ audio: getAssetAudioUrl(s3Assets.గదAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.గదAudio),
+ },
+ {
+ id: 21,
+ title: "హల్లులు",
+ letters: "గ",
+ letter: "గ",
+ word: "ఉంగరం",
+ image: getAssetUrl(s3Assets.ఉంగరంImg),
+ audio: getAssetAudioUrl(s3Assets.ఉంగరంAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.ఉంగరంAudio),
+ },
+ {
+ id: 22,
+ title: "హల్లులు",
+ letters: "గ",
+ letter: "గ",
+ word: "పండుగ",
+ image: getAssetUrl(s3Assets.పండుగImg),
+ audio: getAssetAudioUrl(s3Assets.పండుగAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.పండుగAudio),
+ },
+ ],
+ },
+ {
+ letter: "ఘ",
+ items: [
+ {
+ id: 23,
+ title: "హల్లులు",
+ letters: "ఘ",
+ letter: "ఘ",
+ word: "ఘటం",
+ image: getAssetUrl(s3Assets.ఘటంImg),
+ audio: getAssetAudioUrl(s3Assets.ఘటంAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.ఘటంAudio),
+ },
+ {
+ id: 24,
+ title: "హల్లులు",
+ letters: "ఘ",
+ letter: "ఘ",
+ word: "మేఘం",
+ image: getAssetUrl(s3Assets.మేఘంImg),
+ audio: getAssetAudioUrl(s3Assets.మేఘంAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.మేఘంAudio),
+ },
+ ],
+ },
+ {
+ letter: "చ",
+ items: [
+ {
+ id: 25,
+ title: "హల్లులు",
+ letters: "చ",
+ letter: "చ",
+ word: "చరకా",
+ image: getAssetUrl(s3Assets.చరకాImg),
+ audio: getAssetAudioUrl(s3Assets.చరకాAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.చరకాAudio),
+ },
+ {
+ id: 26,
+ title: "హల్లులు",
+ letters: "చ",
+ letter: "చ",
+ word: "రచన",
+ image: getAssetUrl(s3Assets.రచనImg),
+ audio: getAssetAudioUrl(s3Assets.రచనAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.రచనAudio),
+ },
+ {
+ id: 27,
+ title: "హల్లులు",
+ letters: "చ",
+ letter: "చ",
+ word: "కిచకిచ",
+ image: getAssetUrl(s3Assets.కిచకిచImg),
+ audio: getAssetAudioUrl(s3Assets.కిచకిచAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.కిచకిచAudio),
+ },
+ ],
+ },
+ {
+ letter: "ఛ",
+ items: [
+ {
+ id: 28,
+ title: "హల్లులు",
+ letters: "ఛ",
+ letter: "ఛ",
+ word: "ఛత్రము",
+ image: getAssetUrl(s3Assets.ఛత్రముImg),
+ audio: getAssetAudioUrl(s3Assets.ఛత్రముAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.ఛత్రముAudio),
+ },
+ ],
+ },
+ {
+ letter: "జ",
+ items: [
+ {
+ id: 29,
+ title: "హల్లులు",
+ letters: "జ",
+ letter: "జ",
+ word: "జడ",
+ image: getAssetUrl(s3Assets.జడImg),
+ audio: getAssetAudioUrl(s3Assets.జడAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.జడAudio),
+ },
+ {
+ id: 30,
+ title: "హల్లులు",
+ letters: "జ",
+ letter: "జ",
+ word: "కంజర",
+ image: getAssetUrl(s3Assets.కంజరImg),
+ audio: getAssetAudioUrl(s3Assets.కంజరAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.కంజరAudio),
+ },
+ {
+ id: 31,
+ title: "హల్లులు",
+ letters: "జ",
+ letter: "జ",
+ word: "జలజ",
+ image: getAssetUrl(s3Assets.జలజImg),
+ audio: getAssetAudioUrl(s3Assets.జలజAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.జలజAudio),
+ },
+ ],
+ },
+ {
+ letter: "ఝ",
+ items: [
+ {
+ id: 32,
+ title: "హల్లులు",
+ letters: "ఝ",
+ letter: "ఝ",
+ word: "ఝషం",
+ image: getAssetUrl(s3Assets.ఝషంImg),
+ audio: getAssetAudioUrl(s3Assets.ఝషంAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.ఝషంAudio),
+ },
+ ],
+ },
+ {
+ letter: "ట",
+ items: [
+ {
+ id: 33,
+ title: "హల్లులు",
+ letters: "ట",
+ letter: "ట",
+ word: "టమాట",
+ image: getAssetUrl(s3Assets.టమాటImg),
+ audio: getAssetAudioUrl(s3Assets.టమాటAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.టమాటAudio),
+ },
+ {
+ id: 34,
+ title: "హల్లులు",
+ letters: "ట",
+ letter: "ట",
+ word: "నాటకం",
+ image: getAssetUrl(s3Assets.నాటకంImg),
+ audio: getAssetAudioUrl(s3Assets.నాటకంAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.నాటకంAudio),
+ },
+ {
+ id: 35,
+ title: "హల్లులు",
+ letters: "ట",
+ letter: "ట",
+ word: "తోట",
+ image: getAssetUrl(s3Assets.తోటImg),
+ audio: getAssetAudioUrl(s3Assets.తోటAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.తోటAudio),
+ },
+ ],
+ },
+ {
+ letter: "ఠ",
+ items: [
+ {
+ id: 36,
+ title: "హల్లులు",
+ letters: "ఠ",
+ letter: "ఠ",
+ word: "పాఠశాల",
+ image: getAssetUrl(s3Assets.పాఠశాలImg),
+ audio: getAssetAudioUrl(s3Assets.పాఠశాలAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.పాఠశాలAudio),
+ },
+ {
+ id: 37,
+ title: "హల్లులు",
+ letters: "ఠ",
+ letter: "ఠ",
+ word: "పాఠం",
+ image: getAssetUrl(s3Assets.పాఠంImg),
+ audio: getAssetAudioUrl(s3Assets.పాఠంAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.పాఠంAudio),
+ },
+ ],
+ },
+ {
+ letter: "డ",
+ items: [
+ {
+ id: 38,
+ title: "హల్లులు",
+ letters: "డ",
+ letter: "డ",
+ word: "డబ్బా",
+ image: getAssetUrl(s3Assets.డబ్బాImg),
+ audio: getAssetAudioUrl(s3Assets.డబ్బాAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.డబ్బాAudio),
+ },
+ {
+ id: 39,
+ title: "హల్లులు",
+ letters: "డ",
+ letter: "డ",
+ word: "అడవి",
+ image: getAssetUrl(s3Assets.అడవిImg),
+ audio: getAssetAudioUrl(s3Assets.అడవిAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.అడవిAudio),
+ },
+ {
+ id: 40,
+ title: "హల్లులు",
+ letters: "డ",
+ letter: "డ",
+ word: "బండ",
+ image: getAssetUrl(s3Assets.బండImg),
+ audio: getAssetAudioUrl(s3Assets.బండAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.బండAudio),
+ },
+ ],
+ },
+ {
+ letter: "ఢ",
+ items: [
+ {
+ id: 41,
+ title: "హల్లులు",
+ letters: "ఢ",
+ letter: "ఢ",
+ word: "ఢమఢమ",
+ image: getAssetUrl(s3Assets.ఢమఢమImg),
+ audio: getAssetAudioUrl(s3Assets.ఢమఢమAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.ఢమఢమAudio),
+ },
+ ],
+ },
+ {
+ letter: "ణ",
+ items: [
+ {
+ id: 42,
+ title: "హల్లులు",
+ letters: "ణ",
+ letter: "ణ",
+ word: "గణపతి",
+ image: getAssetUrl(s3Assets.గణపతిImg),
+ audio: getAssetAudioUrl(s3Assets.గణపతిAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.గణపతిAudio),
+ },
+ {
+ id: 43,
+ title: "హల్లులు",
+ letters: "ణ",
+ letter: "ణ",
+ word: "వీణ",
+ image: getAssetUrl(s3Assets.వీణImg),
+ audio: getAssetAudioUrl(s3Assets.వీణAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.వీణAudio),
+ },
+ ],
+ },
+ {
+ letter: "త",
+ items: [
+ {
+ id: 44,
+ title: "హల్లులు",
+ letters: "త",
+ letter: "త",
+ word: "తల",
+ image: getAssetUrl(s3Assets.తలImg),
+ audio: getAssetAudioUrl(s3Assets.తలAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.తలAudio),
+ },
+ {
+ id: 45,
+ title: "హల్లులు",
+ letters: "త",
+ letter: "త",
+ word: "జాతర",
+ image: getAssetUrl(s3Assets.జాతరImg),
+ audio: getAssetAudioUrl(s3Assets.జాతరAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.జాతరAudio),
+ },
+ {
+ id: 46,
+ title: "హల్లులు",
+ letters: "త",
+ letter: "త",
+ word: "ఈత",
+ image: getAssetUrl(s3Assets.ఈతImg),
+ audio: getAssetAudioUrl(s3Assets.ఈతAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.ఈతAudio),
+ },
+ ],
+ },
+ {
+ letter: "థ",
+ items: [
+ {
+ id: 47,
+ title: "హల్లులు",
+ letters: "థ",
+ letter: "థ",
+ word: "థర్మోస్",
+ image: getAssetUrl(s3Assets.థర్మోస్Img),
+ audio: getAssetAudioUrl(s3Assets.థర్మోస్Audio),
+ singleAudio: getAssetAudioUrl(s3Assets.థర్మోస్Audio),
+ },
+ {
+ id: 48,
+ title: "హల్లులు",
+ letters: "థ",
+ letter: "థ",
+ word: "రథము",
+ image: getAssetUrl(s3Assets.రథముImg),
+ audio: getAssetAudioUrl(s3Assets.రథముAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.రథముAudio),
+ },
+ {
+ id: 49,
+ title: "హల్లులు",
+ letters: "థ",
+ letter: "థ",
+ word: "కథ",
+ image: getAssetUrl(s3Assets.కథImg),
+ audio: getAssetAudioUrl(s3Assets.కథAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.కథAudio),
+ },
+ ],
+ },
+ {
+ letter: "ద",
+ items: [
+ {
+ id: 50,
+ title: "హల్లులు",
+ letters: "ద",
+ letter: "ద",
+ word: "దవడ",
+ image: getAssetUrl(s3Assets.దవడImg),
+ audio: getAssetAudioUrl(s3Assets.దవడAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.దవడAudio),
+ },
+ {
+ id: 51,
+ title: "హల్లులు",
+ letters: "ద",
+ letter: "ద",
+ word: "ఉదయం",
+ image: getAssetUrl(s3Assets.ఉదయంImg),
+ audio: getAssetAudioUrl(s3Assets.ఉదయంAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.ఉదయంAudio),
+ },
+ {
+ id: 52,
+ title: "హల్లులు",
+ letters: "ద",
+ letter: "ద",
+ word: "కింద",
+ image: getAssetUrl(s3Assets.కిందImg),
+ audio: getAssetAudioUrl(s3Assets.కిందAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.కిందAudio),
+ },
+ ],
+ },
+ {
+ letter: "ధ",
+ items: [
+ {
+ id: 53,
+ title: "హల్లులు",
+ letters: "ధ",
+ letter: "ధ",
+ word: "ధనం",
+ image: getAssetUrl(s3Assets.ధనంImg),
+ audio: getAssetAudioUrl(s3Assets.ధనంAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.ధనంAudio),
+ },
+ {
+ id: 54,
+ title: "హల్లులు",
+ letters: "ధ",
+ letter: "ధ",
+ word: "బాధ",
+ image: getAssetUrl(s3Assets.బాధImg),
+ audio: getAssetAudioUrl(s3Assets.బాధAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.బాధAudio),
+ },
+ ],
+ },
+ {
+ letter: "న",
+ items: [
+ {
+ id: 55,
+ title: "హల్లులు",
+ letters: "న",
+ letter: "న",
+ word: "నగ",
+ image: getAssetUrl(s3Assets.నగImg),
+ audio: getAssetAudioUrl(s3Assets.నగAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.నగAudio),
+ },
+ {
+ id: 56,
+ title: "హల్లులు",
+ letters: "న",
+ letter: "న",
+ word: "అనప",
+ image: getAssetUrl(s3Assets.అనపImg),
+ audio: getAssetAudioUrl(s3Assets.అనపAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.అనపAudio),
+ },
+ {
+ id: 57,
+ title: "హల్లులు",
+ letters: "న",
+ letter: "న",
+ word: "వాన",
+ image: getAssetUrl(s3Assets.వానImg),
+ audio: getAssetAudioUrl(s3Assets.వానAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.వానAudio),
+ },
+ ],
+ },
+ {
+ letter: "ప",
+ items: [
+ {
+ id: 58,
+ title: "హల్లులు",
+ letters: "ప",
+ letter: "ప",
+ word: "పలక",
+ image: getAssetUrl(s3Assets.పలకImg),
+ audio: getAssetAudioUrl(s3Assets.పలకAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.పలకAudio),
+ },
+ {
+ id: 59,
+ title: "హల్లులు",
+ letters: "ప",
+ letter: "ప",
+ word: "చేపలు",
+ image: getAssetUrl(s3Assets.చేపలుImg),
+ audio: getAssetAudioUrl(s3Assets.చేపలుAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.చేపలుAudio),
+ },
+ {
+ id: 60,
+ title: "హల్లులు",
+ letters: "ప",
+ letter: "ప",
+ word: "పాప",
+ image: getAssetUrl(s3Assets.పాపImg),
+ audio: getAssetAudioUrl(s3Assets.పాపAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.పాపAudio),
+ },
+ ],
+ },
+ {
+ letter: "ఫ",
+ items: [
+ {
+ id: 61,
+ title: "హల్లులు",
+ letters: "ఫ",
+ letter: "ఫ",
+ word: "ఫలము",
+ image: getAssetUrl(s3Assets.ఫలముImg),
+ audio: getAssetAudioUrl(s3Assets.ఫలముAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.ఫలముAudio),
+ },
+ ],
+ },
+ {
+ letter: "బ",
+ items: [
+ {
+ id: 62,
+ title: "హల్లులు",
+ letters: "బ",
+ letter: "బ",
+ word: "బంతి",
+ image: getAssetUrl(s3Assets.బంతిImg),
+ audio: getAssetAudioUrl(s3Assets.బంతిAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.బంతిAudio),
+ },
+ {
+ id: 63,
+ title: "హల్లులు",
+ letters: "బ",
+ letter: "బ",
+ word: "తబల",
+ image: getAssetUrl(s3Assets.తబలImg),
+ audio: getAssetAudioUrl(s3Assets.తబలAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.తబలAudio),
+ },
+ ],
+ },
+ {
+ letter: "భ",
+ items: [
+ {
+ id: 64,
+ title: "హల్లులు",
+ letters: "భ",
+ letter: "భ",
+ word: "భవనం",
+ image: getAssetUrl(s3Assets.భవనంImg),
+ audio: getAssetAudioUrl(s3Assets.భవనంAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.భవనంAudio),
+ },
+ {
+ id: 65,
+ title: "హల్లులు",
+ letters: "భ",
+ letter: "భ",
+ word: "సభ",
+ image: getAssetUrl(s3Assets.సభImg),
+ audio: getAssetAudioUrl(s3Assets.సభAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.సభAudio),
+ },
+ ],
+ },
+ {
+ letter: "మ",
+ items: [
+ {
+ id: 66,
+ title: "హల్లులు",
+ letters: "మ",
+ letter: "మ",
+ word: "మర",
+ image: getAssetUrl(s3Assets.మరImg),
+ audio: getAssetAudioUrl(s3Assets.మరAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.మరAudio),
+ },
+ {
+ id: 67,
+ title: "హల్లులు",
+ letters: "మ",
+ letter: "మ",
+ word: "నెమలి",
+ image: getAssetUrl(s3Assets.నెమలిImg),
+ audio: getAssetAudioUrl(s3Assets.నెమలిAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.నెమలిAudio),
+ },
+ {
+ id: 68,
+ title: "హల్లులు",
+ letters: "మ",
+ letter: "మ",
+ word: "చీమ",
+ image: getAssetUrl(s3Assets.చీమImg),
+ audio: getAssetAudioUrl(s3Assets.చీమAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.చీమAudio),
+ },
+ ],
+ },
+ {
+ letter: "య",
+ items: [
+ {
+ id: 69,
+ title: "హల్లులు",
+ letters: "య",
+ letter: "య",
+ word: "యద",
+ image: getAssetUrl(s3Assets.యదImg),
+ audio: getAssetAudioUrl(s3Assets.యదAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.యదAudio),
+ },
+ {
+ id: 70,
+ title: "హల్లులు",
+ letters: "య",
+ letter: "య",
+ word: "కాయలు",
+ image: getAssetUrl(s3Assets.కాయలుImg),
+ audio: getAssetAudioUrl(s3Assets.కాయలుAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.కాయలుAudio),
+ },
+ {
+ id: 71,
+ title: "హల్లులు",
+ letters: "య",
+ letter: "య",
+ word: "వంకాయ",
+ image: getAssetUrl(s3Assets.వంకాయImg),
+ audio: getAssetAudioUrl(s3Assets.వంకాయAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.వంకాయAudio),
+ },
+ ],
+ },
+ {
+ letter: "ర",
+ items: [
+ {
+ id: 72,
+ title: "హల్లులు",
+ letters: "ర",
+ letter: "ర",
+ word: "రవి",
+ image: getAssetUrl(s3Assets.రవిImg),
+ audio: getAssetAudioUrl(s3Assets.రవిAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.రవిAudio),
+ },
+ {
+ id: 73,
+ title: "హల్లులు",
+ letters: "ర",
+ letter: "ర",
+ word: "గిరక",
+ image: getAssetUrl(s3Assets.గిరకImg),
+ audio: getAssetAudioUrl(s3Assets.గిరకAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.గిరకAudio),
+ },
+ {
+ id: 74,
+ title: "హల్లులు",
+ letters: "ర",
+ letter: "ర",
+ word: "చీర",
+ image: getAssetUrl(s3Assets.చీరImg),
+ audio: getAssetAudioUrl(s3Assets.చీరAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.చీరAudio),
+ },
+ ],
+ },
+ {
+ letter: "ల",
+ items: [
+ {
+ id: 75,
+ title: "హల్లులు",
+ letters: "ల",
+ letter: "ల",
+ word: "లత",
+ image: getAssetUrl(s3Assets.లతImg),
+ audio: getAssetAudioUrl(s3Assets.లతAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.లతAudio),
+ },
+ {
+ id: 76,
+ title: "హల్లులు",
+ letters: "ల",
+ letter: "ల",
+ word: "బలపం",
+ image: getAssetUrl(s3Assets.బలపంImg),
+ audio: getAssetAudioUrl(s3Assets.బలపంAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.బలపంAudio),
+ },
+ {
+ id: 77,
+ title: "హల్లులు",
+ letters: "ల",
+ letter: "ల",
+ word: "వెల",
+ image: getAssetUrl(s3Assets.వెలImg),
+ audio: getAssetAudioUrl(s3Assets.వెలAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.వెలAudio),
+ },
+ ],
+ },
+ {
+ letter: "వ",
+ items: [
+ {
+ id: 78,
+ title: "హల్లులు",
+ letters: "వ",
+ letter: "వ",
+ word: "వల",
+ image: getAssetUrl(s3Assets.వలImg),
+ audio: getAssetAudioUrl(s3Assets.వలAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.వలAudio),
+ },
+ {
+ id: 79,
+ title: "హల్లులు",
+ letters: "వ",
+ letter: "వ",
+ word: "లవణం",
+ image: getAssetUrl(s3Assets.లవణంImg),
+ audio: getAssetAudioUrl(s3Assets.లవణంAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.లవణంAudio),
+ },
+ {
+ id: 80,
+ title: "హల్లులు",
+ letters: "వ",
+ letter: "వ",
+ word: "పడవ",
+ image: getAssetUrl(s3Assets.పడవImg),
+ audio: getAssetAudioUrl(s3Assets.పడవAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.పడవAudio),
+ },
+ ],
+ },
+ {
+ letter: "శ",
+ items: [
+ {
+ id: 81,
+ title: "హల్లులు",
+ letters: "శ",
+ letter: "శ",
+ word: "శకటం",
+ image: getAssetUrl(s3Assets.శకటంImg),
+ audio: getAssetAudioUrl(s3Assets.శకటంAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.శకటంAudio),
+ },
+ {
+ id: 82,
+ title: "హల్లులు",
+ letters: "శ",
+ letter: "శ",
+ word: "దశమి",
+ image: getAssetUrl(s3Assets.దశమిImg),
+ audio: getAssetAudioUrl(s3Assets.దశమిAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.దశమిAudio),
+ },
+ {
+ id: 83,
+ title: "హల్లులు",
+ letters: "శ",
+ letter: "శ",
+ word: "దిశ",
+ image: getAssetUrl(s3Assets.దిశImg),
+ audio: getAssetAudioUrl(s3Assets.దిశAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.దిశAudio),
+ },
+ ],
+ },
+ {
+ letter: "ష",
+ items: [
+ {
+ id: 84,
+ title: "హల్లులు",
+ letters: "ష",
+ letter: "ష",
+ word: "షరాయి",
+ image: getAssetUrl(s3Assets.షరాయిImg),
+ audio: getAssetAudioUrl(s3Assets.షరాయిAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.షరాయిAudio),
+ },
+ {
+ id: 85,
+ title: "హల్లులు",
+ letters: "ష",
+ letter: "ష",
+ word: "ఉష",
+ image: getAssetUrl(s3Assets.ఉషImg),
+ audio: getAssetAudioUrl(s3Assets.ఉషAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.ఉషAudio),
+ },
+ ],
+ },
+ {
+ letter: "స",
+ items: [
+ {
+ id: 86,
+ title: "హల్లులు",
+ letters: "స",
+ letter: "స",
+ word: "సంత",
+ image: getAssetUrl(s3Assets.సంతImg),
+ audio: getAssetAudioUrl(s3Assets.సంతAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.సంతAudio),
+ },
+ {
+ id: 87,
+ title: "హల్లులు",
+ letters: "స",
+ letter: "స",
+ word: "దసరా",
+ image: getAssetUrl(s3Assets.దసరాImg),
+ audio: getAssetAudioUrl(s3Assets.దసరాAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.దసరాAudio),
+ },
+ {
+ id: 88,
+ title: "హల్లులు",
+ letters: "స",
+ letter: "స",
+ word: "పనస",
+ image: getAssetUrl(s3Assets.పనసImg),
+ audio: getAssetAudioUrl(s3Assets.పనసAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.పనసAudio),
+ },
+ ],
+ },
+ {
+ letter: "హ",
+ items: [
+ {
+ id: 89,
+ title: "హల్లులు",
+ letters: "హ",
+ letter: "హ",
+ word: "హంస",
+ image: getAssetUrl(s3Assets.హంసImg),
+ audio: getAssetAudioUrl(s3Assets.హంసAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.హంసAudio),
+ },
+ {
+ id: 90,
+ title: "హల్లులు",
+ letters: "హ",
+ letter: "హ",
+ word: "వాహనం",
+ image: getAssetUrl(s3Assets.వాహనంImg),
+ audio: getAssetAudioUrl(s3Assets.వాహనంAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.వాహనంAudio),
+ },
+ {
+ id: 91,
+ title: "హల్లులు",
+ letters: "హ",
+ letter: "హ",
+ word: "గుహ",
+ image: getAssetUrl(s3Assets.గుహImg),
+ audio: getAssetAudioUrl(s3Assets.గుహAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.గుహAudio),
+ },
+ ],
+ },
+ {
+ letter: "ళ",
+ items: [
+ {
+ id: 92,
+ title: "హల్లులు",
+ letters: "ళ",
+ letter: "ళ",
+ word: "తాళం",
+ image: getAssetUrl(s3Assets.తాళంImg),
+ audio: getAssetAudioUrl(s3Assets.తాళంAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.తాళంAudio),
+ },
+ {
+ id: 93,
+ title: "హల్లులు",
+ letters: "ళ",
+ letter: "ళ",
+ word: "కళ",
+ image: getAssetUrl(s3Assets.కళImg),
+ audio: getAssetAudioUrl(s3Assets.కళAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.కళAudio),
+ },
+ ],
+ },
+ {
+ letter: "క్ష",
+ items: [
+ {
+ id: 94,
+ title: "హల్లులు",
+ letters: "క్ష",
+ letter: "క్ష",
+ word: "క్షత్రియుడు",
+ image: getAssetUrl(s3Assets.క్షత్రియుడుImg),
+ audio: getAssetAudioUrl(s3Assets.క్షత్రియుడుAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.క్షత్రియుడుAudio),
+ },
+ {
+ id: 95,
+ title: "హల్లులు",
+ letters: "క్ష",
+ letter: "క్ష",
+ word: "అక్షరం",
+ image: getAssetUrl(s3Assets.అక్షరంImg),
+ audio: getAssetAudioUrl(s3Assets.అక్షరంAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.అక్షరంAudio),
+ },
+ {
+ id: 96,
+ title: "హల్లులు",
+ letters: "క్ష",
+ letter: "క్ష",
+ word: "పరీక్ష",
+ image: getAssetUrl(s3Assets.పరీక్షImg),
+ audio: getAssetAudioUrl(s3Assets.పరీక్షAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.పరీక్షAudio),
+ },
+ ],
+ },
+ {
+ letter: "ఱ",
+ items: [
+ {
+ id: 97,
+ title: "హల్లులు",
+ letters: "ఱ",
+ letter: "ఱ",
+ word: "ఱంపం",
+ image: getAssetUrl(s3Assets.ఱంపంImg),
+ audio: getAssetAudioUrl(s3Assets.ఱంపంAudio),
+ singleAudio: getAssetAudioUrl(s3Assets.ఱంపంAudio),
+ },
+ ],
+ },
+];
+
+const R0 = ({
+ setVoiceText,
+ setRecordedAudio,
+ setVoiceAnimate,
+ storyLine,
+ type,
+ handleNext,
+ background,
+ parentWords = "",
+ //enableNext,
+ showTimer,
+ points,
+ steps,
+ currentStep,
+ contentId,
+ contentType,
+ level,
+ isDiscover,
+ progressData,
+ showProgress,
+ playTeacherAudio = () => {},
+ callUpdateLearner,
+ disableScreen,
+ isShowCase,
+ handleBack, // This might be going to homepage
+ //setEnableNext,
+ loading,
+ setOpenMessageDialog,
+ audio,
+ currentImg,
+ vocabCount,
+ wordCount,
+ //isNextButtonCalled,
+ //setIsNextButtonCalled,
+}) => {
+ steps = 1;
+ const lang = getLocalData("lang");
+ let data;
+
+ if (lang === "en") {
+ data = dataEn;
+ } else if (lang === "hi") {
+ data = dataHi;
+ } else if (lang === "te") {
+ data = dataTe;
+ } else if (lang === "kn") {
+ data = dataKn;
+ } else {
+ data = dataEn; // fallback (English)
+ }
+
+ const generatePlaylist = (data) => {
+ const playlist = [];
+
+ for (let i = 0; i < data.length; i += 5) {
+ const block = data.slice(i, i + 5);
+
+ block.forEach((letterObj) => {
+ letterObj.items.forEach((item) => {
+ playlist.push({
+ type: "UI1",
+ item,
+ letter: letterObj.letter,
+ });
+ });
+ });
+
+ block.forEach((letterObj) => {
+ if (letterObj.items.length > 0) {
+ const firstItem = letterObj.items[0];
+ playlist.push({
+ type: "UI2",
+ item: firstItem,
+ letter: letterObj.letter,
+ });
+ }
+ });
+ }
+
+ return playlist;
+ };
+
+ const playlist = generatePlaylist(data);
+
+ const [currentIndex, setCurrentIndex] = useState(0);
+ const batchIndex = Math.floor(currentIndex / 10);
+ const stepInBatch = Math.floor((currentIndex % 10) / 5);
+ const itemIndex = batchIndex * 5 + (currentIndex % 5);
+ const item = playlist[currentIndex]?.item;
+ const prevItem = itemIndex > 0 ? data[itemIndex - 1] : null;
+ const blockStart = Math.floor(itemIndex / 5) * 5;
+ const currentLetter = item?.letter || "";
+ const [letters, setLetters] = useState([]);
+ const COLORS = ["#8BC34A", "#9C27B0", "#E91E63", "#03A9F4", "#FF9800"];
+ const [isRecordingComplete, setIsRecordingComplete] = useState(false);
+ const [recAudio, setRecAudio] = useState(null);
+ const [isNextButtonCalled, setIsNextButtonCalled] = useState(false);
+ const [enableNext, setEnableNext] = useState(false);
+ const current = playlist[currentIndex];
+ const navigate = useNavigate();
+ const [open, setOpen] = useState(false);
+
+ const audioRef = useRef(null);
+
+ const currentAudio =
+ playlist[currentIndex]?.type === "UI2"
+ ? null
+ : playlist[currentIndex]?.item?.audio || null;
+
+ const singleAudio = playlist[currentIndex]?.item?.singleAudio || null;
+
+ //console.log("letters", singleAudio);
+
+ const playAudio = (src) => {
+ if (!src) return;
+
+ if (audioRef.current) {
+ audioRef.current.pause();
+ audioRef.current.currentTime = 0;
+ }
+
+ audioRef.current = new Audio(src);
+ audioRef.current.play().catch((err) => {
+ console.log("Audio play error:", err);
+ });
+ };
+
+ useEffect(() => {
+ if (currentAudio) {
+ playAudio(currentAudio);
+ }
+ return () => {
+ if (audioRef.current) {
+ audioRef.current.pause();
+ audioRef.current = null;
+ }
+ };
+ }, [currentIndex]);
+
+ const currentUI = useMemo(() => {
+ return playlist[currentIndex]?.type;
+ }, [currentIndex, playlist]);
+
+ const handleNextWord = () => {
+ const currentLetter = playlist[currentIndex]?.item?.letter || "";
+
+ if (currentLetter && current.type === "UI1") {
+ setLetters((prev) =>
+ prev.includes(currentLetter) ? prev : [...prev, currentLetter]
+ );
+ }
+
+ console.log("datas", currentIndex, playlist.length);
+
+ if (currentIndex < playlist.length - 1) {
+ setCurrentIndex((i) => i + 1);
+ } else {
+ setLocalData("rStepZero", 1);
+ if (process.env.REACT_APP_IS_APP_IFRAME === "true") {
+ navigate("/");
+ } else {
+ navigate("/discover-start");
+ }
+ console.log("finished r0");
+ }
+ setRecAudio(null);
+ setIsNextButtonCalled(true);
+ setEnableNext(false);
+ };
+
+ const handlePreviousWord = () => {
+ if (currentIndex > 0) {
+ const currentLetter = playlist[currentIndex]?.item?.letter || "";
+ if (currentLetter && current.type === "UI1") {
+ setLetters((prev) => prev.filter((letter) => letter !== currentLetter));
+ }
+
+ setCurrentIndex((i) => i - 1);
+ setRecAudio(null);
+ setIsNextButtonCalled(false);
+ setEnableNext(false);
+ }
+ };
+
+ const handleBackNavigation = () => {
+ if (currentIndex > 0) {
+ handlePreviousWord();
+ } else {
+ if (handleBack) {
+ handleBack();
+ } else {
+ navigate(-1);
+ }
+ }
+ };
+
+ const handleRetry = () => {
+ console.log("audio playing!");
+ playAudio(currentAudio);
+ };
+
+ const updateStoredData = (audio, isCorrect) => {};
+
+ const handleRecordingComplete = (base64Data) => {
+ if (base64Data) {
+ setIsRecordingComplete(true);
+ setRecAudio(base64Data);
+ } else {
+ setIsRecordingComplete(false);
+ setRecAudio(null);
+ }
+ };
+
+ const handleStartRecording = () => {
+ setRecAudio(null);
+ };
+
+ const handleStopRecording = () => {
+ setRecAudio(true);
+ setLetters([]);
+ };
+
+ const navy = "#1c2752";
+ const red = "#C93128";
+ const pink = "#ea4c89";
+ const orange = "#f28b1d";
+ const blue = "#f28b1d";
+
+ const flowNames = [...new Set(data.map((item) => item.id))];
+
+ const renderUI = () => {
+ const cycleIndex = Math.floor(currentIndex / 20);
+ const positionInCycle = currentIndex % 20;
+
+ const current = playlist[currentIndex];
+ if (!current) return null;
+
+ //console.log('ui?', currentIndex, block, isUI1, letters);
+
+ const totalLetters = data.length;
+ const completedLetters = letters.length;
+
+ // Calculate total items in playlist
+ const totalItemsInPlaylist = playlist.length;
+
+ const completionPercentage =
+ totalLetters > 0
+ ? Math.round((completedLetters / totalLetters) * 100)
+ : 0;
+ const UI1 = () => {
+ //console.log("ui1", item, current);
+
+ const renderHighlightedWord = (word, targetLetter) => {
+ if (!word || !targetLetter) return word;
+
+ const lowerWord = word.toLowerCase();
+ const lowerTarget = targetLetter.toLowerCase();
+
+ const letterIndex = lowerWord.indexOf(lowerTarget);
+
+ if (letterIndex === -1) {
+ return word;
+ }
+
+ const before = word.substring(0, letterIndex);
+ const letter = word.substring(
+ letterIndex,
+ letterIndex + targetLetter.length
+ );
+ const after = word.substring(letterIndex + targetLetter.length);
+
+ return (
+ <>
+ {before}
+
+ {letter}
+
+ {after}
+ >
+ );
+ };
+
+ let TOTAL_ITEMS = 0;
+
+ if (lang === "en") {
+ TOTAL_ITEMS = 101;
+ } else if (lang === "hi") {
+ TOTAL_ITEMS = 151;
+ } else if (lang === "te") {
+ TOTAL_ITEMS = 146;
+ } else if (lang === "kn") {
+ TOTAL_ITEMS = 142;
+ } else {
+ TOTAL_ITEMS = 100; // fallback default
+ }
+
+ // FIXED: Use currentIndex + 1 instead of item?.id
+ const currentItemNumber = currentIndex + 1;
+ const completionPercentage = Math.round(
+ (currentItemNumber / TOTAL_ITEMS) * 100
+ );
+
+ return (
+
+
+ {/* Progress container - right side */}
+
+
+ {currentItemNumber}/{TOTAL_ITEMS}
+
+
+
+
+
+
+
+ {/* Title container - left side */}
+
+
+ {item.title}
+
+
+
+
+
+
+
+
+ {letters?.map((ch, i) => (
+
+
+
+ {ch}
+
+
+
+ ))}
+
+
+
+
+
+
+ {item.letters.length > 1 ? (
+ <>
+ {item.letters[0]}
+ {item.letters[1]}
+ {item.letters.slice(2)}
+ >
+ ) : (
+ {item.letters}
+ )}
+
+
+
+
+
+
+
+
+
+
+
+ {renderHighlightedWord(item.word, item.letter)}
+
+
+
+
+
+
+
+
+
+
+
+
+ {/* ➡️ Next button */}
+
+
+
+
+
+
+ );
+ };
+ const UI2 = () => {
+ //console.log("ui2");
+
+ let TOTAL_ITEMS = 0;
+ if (lang === "en") TOTAL_ITEMS = 101;
+ else if (lang === "kn") TOTAL_ITEMS = 142;
+ else if (lang === "hi") TOTAL_ITEMS = 151;
+ else if (lang === "te") TOTAL_ITEMS = 146;
+ else TOTAL_ITEMS = 100; // fallback
+ const currentItemNumber = currentIndex + 1;
+ const completionPercentage = Math.round(
+ (currentItemNumber / TOTAL_ITEMS) * 100
+ );
+
+ const renderHighlightedWord = (word, targetLetter) => {
+ if (!word || !targetLetter) return word;
+
+ const lowerWord = word.toLowerCase();
+ const lowerTarget = targetLetter.toLowerCase();
+
+ const letterIndex = lowerWord.indexOf(lowerTarget);
+
+ if (letterIndex === -1) {
+ return word;
+ }
+
+ const before = word.substring(0, letterIndex);
+ const letter = word.substring(
+ letterIndex,
+ letterIndex + targetLetter.length
+ );
+ const after = word.substring(letterIndex + targetLetter.length);
+
+ return (
+ <>
+ {before}
+
+ {letter}
+
+ {after}
+ >
+ );
+ };
+
+ return (
+
+
+
+
+ {currentItemNumber}/{TOTAL_ITEMS}
+
+
+
+
+
+
+
+
+
+
+ {renderHighlightedWord(item.word, item.letter)}
+
+
+
+ {recAudio && (
+
+
+
+ )}
+
+
+
+
+
+
+
+ );
+ };
+ if (current.type === "UI1") {
+ return UI1(current.item);
+ } else {
+ return UI2(current.item);
+ }
+ };
+
+ return (
+
+
+
setOpen(true)}
+ />
+
+ {/* Modal */}
+ {open && (
+
+
+ {/* Close Button */}
+
+
+ {/* YouTube Video */}
+
+
+
+ )}
+ {renderUI()}
+
+
+ );
+};
+
+export default R0;
diff --git a/src/RFlow/R1.jsx b/src/RFlow/R1.jsx
index af4bce5f..97469024 100644
--- a/src/RFlow/R1.jsx
+++ b/src/RFlow/R1.jsx
@@ -1,9 +1,6 @@
-import React, { useState, useEffect } from "react";
+import React, { useState, useEffect, useRef } from "react";
import Confetti from "react-confetti";
import * as Assets from "../utils/imageAudioLinks";
-import * as s3Assets from "../utils/s3Links";
-import { getAssetUrl } from "../utils/s3Links";
-import { getAssetAudioUrl } from "../utils/s3Links";
import {
ThemeProvider,
createTheme,
@@ -12,7 +9,7 @@ import {
Box,
} from "@mui/material";
import MainLayout from "../components/Layouts.jsx/MainLayout";
-import listenImg from "../assets/listen.png";
+import listenImg from "../assets/listen.svg";
// import Mic from "../assets/mikee.svg";
// import Stop from "../assets/pausse.svg";
import correctSound from "../assets/correct.wav";
@@ -24,2542 +21,629 @@ import {
NextButtonRound,
RetryIcon,
setLocalData,
+ sendTestRigScore,
} from "../utils/constants";
import { useNavigate } from "react-router-dom";
import { response } from "../services/telementryService";
+import { Typography, Stack, IconButton } from "@mui/material";
+import { ArrowLeft, ArrowRight, RotateCcw } from "lucide-react";
+import trainImg from "../assets/trainImg.svg";
+import { motion, AnimatePresence } from "framer-motion";
+import VoiceAnalyser from "../utils/VoiceAnalyser";
+import * as s3Assets from "../utils/rFlowS3Links";
+import { getAssetUrl } from "../utils/rFlowS3Links";
+import { getAssetAudioUrl } from "../utils/rFlowS3Links";
+import { updateLearnerProfile } from "../services/learnerAi/learnerAiService";
+import {
+ addLesson,
+ addPointer,
+ fetchUserPoints,
+ createLearnerProgress,
+} from "../services/orchestration/orchestrationService";
+import { fetchGetSetResult } from "../services/learnerAi/learnerAiService";
+import {
+ fetchAssessmentData,
+ fetchPaginatedContent,
+} from "../services/content/contentService";
+import hintimg from "../assets/hintsicon.svg";
const theme = createTheme();
-const levelData = {
- en: {
- L1: [
- {
- allwords: [
- { img: getAssetUrl(s3Assets.singR1), text: "Sing" },
- { img: getAssetUrl(s3Assets.hugR1), text: "Hug" },
- { img: getAssetUrl(s3Assets.flagR1), text: "Flag" },
- ],
- correctWord: "Sing",
- audio: getAssetAudioUrl(s3Assets.singR1Eng),
- flowName: "P1",
- },
- {
- allwords: [
- { img: getAssetUrl(s3Assets.rootsR1), text: "Roots" },
- { img: getAssetUrl(s3Assets.beltR1), text: "Belt" },
- { img: getAssetUrl(s3Assets.rainR1), text: "Rain" },
- ],
- correctWord: "Rain",
- audio: getAssetAudioUrl(s3Assets.rainR1Eng),
- flowName: "P2",
- },
- {
- allwords: [
- { img: getAssetUrl(s3Assets.sunR1), text: "Sun" },
- { img: getAssetUrl(s3Assets.pigR1), text: "Pig" },
- { img: getAssetUrl(s3Assets.tieR1), text: "Tie" },
- ],
- correctWord: "Sun",
- audio: getAssetAudioUrl(s3Assets.sunR1Eng),
- flowName: "P3",
- },
- {
- allwords: [
- { img: getAssetUrl(s3Assets.fireR1), text: "Fire" },
- { img: getAssetUrl(s3Assets.parkImg), text: "Park" },
- { img: getAssetUrl(s3Assets.shoeR1), text: "Shoe" },
- ],
- correctWord: "Park",
- audio: getAssetAudioUrl(s3Assets.parkR1Eng),
- flowName: "P4",
- },
- {
- allwords: [
- { img: getAssetUrl(s3Assets.bodyR1), text: "Body" },
- { img: getAssetUrl(s3Assets.kiteR1), text: "Kite" },
- { img: getAssetUrl(s3Assets.trayR1), text: "Tray" },
- ],
- correctWord: "Kite",
- audio: getAssetAudioUrl(s3Assets.kiteR1Eng),
- flowName: "P5",
- },
- {
- allwords: [
- { img: getAssetUrl(s3Assets.inkR1), text: "Ink" },
- { img: getAssetUrl(s3Assets.vanR1), text: "Van" },
- { img: getAssetUrl(s3Assets.manR1), text: "Man" },
- ],
- correctWord: "Man",
- audio: getAssetAudioUrl(s3Assets.manR1Eng),
- flowName: "P6",
- },
- {
- allwords: [
- { img: getAssetUrl(s3Assets.bikeR1), text: "Bike" },
- { img: getAssetUrl(s3Assets.eggR1), text: "Egg" },
- { img: getAssetUrl(s3Assets.giftR1), text: "Gift" },
- ],
- correctWord: "Egg",
- audio: getAssetAudioUrl(s3Assets.eggR1Eng),
- flowName: "P7",
- },
- {
- allwords: [
- { img: getAssetUrl(s3Assets.trafficR1), text: "Traffic" },
- { img: getAssetUrl(s3Assets.farmerR1), text: "Farmer" },
- { img: getAssetUrl(s3Assets.cubR1), text: "Cub" },
- ],
- correctWord: "Traffic",
- audio: getAssetAudioUrl(s3Assets.trafficR1Eng),
- flowName: "P8",
- },
- {
- allwords: [
- { img: getAssetUrl(s3Assets.carR1), text: "Car" },
- { img: getAssetUrl(s3Assets.hutR1), text: "Hut" },
- { img: getAssetUrl(s3Assets.beeR1), text: "Bee" },
- ],
- correctWord: "Car",
- audio: getAssetAudioUrl(s3Assets.carR1Eng),
- flowName: "P9",
- },
- {
- allwords: [
- { img: getAssetUrl(s3Assets.pearR1), text: "Pear" },
- { img: getAssetUrl(s3Assets.saltR1), text: "Salt" },
- { img: getAssetUrl(s3Assets.cakeR1), text: "Cake" },
- ],
- correctWord: "Cake",
- audio: getAssetAudioUrl(s3Assets.cakeR1Eng),
- flowName: "P10",
- },
- {
- allwords: [
- { img: getAssetUrl(s3Assets.aimR1), text: "Aim" },
- { img: getAssetUrl(s3Assets.legR1), text: "Leg" },
- { img: getAssetUrl(s3Assets.hatR1), text: "Hat" },
- ],
- correctWord: "Hat",
- audio: getAssetAudioUrl(s3Assets.hatR1Eng),
- flowName: "P11",
- },
- {
- allwords: [
- { img: getAssetUrl(s3Assets.jugR1), text: "Jug" },
- { img: getAssetUrl(s3Assets.soapR1), text: "Soap" },
- { img: getAssetUrl(s3Assets.gateR1), text: "Gate" },
- ],
- correctWord: "Jug",
- audio: getAssetAudioUrl(s3Assets.jugR1Eng),
- flowName: "P12",
- },
- {
- allwords: [
- { img: getAssetUrl(s3Assets.antR1), text: "Ant" },
- { img: getAssetUrl(s3Assets.fanR1), text: "Fan" },
- { img: getAssetUrl(s3Assets.mangoR1), text: "Mango" },
- ],
- correctWord: "Fan",
- audio: getAssetAudioUrl(s3Assets.fanR1Eng),
- flowName: "P13",
- },
- {
- allwords: [
- { img: getAssetUrl(s3Assets.basketImg), text: "Basket" },
- { img: getAssetUrl(s3Assets.vanR1), text: "Van" },
- { img: getAssetUrl(s3Assets.dogsBarkImg), text: "Dog" },
- ],
- correctWord: "Van",
- audio: getAssetAudioUrl(s3Assets.vanR1Eng),
- flowName: "P14",
- },
- {
- allwords: [
- { img: getAssetUrl(s3Assets.shipR1), text: "Ship" },
- { img: getAssetUrl(s3Assets.cryR1), text: "Cry" },
- { img: getAssetUrl(s3Assets.appleM1), text: "Apple" },
- ],
- correctWord: "Ship",
- audio: getAssetAudioUrl(s3Assets.shipR1Eng),
- flowName: "P15",
- },
- {
- allwords: [
- { img: getAssetUrl(s3Assets.rootsR1Eng), text: "Roots" },
- { img: getAssetUrl(s3Assets.trayR1Eng), text: "Tray" },
- { img: getAssetUrl(s3Assets.earsR1Eng), text: "Ears" },
- ],
- correctWord: "Ears",
- audio: getAssetAudioUrl(s3Assets.earsR1Audio),
- flowName: "P16",
- },
- {
- allwords: [
- { img: getAssetUrl(s3Assets.flagR1Eng), text: "Flag" },
- { img: getAssetUrl(s3Assets.shoeR1Eng), text: "Shoe" },
- { img: getAssetUrl(s3Assets.ringR1Eng), text: "Ring" },
- ],
- correctWord: "Ring",
- audio: getAssetAudioUrl(s3Assets.ringR1Audio),
- flowName: "P17",
- },
- {
- allwords: [
- { img: getAssetUrl(s3Assets.spinR1Eng), text: "Spin" },
- { img: getAssetUrl(s3Assets.pearR1Eng), text: "Pear" },
- { img: getAssetUrl(s3Assets.beltR1Eng), text: "Belt" },
- ],
- correctWord: "Spin",
- audio: getAssetAudioUrl(s3Assets.spinR1Audio),
- flowName: "P18",
- },
- {
- allwords: [
- { img: getAssetUrl(s3Assets.gateR1Eng), text: "Gate" },
- { img: getAssetUrl(s3Assets.hugR1Eng), text: "Hug" },
- { img: getAssetUrl(s3Assets.inkR1Eng), text: "Ink" },
- ],
- correctWord: "Ink",
- audio: getAssetAudioUrl(s3Assets.inkR1Audio),
- flowName: "P19",
- },
- {
- allwords: [
- { img: getAssetUrl(s3Assets.fanR1OneImg), text: "Fan" },
- { img: getAssetUrl(s3Assets.leafR1Eng), text: "Leaf" },
- { img: getAssetUrl(s3Assets.giftR1Eng), text: "Gift" },
- ],
- correctWord: "Gift",
- audio: getAssetAudioUrl(s3Assets.giftR1Audio),
- flowName: "P20",
- },
- {
- allwords: [
- { img: getAssetUrl(s3Assets.soapR1Eng), text: "Soap" },
- { img: getAssetUrl(s3Assets.fortR1Eng), text: "Fort" },
- { img: getAssetUrl(s3Assets.speakR1Eng), text: "Speak" },
- ],
- correctWord: "Speak",
- audio: getAssetAudioUrl(s3Assets.speakR1Audio),
- flowName: "P21",
- },
- {
- allwords: [
- { img: getAssetUrl(s3Assets.farmerR1Eng), text: "Farmer" },
- { img: getAssetUrl(s3Assets.bikeR1Eng), text: "Bike" },
- { img: getAssetUrl(s3Assets.mealR1Eng), text: "Meal" },
- ],
- correctWord: "Farmer",
- audio: getAssetAudioUrl(s3Assets.farmerR1Audio),
- flowName: "P22",
- },
- {
- allwords: [
- { img: getAssetUrl(s3Assets.cubR1Eng), text: "Cub" },
- { img: getAssetUrl(s3Assets.dollR1Eng), text: "Doll" },
- { img: getAssetUrl(s3Assets.sickR1Eng), text: "Sick" },
- ],
- correctWord: "Doll",
- audio: getAssetAudioUrl(s3Assets.dollR1Audio),
- flowName: "P23",
- },
- {
- allwords: [
- { img: getAssetUrl(s3Assets.saltR1Eng), text: "Salt" },
- { img: getAssetUrl(s3Assets.tieR1Eng), text: "Tie" },
- { img: getAssetUrl(s3Assets.limeR1Eng), text: "Lime" },
- ],
- correctWord: "Lime",
- audio: getAssetAudioUrl(s3Assets.limeR1Audio),
- flowName: "P24",
- },
- {
- allwords: [
- { img: getAssetUrl(s3Assets.antR1Eng), text: "Ant" },
- { img: getAssetUrl(s3Assets.bodyR1Eng), text: "Body" },
- { img: getAssetUrl(s3Assets.fireR1Eng), text: "Fire" },
- ],
- correctWord: "Ant",
- audio: getAssetAudioUrl(s3Assets.antR1Audio),
- flowName: "P25",
- },
- {
- allwords: [
- { img: getAssetUrl(s3Assets.pigR1Eng), text: "Pig" },
- { img: getAssetUrl(s3Assets.legR1Eng), text: "Leg" },
- { img: getAssetUrl(s3Assets.cryR1Eng), text: "Cry" },
- ],
- correctWord: "Cry",
- audio: getAssetAudioUrl(s3Assets.cryR1Audio),
- flowName: "P26",
- },
- {
- allwords: [
- { img: getAssetUrl(s3Assets.beeR1Eng), text: "Bee" },
- { img: getAssetUrl(s3Assets.hutR1Eng), text: "Hut" },
- { img: getAssetUrl(s3Assets.aimR1Eng), text: "Aim" },
- ],
- correctWord: "Aim",
- audio: getAssetAudioUrl(s3Assets.aimR1Audio),
- flowName: "P27",
- },
- {
- allwords: [
- { img: getAssetUrl(s3Assets.sickR1Eng), text: "Sick" },
- { img: getAssetUrl(s3Assets.fortR1Eng), text: "Fort" },
- { img: getAssetUrl(s3Assets.leafR1Eng), text: "Leaf" },
- ],
- correctWord: "Leaf",
- audio: getAssetAudioUrl(s3Assets.leafR1Audio),
- flowName: "P28",
- },
- {
- allwords: [
- { img: getAssetUrl(s3Assets.beltR1Eng), text: "Belt" },
- { img: getAssetUrl(s3Assets.gateR1Eng), text: "Gate" },
- { img: getAssetUrl(s3Assets.soapR1Eng), text: "Soap" },
- ],
- correctWord: "Soap",
- audio: getAssetAudioUrl(s3Assets.soapR1Audio),
- flowName: "P29",
- },
- {
- allwords: [
- { img: getAssetUrl(s3Assets.trayR1Eng), text: "Tray" },
- { img: getAssetUrl(s3Assets.shoeR1Eng), text: "Shoe" },
- { img: getAssetUrl(s3Assets.pearR1Eng), text: "Pear" },
- ],
- correctWord: "Pear",
- audio: getAssetAudioUrl(s3Assets.pearR1Audio),
- flowName: "P30",
- },
- {
- allwords: [
- { img: getAssetUrl(s3Assets.fireR1Eng), text: "Fire" },
- { img: getAssetUrl(s3Assets.bodyR1Eng), text: "Body" },
- { img: getAssetUrl(s3Assets.legR1Eng), text: "Leg" },
- ],
- correctWord: "Body",
- audio: getAssetAudioUrl(s3Assets.bodyR1Audio),
- flowName: "P31",
- },
- {
- allwords: [
- { img: getAssetUrl(s3Assets.hugR1Eng), text: "Hug" },
- { img: getAssetUrl(s3Assets.bikeR1Eng), text: "Bike" },
- { img: getAssetUrl(s3Assets.tieR1Eng), text: "Tie" },
- ],
- correctWord: "Tie",
- audio: getAssetAudioUrl(s3Assets.tieR1Audio),
- flowName: "P32",
- },
- {
- allwords: [
- { img: getAssetUrl(s3Assets.mealR1Eng), text: "Meal" },
- { img: getAssetUrl(s3Assets.saltR1Eng), text: "Salt" },
- { img: getAssetUrl(s3Assets.hutR1Eng), text: "Hut" },
- ],
- correctWord: "Hut",
- audio: getAssetAudioUrl(s3Assets.hutR1Audio),
- flowName: "P33",
- },
- {
- allwords: [
- { img: getAssetUrl(s3Assets.beeR1Eng), text: "Bee" },
- { img: getAssetUrl(s3Assets.cubR1Eng), text: "Cub" },
- { img: getAssetUrl(s3Assets.sickR1Eng), text: "Sick" },
- ],
- correctWord: "Bee",
- audio: getAssetAudioUrl(s3Assets.beeR1Audio),
- flowName: "P34",
- },
- {
- allwords: [
- { img: getAssetUrl(s3Assets.fortR1Eng), text: "Fort" },
- { img: getAssetUrl(s3Assets.rootsR1Eng), text: "Roots" },
- { img: getAssetUrl(s3Assets.flagR1Eng), text: "Flag" },
- ],
- correctWord: "Roots",
- audio: getAssetAudioUrl(s3Assets.rootsR1Audio),
- flowName: "P35",
- },
- {
- allwords: [
- { img: getAssetUrl(s3Assets.shoeR1Eng), text: "Shoe" },
- { img: getAssetUrl(s3Assets.gateR1Eng), text: "Gate" },
- { img: getAssetUrl(s3Assets.trayR1Eng), text: "Tray" },
- ],
- correctWord: "Tray",
- audio: getAssetAudioUrl(s3Assets.trayR1Audio),
- flowName: "P36",
- },
- {
- allwords: [
- { img: getAssetUrl(s3Assets.legR1Eng), text: "Leg" },
- { img: getAssetUrl(s3Assets.fireR1Eng), text: "Fire" },
- { img: getAssetUrl(s3Assets.pigR1Eng), text: "Pig" },
- ],
- correctWord: "Pig",
- audio: getAssetAudioUrl(s3Assets.pigR1Audio),
- flowName: "P37",
- },
- {
- allwords: [
- { img: getAssetUrl(s3Assets.sickR1Eng), text: "Sick" },
- { img: getAssetUrl(s3Assets.cryR1Eng), text: "Cry" },
- { img: getAssetUrl(s3Assets.antR1Eng), text: "Ant" },
- ],
- correctWord: "Sick",
- audio: getAssetAudioUrl(s3Assets.sickR1Audio),
- flowName: "P38",
- },
- {
- allwords: [
- { img: getAssetUrl(s3Assets.beltR1Eng), text: "Belt" },
- { img: getAssetUrl(s3Assets.mealR1Eng), text: "Meal" },
- { img: getAssetUrl(s3Assets.flagR1Eng), text: "Flag" },
- ],
- correctWord: "Flag",
- audio: getAssetAudioUrl(s3Assets.flagR1Audio),
- flowName: "P39",
- },
- {
- allwords: [
- { img: getAssetUrl(s3Assets.hugR1Eng), text: "Hug" },
- { img: getAssetUrl(s3Assets.inkR1Eng), text: "Ink" },
- { img: getAssetUrl(s3Assets.ringR1Eng), text: "Ring" },
- ],
- correctWord: "Hug",
- audio: getAssetAudioUrl(s3Assets.hugR1Audio),
- flowName: "P40",
- },
- {
- allwords: [
- { img: getAssetUrl(s3Assets.spinR1Eng), text: "Spin" },
- { img: getAssetUrl(s3Assets.farmerR1Eng), text: "Farmer" },
- { img: getAssetUrl(s3Assets.speakR1Eng), text: "Speak" },
- ],
- correctWord: "Spin",
- audio: getAssetAudioUrl(s3Assets.spinR1Audio),
- flowName: "P41",
- },
- {
- allwords: [
- { img: getAssetUrl(s3Assets.giftR1Eng), text: "Gift" },
- { img: getAssetUrl(s3Assets.leafR1Eng), text: "Leaf" },
- { img: getAssetUrl(s3Assets.dollR1Eng), text: "Doll" },
- ],
- correctWord: "Gift",
- audio: getAssetAudioUrl(s3Assets.giftR1Audio),
- flowName: "P42",
- },
- {
- allwords: [
- { img: getAssetUrl(s3Assets.limeR1Eng), text: "Lime" },
- { img: getAssetUrl(s3Assets.aimR1Eng), text: "Aim" },
- { img: getAssetUrl(s3Assets.cubR1Eng), text: "Cub" },
- ],
- correctWord: "Cub",
- audio: getAssetAudioUrl(s3Assets.cubR1Audio),
- flowName: "P43",
- },
- {
- allwords: [
- { img: getAssetUrl(s3Assets.bikeR1Eng), text: "Bike" },
- { img: getAssetUrl(s3Assets.tieR1Eng), text: "Tie" },
- { img: getAssetUrl(s3Assets.earsR1Eng), text: "Ears" },
- ],
- correctWord: "Bike",
- audio: getAssetAudioUrl(s3Assets.bikeR1Audio),
- flowName: "P44",
- },
- {
- allwords: [
- { img: getAssetUrl(s3Assets.speakR1Eng), text: "Speak" },
- { img: getAssetUrl(s3Assets.saltR1Eng), text: "Salt" },
- { img: getAssetUrl(s3Assets.fanR1Kan), text: "Fan" },
- ],
- correctWord: "Salt",
- audio: getAssetAudioUrl(s3Assets.saltR1Audio),
- flowName: "P45",
- },
- {
- allwords: [
- { img: getAssetUrl(s3Assets.mealR1Eng), text: "Meal" },
- { img: getAssetUrl(s3Assets.fireR1Eng), text: "Fire" },
- { img: getAssetUrl(s3Assets.legR1Eng), text: "Leg" },
- ],
- correctWord: "Leg",
- audio: getAssetAudioUrl(s3Assets.legR1Audio),
- flowName: "P46",
- },
- {
- allwords: [
- { img: getAssetUrl(s3Assets.gateR1Eng), text: "Gate" },
- { img: getAssetUrl(s3Assets.shoeR1Eng), text: "Shoe" },
- { img: getAssetUrl(s3Assets.rootsR1Eng), text: "Roots" },
- ],
- correctWord: "Gate",
- audio: getAssetAudioUrl(s3Assets.gateR1Audio),
- flowName: "P47",
- },
- {
- allwords: [
- { img: getAssetUrl(s3Assets.fortR1Eng), text: "Fort" },
- { img: getAssetUrl(s3Assets.hutR1Eng), text: "Hut" },
- { img: getAssetUrl(s3Assets.pearR1Eng), text: "Pear" },
- ],
- correctWord: "Fort",
- audio: getAssetAudioUrl(s3Assets.fortR1Audio),
- flowName: "P48",
- },
- {
- allwords: [
- { img: getAssetUrl(s3Assets.ringR1Eng), text: "Ring" },
- { img: getAssetUrl(s3Assets.mealR1Eng), text: "Meal" },
- { img: getAssetUrl(s3Assets.spinR1Eng), text: "Spin" },
- ],
- correctWord: "Meal",
- audio: getAssetAudioUrl(s3Assets.mealR1Audio),
- flowName: "P49",
- },
- {
- allwords: [
- { img: getAssetUrl(s3Assets.farmerR1Eng), text: "Farmer" },
- { img: getAssetUrl(s3Assets.dollR1Eng), text: "Doll" },
- { img: getAssetUrl(s3Assets.cryR1Eng), text: "Cry" },
- ],
- correctWord: "Farmer",
- audio: getAssetAudioUrl(s3Assets.farmerR1Audio),
- flowName: "P50",
- },
+const dataEn = [
+ {
+ id: 1,
+ title: "Phoneme",
+ letter: "b",
+ word: "ball",
+ image: getAssetUrl(s3Assets.ballGif),
+ audio: getAssetAudioUrl(s3Assets.ballPhonemeAudioYT),
+ phonemeAudio: getAssetAudioUrl(s3Assets.ballfullAudio),
+ },
+ {
+ id: 2,
+ title: "Phoneme",
+ letter: "d",
+ word: "drum",
+ image: getAssetUrl(s3Assets.drums),
+ audio: getAssetAudioUrl(s3Assets.drumPhonemeAudioYT),
+ phonemeAudio: getAssetAudioUrl(s3Assets.drumfullAudio),
+ },
+ {
+ id: 3,
+ title: "Phoneme",
+ letter: "f",
+ word: "fish",
+ image: getAssetUrl(s3Assets.fishSixImg),
+ audio: getAssetAudioUrl(s3Assets.fishPhonemeAudioYT),
+ phonemeAudio: getAssetAudioUrl(s3Assets.fishfullAudio),
+ },
+ {
+ id: 4,
+ title: "Phoneme",
+ letter: "g",
+ word: "grapes",
+ image: getAssetUrl(s3Assets.grapes),
+ audio: getAssetAudioUrl(s3Assets.grapesPhonemeAudioYT),
+ phonemeAudio: getAssetAudioUrl(s3Assets.grapesfullAudio),
+ },
+ {
+ id: 5,
+ title: "Phoneme",
+ letter: "h",
+ word: "hand",
+ image: getAssetUrl(s3Assets.handEightImg),
+ audio: getAssetAudioUrl(s3Assets.handPhonemeAudioYT),
+ phonemeAudio: getAssetAudioUrl(s3Assets.handfullAudio),
+ },
+ {
+ id: 6,
+ title: "Phoneme",
+ letter: "j",
+ word: "jam",
+ image: getAssetUrl(s3Assets.jam),
+ audio: getAssetAudioUrl(s3Assets.jamPhonemeAudioYT),
+ phonemeAudio: getAssetAudioUrl(s3Assets.jamfullAudio),
+ },
+ {
+ id: 7,
+ title: "Phoneme",
+ letter: "k",
+ word: "car",
+ image: getAssetUrl(s3Assets.carEighteenImg),
+ audio: getAssetAudioUrl(s3Assets.carPhonemeAudioYT),
+ phonemeAudio: getAssetAudioUrl(s3Assets.carfullAudio),
+ },
+ {
+ id: 8,
+ title: "Phoneme",
+ letter: "l",
+ word: "lollipop",
+ image: getAssetUrl(s3Assets.lolipop),
+ audio: getAssetAudioUrl(s3Assets.lollipopPhonemeAudioYT),
+ phonemeAudio: getAssetAudioUrl(s3Assets.lollipopfullAudio),
+ },
+ {
+ id: 9,
+ title: "Phoneme",
+ letter: "m",
+ word: "monkey",
+ image: getAssetUrl(s3Assets.monkey),
+ audio: getAssetAudioUrl(s3Assets.monkeyPhonemeAudioYT),
+ phonemeAudio: getAssetAudioUrl(s3Assets.monkeyfullAudio),
+ },
+ {
+ id: 10,
+ title: "Phoneme",
+ letter: "n",
+ word: "nest",
+ image: getAssetUrl(s3Assets.nest),
+ audio: getAssetAudioUrl(s3Assets.nestPhonemeAudioYT),
+ phonemeAudio: getAssetAudioUrl(s3Assets.nestfullAudio),
+ },
+ {
+ id: 11,
+ title: "Phoneme",
+ letter: "p",
+ word: "pumpkin",
+ image: getAssetUrl(s3Assets.pumpkin),
+ audio: getAssetAudioUrl(s3Assets.pumpkinPhonemeAudioYT),
+ phonemeAudio: getAssetAudioUrl(s3Assets.pumpkinfullAudio),
+ },
+ {
+ id: 12,
+ title: "Phoneme",
+ letter: "r",
+ word: "rainbow",
+ image: getAssetUrl(s3Assets.rainbow),
+ audio: getAssetAudioUrl(s3Assets.rainbowPhonemeAudioYT),
+ phonemeAudio: getAssetAudioUrl(s3Assets.rainbowfullAudio),
+ },
+ {
+ id: 13,
+ title: "Phoneme",
+ letter: "s",
+ word: "sun",
+ image: getAssetUrl(s3Assets.sun),
+ audio: getAssetAudioUrl(s3Assets.sunPhonemeAudioYT),
+ phonemeAudio: getAssetAudioUrl(s3Assets.sunfullAudio),
+ },
+ {
+ id: 14,
+ title: "Phoneme",
+ letter: "zh",
+ word: "treasure",
+ image: getAssetUrl(s3Assets.treasure),
+ audio: getAssetAudioUrl(s3Assets.treasurePhonemeAudioYT),
+ phonemeAudio: getAssetAudioUrl(s3Assets.treasurefullAudio),
+ },
+ {
+ id: 15,
+ title: "Phoneme",
+ letter: "t",
+ word: "tree",
+ image: getAssetUrl(s3Assets.tree),
+ audio: getAssetAudioUrl(s3Assets.treePhonemeAudioYT),
+ phonemeAudio: getAssetAudioUrl(s3Assets.treefullAudio),
+ },
+ {
+ id: 16,
+ title: "Phoneme",
+ letter: "v",
+ word: "van",
+ image: getAssetUrl(s3Assets.van),
+ audio: getAssetAudioUrl(s3Assets.vanPhonemeAudioYT),
+ phonemeAudio: getAssetAudioUrl(s3Assets.vanfullAudio),
+ },
+ {
+ id: 17,
+ title: "Phoneme",
+ letter: "w",
+ word: "window",
+ image: getAssetUrl(s3Assets.window),
+ audio: getAssetAudioUrl(s3Assets.windowPhonemeAudioYT),
+ phonemeAudio: getAssetAudioUrl(s3Assets.windowfullAudio),
+ },
+ {
+ id: 18,
+ title: "Phoneme",
+ letter: "y",
+ word: "yak",
+ image: getAssetUrl(s3Assets.yak),
+ audio: getAssetAudioUrl(s3Assets.yakPhonemeAudioYT),
+ phonemeAudio: getAssetAudioUrl(s3Assets.yakfullAudio),
+ },
+ {
+ id: 19,
+ title: "Phoneme",
+ letter: "z",
+ word: "zip",
+ image: getAssetUrl(s3Assets.zip),
+ audio: getAssetAudioUrl(s3Assets.zipPhonemeAudioYT),
+ phonemeAudio: getAssetAudioUrl(s3Assets.zipfullAudio),
+ },
+ {
+ id: 20,
+ title: "Phoneme",
+ letter: "x",
+ word: "fox",
+ image: getAssetUrl(s3Assets.fox),
+ audio: getAssetAudioUrl(s3Assets.foxPhonemeAudioYT),
+ phonemeAudio: getAssetAudioUrl(s3Assets.foxfullAudio),
+ },
+ {
+ id: 21,
+ title: "Phoneme",
+ letter: "qu",
+ word: "queen",
+ image: getAssetUrl(s3Assets.queenSixteenImg),
+ audio: getAssetAudioUrl(s3Assets.queenAud),
+ phonemeAudio: getAssetAudioUrl(s3Assets.queenfullAudio),
+ },
+ {
+ id: 22,
+ title: "Phoneme",
+ letter: "ch",
+ word: "chain",
+ image: getAssetUrl(s3Assets.chain),
+ audio: getAssetAudioUrl(s3Assets.chainPhonemeAudioYT),
+ phonemeAudio: getAssetAudioUrl(s3Assets.chainfullAudio),
+ },
+ {
+ id: 23,
+ title: "Phoneme",
+ letter: "sh",
+ word: "sheep",
+ image: getAssetUrl(s3Assets.sheep),
+ audio: getAssetAudioUrl(s3Assets.sheepPhonemeAudioYT),
+ phonemeAudio: getAssetAudioUrl(s3Assets.sheepfullAudio),
+ },
+ {
+ id: 24,
+ title: "Phoneme",
+ letter: "th",
+ word: "mother",
+ image: getAssetUrl(s3Assets.motherGif),
+ audio: getAssetAudioUrl(s3Assets.motherPhonemeAudioYT),
+ phonemeAudio: getAssetAudioUrl(s3Assets.motherfullAudio),
+ },
+ {
+ id: 25,
+ title: "Phoneme",
+ letter: "ng",
+ word: "sing",
+ image: getAssetUrl(s3Assets.sing),
+ audio: getAssetAudioUrl(s3Assets.singPhonemeAudioYT),
+ phonemeAudio: getAssetAudioUrl(s3Assets.singfullAudio),
+ },
+ {
+ id: 26,
+ title: "Phoneme",
+ letter: "a",
+ word: "apple",
+ image: getAssetUrl(s3Assets.apple),
+ audio: getAssetAudioUrl(s3Assets.appleAud),
+ phonemeAudio: getAssetAudioUrl(s3Assets.applefullAudio),
+ },
+ {
+ id: 27,
+ title: "Phoneme",
+ letter: "e",
+ word: "egg",
+ image: getAssetUrl(s3Assets.egg),
+ audio: getAssetAudioUrl(s3Assets.eggPhonemeAudioYT),
+ phonemeAudio: getAssetAudioUrl(s3Assets.eggfullAudio),
+ },
+ {
+ id: 28,
+ title: "Phoneme",
+ letter: "i",
+ word: "igloo",
+ image: getAssetUrl(s3Assets.igloo),
+ audio: getAssetAudioUrl(s3Assets.iglooPhonemeAudioYT),
+ phonemeAudio: getAssetAudioUrl(s3Assets.igloofullAudio),
+ },
+ {
+ id: 29,
+ title: "Phoneme",
+ letter: "o",
+ word: "orange",
+ image: getAssetUrl(s3Assets.orange),
+ audio: getAssetAudioUrl(s3Assets.orangePhonemeAudioYT),
+ phonemeAudio: getAssetAudioUrl(s3Assets.orangefullAudio),
+ },
+ {
+ id: 30,
+ title: "Phoneme",
+ letter: "u",
+ word: "umbrella",
+ image: getAssetUrl(s3Assets.umbrella),
+ audio: getAssetAudioUrl(s3Assets.umbrellaPhonemeAudioYT),
+ phonemeAudio: getAssetAudioUrl(s3Assets.umbrellafullAudio),
+ },
+ {
+ id: 31,
+ title: "Phoneme",
+ letter: "ai",
+ word: "rain",
+ image: getAssetUrl(s3Assets.rain),
+ audio: getAssetAudioUrl(s3Assets.rainPhonemeAudioYT),
+ phonemeAudio: getAssetAudioUrl(s3Assets.rainfullAudio),
+ },
+ {
+ id: 32,
+ title: "Phoneme",
+ letter: "ee",
+ word: "bee",
+ image: getAssetUrl(s3Assets.bee),
+ audio: getAssetAudioUrl(s3Assets.beePhonemeAudioYT),
+ phonemeAudio: getAssetAudioUrl(s3Assets.beefullAudio),
+ },
+ {
+ id: 33,
+ title: "Phoneme",
+ letter: "ie",
+ word: "pie",
+ image: getAssetUrl(s3Assets.pie),
+ audio: getAssetAudioUrl(s3Assets.piePhonemeAudioYT),
+ phonemeAudio: getAssetAudioUrl(s3Assets.piefullAudio),
+ },
+ {
+ id: 34,
+ title: "Phoneme",
+ letter: "oa",
+ word: "boat",
+ image: getAssetUrl(s3Assets.boat),
+ audio: getAssetAudioUrl(s3Assets.boatPhonemeAudioYT),
+ phonemeAudio: getAssetAudioUrl(s3Assets.boatfullAudio),
+ },
+ {
+ id: 35,
+ title: "Phoneme",
+ letter: "oo",
+ word: "moon",
+ image: getAssetUrl(s3Assets.moon),
+ audio: getAssetAudioUrl(s3Assets.moonPhonemeAudioYT),
+ phonemeAudio: getAssetAudioUrl(s3Assets.moonfullAudio),
+ },
+ {
+ id: 36,
+ title: "Phoneme",
+ letter: "oo",
+ word: "book",
+ image: getAssetUrl(s3Assets.book),
+ audio: getAssetAudioUrl(s3Assets.bookPhonemeAudio),
+ phonemeAudio: getAssetAudioUrl(s3Assets.bookfullAudio),
+ },
+ {
+ id: 37,
+ title: "Phoneme",
+ letter: "ou",
+ word: "cloud",
+ image: getAssetUrl(s3Assets.cloud),
+ audio: getAssetAudioUrl(s3Assets.cloudPhonemeAudioYT),
+ phonemeAudio: getAssetAudioUrl(s3Assets.cloudfullAudio),
+ },
+ {
+ id: 38,
+ title: "Phoneme",
+ letter: "oi",
+ word: "coin",
+ image: getAssetUrl(s3Assets.coin),
+ audio: getAssetAudioUrl(s3Assets.coinPhonemeAudioYT),
+ phonemeAudio: getAssetAudioUrl(s3Assets.coinfullAudio),
+ },
+ {
+ id: 39,
+ title: "Phoneme",
+ letter: "aw",
+ word: "saw",
+ image: getAssetUrl(s3Assets.saw),
+ audio: getAssetAudioUrl(s3Assets.sawPhonemeAudioYT),
+ phonemeAudio: getAssetAudioUrl(s3Assets.sawfullAudio),
+ },
+ {
+ id: 40,
+ title: "Phoneme",
+ letter: "ar",
+ word: "star",
+ image: getAssetUrl(s3Assets.star),
+ audio: getAssetAudioUrl(s3Assets.starPhonemeAudioYT),
+ phonemeAudio: getAssetAudioUrl(s3Assets.starfullAudio),
+ },
+ {
+ id: 41,
+ title: "Phoneme",
+ letter: "er",
+ word: "sister",
+ image: getAssetUrl(s3Assets.sister),
+ audio: getAssetAudioUrl(s3Assets.sisterPhonemeAudioYT),
+ phonemeAudio: getAssetAudioUrl(s3Assets.sisterfullAudio),
+ },
+ {
+ id: 42,
+ title: "Phoneme",
+ letter: "or",
+ word: "corn",
+ image: getAssetUrl(s3Assets.corn),
+ audio: getAssetAudioUrl(s3Assets.cornPhonemeAudioYT),
+ phonemeAudio: getAssetAudioUrl(s3Assets.cornfullAudio),
+ },
+ {
+ id: 43,
+ title: "Phoneme",
+ letter: "air",
+ word: "chair",
+ image: getAssetUrl(s3Assets.chair),
+ audio: getAssetAudioUrl(s3Assets.chairPhonemeAudioYT),
+ phonemeAudio: getAssetAudioUrl(s3Assets.chairfullAudio),
+ },
+ {
+ id: 45,
+ title: "Phoneme",
+ letter: "ear",
+ word: "hear",
+ image: getAssetUrl(s3Assets.hear),
+ audio: getAssetAudioUrl(s3Assets.hearPhonemeAudioYT),
+ phonemeAudio: getAssetAudioUrl(s3Assets.hearfullAudio),
+ },
+];
+const dataKn = [
+ {
+ id: 1,
+ images: [
+ getAssetUrl(s3Assets.R1),
+ getAssetUrl(s3Assets.R1_1),
+ getAssetUrl(s3Assets.R1_2),
+ ],
+ audios: [
+ getAssetAudioUrl(s3Assets.RA1ato15a),
+ getAssetAudioUrl(s3Assets.RA1b),
+ getAssetAudioUrl(s3Assets.RA1c),
],
},
- hi: {
- L1: [
- {
- allwords: [
- { img: getAssetUrl(s3Assets.bagR1Hin), text: "Bag" },
- { img: getAssetUrl(s3Assets.kiteR1Hin), text: "Kite" },
- { img: getAssetUrl(s3Assets.jugR1), text: "Jug" },
- ],
- correctWord: "Jug",
- audio: getAssetAudioUrl(s3Assets.jugR1HinAud),
- flowName: "P1",
- },
- {
- allwords: [
- { img: getAssetUrl(s3Assets.jaalR1Hin), text: "Jaal" },
- { img: getAssetUrl(s3Assets.batR1Hin), text: "Bat" },
- { img: getAssetUrl(s3Assets.houseR1Hin), text: "House" },
- ],
- correctWord: "Jaal",
- audio: getAssetAudioUrl(s3Assets.jalR1HinAud),
- flowName: "P2",
- },
- {
- allwords: [
- { img: getAssetUrl(s3Assets.fireR1Hin), text: "Fire" },
- { img: getAssetUrl(s3Assets.kadhR1Hin), text: "Kadhai" },
- { img: getAssetUrl(s3Assets.knifeR1Hin), text: "Knife" },
- ],
- correctWord: "Kadhai",
- audio: getAssetAudioUrl(s3Assets.kadhR1HinAud),
- flowName: "P3",
- },
- {
- allwords: [
- { img: getAssetUrl(s3Assets.cupR1Hin), text: "Cup" },
- { img: getAssetUrl(s3Assets.legR1Hin), text: "Leg" },
- { img: getAssetUrl(s3Assets.teaR1Hin), text: "Tea" },
- ],
- correctWord: "Cup",
- audio: getAssetAudioUrl(s3Assets.cupR1HinAud),
- flowName: "P4",
- },
- {
- allwords: [
- { img: getAssetUrl(s3Assets.medicineR1Hin), text: "Medicine" },
- { img: getAssetUrl(s3Assets.lunchR1Hin), text: "Lunch" },
- { img: getAssetUrl(s3Assets.bagR1Hin), text: "Bag" },
- ],
- correctWord: "Lunch",
- audio: getAssetAudioUrl(s3Assets.lunchR1HinAud),
- flowName: "P5",
- },
- {
- allwords: [
- { img: getAssetUrl(s3Assets.saltR1Hin), text: "Salt" },
- { img: getAssetUrl(s3Assets.teethR1Hin), text: "Teeth" },
- { img: getAssetUrl(s3Assets.cowR1KanImage), text: "Cow" },
- ],
- correctWord: "Cow",
- audio: getAssetAudioUrl(s3Assets.cowR1HinAud),
- flowName: "P6",
- },
- {
- allwords: [
- { img: getAssetUrl(s3Assets.medicineR1Hin), text: "Medicine" },
- { img: getAssetUrl(s3Assets.gadaR1Hin), text: "Gada" },
- { img: getAssetUrl(s3Assets.eggR1Hin), text: "Egg" },
- ],
- correctWord: "Gada",
- audio: getAssetAudioUrl(s3Assets.gadaR1HinAud),
- flowName: "P7",
- },
- {
- allwords: [
- { img: getAssetUrl(s3Assets.carR1Hin), text: "Car" },
- { img: getAssetUrl(s3Assets.TyreR1Hin), text: "Tyre" },
- { img: getAssetUrl(s3Assets.chandR1Hin), text: "Moon" },
- ],
- correctWord: "Car",
- audio: getAssetAudioUrl(s3Assets.carR1HinAud),
- flowName: "P8",
- },
- {
- allwords: [
- { img: getAssetUrl(s3Assets.kamalR1Hin), text: "Kamal" },
- { img: getAssetUrl(s3Assets.woonR1Hin), text: "Oon" },
- { img: getAssetUrl(s3Assets.mugR1Hin), text: "Mug" },
- ],
- correctWord: "Oon",
- audio: getAssetAudioUrl(s3Assets.oonR1HinAud),
- flowName: "P9",
- },
- {
- allwords: [
- { img: getAssetUrl(s3Assets.kamalR1Hin), text: "Kamal" },
- { img: getAssetUrl(s3Assets.rubberR1Hin), text: "Rubber" },
- { img: getAssetUrl(s3Assets.crowR1Hin), text: "Crow" },
- ],
- correctWord: "Kamal",
- audio: getAssetAudioUrl(s3Assets.kamalR1HinAud),
- flowName: "P10",
- },
- {
- allwords: [
- { img: getAssetUrl(s3Assets.snakeR1Hin), text: "Snake" },
- { img: getAssetUrl(s3Assets.noseR1Hin), text: "Nose" },
- { img: getAssetUrl(s3Assets.parrotR1Hin), text: "Parrot" },
- ],
- correctWord: "Nose",
- audio: getAssetAudioUrl(s3Assets.nakR1HinAud),
- flowName: "P11",
- },
- {
- allwords: [
- { img: getAssetUrl(s3Assets.dandaR1Hin), text: "Stick" },
- { img: getAssetUrl(s3Assets.fruitR1Hin), text: "Phal" },
- { img: getAssetUrl(s3Assets.mathR1Hin), text: "Math" },
- ],
- correctWord: "Phal",
- audio: getAssetAudioUrl(s3Assets.phalR1HinAud),
- flowName: "P12",
- },
- {
- allwords: [
- { img: getAssetUrl(s3Assets.danceR1Hin), text: "Nritya" },
- { img: getAssetUrl(s3Assets.peacockR1Hin), text: "Peacock" },
- { img: getAssetUrl(s3Assets.dressR1Hin), text: "Dress" },
- ],
- correctWord: "Nritya",
- audio: getAssetAudioUrl(s3Assets.nrityaR1HinAud),
- flowName: "P13",
- },
- {
- allwords: [
- { img: getAssetUrl(s3Assets.singerR1Hin), text: "Singer" },
- { img: getAssetUrl(s3Assets.donkeyR1Hin), text: "Pashu" },
- { img: getAssetUrl(s3Assets.eidR1Hin), text: "Eid" },
- ],
- correctWord: "Pashu",
- audio: getAssetAudioUrl(s3Assets.pashuR1HinAud),
- flowName: "P14",
- },
- {
- allwords: [
- { img: getAssetUrl(s3Assets.AutoR1Hin), text: "Auto" },
- { img: getAssetUrl(s3Assets.teacher2Img), text: "Teeth" }, //audios
- { img: getAssetUrl(s3Assets.neckR1Hin), text: "Neck" },
- ],
- correctWord: "Teeth",
- audio: getAssetAudioUrl(s3Assets.teacherM2Eng),
- flowName: "P15",
- },
-
- {
- allwords: [
- { img: getAssetUrl(s3Assets.BrushR1HinImg), text: "Brush" },
- { img: getAssetUrl(s3Assets.carrotR1HinImg), text: "Carrot" },
- { img: getAssetUrl(s3Assets.gamlaR1HinImg), text: "Gamla" },
- ],
- correctWord: "Carrot",
- audio: getAssetAudioUrl(s3Assets.gajarR1HinAudio),
- flowName: "P16",
- },
- {
- allwords: [
- { img: getAssetUrl(s3Assets.EagleR1HinImg), text: "Eagle" },
- { img: getAssetUrl(s3Assets.hockeyR1HinImg), text: "Hockey" },
- { img: getAssetUrl(s3Assets.oilR1HinImg), text: "Oil" },
- ],
- correctWord: "Eagle",
- audio: getAssetAudioUrl(s3Assets.baazR1HinAudio),
- flowName: "P17",
- },
- {
- allwords: [
- { img: getAssetUrl(s3Assets.bodyR1HinImg), text: "Body" },
- { img: getAssetUrl(s3Assets.coffeeR1HinImg), text: "Coffee" },
- { img: getAssetUrl(s3Assets.tigerR1HinImg), text: "Tiger" },
- ],
- correctWord: "Tiger",
- audio: getAssetAudioUrl(s3Assets.sherR1HinAudio),
- flowName: "P18",
- },
- {
- allwords: [
- { img: getAssetUrl(s3Assets.ballR1HinImg), text: "Ball" },
- { img: getAssetUrl(s3Assets.peacockR1Hin), text: "Peacock" },
- { img: getAssetUrl(s3Assets.AutoR1Hin), text: "Auto" },
- ],
- correctWord: "Peacock",
- audio: getAssetAudioUrl(s3Assets.morR1HinAudio),
- flowName: "P19",
- },
- {
- allwords: [
- { img: getAssetUrl(s3Assets.donkeyR1HinImg), text: "Donkey" },
- { img: getAssetUrl(s3Assets.teacherR1Hin), text: "Teacher" },
- { img: getAssetUrl(s3Assets.mugR1Hin), text: "Mug" },
- ],
- correctWord: "Donkey",
- audio: getAssetAudioUrl(s3Assets.gadhaR1HinAudio),
- flowName: "P20",
- },
- {
- allwords: [
- { img: getAssetUrl(s3Assets.singerR1HinImg), text: "Singer" },
- { img: getAssetUrl(s3Assets.teaR1HinImg), text: "Tea" },
- { img: getAssetUrl(s3Assets.fireR1HinImg), text: "Fire" },
- ],
- correctWord: "Singer",
- audio: getAssetAudioUrl(s3Assets.gayakR1HinAudio),
- flowName: "P21",
- },
- {
- allwords: [
- { img: getAssetUrl(s3Assets.danceR1HinImg), text: "Dance" },
- { img: getAssetUrl(s3Assets.medicineR1Hin), text: "Medicine" },
- { img: getAssetUrl(s3Assets.saltR1HinImg), text: "Salt" },
- ],
- correctWord: "Salt",
- audio: getAssetAudioUrl(s3Assets.namakR1HinAudio),
- flowName: "P22",
- },
- {
- allwords: [
- { img: getAssetUrl(s3Assets.gadaR1HinImg), text: "Gada" },
- { img: getAssetUrl(s3Assets.eggR1HinImg), text: "Egg" },
- { img: getAssetUrl(s3Assets.dandaR1Hin), text: "Stick" },
- ],
- correctWord: "Egg",
- audio: getAssetAudioUrl(s3Assets.andaR1HinAudio),
- flowName: "P23",
- },
- {
- allwords: [
- { img: getAssetUrl(s3Assets.BrushR1HinImg), text: "Brush" },
- { img: getAssetUrl(s3Assets.teethR1HinImg), text: "Teeth" },
- { img: getAssetUrl(s3Assets.legR1HinImg), text: "Leg" },
- ],
- correctWord: "Brush",
- audio: getAssetAudioUrl(s3Assets.manjanR1HinAudio),
- flowName: "P24",
- },
- {
- allwords: [
- { img: getAssetUrl(s3Assets.oilR1HinImg), text: "Oil" },
- { img: getAssetUrl(s3Assets.hockeyR1HinImg), text: "Hockey" },
- { img: getAssetUrl(s3Assets.coffeeR1HinImg), text: "Coffee" },
- ],
- correctWord: "Oil",
- audio: getAssetAudioUrl(s3Assets.telR1HinAudio),
- flowName: "P25",
- },
- {
- allwords: [
- { img: getAssetUrl(s3Assets.tigerR1HinImg), text: "Tiger" },
- { img: getAssetUrl(s3Assets.snakeR1HinImg), text: "Snake" },
- { img: getAssetUrl(s3Assets.parrotR1HinImg), text: "Parrot" },
- ],
- correctWord: "Snake",
- audio: getAssetAudioUrl(s3Assets.saapR1HinAudio),
- flowName: "P26",
- },
- {
- allwords: [
- { img: getAssetUrl(s3Assets.ballR1HinImg), text: "Ball" },
- { img: getAssetUrl(s3Assets.hockeyR1HinImg), text: "Hockey" },
- { img: getAssetUrl(s3Assets.batR1HinImg), text: "Bat" },
- ],
- correctWord: "Ball",
- audio: getAssetAudioUrl(s3Assets.gendR1HinAudio),
- flowName: "P27",
- },
- {
- allwords: [
- { img: getAssetUrl(s3Assets.crowR1HinImg), text: "Crow" },
- { img: getAssetUrl(s3Assets.parrotR1HinImg), text: "Parrot" },
- { img: getAssetUrl(s3Assets.EagleR1HinImg), text: "Eagle" },
- ],
- correctWord: "Crow",
- audio: getAssetAudioUrl(s3Assets.kauwaR1HinAudio),
- flowName: "P28",
- },
- {
- allwords: [
- { img: getAssetUrl(s3Assets.knifeR1HinImg), text: "Knife" },
- { img: getAssetUrl(s3Assets.kadhR1HinImg), text: "Kadhai" },
- { img: getAssetUrl(s3Assets.dandaR1Hin), text: "Stick" },
- ],
- correctWord: "Knife",
- audio: getAssetAudioUrl(s3Assets.chakuR1HinAudio),
- flowName: "P29",
- },
- {
- allwords: [
- { img: getAssetUrl(s3Assets.parrotR1HinImg), text: "Parrot" },
- { img: getAssetUrl(s3Assets.crowR1HinImg), text: "Crow" },
- { img: getAssetUrl(s3Assets.donkeyR1HinImg), text: "Donkey" },
- ],
- correctWord: "Parrot",
- audio: getAssetAudioUrl(s3Assets.totaR1HinAudio),
- flowName: "P30",
- },
- {
- allwords: [
- { img: getAssetUrl(s3Assets.houseR1HinImg), text: "House" },
- { img: getAssetUrl(s3Assets.gamlaR1HinImg), text: "Gamla" },
- { img: getAssetUrl(s3Assets.dressR1HinImg), text: "Dress" },
- ],
- correctWord: "House",
- audio: getAssetAudioUrl(s3Assets.gharR1HinAudio),
- flowName: "P31",
- },
- {
- allwords: [
- { img: getAssetUrl(s3Assets.chandR1HinImg), text: "Moon" },
- { img: getAssetUrl(s3Assets.fireR1HinImg), text: "Fire" },
- { img: getAssetUrl(s3Assets.teaR1HinImg), text: "Tea" },
- ],
- correctWord: "Moon",
- audio: getAssetAudioUrl(s3Assets.chaandR1HinAudio),
- flowName: "P32",
- },
- {
- allwords: [
- { img: getAssetUrl(s3Assets.legR1HinImg), text: "Leg" },
- { img: getAssetUrl(s3Assets.neckR1HinImg), text: "Neck" },
- { img: getAssetUrl(s3Assets.noseR1HinImg), text: "Nose" },
- ],
- correctWord: "Leg",
- audio: getAssetAudioUrl(s3Assets.taangR1HinAudio),
- flowName: "P33",
- },
- {
- allwords: [
- { img: getAssetUrl(s3Assets.AutoR1Hin), text: "Auto" },
- { img: getAssetUrl(s3Assets.carR1HinImg), text: "Car" },
- { img: getAssetUrl(s3Assets.TyreR1HinImg), text: "Tyre" },
- ],
- correctWord: "Auto",
- audio: getAssetAudioUrl(s3Assets.autoR1HinAudio),
- flowName: "P34",
- },
- {
- allwords: [
- { img: getAssetUrl(s3Assets.teaR1HinImg), text: "Tea" },
- { img: getAssetUrl(s3Assets.coffeeR1HinImg), text: "Coffee" },
- { img: getAssetUrl(s3Assets.medicineR1Hin), text: "Medicine" },
- ],
- correctWord: "Tea",
- audio: getAssetAudioUrl(s3Assets.chaiR1HinAudio),
- flowName: "P35",
- },
- {
- allwords: [
- { img: getAssetUrl(s3Assets.fireR1HinImg), text: "Fire" },
- { img: getAssetUrl(s3Assets.gadaR1HinImg), text: "Gada" },
- { img: getAssetUrl(s3Assets.oilR1HinImg), text: "Oil" },
- ],
- correctWord: "Fire",
- audio: getAssetAudioUrl(s3Assets.aagR1HinAudio),
- flowName: "P36",
- },
- {
- allwords: [
- { img: getAssetUrl(s3Assets.dressR1HinImg), text: "Dress" },
- { img: getAssetUrl(s3Assets.rubberR1HinImg), text: "Rubber" },
- { img: getAssetUrl(s3Assets.kiteR1HinImg), text: "Kite" },
- ],
- correctWord: "Dress",
- audio: getAssetAudioUrl(s3Assets.kapdaR1HinAudio),
- flowName: "P37",
- },
- {
- allwords: [
- { img: getAssetUrl(s3Assets.mathR1HinImg), text: "Math" },
- { img: getAssetUrl(s3Assets.danceR1HinImg), text: "Dance" },
- { img: getAssetUrl(s3Assets.hockeyR1HinImg), text: "Hockey" },
- ],
- correctWord: "Math",
- audio: getAssetAudioUrl(s3Assets.ganitR1HinAudio),
- flowName: "P38",
- },
- {
- allwords: [
- { img: getAssetUrl(s3Assets.batR1HinImg), text: "Bat" },
- { img: getAssetUrl(s3Assets.hockeyR1HinImg), text: "Hockey" },
- { img: getAssetUrl(s3Assets.chandR1HinImg), text: "Chand" },
- ],
- correctWord: "Bat",
- audio: getAssetAudioUrl(s3Assets.batR1HinAudio),
- flowName: "P39",
- },
- {
- allwords: [
- { img: getAssetUrl(s3Assets.neckR1HinImg), text: "Neck" },
- { img: getAssetUrl(s3Assets.noseR1HinImg), text: "Nose" },
- { img: getAssetUrl(s3Assets.teethR1HinImg), text: "Teeth" },
- ],
- correctWord: "Neck",
- audio: getAssetAudioUrl(s3Assets.galaR1HinAudio),
- flowName: "P40",
- },
- {
- allwords: [
- { img: getAssetUrl(s3Assets.coffeeR1HinImg), text: "Coffee" },
- { img: getAssetUrl(s3Assets.teaR1HinImg), text: "Tea" },
- { img: getAssetUrl(s3Assets.medicineR1Hin), text: "Medicine" },
- ],
- correctWord: "Coffee",
- audio: getAssetAudioUrl(s3Assets.coffeeR1HinAudio),
- flowName: "P41",
- },
- {
- allwords: [
- { img: getAssetUrl(s3Assets.dandaR1Hin), text: "Stick" },
- { img: getAssetUrl(s3Assets.batR1HinImg), text: "Bat" },
- { img: getAssetUrl(s3Assets.hockeyR1HinImg), text: "Hockey" },
- ],
- correctWord: "Stick",
- audio: getAssetAudioUrl(s3Assets.dandaR1HinAudio),
- flowName: "P42",
- },
- {
- allwords: [
- { img: getAssetUrl(s3Assets.hockeyR1HinImg), text: "Hockey" },
- { img: getAssetUrl(s3Assets.batR1HinImg), text: "Bat" },
- { img: getAssetUrl(s3Assets.ballR1HinImg), text: "Ball" },
- ],
- correctWord: "Hockey",
- audio: getAssetAudioUrl(s3Assets.hockeyR1HinAudio),
- flowName: "P43",
- },
- {
- allwords: [
- { img: getAssetUrl(s3Assets.eidR1Hin), text: "Eid" },
- { img: getAssetUrl(s3Assets.danceR1HinImg), text: "Dance" },
- { img: getAssetUrl(s3Assets.singerR1HinImg), text: "Singer" },
- ],
- correctWord: "Eid",
- audio: getAssetAudioUrl(s3Assets.eidR1HinAudio),
- flowName: "P44",
- },
- {
- allwords: [
- { img: getAssetUrl(s3Assets.tigerR1HinImg), text: "Tiger" },
- { img: getAssetUrl(s3Assets.cheetahR1Hin), text: "Cheetah" },
- { img: getAssetUrl(s3Assets.donkeyR1HinImg), text: "Donkey" },
- ],
- correctWord: "Cheetah",
- audio: getAssetAudioUrl(s3Assets.cheetahR1HinAudio),
- flowName: "P45",
- },
- {
- allwords: [
- { img: getAssetUrl(s3Assets.bodyR1HinImg), text: "Body" },
- { img: getAssetUrl(s3Assets.legR1HinImg), text: "Leg" },
- { img: getAssetUrl(s3Assets.neckR1HinImg), text: "Neck" },
- ],
- correctWord: "Body",
- audio: getAssetAudioUrl(s3Assets.tanR1HinAudio),
- flowName: "P46",
- },
- {
- allwords: [
- { img: getAssetUrl(s3Assets.kamalR1HinImg), text: "Kamal" },
- { img: getAssetUrl(s3Assets.gamlaR1HinImg), text: "Gamla" },
- { img: getAssetUrl(s3Assets.fruitR1HinImg), text: "Fruit" },
- ],
- correctWord: "Kamal",
- audio: getAssetAudioUrl(s3Assets.kamalR1HinAud),
- flowName: "P47",
- },
- {
- allwords: [
- { img: getAssetUrl(s3Assets.rubberR1HinImg), text: "Rubber" },
- { img: getAssetUrl(s3Assets.dressR1HinImg), text: "Dress" },
- { img: getAssetUrl(s3Assets.kiteR1HinImg), text: "Kite" },
- ],
- correctWord: "Rubber",
- audio: getAssetAudioUrl(s3Assets.rabarR1HinAudio),
- flowName: "P48",
- },
- {
- allwords: [
- { img: getAssetUrl(s3Assets.kiteR1HinImg), text: "Kite" },
- { img: getAssetUrl(s3Assets.ballR1HinImg), text: "Ball" },
- { img: getAssetUrl(s3Assets.batR1HinImg), text: "Bat" },
- ],
- correctWord: "Kite",
- audio: getAssetAudioUrl(s3Assets.patangR1HinAudio),
- flowName: "P49",
- },
- {
- allwords: [
- { img: getAssetUrl(s3Assets.gamlaR1HinImg), text: "Gamla" },
- { img: getAssetUrl(s3Assets.houseR1HinImg), text: "House" },
- { img: getAssetUrl(s3Assets.kamalR1HinImg), text: "Kamal" },
- ],
- correctWord: "Gamla",
- audio: getAssetAudioUrl(s3Assets.gamlaR1HinAudio),
- flowName: "P50",
- },
+ {
+ id: 2,
+ images: [
+ getAssetUrl(s3Assets.R1),
+ getAssetUrl(s3Assets.R2_1),
+ getAssetUrl(s3Assets.R2_2),
+ ],
+ audios: [
+ getAssetAudioUrl(s3Assets.RA1ato15a),
+ getAssetAudioUrl(s3Assets.RA2b),
+ getAssetAudioUrl(s3Assets.RA2c),
],
},
- ta: {
- L1: [
- {
- allwords: [
- { img: getAssetUrl(s3Assets.catR1Tam), text: "Cat" },
- { img: getAssetUrl(s3Assets.ratR1Tam), text: "Rat" },
- { img: getAssetUrl(s3Assets.eyeR1Tam), text: "Eye" },
- ],
- correctWord: "Eye",
- audio: getAssetAudioUrl(s3Assets.eyeR1TamAudio),
- flowName: "P1",
- },
- {
- allwords: [
- { img: getAssetUrl(s3Assets.sandM1Tam), text: "Soil" },
- { img: getAssetUrl(s3Assets.stoneR1Tam), text: "Stone" },
- { img: getAssetUrl(s3Assets.penR1Tam), text: "Pen" },
- ],
- correctWord: "Soil",
- audio: getAssetAudioUrl(s3Assets.soilR1TamAudio),
- flowName: "P2",
- },
- {
- allwords: [
- { img: getAssetUrl(s3Assets.mountainR1Tam), text: "Mountain" },
- { img: getAssetUrl(s3Assets.elephantR1Tam), text: "Elephant" },
- { img: getAssetUrl(s3Assets.leafR1Tam), text: "Leaf" },
- ],
- correctWord: "Mountain",
- audio: getAssetAudioUrl(s3Assets.mountainR1TamAudio),
- flowName: "P3",
- },
- {
- allwords: [
- { img: getAssetUrl(s3Assets.plantR1Tam), text: "Plant" },
- { img: getAssetUrl(s3Assets.clothR1Tam), text: "Cloth" },
- { img: getAssetUrl(s3Assets.basketR1Tam), text: "Basket" },
- ],
- correctWord: "Cloth",
- audio: getAssetAudioUrl(s3Assets.clothR1TamAudio),
- flowName: "P4",
- },
- {
- allwords: [
- { img: getAssetUrl(s3Assets.dosaR1Tam), text: "Dosa" },
- { img: getAssetUrl(s3Assets.flagR1Tam), text: "Flag" },
- { img: getAssetUrl(s3Assets.bellR1Tam), text: "Bell" },
- ],
- correctWord: "Dosa",
- audio: getAssetAudioUrl(s3Assets.dosaAudio),
- flowName: "P5",
- },
- {
- allwords: [
- { img: getAssetUrl(s3Assets.teethR1Tam), text: "Teeth" },
- { img: getAssetUrl(s3Assets.drinkR1Tam), text: "Drink" },
- { img: getAssetUrl(s3Assets.cowR1Tam), text: "Cow" },
- ],
- correctWord: "Teeth",
- audio: getAssetAudioUrl(s3Assets.toothAudio),
- flowName: "P6",
- },
- {
- allwords: [
- { img: getAssetUrl(s3Assets.fishR1Tam), text: "Fish" },
- { img: getAssetUrl(s3Assets.parrotR1Tam), text: "Parrot" },
- { img: getAssetUrl(s3Assets.tableR1Tam), text: "Table" },
- ],
- correctWord: "Fish",
- audio: getAssetAudioUrl(s3Assets.fishR1TamAudio),
- flowName: "P7",
- },
- {
- allwords: [
- { img: getAssetUrl(s3Assets.dosaR1Tam), text: "Vada" },
- { img: getAssetUrl(s3Assets.jarR1Tam), text: "Jar" },
- { img: getAssetUrl(s3Assets.flagR1Tam), text: "Flag" },
- ],
- correctWord: "Vada",
- audio: getAssetAudioUrl(s3Assets.vadaR1TamAudio),
- flowName: "P8",
- },
- {
- allwords: [
- { img: getAssetUrl(s3Assets.catR1Tam), text: "Cat" },
- { img: getAssetUrl(s3Assets.stoneR1Tam), text: "Stone" },
- { img: getAssetUrl(s3Assets.nestR1Tam), text: "Nest" },
- ],
- correctWord: "Stone",
- audio: getAssetAudioUrl(s3Assets.stoneR1TamAudio),
- flowName: "P9",
- },
- {
- allwords: [
- { img: getAssetUrl(s3Assets.tableR1Tam), text: "Table" },
- { img: getAssetUrl(s3Assets.henR1Tam), text: "Hen" },
- { img: getAssetUrl(s3Assets.swordR1Tam), text: "Sword" },
- ],
- correctWord: "Table",
- audio: getAssetAudioUrl(s3Assets.tableAudio),
- flowName: "P10",
- },
- {
- allwords: [
- { img: getAssetUrl(s3Assets.happyR1), text: "Happy" },
- { img: getAssetUrl(s3Assets.bellR1Tam), text: "Bell" },
- { img: getAssetUrl(s3Assets.tortoiseR1Tam), text: "Tortoise" },
- ],
- correctWord: "Happy",
- audio: getAssetAudioUrl(s3Assets.happpyAudio),
- flowName: "P11",
- },
- {
- allwords: [
- { img: getAssetUrl(s3Assets.penR1Tam), text: "Pen" },
- { img: getAssetUrl(s3Assets.catR1Tam), text: "Cat" },
- { img: getAssetUrl(s3Assets.ratR1Tam), text: "Rat" },
- ],
- correctWord: "Rat",
- audio: getAssetAudioUrl(s3Assets.ratR1TamAudio),
- flowName: "P12",
- },
- {
- allwords: [
- { img: getAssetUrl(s3Assets.eyeR1Tam), text: "Eye" },
- { img: getAssetUrl(s3Assets.moonR1Tam), text: "Moon" },
- { img: getAssetUrl(s3Assets.catR1Tam), text: "Cat" },
- ],
- correctWord: "Cat",
- audio: getAssetAudioUrl(s3Assets.catR1TamAudio),
- flowName: "P13",
- },
- {
- allwords: [
- { img: getAssetUrl(s3Assets.henR1Tam), text: "Hen" },
- { img: getAssetUrl(s3Assets.parrotR1Tam), text: "Parrot" },
- { img: getAssetUrl(s3Assets.soilR1Tam), text: "Soil" },
- ],
- correctWord: "Hen",
- audio: getAssetAudioUrl(s3Assets.henR1TamAudio),
- flowName: "P14",
- },
- {
- allwords: [
- { img: getAssetUrl(s3Assets.moustacheR1Tam), text: "Moustache" },
- { img: getAssetUrl(s3Assets.nestR1Tam), text: "Nest" },
- { img: getAssetUrl(s3Assets.elephantR1Tam), text: "Elephant" },
- ],
- correctWord: "Nest",
- audio: getAssetAudioUrl(s3Assets.nestR1TamAudio),
- flowName: "P15",
- },
- {
- allwords: [
- { img: getAssetUrl(s3Assets.honeyR1TamImage), text: "Honey" },
- { img: getAssetUrl(s3Assets.rainR1TamImage), text: "Rain" },
- { img: getAssetUrl(s3Assets.jumpR1TamImage), text: "Jump" },
- ],
- correctWord: "Honey",
- audio: getAssetAudioUrl(s3Assets.honeyR1TamAudio),
- flowName: "P16",
- },
- {
- allwords: [
- { img: getAssetUrl(s3Assets.drumR1TamImage), text: "Drum" },
- { img: getAssetUrl(s3Assets.umbrellaR1TamImage), text: "Umbrella" },
- { img: getAssetUrl(s3Assets.headR1TamImage), text: "Head" },
- ],
- correctWord: "Drum",
- audio: getAssetAudioUrl(s3Assets.drumR1TamAudio),
- flowName: "P17",
- },
- {
- allwords: [
- { img: getAssetUrl(s3Assets.muscleR1TamImage), text: "Muscle" },
- { img: getAssetUrl(s3Assets.laughR1TamImage), text: "Laugh" },
- { img: getAssetUrl(s3Assets.roseR1TamImage), text: "Rose" },
- ],
- correctWord: "Rose",
- audio: getAssetAudioUrl(s3Assets.roseR1TamAudio),
- flowName: "P18",
- },
- {
- allwords: [
- { img: getAssetUrl(s3Assets.houseR1TamImage), text: "House" },
- { img: getAssetUrl(s3Assets.bellR1TamImage), text: "Bell" },
- { img: getAssetUrl(s3Assets.musicR1TamImage), text: "Music" },
- ],
- correctWord: "House",
- audio: getAssetAudioUrl(s3Assets.houseR1TamAudio),
- flowName: "P19",
- },
- {
- allwords: [
- { img: getAssetUrl(s3Assets.snowR1TamImage), text: "Snow" },
- { img: getAssetUrl(s3Assets.meatR1TamImage), text: "Meat" },
- { img: getAssetUrl(s3Assets.alcoholR1TamImage), text: "Alcohol" },
- ],
- correctWord: "Snow",
- audio: getAssetAudioUrl(s3Assets.snowR1TamAudio),
- flowName: "P20",
- },
- {
- allwords: [
- { img: getAssetUrl(s3Assets.flagR1TamImage), text: "FLag" },
- { img: getAssetUrl(s3Assets.personR1TamImage), text: "Person" },
- { img: getAssetUrl(s3Assets.runR1TamImage), text: "Run" },
- ],
- correctWord: "FLag",
- audio: getAssetAudioUrl(s3Assets.flagR1TamAudio),
- flowName: "P21",
- },
- {
- allwords: [
- { img: getAssetUrl(s3Assets.infantR1TamImage), text: "Infant" },
- { img: getAssetUrl(s3Assets.cookR1TamImage), text: "Cook" },
- { img: getAssetUrl(s3Assets.leafR1TamImage), text: "Leaf" },
- ],
- correctWord: "Leaf",
- audio: getAssetAudioUrl(s3Assets.leafR1TamAudio),
- flowName: "P22",
- },
- {
- allwords: [
- { img: getAssetUrl(s3Assets.mosquitoR1TamImage), text: "Mosquito" },
- { img: getAssetUrl(s3Assets.tortoiseR1TamImage), text: "Tortoise" },
- { img: getAssetUrl(s3Assets.jumpR1TamImage), text: "Jump" },
- ],
- correctWord: "Mosquito",
- audio: getAssetAudioUrl(s3Assets.mosquitoR1TamAudio),
- flowName: "P23",
- },
- {
- allwords: [
- { img: getAssetUrl(s3Assets.umbrellaR1TamImage), text: "Umbrella" },
- { img: getAssetUrl(s3Assets.headR1TamImage), text: "Head" },
- { img: getAssetUrl(s3Assets.muscleR1TamImage), text: "Muscle" },
- ],
- correctWord: "Umbrella",
- audio: getAssetAudioUrl(s3Assets.umbrellaR1TamAudio),
- flowName: "P24",
- },
- {
- allwords: [
- { img: getAssetUrl(s3Assets.laughR1TamImage), text: "Laugh" },
- { img: getAssetUrl(s3Assets.musicR1TamImage), text: "Music" },
- { img: getAssetUrl(s3Assets.houseR1TamImage), text: "House" },
- ],
- correctWord: "Laugh",
- audio: getAssetAudioUrl(s3Assets.laughR1TamAudio),
- flowName: "P25",
- },
- {
- allwords: [
- { img: getAssetUrl(s3Assets.meatR1TamImage), text: "Meat" },
- { img: getAssetUrl(s3Assets.alcoholR1TamImage), text: "Alcohol" },
- { img: getAssetUrl(s3Assets.thunderR1TamImage), text: "Thunder" },
- ],
- correctWord: "Meat",
- audio: getAssetAudioUrl(s3Assets.meatR1TamAudio),
- flowName: "P26",
- },
- {
- allwords: [
- { img: getAssetUrl(s3Assets.personR1TamImage), text: "Person" },
- { img: getAssetUrl(s3Assets.runR1TamImage), text: "Run" },
- { img: getAssetUrl(s3Assets.infantR1TamImage), text: "Infant" },
- ],
- correctWord: "Run",
- audio: getAssetAudioUrl(s3Assets.runR1TamAudio),
- flowName: "P27",
- },
- {
- allwords: [
- { img: getAssetUrl(s3Assets.elephantR1TamImage), text: "Elephant" },
- { img: getAssetUrl(s3Assets.mosquitoR1TamImage), text: "Mosquito" },
- { img: getAssetUrl(s3Assets.tortoiseR1TamImage), text: "Tortoise" },
- ],
- correctWord: "Elephant",
- audio: getAssetAudioUrl(s3Assets.elephantR1TamAudio),
- flowName: "P28",
- },
- {
- allwords: [
- { img: getAssetUrl(s3Assets.headR1TamImage), text: "Head" },
- { img: getAssetUrl(s3Assets.muscleR1TamImage), text: "Muscle" },
- { img: getAssetUrl(s3Assets.laughR1TamImage), text: "Laugh" },
- ],
- correctWord: "Head",
- audio: getAssetAudioUrl(s3Assets.headR1TamAudio),
- flowName: "P29",
- },
- {
- allwords: [
- { img: getAssetUrl(s3Assets.musicR1TamImage), text: "Music" },
- { img: getAssetUrl(s3Assets.houseR1TamImage), text: "House" },
- { img: getAssetUrl(s3Assets.meatR1TamImage), text: "Meat" },
- ],
- correctWord: "Music",
- audio: getAssetAudioUrl(s3Assets.musicR1TamAudio),
- flowName: "P30",
- },
- {
- allwords: [
- { img: getAssetUrl(s3Assets.alcoholR1TamImage), text: "Alcohol" },
- { img: getAssetUrl(s3Assets.thunderR1TamImage), text: "Thunder" },
- { img: getAssetUrl(s3Assets.personR1TamImage), text: "Person" },
- ],
- correctWord: "Alcohol",
- audio: getAssetAudioUrl(s3Assets.alcoholR1TamAudio),
- flowName: "P31",
- },
- {
- allwords: [
- { img: getAssetUrl(s3Assets.runR1TamImage), text: "Run" },
- { img: getAssetUrl(s3Assets.infantR1TamImage), text: "Infant" },
- { img: getAssetUrl(s3Assets.cookR1TamImage), text: "Cook" },
- ],
- correctWord: "Infant",
- audio: getAssetAudioUrl(s3Assets.infantR1TamAudio),
- flowName: "P32",
- },
- {
- allwords: [
- { img: getAssetUrl(s3Assets.mosquitoR1TamImage), text: "Mosquito" },
- { img: getAssetUrl(s3Assets.basketR1TamImage), text: "Basket" },
- { img: getAssetUrl(s3Assets.jumpR1TamImage), text: "Jump" },
- ],
- correctWord: "Basket",
- audio: getAssetAudioUrl(s3Assets.basketR1TamAudio),
- flowName: "P33",
- },
- {
- allwords: [
- { img: getAssetUrl(s3Assets.rainR1TamImage), text: "Rain" },
- { img: getAssetUrl(s3Assets.drumR1TamImage), text: "Drum" },
- { img: getAssetUrl(s3Assets.roseR1TamImage), text: "Rose" },
- ],
- correctWord: "Rain",
- audio: getAssetAudioUrl(s3Assets.rainR1TamAudio),
- flowName: "P34",
- },
- {
- allwords: [
- { img: getAssetUrl(s3Assets.muscleR1TamImage), text: "Muscle" },
- { img: getAssetUrl(s3Assets.houseR1TamImage), text: "House" },
- { img: getAssetUrl(s3Assets.snowR1TamImage), text: "Snow" },
- ],
- correctWord: "Muscle",
- audio: getAssetAudioUrl(s3Assets.muscleR1TamAudio),
- flowName: "P35",
- },
- {
- allwords: [
- { img: getAssetUrl(s3Assets.bellR1TamImage), text: "Bell" },
- { img: getAssetUrl(s3Assets.musicR1TamImage), text: "Music" },
- { img: getAssetUrl(s3Assets.honeyR1TamImage), text: "Honey" },
- ],
- correctWord: "Bell",
- audio: getAssetAudioUrl(s3Assets.bellR1TamAudio),
- flowName: "P36",
- },
- {
- allwords: [
- { img: getAssetUrl(s3Assets.personR1TamImage), text: "Person" },
- { img: getAssetUrl(s3Assets.runR1TamImage), text: "Run" },
- { img: getAssetUrl(s3Assets.headR1TamImage), text: "Head" },
- ],
- correctWord: "Person",
- audio: getAssetAudioUrl(s3Assets.personR1TamAudio),
- flowName: "P37",
- },
- {
- allwords: [
- { img: getAssetUrl(s3Assets.jumpR1TamImage), text: "Jump" },
- { img: getAssetUrl(s3Assets.umbrellaR1TamImage), text: "Umbrella" },
- { img: getAssetUrl(s3Assets.laughR1TamImage), text: "Laugh" },
- ],
- correctWord: "Jump",
- audio: getAssetAudioUrl(s3Assets.jumpR1TamAudio),
- flowName: "P38",
- },
- {
- allwords: [
- { img: getAssetUrl(s3Assets.cookR1TamImage), text: "Cook" },
- { img: getAssetUrl(s3Assets.jarR1TamImage), text: "Jar" },
- { img: getAssetUrl(s3Assets.rainR1TamImage), text: "Rain" },
- ],
- correctWord: "Jar",
- audio: getAssetAudioUrl(s3Assets.jarR1TamAudio),
- flowName: "P39",
- },
- {
- allwords: [
- { img: getAssetUrl(s3Assets.drumR1TamImage), text: "Drum" },
- { img: getAssetUrl(s3Assets.roseR1TamImage), text: "Rose" },
- { img: getAssetUrl(s3Assets.muscleR1TamImage), text: "Muscle" },
- ],
- correctWord: "Drum",
- audio: getAssetAudioUrl(s3Assets.drumR1TamAudio),
- flowName: "P40",
- },
- {
- allwords: [
- { img: getAssetUrl(s3Assets.honeyR1TamImage), text: "Honey" },
- { img: getAssetUrl(s3Assets.rainR1TamImage), text: "Rain" },
- { img: getAssetUrl(s3Assets.thunderR1TamImage), text: "Thunder" },
- ],
- correctWord: "Honey",
- audio: getAssetAudioUrl(s3Assets.honeyR1TamAudio),
- flowName: "P41",
- },
- {
- allwords: [
- { img: getAssetUrl(s3Assets.snowR1TamImage), text: "Snow" },
- { img: getAssetUrl(s3Assets.meatR1TamImage), text: "Meat" },
- { img: getAssetUrl(s3Assets.alcoholR1TamImage), text: "Alcohol" },
- ],
- correctWord: "Alcohol",
- audio: getAssetAudioUrl(s3Assets.alcoholR1TamAudio),
- flowName: "P42",
- },
- {
- allwords: [
- { img: getAssetUrl(s3Assets.infantR1TamImage), text: "Infant" },
- { img: getAssetUrl(s3Assets.mosquitoR1TamImage), text: "Mosquito" },
- { img: getAssetUrl(s3Assets.tortoiseR1TamImage), text: "Tortoise" },
- ],
- correctWord: "Infant",
- audio: getAssetAudioUrl(s3Assets.infantR1TamAudio),
- flowName: "P43",
- },
- {
- allwords: [
- { img: getAssetUrl(s3Assets.umbrellaR1TamImage), text: "Umbrella" },
- { img: getAssetUrl(s3Assets.laughR1TamImage), text: "Laugh" },
- { img: getAssetUrl(s3Assets.musicR1TamImage), text: "Music" },
- ],
- correctWord: "Music",
- audio: getAssetAudioUrl(s3Assets.musicR1TamAudio),
- flowName: "P44",
- },
- {
- allwords: [
- { img: getAssetUrl(s3Assets.personR1TamImage), text: "Person" },
- { img: getAssetUrl(s3Assets.runR1TamImage), text: "Run" },
- { img: getAssetUrl(s3Assets.cookR1TamImage), text: "Cook" },
- ],
- correctWord: "Cook",
- audio: getAssetAudioUrl(s3Assets.cookR1TamAudio),
- flowName: "P45",
- },
- {
- allwords: [
- { img: getAssetUrl(s3Assets.headR1TamImage), text: "Head" },
- { img: getAssetUrl(s3Assets.muscleR1TamImage), text: "Muscle" },
- { img: getAssetUrl(s3Assets.houseR1TamImage), text: "House" },
- ],
- correctWord: "House",
- audio: getAssetAudioUrl(s3Assets.houseR1TamAudio),
- flowName: "P46",
- },
- {
- allwords: [
- { img: getAssetUrl(s3Assets.jumpR1TamImage), text: "Jump" },
- { img: getAssetUrl(s3Assets.roseR1TamImage), text: "Rose" },
- { img: getAssetUrl(s3Assets.drumR1TamImage), text: "Drum" },
- ],
- correctWord: "Rose",
- audio: getAssetAudioUrl(s3Assets.roseR1TamAudio),
- flowName: "P47",
- },
- {
- allwords: [
- { img: getAssetUrl(s3Assets.thunderR1TamImage), text: "Thunder" },
- { img: getAssetUrl(s3Assets.rainR1TamImage), text: "Rain" },
- { img: getAssetUrl(s3Assets.honeyR1TamImage), text: "Honey" },
- ],
- correctWord: "Thunder",
- audio: getAssetAudioUrl(s3Assets.thunderR1TamAudio),
- flowName: "P48",
- },
- {
- allwords: [
- { img: getAssetUrl(s3Assets.maleR1TamImage), text: "Male" },
- { img: getAssetUrl(s3Assets.infantR1TamImage), text: "Infant" },
- { img: getAssetUrl(s3Assets.swordR1TamImage), text: "Sword" },
- ],
- correctWord: "Sword",
- audio: getAssetAudioUrl(s3Assets.swordR1TamAudio),
- flowName: "P49",
- },
- {
- allwords: [
- { img: getAssetUrl(s3Assets.tortoiseR1TamImage), text: "Tortoise" },
- { img: getAssetUrl(s3Assets.jumpR1TamImage), text: "Jump" },
- { img: getAssetUrl(s3Assets.umbrellaR1TamImage), text: "Umbrella" },
- ],
- correctWord: "Tortoise",
- audio: getAssetAudioUrl(s3Assets.tortoiseR1TamAudio),
- flowName: "P50",
- },
+ {
+ id: 3,
+ images: [
+ getAssetUrl(s3Assets.R1),
+ getAssetUrl(s3Assets.R3_1),
+ getAssetUrl(s3Assets.R3_2),
+ ],
+ audios: [
+ getAssetAudioUrl(s3Assets.RA1ato15a),
+ getAssetAudioUrl(s3Assets.RA3b),
+ getAssetAudioUrl(s3Assets.RA3c),
],
},
- kn: {
- L1: [
- {
- allwords: [
- { img: getAssetUrl(s3Assets.crowR1KanImage), text: "Crow" },
- { img: getAssetUrl(s3Assets.cowR1KanImage), text: "Cow" },
- { img: getAssetUrl(s3Assets.snakeR1KanImage), text: "Snake" },
- ],
- correctWord: "Cow",
- audio: getAssetAudioUrl(s3Assets.cowR1KanAudio),
- flowName: "P1",
- },
- {
- allwords: [
- { img: getAssetUrl(s3Assets.treeR1KanImage), text: "Tree" },
- { img: getAssetUrl(s3Assets.pigR1KanImage), text: "Pig" },
- { img: getAssetUrl(s3Assets.glassR1KanImage), text: "Glass" },
- ],
- correctWord: "Tree",
- audio: getAssetAudioUrl(s3Assets.TreeKan),
- flowName: "P2",
- },
- {
- allwords: [
- { img: getAssetUrl(s3Assets.mangoR1KanImage), text: "Mango" },
- { img: getAssetUrl(s3Assets.juiceR1KanImage), text: "Juice" },
- { img: getAssetUrl(s3Assets.monkeyR1KanImage), text: "Monkey" },
- ],
- correctWord: "Juice",
- audio: getAssetAudioUrl(s3Assets.RasajuiceKan),
- flowName: "P3",
- },
- {
- allwords: [
- { img: getAssetUrl(s3Assets.ratR1KanImage), text: "Rat" },
- { img: getAssetUrl(s3Assets.spiderR1KanImage), text: "Spider" },
- { img: getAssetUrl(s3Assets.cloudR1KanImage), text: "Cloud" },
- ],
- correctWord: "Rat",
- audio: getAssetAudioUrl(s3Assets.ratR1KanAudio),
- flowName: "P4",
- },
- {
- allwords: [
- { img: getAssetUrl(s3Assets.farmerR1KanImage), text: "Farmer" },
- { img: getAssetUrl(s3Assets.fanR1KanImage), text: "Fan" },
- { img: getAssetUrl(s3Assets.featherR1KanImage), text: "Feather" },
- ],
- correctWord: "Feather",
- audio: getAssetAudioUrl(s3Assets.featherR1KanAudio),
- flowName: "P5",
- },
- {
- allwords: [
- { img: getAssetUrl(s3Assets.leafR1KanImage), text: "Leaf" },
- { img: getAssetUrl(s3Assets.noseR1KanImage), text: "Nose" },
- { img: getAssetUrl(s3Assets.laughR1KanImage), text: "Laugh" },
- ],
- correctWord: "Laugh",
- audio: getAssetAudioUrl(s3Assets.laughR1KanAudio),
- flowName: "P6",
- },
- {
- allwords: [
- { img: getAssetUrl(s3Assets.fanR1KanImage), text: "Fan" },
- { img: getAssetUrl(s3Assets.jarR1KanImage), text: "Jar" },
- { img: getAssetUrl(s3Assets.wolfR1KanImage), text: "Wolf" },
- ],
- correctWord: "Fan",
- audio: getAssetAudioUrl(s3Assets.fanR1KanAudio),
- flowName: "P7",
- },
- {
- allwords: [
- { img: getAssetUrl(s3Assets.pigR1KanImage), text: "Pig" },
- { img: getAssetUrl(s3Assets.elephantR1KanImage), text: "Elephant" },
- { img: getAssetUrl(s3Assets.shirtR1KanImage), text: "Shirt" },
- ],
- correctWord: "Pig",
- audio: getAssetAudioUrl(s3Assets.pigR1KanAudio),
- flowName: "P8",
- },
- {
- allwords: [
- { img: getAssetUrl(s3Assets.ratR1KanImage), text: "Rat" },
- { img: getAssetUrl(s3Assets.leafR1KanImage), text: "Leaf" },
- { img: getAssetUrl(s3Assets.honybeeR1KanImage), text: "Honeybee" },
- ],
- correctWord: "Leaf",
- audio: getAssetAudioUrl(s3Assets.leafR1KanAudio),
- flowName: "P9",
- },
- {
- allwords: [
- { img: getAssetUrl(s3Assets.spiderR1KanImage), text: "Spider" },
- { img: getAssetUrl(s3Assets.plantR1KanImage), text: "Plant" },
- { img: getAssetUrl(s3Assets.featherR1KanImage), text: "Feather" },
- ],
- correctWord: "Spider",
- audio: getAssetAudioUrl(s3Assets.spiderR1KanAudio),
- flowName: "P10",
- },
- {
- allwords: [
- { img: getAssetUrl(s3Assets.carR1KanImage), text: "Car" },
- { img: getAssetUrl(s3Assets.parrotR1KanImage), text: "Parrot" },
- { img: getAssetUrl(s3Assets.glassR1KanImage), text: "Glass" },
- ],
- correctWord: "Car",
- audio: getAssetAudioUrl(s3Assets.carR1KanAudio),
- flowName: "P11",
- },
- {
- allwords: [
- { img: getAssetUrl(s3Assets.legR1KanImage), text: "Leg" },
- { img: getAssetUrl(s3Assets.treeR1KanImage), text: "Tree" },
- { img: getAssetUrl(s3Assets.snakeR1KanImage), text: "Snake" },
- ],
- correctWord: "Leg",
- audio: getAssetAudioUrl(s3Assets.legR1KanAudio),
- flowName: "P12",
- },
- {
- allwords: [
- { img: getAssetUrl(s3Assets.parrotR1KanImage), text: "Parrot" },
- { img: getAssetUrl(s3Assets.monkeyR1KanImage), text: "Monkey" },
- { img: getAssetUrl(s3Assets.cowR1KanImage), text: "Cow" },
- ],
- correctWord: "Parrot",
- audio: getAssetAudioUrl(s3Assets.parrotR1KanAudio),
- flowName: "P13",
- },
- {
- allwords: [
- { img: getAssetUrl(s3Assets.shirtR1KanImage), text: "Shirt" },
- { img: getAssetUrl(s3Assets.farmerR1KanImage), text: "Farmer" },
- { img: getAssetUrl(s3Assets.milkR1KanImage), text: "Milk" },
- ],
- correctWord: "Farmer",
- audio: getAssetAudioUrl(s3Assets.farmerR1KanAudio),
- flowName: "P14",
- },
- {
- allwords: [
- { img: getAssetUrl(s3Assets.pigR1KanImage), text: "Pig" },
- { img: getAssetUrl(s3Assets.monkeyR1KanImage), text: "Monkey" },
- { img: getAssetUrl(s3Assets.lionR1KanImage), text: "Lion" },
- ],
- correctWord: "Lion",
- audio: getAssetAudioUrl(s3Assets.lionKan),
- flowName: "P15",
- },
-
- {
- allwords: [
- { img: getAssetUrl(s3Assets.fireR1Kan), text: "Fire" },
- { img: getAssetUrl(s3Assets.pocketR1Kan), text: "Pocket" },
- { img: getAssetUrl(s3Assets.ballR1Kan), text: "Ball" },
- ],
- correctWord: "Pocket",
- audio: getAssetAudioUrl(s3Assets.PocketR1KanAudio),
- flowName: "P16",
- },
- {
- allwords: [
- { img: getAssetUrl(s3Assets.jeepR1Kan), text: "Jeep" },
- { img: getAssetUrl(s3Assets.riverR1Kan), text: "River" },
- { img: getAssetUrl(s3Assets.kneeR1Kan), text: "Knee" },
- ],
- correctWord: "River",
- audio: getAssetAudioUrl(s3Assets.RiverR1KanAudio),
- flowName: "P17",
- },
- {
- allwords: [
- { img: getAssetUrl(s3Assets.scorpionR1Kan), text: "Scorpion" },
- { img: getAssetUrl(s3Assets.henR1Kan), text: "Hen" },
- {
- img: getAssetUrl(s3Assets.autorickshawR1Kan),
- text: "Autorickshaw",
- },
- ],
- correctWord: "Hen",
- audio: getAssetAudioUrl(s3Assets.HenR1KanAudio),
- flowName: "P18",
- },
- {
- allwords: [
- { img: getAssetUrl(s3Assets.appleR1Kan), text: "Apple" },
- { img: getAssetUrl(s3Assets.trainR1Kan), text: "Train" },
- { img: getAssetUrl(s3Assets.tailR1Kan), text: "Tail" },
- ],
- correctWord: "Tail",
- audio: getAssetAudioUrl(s3Assets.TailR1KanAudio),
- flowName: "P19",
- },
- {
- allwords: [
- { img: getAssetUrl(s3Assets.maleR1Kan), text: "Male" },
- { img: getAssetUrl(s3Assets.babyR1Kan), text: "Baby" },
- { img: getAssetUrl(s3Assets.capR1Kan), text: "Cap" },
- ],
- correctWord: "Cap",
- audio: getAssetAudioUrl(s3Assets.CapR1KanAudio),
- flowName: "P20",
- },
- {
- allwords: [
- { img: getAssetUrl(s3Assets.footR1Kan), text: "Foot" },
- { img: getAssetUrl(s3Assets.matR1Kan), text: "Mat" },
- { img: getAssetUrl(s3Assets.mugR1Kan), text: "Mug" },
- ],
- correctWord: "Mug",
- audio: getAssetAudioUrl(s3Assets.MugR1KanAudio),
- flowName: "P21",
- },
- {
- allwords: [
- { img: getAssetUrl(s3Assets.tortoiseR1Kan), text: "Tortoise" },
- { img: getAssetUrl(s3Assets.milkR1Kan), text: "Milk" },
- { img: getAssetUrl(s3Assets.treeR1Kan), text: "Tree" },
- ],
- correctWord: "Tortoise",
- audio: getAssetAudioUrl(s3Assets.TortiseR1KanAudio),
- flowName: "P22",
- },
- {
- allwords: [
- { img: getAssetUrl(s3Assets.elephantR1Kan), text: "Elephant" },
- { img: getAssetUrl(s3Assets.juiceR1Kan), text: "Juice" },
- { img: getAssetUrl(s3Assets.noseR1Kan), text: "Nose" },
- ],
- correctWord: "Juice",
- audio: getAssetAudioUrl(s3Assets.RasajuiceKan),
- flowName: "P23",
- },
- {
- allwords: [
- { img: getAssetUrl(s3Assets.mangoR1Kan), text: "Mango" },
- { img: getAssetUrl(s3Assets.snakeR1Kan), text: "Snake" },
- { img: getAssetUrl(s3Assets.glassR1Kan), text: "Glass" },
- ],
- correctWord: "Snake",
- audio: getAssetAudioUrl(s3Assets.SnakeR1KanAudio),
- flowName: "P24",
- },
- {
- allwords: [
- { img: getAssetUrl(s3Assets.leafR1Kan), text: "Leaf" },
- { img: getAssetUrl(s3Assets.laughR1Kan), text: "Laugh" },
- { img: getAssetUrl(s3Assets.spiderR1Kan), text: "Spider" },
- ],
- correctWord: "Spider",
- audio: getAssetAudioUrl(s3Assets.spiderR1KanAudio),
- flowName: "P25",
- },
- {
- allwords: [
- { img: getAssetUrl(s3Assets.ratR1Kan), text: "Rat" },
- { img: getAssetUrl(s3Assets.plantR1Kan), text: "Plant" },
- { img: getAssetUrl(s3Assets.carR1Kan), text: "Car" },
- ],
- correctWord: "Car",
- audio: getAssetAudioUrl(s3Assets.carR1KanAudio),
- flowName: "P26",
- },
- {
- allwords: [
- { img: getAssetUrl(s3Assets.honybeeR1Kan), text: "Honeybee" },
- { img: getAssetUrl(s3Assets.parrotR1Kan), text: "Parrot" },
- { img: getAssetUrl(s3Assets.cowR1Kan), text: "Cow" },
- ],
- correctWord: "Parrot",
- audio: getAssetAudioUrl(s3Assets.parrotR1KanAudio),
- flowName: "P27",
- },
- {
- allwords: [
- { img: getAssetUrl(s3Assets.monkeyR1Kan), text: "Monkey" },
- { img: getAssetUrl(s3Assets.lionR1Kan), text: "Lion" },
- { img: getAssetUrl(s3Assets.shirtR1Kan), text: "Shirt" },
- ],
- correctWord: "Monkey",
- audio: getAssetAudioUrl(s3Assets.MonkeyR1KanAudio),
- flowName: "P28",
- },
- {
- allwords: [
- { img: getAssetUrl(s3Assets.pigR1Kan), text: "Pig" },
- { img: getAssetUrl(s3Assets.legR1Kan), text: "Leg" },
- { img: getAssetUrl(s3Assets.wolfR1Kan), text: "Wolf" },
- ],
- correctWord: "Leg",
- audio: getAssetAudioUrl(s3Assets.legR1KanAudio),
- flowName: "P29",
- },
- {
- allwords: [
- { img: getAssetUrl(s3Assets.crowR1Kan), text: "Crow" },
- { img: getAssetUrl(s3Assets.cloudR1Kan), text: "Cloud" },
- { img: getAssetUrl(s3Assets.featherR1Kan), text: "Feather" },
- ],
- correctWord: "Feather",
- audio: getAssetAudioUrl(s3Assets.featherR1KanAudio),
- flowName: "P30",
- },
- {
- allwords: [
- { img: getAssetUrl(s3Assets.fanR1Kan), text: "Fan" },
- { img: getAssetUrl(s3Assets.jarR1Kan), text: "Jar" },
- { img: getAssetUrl(s3Assets.farmerR1Kan), text: "Farmer" },
- ],
- correctWord: "Jar",
- audio: getAssetAudioUrl(s3Assets.JarR1KanAudio),
- flowName: "P31",
- },
- {
- allwords: [
- { img: getAssetUrl(s3Assets.trainR1Kan), text: "Train" },
- { img: getAssetUrl(s3Assets.appleR1Kan), text: "Apple" },
- { img: getAssetUrl(s3Assets.tailR1Kan), text: "Tail" },
- ],
- correctWord: "Train",
- audio: getAssetAudioUrl(s3Assets.TrainR1KanAudio),
- flowName: "P32",
- },
- {
- allwords: [
- { img: getAssetUrl(s3Assets.maleR1Kan), text: "Male" },
- { img: getAssetUrl(s3Assets.babyR1Kan), text: "Baby" },
- { img: getAssetUrl(s3Assets.capR1Kan), text: "Cap" },
- ],
- correctWord: "Male",
- audio: getAssetAudioUrl(s3Assets.MaleR1KanAudio),
- flowName: "P33",
- },
- {
- allwords: [
- { img: getAssetUrl(s3Assets.footR1Kan), text: "Foot" },
- { img: getAssetUrl(s3Assets.matR1Kan), text: "Mat" },
- { img: getAssetUrl(s3Assets.mugR1Kan), text: "Mug" },
- ],
- correctWord: "Foot",
- audio: getAssetAudioUrl(s3Assets.FootR1KanAudio),
- flowName: "P34",
- },
- {
- allwords: [
- { img: getAssetUrl(s3Assets.tortoiseR1Kan), text: "Tortoise" },
- { img: getAssetUrl(s3Assets.milkR1Kan), text: "Milk" },
- { img: getAssetUrl(s3Assets.treeR1Kan), text: "Tree" },
- ],
- correctWord: "Tree",
- audio: getAssetAudioUrl(s3Assets.TreeKan),
- flowName: "P35",
- },
- {
- allwords: [
- { img: getAssetUrl(s3Assets.elephantR1Kan), text: "Elephant" },
- { img: getAssetUrl(s3Assets.juiceR1Kan), text: "Juice" },
- { img: getAssetUrl(s3Assets.noseR1Kan), text: "Nose" },
- ],
- correctWord: "Elephant",
- audio: getAssetAudioUrl(s3Assets.ElephantR1KanAudio),
- flowName: "P36",
- },
- {
- allwords: [
- { img: getAssetUrl(s3Assets.mangoR1Kan), text: "Mango" },
- { img: getAssetUrl(s3Assets.snakeR1Kan), text: "Snake" },
- { img: getAssetUrl(s3Assets.glassR1Kan), text: "Glass" },
- ],
- correctWord: "Mango",
- audio: getAssetAudioUrl(s3Assets.MangoR1KanAudio),
- flowName: "P37",
- },
- {
- allwords: [
- { img: getAssetUrl(s3Assets.leafR1Kan), text: "Leaf" },
- { img: getAssetUrl(s3Assets.laughR1Kan), text: "Laugh" },
- { img: getAssetUrl(s3Assets.spiderR1Kan), text: "Spider" },
- ],
- correctWord: "Laugh",
- audio: getAssetAudioUrl(s3Assets.laughR1KanAudio),
- flowName: "P38",
- },
- {
- allwords: [
- { img: getAssetUrl(s3Assets.ratR1Kan), text: "Rat" },
- { img: getAssetUrl(s3Assets.plantR1Kan), text: "Plant" },
- { img: getAssetUrl(s3Assets.carR1Kan), text: "Car" },
- ],
- correctWord: "Rat",
- audio: getAssetAudioUrl(s3Assets.ratR1KanAudio),
- flowName: "P39",
- },
- {
- allwords: [
- { img: getAssetUrl(s3Assets.honybeeR1Kan), text: "Honeybee" },
- { img: getAssetUrl(s3Assets.parrotR1Kan), text: "Parrot" },
- { img: getAssetUrl(s3Assets.cowR1Kan), text: "Cow" },
- ],
- correctWord: "Honeybee",
- audio: getAssetAudioUrl(s3Assets.HoneyR1KanAudio),
- flowName: "P40",
- },
- {
- allwords: [
- { img: getAssetUrl(s3Assets.monkeyR1Kan), text: "Monkey" },
- { img: getAssetUrl(s3Assets.lionR1Kan), text: "Lion" },
- { img: getAssetUrl(s3Assets.shirtR1Kan), text: "Shirt" },
- ],
- correctWord: "Lion",
- audio: getAssetAudioUrl(s3Assets.lionKan),
- flowName: "P41",
- },
- {
- allwords: [
- { img: getAssetUrl(s3Assets.pigR1Kan), text: "Pig" },
- { img: getAssetUrl(s3Assets.legR1Kan), text: "Leg" },
- { img: getAssetUrl(s3Assets.wolfR1Kan), text: "Wolf" },
- ],
- correctWord: "Wolf",
- audio: getAssetAudioUrl(s3Assets.wolfR1KanAudio),
- flowName: "P42",
- },
- {
- allwords: [
- { img: getAssetUrl(s3Assets.crowR1Kan), text: "Crow" },
- { img: getAssetUrl(s3Assets.cloudR1Kan), text: "Cloud" },
- { img: getAssetUrl(s3Assets.featherR1Kan), text: "Feather" },
- ],
- correctWord: "Crow",
- audio: getAssetAudioUrl(s3Assets.CrowR1KanAudio),
- flowName: "P43",
- },
- {
- allwords: [
- { img: getAssetUrl(s3Assets.fanR1Kan), text: "Fan" },
- { img: getAssetUrl(s3Assets.jarR1Kan), text: "Jar" },
- { img: getAssetUrl(s3Assets.farmerR1Kan), text: "Farmer" },
- ],
- correctWord: "Fan",
- audio: getAssetAudioUrl(s3Assets.fanR1KanAudio),
- flowName: "P44",
- },
- {
- allwords: [
- { img: getAssetUrl(s3Assets.trainR1Kan), text: "Train" },
- { img: getAssetUrl(s3Assets.appleR1Kan), text: "Apple" },
- { img: getAssetUrl(s3Assets.tailR1Kan), text: "Tail" },
- ],
- correctWord: "Apple",
- audio: getAssetAudioUrl(s3Assets.AppleR1KanAudio),
- flowName: "P45",
- },
- {
- allwords: [
- { img: getAssetUrl(s3Assets.maleR1Kan), text: "Male" },
- { img: getAssetUrl(s3Assets.babyR1Kan), text: "Baby" },
- { img: getAssetUrl(s3Assets.capR1Kan), text: "Cap" },
- ],
- correctWord: "Baby",
- audio: getAssetAudioUrl(s3Assets.BabyR1KanAudio),
- flowName: "P46",
- },
- {
- allwords: [
- { img: getAssetUrl(s3Assets.footR1Kan), text: "Foot" },
- { img: getAssetUrl(s3Assets.matR1Kan), text: "Mat" },
- { img: getAssetUrl(s3Assets.mugR1Kan), text: "Mug" },
- ],
- correctWord: "Mat",
- audio: getAssetAudioUrl(s3Assets.MatR1KanAudio),
- flowName: "P47",
- },
- {
- allwords: [
- { img: getAssetUrl(s3Assets.tortoiseR1Kan), text: "Tortoise" },
- { img: getAssetUrl(s3Assets.milkR1Kan), text: "Milk" },
- { img: getAssetUrl(s3Assets.treeR1Kan), text: "Tree" },
- ],
- correctWord: "Milk",
- audio: getAssetAudioUrl(s3Assets.MilkR1KanAudio),
- flowName: "P48",
- },
- {
- allwords: [
- { img: getAssetUrl(s3Assets.elephantR1Kan), text: "Elephant" },
- { img: getAssetUrl(s3Assets.juiceR1Kan), text: "Juice" },
- { img: getAssetUrl(s3Assets.noseR1Kan), text: "Nose" },
- ],
- correctWord: "Nose",
- audio: getAssetAudioUrl(s3Assets.NoseR1KanAudio),
- flowName: "P49",
- },
- {
- allwords: [
- { img: getAssetUrl(s3Assets.mangoR1Kan), text: "Mango" },
- { img: getAssetUrl(s3Assets.snakeR1Kan), text: "Snake" },
- { img: getAssetUrl(s3Assets.glassR1Kan), text: "Glass" },
- ],
- correctWord: "Glass",
- audio: getAssetAudioUrl(s3Assets.glassR1KanAudio),
- flowName: "P50",
- },
+ {
+ id: 4,
+ images: [
+ getAssetUrl(s3Assets.R1),
+ getAssetUrl(s3Assets.R4_1),
+ getAssetUrl(s3Assets.R4_2),
+ ],
+ audios: [
+ getAssetAudioUrl(s3Assets.RA1ato15a),
+ getAssetAudioUrl(s3Assets.RA4b),
+ getAssetAudioUrl(s3Assets.RA4c),
],
},
- te: {
- L1: [
- {
- allwords: [
- { img: getAssetUrl(s3Assets.penR1Tel), text: "Pen" },
- { img: getAssetUrl(s3Assets.mouthR1Tel), text: "Mouth" },
- { img: getAssetUrl(s3Assets.shoeR1Tel), text: "Shoe" },
- ],
- correctWord: "Mouth",
- audio: getAssetAudioUrl(s3Assets.mouthR1TelAudio),
- flowName: "P1",
- },
- {
- allwords: [
- { img: getAssetUrl(s3Assets.waterR1Tel), text: "Water" },
- { img: getAssetUrl(s3Assets.featherR1Tel), text: "Feather" },
- { img: getAssetUrl(s3Assets.schoolR1Tel), text: "School" },
- ],
- correctWord: "Water",
- audio: getAssetAudioUrl(s3Assets.waterR1TelAudio),
- flowName: "P2",
- },
- {
- allwords: [
- { img: getAssetUrl(s3Assets.swanR1Tel), text: "Swan" },
- { img: getAssetUrl(s3Assets.milkR1Tel), text: "Milk" },
- { img: getAssetUrl(s3Assets.monkeyR1Tel), text: "Monkey" },
- ],
- correctWord: "Monkey",
- audio: getAssetAudioUrl(s3Assets.monkeyR1TelAudio),
- flowName: "P3",
- },
- {
- allwords: [
- { img: getAssetUrl(s3Assets.cheethaR1Tel), text: "Cheetah" },
- { img: getAssetUrl(s3Assets.moustacheR1Tel), text: "Moustache" },
- { img: getAssetUrl(s3Assets.lockR1Tel), text: "Lock" },
- ],
- correctWord: "Moustache",
- audio: getAssetAudioUrl(s3Assets.moustacheR1TelAudio),
- flowName: "P4",
- },
- {
- allwords: [
- { img: getAssetUrl(s3Assets.antR1Tel), text: "Ant" },
- {
- img: getAssetUrl(s3Assets.autorickshawR1Tel),
- text: "Autorickshaw",
- },
- { img: getAssetUrl(s3Assets.potR1Tel), text: "Pot" },
- ],
- correctWord: "Autorickshaw",
- audio: getAssetAudioUrl(s3Assets.autorickshawR1TelAudio),
- flowName: "P5",
- },
- {
- allwords: [
- { img: getAssetUrl(s3Assets.snakeR1Tel), text: "Snake" },
- { img: getAssetUrl(s3Assets.leafR1Tel), text: "Leaf" },
- { img: getAssetUrl(s3Assets.shipR1Tel), text: "Ship" },
- ],
- correctWord: "Snake",
- audio: getAssetAudioUrl(s3Assets.snakeR1TelAudio),
- flowName: "P6",
- },
- {
- allwords: [
- { img: getAssetUrl(s3Assets.neemR1Tel), text: "Neem" },
- { img: getAssetUrl(s3Assets.ballR1Tel), text: "Ball" },
- { img: getAssetUrl(s3Assets.antR1Tel), text: "Ant" },
- ],
- correctWord: "Ant",
- audio: getAssetAudioUrl(s3Assets.antR1TelAudio),
- flowName: "P7",
- },
- {
- allwords: [
- { img: getAssetUrl(s3Assets.fruitR1Tel), text: "Fruit" },
- { img: getAssetUrl(s3Assets.lockR1Tel), text: "Lock" },
- { img: getAssetUrl(s3Assets.mugR1Tel), text: "Mug" },
- ],
- correctWord: "Mug",
- audio: getAssetAudioUrl(s3Assets.mugR1TelAudio),
- flowName: "P8",
- },
- {
- allwords: [
- { img: getAssetUrl(s3Assets.cheethaR1Tel), text: "Cheetah" },
- { img: getAssetUrl(s3Assets.duckR1Tel), text: "Duck" },
- { img: getAssetUrl(s3Assets.noseM2TamImg), text: "Nose" },
- ],
- correctWord: "Cheetah",
- audio: getAssetAudioUrl(s3Assets.cheetahR1TelAudio),
- flowName: "P9",
- },
- {
- allwords: [
- { img: getAssetUrl(s3Assets.shoeR1Tel), text: "Shoe" },
- { img: getAssetUrl(s3Assets.swingR1Tel), text: "Swing" },
- { img: getAssetUrl(s3Assets.necklaceR1Tel), text: "Necklace" },
- ],
- correctWord: "Shoe",
- audio: getAssetAudioUrl(s3Assets.shoeR1TelAudio),
- flowName: "P10",
- },
- {
- allwords: [
- { img: getAssetUrl(s3Assets.footR1Tel), text: "Foot" },
- { img: getAssetUrl(s3Assets.tigerR1Tel), text: "Tiger" },
- { img: getAssetUrl(s3Assets.mugR1Tel), text: "Mug" },
- ],
- correctWord: "Foot",
- audio: getAssetAudioUrl(s3Assets.footR1TelAudio),
- flowName: "P11",
- },
- {
- allwords: [
- { img: getAssetUrl(s3Assets.featherR1Tel), text: "Feather" },
- { img: getAssetUrl(s3Assets.neckR1Tel), text: "Neck" },
- { img: getAssetUrl(s3Assets.necklaceR1Tel), text: "Necklace" },
- ],
- correctWord: "Necklace",
- audio: getAssetAudioUrl(s3Assets.necklaceR1TelAudio),
- flowName: "P12",
- },
- {
- allwords: [
- { img: getAssetUrl(s3Assets.tigerR1Tel), text: "Tiger" },
- { img: getAssetUrl(s3Assets.penR1Tel), text: "Pen" },
- { img: getAssetUrl(s3Assets.milkR1Tel), text: "Milk" },
- ],
- correctWord: "Tiger",
- audio: getAssetAudioUrl(s3Assets.tigerR1TelAudio),
- flowName: "P13",
- },
- {
- allwords: [
- { img: getAssetUrl(s3Assets.lockR1Tel), text: "Lock" },
- { img: getAssetUrl(s3Assets.leafR1Tel), text: "Leaf" },
- { img: getAssetUrl(s3Assets.waterR1Tel), text: "Water" },
- ],
- correctWord: "Lock",
- audio: getAssetAudioUrl(s3Assets.lockR1TelAudio),
- flowName: "P14",
- },
- {
- allwords: [
- { img: getAssetUrl(s3Assets.swimR1Tel), text: "Swim" },
- { img: getAssetUrl(s3Assets.mugR1Tel), text: "Mug" },
- { img: getAssetUrl(s3Assets.swingR1Tel), text: "Swing" },
- ],
- correctWord: "Swing",
- audio: getAssetAudioUrl(s3Assets.swingR1TelAudio),
- flowName: "P15",
- },
- {
- allwords: [
- { img: getAssetUrl(s3Assets.crowR1Tel), text: "Crow" },
- { img: getAssetUrl(s3Assets.goatR1Tel), text: "Goat" },
- { img: getAssetUrl(s3Assets.legR1Tel), text: "Leg" },
- ],
- correctWord: "Crow",
- audio: getAssetAudioUrl(s3Assets.crowR1TelAudio),
- flowName: "P16",
- },
- {
- allwords: [
- { img: getAssetUrl(s3Assets.angerR1Tel), text: "Anger" },
- { img: getAssetUrl(s3Assets.nestR1Tel), text: "Nest" },
- { img: getAssetUrl(s3Assets.ropeR1Tel), text: "Rope" },
- ],
- correctWord: "Anger",
- audio: getAssetAudioUrl(s3Assets.angerR1TelAudio),
- flowName: "P17",
- },
- {
- allwords: [
- { img: getAssetUrl(s3Assets.dosaR1Tel), text: "Dosa" },
- { img: getAssetUrl(s3Assets.lionR1Tel), text: "Lion" },
- { img: getAssetUrl(s3Assets.pillowR1Tel), text: "Pillow" },
- ],
- correctWord: "Dosa",
- audio: getAssetAudioUrl(s3Assets.dosaR1TelAudio),
- flowName: "P18",
- },
- {
- allwords: [
- { img: getAssetUrl(s3Assets.farmerR1Tel), text: "Farmer" },
- { img: getAssetUrl(s3Assets.castleR1Tel), text: "Castle" },
- { img: getAssetUrl(s3Assets.medicineR1Tel), text: "Medicine" },
- ],
- correctWord: "Farmer",
- audio: getAssetAudioUrl(s3Assets.farmerR1TelAudio),
- flowName: "P19",
- },
- {
- allwords: [
- { img: getAssetUrl(s3Assets.sareeR1Tel), text: "Saree" },
- { img: getAssetUrl(s3Assets.mosquitoR1Tel), text: "Mosquito" },
- { img: getAssetUrl(s3Assets.fishR1Tel), text: "Fish" },
- ],
- correctWord: "Saree",
- audio: getAssetAudioUrl(s3Assets.sareeR1TelAudio),
- flowName: "P20",
- },
- {
- allwords: [
- { img: getAssetUrl(s3Assets.rootR1Tel), text: "Root" },
- { img: getAssetUrl(s3Assets.fingerR1Tel), text: "Finger" },
- { img: getAssetUrl(s3Assets.cowR1Tel), text: "Cow" },
- ],
- correctWord: "Root",
- audio: getAssetAudioUrl(s3Assets.rootR1TelAudio),
- flowName: "P21",
- },
- {
- allwords: [
- { img: getAssetUrl(s3Assets.carR1Tel), text: "Car" },
- { img: getAssetUrl(s3Assets.plantR1Tel), text: "Plant" },
- { img: getAssetUrl(s3Assets.juiceR1Tel), text: "Juice" },
- ],
- correctWord: "Plant",
- audio: getAssetAudioUrl(s3Assets.plantR1TelAudio),
- flowName: "P22",
- },
- {
- allwords: [
- { img: getAssetUrl(s3Assets.ropeR1Tel), text: "Rope" },
- { img: getAssetUrl(s3Assets.duckR1Tel), text: "Duck" },
- { img: getAssetUrl(s3Assets.neckR1Tel), text: "Neck" },
- ],
- correctWord: "Rope",
- audio: getAssetAudioUrl(s3Assets.ropeR1TelAudio),
- flowName: "P23",
- },
- {
- allwords: [
- { img: getAssetUrl(s3Assets.pillowR1Tel), text: "Pillow" },
- { img: getAssetUrl(s3Assets.swimR1Tel), text: "Swim" },
- { img: getAssetUrl(s3Assets.featherR1Tel), text: "Feather" },
- ],
- correctWord: "Pillow",
- audio: getAssetAudioUrl(s3Assets.pillowR1TelAudio),
- flowName: "P24",
- },
- {
- allwords: [
- { img: getAssetUrl(s3Assets.medicineR1Tel), text: "Medicine" },
- { img: getAssetUrl(s3Assets.fishR1Tel), text: "Fish" },
- { img: getAssetUrl(s3Assets.schoolR1Tel), text: "School" },
- ],
- correctWord: "Medicine",
- audio: getAssetAudioUrl(s3Assets.medicineR1TelAudio),
- flowName: "P25",
- },
- {
- allwords: [
- { img: getAssetUrl(s3Assets.fingerR1Tel), text: "Finger" },
- { img: getAssetUrl(s3Assets.leafR1Tel), text: "Leaf" },
- { img: getAssetUrl(s3Assets.mosquitoR1Tel), text: "Mosquito" },
- ],
- correctWord: "Finger",
- audio: getAssetAudioUrl(s3Assets.fingerR1TelAudio),
- flowName: "P26",
- },
- {
- allwords: [
- { img: getAssetUrl(s3Assets.legR1Tel), text: "Leg" },
- { img: getAssetUrl(s3Assets.castleR1Tel), text: "Castle" },
- { img: getAssetUrl(s3Assets.lionR1Tel), text: "Lion" },
- ],
- correctWord: "Leg",
- audio: getAssetAudioUrl(s3Assets.legR1TelAudio),
- flowName: "P27",
- },
- {
- allwords: [
- { img: getAssetUrl(s3Assets.juiceR1Tel), text: "Juice" },
- { img: getAssetUrl(s3Assets.potR1Tel), text: "Pot" },
- { img: getAssetUrl(s3Assets.crowR1Tel), text: "Crow" },
- ],
- correctWord: "Juice",
- audio: getAssetAudioUrl(s3Assets.juiceR1TelAudio),
- flowName: "P28",
- },
- {
- allwords: [
- { img: getAssetUrl(s3Assets.neemR1Tel), text: "Neem" },
- { img: getAssetUrl(s3Assets.nestR1Tel), text: "Nest" },
- { img: getAssetUrl(s3Assets.goatR1Tel), text: "Goat" },
- ],
- correctWord: "Neem",
- audio: getAssetAudioUrl(s3Assets.neemR1TelAudio),
- flowName: "P29",
- },
- {
- allwords: [
- { img: getAssetUrl(s3Assets.plantR1Tel), text: "Plant" },
- { img: getAssetUrl(s3Assets.cowR1Tel), text: "Cow" },
- { img: getAssetUrl(s3Assets.ballR1Tel), text: "Ball" },
- ],
- correctWord: "Cow",
- audio: getAssetAudioUrl(s3Assets.cowR1TelAudio),
- flowName: "P30",
- },
- {
- allwords: [
- { img: getAssetUrl(s3Assets.mosquitoR1Tel), text: "Mosquito" },
- { img: getAssetUrl(s3Assets.fruitR1Tel), text: "Fruit" },
- { img: getAssetUrl(s3Assets.farmerR1Tel), text: "Farmer" },
- ],
- correctWord: "Mosquito",
- audio: getAssetAudioUrl(s3Assets.mosquitoR1TelAudio),
- flowName: "P31",
- },
- {
- allwords: [
- { img: getAssetUrl(s3Assets.swanR1Tel), text: "Swan" },
- { img: getAssetUrl(s3Assets.pillowR1Tel), text: "Pillow" },
- { img: getAssetUrl(s3Assets.carR1Tel), text: "Car" },
- ],
- correctWord: "Swan",
- audio: getAssetAudioUrl(s3Assets.swanR1TelAudio),
- flowName: "P32",
- },
- {
- allwords: [
- { img: getAssetUrl(s3Assets.castleR1Tel), text: "Castle" },
- { img: getAssetUrl(s3Assets.fishR1Tel), text: "Fish" },
- { img: getAssetUrl(s3Assets.legR1Tel), text: "Leg" },
- ],
- correctWord: "Castle",
- audio: getAssetAudioUrl(s3Assets.castleR1TelAudio),
- flowName: "P33",
- },
- {
- allwords: [
- { img: getAssetUrl(s3Assets.lionR1Tel), text: "Lion" },
- { img: getAssetUrl(s3Assets.juiceR1Tel), text: "Juice" },
- { img: getAssetUrl(s3Assets.ropeR1Tel), text: "Rope" },
- ],
- correctWord: "Lion",
- audio: getAssetAudioUrl(s3Assets.lionR1TelAudio),
- flowName: "P34",
- },
- {
- allwords: [
- { img: getAssetUrl(s3Assets.shipR1Tel), text: "Ship" },
- { img: getAssetUrl(s3Assets.angerR1Tel), text: "Anger" },
- { img: getAssetUrl(s3Assets.nestR1Tel), text: "Nest" },
- ],
- correctWord: "Ship",
- audio: getAssetAudioUrl(s3Assets.shipR1TelAudio),
- flowName: "P35",
- },
- {
- allwords: [
- { img: getAssetUrl(s3Assets.penR1Tel), text: "Pen" },
- { img: getAssetUrl(s3Assets.plantR1Tel), text: "Plant" },
- { img: getAssetUrl(s3Assets.crowR1Tel), text: "Crow" },
- ],
- correctWord: "Pen",
- audio: getAssetAudioUrl(s3Assets.penR1TelAudio),
- flowName: "P36",
- },
- {
- allwords: [
- { img: getAssetUrl(s3Assets.milkR1Tel), text: "Milk" },
- { img: getAssetUrl(s3Assets.goatR1Tel), text: "Goat" },
- { img: getAssetUrl(s3Assets.fingerR1Tel), text: "Finger" },
- ],
- correctWord: "Milk",
- audio: getAssetAudioUrl(s3Assets.milkR1TelAudio),
- flowName: "P37",
- },
- {
- allwords: [
- { img: getAssetUrl(s3Assets.fishR1Tel), text: "Fish" },
- { img: getAssetUrl(s3Assets.sareeR1Tel), text: "Saree" },
- { img: getAssetUrl(s3Assets.pillowR1Tel), text: "Pillow" },
- ],
- correctWord: "Fish",
- audio: getAssetAudioUrl(s3Assets.fishR1TelAudio),
- flowName: "P38",
- },
- {
- allwords: [
- { img: getAssetUrl(s3Assets.carR1Tel), text: "Car" },
- { img: getAssetUrl(s3Assets.mosquitoR1Tel), text: "Mosquito" },
- { img: getAssetUrl(s3Assets.rootR1Tel), text: "Root" },
- ],
- correctWord: "Car",
- audio: getAssetAudioUrl(s3Assets.carR1TelAudio),
- flowName: "P39",
- },
- {
- allwords: [
- { img: getAssetUrl(s3Assets.duckR1Tel), text: "Duck" },
- { img: getAssetUrl(s3Assets.castleR1Tel), text: "Castle" },
- { img: getAssetUrl(s3Assets.lionR1Tel), text: "Lion" },
- ],
- correctWord: "Duck",
- audio: getAssetAudioUrl(s3Assets.duckR1TelAudio),
- flowName: "P40",
- },
- {
- allwords: [
- { img: getAssetUrl(s3Assets.goatR1Tel), text: "Goat" },
- { img: getAssetUrl(s3Assets.dosaR1Tel), text: "Dosa" },
- { img: getAssetUrl(s3Assets.farmerR1Tel), text: "Farmer" },
- ],
- correctWord: "Goat",
- audio: getAssetAudioUrl(s3Assets.goatR1TelAudio),
- flowName: "P41",
- },
- {
- allwords: [
- { img: getAssetUrl(s3Assets.neckR1Tel), text: "Neck" },
- { img: getAssetUrl(s3Assets.medicineR1Tel), text: "Medicine" },
- { img: getAssetUrl(s3Assets.cowR1Tel), text: "Cow" },
- ],
- correctWord: "Neck",
- audio: getAssetAudioUrl(s3Assets.neckR1TelAudio),
- flowName: "P42",
- },
- {
- allwords: [
- { img: getAssetUrl(s3Assets.swimR1Tel), text: "Swim" },
- { img: getAssetUrl(s3Assets.carR1Tel), text: "Car" },
- { img: getAssetUrl(s3Assets.crowR1Tel), text: "Crow" },
- ],
- correctWord: "Swim",
- audio: getAssetAudioUrl(s3Assets.swimR1TelAudio),
- flowName: "P43",
- },
- {
- allwords: [
- { img: getAssetUrl(s3Assets.nestR1Tel), text: "Nest" },
- { img: getAssetUrl(s3Assets.goatR1Tel), text: "Goat" },
- { img: getAssetUrl(s3Assets.legR1Tel), text: "Leg" },
- ],
- correctWord: "Nest",
- audio: getAssetAudioUrl(s3Assets.nestR1TelAudio),
- flowName: "P44",
- },
- {
- allwords: [
- { img: getAssetUrl(s3Assets.featherR1Tel), text: "Feather" },
- { img: getAssetUrl(s3Assets.angerR1Tel), text: "Anger" },
- { img: getAssetUrl(s3Assets.nestR1Tel), text: "Nest" },
- ],
- correctWord: "Feather",
- audio: getAssetAudioUrl(s3Assets.featherR1TelAudio),
- flowName: "P45",
- },
- {
- allwords: [
- { img: getAssetUrl(s3Assets.fruitR1Tel), text: "Fruit" },
- { img: getAssetUrl(s3Assets.farmerR1Tel), text: "Farmer" },
- { img: getAssetUrl(s3Assets.medicineR1Tel), text: "Medicine" },
- ],
- correctWord: "Fruit",
- audio: getAssetAudioUrl(s3Assets.fruitR1TelAudio),
- flowName: "P46",
- },
- {
- allwords: [
- { img: getAssetUrl(s3Assets.ballR1Tel), text: "Ball" },
- { img: getAssetUrl(s3Assets.cowR1Tel), text: "Cow" },
- { img: getAssetUrl(s3Assets.carR1Tel), text: "Car" },
- ],
- correctWord: "Ball",
- audio: getAssetAudioUrl(s3Assets.ballR1TelAudio),
- flowName: "P47",
- },
- {
- allwords: [
- { img: getAssetUrl(s3Assets.schoolR1Tel), text: "School" },
- { img: getAssetUrl(s3Assets.crowR1Tel), text: "Crow" },
- { img: getAssetUrl(s3Assets.goatR1Tel), text: "Goat" },
- ],
- correctWord: "School",
- audio: getAssetAudioUrl(s3Assets.schoolR1TelAudio),
- flowName: "P48",
- },
- {
- allwords: [
- { img: getAssetUrl(s3Assets.potR1Tel), text: "Pot" },
- { img: getAssetUrl(s3Assets.legR1Tel), text: "Leg" },
- { img: getAssetUrl(s3Assets.angerR1Tel), text: "Anger" },
- ],
- correctWord: "Pot",
- audio: getAssetAudioUrl(s3Assets.potR1TelAudio),
- flowName: "P49",
- },
- {
- allwords: [
- { img: getAssetUrl(s3Assets.leafR1Tel), text: "Leaf" },
- { img: getAssetUrl(s3Assets.nestR1Tel), text: "Nest" },
- { img: getAssetUrl(s3Assets.ropeR1Tel), text: "Rope" },
- ],
- correctWord: "Leaf",
- audio: getAssetAudioUrl(s3Assets.leafR1TelAudio),
- flowName: "P50",
- },
+ {
+ id: 5,
+ images: [
+ getAssetUrl(s3Assets.R1),
+ getAssetUrl(s3Assets.R5_1),
+ getAssetUrl(s3Assets.R5_2),
+ ],
+ audios: [
+ getAssetAudioUrl(s3Assets.RA1ato15a),
+ getAssetAudioUrl(s3Assets.RA5b),
+ getAssetAudioUrl(s3Assets.RA5c),
],
},
-};
+ {
+ id: 6,
+ images: [
+ getAssetUrl(s3Assets.R1),
+ getAssetUrl(s3Assets.R6_1),
+ getAssetUrl(s3Assets.R6_2),
+ ],
+ audios: [
+ getAssetAudioUrl(s3Assets.RA1ato15a),
+ getAssetAudioUrl(s3Assets.RA6b),
+ getAssetAudioUrl(s3Assets.RA6c),
+ ],
+ },
+ {
+ id: 7,
+ images: [
+ getAssetUrl(s3Assets.R1),
+ getAssetUrl(s3Assets.R7_1),
+ getAssetUrl(s3Assets.R7_2),
+ ],
+ audios: [
+ getAssetAudioUrl(s3Assets.RA1ato15a),
+ getAssetAudioUrl(s3Assets.RA7b),
+ getAssetAudioUrl(s3Assets.RA7c),
+ ],
+ },
+ {
+ id: 8,
+ images: [
+ getAssetUrl(s3Assets.R1),
+ getAssetUrl(s3Assets.R8_1),
+ getAssetUrl(s3Assets.R8_2),
+ ],
+ audios: [
+ getAssetAudioUrl(s3Assets.RA1ato15a),
+ getAssetAudioUrl(s3Assets.RA8b),
+ getAssetAudioUrl(s3Assets.RA8c),
+ ],
+ },
+ {
+ id: 9,
+ images: [
+ getAssetUrl(s3Assets.R1),
+ getAssetUrl(s3Assets.R9_1),
+ getAssetUrl(s3Assets.R9_2),
+ ],
+ audios: [
+ getAssetAudioUrl(s3Assets.RA1ato15a),
+ getAssetAudioUrl(s3Assets.RA9b),
+ getAssetAudioUrl(s3Assets.RA9c),
+ ],
+ },
+ {
+ id: 10,
+ images: [
+ getAssetUrl(s3Assets.R1),
+ getAssetUrl(s3Assets.R10_1),
+ getAssetUrl(s3Assets.R10_2),
+ ],
+ audios: [
+ getAssetAudioUrl(s3Assets.RA1ato15a),
+ getAssetAudioUrl(s3Assets.RA10b),
+ getAssetAudioUrl(s3Assets.RA10c),
+ ],
+ },
+ {
+ id: 11,
+ images: [
+ getAssetUrl(s3Assets.R1),
+ getAssetUrl(s3Assets.R11_1),
+ getAssetUrl(s3Assets.R11_2),
+ ],
+ audios: [
+ getAssetAudioUrl(s3Assets.RA1ato15a),
+ getAssetAudioUrl(s3Assets.RA11b),
+ getAssetAudioUrl(s3Assets.RA11c),
+ ],
+ },
+ {
+ id: 12,
+ images: [
+ getAssetUrl(s3Assets.R1),
+ getAssetUrl(s3Assets.R12_1),
+ getAssetUrl(s3Assets.R12_2),
+ ],
+ audios: [
+ getAssetAudioUrl(s3Assets.RA1ato15a),
+ getAssetAudioUrl(s3Assets.RA12b),
+ getAssetAudioUrl(s3Assets.RA12c),
+ ],
+ },
+ {
+ id: 13,
+ images: [
+ getAssetUrl(s3Assets.R1),
+ getAssetUrl(s3Assets.R13_1),
+ getAssetUrl(s3Assets.R13_2),
+ ],
+ audios: [
+ getAssetAudioUrl(s3Assets.RA1ato15a),
+ getAssetAudioUrl(s3Assets.RA13b),
+ getAssetAudioUrl(s3Assets.RA13c),
+ ],
+ },
+ {
+ id: 14,
+ images: [
+ getAssetUrl(s3Assets.R1),
+ getAssetUrl(s3Assets.R14_1),
+ getAssetUrl(s3Assets.R14_2),
+ ],
+ audios: [
+ getAssetAudioUrl(s3Assets.RA1ato15a),
+ getAssetAudioUrl(s3Assets.RA14b),
+ getAssetAudioUrl(s3Assets.RA14c),
+ ],
+ },
+ {
+ id: 15,
+ images: [
+ getAssetUrl(s3Assets.R1),
+ getAssetUrl(s3Assets.R15_1),
+ getAssetUrl(s3Assets.R15_2),
+ ],
+ audios: [
+ getAssetAudioUrl(s3Assets.RA1ato15a),
+ getAssetAudioUrl(s3Assets.RA15b),
+ getAssetAudioUrl(s3Assets.RA15c),
+ ],
+ },
+];
const R1 = ({
setVoiceText,
@@ -2570,7 +654,6 @@ const R1 = ({
handleNext,
background,
parentWords = "",
- enableNext,
showTimer,
points,
steps,
@@ -2586,7 +669,6 @@ const R1 = ({
disableScreen,
isShowCase,
handleBack,
- setEnableNext,
loading,
setOpenMessageDialog,
audio,
@@ -2594,471 +676,1257 @@ const R1 = ({
vocabCount,
wordCount,
}) => {
- const [currentQuestionIndex, setCurrentQuestionIndex] = useState(0);
- const [selectedWord, setSelectedWord] = useState(null);
- const [showConfetti, setShowConfetti] = useState(false);
- const [wrongWord, setWrongWord] = useState(null);
- const [recording, setRecording] = useState("no");
- const navigate = useNavigate();
- const [isPlaying, setIsPlaying] = useState(false);
- const [isAudioPlayedOnce, setIsAudioPlayedOnce] = useState(false);
- const [scale, setScale] = useState(1);
+ steps = 1;
const lang = getLocalData("lang");
- const isMobile = useMediaQuery(theme.breakpoints.down("sm"));
- const isTablet = useMediaQuery(theme.breakpoints.between("sm", "md"));
- const content = levelData[lang];
+ let data;
+
+ if (lang === "en") {
+ data = dataEn;
+ } else {
+ data = dataKn;
+ }
+
+ // ✅ UI3 specific states for non-English languages
+ const [itemIndexUi, setItemIndexUi] = useState(0);
+ const [imgIndex, setImgIndex] = useState(0);
+ const currentItem = dataKn[itemIndexUi];
+ const sessionId = getLocalData("sessionId");
+ const virtualId = getLocalData("virtualId");
+ const [currentCollectionId, setCurrentCollectionId] = useState("");
+ const [totalSyllableCount, setTotalSyllableCount] = useState("");
+ const [stepIndex, setStepIndex] = useState(0);
+ const [open, setOpen] = useState(false);
+
+ // ✅ Add these variables for handleNextWord
+ const totalSteps = Math.ceil(data.length / 5); // Assuming 5 items per block
+ const blockSize = 10; // UI1 + UI2 for each item = 2 * 5 = 10
+
+ const langWiseAnswers = {
+ en: {
+ c: true,
+ j: true,
+ x: true,
+ k: true,
+ h: true,
+ n: true,
+ p: true,
+ u: true,
+ s: true,
+ o: true,
+ },
+ ta: {
+ அ: true,
+ ஆ: true,
+ இ: true,
+ ஈ: true,
+ உ: true,
+ ஊ: true,
+ எ: true,
+ ஏ: true,
+ ஐ: true,
+ ஒ: true,
+ },
+ te: {
+ అ: true,
+ ఆ: true,
+ ఇ: true,
+ ఈ: true,
+ ఉ: true,
+ ఊ: true,
+ ఎ: true,
+ ఏ: true,
+ ఐ: true,
+ ఒ: true,
+ },
+ kn: {
+ ಅ: true,
+ ಆ: true,
+ ಇ: true,
+ ಈ: true,
+ ಉ: true,
+ ಊ: true,
+ ಎ: true,
+ ಏ: true,
+ ಐ: true,
+ ಒ: true,
+ },
+ hi: {
+ अ: true,
+ आ: true,
+ इ: true,
+ ई: true,
+ उ: true,
+ ऊ: true,
+ ए: true,
+ ऐ: true,
+ ओ: true,
+ औ: true,
+ },
+ };
+
+ const generatePlaylist = (data) => {
+ const playlist = [];
+
+ for (let i = 0; i < data.length; i += 5) {
+ const block = data.slice(i, i + 5);
+
+ block.forEach((item) => {
+ playlist.push({
+ type: "UI1",
+ item: item,
+ letter: item.letter,
+ });
+ });
+
+ block.forEach((item) => {
+ playlist.push({
+ type: "UI2",
+ item: item,
+ letter: item.letter,
+ });
+ });
+ }
+
+ console.log("R1 Playlist generated:", playlist.length, "items");
+ return playlist;
+ };
+
+ const playlist = generatePlaylist(data);
+
+ const [currentIndex, setCurrentIndex] = useState(0);
+ const [letters, setLetters] = useState([]);
+ const [isRecordingComplete, setIsRecordingComplete] = useState(false);
+ const [recAudio, setRecAudio] = useState(null);
+ const [isNextButtonCalled, setIsNextButtonCalled] = useState(false);
+ const [enableNext, setEnableNext] = useState(false);
+
+ const current = playlist[currentIndex];
+ const item = current?.item;
+ const navigate = useNavigate();
+
+ const audioRef = useRef(null);
+
+ const currentAudio =
+ current?.type === "UI2" ? null : current?.item?.audio || null;
+ const singleAudio = current?.item?.phonemeAudio || null;
+
+ const ui3Audio = lang !== "en" ? currentItem?.audios?.[imgIndex] : null;
useEffect(() => {
- const interval = setInterval(() => {
- setScale((prev) => (prev === 1 ? 1.2 : 1));
- }, 500);
+ console.log("R1 - Current:", {
+ currentIndex,
+ current,
+ item,
+ currentAudio,
+ singleAudio,
+ });
+ }, [currentIndex]);
- return () => clearInterval(interval);
+ const playAudio = (src) => {
+ if (!src) return;
+
+ if (audioRef.current) {
+ audioRef.current.pause();
+ audioRef.current.currentTime = 0;
+ }
+
+ audioRef.current = new Audio(src);
+ audioRef.current.play().catch((err) => {
+ console.log("Audio play error:", err);
+ });
+ };
+
+ useEffect(() => {
+ if (currentAudio) {
+ playAudio(currentAudio);
+ }
+ return () => {
+ if (audioRef.current) {
+ audioRef.current.pause();
+ audioRef.current = null;
+ }
+ };
+ }, [currentIndex]);
+ // ✅ Your original handleNextWord function
+ const handleNextWord = async () => {
+ console.log(
+ "handleNextWord called - currentIndex:",
+ currentIndex,
+ "playlist length:",
+ playlist.length
+ );
+
+ if (lang !== "en") {
+ // For non-English languages, use handleNextImage
+ await handleNextImage();
+ } else {
+ // For English, navigate through playlist using currentIndex
+ if (currentIndex < playlist.length - 1) {
+ const currentLetter = current?.item?.letter || "";
+ if (currentLetter && current.type === "UI1") {
+ setLetters((prev) => [...prev, currentLetter]);
+ }
+
+ setCurrentIndex((i) => i + 1);
+ // Also update stepIndex to keep your original logic
+ setStepIndex((i) => i + 1);
+ } else {
+ // End of playlist - handle completion
+ setLocalData("rFlow", false);
+ setLocalData("mFail", false);
+ if (level === "B") {
+ await handleCompletion();
+ navigate("/discover-end");
+ return;
+ }
+ if (process.env.REACT_APP_IS_APP_IFRAME === "true") {
+ navigate("/");
+ } else {
+ navigate("/discover-start");
+ }
+ }
+ }
+
+ // Common reset for all UIs
+ setRecAudio(null);
+ setIsNextButtonCalled(true);
+ setEnableNext(false);
+ };
+
+ // ✅ Update handleNextImage to use the same logic
+ const handleNextImage = async () => {
+ console.log(
+ "handleNextImage called - imgIndex:",
+ imgIndex,
+ "itemIndexUi:",
+ itemIndexUi
+ );
+
+ if (imgIndex < currentItem.images.length - 1) {
+ setImgIndex((i) => i + 1);
+ } else {
+ if (itemIndexUi < dataKn.length - 1) {
+ setItemIndexUi((i) => i + 1);
+ setImgIndex(0);
+ } else {
+ if (level === "B") {
+ await handleCompletion();
+ navigate("/discover-end");
+ return;
+ }
+ if (process.env.REACT_APP_IS_APP_IFRAME === "true") {
+ setLocalData("rFlow", false);
+ setLocalData("mFail", false);
+ navigate("/");
+ } else {
+ setLocalData("rFlow", false);
+ setLocalData("mFail", false);
+ navigate("/discover-start");
+ }
+ }
+ }
+ // ✅ Same state updates as handleNextWord
+ setRecAudio(null);
+ setIsNextButtonCalled(true);
+ setEnableNext(false);
+ };
+ useEffect(() => {
+ if (level !== "B") return;
+
+ (async () => {
+ try {
+ const lang = getLocalData("lang");
+ // Fetch assessment data
+ const resAssessment = await fetchAssessmentData(lang);
+ const sentences = resAssessment?.data?.find(
+ (elem) => elem.category === "Char"
+ );
+
+ if (!sentences?.collectionId) {
+ console.error("No collection ID found for sentences.");
+ return;
+ }
+
+ const resPagination = await fetchPaginatedContent(
+ sentences.collectionId,
+ 10
+ );
+
+ setTotalSyllableCount(resPagination?.totalSyllableCount);
+ setCurrentCollectionId(sentences?.collectionId);
+ } catch (error) {
+ console.error("Error fetching data:", error);
+ }
+ })();
}, []);
- steps = 1;
+ const handleCompletion = async () => {
+ const sub_session_id = getLocalData("sub_session_id");
+ let currentContentType = "Char";
+
+ try {
+ const milestoneLevel = "B";
+
+ let requestBody = {
+ original_text: "Char",
+ audio: "",
+ //user_id: virtualId,
+ session_id: sessionId,
+ language: lang,
+ date: new Date(),
+ sub_session_id,
+ contentId: contentId,
+ contentType: "Char",
+ mechanics_id: getLocalData("mechanism_id") || "",
+ milestone: milestoneLevel,
+ ansSelectionStatus: langWiseAnswers[lang],
+ };
+
+ const result = await updateLearnerProfile(lang, requestBody);
+ console.log("Learner progress result:", result);
+ } catch (error) {
+ console.error("Error creating learner progress:", error);
+ }
+
+ try {
+ const getSetResultRes = await fetchGetSetResult(
+ sub_session_id,
+ currentContentType,
+ currentCollectionId,
+ totalSyllableCount
+ );
+ console.log("GetSet result:", getSetResultRes);
+ } catch (error) {
+ console.error("Error fetching set result:", error);
+ }
+
+ if (!(localStorage.getItem("contentSessionId") !== null)) {
+ let point = 1;
+ let milestone = "B";
- const handleWordClick = (word) => {
- setSelectedWord(word);
- const currentQuestion = content.L1[currentQuestionIndex];
-
- if (word === currentQuestion.correctWord) {
- const audio = new Audio(correctSound);
- audio.play();
- setShowConfetti(true);
- setWrongWord(null);
- setTimeout(() => {
- setShowConfetti(false);
- setSelectedWord(null);
- // setCurrentQuestionIndex(
- // (prevIndex) => (prevIndex + 1) % content.L1.length
- // );
- setRecording("recording");
- }, 3000);
+ if (point !== 1) {
+ if (process.env.REACT_APP_IS_APP_IFRAME === "true") {
+ navigate("/");
+ } else {
+ navigate("/discover-start");
+ }
+ return;
+ }
+
+ try {
+ const result = await addPointer(point, milestone);
+ const awardedPoints = result?.result?.points;
+ if (awardedPoints !== 1) {
+ if (process.env.REACT_APP_IS_APP_IFRAME === "true") {
+ navigate("/");
+ } else {
+ navigate("/discover-start");
+ }
+ return;
+ }
+ } catch (error) {
+ console.error("Error adding points:", error);
+ }
} else {
- const audio = new Audio(wrongSound);
- audio.play();
- setWrongWord(word);
- setTimeout(() => setWrongWord(null), 2000);
+ sendTestRigScore(5);
}
+ navigate("/discover-start");
};
- const currentQuestion = content.L1[currentQuestionIndex];
+ const handlePreviousImage = () => {
+ if (imgIndex > 0) {
+ setImgIndex((i) => i - 1);
+ } else if (itemIndexUi > 0) {
+ setItemIndexUi((i) => i - 1);
+ setImgIndex(dataKn[itemIndexUi - 1]?.images?.length - 1 || 0);
+ }
+ setRecAudio(null);
+ setIsNextButtonCalled(false);
+ setEnableNext(false);
+ };
- const flowNames = [...new Set(content.L1.map((item) => item.flowName))];
- const activeFlow = content.L1[currentQuestionIndex]?.flowName || flowNames[0];
+ const handlePreviousWord = () => {
+ if (currentIndex > 0) {
+ const currentLetter = current?.item?.letter || "";
+ if (currentLetter && current.type === "UI1") {
+ setLetters((prev) => prev.filter((letter) => letter !== currentLetter));
+ }
- const correctImage = currentQuestion?.allwords?.find(
- (word) => word.text === currentQuestion?.correctWord
- )?.img;
+ setCurrentIndex((i) => i - 1);
+ setRecAudio(null);
+ setIsNextButtonCalled(false);
+ setEnableNext(false);
+ }
+ };
- let currentAudio = null;
+ const handleBackNavigation = () => {
+ if (lang !== "en") {
+ // UI3 back navigation
+ if (imgIndex > 0 || itemIndexUi > 0) {
+ handlePreviousImage();
+ } else {
+ if (handleBack) {
+ handleBack();
+ } else {
+ navigate(-1);
+ }
+ }
+ } else {
+ if (currentIndex > 0) {
+ handlePreviousWord();
+ } else {
+ if (handleBack) {
+ handleBack();
+ } else {
+ navigate(-1);
+ }
+ }
+ }
+ };
- const handlePlayAudio = () => {
- if (currentAudio) {
- currentAudio.pause();
+ const handleRetry = () => {
+ console.log("audio playing!");
+ if (lang !== "en") {
+ playAudio(ui3Audio);
+ } else {
+ playAudio(currentAudio);
}
+ };
- currentAudio = new Audio(content.L1[currentQuestionIndex].audio);
+ const updateStoredData = (audio, isCorrect) => {};
- currentAudio.play();
- setIsPlaying(true);
- setIsAudioPlayedOnce(true);
+ const handleRecordingComplete = (base64Data) => {
+ if (base64Data) {
+ setIsRecordingComplete(true);
+ setRecAudio(base64Data);
+ } else {
+ setIsRecordingComplete(false);
+ setRecAudio(null);
+ }
+ };
- currentAudio.onended = () => {
- setIsPlaying(false);
- };
+ const handleStartRecording = () => {
+ setRecAudio(null);
};
- return (
-
- {currentQuestion?.allwords ? (
- {
+ setRecAudio(true);
+ setLetters([]);
+ };
+
+ const navy = "#1c2752";
+ const red = "#C93128";
+ const pink = "#ea4c89";
+ const orange = "#f28b1d";
+ const COLORS = ["#8BC34A", "#9C27B0", "#E91E63", "#03A9F4", "#FF9800"];
+
+ const flowNames = [...new Set(data.map((item) => item.id))];
+
+ const UI1 = () => {
+ console.log("R1 - UI1 - currentIndex:", currentIndex, "item:", item);
+
+ const TOTAL_ITEMS = playlist.length;
+ const currentItemNumber = currentIndex + 1;
+ const completionPercentage = Math.round(
+ (currentItemNumber / TOTAL_ITEMS) * 100
+ );
+
+ return (
+
+
- {recording === "no" && (
- <>
- {showConfetti && }
+
+
+ {currentItemNumber}/{TOTAL_ITEMS}
+
-
+
- {[
- { top: "10%", left: "5%" },
- { top: "25%", left: "30%" },
- { top: "10%", left: "55%" },
- { top: "25%", left: "80%" },
- ].map((pos, index) => (
-
- ))}
-
+ />
+
+
- {selectedWord === currentQuestion?.correctWord ? (
-
-

-
- ) : wrongWord ? (
-
-

-
- ) : (
-
- )}
-
-
- {currentQuestion?.allwords.map((item, index) => {
- const isCorrect =
- selectedWord === currentQuestion?.correctWord &&
- item.text === selectedWord;
- const isWrong = wrongWord === item.text;
- return (
-
{
- if (isAudioPlayedOnce) {
- handleWordClick(item.text);
- }
- }}
+
+
+ {item?.title}
+
+
+
+
+
+
+
+
+
+ {letters?.map((ch, i) => (
+
-
-
- );
- })}
-
- >
- )}
- {recording === "recording" && (
-
+
+ {ch}
+
+
+
+ ))}
+
+
+
+
+
+
+
+ {item?.letter}
+
+
+
-
+ handleWordClick(currentQuestion.correctWord)}
>
-
-
-
{
- setRecording("startRec");
+ {item?.word?.split("").map((ch, idx) => (
+
+ {ch}
+
+ ))}
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {/* ➡️ Next Button */}
+
+
+
+
+
+
+ );
+ };
+
+ const UI2 = () => {
+ console.log("R1 - UI2 - currentIndex:", currentIndex, "item:", item);
+
+ const TOTAL_ITEMS = playlist.length;
+ const currentItemNumber = currentIndex + 1;
+ const completionPercentage = Math.round(
+ (currentItemNumber / TOTAL_ITEMS) * 100
+ );
+
+ const renderHighlightedWord = (word, targetLetter) => {
+ if (!word || !targetLetter) return word;
+
+ const lowerWord = word.toLowerCase();
+ const lowerTarget = targetLetter.toLowerCase();
+
+ const letterIndex = lowerWord.indexOf(lowerTarget);
+
+ if (letterIndex === -1) {
+ return word;
+ }
+
+ const before = word.substring(0, letterIndex);
+ const letter = word.substring(
+ letterIndex,
+ letterIndex + targetLetter.length
+ );
+ const after = word.substring(letterIndex + targetLetter.length);
+
+ return (
+ <>
+ {before}
+
{letter}
+ {after}
+ >
+ );
+ };
+
+ return (
+
+
+
+
+ {currentItemNumber}/{TOTAL_ITEMS}
+
+
+
+
-
- )}
- {recording === "startRec" && (
-
+
+
+
+
-
+ {renderHighlightedWord(item?.word, item?.letter)}
+
+
+
+ {recAudio && (
+
handleWordClick(currentQuestion.correctWord)}
>
-
-
-
-
{
- const audio = new Audio(correctSound);
- audio.play();
- setRecording("no");
- setIsAudioPlayedOnce(false);
- setIsPlaying(false);
- if (currentQuestionIndex === content.L1.length - 1) {
- setLocalData("rFlow", false);
- setLocalData("mFail", false);
- //window.location.reload();
- if (process.env.REACT_APP_IS_APP_IFRAME === "true") {
- navigate("/");
- } else {
- navigate("/discover-start");
- }
- } else {
- setCurrentQuestionIndex((prevIndex) => prevIndex + 1);
- response(
- {
- // Required
- target: "", // Required. Target of the response
- //"qid": "", // Required. Unique assessment/question id
- type: "SPEAK", // Required. Type of response. CHOOSE, DRAG, SELECT, MATCH, INPUT, SPEAK, WRITE
- values: [
- { original_text: currentQuestion?.correctWord },
- { level: "R1" },
- { isCorrect: "true" },
- ],
- },
- "ET"
- );
- }
+ )}
+
+
+
+
+
+
+
+ );
+ };
+
+ const UI3 = () => {
+ console.log("UI3 - currentItem:", currentItem, "imgIndex:", imgIndex);
+
+ return (
+
+
+
+ {currentItem?.images?.map((img, index) => (
+
+
+ {index < currentItem.images.length - 1 && (
+
+ {index === currentItem.images.length - 2 ? "=" : "+"}
+
+ )}
+
+ ))}
+
+
+
+
+
+
+
-
- )}
-
- ) : (
-
-
{currentQuestion.word}
- {currentQuestion.img && (
-

+
+ {/* VoiceAnalyser for UI3 */}
+
- )}
-
- {recording === "no" ? (
-
![]()
setRecording("startRec")}
- src={Assets.mic}
- alt="Start Recording"
- style={{ width: "70px", height: "70px", cursor: "pointer" }}
- />
- ) : (
-
+
+
+ );
+ };
+
+ const renderUI = () => {
+ if (lang !== "en") {
+ return UI3();
+ }
+
+ if (!current) return null;
+
+ if (current.type === "UI1") {
+ return UI1();
+ } else {
+ return UI2();
+ }
+ };
+
+ return (
+
+
+
setOpen(true)}
+ />
+
+ {/* Modal */}
+ {open && (
+
+
+ {/* Close Button */}
+
- )}
+ ×
+
+
+ {/* YouTube Video */}
+
+
-
- )}
+ )}
+ {renderUI()}
+
);
};
diff --git a/src/assets/CanyouremImg.svg b/src/assets/CanyouremImg.svg
new file mode 100644
index 00000000..9b23008b
--- /dev/null
+++ b/src/assets/CanyouremImg.svg
@@ -0,0 +1,3 @@
+
diff --git a/src/assets/Empty.svg b/src/assets/Empty.svg
index 42edfecb..1de5e581 100644
--- a/src/assets/Empty.svg
+++ b/src/assets/Empty.svg
@@ -1,9 +1,5 @@
-
+ onClick={() => setOpen(true)}
+ />
- {showEmptyImg && (
+ {/* Modal */}
+ {open && (
-

-
+ >
+ {/* Close Button */}
- {showNextButton && (
-
- )}
+ {/* YouTube Video */}
+
)}
-
-

- {!hideButtons &&
- !showWrongWord &&
- !winEffect &&
- !showCoinsImg &&
- !showEmptyImg &&
- !showInitialEffect &&
- !showInitialEffect &&
- startGame && (
-
![]()
{
- startAudio(currentWordIndex);
- }}
- src={Assets.play}
- alt="Start"
- style={{
- width: screenWidth < 768 ? "40px" : "50px",
- height: screenWidth < 768 ? "40px" : "50px",
- position: "absolute",
- left: screenWidth < 768 ? "72%" : "51%",
- top: screenWidth < 768 ? "10%" : "5%",
- //transform: "translateX(-50%)",
- transform: `scale(${scale})`,
- transition: "transform 0.5s ease-in-out",
- zIndex: 100,
- padding: screenWidth < 768 ? "8px 16px" : "10px 20px",
- cursor: "pointer",
- }}
- />
- )}
- {!hideButtons &&
- !showWrongWord &&
- !winEffect &&
- !showCoinsImg &&
- !showEmptyImg &&
- showInitialEffect &&
- !startGame && (
-

- )}
- {!hideButtons &&
- !showWrongWord &&
- !winEffect &&
- !showCoinsImg &&
- !showEmptyImg &&
- !showInitialEffect &&
- !startGame &&
- !showRecording && (
- <>
-
-
- >
- )}
-
-
- {showWrongWord && (
+ {showFlyingStar && (
-

-
-
-
- {/* {showNextButton && ( */}
-
+
{
- retry();
- handleNextButton();
+ top: "55%",
+ left: "50%",
+ transform: "translate(-50%, -50%)",
+ fontSize: "17px",
+ fontWeight: "700",
+ color: "#181414ff",
+ textShadow: "1px 1px 3px rgba(0,0,0,0.5)",
}}
>
-
-
- {/* )} */}
+ +1
+
)}
- {showHint && !winEffect && (
-
-

-
![{levels[currentLevel]?.arrM[currentWordIndex]}]({currentImage})
-
+ draggable={false}
+ />
)}
- {showRecording &&
- (!isRecording && !isProcessing ? (
-
-

-

- startRecording(levels[currentLevel]?.arrM[currentWordIndex])
- }
- />
-
- ) : (
-
-

-
-

-

stopRecording()}
- />
-
-
- ))}
-
- {winEffect && (
- <>
- {showConfetti && (
-
- )}
-
-
-
-

-
- {levels[currentLevel]?.arrM[currentWordIndex]}
-
-
-
-

-
- >
+ {showBingoPage ? (
+
+ ) : showSuccessPage || score >= 5 ? (
+
+ ) : (
+
)}
-
- {levels[currentLevel]?.words.map((word, index) => {
- const validPairs = {
- MANGO: ["MAN", "GO"],
- WATER: ["WA", "TER"],
- MOTHER: ["MO", "THER"],
- FATHER: ["FA", "THER"],
- PENCIL: ["PEN", "CIL"],
- DOCTOR: ["DOC", "TOR"],
- MARKET: ["MAR", "KET"],
- BASKET: ["BAS", "KET"],
- TABLE: ["TA", "BLE"],
- WINDOW: ["WIN", "DOW"],
- CRICKET: ["CRICK", "ET"],
- BALLOON: ["BAL", "LOON"],
- GARDEN: ["GAR", "DEN"],
- CANDLE: ["CAN", "DLE"],
- SCOOTER: ["SCOO", "TER"],
- CYCLE: ["CY", "CLE"],
- FLOWER: ["FLOW", "ER"],
- MUSIC: ["MUS", "IC"],
- PUPPY: ["PUP", "PY"],
- STUDENT: ["STU", "DENT"],
- PAPER: ["PA", "PER"],
- };
-
- const isCorrectWord =
- highlightCorrectWords &&
- validPairs[
- levels[currentLevel]?.levels[currentLevel]?.arrM[
- currentWordIndex
- ]
- ].includes(word);
-
- return (
-
{
- if (
- !(
- showRecording ||
- startGame ||
- isCorrectWord ||
- showWrongWord ||
- showInitialEffect ||
- showCoinsImg ||
- winEffect ||
- showNextButton
- )
- ) {
- handleWordClick(word);
- }
- }}
- >
-
- {word}
-
-
- );
- })}
-
+
);
};
-export default BingoCard;
+export default React.memo(BingoCard);
diff --git a/src/components/Practice/FluencyP1.jsx b/src/components/Practice/FluencyP1.jsx
new file mode 100644
index 00000000..efe3a203
--- /dev/null
+++ b/src/components/Practice/FluencyP1.jsx
@@ -0,0 +1,930 @@
+import React, { useState, useEffect, useRef } from "react";
+import Confetti from "react-confetti";
+import headerImg from "../../assets/headerImg.svg";
+import speakButton from "../../assets/speakButton.svg";
+import listenBear from "../../assets/bearlisten.svg";
+import graphImg from "../../assets/graphImg.svg";
+import pauseImg from "../../assets/pauseImg.svg";
+import bearImg from "../../assets/bearImg.svg";
+import listenImg from "../../assets/listenImg.svg";
+import nextImg from "../../assets/nextImg.svg";
+import backgroundImg from "../../assets/starsandclouds.png";
+import meterImg from "../../assets/meterimg.svg";
+import dogImg from "../../assets/dogimg.svg";
+import langhint from "../../assets/laguagehint.svg";
+import paraudio from "../../assets/parrotR1KanAudio.wav";
+import MainLayout from "../Layouts.jsx/MainLayout";
+
+import {
+ practiceSteps,
+ WordRedCircle,
+ StopButton,
+ SpeakButton,
+ ListenButton,
+ NextButtonRound,
+ RetryIcon,
+ getLocalData,
+ setLocalData,
+} from "../../utils/constants";
+import { phoneticMatch } from "../../utils/phoneticUtils";
+import SpeechRecognition, {
+ useSpeechRecognition,
+} from "react-speech-recognition";
+import RecordVoiceVisualizer from "../../utils/RecordVoiceVisualizer";
+import Joyride from "react-joyride";
+import LanguageModalNew from "../../utils/LanguageModal";
+import {
+ fetchASROutput,
+ handleTextEvaluation,
+ callTelemetryApi,
+} from "../../utils/apiUtil";
+import AudioTooltipModal from "./AudioTooltipModal";
+import { loadTranscriber } from "../../utils/transcriber";
+import { doubleMetaphone } from "double-metaphone";
+import correctSound from "../../assets/correct.wav";
+import tortoiseImg from "../../assets/TurtleCircle.gif";
+import rabbitImg from "../../assets/RabbitCircle.gif";
+import rocketImg from "../../assets/RocketCircle.gif";
+import hintimg from "../../assets/hintsicon.svg";
+import {
+ ThemeProvider,
+ createTheme,
+ useMediaQuery,
+ Grid,
+ Box,
+ CircularProgress,
+} from "@mui/material";
+
+const UnderlinedSentence = ({
+ sentence,
+ underlinedWords,
+ hints,
+ showUnderlines,
+ onWordHover,
+}) => {
+ const words = sentence.split(" ");
+
+ return (
+
+ {words.map((word, index) => {
+ const isUnderlined = underlinedWords.includes(word);
+ const cleanWord = word.replace(/[.,!?;]/g, "");
+
+ return (
+
+ {
+ if (isUnderlined && showUnderlines) {
+ const rect = e.target.getBoundingClientRect();
+ onWordHover(cleanWord, {
+ top: rect.bottom + 5,
+ left: rect.left + rect.width / 2,
+ });
+ }
+ }}
+ onMouseLeave={() => {
+ if (isUnderlined && showUnderlines) {
+ onWordHover(null, { top: 0, left: 0 });
+ }
+ }}
+ >
+ {word}
+ {isUnderlined && showUnderlines && (
+
+ )}
+
+ {index < words.length - 1 && " "}
+
+ );
+ })}
+
+ );
+};
+
+const LanguageHint = ({ hint }) => {
+ if (!hint) return null;
+
+ return (
+
+

+
+ );
+};
+
+function CircularTimer({ duration = 10, isActive = true }) {
+ const [timeLeft, setTimeLeft] = React.useState(duration);
+ const [elapsed, setElapsed] = React.useState(0);
+
+ const radius = 30;
+ const cx = 40;
+ const cy = 40;
+ const circumference = 2 * Math.PI * radius;
+
+ React.useEffect(() => {
+ if (timeLeft <= 0 || !isActive) return;
+ const interval = setInterval(() => {
+ setTimeLeft((prev) => prev - 1);
+ }, 1000);
+
+ return () => clearInterval(interval);
+ }, [timeLeft, isActive]);
+
+ React.useEffect(() => {
+ if (!isActive) return;
+ let start = performance.now();
+
+ const tick = (now) => {
+ const diff = now - start;
+ setElapsed(diff / 1000);
+ if (timeLeft > 0) requestAnimationFrame(tick);
+ };
+
+ requestAnimationFrame(tick);
+ }, [timeLeft, isActive]);
+
+ const totalElapsed = duration - timeLeft + elapsed;
+ const progress = Math.max(0, (1 - totalElapsed / duration) * 100);
+
+ return (
+
+
+
+
+
+
+
+
+

+
+
+
+ {timeLeft}
+
+
+ );
+}
+const theme = createTheme();
+
+const FluencyP1 = ({
+ setVoiceText,
+ setRecordedAudio,
+ setVoiceAnimate,
+ storyLine,
+ type,
+ handleNext,
+ background,
+ parentWords = "",
+ enableNext,
+ showTimer,
+ points,
+ steps,
+ currentStep,
+ contentId,
+ contentType,
+ level,
+ isDiscover,
+ progressData,
+ showProgress,
+ playTeacherAudio = () => {},
+ callUpdateLearner,
+ disableScreen,
+ isShowCase,
+ handleBack,
+ setEnableNext,
+ loading,
+ setOpenMessageDialog,
+ audio,
+ currentImg,
+ vocabCount,
+ wordCount,
+ multilingual,
+ contentSourceData,
+}) => {
+ const [isSpeaking, setIsSpeaking] = useState(false);
+ const [showResult, setShowResult] = useState(false);
+ const [showConfetti, setShowConfetti] = useState(false);
+ const [showExtras, setShowExtras] = useState(false);
+ const [showFinalResult, setShowFinalResult] = useState(false);
+ const [showTimers, setShowTimers] = useState(true);
+ const [currentSentenceIndex, setCurrentSentenceIndex] = useState(0);
+ const [hoveredWord, setHoveredWord] = useState(null);
+ const [hoverPosition, setHoverPosition] = useState({ top: 0, left: 0 });
+ const [isRecordingComplete, setIsRecordingComplete] = useState(false);
+ const [speed, setSpeed] = useState(null);
+ const [startTime, setStartTime] = useState(null);
+ const audioRef = useRef(null);
+ const [isPlaying, setIsPlaying] = useState(false);
+ const correctPracticeWords = getLocalData("correctPracticeWords");
+ const sessionId = getLocalData("sessionId");
+ const lang = getLocalData("lang");
+ const [open, setOpen] = useState(false);
+ const [parentModalOpen, setParentModalOpen] = useState(false);
+ const isMobile = useMediaQuery(theme.breakpoints.down("sm"));
+ const isTablet = useMediaQuery(theme.breakpoints.between("sm", "md"));
+ const handleStart = () => {
+ setStartTime(Date.now());
+ setSpeed(null);
+ };
+ useEffect(() => {
+ let isMounted = true;
+
+ const observer = new MutationObserver(() => {
+ if (!isMounted) return;
+
+ const modal =
+ document.querySelector(".successHeader") ||
+ document.querySelector('img[alt="gameWon"]') ||
+ document.querySelector('img[alt="gameLost"]');
+
+ if (modal) {
+ setParentModalOpen(true); // ❌ parent modal OPEN → Stop timer
+ } else {
+ setParentModalOpen(false); // ▶ parent modal CLOSED → Resume timer
+ }
+ });
+
+ observer.observe(document.body, {
+ childList: true,
+ subtree: true,
+ });
+
+ return () => {
+ isMounted = false;
+ observer.disconnect();
+ };
+ }, []);
+
+ let progressDatas = getLocalData("practiceProgress");
+ //const virtualId = String(getLocalData("virtualId"));
+
+ if (typeof progressDatas === "string") {
+ progressDatas = JSON.parse(progressDatas);
+ }
+
+ let currentPracticeStep;
+ if (progressDatas) {
+ currentPracticeStep = progressDatas?.currentPracticeStep;
+ }
+
+ const callTelemetry = async () => {
+ const sessionId = getLocalData("sessionId");
+ const responseStartTime = new Date().getTime();
+ const base64Data = "";
+
+ await callTelemetryApi(
+ currentSentence?.sentence,
+ sessionId,
+ currentStep - 1,
+ base64Data,
+ responseStartTime,
+ currentSentence?.sentence,
+ apiLevel
+ );
+ };
+ let currentLevel = practiceSteps?.[currentPracticeStep]?.title || "L1";
+
+ let apiLevel = `M${level}-${currentLevel}`;
+
+ useEffect(() => {
+ handleStart();
+ }, [parentWords]);
+
+ const handleStop = () => {
+ if (!startTime) return;
+ const duration = (Date.now() - startTime) / 1000;
+ if (duration <= 10) {
+ setSpeed("Fast");
+ } else {
+ setSpeed("Slow");
+ }
+ };
+
+ const sentencesData = [
+ {
+ id: 1,
+ sentence: contentSourceData.text,
+ audio: contentSourceData.audioUrl,
+ underlinedWords: Object.keys(parentWords),
+ hints: Object.fromEntries(
+ Object.entries(parentWords).map(([word, data]) => [
+ word,
+ data.kn.audio_url,
+ ])
+ ),
+ },
+ ];
+
+ const currentSentence = sentencesData[currentSentenceIndex];
+
+ console.log("FluencyP1Data:", parentWords);
+
+ const handleFinalAdd = () => {
+ if (!parentWords) return;
+
+ const allWordsData = Object.keys(parentWords).map((word) => {
+ const contentId = parentWords[word].content_id;
+
+ return {
+ original_text: word,
+ content_id: contentId,
+ milestone_level: `m${level}`,
+ practice_level: currentLevel,
+ session_id: sessionId,
+ practiced: true,
+ learned: true,
+ subsession_id: "session_123",
+ };
+ });
+
+ setLocalData("correctPracticeWords", [
+ ...(correctPracticeWords || []),
+ ...allWordsData,
+ ]);
+
+ console.log("Added all words at final:", allWordsData);
+ };
+
+ //console.log("P1 Data", parentWords);
+
+ const handleNextWord = () => {
+ handleNext();
+ callTelemetry();
+ setStartTime(null);
+ setIsSpeaking(false);
+ setShowResult(false);
+ setShowExtras(false);
+ setShowFinalResult(false);
+ setShowTimers(true);
+ setHoveredWord(null);
+ setCurrentSentenceIndex(0);
+ handleFinalAdd();
+ };
+
+ const playWordAudio = (audio) => {
+ if (!audio || !audioRef.current) return;
+
+ if (!audioRef.current.paused) {
+ console.log("Already playing, skipping...");
+ return;
+ }
+
+ audioRef.current.src = audio;
+ audioRef.current.currentTime = 0;
+ audioRef.current
+ .play()
+ .then(() => {
+ setIsPlaying(true);
+ console.log("Playing word audio once:", audio);
+ })
+ .catch((error) => {
+ console.error("Error playing audio:", error);
+ });
+ };
+
+ const handleAudioEnd = () => {
+ if (audioRef.current) {
+ audioRef.current.pause();
+ audioRef.current.currentTime = 0;
+ setIsPlaying(false);
+ }
+ };
+
+ const handleWordHover = (word, position) => {
+ setHoveredWord(word);
+ setHoverPosition(position);
+
+ if (word) {
+ playWordAudio(
+ `${process.env.REACT_APP_AWS_S3_BUCKET_CONTENT_URL}/multilingual_audios/${currentSentence.hints[word]}`
+ );
+ }
+ };
+
+ const handleSpeakClick = () => {
+ setIsSpeaking(true);
+ };
+
+ const handlePauseClick = () => {
+ handleStop();
+ setShowTimers(false);
+ setShowResult(true);
+ setShowConfetti(true);
+ const audio = new Audio(correctSound);
+ audio.play();
+
+ setTimeout(() => {
+ setShowConfetti(false);
+ setShowExtras(true);
+ }, 3000);
+ };
+
+ const handleNextClick = () => {
+ const nextIndex = (currentSentenceIndex + 1) % sentencesData.length;
+ setCurrentSentenceIndex(nextIndex);
+
+ setIsSpeaking(false);
+ setShowResult(false);
+ setShowExtras(false);
+ setShowTimers(true);
+ setHoveredWord(null);
+ };
+
+ const handleNextToFinal = () => {
+ setShowFinalResult(true);
+ };
+
+ return (
+
+
+

setOpen(true)}
+ />
+
+ {/* Modal */}
+ {open && (
+
+
+ {/* Close Button */}
+
+
+ {/* YouTube Video */}
+
+
+
+ )}
+
+
+ {showConfetti && (
+
+ )}
+
+ {!showFinalResult ? (
+
+
+

+
+
+ {showTimers && (
+
+
+
+ )}
+
+
+ {showExtras && (
+

{
+ playWordAudio(
+ `${process.env.REACT_APP_AWS_S3_BUCKET_CONTENT_URL}/all-audio-files/${lang}/${contentId}.wav`
+ );
+ }}
+ alt="listen"
+ style={{ width: "40px", height: "40px", cursor: "pointer" }}
+ />
+ )}
+
+
+
+
+
+
+
+
+ {!isSpeaking ? (
+

+ ) : !showResult ? (
+
+

+

+
+ ) : showExtras ? (
+

+ ) : (
+

+ )}
+
+
+ {/* Listen Bear */}
+ {isSpeaking && !showResult && (
+

+ )}
+
+ ) : (
+
+
+

+
+ Your Reading Speed
+
+
+
+
+

+
+
+
+ {speed}
+
+
+ {speed === "Fast"
+ ? "Great speed, keep it up!"
+ : "Try reading faster"}
+
+
+

{
+ handleNextWord();
+ }}
+ alt="next"
+ style={{
+ marginTop: "20px",
+ width: "45px",
+ height: "45px",
+ margin: "10px 20px",
+ cursor: "pointer",
+ }}
+ />
+
+ )}
+
+
+ );
+};
+
+export default FluencyP1;
diff --git a/src/components/Practice/FluencyP2.jsx b/src/components/Practice/FluencyP2.jsx
new file mode 100644
index 00000000..04ac17ca
--- /dev/null
+++ b/src/components/Practice/FluencyP2.jsx
@@ -0,0 +1,806 @@
+import React, { useState, useEffect, useRef } from "react";
+import Confetti from "react-confetti";
+import tortoiseImg from "../../assets/tortoiseImg.svg";
+import headerImg from "../../assets/headerImg.svg";
+import pauseImg from "../../assets/pauseImg.svg";
+import graphImg from "../../assets/graphImg.svg";
+import beardanceImg from "../../assets/beardance.svg";
+import nextImg from "../../assets/nextImg.svg";
+import listenImg from "../../assets/listenImg.svg";
+import LanguageHint from "../../assets/laguagehint.svg";
+import paraudio from "../../assets/parrotR1KanAudio.wav";
+import backgroundImg from "../../assets/starsandclouds.png";
+import meterImg from "../../assets/meterimg.svg";
+import rabbitImg from "../../assets/rabbit.svg";
+import tortoiseimage from "../../assets/tortoise.svg";
+import SpeedSelector from "../../utils/SpeedSelector";
+import MainLayout from "../Layouts.jsx/MainLayout";
+import hintimg from "../../assets/hintsicon.svg";
+
+import {
+ practiceSteps,
+ WordRedCircle,
+ StopButton,
+ SpeakButton,
+ ListenButton,
+ NextButtonRound,
+ RetryIcon,
+ getLocalData,
+ setLocalData,
+} from "../../utils/constants";
+import { phoneticMatch } from "../../utils/phoneticUtils";
+import SpeechRecognition, {
+ useSpeechRecognition,
+} from "react-speech-recognition";
+import RecordVoiceVisualizer from "../../utils/RecordVoiceVisualizer";
+import Joyride from "react-joyride";
+import LanguageModalNew from "../../utils/LanguageModal";
+import {
+ fetchASROutput,
+ handleTextEvaluation,
+ callTelemetryApi,
+} from "../../utils/apiUtil";
+import { loadTranscriber } from "../../utils/transcriber";
+import { doubleMetaphone } from "double-metaphone";
+import correctSound from "../../assets/correct.wav";
+import {
+ ThemeProvider,
+ createTheme,
+ useMediaQuery,
+ Grid,
+ Box,
+ CircularProgress,
+} from "@mui/material";
+const sentencesData = [
+ {
+ id: 1,
+ sentence: "The cow eats grass",
+ underlinedWords: ["cow", "grass"],
+ hints: {
+ cow: paraudio,
+ grass: paraudio,
+ },
+ },
+];
+
+function CircularTimer({ duration = 3, onComplete }) {
+ const [timeLeft, setTimeLeft] = useState(duration);
+
+ useEffect(() => {
+ if (timeLeft <= 0) {
+ onComplete();
+ return;
+ }
+ const interval = setInterval(() => {
+ setTimeLeft((prev) => prev - 1);
+ }, 1000);
+ return () => clearInterval(interval);
+ }, [timeLeft, onComplete]);
+
+ return (
+
+ {timeLeft > 0 ? timeLeft : null}
+
+ );
+}
+const theme = createTheme();
+
+const FluencyP2 = ({
+ setVoiceText,
+ setRecordedAudio,
+ setVoiceAnimate,
+ storyLine,
+ type,
+ handleNext,
+ background,
+ parentWords = "",
+ enableNext,
+ showTimer,
+ points,
+ steps,
+ currentStep,
+ contentId,
+ contentType,
+ level,
+ isDiscover,
+ progressData,
+ showProgress,
+ playTeacherAudio = () => {},
+ callUpdateLearner,
+ disableScreen,
+ isShowCase,
+ handleBack,
+ setEnableNext,
+ loading,
+ setOpenMessageDialog,
+ audio,
+ currentImg,
+ vocabCount,
+ wordCount,
+ multilingual,
+ contentSourceData,
+}) => {
+ const whiteContainerRef = useRef(null);
+ const sentenceRef = useRef(null);
+ const audioRef = useRef(null);
+ const [currentSentenceIndex, setCurrentSentenceIndex] = useState(0);
+ const [showContent, setShowContent] = useState(false);
+ const [showSentence, setShowSentence] = useState(false);
+ const [animationCompleted, setAnimationCompleted] = useState(false);
+ const [paused, setPaused] = useState(false);
+ const [showBearDance, setShowBearDance] = useState(false);
+ const [showConfetti, setShowConfetti] = useState(false);
+ const [showFinalState, setShowFinalState] = useState(false);
+ const [hoveredWord, setHoveredWord] = useState(null);
+ const [hintPosition, setHintPosition] = useState({ x: 0, y: 0 });
+ const [showReadingSpeed, setShowReadingSpeed] = useState(false);
+ const [isRecordingComplete, setIsRecordingComplete] = useState(false);
+ const audioRefs = useRef(null);
+ const [isPlaying, setIsPlaying] = useState(false);
+ const [selected, setSelected] = useState("Slow");
+ const [speed, setSpeed] = useState(getLocalData("speed"));
+ const [resetTimer, setResetTimer] = useState(false);
+ const [hasSpeedBeenSelected, setHasSpeedBeenSelected] = useState(
+ !!getLocalData("speed")
+ );
+ const [animationKey, setAnimationKey] = useState(0);
+ const lang = getLocalData("lang");
+ const [open, setOpen] = useState(false);
+ const isMobile = useMediaQuery(theme.breakpoints.down("sm"));
+ const isTablet = useMediaQuery(theme.breakpoints.between("sm", "md"));
+ const sentencesData = [
+ {
+ id: 1,
+ sentence: contentSourceData.text,
+ audio: contentSourceData.audioUrl,
+ underlinedWords: Object.keys(parentWords),
+ hints: Object.fromEntries(
+ Object.entries(parentWords).map(([word, data]) => [
+ word,
+ data.kn.audio_url,
+ ])
+ ),
+ },
+ ];
+
+ const currentSentence = sentencesData[currentSentenceIndex];
+
+ useEffect(() => {
+ if (getLocalData("speed")) {
+ startReadingFlow();
+ }
+ }, []);
+
+ const startReadingFlow = () => {
+ setShowContent(false);
+ setShowSentence(false);
+ setAnimationCompleted(false);
+ setPaused(false);
+ setShowBearDance(false);
+ setShowConfetti(false);
+ setShowFinalState(false);
+ setHoveredWord(null);
+ setAnimationKey((prev) => prev + 1); // Reset animation key
+
+ setResetTimer(true);
+ };
+
+ useEffect(() => {
+ if (showContent) {
+ setTimeout(() => {
+ setShowSentence(true);
+ }, 200);
+ }
+ }, [showContent]);
+
+ const handleAnimationComplete = () => {
+ setAnimationCompleted(true);
+ setShowBearDance(true);
+ setShowConfetti(false);
+
+ setTimeout(() => {
+ setShowConfetti(false);
+ setShowFinalState(true);
+ setShowBearDance(false);
+ }, 3000);
+ };
+
+ const handlePauseClick = () => {
+ setPaused(true);
+ setAnimationCompleted(true);
+ setShowBearDance(true);
+ setShowConfetti(true);
+ const audio = new Audio(correctSound);
+ audio.play();
+
+ setTimeout(() => {
+ setShowConfetti(false);
+ setShowFinalState(true);
+ setShowBearDance(false);
+ }, 3000);
+ };
+
+ const handleNextClick = (e) => {
+ e.stopPropagation();
+ handleReadingSpeedNext();
+ };
+
+ const handleRetryClick = (e) => {
+ e.stopPropagation();
+ startReadingFlow();
+ };
+
+ const playWordAudio = (audio) => {
+ console.log("playWordAudio called with:", audio, audioRefs.current);
+
+ if (!audio || !audioRefs.current) return;
+
+ if (!audioRefs.current.paused) {
+ console.log("Already playing, skipping...");
+ return;
+ }
+
+ audioRefs.current.src = audio;
+ audioRefs.current.currentTime = 0;
+ audioRefs.current
+ .play()
+ .then(() => {
+ setIsPlaying(true);
+ console.log("Playing word audio once:", audio);
+ })
+ .catch((error) => {
+ console.error("Error playing audio:", error);
+ });
+ };
+
+ let progressDatas = getLocalData("practiceProgress");
+ if (typeof progressDatas === "string") {
+ progressDatas = JSON.parse(progressDatas);
+ }
+
+ let currentPracticeStep;
+ if (progressDatas) {
+ currentPracticeStep = progressDatas?.currentPracticeStep;
+ }
+
+ const currentLevel = practiceSteps?.[currentPracticeStep]?.titleNew || "L1";
+ let apiLevel = `M${level}-${currentLevel}`;
+
+ const callTelemetry = async () => {
+ const sessionId = getLocalData("sessionId");
+ const responseStartTime = new Date().getTime();
+ const base64Data = "";
+
+ await callTelemetryApi(
+ currentSentence?.sentence,
+ sessionId,
+ currentStep - 1,
+ base64Data,
+ responseStartTime,
+ currentSentence?.sentence,
+ apiLevel
+ );
+ };
+ const handleAudioEnd = () => {
+ if (audioRefs.current) {
+ audioRefs.current.pause();
+ audioRefs.current.currentTime = 0;
+ setIsPlaying(false);
+ }
+ };
+
+ const handleReadingSpeedNext = () => {
+ setLocalData("speed", selected);
+
+ handleNext();
+ callTelemetry();
+ setShowReadingSpeed(false);
+ setShowContent(false);
+ setShowSentence(false);
+ setAnimationCompleted(false);
+ setPaused(false);
+ setShowBearDance(false);
+ setShowConfetti(false);
+ setShowFinalState(false);
+ setHoveredWord(null);
+
+ setCurrentSentenceIndex(
+ (prevIndex) => (prevIndex + 1) % sentencesData.length
+ );
+ };
+
+ const handleSpeedSelect = (speedValue) => {
+ setSelected(speedValue);
+ setHasSpeedBeenSelected(true);
+ setLocalData("speed", speedValue);
+
+ startReadingFlow();
+ };
+
+ const handleWordHover = (word, event) => {
+ if (
+ event.target.classList.contains("underlined-word") &&
+ currentSentence.underlinedWords.includes(word)
+ ) {
+ // only update if hovered word changed
+ if (hoveredWord !== word) {
+ setHoveredWord(word);
+
+ const rect = event.target.getBoundingClientRect();
+ const containerRect = whiteContainerRef.current.getBoundingClientRect();
+
+ setHintPosition({
+ x: rect.left - containerRect.left + rect.width / 2,
+ y: rect.bottom - containerRect.top + 5,
+ });
+
+ if (showFinalState && currentSentence.hints[word]) {
+ playWordAudio(
+ `${process.env.REACT_APP_AWS_S3_BUCKET_CONTENT_URL}/multilingual_audios/${currentSentence.hints[word]}`
+ );
+ }
+ }
+ }
+ };
+
+ const handleWordClick = (word, event) => {
+ if (
+ event.target.classList.contains("underlined-word") &&
+ currentSentence.underlinedWords.includes(word) &&
+ currentSentence.hints[word]
+ ) {
+ playWordAudio(
+ `${process.env.REACT_APP_AWS_S3_BUCKET_CONTENT_URL}/multilingual_audios/${currentSentence.hints[word]}`
+ );
+ }
+ };
+
+ const handleWordLeave = () => {
+ setHoveredWord(null);
+
+ if (audioRef.current) {
+ audioRef.current.pause();
+ audioRef.current.currentTime = 0;
+ }
+ };
+
+ const renderUnderlinedText = (text, underlinedWords) => {
+ const words = text.split(" ");
+ return words.map((word, index) => {
+ const cleanWord = word.replace(/[.,!?;:"]/g, "");
+ const isUnderlined = underlinedWords.includes(cleanWord);
+
+ if (isUnderlined) {
+ return (
+ handleWordHover(cleanWord, e)}
+ onMouseLeave={handleWordLeave}
+ onClick={(e) => handleWordClick(cleanWord, e)}
+ >
+ {word}
+
+ );
+ } else {
+ return (
+
+ {word}
+
+ );
+ }
+ });
+ };
+
+ // Get animation duration based on selected speed
+ const getAnimationDuration = () => {
+ if (selected === "Fast") return "5s";
+ if (selected === "Medium") return "10s";
+ return "15s";
+ };
+
+ const renderReadingScreen = () => (
+
+

setOpen(true)}
+ />
+
+ {/* Modal */}
+ {open && (
+
+
+ {/* Close Button */}
+
+
+ {/* YouTube Video */}
+
+
+
+ )}
+
+
+
+

+
+
+
+ {!showContent ? (
+
{
+ setShowContent(true);
+ setResetTimer(false);
+ }}
+ />
+ ) : (
+
+
+ {showFinalState && (
+

{
+ playWordAudio(
+ `${process.env.REACT_APP_AWS_S3_BUCKET_CONTENT_URL}/all-audio-files/${lang}/${contentId}.wav`
+ );
+ }}
+ alt="listen"
+ style={{
+ width: "35px",
+ height: "35px",
+ marginRight: "10px",
+ cursor: "pointer",
+ }}
+ />
+ )}
+ {showFinalState
+ ? renderUnderlinedText(
+ currentSentence.sentence,
+ currentSentence.underlinedWords
+ )
+ : currentSentence.sentence}
+
+
+ {/* CSS Animation */}
+
+
+ )}
+
+
+ {!showFinalState &&
+ (isMobile ? (
+
+
+
+ ) : (
+
+ ))}
+
+ {showFinalState && hoveredWord && currentSentence?.hints[hoveredWord] && (
+
+

+
+ )}
+
+ {showConfetti && showBearDance && whiteContainerRef.current && (
+
+ )}
+
+
+ {showContent && !animationCompleted && !paused && (
+
+

+
+

+
+ )}
+
+ {showBearDance && !showFinalState && (
+

+ )}
+
+ {showFinalState && (
+
+
+

handleNextClick(e)}
+ />
+
+ )}
+
+
+ );
+
+ return (
+
+
+ {renderReadingScreen()}
+
+
+ );
+};
+
+export default FluencyP2;
diff --git a/src/components/Practice/FluencyP3.jsx b/src/components/Practice/FluencyP3.jsx
new file mode 100644
index 00000000..5dd4c9c0
--- /dev/null
+++ b/src/components/Practice/FluencyP3.jsx
@@ -0,0 +1,1106 @@
+import React, { useEffect, useState } from "react";
+import headerImg from "../../assets/headerImg.svg";
+import nextImg from "../../assets/nextImg.svg";
+import beardanceImg from "../../assets/beardance.svg";
+import Confetti from "react-confetti";
+import rabbitImg from "../../assets/rabbit.svg";
+import cheetahImg from "../../assets/cheetah.svg";
+import tortoiseImg from "../../assets/tortoise.svg";
+import meterImg from "../../assets/meterimg.svg";
+import MainLayout from "../Layouts.jsx/MainLayout";
+import SpeedSelector from "../../utils/SpeedSelector";
+import { tickImg } from "../../utils/imageAudioLinks";
+import {
+ practiceSteps,
+ WordRedCircle,
+ StopButton,
+ SpeakButton,
+ ListenButton,
+ NextButtonRound,
+ RetryIcon,
+ getLocalData,
+ setLocalData,
+} from "../../utils/constants";
+import { phoneticMatch } from "../../utils/phoneticUtils";
+import SpeechRecognition, {
+ useSpeechRecognition,
+} from "react-speech-recognition";
+import RecordVoiceVisualizer from "../../utils/RecordVoiceVisualizer";
+import Joyride from "react-joyride";
+import LanguageModalNew from "../../utils/LanguageModal";
+import {
+ fetchASROutput,
+ handleTextEvaluation,
+ callTelemetryApi,
+} from "../../utils/apiUtil";
+import AudioTooltipModal from "./AudioTooltipModal";
+import { loadTranscriber } from "../../utils/transcriber";
+import { doubleMetaphone } from "double-metaphone";
+import correctSound from "../../assets/correct.wav";
+import wrongSound from "../../assets/audio/wrong.wav";
+import { Log } from "../../services/telementryService";
+import hintimg from "../../assets/hintsicon.svg";
+import {
+ ThemeProvider,
+ createTheme,
+ useMediaQuery,
+ Grid,
+ Box,
+ CircularProgress,
+} from "@mui/material";
+
+function CircularTimer({ duration = 3, onComplete, paused }) {
+ const [timeLeft, setTimeLeft] = useState(duration);
+
+ useEffect(() => {
+ if (paused) return;
+
+ if (timeLeft <= 0) {
+ onComplete();
+ return;
+ }
+
+ const interval = setInterval(() => {
+ setTimeLeft((prev) => prev - 1);
+ }, 1000);
+
+ return () => clearInterval(interval);
+ }, [timeLeft, paused]);
+
+ return (
+
+ {timeLeft > 0 ? timeLeft : null}
+
+ );
+}
+const theme = createTheme();
+
+const FluencyP3 = ({
+ setVoiceText,
+ setRecordedAudio,
+ setVoiceAnimate,
+ storyLine,
+ type,
+ handleNext,
+ background,
+ parentWords = "",
+ enableNext,
+ showTimer,
+ points,
+ steps,
+ currentStep,
+ contentId,
+ contentType,
+ level,
+ isDiscover,
+ progressData,
+ showProgress,
+ playTeacherAudio = () => {},
+ callUpdateLearner,
+ disableScreen,
+ isShowCase,
+ handleBack,
+ setEnableNext,
+ loading,
+ setOpenMessageDialog,
+ audio,
+ currentImg,
+ vocabCount,
+ wordCount,
+ multilingual,
+ contentSourceData,
+}) => {
+ const [currentSentenceIndex, setCurrentSentenceIndex] = useState(0);
+ const [currentWordIndex, setCurrentWordIndex] = useState(0);
+ const [showFinalScreen, setShowFinalScreen] = useState(false);
+ const [yesClicked, setYesClicked] = useState(false);
+ const [noClicked, setNoClicked] = useState(false);
+ const [showConfetti, setShowConfetti] = useState(false);
+ const [randomFinalWord, setRandomFinalWord] = useState({});
+ const [showResultScreen, setShowResultScreen] = useState(false);
+ const [isRecordingComplete, setIsRecordingComplete] = useState(false);
+ const [showWordAfterYes, setShowWordAfterYes] = useState(false);
+ const [questionStage, setQuestionStage] = useState(0); // 0 = first question, 1 = second question
+ const [currentQuestionWord, setCurrentQuestionWord] = useState("");
+ const [open, setOpen] = useState(false);
+ const [parentModalOpen, setParentModalOpen] = useState(false);
+ const isMobile = useMediaQuery(theme.breakpoints.down("sm"));
+ const isTablet = useMediaQuery(theme.breakpoints.between("sm", "md"));
+ const wordList = [
+ "Ebullient",
+ "Obfuscate",
+ "Ubiquitous",
+ "Pernicious",
+ "Vicissitude",
+ "Ephemeral",
+ "Loquacious",
+ "Recalcitrant",
+ "Pulchritudinous",
+ "Sagacious",
+ "Munificent",
+ "Perfunctory",
+ "Inscrutable",
+ "Quintessential",
+ "Ineffable",
+ "Perspicacious",
+ "Obstreperous",
+ "Intransigent",
+ "Mellifluous",
+ "Supercilious",
+ ];
+
+ const [selected, setSelected] = useState(() => {
+ const savedSpeed = getLocalData("speed");
+ return savedSpeed || "Slow";
+ });
+ const [showContent, setShowContent] = useState(false);
+ const [resetTimer, setResetTimer] = useState(false);
+ const [isTransitioning, setIsTransitioning] = useState(false);
+ const [readingSpeed, setReadingSpeed] = useState("Slow");
+ const [startTime, setStartTime] = useState(null);
+
+ const allSentences = contentSourceData?.map((item) => {
+ const sentence = item?.contentSourceData[0]?.text || "";
+ const words = sentence?.replace(/[.,!?]/g, "").split(" ");
+
+ return words.map((word, index) => ({
+ id: index + 1,
+ word,
+ }));
+ });
+
+ const currentSentence = allSentences[currentSentenceIndex];
+
+ const getSpeedBackground = () => {
+ switch (selected) {
+ case "Fast":
+ return "linear-gradient(to bottom, #e8f4fd, #c2e6ff)";
+ case "Medium":
+ return "linear-gradient(to bottom, #fff0e6, #ffd9b3)";
+ case "Slow":
+ default:
+ return "linear-gradient(to bottom, #fff7ef, #ffeede)";
+ }
+ };
+ let progressDatas = getLocalData("practiceProgress");
+ if (typeof progressDatas === "string") {
+ progressDatas = JSON.parse(progressDatas);
+ }
+
+ let currentPracticeStep;
+ if (progressDatas) {
+ currentPracticeStep = progressDatas?.currentPracticeStep;
+ }
+
+ const currentLevel = practiceSteps?.[currentPracticeStep]?.titleNew || "L1";
+ let apiLevel = `M${level}-${currentLevel}`;
+
+ const callTelemetry = async () => {
+ const sessionId = getLocalData("sessionId");
+ const responseStartTime = new Date().getTime();
+ const base64Data = "";
+ const sentenceText =
+ currentSentence?.map((wordObj) => wordObj.word).join(" ") || "";
+
+ await callTelemetryApi(
+ sentenceText,
+ sessionId,
+ currentStep - 1,
+ base64Data,
+ responseStartTime,
+ sentenceText,
+ apiLevel
+ );
+ };
+ console.log("cur", currentSentence.sentence);
+
+ const startReadingFlow = () => {
+ setShowContent(false);
+ setCurrentWordIndex(0);
+ setShowFinalScreen(false);
+ setShowWordAfterYes(false);
+ setYesClicked(false);
+ setNoClicked(false);
+ setQuestionStage(0); // Reset to first question
+ setResetTimer(true);
+ };
+ useEffect(() => {
+ let isMounted = true;
+
+ const observer = new MutationObserver(() => {
+ if (!isMounted) return;
+
+ const modal =
+ document.querySelector(".successHeader") ||
+ document.querySelector('img[alt="gameWon"]') ||
+ document.querySelector('img[alt="gameLost"]');
+
+ if (modal) {
+ setParentModalOpen(true); // Modal OPEN → Timer Must NOT Run
+ } else {
+ setParentModalOpen(false); // Modal CLOSED → Timer can run
+ }
+ });
+
+ observer.observe(document.body, { childList: true, subtree: true });
+
+ return () => {
+ isMounted = false;
+ observer.disconnect();
+ };
+ }, []);
+
+ useEffect(() => {
+ if (showContent) {
+ if (currentWordIndex < currentSentence.length - 1) {
+ const timer = setTimeout(() => {
+ setCurrentWordIndex((prev) => prev + 1);
+ }, getWordSpeed());
+ return () => clearTimeout(timer);
+ } else if (currentWordIndex === currentSentence.length - 1) {
+ const lastWordTimer = setTimeout(() => {
+ setShowFinalScreen(true);
+ // Set the word for first question
+ setCurrentQuestionWord(randomFinalWord[currentSentenceIndex]);
+ }, getWordSpeed());
+ return () => clearTimeout(lastWordTimer);
+ }
+ }
+ }, [showContent, currentWordIndex, currentSentence]);
+
+ const getWordSpeed = () => {
+ switch (selected) {
+ case "Fast":
+ return 500;
+ case "Medium":
+ return 1000;
+ case "Slow":
+ default:
+ return 1500;
+ }
+ };
+
+ const handleStop = () => {
+ //if (!startTime) return;
+ const duration = (Date.now() - startTime) / 1000;
+ console.log("time taken........", duration);
+
+ if (duration <= 10) {
+ setReadingSpeed("Fast");
+ } else if (duration <= 20) {
+ setReadingSpeed("Medium");
+ } else {
+ setReadingSpeed("Slow");
+ }
+ };
+
+ useEffect(() => {
+ if (currentSentence && currentSentence.length > 0) {
+ setRandomFinalWord((prev) => {
+ if (prev[currentSentenceIndex]) {
+ return prev;
+ }
+ const randomIndex = Math.floor(Math.random() * currentSentence.length);
+ const randomWord = currentSentence[randomIndex]?.word;
+ return {
+ ...prev,
+ [currentSentenceIndex]: randomWord,
+ };
+ });
+ }
+ }, [currentSentence, currentSentenceIndex]);
+
+ useEffect(() => {
+ if (getLocalData("speed")) {
+ startReadingFlow();
+ }
+ }, []);
+
+ const handleSpeedSelect = (speedValue) => {
+ setSelected(speedValue);
+ setLocalData("speed", speedValue);
+ startReadingFlow();
+ };
+
+ // YES click - FIXED: Always show word with tick for both questions
+ const handleYesClick = () => {
+ setYesClicked(true);
+ setNoClicked(false);
+
+ if (questionStage === 0) {
+ // ✅ First question YES = Correct
+ const audio = new Audio(correctSound);
+ audio.play();
+ setShowConfetti(true);
+
+ setTimeout(() => {
+ setShowConfetti(false);
+ setShowWordAfterYes(true); // show tick + next
+ setYesClicked(false);
+ }, 1500);
+ } else {
+ // ❌ Second question YES = Wrong
+ const audio = new Audio(wrongSound);
+ audio.play();
+
+ // FIX: Still show the word with tick even for wrong answer
+ setTimeout(() => {
+ setShowWordAfterYes(true); // show tick + next
+ setYesClicked(false);
+ }, 1000);
+ }
+ };
+
+ // NO click - FIXED: Always show word with tick for both questions
+ const handleNoClick = () => {
+ setNoClicked(true);
+ setYesClicked(false);
+
+ if (questionStage === 0) {
+ // ❌ First question NO = Wrong
+ const audio = new Audio(wrongSound);
+ audio.play();
+
+ // FIX: Still show the word with tick even for wrong answer
+ setTimeout(() => {
+ setShowWordAfterYes(true); // show tick + next
+ setNoClicked(false);
+ }, 1000);
+ } else {
+ const audio = new Audio(correctSound);
+ audio.play();
+ setShowConfetti(true);
+
+ setTimeout(() => {
+ setShowConfetti(false);
+ setShowWordAfterYes(true);
+ setNoClicked(false);
+ }, 1500);
+ }
+ };
+
+ const handleNextWord = () => {
+ setShowWordAfterYes(false);
+ setYesClicked(false);
+ setNoClicked(false);
+
+ if (questionStage === 0) {
+ // Move directly to 2nd question
+ setQuestionStage(1);
+ setShowContent(false);
+ const wordIndex = currentSentenceIndex % wordList.length;
+ setCurrentQuestionWord(wordList[wordIndex]);
+ } else {
+ // Move to next sentence or show results
+ setShowFinalScreen(false);
+ setShowWordAfterYes(false);
+ setIsTransitioning(true);
+ setShowResultScreen(true);
+
+ if (currentSentenceIndex + 1 < allSentences.length) {
+ handleStop();
+ setCurrentSentenceIndex((prev) => prev + 1);
+ setQuestionStage(0);
+
+ setTimeout(() => {
+ startReadingFlow();
+ setIsTransitioning(false);
+ }, 800);
+ } else {
+ setShowResultScreen(true);
+ setIsTransitioning(false);
+ }
+ }
+ };
+
+ const handleRetry = () => {
+ startReadingFlow();
+ };
+
+ // Helper function to render bear animation with correct positioning
+ const renderBearAnimation = () => {
+ // First question: Bear appears for YES (centered)
+ if (yesClicked && questionStage === 0) {
+ return (
+
+ );
+ }
+
+ // Second question: Bear appears for NO (centered)
+ if (noClicked && questionStage === 1) {
+ return (
+
+ );
+ }
+
+ return null;
+ };
+
+ return (
+
+
+

setOpen(true)}
+ />
+
+ {/* Modal */}
+ {open && (
+
+
+ {/* Close Button */}
+
+
+ {/* YouTube Video */}
+
+
+
+ )}
+
+
+

+
+
+ {showResultScreen ? (
+
+ {/* Top Title Row */}
+
+

+
+
+ Your overall reading speed
+
+
+
+ {/* Meter Items */}
+
+ {/* Slow */}
+
+

+
+ Slow
+
+
+
+ {/* Medium */}
+
+

+
+ Medium
+
+
+
+ {/* Fast */}
+
+

+
+ Fast
+
+
+
+
+ {/* Next Button */}
+

{
+ handleNext();
+ callTelemetry();
+ setReadingSpeed("Slow");
+ setStartTime(null);
+ setShowResultScreen(false);
+ }}
+ style={{
+ marginTop: isMobile ? "10px" : "16px",
+ marginBottom: isMobile ? "10px" : "15px",
+ width: isMobile ? "40px" : "50px",
+ cursor: "pointer",
+ }}
+ />
+
+ ) : showWordAfterYes ? (
+
+
+

+
+
+ {currentQuestionWord}
+
+
+
+
+
+
+
+
+
+

+
+
+
+ ) : !showFinalScreen && !showContent ? (
+
+ {
+ if (parentModalOpen) return;
+ setReadingSpeed("Slow");
+ setStartTime(Date.now());
+ setShowContent(true);
+ setResetTimer(false);
+ }}
+ />
+
+ ) : !showFinalScreen ? (
+ <>
+
+
+ {currentSentence[currentWordIndex]?.word}
+
+
+
+
+
+ >
+ ) : (
+
+
+ Did you see the word?
+
+
+
+ {currentQuestionWord}
+
+
+
+
+
+
+
+
+ {/* Render bear animation */}
+ {renderBearAnimation()}
+
+ )}
+
+
+ {showConfetti && (
+
+ )}
+
+
+
+
+ );
+};
+
+export default FluencyP3;
diff --git a/src/components/Practice/FluencyP4.jsx b/src/components/Practice/FluencyP4.jsx
new file mode 100644
index 00000000..3e722f4f
--- /dev/null
+++ b/src/components/Practice/FluencyP4.jsx
@@ -0,0 +1,1057 @@
+import React, { useState, useEffect, useRef } from "react";
+import Confetti from "react-confetti";
+import headerImg from "../../assets/headerImg.svg";
+import speakButton from "../../assets/speakButton.svg";
+import listenBear from "../../assets/bearlisten.svg";
+import graphImg from "../../assets/graphImg.svg";
+import pauseImg from "../../assets/pauseImg.svg";
+import bearImg from "../../assets/bearImg.svg";
+import listenImg from "../../assets/listenImg.svg";
+import nextImg from "../../assets/nextImg.svg";
+import backgroundImg from "../../assets/starsandclouds.png";
+import meterImg from "../../assets/meterimg.svg";
+import tortoiseImg from "../../assets/TurtleCircle.gif";
+import rabbitImg from "../../assets/RabbitCircle.gif";
+import rocketImg from "../../assets/RocketCircle.gif";
+import dogImg from "../../assets/dogimg.svg";
+import langhint from "../../assets/laguagehint.svg";
+import paraudio from "../../assets/parrotR1KanAudio.wav";
+import MainLayout from "../Layouts.jsx/MainLayout";
+import backimg from "../../assets/bacck.svg";
+import bookImg from "../../assets/bookimg.svg";
+
+import {
+ practiceSteps,
+ WordRedCircle,
+ StopButton,
+ SpeakButton,
+ ListenButton,
+ NextButtonRound,
+ RetryIcon,
+ getLocalData,
+ setLocalData,
+} from "../../utils/constants";
+import { phoneticMatch } from "../../utils/phoneticUtils";
+import SpeechRecognition, {
+ useSpeechRecognition,
+} from "react-speech-recognition";
+import RecordVoiceVisualizer from "../../utils/RecordVoiceVisualizer";
+import Joyride from "react-joyride";
+import LanguageModalNew from "../../utils/LanguageModal";
+import {
+ fetchASROutput,
+ handleTextEvaluation,
+ callTelemetryApi,
+} from "../../utils/apiUtil";
+import AudioTooltipModal from "./AudioTooltipModal";
+import { loadTranscriber } from "../../utils/transcriber";
+import { doubleMetaphone } from "double-metaphone";
+import correctSound from "../../assets/correct.wav";
+import hintimg from "../../assets/hintsicon.svg";
+import {
+ ThemeProvider,
+ createTheme,
+ useMediaQuery,
+ Grid,
+ Box,
+ CircularProgress,
+} from "@mui/material";
+
+const sentencesData = [
+ {
+ id: 1,
+ sentence: "The monkey is jumping",
+ underlinedWords: ["monkey", "jumping"],
+ hints: {
+ monkey: paraudio,
+ jumping: paraudio,
+ },
+ },
+ {
+ id: 2,
+ sentence: "A child sleeps",
+ underlinedWords: ["child", "sleeps"],
+ hints: {
+ child: paraudio,
+ sleeps: paraudio,
+ },
+ },
+ {
+ id: 3,
+ sentence: "Two birds are flying",
+ underlinedWords: ["birds", "flying"],
+ hints: {
+ birds: paraudio,
+ flying: paraudio,
+ },
+ },
+ {
+ id: 4,
+ sentence: "Boys play soccer",
+ underlinedWords: ["play", "boys"],
+ hints: {
+ play: paraudio,
+ boys: paraudio,
+ },
+ },
+ {
+ id: 5,
+ sentence: "The well has water",
+ underlinedWords: ["well", "water"],
+ hints: {
+ well: paraudio,
+ water: paraudio,
+ },
+ },
+];
+
+const UnderlinedSentence = ({
+ sentence,
+ underlinedWords,
+ hints,
+ showUnderlines,
+ onWordHover,
+}) => {
+ const words = sentence.split(" ");
+
+ return (
+
+ {words.map((word, index) => {
+ const isUnderlined = underlinedWords.includes(word);
+ const cleanWord = word.replace(/[.,!?;]/g, "");
+
+ return (
+
+ {
+ if (isUnderlined && showUnderlines) {
+ const rect = e.target.getBoundingClientRect();
+ onWordHover(cleanWord, {
+ top: rect.bottom + 5,
+ left: rect.left + rect.width / 2,
+ });
+ }
+ }}
+ onMouseLeave={() => {
+ if (isUnderlined && showUnderlines) {
+ onWordHover(null, { top: 0, left: 0 });
+ }
+ }}
+ >
+ {word}
+ {isUnderlined && showUnderlines && (
+
+ )}
+
+ {index < words.length - 1 && " "}
+
+ );
+ })}
+
+ );
+};
+
+const LanguageHint = ({ hint }) => {
+ if (!hint) return null;
+
+ return (
+
+

+
+ );
+};
+
+function CircularTimer({ duration = 30, isActive = true }) {
+ const [timeLeft, setTimeLeft] = React.useState(duration);
+ const [elapsed, setElapsed] = React.useState(0);
+
+ const radius = 30;
+ const cx = 40;
+ const cy = 40;
+ const circumference = 2 * Math.PI * radius;
+
+ // Decrease timeLeft every 1s
+ React.useEffect(() => {
+ if (timeLeft <= 0 || !isActive) return;
+ const interval = setInterval(() => {
+ setTimeLeft((prev) => prev - 1);
+ }, 1000);
+
+ return () => clearInterval(interval);
+ }, [timeLeft, isActive]);
+
+ React.useEffect(() => {
+ if (!isActive) return;
+ let start = performance.now();
+
+ const tick = (now) => {
+ const diff = now - start;
+ setElapsed(diff / 1000);
+ if (timeLeft > 0) requestAnimationFrame(tick);
+ };
+
+ requestAnimationFrame(tick);
+ }, [timeLeft, isActive]);
+
+ const totalElapsed = duration - timeLeft + elapsed;
+ const progress = Math.max(0, (1 - totalElapsed / duration) * 100);
+
+ return (
+
+
+
+
+
+
+
+
+

+
+
+
+ {timeLeft}
+
+
+ );
+}
+const theme = createTheme();
+
+const FluencyP4 = ({
+ setVoiceText,
+ setRecordedAudio,
+ setVoiceAnimate,
+ storyLine,
+ type,
+ handleNext,
+ background,
+ parentWords = "",
+ enableNext,
+ showTimer,
+ points,
+ steps,
+ currentStep,
+ contentId,
+ contentType,
+ level,
+ isDiscover,
+ progressData,
+ showProgress,
+ playTeacherAudio = () => {},
+ callUpdateLearner,
+ disableScreen,
+ isShowCase,
+ handleBack,
+ setEnableNext,
+ loading,
+ setOpenMessageDialog,
+ audio,
+ currentImg,
+ vocabCount,
+ wordCount,
+ multilingual,
+ contentSourceData,
+}) => {
+ steps = 1;
+
+ const [isSpeaking, setIsSpeaking] = useState(false);
+ const [showResult, setShowResult] = useState(false);
+ const [showConfetti, setShowConfetti] = useState(false);
+ const [showExtras, setShowExtras] = useState(false);
+ const [showFinalResult, setShowFinalResult] = useState(false);
+ const [showTimers, setShowTimers] = useState(true);
+ const [currentSentenceIndex, setCurrentSentenceIndex] = useState(0);
+ const [hoveredWord, setHoveredWord] = useState(null);
+ const [hoverPosition, setHoverPosition] = useState({ top: 0, left: 0 });
+ const [isRecordingComplete, setIsRecordingComplete] = useState(false);
+ const audioRef = useRef(null);
+ const [isPlaying, setIsPlaying] = useState(false);
+ const [speed, setSpeed] = useState(null);
+ const [startTime, setStartTime] = useState(null);
+ const lang = getLocalData("lang");
+ const [open, setOpen] = useState(false);
+ const [parentModalOpen, setParentModalOpen] = useState(false);
+ const isMobile = useMediaQuery(theme.breakpoints.down("sm")); // < 600px
+ const isTablet = useMediaQuery(theme.breakpoints.between("sm", "md"));
+ const buildSentencesData = (apiData) => {
+ return apiData?.map((item, index) => {
+ const sentence = item?.contentSourceData[0].text;
+ const audio = item?.contentSourceData[0].audioUrl;
+ const multilingualData = item?.multilingual_data || {};
+ const contentId = item?.contentId;
+
+ const underlinedWords = Object?.keys(multilingualData);
+
+ const hints = underlinedWords?.reduce((acc, word) => {
+ acc[word] = multilingualData[word]?.kn?.audio_url || null;
+ return acc;
+ }, {});
+
+ return {
+ id: index + 1,
+ sentence,
+ underlinedWords,
+ hints,
+ audio,
+ contentId,
+ };
+ });
+ };
+
+ let sentencesData = [];
+
+ if (contentSourceData && contentSourceData.length > 0) {
+ sentencesData = buildSentencesData(contentSourceData);
+ }
+
+ const handleStart = () => {
+ setStartTime(Date.now());
+ setSpeed(null);
+ };
+
+ useEffect(() => {
+ handleStart();
+ }, []);
+ useEffect(() => {
+ let isMounted = true;
+
+ const observer = new MutationObserver(() => {
+ if (!isMounted) return;
+
+ const modal =
+ document.querySelector(".successHeader") ||
+ document.querySelector('img[alt="gameWon"]') ||
+ document.querySelector('img[alt="gameLost"]');
+
+ if (modal) {
+ setParentModalOpen(true);
+ } else {
+ setParentModalOpen(false);
+ }
+ });
+
+ observer.observe(document.body, { childList: true, subtree: true });
+
+ return () => {
+ isMounted = false;
+ observer.disconnect();
+ };
+ }, []);
+
+ const handleStop = () => {
+ if (!startTime) return;
+ const duration = (Date.now() - startTime) / 1000;
+ if (duration <= 30) {
+ setSpeed("Fast");
+ } else {
+ setSpeed("Slow");
+ }
+ };
+
+ console.log("speed", speed);
+ let progressDatas = getLocalData("practiceProgress");
+ if (typeof progressDatas === "string") {
+ progressDatas = JSON.parse(progressDatas);
+ }
+
+ let currentPracticeStep;
+ if (progressDatas) {
+ currentPracticeStep = progressDatas?.currentPracticeStep;
+ }
+
+ const currentLevel = practiceSteps?.[currentPracticeStep]?.titleNew || "L1";
+ let apiLevel = `M${level}-${currentLevel}`;
+
+ const callTelemetry = async () => {
+ const sessionId = getLocalData("sessionId");
+ const responseStartTime = new Date().getTime();
+ const base64Data = "";
+
+ await callTelemetryApi(
+ currentSentence?.sentence,
+ sessionId,
+ currentStep - 1,
+ base64Data,
+ responseStartTime,
+ currentSentence?.sentence,
+ apiLevel
+ );
+ };
+
+ const currentSentence = sentencesData[currentSentenceIndex];
+ console.log("sentence", currentSentence);
+
+ const playAudio = (word) => {
+ const wordAudio = currentSentence.hints[word];
+ if (wordAudio) {
+ const audio = new Audio(wordAudio);
+ audio.play().catch((err) => console.log("Audio play error:", err));
+ }
+ };
+
+ const playWordAudio = (audio) => {
+ if (!audio || !audioRef.current) return;
+
+ if (!audioRef.current.paused) {
+ console.log("Already playing, skipping...");
+ return;
+ }
+
+ audioRef.current.src = audio;
+ audioRef.current.currentTime = 0;
+ audioRef.current
+ .play()
+ .then(() => {
+ setIsPlaying(true);
+ console.log("Playing word audio once:", audio);
+ })
+ .catch((error) => {
+ console.error("Error playing audio:", error);
+ });
+ };
+
+ const handleAudioEnd = () => {
+ if (audioRef.current) {
+ audioRef.current.pause();
+ audioRef.current.currentTime = 0;
+ setIsPlaying(false);
+ }
+ };
+
+ const handleWordHover = (word, position) => {
+ setHoveredWord(word);
+ setHoverPosition(position);
+
+ if (word) {
+ playWordAudio(
+ `${process.env.REACT_APP_AWS_S3_BUCKET_CONTENT_URL}/multilingual_audios/${currentSentence.hints[word]}`
+ );
+ }
+ };
+
+ const handleSpeakClick = () => {
+ setIsSpeaking(true);
+ };
+
+ const handlePauseClick = () => {
+ setShowConfetti(true);
+ const audio = new Audio(correctSound);
+ audio.play();
+
+ setTimeout(() => {
+ setShowConfetti(false);
+ setShowExtras(true);
+ if (currentSentenceIndex === sentencesData?.length - 1) {
+ setShowTimers(false);
+ setShowResult(true);
+ setCurrentSentenceIndex(0);
+ setShowExtras(true);
+ setIsSpeaking(true);
+ handleStop();
+ } else {
+ const nextIndex = (currentSentenceIndex + 1) % sentencesData.length;
+ setCurrentSentenceIndex(nextIndex);
+ setShowResult(false);
+ setShowExtras(false);
+ setIsSpeaking(false);
+ }
+
+ setHoveredWord(null);
+ }, 100);
+ };
+
+ const handleNextClick = () => {
+ const nextIndex = (currentSentenceIndex + 1) % sentencesData.length;
+ setCurrentSentenceIndex(nextIndex);
+ };
+
+ const handleNextToFinal = () => {
+ setShowFinalResult(true);
+ };
+ const handleBackClick = () => {
+ if (currentSentenceIndex > 0) {
+ setCurrentSentenceIndex(currentSentenceIndex - 1);
+ }
+ };
+
+ const isFirstSentence = currentSentenceIndex === 0;
+
+ return (
+
+
+

setOpen(true)}
+ />
+
+ {/* Modal */}
+ {open && (
+
+
+ {/* Close Button */}
+
+
+ {/* YouTube Video */}
+
+
+
+ )}
+
+
+ {showConfetti && (
+
+ )}
+
+ {!showFinalResult ? (
+
+
+

+
+
+ {showTimers && (
+
+
+
+ )}
+
+
+
+
+ {hoveredWord && currentSentence?.hints[hoveredWord] && (
+
+

+
+ )}
+
+
+
+ {!isSpeaking ? (
+

+ ) : !showResult ? (
+
+

+

+
+ ) : (
+
+

+
+ {/* Next Button */}
+

{
+ callTelemetry();
+ if (currentSentenceIndex > 0) {
+ handleNext();
+ }
+ if (currentSentenceIndex === sentencesData?.length - 1) {
+ handleNextToFinal();
+ } else {
+ handleNextClick();
+ }
+ }}
+ style={{
+ width: "40px",
+ cursor: "pointer",
+ }}
+ />
+
+ )}
+ {showResult && (
+
+ {sentencesData.map((_, index) => (
+
+ ))}
+
+ )}
+
+
+ {isSpeaking && !showResult && (
+

+ )}
+
+ ) : (
+
+
+

+
+ Your Reading Speed
+
+
+
+
+

+
+
+
+ {speed}
+
+
+ {speed === "Fast"
+ ? "Great speed, keep it up!"
+ : "Try reading faster"}
+
+
+
+
+

+
You read 5 sentences in 30 seconds
+
+
+

{
+ handleNext();
+ }}
+ alt="next"
+ style={{
+ width: "45px",
+ height: "45px",
+ cursor: "pointer",
+ marginBottom: "30px",
+ }}
+ />
+
+
+ )}
+
+
+ );
+};
+
+export default FluencyP4;
diff --git a/src/components/Practice/FluencyP5.jsx b/src/components/Practice/FluencyP5.jsx
new file mode 100644
index 00000000..8c2f68d4
--- /dev/null
+++ b/src/components/Practice/FluencyP5.jsx
@@ -0,0 +1,1054 @@
+import React, { useState, useEffect, useRef } from "react";
+import Confetti from "react-confetti";
+import tortoiseImg from "../../assets/tortoiseImg.svg";
+import headerImg from "../../assets/headerImg.svg";
+import pauseImg from "../../assets/pauseImg.svg";
+import graphImg from "../../assets/graphImg.svg";
+import beardanceImg from "../../assets/beardance.svg";
+import nextImg from "../../assets/nextImg.svg";
+import listenImg from "../../assets/listenImg.svg";
+import LanguageHint from "../../assets/laguagehint.svg";
+import backgroundImg from "../../assets/starsandclouds.png";
+import meterImg from "../../assets/meterimg.svg";
+import rabbitImg from "../../assets/rabbit.svg";
+import tortoiseimage from "../../assets/tortoise.svg";
+import SpeedSelector from "../../utils/SpeedSelector";
+import hintimg from "../../assets/hintsicon.svg";
+import dogImg from "../../assets/dogimg.svg";
+import speakButton from "../../assets/speakButton.svg";
+import bookImg from "../../assets/bookimg.svg";
+import wellImg from "../../assets/wellimage.svg";
+
+import MainLayout from "../Layouts.jsx/MainLayout";
+import {
+ practiceSteps,
+ WordRedCircle,
+ StopButton,
+ SpeakButton,
+ ListenButton,
+ NextButtonRound,
+ RetryIcon,
+ getLocalData,
+ setLocalData,
+} from "../../utils/constants";
+import { phoneticMatch } from "../../utils/phoneticUtils";
+import SpeechRecognition, {
+ useSpeechRecognition,
+} from "react-speech-recognition";
+import RecordVoiceVisualizer from "../../utils/RecordVoiceVisualizer";
+import Joyride from "react-joyride";
+import LanguageModalNew from "../../utils/LanguageModal";
+import {
+ fetchASROutput,
+ handleTextEvaluation,
+ callTelemetryApi,
+} from "../../utils/apiUtil";
+import AudioTooltipModal from "./AudioTooltipModal";
+import { loadTranscriber } from "../../utils/transcriber";
+import { doubleMetaphone } from "double-metaphone";
+import correctSound from "../../assets/correct.wav";
+import {
+ ThemeProvider,
+ createTheme,
+ useMediaQuery,
+ Grid,
+ Box,
+ CircularProgress,
+} from "@mui/material";
+
+function CircularTimer({ duration = 30, isActive = true }) {
+ const [timeLeft, setTimeLeft] = React.useState(duration);
+ const [elapsed, setElapsed] = React.useState(0);
+
+ const radius = 30;
+ const cx = 40;
+ const cy = 40;
+ const circumference = 2 * Math.PI * radius;
+
+ // Decrease timeLeft every 1s
+ React.useEffect(() => {
+ if (timeLeft <= 0 || !isActive) return;
+ const interval = setInterval(() => {
+ setTimeLeft((prev) => prev - 1);
+ }, 1000);
+
+ return () => clearInterval(interval);
+ }, [timeLeft, isActive]);
+
+ React.useEffect(() => {
+ if (!isActive) return;
+ let start = performance.now();
+
+ const tick = (now) => {
+ const diff = now - start;
+ setElapsed(diff / 1000);
+ if (timeLeft > 0) requestAnimationFrame(tick);
+ };
+
+ requestAnimationFrame(tick);
+ }, [timeLeft, isActive]);
+
+ const totalElapsed = duration - timeLeft + elapsed;
+ const progress = Math.max(0, (1 - totalElapsed / duration) * 100);
+
+ return (
+
+
+
+
+
+
+
+
+ {/*

*/}
+
+
+
+ {timeLeft}
+
+
+ );
+}
+const theme = createTheme();
+
+const FluencyP5 = ({
+ setVoiceText,
+ setRecordedAudio,
+ setVoiceAnimate,
+ storyLine,
+ type,
+ handleNext,
+ background,
+ parentWords = "",
+ enableNext,
+ showTimer,
+ points,
+ steps,
+ currentStep,
+ contentId,
+ contentType,
+ level,
+ isDiscover,
+ progressData,
+ showProgress,
+ playTeacherAudio = () => {},
+ callUpdateLearner,
+ disableScreen,
+ isShowCase,
+ handleBack,
+ setEnableNext,
+ loading,
+ setOpenMessageDialog,
+ audio,
+ currentImg,
+ vocabCount,
+ wordCount,
+ multilingual,
+ contentSourceData,
+}) => {
+ const whiteContainerRef = useRef(null);
+ const audioRef = useRef(null);
+ const [currentSentenceIndex, setCurrentSentenceIndex] = useState(0);
+ const [showContent, setShowContent] = useState(false);
+ const [showSentence, setShowSentence] = useState(false);
+ const [animationCompleted, setAnimationCompleted] = useState(false);
+ const [paused, setPaused] = useState(false);
+ const [showBearDance, setShowBearDance] = useState(false);
+ const [showConfetti, setShowConfetti] = useState(false);
+ const [showFinalState, setShowFinalState] = useState(false);
+ const [hoveredWord, setHoveredWord] = useState(null);
+ const [hintPosition, setHintPosition] = useState({ x: 0, y: 0 });
+ const [showReadingSpeed, setShowReadingSpeed] = useState(false);
+ const [isRecordingComplete, setIsRecordingComplete] = useState(false);
+ const audioRefs = useRef(null);
+ const [isPlaying, setIsPlaying] = useState(false);
+ const [selected, setSelected] = useState("Fast");
+ const [speed, setSpeed] = useState(getLocalData("speed"));
+ const [resetTimer, setResetTimer] = useState(false);
+ const [hasSpeedBeenSelected, setHasSpeedBeenSelected] = useState(
+ !!getLocalData("speed")
+ );
+ const [isSpeaking, setIsSpeaking] = useState(false);
+ const [showResult, setShowResult] = useState(false);
+ const [animationKey, setAnimationKey] = useState(0);
+
+ const [scrollPosition, setScrollPosition] = useState(130);
+ const scrollAnimationRef = useRef(null);
+ const lastFrameTimeRef = useRef(null);
+ const scrollContainerRef = useRef(null);
+ const textBlockRef = useRef(null);
+
+ const {
+ transcript,
+ interimTranscript,
+ listening,
+ resetTranscript,
+ browserSupportsSpeechRecognition,
+ } = useSpeechRecognition();
+ const transcriptRef = useRef("");
+ const [finalTranscript, setFinalTranscript] = useState("");
+ const [isMatch, setIsMatch] = useState(false);
+ const [open, setOpen] = useState(false);
+ const correctPracticeWords = getLocalData("correctPracticeWords");
+ const sessionId = getLocalData("sessionId");
+ const isMobile = useMediaQuery(theme.breakpoints.down("sm"));
+ const isTablet = useMediaQuery(theme.breakpoints.between("sm", "md"));
+ const getSimilarity = (str1, str2) => {
+ const a = str1.toLowerCase().trim().split(" ");
+ const b = str2.toLowerCase().trim().split(" ");
+ const matches = a.filter((word) => b.includes(word)).length;
+ const total = Math.max(a.length, b.length);
+ return matches / total;
+ };
+
+ useEffect(() => {
+ transcriptRef.current = transcript;
+ const similarity = getSimilarity(transcript, currentSentence.sentence);
+ setIsMatch(similarity >= 0.6);
+ }, [transcript]);
+
+ const sentencesData = [
+ {
+ id: 1,
+ sentence: contentSourceData.text,
+ audio: contentSourceData.audioUrl,
+ underlinedWords: Object.keys(parentWords),
+ hints: Object.fromEntries(
+ Object.entries(parentWords).map(([word, data]) => [
+ word,
+ data.kn.audio_url,
+ ])
+ ),
+ },
+ ];
+
+ const currentSentence = sentencesData[currentSentenceIndex];
+
+ useEffect(() => {
+ if (!getLocalData("speed")) {
+ setLocalData("speed", "Fast");
+ setSelected("Fast");
+ }
+
+ setShowContent(true);
+ setShowSentence(true);
+ startReadingFlow();
+ }, []);
+
+ const getDurationInMs = () => {
+ switch (selected) {
+ case "Fast":
+ return 5000; // 5s
+ case "Medium":
+ return 9000; // 9s
+ case "Slow":
+ default:
+ return 13000; // 13s
+ }
+ };
+
+ useEffect(() => {
+ setScrollPosition(120);
+ lastFrameTimeRef.current = null;
+ }, [animationKey]);
+
+ useEffect(() => {
+ if (
+ showBearDance ||
+ showFinalState ||
+ !scrollContainerRef.current ||
+ !textBlockRef.current
+ ) {
+ if (scrollAnimationRef.current) {
+ cancelAnimationFrame(scrollAnimationRef.current);
+ scrollAnimationRef.current = null;
+ }
+ lastFrameTimeRef.current = null;
+ return;
+ }
+
+ const containerHeight = scrollContainerRef.current.clientHeight;
+ const textHeight = textBlockRef.current.clientHeight;
+
+ if (containerHeight === 0 || textHeight === 0) {
+ scrollAnimationRef.current = requestAnimationFrame(animateScroll);
+ return;
+ }
+
+ const textHeightPercent = (textHeight / containerHeight) * 100;
+ const endPositionPercent = -textHeightPercent;
+
+ const startPositionPercent = 90;
+
+ const totalDistancePercent = startPositionPercent - endPositionPercent;
+
+ const durationMs = getDurationInMs();
+ const speedPercentPerMs = totalDistancePercent / durationMs;
+
+ const animateScroll = (timestamp) => {
+ if (!lastFrameTimeRef.current) {
+ lastFrameTimeRef.current = timestamp;
+ scrollAnimationRef.current = requestAnimationFrame(animateScroll);
+ return;
+ }
+
+ const deltaTime = timestamp - lastFrameTimeRef.current;
+ lastFrameTimeRef.current = timestamp;
+
+ const positionChangePercent = speedPercentPerMs * deltaTime;
+
+ setScrollPosition((prevPosition) => {
+ const newPosition = prevPosition - positionChangePercent;
+
+ if (newPosition <= endPositionPercent) {
+ const overshootPercent = endPositionPercent - newPosition;
+ return startPositionPercent - overshootPercent;
+ } else {
+ return newPosition;
+ }
+ });
+
+ scrollAnimationRef.current = requestAnimationFrame(animateScroll);
+ };
+
+ scrollAnimationRef.current = requestAnimationFrame(animateScroll);
+
+ return () => {
+ if (scrollAnimationRef.current) {
+ cancelAnimationFrame(scrollAnimationRef.current);
+ scrollAnimationRef.current = null;
+ }
+ lastFrameTimeRef.current = null;
+ };
+ }, [
+ showBearDance,
+ showFinalState,
+ animationKey,
+ selected,
+ scrollContainerRef.current,
+ textBlockRef.current,
+ ]);
+
+ const startReadingFlow = () => {
+ setShowContent(false);
+ setShowSentence(false);
+ setAnimationCompleted(false);
+ setPaused(false);
+ setShowBearDance(false);
+ setShowConfetti(false);
+ setShowFinalState(false);
+ setShowResult(false);
+ setHoveredWord(null);
+ setIsSpeaking(false);
+ setResetTimer(true);
+
+ setScrollPosition(120);
+ lastFrameTimeRef.current = null;
+ };
+
+ useEffect(() => {
+ setAnimationKey((prev) => prev + 1);
+ }, [selected]);
+ useEffect(() => {
+ const timer = setTimeout(() => {
+ setAnimationKey((prev) => prev + 1);
+ }, 100);
+
+ return () => clearTimeout(timer);
+ }, []);
+
+ useEffect(() => {
+ if (showContent) {
+ setTimeout(() => {
+ setShowSentence(true);
+ }, 200);
+ }
+ }, [showContent]);
+
+ const handlePauseClick = () => {
+ SpeechRecognition.stopListening();
+ setFinalTranscript(transcriptRef.current);
+ setPaused(true);
+ setShowBearDance(true);
+ setShowConfetti(true);
+
+ const audio = new Audio(correctSound);
+ audio.play();
+
+ setTimeout(() => {
+ setShowConfetti(false);
+ setShowBearDance(false);
+
+ setShowFinalState(true);
+ setShowResult(true);
+ }, 3000);
+ };
+ const handleNextClick = (e) => {
+ e.stopPropagation();
+ handleReadingSpeedNext();
+ };
+
+ const handleRetryClick = (e) => {
+ e.stopPropagation();
+ startReadingFlow();
+ };
+
+ const handleSpeakClick = () => {
+ setIsSpeaking(true);
+ setShowContent(true);
+ resetTranscript();
+ SpeechRecognition.startListening({
+ continuous: true,
+ interimResults: true,
+ });
+ };
+
+ const getDuration = () => {
+ switch (selected) {
+ case "Fast":
+ return "5s";
+ case "Medium":
+ return "9s";
+ case "Slow":
+ default:
+ return "13s";
+ }
+ };
+
+ let progressDatas = getLocalData("practiceProgress");
+ if (typeof progressDatas === "string") {
+ progressDatas = JSON.parse(progressDatas);
+ }
+
+ let currentPracticeStep;
+ if (progressDatas) {
+ currentPracticeStep = progressDatas?.currentPracticeStep;
+ }
+
+ const currentLevel = practiceSteps?.[currentPracticeStep]?.titleNew || "L1";
+ let apiLevel = `M${level}-${currentLevel}`;
+
+ const callTelemetry = async () => {
+ const sessionId = getLocalData("sessionId");
+ const responseStartTime = new Date().getTime();
+ const base64Data = "";
+
+ await callTelemetryApi(
+ currentSentence?.sentence,
+ sessionId,
+ currentStep - 1,
+ base64Data,
+ responseStartTime,
+ currentSentence?.sentence,
+ apiLevel
+ );
+ };
+
+ const playWordAudio = (audio) => {
+ console.log("playWordAudio called with:", audio, audioRefs.current);
+
+ if (!audio || !audioRefs.current) return;
+
+ if (!audioRefs.current.paused) {
+ console.log("Already playing, skipping...");
+ return;
+ }
+
+ audioRefs.current.src = audio;
+ audioRefs.current.currentTime = 0;
+ audioRefs.current
+ .play()
+ .then(() => {
+ setIsPlaying(true);
+ console.log("Playing word audio once:", audio);
+ })
+ .catch((error) => {
+ console.error("Error playing audio:", error);
+ });
+ };
+
+ const handleAudioEnd = () => {
+ if (audioRefs.current) {
+ audioRefs.current.pause();
+ audioRefs.current.currentTime = 0;
+ setIsPlaying(false);
+ }
+ };
+
+ const handleReadingSpeedNext = () => {
+ setLocalData("speed", selected);
+ callTelemetry();
+ handleNext();
+ setShowReadingSpeed(false);
+ setShowContent(false);
+ setShowSentence(false);
+ setAnimationCompleted(false);
+ setPaused(false);
+ setShowBearDance(false);
+ setShowConfetti(false);
+ setShowFinalState(false);
+ setShowResult(false);
+ setHoveredWord(null);
+ setIsSpeaking(false);
+
+ const allWordsData = Object.keys(parentWords).map((word) => {
+ const contentId = parentWords[word].content_id;
+
+ return {
+ original_text: word,
+ content_id: contentId,
+ milestone_level: `m${level}`,
+ practice_level: currentLevel,
+ session_id: sessionId,
+ practiced: true,
+ learned: true,
+ subsession_id: "session_123",
+ };
+ });
+ setLocalData("correctPracticeWords", [
+ ...(correctPracticeWords || []),
+ ...allWordsData,
+ ]);
+
+ setScrollPosition(120);
+ lastFrameTimeRef.current = null;
+
+ setCurrentSentenceIndex(
+ (prevIndex) => (prevIndex + 1) % sentencesData.length
+ );
+ };
+
+ const handleSpeedSelect = (speedValue) => {
+ setSelected(speedValue);
+ setHasSpeedBeenSelected(true);
+ setLocalData("speed", speedValue);
+
+ startReadingFlow();
+ };
+
+ const handleWordHover = (word, event) => {
+ if (
+ event.target.classList.contains("underlined-word") &&
+ currentSentence.underlinedWords.includes(word)
+ ) {
+ setHoveredWord(word);
+
+ const rect = event.target.getBoundingClientRect();
+ const containerRect = whiteContainerRef.current.getBoundingClientRect();
+
+ setHintPosition({
+ x: rect.left - containerRect.left + rect.width / 2,
+ y: rect.bottom - containerRect.top + 5,
+ });
+
+ if (showFinalState && currentSentence.hints[word]) {
+ playWordAudio(
+ `${process.env.REACT_APP_AWS_S3_BUCKET_CONTENT_URL}/multilingual_audios/${currentSentence.hints[word]}`
+ );
+ }
+ }
+ };
+
+ const handleWordClick = (word, event) => {
+ if (
+ event.target.classList.contains("underlined-word") &&
+ currentSentence.underlinedWords.includes(word) &&
+ currentSentence.hints[word]
+ ) {
+ playWordAudio(
+ `${process.env.REACT_APP_AWS_S3_BUCKET_CONTENT_URL}/multilingual_audios/${currentSentence.hints[word]}`
+ );
+ }
+ };
+
+ const handleWordLeave = () => {
+ setHoveredWord(null);
+
+ if (audioRef.current) {
+ audioRef.current.pause();
+ audioRef.current.currentTime = 0;
+ }
+ };
+
+ const renderUnderlinedText = (text, underlinedWords) => {
+ const words = text.split(" ");
+ return words.map((word, index) => {
+ const cleanWord = word.replace(/[.,!?;:"]/g, "");
+ const isUnderlined = underlinedWords.includes(cleanWord);
+
+ if (isUnderlined) {
+ return (
+ handleWordHover(cleanWord, e)}
+ onMouseLeave={handleWordLeave}
+ onClick={(e) => handleWordClick(cleanWord, e)}
+ >
+ {word}
+
+ );
+ } else {
+ return (
+
+ {word}
+
+ );
+ }
+ });
+ };
+
+ const renderReadingScreen = () => {
+ if (showFinalState) {
+ return (
+
+

{}}
+ />
+
+
+

+
+ Well Done!
+
+
+
+
+

+ {isMatch ? (
+
+ You spoke the paragraph correctly
+
+ ) : (
+
+ Please try again, your speech didn’t match enough
+
+ )}
+
+
+
+
+

handleNextClick(e)}
+ />
+
+
+ );
+ }
+
+ return (
+
+
+

setOpen(true)}
+ />
+
+ {/* ✅ Common Modal */}
+ {open && (
+
+
+
+
+
+
+
+ )}
+ {!showBearDance && (
+
+
+
+ )}
+
+ {!showBearDance && (
+
+
+
+ )}
+
+
+
+ {currentSentence.sentence}
+
+
+
+
+
+ {!isSpeaking && !showFinalState && !showBearDance && (
+

+ )}
+
+
+ {isSpeaking && !paused && !showBearDance && (
+
+

+

+
+ )}
+
+ {showBearDance && !showFinalState && (
+

+ )}
+
+
+ {showConfetti && showBearDance &&
}
+
+ );
+ };
+
+ return (
+
+
+ {renderReadingScreen()}
+
+
+ );
+};
+
+export default FluencyP5;
diff --git a/src/components/Practice/Mechanics3.jsx b/src/components/Practice/Mechanics3.jsx
index cbf84679..79ba4280 100644
--- a/src/components/Practice/Mechanics3.jsx
+++ b/src/components/Practice/Mechanics3.jsx
@@ -97,7 +97,8 @@ const Mechanics2 = ({
const lang = getLocalData("lang");
const correctOption = options?.find((opt) => opt.isAns)?.text;
const filledSentence = parentWords?.replace(/_+/g, correctOption);
- //console.log('Mechanics3', answer);
+
+ //console.log('Mechanics3', parentWords, options, filledSentence);
useEffect(() => {
if (!enableNext) {
diff --git a/src/components/Practice/Mechanics7.jsx b/src/components/Practice/Mechanics7.jsx
index 78dd8eea..293ae336 100644
--- a/src/components/Practice/Mechanics7.jsx
+++ b/src/components/Practice/Mechanics7.jsx
@@ -38,12 +38,22 @@ import SpeechRecognition, {
} from "react-speech-recognition";
import RecordVoiceVisualizer from "../../utils/RecordVoiceVisualizer";
import Joyride from "react-joyride";
-
+import LanguageModalNew from "../../utils/LanguageModal";
import {
fetchASROutput,
handleTextEvaluation,
callTelemetryApi,
} from "../../utils/apiUtil";
+import AudioTooltipModal from "./AudioTooltipModal";
+import { loadTranscriber } from "../../utils/transcriber";
+import { doubleMetaphone } from "double-metaphone";
+import loadingJson from "../../assets/loadingJson.json";
+import Lottie from "lottie-react";
+import {
+ transliterateKannadaToLatin,
+ compareWords,
+} from "../../utils/textUtils";
+import hintimg from "../../assets/hintsicon.svg";
// const isChrome =
// /Chrome/.test(navigator.userAgent) &&
@@ -86,19 +96,32 @@ const Mechanics7 = ({
currentImg,
vocabCount,
wordCount,
+ multilingual,
}) => {
const [words, setWords] = useState(
type === "word" ? [] : ["Friend", "She is", "My"]
);
const [recordingStates, setRecordingStates] = useState({});
const [completeAudio, setCompleteAudio] = useState(null);
+ const [open, setOpen] = useState(false);
+
+ const Loader = () => {
+ return (
+
+ );
+ };
useEffect(() => {
if (words && words?.length) {
setRecordingStates(
words.reduce((acc, word) => ({ ...acc, [word]: false }), {})
);
- setCompleteAudio(currentImg?.completeAudio);
+ setCompleteAudio(currentImg?.audioUrl);
}
}, [words]);
@@ -163,7 +186,7 @@ const Mechanics7 = ({
const [incorrectWords, setIncorrectWords] = useState({});
const [isMicOn, setIsMicOn] = useState(false);
const [syllAudios, setSyllAudios] = useState([]);
- const [isCorrect, setIsCorrect] = useState(true);
+ const [isWordCorrect, setIsWordCorrect] = useState(false);
const currentWordRef = useRef(currentWord);
const currentIsSelectedRef = useRef(currentIsSelected);
const wordsRef = useRef(words);
@@ -184,19 +207,45 @@ const Mechanics7 = ({
const [abusiveFound, setAbusiveFound] = useState(false);
const [detectedWord, setDetectedWord] = useState("");
const [language, setLanguage] = useState(getLocalData("lang") || "en");
- const syllableCount = currentImg?.syllablesAudio?.length || 0;
- const isLastSyllable = stepIndex === syllableCount;
+ const syllableCount = parentWords?.syllable?.length || 0;
+ const isLastSyllable = true;
const [currentText, setCurrentText] = useState("");
+ const sessionId = getLocalData("sessionId");
+ const correctPracticeWords = getLocalData("correctPracticeWords");
+ const [showModal, setShowModal] = useState(false);
+ const [selectedWord, setSelectedWord] = useState("");
+ const [isLoading, setIsLoading] = useState(null);
+ const [showMultiLingual, setShowMultiLingual] = useState(false);
+ const lang = getLocalData("lang") || "en";
+
+ function sanitize(text) {
+ return text
+ .toLowerCase()
+ .replace(/[.,\/#!$%\^&\*;:{}=\-_`~()"\[\]'’]/g, "")
+ .replace(/\s{2,}/g, " ")
+ .trim();
+ }
+
+ function phoneticMatch(a, b) {
+ const [a1, a2] = doubleMetaphone(a);
+ const [b1, b2] = doubleMetaphone(b);
+ return a1 === b1 || a1 === b2 || a2 === b1 || a2 === b2;
+ }
+
+ const handleWordClick = (word) => {
+ setSelectedWord(word);
+ setShowModal(true);
+ };
// Update currentText whenever currentImg or stepIndex changes
useEffect(() => {
const text = isLastSyllable
- ? currentImg?.completeWord
- : currentImg?.syllablesAudio?.[stepIndex]?.name || "";
+ ? currentImg?.text
+ : parentWords?.syllable?.[stepIndex]?.text || "";
setCurrentText(text);
if (transcript) {
const filteredText = filterBadWords(transcript, language);
- console.log("filtered", filteredText);
+ //console.log("filtered", filteredText);
if (filteredText.includes("*")) {
stopRecording();
@@ -214,12 +263,10 @@ const Mechanics7 = ({
// ? currentImg?.completeWord
// : currentImg?.syllablesAudio?.[stepIndex]?.name || "";
- const currentAudio = isLastSyllable
- ? currentImg?.completeAudio
- : currentImg?.syllablesAudio?.[stepIndex]?.audio || null;
+ const currentAudio = parentWords?.syllable?.[stepIndex]?.audio_url || null;
const [stepsIndex, setStepsIndex] = useState(0);
- console.log("wordSyl", currentText);
+ //console.log("wordSyl", currentText);
const startAudioRecording = async () => {
try {
@@ -238,7 +285,7 @@ const Mechanics7 = ({
}
};
- mediaRecorder.onstop = () => {
+ mediaRecorder.onstop = async () => {
console.log("⛔ Recording stopped.");
if (chunksRef.current.length === 0) {
console.warn("❗ No data to create blob.");
@@ -251,6 +298,41 @@ const Mechanics7 = ({
chunksRef.current = [];
streamRef.current?.getTracks().forEach((track) => track.stop());
+
+ if (isLastSyllable) {
+ try {
+ setIsLoading(true);
+ const transcriber = await loadTranscriber();
+ //console.log("Transcriber is:", transcriber);
+ const audioUrl = URL.createObjectURL(audioBlob);
+ const output = await transcriber(audioUrl, {
+ chunk_length_s: 20,
+ stride_length_s: 5,
+ task: "transcribe",
+ language: "en",
+ });
+
+ const transcripts = sanitize(output.text);
+ const target = sanitize(currentText);
+ const isCorrect =
+ transcripts.includes(target) ||
+ phoneticMatch(transcripts, target);
+
+ //console.log("Transcription resultss 1:", transcripts);
+ //console.log("Transcription resultss 2:", target);
+
+ setIsWordCorrect(isCorrect);
+
+ setIsLoading(false);
+ // setStatus("inactive");
+ } catch (error) {
+ console.error("Transcription error:", error);
+ setIsLoading(false);
+ setIsWordCorrect(false);
+ // setStatus("inactive");
+ // props.setIsCorrect?.(false);
+ }
+ }
};
mediaRecorder.start();
@@ -260,7 +342,7 @@ const Mechanics7 = ({
}
};
- const stopAudioRecording = () => {
+ const stopAudioRecording = async () => {
if (
mediaRecorderRef.current &&
mediaRecorderRef.current.state !== "inactive"
@@ -443,7 +525,7 @@ const Mechanics7 = ({
stopAudioRecording();
const finalTranscript = transcriptRef.current;
setAbusiveFound(false);
- console.log("textR", word, finalTranscript);
+ //console.log("textR", word, finalTranscript);
const matchPercentage = phoneticMatch(word, finalTranscript);
if (matchPercentage < 40) {
@@ -522,14 +604,14 @@ const Mechanics7 = ({
const [shake, setShake] = useState(false);
useEffect(() => {
- setWordsAfterSplit(currentImg.syllable);
- setWords(currentImg.syllable);
- setSyllAudios(currentImg.syllablesAudio);
- wordsRef.current = currentImg.syllable;
+ setWordsAfterSplit(parentWords?.syllable?.map((s) => s.text));
+ setWords(parentWords?.syllable?.map((s) => s.text));
+ setSyllAudios(parentWords?.syllable);
+ wordsRef.current = currentImg?.syllable;
}, [currentImg]);
const handleWordsLogic = (word, transcribedText, isSelected) => {
- console.log("wordsZ", word, transcribedText);
+ //console.log("wordsZ", word, transcribedText);
const matchPercentage = phoneticMatch(word, transcribedText);
@@ -608,15 +690,15 @@ const Mechanics7 = ({
? "correct"
: "wrong";
- useEffect(() => {
- const isWrong =
- selectedWordsRef.current?.length !== wordsAfterSplit?.length ||
- selectedWordsRef.current?.join(" ") !== parentWords;
+ // useEffect(() => {
+ // const isWrong =
+ // selectedWordsRef.current?.length !== wordsAfterSplit?.length ||
+ // selectedWordsRef.current?.join(" ") !== parentWords;
- setIsCorrect(isWrong);
- }, [selectedWordsRef.current, wordsAfterSplit, parentWords]);
+ // setIsCorrect(isWrong);
+ // }, [selectedWordsRef.current, wordsAfterSplit, parentWords]);
- console.log("ans", incorrectWords);
+ //console.log("ans", isLastSyllable, isWordCorrect);
const getBorderColor = () => {
if (answer === "correct") {
@@ -671,7 +753,22 @@ const Mechanics7 = ({
const isCorrectWord = incorrectWords[currentText] === false;
const isIncorrectWord = incorrectWords[currentText] === true;
- console.log("audios", completeAudio, answer);
+ const text = currentImg?.text || "";
+ const search = currentText || "";
+
+ const matchIndex = text.toLowerCase().indexOf(search.toLowerCase());
+
+ let before = text;
+ let match = "";
+ let after = "";
+
+ if (matchIndex !== -1 && search.length > 0) {
+ before = text.slice(0, matchIndex);
+ match = text.slice(matchIndex, matchIndex + search.length);
+ after = text.slice(matchIndex + search.length);
+ }
+
+ //console.log("audios", completeAudio, answer);
return (
+
setOpen(true)}
+ />
+
+ {/* Modal */}
+ {open && (
+
+
+ {/* Close Button */}
+
+
+ {/* YouTube Video */}
+
+
+
+ )}
+
{/*
+
+ {before && {before}}
+ {match && {match}}
+ {after && {after}}
+
-
+
- {isRecorded && (
+ {/* {isRecorded && (
+ )} */}
+ {isLastSyllable && isRecorded ? (
+
+ {currentText}
+
+ ) : (
+
+ {currentText}
+
+ )}
+ {showMultiLingual && (
+
+
+ {/* Kannada Letter Box */}
+
+
+ ಕ
+
+
+
+
+
+
)}
-
- {currentText}
-
- {isRecorded && (
+ {isRecorded && !showMultiLingual && (
)}
- {/* Action Buttons */}
- {!isRecording && !isRecorded && (
+ {showMultiLingual && (
+
+ )}
+
+ {showMultiLingual && (
+
+ {
+ setShowMultiLingual(false);
+ setIsRecorded(false);
+ setIsRecording(true);
+ startRecording(currentText);
+ }}
+ >
+
+
+
+ {
+ setIsRecorded(false);
+ setShowMultiLingual(false);
+
+ const newWordData = {
+ original_text: currentText,
+ content_id: contentId,
+ milestone_level: "m1",
+ practice_level: currentLevel,
+ session_id: sessionId,
+ practiced: true,
+ learned: isWordCorrect ? true : false,
+ subsession_id: "session_123",
+ };
+
+ callTelemetry();
+ setLocalData("correctPracticeWords", [
+ ...(correctPracticeWords || []),
+ newWordData,
+ ]);
+ handleNext();
+ setStepIndex(0);
+ }}
+ >
+
+
+
+ )}
+
+ {!isRecording && !isRecorded && !showMultiLingual && (
{isPlaying ? (
{
- playWordAudio(currentAudio);
+ playWordAudio(
+ `${process.env.REACT_APP_AWS_S3_BUCKET_CONTENT_URL}/mechanics_audios/${currentAudio}`
+ );
}}
>
@@ -976,7 +1320,7 @@ const Mechanics7 = ({
)}
- {isRecording && (
+ {isRecording && !showMultiLingual && (
@@ -1078,135 +1423,148 @@ const Mechanics7 = ({
)}
- {isRecorded && (
-
+ {isRecorded &&
+ !showMultiLingual &&
+ (isLoading ? (
+
+
+
+ ) : (
- {isPlaying ? (
-
-
-
+ {isPlaying ? (
+
+
- {/* */}
-
-
- ) : (
-
-
{
- playAudioFromBlob(recordedAudioBlob);
- }}
- >
-
+
+ {/* */}
+
+
+ ) : (
+
+
- {/* */}
-
-
- )}
+ onClick={() => {
+ playAudioFromBlob(recordedAudioBlob);
+ }}
+ >
+
+ {/* */}
+
+
+ )}
+
+ {
+ setIsRecorded(false);
+ setIsRecording(true);
+ startRecording(currentText);
+ }}
+ style={{
+ //marginTop: "-10px",
+ cursor: "pointer",
+ //marginLeft: "30px",
+ }}
+ >
+
+
- {
- setIsRecorded(false);
- setIsRecording(true);
- startRecording(currentText);
+ if (isLastSyllable) {
+ setShowMultiLingual(true);
+ } else {
+ setStepIndex((prev) => prev + 1);
+ setIsRecorded(false);
+ }
}}
- style={{
- //marginTop: "-10px",
+ sx={{
+ marginTop: "30px",
cursor: "pointer",
//marginLeft: "30px",
}}
>
-
-
-
- {
- setIsRecorded(false);
- if (isLastSyllable) {
- callTelemetry();
- handleNext();
- setStepIndex(0);
- } else {
- setStepIndex((prev) => prev + 1);
- }
- }}
- sx={{
- marginTop: "30px",
- cursor: "pointer",
- //marginLeft: "30px",
- }}
- >
-
+
+
-
- )}
+ ))}
+ setShowModal(false)}
+ />
diff --git a/src/components/Practice/ParagraphFlow.jsx b/src/components/Practice/ParagraphFlow.jsx
new file mode 100644
index 00000000..3aec649e
--- /dev/null
+++ b/src/components/Practice/ParagraphFlow.jsx
@@ -0,0 +1,1490 @@
+import React, { useState, useRef, useEffect } from "react";
+import { Box } from "@mui/material";
+import MainLayout from "../Layouts.jsx/MainLayout";
+import Confetti from "react-confetti";
+import speakButton from "../../assets/speakButton.svg";
+import pauseImg from "../../assets/pauseImg.svg";
+import graphImg from "../../assets/graphImg.svg";
+import beardanceImg from "../../assets/beardances.gif";
+import hintimg from "../../assets/hintsicon.svg";
+import nextImg from "../../assets/nextImg.svg";
+import listenImg from "../../assets/listenImg.svg";
+import listenbear from "../../assets/listenbear.gif";
+import bookpageImg from "../../assets/bookimageone.svg";
+import multilingualImg from "../../assets/multilingual.svg";
+import backgroundImg from "../../assets/starsandclouds.png";
+import meterImg from "../../assets/meterimg.svg";
+import tortoiseImg from "../../assets/tortoiseImg.svg";
+import audioone from "../../assets/audio1.wav";
+import correctSound from "../../assets/correct.wav";
+import { callTelemetryApi } from "../../utils/apiUtil";
+import {
+ practiceSteps,
+ getLocalData,
+ setLocalData,
+} from "../../utils/constants";
+import SpeechRecognition, {
+ useSpeechRecognition,
+} from "react-speech-recognition";
+import { Modal } from "@mui/material";
+import ZoomInIcon from "@mui/icons-material/ZoomIn";
+import CloseIcon from "@mui/icons-material/Close";
+
+const paragraphPages = [
+ {
+ page: 1,
+ bookImage: bookpageImg,
+ highlightedText:
+ "He happily started eating it. After some time, he got bored. Then he thought of colourful fruits. Immediately, fruit in baskets appeared. He started eating them. There were grapes, mangoes, apples, bananas, jackfruit, melons, guavas, oranges, and many more.",
+ audio: audioone,
+ keywords: [
+ {
+ word: "happily",
+ audio: "/audio/happily.mp3",
+ },
+ {
+ word: "eating",
+ audio: "/audio/eating.mp3",
+ },
+ {
+ word: "colourful",
+ audio: "/audio/colourful.mp3",
+ },
+ ],
+ },
+];
+
+// CSS styles for smooth transitions
+const styles = `
+ @keyframes slowFadeIn {
+ 0% {
+ opacity: 0;
+ transform: translateY(30px);
+ }
+ 100% {
+ opacity: 1;
+ transform: translateY(0);
+ }
+ }
+
+ @keyframes scaleIn {
+ 0% {
+ opacity: 0;
+ transform: scale(0.9);
+ }
+ 100% {
+ opacity: 1;
+ transform: scale(1);
+ }
+ }
+
+ .slow-transition {
+ animation: slowFadeIn 0.8s ease-out forwards;
+ }
+
+ .scale-transition {
+ animation: scaleIn 0.7s ease-out forwards;
+ }
+
+ @keyframes bounce {
+ 0%, 100% {
+ transform: translateY(0);
+ }
+ 50% {
+ transform: translateY(-10px);
+ }
+ }
+
+ @keyframes growLine {
+ 0% { width: 0%; }
+ 100% { width: 100%; }
+ }
+
+ /* Highlight styles - NO SHADOW, only background color */
+ .highlighted-word-audio {
+ background: #ffa500 !important;
+ padding: 2px 4px !important;
+ border-radius: 4px !important;
+ transition: background-color 0.3s ease !important;
+ display: inline-block !important;
+ color: #000 !important;
+ /* NO box-shadow */
+ }
+
+ @media (prefers-color-scheme: dark) {
+ .highlighted-word-audio {
+ color: #000 !important;
+ }
+ }
+
+ /* Smooth scrolling container */
+ .smooth-text-container {
+ overflow-y: auto;
+ max-height: 300px;
+ scroll-behavior: smooth;
+ padding: 10px;
+ }
+
+ .smooth-text-container::-webkit-scrollbar {
+ width: 6px;
+ }
+
+ .smooth-text-container::-webkit-scrollbar-track {
+ background: rgba(0,0,0,0.1);
+ border-radius: 3px;
+ }
+
+ .smooth-text-container::-webkit-scrollbar-thumb {
+ background: rgba(0,0,0,0.2);
+ border-radius: 3px;
+ }
+`;
+
+const ParagraphFlow = ({
+ handleNext,
+ background,
+ showTimer,
+ points,
+ steps,
+ currentStep,
+ level,
+ progressData,
+ showProgress,
+ playTeacherAudio,
+ handleBack,
+ disableScreen,
+ loading,
+ vocabCount,
+ wordCount,
+ contentSourceData,
+ parentWords,
+}) => {
+ const [isSpeaking, setIsSpeaking] = useState(false);
+ const [showBearDance, setShowBearDance] = useState(false);
+ const [showConfetti, setShowConfetti] = useState(false);
+ const [showHighlighted, setShowHighlighted] = useState(false);
+ const [hoveredWord, setHoveredWord] = useState(null);
+ const [multilingualPosition, setMultilingualPosition] = useState({
+ x: 0,
+ y: 0,
+ });
+ const [audio, setAudio] = useState(null);
+ const [isPlayingAudio, setIsPlayingAudio] = useState(false);
+ const [currentHighlightedWord, setCurrentHighlightedWord] = useState(-1);
+ const [showReadingSpeed, setShowReadingSpeed] = useState(false);
+ const [speed, setSpeed] = useState("Slow");
+ const [readingStartTime, setReadingStartTime] = useState(null);
+ const textContainerRef = useRef(null);
+ const scrollContainerRef = useRef(null);
+ const timeoutRef = useRef([]);
+ const speechSynthesisRef = useRef(null);
+ const utteranceRef = useRef(null);
+ const wordMapRef = useRef([]);
+ const [startTime, setStartTime] = useState(null);
+ const {
+ transcript,
+ interimTranscript,
+ listening,
+ resetTranscript,
+ browserSupportsSpeechRecognition,
+ } = useSpeechRecognition();
+ const transcriptRef = useRef("");
+ const [finalTranscript, setFinalTranscript] = useState("");
+ const [isMatch, setIsMatch] = useState(false);
+ const [open, setOpen] = useState(false);
+ const [zoomOpen, setZoomOpen] = useState(false);
+ const correctPracticeWords = getLocalData("correctPracticeWords");
+ const sessionId = getLocalData("sessionId");
+ console.log("audios", parentWords);
+
+ const paragraphPages = [
+ {
+ page: 1,
+ bookImage: `${process.env.REACT_APP_AWS_S3_BUCKET_CONTENT_URL}/mechanics_images/${contentSourceData?.imagePath}`,
+ highlightedText: contentSourceData?.contentSourceData?.[0]?.text || "",
+ keywords: Object.entries(parentWords || {}).map(([word, data]) => ({
+ word,
+ audio: `${
+ process.env.REACT_APP_AWS_S3_BUCKET_CONTENT_URL
+ }/multilingual_audios/${data?.kn?.audio_url || ""}`,
+ })),
+ },
+ ];
+
+ const getSimilarity = (str1, str2) => {
+ const a = str1.toLowerCase().trim().split(" ");
+ const b = str2.toLowerCase().trim().split(" ");
+ const matches = a.filter((word) => b.includes(word)).length;
+ const total = Math.max(a.length, b.length);
+ return matches / total;
+ };
+
+ useEffect(() => {
+ transcriptRef.current = transcript;
+ const similarity = getSimilarity(transcript, paragraphData.highlightedText);
+ if (transcript.trim() !== "" && similarity === 0) {
+ setIsMatch(1);
+ } else {
+ setIsMatch(similarity * 10);
+ }
+ console.log(
+ "Live Transcript:",
+ transcript,
+ paragraphData.highlightedText,
+ similarity
+ );
+ }, [transcript]);
+
+ const handleStart = () => {
+ setStartTime(Date.now());
+ setSpeed(null);
+ };
+
+ useEffect(() => {
+ handleStart();
+ }, []);
+
+ const handleStop = () => {
+ if (!startTime) return;
+ const duration = (Date.now() - startTime) / 1000;
+ if (duration <= 60) {
+ setSpeed("Fast");
+ } else {
+ setSpeed("Slow");
+ }
+ };
+
+ // ✅ Add CSS to head
+ useEffect(() => {
+ const styleSheet = document.createElement("style");
+ styleSheet.innerText = styles;
+ document.head.appendChild(styleSheet);
+
+ return () => {
+ document.head.removeChild(styleSheet);
+ };
+ }, []);
+
+ // ✅ Get current page data
+ const paragraphData = paragraphPages[0];
+
+ // ✅ Track reading start time when highlighted text is shown
+ useEffect(() => {
+ if (showHighlighted && !readingStartTime) {
+ setReadingStartTime(Date.now());
+ }
+ }, [showHighlighted, readingStartTime]);
+
+ // ✅ Calculate reading speed
+ const calculateReadingSpeed = () => {
+ if (readingStartTime) {
+ const readingTime = (Date.now() - readingStartTime) / 1000;
+ const wordCount = paragraphData.highlightedText.split(/\s+/).length;
+ const wordsPerMinute = Math.round((wordCount / readingTime) * 60);
+
+ // Determine speed category based on WPM
+ let calculatedSpeed = "Slow";
+ if (wordsPerMinute > 200) {
+ calculatedSpeed = "Fast";
+ } else if (wordsPerMinute > 100) {
+ calculatedSpeed = "Medium";
+ }
+
+ setSpeed(calculatedSpeed);
+ }
+ };
+
+ // ✅ Prepare text with word mapping (similar to first example)
+ const prepareTextMapping = () => {
+ const text = paragraphData.highlightedText.replace(/\s+/g, " ").trim();
+ const wordMap = [];
+
+ if (!text) return wordMap;
+
+ const re = /(\S+)/g;
+ let match;
+ let lastEnd = 0;
+
+ while ((match = re.exec(text)) !== null) {
+ const word = match[1];
+ const start = match.index;
+ const end = start + word.length;
+
+ wordMap.push({ start, end, word });
+ lastEnd = end;
+ }
+
+ wordMapRef.current = wordMap;
+ return wordMap;
+ };
+
+ // ✅ Clear highlighting
+ const clearHighlight = () => {
+ setCurrentHighlightedWord(-1);
+ };
+
+ // ✅ Smooth highlight word at specific character index
+ const highlightAtCharIndex = (charIndex) => {
+ const wordMap = wordMapRef.current;
+ if (!wordMap.length) return;
+
+ let targetIndex = -1;
+ for (let i = 0; i < wordMap.length; i++) {
+ const word = wordMap[i];
+ if (charIndex >= word.start && charIndex < word.end) {
+ targetIndex = i;
+ break;
+ }
+ if (charIndex >= word.end) targetIndex = i;
+ }
+
+ if (targetIndex === -1 && wordMap.length > 0) {
+ targetIndex = 0;
+ }
+
+ setCurrentHighlightedWord(targetIndex);
+
+ // Smooth scroll into view with better positioning
+ if (scrollContainerRef.current && targetIndex >= 0) {
+ const wordElements =
+ scrollContainerRef.current.querySelectorAll(".word-element");
+ if (wordElements[targetIndex]) {
+ const element = wordElements[targetIndex];
+ const container = scrollContainerRef.current;
+ const elementRect = element.getBoundingClientRect();
+ const containerRect = container.getBoundingClientRect();
+
+ // Calculate the position to center the element vertically
+ const scrollTop = container.scrollTop;
+ const elementTop = element.offsetTop;
+ const elementHeight = element.offsetHeight;
+ const containerHeight = container.offsetHeight;
+
+ const targetScroll =
+ elementTop - containerHeight / 2 + elementHeight / 2;
+
+ // Smooth scroll to center the highlighted word
+ container.scrollTo({
+ top: targetScroll,
+ behavior: "smooth",
+ });
+ }
+ }
+ };
+
+ // ✅ Create speech synthesis utterance (like first example)
+ const createUtterance = (text) => {
+ if (!("speechSynthesis" in window)) {
+ console.error("Speech synthesis not supported");
+ return null;
+ }
+
+ const utterance = new SpeechSynthesisUtterance(text);
+
+ // Set properties
+ utterance.rate = 1.0;
+
+ // Choose voice
+ const voices = speechSynthesis.getVoices();
+ const defaultVoice =
+ voices.find((v) => v.default) ||
+ voices.find((v) => v.lang?.toLowerCase().startsWith("en")) ||
+ voices[0];
+ if (defaultVoice) {
+ utterance.voice = defaultVoice;
+ }
+
+ // Event handlers
+ utterance.onstart = () => {
+ setIsPlayingAudio(true);
+ setCurrentHighlightedWord(-1);
+ };
+
+ utterance.onend = () => {
+ setIsPlayingAudio(false);
+ clearHighlight();
+ setCurrentHighlightedWord(-1);
+ };
+
+ utterance.onerror = (e) => {
+ console.error("Speech synthesis error:", e);
+ setIsPlayingAudio(false);
+ clearHighlight();
+ setCurrentHighlightedWord(-1);
+ };
+
+ utterance.onboundary = (e) => {
+ if (e.name === "word" && typeof e.charIndex === "number") {
+ highlightAtCharIndex(e.charIndex);
+ }
+ };
+
+ return utterance;
+ };
+
+ // ✅ Improved handleListenClick function using Speech Synthesis API
+ const handleListenClick = () => {
+ if (isPlayingAudio) {
+ // Stop speech synthesis
+ if (speechSynthesisRef.current) {
+ speechSynthesisRef.current.cancel();
+ }
+ setIsPlayingAudio(false);
+ clearHighlight();
+ return;
+ }
+
+ // Prepare text mapping
+ prepareTextMapping();
+
+ // Create and speak utterance
+ const utterance = createUtterance(paragraphData.highlightedText);
+ if (utterance) {
+ utteranceRef.current = utterance;
+ speechSynthesisRef.current = window.speechSynthesis;
+ speechSynthesisRef.current.speak(utterance);
+ } else {
+ // Fallback to audio file if speech synthesis fails
+ playAudioFallback();
+ }
+ };
+
+ // ✅ Fallback to audio file with word highlighting
+ const playAudioFallback = () => {
+ if (!paragraphData.audio) {
+ console.error("No audio available");
+ return;
+ }
+
+ setIsPlayingAudio(true);
+ clearHighlight();
+
+ const audioElement = new Audio(paragraphData.audio);
+ setAudio(audioElement);
+
+ // Prepare word timing (approximate)
+ const wordMap = prepareTextMapping();
+ const totalDuration = 20000;
+ const wordDuration = totalDuration / wordMap.length;
+
+ // Start highlighting when audio begins
+ audioElement.addEventListener("play", () => {
+ let currentWordIndex = -1;
+
+ const highlightNextWord = () => {
+ currentWordIndex++;
+ if (currentWordIndex < wordMap.length) {
+ setCurrentHighlightedWord(currentWordIndex);
+ timeoutRef.current.push(setTimeout(highlightNextWord, wordDuration));
+ } else {
+ setIsPlayingAudio(false);
+ clearHighlight();
+ }
+ };
+
+ // Clear any existing timeouts
+ clearAllTimeouts();
+ highlightNextWord();
+ });
+
+ audioElement.addEventListener("ended", () => {
+ setIsPlayingAudio(false);
+ clearHighlight();
+ clearAllTimeouts();
+ });
+
+ audioElement.addEventListener("error", (e) => {
+ console.error("Audio error:", e);
+ setIsPlayingAudio(false);
+ clearHighlight();
+ clearAllTimeouts();
+ });
+
+ audioElement.play().catch((error) => {
+ console.error("Audio play failed:", error);
+ setIsPlayingAudio(false);
+ });
+ };
+
+ // ✅ Clear all timeouts
+ const clearAllTimeouts = () => {
+ timeoutRef.current.forEach((timeout) => {
+ clearTimeout(timeout);
+ });
+ timeoutRef.current = [];
+ };
+
+ // ✅ Improved Handle word hover with audio - ONLY FOR KEYWORDS
+ const handleWordHover = (word, event, isKeyword) => {
+ if (isPlayingAudio || !isKeyword) return;
+
+ const rect = event.target.getBoundingClientRect();
+ const containerRect = textContainerRef.current.getBoundingClientRect();
+
+ setHoveredWord(word);
+ setMultilingualPosition({
+ x: rect.left + rect.width / 2 - containerRect.left,
+ y: rect.bottom - containerRect.top + 5,
+ });
+
+ const keywordData = paragraphData.keywords.find(
+ (k) => k.word.toLowerCase() === word.toLowerCase().replace(/[.,!?;]/g, "")
+ );
+
+ if (keywordData && keywordData.audio) {
+ console.log(
+ "Playing keyword audio:",
+ keywordData.audio,
+ "for word:",
+ word
+ );
+ playAudio(keywordData.audio);
+ }
+ };
+
+ // ✅ Handle word leave
+ const handleWordLeave = () => {
+ setHoveredWord(null);
+ if (audio && !isPlayingAudio) {
+ audio.pause();
+ audio.currentTime = 0;
+ }
+ };
+
+ let progressDatas = getLocalData("practiceProgress");
+ if (typeof progressDatas === "string") {
+ progressDatas = JSON.parse(progressDatas);
+ }
+
+ let currentPracticeStep;
+ if (progressDatas) {
+ currentPracticeStep = progressDatas?.currentPracticeStep;
+ }
+
+ const currentLevel = practiceSteps?.[currentPracticeStep]?.titleNew || "L1";
+ let apiLevel = `M${level}-${currentLevel}`;
+
+ const callTelemetry = async () => {
+ const sessionId = getLocalData("sessionId");
+ const responseStartTime = new Date().getTime();
+ const base64Data = "";
+ const sentenceText = paragraphData?.highlightedText || "";
+
+ await callTelemetryApi(
+ sentenceText,
+ sessionId,
+ currentStep - 1,
+ base64Data,
+ responseStartTime,
+ sentenceText,
+ apiLevel
+ );
+ };
+ // ✅ Play audio function
+ const playAudio = (audioUrl) => {
+ if (audio) {
+ audio.pause();
+ audio.currentTime = 0;
+ }
+
+ try {
+ const newAudio = new Audio(audioUrl);
+ setAudio(newAudio);
+ newAudio.play().catch((error) => {
+ console.error("Audio play failed:", error);
+ });
+ return newAudio;
+ } catch (error) {
+ console.error("Error creating audio:", error);
+ return null;
+ }
+ };
+
+ // ✅ Get highlighted text - USING PROPER WORD MAPPING
+ const getHighlightedText = () => {
+ const wordMap =
+ wordMapRef.current.length > 0 ? wordMapRef.current : prepareTextMapping();
+
+ if (wordMap.length === 0) {
+ return paragraphData.highlightedText;
+ }
+
+ let result = [];
+ let lastEnd = 0;
+
+ wordMap.forEach((wordData, index) => {
+ const { start, end, word } = wordData;
+
+ // Add text before current word (spaces and punctuation)
+ if (start > lastEnd) {
+ result.push(paragraphData.highlightedText.slice(lastEnd, start));
+ }
+
+ // Create word element
+ const isHighlighted = isPlayingAudio && currentHighlightedWord === index;
+ const isKeyword = paragraphData.keywords.some(
+ (k) =>
+ k.word.toLowerCase() === word.toLowerCase().replace(/[.,!?;]/g, "")
+ );
+
+ if (isHighlighted) {
+ // NO SHADOW, only background color
+ result.push(
+ `${word}`
+ );
+ } else if (isKeyword && !isPlayingAudio) {
+ result.push(`${word}`);
+ } else {
+ result.push(
+ `${word}`
+ );
+ }
+
+ lastEnd = end;
+ });
+
+ // Add any remaining text
+ if (lastEnd < paragraphData.highlightedText.length) {
+ result.push(paragraphData.highlightedText.slice(lastEnd));
+ }
+
+ return result.join("");
+ };
+
+ // ✅ Add event listeners to words after render - ONLY FOR KEYWORDS
+ useEffect(() => {
+ if (showHighlighted && textContainerRef.current) {
+ const keywordElements =
+ textContainerRef.current.querySelectorAll(".keyword-word");
+ const normalWordElements = textContainerRef.current.querySelectorAll(
+ ".word-element:not(.keyword-word)"
+ );
+
+ const handleKeywordEnter = (e) => {
+ if (isPlayingAudio) return;
+ const word = e.target.textContent || e.target.getAttribute("data-word");
+ handleWordHover(word, e, true);
+ };
+
+ const handleNormalWordEnter = (e) => {
+ // Don't show multilingual for normal words, just clear any existing hover
+ setHoveredWord(null);
+ };
+
+ // Add event listeners to keyword words
+ keywordElements.forEach((wordElement) => {
+ wordElement.addEventListener("mouseenter", handleKeywordEnter);
+ wordElement.addEventListener("mouseleave", handleWordLeave);
+ wordElement.addEventListener("click", handleKeywordEnter);
+ });
+
+ // Add event listeners to normal words (only to clear hover state)
+ normalWordElements.forEach((wordElement) => {
+ wordElement.addEventListener("mouseenter", handleNormalWordEnter);
+ wordElement.addEventListener("mouseleave", handleWordLeave);
+ });
+
+ return () => {
+ keywordElements.forEach((wordElement) => {
+ wordElement.removeEventListener("mouseenter", handleKeywordEnter);
+ wordElement.removeEventListener("mouseleave", handleWordLeave);
+ wordElement.removeEventListener("click", handleKeywordEnter);
+ });
+
+ normalWordElements.forEach((wordElement) => {
+ wordElement.removeEventListener("mouseenter", handleNormalWordEnter);
+ wordElement.removeEventListener("mouseleave", handleWordLeave);
+ });
+ };
+ }
+ }, [showHighlighted, isPlayingAudio, currentHighlightedWord]);
+
+ useEffect(() => {
+ return () => {
+ if (audio) {
+ audio.pause();
+ setAudio(null);
+ }
+ if (speechSynthesisRef.current) {
+ speechSynthesisRef.current.cancel();
+ }
+ clearAllTimeouts();
+ };
+ }, [audio]);
+
+ const handleSpeakClick = () => {
+ if (isSpeaking) {
+ const audio = new Audio(correctSound);
+ audio.play();
+ SpeechRecognition.stopListening();
+ handleStop();
+ setShowBearDance(true);
+ setShowConfetti(true);
+ setTimeout(() => {
+ setShowConfetti(false);
+ setShowHighlighted(true);
+ setShowBearDance(false);
+ prepareTextMapping();
+ }, 3000);
+ } else {
+ resetTranscript();
+ SpeechRecognition.startListening({
+ continuous: true,
+ interimResults: true,
+ });
+ }
+ setIsSpeaking(!isSpeaking);
+ };
+
+ const handleNextClick = () => {
+ if (speechSynthesisRef.current) {
+ speechSynthesisRef.current.cancel();
+ }
+ setIsPlayingAudio(false);
+ clearHighlight();
+ setTimeout(() => {
+ //calculateReadingSpeed();
+ setShowReadingSpeed(true);
+ }, 200);
+ };
+
+ const handleNextWord = () => {
+ // Reset all states and refs to initial values
+ setStartTime(null);
+ setIsSpeaking(false);
+ setShowBearDance(false);
+ setShowConfetti(false);
+ setShowHighlighted(false);
+ setHoveredWord(null);
+ setMultilingualPosition({ x: 0, y: 0 });
+ setAudio(null);
+ setIsPlayingAudio(false);
+ setCurrentHighlightedWord(-1);
+ setShowReadingSpeed(false);
+ setSpeed("Slow");
+ setReadingStartTime(null);
+
+ const allWordsData = Object.keys(parentWords).map((word) => {
+ const contentId = parentWords[word].content_id;
+
+ return {
+ original_text: word,
+ content_id: contentId,
+ milestone_level: `m${level}`,
+ practice_level: currentLevel,
+ session_id: sessionId,
+ practiced: true,
+ learned: true,
+ subsession_id: "session_123",
+ };
+ });
+ setLocalData("correctPracticeWords", [
+ ...(correctPracticeWords || []),
+ ...allWordsData,
+ ]);
+
+ // Reset refs
+ timeoutRef.current.forEach((t) => clearTimeout(t)); // clear any existing timeouts
+ timeoutRef.current = [];
+ speechSynthesisRef.current = null;
+ utteranceRef.current = null;
+ wordMapRef.current = [];
+
+ // Call handleNext after a small delay
+ setTimeout(() => {
+ handleNext();
+ callTelemetry();
+ }, 200);
+ };
+
+ if (showReadingSpeed) {
+ return (
+
+
+
+
+

+
+ Your Reading Speed
+
+
+
+
+

+
+
+ {isMatch === 0 ? (
+ <>
+
+ No voice detected, please speak
+
+ >
+ ) : isMatch > 0 && isMatch < 5 ? (
+ <>
+
+ Please try again, your speech didn’t match enough
+
+ >
+ ) : (
+ <>
+
+ {speed}
+
+
+ {/* show this paragraph only if isMatch > 6 */}
+ {isMatch >= 5 && (
+
+ {speed === "Fast"
+ ? "Great speed, keep it up!"
+ : "Try reading faster"}
+
+ )}
+ >
+ )}
+
+

(e.target.style.transform = "scale(1.1)")}
+ onMouseLeave={(e) => (e.target.style.transform = "scale(1)")}
+ />
+
+
+
+ );
+ }
+
+ return (
+
+
+ {/* Hint Icon */}
+

setOpen(true)}
+ />
+
+ {/* Modal */}
+ {open && (
+
+
+ {/* Close Button */}
+
+
+ {/* YouTube Video */}
+
+
+
+ )}
+ {/* Confetti */}
+ {showConfetti && (
+
+ )}
+
+ {/* Title */}
+
+ Read the Paragraph
+
+
+ {/* ==== BOOK SECTION WITH LISTEN BEAR AT BOTTOM LEFT ==== */}
+ {!showHighlighted && (
+
+ {/* Book Container - CENTERED */}
+
+
+ {/* Book Image */}
+ {/*

*/}
+
+
setZoomOpen(true)} // Open modal on click
+ />
+
+ {/* Subtle gradient overlay across the top */}
+
+ {/* Zoom icon positioned in the top-left corner */}
+ setZoomOpen(true)}
+ sx={{ color: "white", fontSize: "22px", cursor: "pointer" }}
+ />
+
+
+
setZoomOpen(false)}
+ sx={{
+ display: "flex",
+ alignItems: "center",
+ justifyContent: "center",
+ zIndex: 99999999,
+ }}
+ >
+
+ {/* Subtle gradient overlay at the top of the zoomed image */}
+
+ {/* Close icon positioned within the gradient overlay */}
+ setZoomOpen(false)}
+ sx={{
+ color: "white",
+ fontSize: "24px",
+ cursor: "pointer",
+ backgroundColor: "rgba(0, 0, 0, 0.5)",
+ borderRadius: "50%",
+ padding: "4px",
+ }}
+ />
+
+
+
+
+
+
+
+ {/* Listen Bear - BOTTOM LEFT OF BOOK with larger size */}
+ {isSpeaking && (
+

+ )}
+
+ )}
+
+ {/* Bear Dance */}
+ {showBearDance && (
+

+ )}
+
+ {/* ==== SPEAK BUTTON ==== */}
+ {!showHighlighted && !showBearDance && (
+
(e.target.style.transform = "scale(1.1)")}
+ onMouseLeave={(e) => (e.target.style.transform = "scale(1)")}
+ >
+ {isSpeaking && (
+

+ )}
+
+

+
+ )}
+
+ {/* ==== HIGHLIGHTED TEXT ==== */}
+ {showHighlighted && (
+
+
+
+
+ {/* Multilingual Image - appears below hovered word */}
+ {hoveredWord && !isPlayingAudio && (
+

+ )}
+
+
+ {/* Listen Icon - Now works as play/pause for speech synthesis */}
+

+ (e.target.style.transform = "translate(-100%, -50%) scale(1.1)")
+ }
+ onMouseLeave={(e) =>
+ (e.target.style.transform = "translate(-100%, -50%) scale(1)")
+ }
+ />
+
+ {/* Next button */}
+

(e.target.style.transform = "scale(1.1)")}
+ onMouseLeave={(e) => (e.target.style.transform = "scale(1)")}
+ />
+
+ )}
+
+
+ );
+};
+
+export default ParagraphFlow;
diff --git a/src/components/Practice/PhrasesInAction.jsx b/src/components/Practice/PhrasesInAction.jsx
index acd3f39f..d2240f04 100644
--- a/src/components/Practice/PhrasesInAction.jsx
+++ b/src/components/Practice/PhrasesInAction.jsx
@@ -20,6 +20,7 @@ import correctSound from "../../assets/correct.wav";
import wrongSound from "../../assets/audio/wrong.wav";
import RecordVoiceVisualizer from "../../utils/RecordVoiceVisualizer";
import { filterBadWords } from "@tekdi/multilingual-profanity-filter";
+import hintimg from "../../assets/hintsicon.svg";
import {
practiceSteps,
@@ -38,6 +39,8 @@ import {
import SpeechRecognition, {
useSpeechRecognition,
} from "react-speech-recognition";
+import AudioTooltipModal from "./AudioTooltipModal";
+import { Log } from "../../services/telementryService";
const theme = createTheme();
@@ -73,6 +76,7 @@ const PhrasesInAction = ({
currentImg,
vocabCount,
wordCount,
+ multilingual,
}) => {
const [isRecording, setIsRecording] = useState(false);
const [currentWordIndex, setCurrentWordIndex] = useState(0);
@@ -100,6 +104,35 @@ const PhrasesInAction = ({
browserSupportsSpeechRecognition,
} = useSpeechRecognition();
+ function convertToStepFormat(rawData, audioFile) {
+ if (!rawData || !rawData.options) return {};
+
+ const correctOption = rawData.options.find((opt) => opt.isAns);
+
+ const step1 = {
+ allwords: [
+ {
+ img: `${process.env.REACT_APP_AWS_S3_BUCKET_CONTENT_URL}/mechanics_images/${correctOption.image_url}`,
+ text: correctOption.text,
+ },
+ ],
+ audio: `${process.env.REACT_APP_AWS_S3_BUCKET_CONTENT_URL}/mechanics_audios/${audioFile}`,
+ };
+
+ const step2 = {
+ allwordsTwo: rawData.options.map((opt) => ({
+ img: `${process.env.REACT_APP_AWS_S3_BUCKET_CONTENT_URL}/mechanics_images/${opt.image_url}`,
+ text: opt.text,
+ })),
+ correctWordTwo: correctOption.text,
+ audio: `${process.env.REACT_APP_AWS_S3_BUCKET_CONTENT_URL}/mechanics_audios/${audioFile}`,
+ };
+
+ return { step1, step2 };
+ }
+
+ let levelDataRaw = convertToStepFormat(parentWords, currentImg?.audioUrl);
+
const mediaRecorderRef = useRef(null);
const recordedChunksRef = useRef([]);
@@ -4876,7 +4909,13 @@ const PhrasesInAction = ({
const content = levelContent[language];
//const levelData = content?.[currentLevel][currentWordIndex][currentSteps];
- const levelData = content?.[currentLevel]?.[currentWordIndex]?.[currentSteps];
+ let levelData;
+
+ if (currentSteps === "step1") {
+ levelData = levelDataRaw?.step1;
+ } else {
+ levelData = levelDataRaw?.step2;
+ }
//console.log("dataP410", levelData, currentLevel);
@@ -4997,6 +5036,7 @@ const PhrasesInAction = ({
const [isRecordingStopped2, setIsRecordingStopped2] = useState(false);
const [isAnswerIncorrect, setIsAnswerIncorrect] = useState(false);
const [audioInstance, setAudioInstance] = useState(null);
+ const [open, setOpen] = useState(false);
const handleMicClick2 = () => {
if (!isRecording2) {
@@ -5151,7 +5191,7 @@ const PhrasesInAction = ({
+ {/* Hint Icon */}
+

setOpen(true)}
+ />
+
+ {/* Modal */}
+ {open && (
+
+
+ {/* Close Button */}
+
+
+ {/* YouTube Video */}
+
+
+
+ )}
@@ -5267,7 +5384,7 @@ const PhrasesInAction = ({
/>
{levelData?.allwords[0]?.text}
+
+
+ {/* Kannada Letter Box */}
+
+
+ ಕ
+
+
+
+
+
+
setSelectedDiv(item.text)}
>
@@ -5319,8 +5485,8 @@ const PhrasesInAction = ({
}
alt={item.text}
style={{
- width: "200px",
- height: "230px",
+ width: "180px",
+ height: "200px",
objectFit: "contain",
border: "1px solid #00000033",
}}
@@ -5344,11 +5510,11 @@ const PhrasesInAction = ({
flexDirection: "column",
justifyContent: "center",
alignItems: "center",
- marginBottom: "15px",
+ marginBottom: "5px",
}}
>
@@ -5357,14 +5523,14 @@ const PhrasesInAction = ({
background: "transparent",
border: "none",
cursor: "pointer",
- marginTop: "10px",
+ marginTop: "-18px",
}}
onClick={handleMicClick}
>
@@ -5376,14 +5542,14 @@ const PhrasesInAction = ({
background: "transparent",
border: "none",
cursor: "pointer",
- marginTop: "10px",
+ marginTop: "0px",
}}
onClick={handleMicClick}
>

)}
@@ -5409,12 +5575,12 @@ const PhrasesInAction = ({
? "24px"
: isTablet
? "30px"
- : "36px",
+ : "30px",
fontWeight: "bold",
color: "#1a1a1a",
letterSpacing: "3px",
position: "relative",
- marginBottom: "20px",
+ marginBottom: "5px",
}}
>
@@ -5476,7 +5642,7 @@ const PhrasesInAction = ({
? "170px"
: isTablet
? "200px"
- : "220px",
+ : "190px",
display: "flex",
justifyContent: "center",
alignItems: "center",
@@ -5621,7 +5787,7 @@ const PhrasesInAction = ({
}}
>
@@ -5630,7 +5796,7 @@ const PhrasesInAction = ({
background: "transparent",
border: "none",
cursor: "pointer",
- marginTop: "10px",
+ marginTop: "-25px",
}}
onClick={handleMicClick2}
>
@@ -5638,8 +5804,8 @@ const PhrasesInAction = ({
src={Assets.pause}
alt="Stop Recording"
style={{
- width: "60px",
- height: "60px",
+ width: "49px",
+ height: "49px",
}}
/>
@@ -5710,6 +5876,54 @@ const PhrasesInAction = ({
>
{levelData?.correctWordTwo}
+
+
+ {/* Kannada Letter Box */}
+
+
+ ಕ
+
+
+
+
+
+
{},
+ callUpdateLearner,
+ disableScreen,
+ isShowCase,
+ handleBack,
+ setEnableNext,
+ loading,
+ setOpenMessageDialog,
+ audio,
+ currentImg,
+ fluency,
+ startShowCase,
+ setStartShowCase,
+ livesData,
+ setLivesData,
+ gameOverData,
+ highlightWords,
+ matchedChar,
+ isNextButtonCalled,
+ setIsNextButtonCalled,
+ vocabCount,
+ wordCount,
+}) => {
+ const isMobile = useMediaQuery(theme.breakpoints.down("sm"));
+ const isTablet = useMediaQuery(theme.breakpoints.between("sm", "md"));
+ const navigate = useNavigate();
+ const [showConfetti, setShowConfetti] = useState(false);
+ const [matches, setMatches] = useState([]);
+ const [selectedWord, setSelectedWord] = useState(null);
+ const [selectedImage, setSelectedImage] = useState(null);
+ const [correctMatch, setCorrectMatch] = useState(null);
+ const [isFaded, setIsFaded] = useState(false);
+ const [wrongMatch, setWrongMatch] = useState({
+ wordIndex: null,
+ imageIndex: null,
+ });
+ const [showInitialSelection, setShowInitialSelection] = useState(false);
+ const [shuffledImages, setShuffledImages] = useState([]);
+ const [shuffledWords, setShuffledWords] = useState([]);
+
+ const defaultWordImagePairs = [
+ { word: "Bike", img: bikeImg, match: "Bike" },
+ { word: "Lime", img: lemonImg, match: "Lime" },
+ { word: "Farmer", img: farmerImg, match: "Farmer" },
+ { word: "Fan", img: fanImg, match: "Fan" },
+ { word: "Fire", img: fireImg, match: "Fire" },
+ { word: "Tie", img: tieImg, match: "Tie" },
+ ];
+ const [firstAttemptCorrect, setFirstAttemptCorrect] = useState({});
+ const [wordImagePairs, setWordImagePairs] = useState(null);
+
+ useEffect(() => {
+ if (level === 1) {
+ setLocalData("readMatch", false);
+ navigate("/practice");
+ }
+ }, [level]);
+
+ useEffect(() => {
+ const fetchCorrectWords = async () => {
+ try {
+ const response = await getCorrectPracticeWords("false");
+ const correctWords = response?.data || [];
+ console.log("level api", level);
+
+ const formattedCorrectWords = correctWords?.map((item) => ({
+ word: item?.contentSourceData?.[0]?.text,
+ img: item?.imagePath || item?.mechanics_data?.[0]?.image_url,
+ match: item?.contentSourceData?.[0]?.text,
+ content_id: item?.contentId,
+ }));
+
+ if (formattedCorrectWords <= 3) {
+ setLocalData("readMatch", false);
+ }
+
+ setWordImagePairs(formattedCorrectWords);
+ } catch (error) {
+ console.error("Error fetching and mapping words:", error);
+ }
+ };
+
+ fetchCorrectWords();
+ }, []);
+
+ console.log("imagePairs", wordImagePairs);
+
+ const words = wordImagePairs?.map((pair) => pair.word);
+ const correctMatches = wordImagePairs?.map((pair) => pair.match);
+
+ const shuffledRef = useRef(null);
+
+ if (!shuffledRef.current && Array.isArray(words)) {
+ shuffledRef.current = [...words].sort(() => Math.random() - 0.5);
+ }
+
+ const shuffleArray = (array) => {
+ const newArray = [...array];
+ for (let i = newArray.length - 1; i > 0; i--) {
+ const j = Math.floor(Math.random() * (i + 1));
+ [newArray[i], newArray[j]] = [newArray[j], newArray[i]];
+ }
+ return newArray;
+ };
+
+ console.log("matches", shuffledImages);
+
+ useEffect(() => {
+ console.log("res", matches.length, wordImagePairs?.length);
+
+ if (matches.length === wordImagePairs?.length) {
+ const formattedData = wordImagePairs?.map((item) => ({
+ content_id: item.content_id,
+ practice: true,
+ learned: true,
+ understood: firstAttemptCorrect[item.content_id] === true,
+ }));
+
+ updateCorrectPracticeWords(formattedData)
+ .then((res) => {
+ console.log("Update successful:", res);
+ setLocalData("readMatch", false);
+ navigate("/practice");
+ })
+ .catch((err) => {
+ console.error("Error updating correct practice words:", err);
+ if (process.env.REACT_APP_IS_APP_IFRAME === "true") {
+ navigate("/");
+ } else {
+ navigate("/discover-start");
+ }
+ });
+ }
+ }, [matches]);
+
+ const handleWordClick = (word, wordIndex) => {
+ if (isMatchedWord(wordIndex)) return;
+ setSelectedWord({ word, wordIndex });
+ setSelectedImage(null);
+ setWrongMatch({ wordIndex: null, imageIndex: null });
+ setShowInitialSelection(false);
+ };
+
+ const handleImageClick = (imageIndex) => {
+ if (!selectedWord) return;
+ if (isMatchedImage(imageIndex)) return;
+
+ setSelectedImage(imageIndex);
+ setShowInitialSelection(true);
+
+ const wordItem = wordImagePairs.find(
+ (item) => item.word === selectedWord.word
+ );
+ const imageItem = wordImagePairs[imageIndex];
+
+ const isCorrect = imageItem?.match === wordItem?.word;
+
+ if (firstAttemptCorrect[wordItem.content_id] === undefined) {
+ setFirstAttemptCorrect((prev) => ({
+ ...prev,
+ [wordItem.content_id]: isCorrect,
+ }));
+ }
+
+ if (isCorrect) {
+ const audio = new Audio(correctSound);
+ audio.play();
+ setCorrectMatch({ wordIndex: selectedWord.wordIndex, imageIndex });
+ setTimeout(() => {
+ setShowConfetti(true);
+ setTimeout(() => {
+ setMatches([
+ ...matches,
+ { sourceIndex: imageIndex, wordIndex: selectedWord.wordIndex },
+ ]);
+ setCorrectMatch(null);
+ setShowConfetti(false);
+ setIsFaded(true);
+ setSelectedWord(null);
+ setSelectedImage(null);
+ setShowInitialSelection(false);
+ }, 2500);
+ }, 500);
+ } else {
+ const audio = new Audio(wrongSound);
+ audio.play();
+ setTimeout(() => {
+ setWrongMatch({ wordIndex: selectedWord.wordIndex, imageIndex });
+ setTimeout(() => {
+ setSelectedWord(null);
+ setSelectedImage(null);
+ setWrongMatch({ wordIndex: null, imageIndex: null });
+ setShowInitialSelection(false);
+ }, 1000);
+ }, 1000);
+ }
+ };
+
+ const isMatchedWord = (wordIndex) =>
+ matches.some((m) => m.wordIndex === wordIndex);
+ const isMatchedImage = (imageIndex) =>
+ matches.some((m) => m.sourceIndex === imageIndex);
+ const isCorrectMatchWord = (wordIndex) =>
+ correctMatch?.wordIndex === wordIndex;
+ const isCorrectMatchImage = (imageIndex) =>
+ correctMatch?.imageIndex === imageIndex;
+ const isWrongMatchWord = (wordIndex) => wrongMatch.wordIndex === wordIndex;
+ const isWrongMatchImage = (imageIndex) =>
+ wrongMatch.imageIndex === imageIndex;
+ const isInitialSelection = (wordIndex, imageIndex) =>
+ showInitialSelection &&
+ selectedWord?.wordIndex === wordIndex &&
+ selectedImage === imageIndex;
+
+ const getImageStyle = (index) => {
+ const isMatched = isMatchedImage(index);
+ const isCorrect = isCorrectMatchImage(index) && showConfetti;
+ const isSelected = selectedImage === index;
+ const isWrong = isWrongMatchImage(index);
+ const isDisabled = isMatched && !isCorrect;
+ const isInitial = isInitialSelection(selectedWord?.wordIndex, index);
+
+ return {
+ border: isCorrect
+ ? "1px solid #c1e2a7"
+ : isWrong
+ ? "1px solid #FF4B4B"
+ : isDisabled
+ ? "1px solid rgba(0,0,0,0.3)"
+ : isInitial
+ ? "1px solid #A856FF"
+ : "1px solid #A856FF",
+ borderRadius: "10px",
+ padding: isMobile ? "5px" : "10px",
+ width: isMobile ? "80px" : isTablet ? "120px" : "150px",
+ height: isMobile ? "50px" : isTablet ? "75px" : "90px",
+ backgroundColor: isCorrect
+ ? "#DEF5CC"
+ : isWrong
+ ? "#FEE4D5"
+ : isDisabled
+ ? "rgba(255, 255, 255, 0.6)"
+ : isInitial
+ ? "#F6EEFF"
+ : isSelected
+ ? "#F6EEFF"
+ : "#fff",
+ display: "flex",
+ justifyContent: "center",
+ alignItems: "center",
+ cursor: isMatched ? "default" : "pointer",
+ transition: "all 0.3s ease",
+ opacity: isDisabled ? 0.8 : 1,
+ boxShadow:
+ !isMatched && selectedWord && selectedImage === null
+ ? `1px 6px 0px rgba(168, 86, 255, 0.9)`
+ : "none",
+ transform: selectedImage === index ? "translateY(-2px)" : "translateY(0)",
+ };
+ };
+
+ const getWordStyle = (wordIndex) => {
+ const isMatched = isMatchedWord(wordIndex);
+ const isCorrect = isCorrectMatchWord(wordIndex) && showConfetti;
+ const isSelected = selectedWord?.wordIndex === wordIndex;
+ const isDisabled = isMatched && !isCorrect;
+ const isWrong = isWrongMatchWord(wordIndex);
+ const isInitial = isInitialSelection(wordIndex, selectedImage);
+
+ return {
+ border: isCorrect
+ ? "1px solid #c1e2a7"
+ : isWrong
+ ? "1px solid #FF4B4B"
+ : isDisabled
+ ? "1px solid rgba(0,0,0,0.3)"
+ : isInitial
+ ? "1px solid #A856FF"
+ : "1px solid #A856FF",
+ borderRadius: "10px",
+ padding: isMobile ? "5px 10px" : "10px 20px",
+ font: "Quicksand",
+ backgroundColor: isCorrect
+ ? "#DEF5CC"
+ : isWrong
+ ? "#FEE4D5"
+ : isDisabled
+ ? "rgba(255, 255, 255, 0.4)"
+ : isInitial
+ ? "#F6EEFF"
+ : isSelected
+ ? "#F6EEFF"
+ : "#fff",
+ cursor: isMatched ? "default" : "pointer",
+ transition: "all 0.3s ease",
+ opacity: isDisabled ? 0.5 : 1,
+ fontFamily: "Quicksand, sans-serif",
+ fontWeight: 600,
+ fontSize: isMobile ? "16px" : isTablet ? "20px" : "32px",
+ lineHeight: isMobile ? "16px" : isTablet ? "20px" : "24px",
+ letterSpacing: "0px",
+ color: "#333F61",
+ textAlign: "center",
+ display: "flex",
+ alignItems: "center",
+ justifyContent: "center",
+ height: isMobile ? "20px" : isTablet ? "22px" : "90px",
+ width: isMobile ? "80px" : isTablet ? "120px" : "150px",
+ };
+ };
+
+ return (
+
+
+ {showConfetti && }
+
+
+
+ {/* */}
+
+ {"Word Practice"}
+
+
+
+
+
+ {shuffledRef?.current?.map((word, i) => (
+ !isMatchedWord(i) && handleWordClick(word, i)}
+ sx={getWordStyle(i)}
+ >
+ {word}
+
+ ))}
+
+
+
+ {wordImagePairs?.slice(0, 6)?.map((item, index) => (
+
+ !isMatchedImage(index) && handleImageClick(index)
+ }
+ sx={getImageStyle(index)}
+ >
+
+
+ ))}
+
+
+
+
+
+ );
+};
+
+export default ReadMatch;
diff --git a/src/components/Practice/TowreFlow.jsx b/src/components/Practice/TowreFlow.jsx
index b5a849d8..49852e46 100644
--- a/src/components/Practice/TowreFlow.jsx
+++ b/src/components/Practice/TowreFlow.jsx
@@ -22,7 +22,7 @@ import booksStackImg from "../../assets/totalWord.svg";
import reportPandaImg from "../../assets/pandaa.svg";
import reportImg from "../../assets/reportImg.svg";
import { setLocalData, getLocalData } from "../../utils/constants";
-import { useNavigate } from "react-router-dom";
+import { useNavigate, useLocation } from "react-router-dom";
import MainLayout from "../Layouts.jsx/MainLayout";
import SpeechRecognition, {
useSpeechRecognition,
@@ -34,7 +34,7 @@ import { PutObjectCommand } from "@aws-sdk/client-s3";
env.localModelPath = "https://huggingface.co/Xenova/whisper-tiny/resolve/main/";
-const allWords = [
+const allEnglishWords = [
{ title: "is", isCorrect: false },
{ title: "up", isCorrect: false },
{ title: "cat", isCorrect: false },
@@ -145,9 +145,436 @@ const allWords = [
{ title: "collective", isCorrect: false },
];
-const wordsData = allWords?.map((word, idx) => ({
- id: idx + 1,
- word,
+const teluguWords = [
+ "అర",
+ "జడ",
+ "గద",
+ "కల",
+ "దడ",
+ "లత",
+ "ఒక",
+ "జత",
+ "ఈల",
+ "పద",
+ "ఏం",
+ "మీ",
+ "గోడ",
+ "బడి",
+ "పొగ",
+ "చీర",
+ "నది",
+ "జలజ",
+ "తబల",
+ "ఇతర",
+ "కలప",
+ "రచన",
+ "రుచి",
+ "గాలి",
+ "కాలు",
+ "తాగు",
+ "దండ",
+ "బాతు",
+ "ఎగరు",
+ "గింజ",
+ "బెడద",
+ "ఈతడు",
+ "మోసం",
+ "బురద",
+ "దోరగ",
+ "బలం",
+ "తలుపు",
+ "కంఠం",
+ "గుర్రం",
+ "శక్తి",
+ "ఎత్తు",
+ "జన్మ",
+ "పద్యం",
+ "కడుగు",
+ "బాలిక",
+ "పెరుగు",
+ "గుడారు",
+ "ఇతరుల",
+ "కదలరా",
+ "తరగతి",
+ "నిలకడ",
+ "రచనలు",
+ "ఊరేగింపు",
+ "హిందువులు",
+ "ఊరగాయ",
+ "అత్తరు",
+ "కట్నము",
+ "వచ్చాయి",
+ "వాకిళ్లు",
+ "ఉత్తరం",
+ "మెల్లన",
+ "కృత్తిక",
+ "సరస్వతి",
+ "దశాబ్దము",
+ "ముత్తాత",
+ "పిన్నీసు",
+ "శతబ్దం",
+ "స్కూటరు",
+ "బొమ్మలు",
+ "అత్తెము",
+ "సంరక్షణ",
+ "ప్రయత్నం",
+ "గ్రీష్మము",
+ "వ్యాజ్యము",
+ "ప్రత్యేకం",
+ "తాత్పర్యం",
+ "విద్యార్థి",
+ "ఆధ్వర్యం",
+ "మధ్యాహ్నం",
+ "ప్రాధాన్యత",
+ "వాత్సల్యం",
+ "పరిశ్రమ",
+ "సంస్కృతి",
+ "ముఖ్యమంత్రి",
+ "సముద్రము",
+ "స్వాతంత్య్రం",
+ "ప్రత్యక్షం",
+ "గురుదక్షిణ",
+ "పుణ్యక్షేత్రం",
+ "కృతజ్ఞతలు",
+ "కొల్పలము",
+ "విరోధికృత్తు",
+ "పురస్కారము",
+ "అక్షధూర్తుడు",
+ "విశ్వకర్ముడు",
+ "ఇంద్రియార్థము",
+ "సమయస్ఫూర్తి",
+ "వార్షికోత్సవం",
+ "ప్రధానమంత్రి",
+ "ఆత్మవిశ్వాసం",
+];
+
+const allTeluguWords = teluguWords.map((word) => ({
+ title: word,
+ isCorrect: false,
+}));
+
+const kannadaWords = [
+ "ಎಡ",
+ "ಗರ",
+ "ಬಲ",
+ "ಲಯ",
+ "ಈಗ",
+ "ಕದ",
+ "ಚಟ",
+ "ತಪ",
+ "ದಳ",
+ "ಆಟ",
+ "ಕೈ",
+ "ಭೂ",
+ "ಇಲಿ",
+ "ದಾರ",
+ "ನಗು",
+ "ಅಳು",
+ "ಚೀಲ",
+ "ಕಡಗ",
+ "ಈಚಲ",
+ "ನಗರ",
+ "ಪದಕ",
+ "ಔತಣ",
+ "ರುಚಿ",
+ "ಕೋಣ",
+ "ಬಾಯಿ",
+ "ಕುಡಿ",
+ "ಗೀರು",
+ "ದಂಡೆ",
+ "ಬಿಳಿ",
+ "ಕಡಲು",
+ "ಮಂಡಿ",
+ "ಚಾದರ",
+ "ಜೀವನ",
+ "ತುಂಟ",
+ "ನೀರಸ",
+ "ಸಿಂಹ",
+ "ಆರೋಪ",
+ "ಒಂಟೆ",
+ "ಶಬ್ದ",
+ "ಖಡ್ಗ",
+ "ಸ್ವರ",
+ "ಇಷ್ಟ",
+ "ಪದ್ಮ",
+ "ಕಡುಬು",
+ "ಬಾಲಕಿ",
+ "ತಲುಪು",
+ "ಚಿಮಣಿ",
+ "ಹಸಿರು",
+ "ಆಟಗಾರ",
+ "ಜಾನಪದ",
+ "ಗಡಿಯಾರ",
+ "ತರಕಾರಿ",
+ "ಸಂಪಾದಕ",
+ "ಅಂತಃಕಲಹ",
+ "ಸಹಕರಿಸು",
+ "ಚಿನಕುರಳಿ",
+ "ನಂದಗೋಕುಲ",
+ "ಹಳೇಬೀಡು",
+ "ಘನಾಕೃತಿ",
+ "ಪುಳಿಯೋಗರೆ",
+ "ರೇಖಾಕೃತಿ",
+ "ಹಬ್ಬದೂಟ",
+ "ಪರಸ್ಪರ",
+ "ಕನ್ನಂಬಾಡಿ",
+ "ಸ್ವರಚಿತ",
+ "ಆಹ್ವಾನ",
+ "ರಂಗಸ್ಥಳ",
+ "ಸದ್ಬಳಕೆ",
+ "ಶ್ರೀಮಂತ",
+ "ತತ್ವಪದ",
+ "ಸಮನ್ವಯ",
+ "ಯಕ್ಷಗಾನ",
+ "ಕೋಷ್ಟಕ",
+ "ಕಾಮನಬಿಲ್ಲು",
+ "ಶಬ್ದಕೋಶ",
+ "ಪ್ರಾಸಪದ",
+ "ಪರೀಕ್ಷೆ",
+ "ಅದೃಷ್ಟ",
+ "ಕಾಲ್ಚೀಲ",
+ "ಪದ್ಯಭಾಗ",
+ "ಸಂಕ್ರಾಂತಿ",
+ "ರಾಜಾಜ್ಞೆ",
+ "ಪ್ರಧಾನಿ",
+ "ಸಂಗ್ರಹಾಲಯ",
+ "ಅಪಪ್ರಚಾರ",
+ "ಸೌಂದರ್ಯ",
+ "ಸಾರ್ವಭೌಮ",
+ "ಭಾಷಾಭ್ಯಾಸ",
+ "ರಾಷ್ಟ್ರೀಯ",
+ "ಕರವಸ್ತ್ರ",
+ "ಚಿತ್ರಾನ್ನ",
+ "ವಿದ್ಯಾರ್ಥಿ",
+ "ಆತ್ಮವಿಶ್ವಾಸ",
+ "ಮಾರ್ಗದರ್ಶನ",
+ "ವಾರ್ಷಿಕೋತ್ಸವ",
+ "ಗಣ್ಯವ್ಯಕ್ತಿ",
+ "ಪುಣ್ಯಕ್ಷೇತ್ರ",
+ "ಸ್ಪರ್ಧಾತ್ಮಕ",
+ "ಪ್ರಶ್ನಾರ್ಥಕ",
+ "ಕರ್ತವ್ಯನಿಷ್ಠೆ",
+];
+
+const allKannadaWords = kannadaWords.map((word) => ({
+ title: word,
+ isCorrect: false,
+}));
+
+const hindiWords = [
+ "तल",
+ "पर",
+ "नर",
+ "कम",
+ "रस",
+ "एक",
+ "घर",
+ "बल",
+ "यह",
+ "जब",
+ "नौ",
+ "दो",
+ "आज",
+ "गला",
+ "दिन",
+ "सास",
+ "ताऊ",
+ "नगर",
+ "समय",
+ "कमल",
+ "अलग",
+ "शहर",
+ "जाति",
+ "चीता",
+ "पैसा",
+ "जंतु",
+ "गीला",
+ "सेना",
+ "अंक",
+ "गणित",
+ "बादल",
+ "ऊँचा",
+ "गाज़र",
+ "सूरज",
+ "घंटी",
+ "लड़का",
+ "कहाँ",
+ "क्या",
+ "जन्म",
+ "अम्ल",
+ "शब्द",
+ "सत्य",
+ "नाचना",
+ "बाज़ार",
+ "गुलाबी",
+ "शारीर",
+ "आकाश",
+ "कबूतर",
+ "उबलना",
+ "सरकार",
+ "दोपहर",
+ "जरूरत",
+ "चौंतीस",
+ "सुनाओं",
+ "औषधि",
+ "मण्डल",
+ "कम्बल",
+ "प्रकार",
+ "विकल्प",
+ "अक्सर",
+ "प्रगति",
+ "उत्पाद",
+ "बिस्तर",
+ "व्यापार",
+ "आरम्भ",
+ "कारागृह",
+ "संघर्ष",
+ "मातृभाषा",
+ "कामाख्या",
+ "ज़िम्मेदार",
+ "प्रतिलिपि",
+ "मुस्कराना",
+ "गणतंत्र",
+ "पारस्परिक",
+ "उपस्थिति",
+ "प्राकृतिक",
+ "परिस्थिती",
+ "अध्यापक",
+ "वैज्ञानिक",
+ "सुरक्षित",
+ "व्यवहार",
+ "शब्दकोश",
+ "राष्ट्रीय",
+ "वर्णमाला",
+ "कर्मचारी",
+ "वर्तमान",
+ "धन्यवाद",
+ "महोत्सव",
+ "निन्यानवे",
+ "संग्रहालय",
+ "चिकित्सालय",
+ "निम्नलिखित",
+ "सृजनात्मक",
+ "आशीर्वाद",
+ "परिवर्तन",
+ "अभिनेत्री",
+ "रक्षाबंधन",
+ "पर्यावरण",
+ "इन्द्रधनुष",
+ "महत्वपूर्ण",
+];
+
+const allHindiWords = hindiWords.map((word) => ({
+ title: word,
+ isCorrect: false,
+}));
+
+const tamilWords = [
+ "கல்",
+ "பல்",
+ "கண்",
+ "மண்",
+ "பழம்",
+ "மரம்",
+ "மணல்",
+ "கடல்",
+ "வனம்",
+ "களம்",
+ "தளம்",
+ "எரி",
+ "நெய்",
+ "வரம்",
+ "நலம்",
+ "மனம்",
+ "கனம்",
+ "கணம்",
+ "மழை",
+ "சமம்",
+ "வட்டம்",
+ "கட்டம்",
+ "பட்டம்",
+ "திட்டம்",
+ "பக்கம்",
+ "மடம்",
+ "கப்பல்",
+ "படம்",
+ "மணம்",
+ "சரம்",
+ "பலம்",
+ "பலன்",
+ "வளம்",
+ "வண்ணம்",
+ "அக்கா",
+ "சட்டை",
+ "மக்கள்",
+ "ஓடம்",
+ "மரணம்",
+ "மகள்",
+ "உரம்",
+ "நகல்",
+ "அச்சம்",
+ "உலர்",
+ "பந்தம்",
+ "நடனம்",
+ "நகரம்",
+ "அச்சகம்",
+ "பந்தல்",
+ "கணவன்",
+ "சங்கம்",
+ "அங்கம்",
+ "கரணம்",
+ "இனம்",
+ "கழகம்",
+ "பண்டலம்",
+ "இதயம்",
+ "இடம்",
+ "பதக்கம்",
+ "அடக்கம்",
+ "கதம்பம்",
+ "உளம்",
+ "நண்பர்",
+ "மத்தளம்",
+ "மஞ்சள்",
+ "சக்கரம்",
+ "பழக்கம்",
+ "வழக்கம்",
+ "வழங்கல்",
+ "வசனம்",
+ "வசந்தம்",
+ "சமயம்",
+ "சங்கடம்",
+ "சந்தனம்",
+ "சமரம்",
+ "தகரம்",
+ "கலகம்",
+ "கலகலம்",
+ "சலசலம்",
+ "வரன்",
+ "பொம்மை",
+ "ஒட்டகம்",
+ "இரதம்",
+ "நண்பன்",
+ "ஆலயம்",
+ "இரக்கம்",
+ "ஆக்கம்",
+ "ஓணம்",
+ "சம்பளம்",
+ "நல்லவன்",
+ "மண்டபம்",
+ "வல்லவன்",
+ "ஆலமரம்",
+ "இலக்கம்",
+ "நாங்கள்",
+ "உறக்கம்",
+ "தொடங்கு",
+ "வணக்கம்",
+ "ஊஞ்சல்",
+ "ஊர்வலம்",
+];
+
+const allTamilWords = tamilWords.map((word) => ({
+ title: word,
+ isCorrect: false,
}));
const theme = createTheme();
@@ -173,8 +600,6 @@ const createWordSets = (words) => {
return sets;
};
-const allWordSets = createWordSets(allWords);
-
const CombinedReportPage = ({
currentWordSetIndex,
wordsAttempted,
@@ -188,18 +613,17 @@ const CombinedReportPage = ({
const theme = createTheme();
const isMobile = useMediaQuery(theme.breakpoints.down("sm"));
const navigate = useNavigate();
+ const location = useLocation();
const wordCount = transcript.trim().split(/\s+/).length;
//const wordsPerMinute = Math.round((wordCount / totalSec) * 60);
const totalWordsInCurrentSets = (currentWordSetIndex + 1) * 12;
- //console.log("transcript", wordCount);
-
const attemptedWordsCount = wordCount;
const correctWordsCount = allWords.filter((word) => word.isCorrect).length;
const wordsPerMinute = Math.round((correctWordsCount / totalSec) * 60);
const unattemptedWordsCount = allWords.length - correctWordsCount;
const newWordsLearnt = correctWordsCount;
- const totalWordsLearnt = correctWordsCount + wpm;
+ const totalWordsLearnt = Number(correctWordsCount || 0) + Number(wpm || 0);
const renderResults = () => (
{
setLocalData("tFlow", false);
//window.location.reload();
- if (process.env.REACT_APP_IS_APP_IFRAME === "true") {
+ if (location.pathname.includes("/towre-flow")) {
+ navigate("/discover-end");
+ } else if (process.env.REACT_APP_IS_APP_IFRAME === "true") {
navigate("/");
} else {
navigate("/discover-start");
@@ -663,10 +1089,25 @@ const TowreFlow = ({
resetTranscript,
browserSupportsSpeechRecognition,
} = useSpeechRecognition();
+ const lang = getLocalData("lang");
+
+ const wordsByLang = {
+ en: allEnglishWords,
+ hi: allHindiWords,
+ te: allTeluguWords,
+ ka: allKannadaWords,
+ ta: allTamilWords,
+ };
+
+ const allWords = wordsByLang[lang] || allEnglishWords;
+
+ const allWordSets = createWordSets(allWords);
const isMobile = useMediaQuery(theme.breakpoints.down("sm"));
const currentWordSet = allWordSets[currentWordSetIndex];
const transcriptRef = useRef("");
- const lang = getLocalData("lang");
+ const location = useLocation();
+ background = "linear-gradient(45deg, #FF730E 30%, #FFB951 90%)";
+ showTimer = false;
useEffect(() => {
transcriptRef.current = transcript;
@@ -850,7 +1291,8 @@ const TowreFlow = ({
setLoading(true);
const transcriber = await pipeline(
"automatic-speech-recognition",
- ""
+ "Xenova/whisper-tiny",
+ { quantized: true }
);
const audioUrl = URL.createObjectURL(audioBlob);
@@ -1219,7 +1661,7 @@ const TowreFlow = ({
style={{
position: "relative",
width: 180,
- height: 110,
+ height: 85,
display: "flex",
justifyContent: "center",
alignItems: "center",
@@ -1255,7 +1697,7 @@ const TowreFlow = ({
- Bonus Round!
+ Towre Flow
![]()
{
+ return (
+
+ );
+};
+
+const WordWall = ({
+ handleNext,
+ enableNext,
+ background,
+ steps,
+ currentStep,
+ level,
+ progressData,
+ showProgress,
+ handleBack,
+ disableScreen,
+ loading,
+ vocabCount,
+ wordCount,
+ multilingual,
+}) => {
+ const [dropText, setDropText] = useState("");
+ const [showQuiz, setShowQuiz] = useState(false);
+ const [correctCount, setCorrectCount] = useState(0);
+ const [wrongCount, setWrongCount] = useState(0);
+ const [selectedId, setSelectedId] = useState(null);
+ const [showConfetti, setShowConfetti] = useState(false);
+ const [currentQuestionIndex, setCurrentQuestionIndex] = useState(0);
+ const [showGiftBoxes, setShowGiftBoxes] = useState(false);
+ const [showGiftAnimation, setShowGiftAnimation] = useState(false);
+ const [showReview, setShowReview] = useState(false);
+ const [wrongAnswersAllQuestions, setWrongAnswersAllQuestions] = useState([]);
+ const [currentReviewIndex, setCurrentReviewIndex] = useState(0);
+ const [openedGifts, setOpenedGifts] = useState([]);
+ const [showGiftImage, setShowGiftImage] = useState(false);
+ const [progress, setProgress] = useState(0);
+ const [giftsOpened, setGiftsOpened] = useState(0);
+ const [showResults, setShowResults] = useState(false);
+ const navigate = useNavigate();
+
+ const [windowSize, setWindowSize] = useState({
+ width: window.innerWidth,
+ height: window.innerHeight,
+ });
+ const [scoreAnimation, setScoreAnimation] = useState({
+ show: false,
+ value: "",
+ color: "",
+ startPos: { x: 0, y: 0 },
+ endPos: { x: 0, y: 0 },
+ });
+ const [lastAnswerResult, setLastAnswerResult] = useState(null);
+ const [pendingScoreUpdate, setPendingScoreUpdate] = useState({
+ value: 0,
+ isCorrect: false,
+ });
+ const [boxAnimation, setBoxAnimation] = useState({
+ correct: false,
+ wrong: false,
+ });
+
+ const [gameData, setGameData] = useState([]);
+ const correctBoxRef = useRef(null);
+ const wrongBoxRef = useRef(null);
+ const animationRef = useRef(null);
+ const username = getLocalData("profileName") || "User";
+
+ console.log("counts", wrongAnswersAllQuestions);
+
+ useEffect(() => {
+ const fetchGameData = async () => {
+ try {
+ const response = await getCorrectPracticeWords("false");
+ const correctWords = response?.data || [];
+
+ const formattedItems = correctWords?.map((item) => ({
+ image_url: item?.imagePath || item.mechanics_data?.[0].image_url,
+ text: item?.contentSourceData?.[0]?.text,
+ audio_en: `${item?.contentId}.wav`,
+ audio_hi: item?.multilingual?.kn?.audio_url,
+ }));
+
+ if (correctWords?.length < 3) {
+ setLocalData("wordWall", false);
+ navigate("/practice");
+ }
+
+ const shuffledItems = shuffle([...formattedItems]);
+
+ const correctItems = shuffledItems.slice(0, 3);
+
+ const finalGameData = correctItems.map((correctItem) => {
+ let pool = shuffledItems.filter(
+ (item) => item.text !== correctItem.text
+ );
+
+ if (pool.length < 2) {
+ pool = [...pool, ...shuffledItems].filter(
+ (item) => item.text !== correctItem.text
+ );
+ }
+
+ const incorrectOptions = shuffle(pool).slice(0, 2);
+
+ const options = shuffle([
+ {
+ ...correctItem,
+ isCorrect: true,
+ },
+ ...incorrectOptions.map((item) => ({
+ ...item,
+ isCorrect: false,
+ })),
+ ]);
+
+ return { images: options };
+ });
+
+ console.log(
+ "dataGame",
+ finalGameData,
+ getLocalData("wordWall"),
+ getLocalData("readMatch")
+ );
+
+ setGameData(finalGameData);
+ } catch (err) {
+ console.error("Failed to generate game data:", err);
+ }
+ };
+
+ fetchGameData();
+ }, []);
+
+ useEffect(() => {
+ const styleSheet = document.styleSheets[0];
+ if (styleSheet) {
+ styleSheet.insertRule(
+ `@keyframes dropFromTop {
+ 0% { top: 80px; opacity: 0; }
+ 30% { opacity: 1; }
+ 100% { top: 300px; opacity: 1; }
+ }`,
+ styleSheet.cssRules.length
+ );
+
+ styleSheet.insertRule(
+ `@keyframes scoreFlyToBox {
+ 0% {
+ transform: translate(90%, -70%) scale(1);
+
+ opacity: 1.2;
+ }
+ 70% {
+ opacity: 1.5;
+ }
+ 100% {
+ transform: translate(
+ calc(var(--target-x) - 55vw + 70%),
+ calc(var(--target-y) - 52vh + 80%)
+ ) scale(1);
+ opacity: 0;
+ }
+ }`,
+ styleSheet.cssRules.length
+ );
+
+ styleSheet.insertRule(
+ `@keyframes bounce {
+ 0%, 100% { transform: translateY(0); }
+ 50% { transform: translateY(-15px); }
+ }`,
+ styleSheet.cssRules.length
+ );
+
+ styleSheet.insertRule(
+ `@keyframes popIn {
+ 0% { transform: scale(0.5); opacity: 0; }
+ 70% { transform: scale(1.1); opacity: 1; }
+ 100% { transform: scale(1); opacity: 1; }
+ }`,
+ styleSheet.cssRules.length
+ );
+
+ styleSheet.insertRule(
+ `@keyframes boxBounce {
+ 0%, 100% { transform: scale(1); }
+ 50% { transform: scale(1.2); }
+ }`,
+ styleSheet.cssRules.length
+ );
+
+ styleSheet.insertRule(
+ `@keyframes rotate {
+ 0% {
+ transform: rotate(0deg);
+ }
+ 100% {
+ transform: rotate(360deg);
+ }
+ }`,
+ styleSheet.cssRules.length
+ );
+ }
+
+ console.log("dataGameData", dropText);
+
+ const handleResize = () => {
+ setWindowSize({
+ width: window.innerWidth,
+ height: window.innerHeight,
+ });
+ };
+
+ window.addEventListener("resize", handleResize);
+ return () => {
+ window.removeEventListener("resize", handleResize);
+ if (animationRef.current) {
+ clearTimeout(animationRef.current);
+ }
+ };
+ }, [currentQuestionIndex]);
+
+ useEffect(() => {
+ if (gameData?.length > 0) {
+ loadQuestion(currentQuestionIndex);
+ }
+ }, [gameData, currentQuestionIndex]);
+
+ useEffect(() => {
+ if (lastAnswerResult && currentQuestionIndex > 0) {
+ const startPos = {
+ x: window.innerWidth / 2,
+ y: window.innerHeight / 2,
+ };
+
+ const endPos = lastAnswerResult.correct
+ ? {
+ x: window.innerWidth - 90,
+ y: 100,
+ }
+ : {
+ x: 110,
+ y: 100,
+ };
+
+ setScoreAnimation({
+ show: true,
+ value: lastAnswerResult.correct ? "+1" : "-1",
+ color: lastAnswerResult.correct ? "#1F9D55" : "#F37052",
+ startPos,
+ endPos,
+ });
+
+ setPendingScoreUpdate({
+ value: lastAnswerResult.correct ? 1 : -1,
+ isCorrect: lastAnswerResult.correct,
+ });
+
+ setTimeout(() => {
+ setScoreAnimation({ show: false });
+ }, 1500);
+
+ setTimeout(() => {
+ if (lastAnswerResult.correct) {
+ setBoxAnimation((prev) => ({ ...prev, correct: true }));
+ setTimeout(() => {
+ setCorrectCount((prev) => prev + 1);
+ setBoxAnimation((prev) => ({ ...prev, correct: false }));
+ }, 300);
+ } else {
+ setBoxAnimation((prev) => ({ ...prev, wrong: true }));
+ setTimeout(() => {
+ setWrongCount((prev) => prev + 1);
+ setBoxAnimation((prev) => ({ ...prev, wrong: false }));
+ }, 300);
+ }
+ setLastAnswerResult(null);
+ }, 1600);
+ }
+ }, [currentQuestionIndex]);
+
+ const loadQuestion = (questionIndex) => {
+ const correct = gameData?.[questionIndex]?.images?.find(
+ (img) => img.isCorrect
+ );
+ if (correct) {
+ setDropText(correct?.text);
+ }
+ setShowQuiz(false);
+ setSelectedId(null);
+ };
+
+ const playAudio = (src) => {
+ console.log("src", src);
+
+ if (!src) return;
+ const audio = new Audio(src);
+ audio.play();
+ };
+
+ const handleImageClick = (item, id) => {
+ if (selectedId !== null) return;
+
+ setSelectedId(id);
+ const isLastQuestion = currentQuestionIndex === gameData?.length - 1;
+
+ if (item.isCorrect) {
+ setShowConfetti(true);
+ setLastAnswerResult({ correct: true });
+
+ setTimeout(() => {
+ setShowConfetti(false);
+
+ if (isLastQuestion) {
+ setShowResults(true);
+ } else {
+ setCurrentQuestionIndex((prev) => prev + 1);
+ }
+ }, 2000);
+ } else {
+ setLastAnswerResult({ correct: false });
+ const correctAnswer = gameData?.[currentQuestionIndex]?.images.find(
+ (img) => img.isCorrect
+ );
+ setWrongAnswersAllQuestions((prev) => [
+ ...prev,
+ {
+ questionIndex: currentQuestionIndex,
+ item: correctAnswer,
+ },
+ ]);
+
+ setTimeout(() => {
+ if (isLastQuestion) {
+ setShowResults(true);
+ } else {
+ setCurrentQuestionIndex((prev) => prev + 1);
+ }
+ }, 1000);
+ }
+ };
+ const handleGiftClick = (index) => {
+ if (openedGifts.includes(index)) return;
+
+ setOpenedGifts((prev) => [...prev, index]);
+
+ setCurrentReviewIndex(index);
+ setShowGiftAnimation(true);
+ setShowConfetti(true);
+ setShowGiftBoxes(false);
+ setShowGiftImage(false);
+
+ setTimeout(() => {
+ setShowGiftImage(true);
+ }, 1000);
+
+ animationRef.current = setTimeout(() => {
+ setShowGiftAnimation(false);
+ setShowGiftImage(false);
+ setShowConfetti(false);
+ setShowReview(true);
+
+ setGiftsOpened((prev) => {
+ const newCount = prev + 1;
+ const newProgress = Math.min(
+ 100,
+ Math.round((newCount / wrongAnswersAllQuestions.length) * 100)
+ );
+ setProgress(newProgress);
+ return newCount;
+ });
+ }, 3000);
+ };
+ const handleReviewComplete = () => {
+ setShowReview(false);
+
+ if (currentReviewIndex === wrongAnswersAllQuestions.length - 1) {
+ //setShowResults(true);
+ setLocalData("wordWall", false);
+ navigate("/practice");
+ } else {
+ setShowGiftBoxes(true);
+ }
+ };
+
+ const ResultsView = ({ onNext }) => (
+
+
+ You Did It!
+
+
+
+
+

+
+ {3 - wrongAnswersAllQuestions?.length}
+
+
+ Words you
+
+ know
+
+
+
+
+

+
+ {wrongAnswersAllQuestions?.length}
+
+
+ Words to
+
+ Try Again!
+
+
+
+
+
+

{
+ setShowResults(false);
+ setShowGiftBoxes(true);
+ if (wrongAnswersAllQuestions?.length === 0) {
+ setLocalData("wordWall", false);
+ navigate("/practice");
+ }
+ }}
+ />
+
+
+ );
+ const getImageBackground = (item, id) => {
+ if (selectedId !== id) return "#fff";
+ return item.isCorrect ? "#DEF5CC" : "#FEE4D5";
+ };
+
+ const renderGameView = () => (
+ <>
+ {!showQuiz ? (
+ <>
+
setShowQuiz(true)}
+ >
+

+
+ {dropText}
+
+
+
+
+
+

+
+ {-wrongCount}
+
+

+
+
+
setShowQuiz(true)}
+ >
+

+
Click Bubble
+
+
+
+

+
+ {correctCount}
+
+

+
+
+ >
+ ) : (
+
+
+ Can you find the?
+
+
+ {dropText}
+
+
+ {gameData?.[currentQuestionIndex]?.images?.map((item, idx) => (
+
handleImageClick(item, idx)}
+ >
+

+
+ ))}
+
+
+ )}
+ >
+ );
+
+ const renderGiftBoxesView = () => (
+
+
+ Let's open gifts
+
+
+
+ {wrongAnswersAllQuestions?.map((wrongAnswer, idx) => {
+ const isOpened = openedGifts.includes(idx);
+ const isAnimating = showGiftAnimation && currentReviewIndex === idx;
+
+ return (
+
!isOpened && !isAnimating && handleGiftClick(idx)}
+ >
+ {isAnimating ? (
+
+ ) : (
+ <>
+

+ {isOpened && (
+
+ {wrongAnswer?.item?.text}
+
+ )}
+ >
+ )}
+
+ );
+ })}
+
+
+ );
+
+ const renderGiftAnimation = () => (
+
+
+ {!showGiftImage && (
+

+ )}
+
+ {showGiftImage && (
+
+
+
+ )}
+
+
+ );
+
+ const renderReviewView = () => {
+ const currentAnswer = wrongAnswersAllQuestions?.[currentReviewIndex]?.item;
+ const lang = getLocalData("lang");
+
+ if (!currentAnswer) return null;
+
+ return (
+
+
+ This is called a...
+
+
+
+
+

+
+
+ playAudio(
+ `${process.env.REACT_APP_AWS_S3_BUCKET_CONTENT_URL}/all-audio-files/${lang}/${currentAnswer?.audio_en}`
+ )
+ }
+ >
+

+
English
+
+
+ playAudio(
+ `${process.env.REACT_APP_AWS_S3_BUCKET_CONTENT_URL}/multilingual_audios/${currentAnswer?.audio_hi}`
+ )
+ }
+ >
+

+
ಕನ್ನಡ
+
+
+
+
+
+
+
+
+ {currentAnswer?.text}
+
+
+
+
+
+
+
+
+ );
+ };
+
+ return (
+
+ {showResults ? (
+ {
+ setShowGiftBoxes(true);
+ }}
+ />
+ ) : (
+
+ {showConfetti && (
+
+ )}
+
+ {scoreAnimation.show && (
+
+ {scoreAnimation.value}
+
+ )}
+
+
+
+ {`${username}'s Word Wall`}
+
+
+ {(showGiftBoxes || showGiftAnimation || showReview) && (
+
+
+
+
+
+
+
+

+
+
+
+ {giftsOpened}/{wrongAnswersAllQuestions.length}
+
+
+
+ )}
+
+
+ {!showGiftBoxes &&
+ !showGiftAnimation &&
+ !showReview &&
+ renderGameView()}
+ {showGiftBoxes && renderGiftBoxesView()}
+ {showGiftAnimation && renderGiftAnimation()}
+ {showReview && renderReviewView()}
+
+ )}
+
+ );
+};
+
+export default WordWall;
diff --git a/src/csp.js b/src/csp.js
index 15c800ca..e2ffc7c2 100644
--- a/src/csp.js
+++ b/src/csp.js
@@ -17,7 +17,7 @@ export const getCSP = (envVariables) => {
media-src 'self' blob: ${REACT_APP_AWS_S3_BUCKET_URL} ${REACT_APP_AWS_S3_BUCKET_CONTENT_URL} https://raw.githubusercontent.com https://github.com ;
connect-src 'self' *.theall.ai ${REACT_APP_HOST} ${REACT_APP_LEARNER_AI_BASE_URL} ${REACT_APP_AWS_S3_BUCKET_URL} ${REACT_APP_AWS_S3_BUCKET_CONTENT_URL} blob: https://huggingface.co https://cas-bridge.xethub.hf.co https://cdn.jsdelivr.net ;
form-action 'self';
- frame-src 'self' https://www.google.com https://www.gstatic.com;
+ frame-src 'self' https://www.google.com https://www.gstatic.com https://www.youtube.com https://www.youtube-nocookie.com;
object-src 'none';
base-uri 'none';
worker-src 'self' blob:;
diff --git a/src/routes/index.js b/src/routes/index.js
index c6a436b7..0606493c 100644
--- a/src/routes/index.js
+++ b/src/routes/index.js
@@ -66,6 +66,18 @@ const routData = [
component: reviews.LoginPage,
requiresAuth: false,
},
+ {
+ id: "route-011",
+ path: "/letter-hunt",
+ component: reviews.LetterHunt,
+ requiresAuth: true,
+ },
+ {
+ id: "route-012",
+ path: "/towre-flow",
+ component: reviews.TowreFlowPage,
+ requiresAuth: true,
+ },
];
// add login route for test rig
const TOKEN = localStorage.getItem("apiToken");
diff --git a/src/services/content/contentService.js b/src/services/content/contentService.js
index 8a256e41..1eea2200 100644
--- a/src/services/content/contentService.js
+++ b/src/services/content/contentService.js
@@ -32,14 +32,10 @@ export const fetchAssessmentData = async (lang) => {
}
};
-export const fetchPaginatedContent = async (
- collectionId,
- page = 1,
- limit = 5
-) => {
+export const fetchPaginatedContent = async (collectionId, limit, page = 1) => {
try {
const response = await axios.get(
- `${API_BASE_URL_CONTENT_SERVICE}/${config.URLS.GET_PAGINATION}?page=${page}&limit=${limit}&collectionId=${collectionId}`,
+ `${API_BASE_URL_CONTENT_SERVICE}/${config.URLS.GET_PAGINATION}?page=${page}&limit=${limit}&collectionId=${collectionId}&multilingual=true`,
getHeaders()
);
return response.data;
diff --git a/src/services/learnerAi/learnerAiService.js b/src/services/learnerAi/learnerAiService.js
index 1e142f07..25938a60 100644
--- a/src/services/learnerAi/learnerAiService.js
+++ b/src/services/learnerAi/learnerAiService.js
@@ -15,15 +15,29 @@ const getHeaders = () => {
};
};
-export const getContent = async (criteria, lang, limit, options = {}) => {
+export const getContent = async (
+ criteria,
+ lang,
+ limit,
+ options,
+ level = {}
+) => {
try {
let url = `${API_LEARNER_AI_APP_HOST}/${config.URLS.GET_CONTENT}/${criteria}?language=${lang}&contentlimit=${limit}&gettargetlimit=${limit}`;
- if (options.mechanismId) url += `&mechanics_id=${options.mechanismId}`;
+ if (
+ options.mechanismId &&
+ ![2, 3].includes(level) &&
+ !options.mechanismId.startsWith("Fluency") &&
+ options.mechanismId !== "PhrasesInAction"
+ )
+ url += `&mechanics_id=${options.mechanismId}`;
if (options.competency) url += `&level_competency=${options.competency}`;
- if (options.tags && lang === "en") url += `&tags=${options.tags}`;
+ if (options.tags && (lang === "en" || lang === "kn" || lang === "te"))
+ url += `&tags=${options.tags}`;
if (options.storyMode) url += `&story_mode=${options.storyMode}`;
if (options.CEFR_level) url += `&CEFR_level=${options.CEFR_level}`;
+ if (options.multilingual) url += `&multilingual=${options.multilingual}`;
const response = await axios.get(url, getHeaders());
return response.data;
@@ -33,12 +47,18 @@ export const getContent = async (criteria, lang, limit, options = {}) => {
}
};
-export const getContentNew = async (criteria, lang, limit, options = {}) => {
+export const getContentNew = async (
+ criteria,
+ lang,
+ limit,
+ options = {},
+ level
+) => {
try {
let url = `${API_LEARNER_AI_APP_HOST}/${config.URLS.GET_CONTENT_NEW}`;
const data = {
language: lang,
- content_type: "Word",
+ content_type: criteria,
};
const response = await axios.post(url, data, getHeaders());
return response.data;
@@ -82,6 +102,7 @@ export const fetchGetSetResult = async (
collectionId: currentCollectionId,
totalSyllableCount: totalSyllableCount,
language: lang,
+ is_B_enable: true,
},
getHeaders()
);
diff --git a/src/services/orchestration/orchestrationService.js b/src/services/orchestration/orchestrationService.js
index f7ebd92a..1c7a09ca 100644
--- a/src/services/orchestration/orchestrationService.js
+++ b/src/services/orchestration/orchestrationService.js
@@ -6,6 +6,8 @@ import { getVirtualId } from "../userservice/userService";
const API_BASE_URL_ORCHESTRATION =
process.env.REACT_APP_LEARNER_AI_ORCHESTRATION_HOST;
+const API_LEARNER_AI_APP_HOST = process.env.REACT_APP_LEARNER_AI_APP_HOST;
+
const getHeaders = () => {
const token = localStorage.getItem("apiToken");
return {
@@ -67,10 +69,87 @@ export const addPointer = async (points, milestone) => {
}
};
+export const addCorrectPracticeWords = async () => {
+ const correctPracticeWords = getLocalData("correctPracticeWords");
+ const token = localStorage.getItem("apiToken");
+
+ if (!correctPracticeWords || correctPracticeWords.length === 0) {
+ console.warn("No correct practice words to send.");
+ return;
+ }
+
+ try {
+ const response = await axios.post(
+ `${API_LEARNER_AI_APP_HOST}/api/towre/addCorrectWord`,
+ { correctPracticeWords },
+ {
+ headers: {
+ Authorization: `Bearer ${token}`,
+ "Content-Type": "application/json",
+ },
+ }
+ );
+
+ return response.data;
+ } catch (error) {
+ console.error("Error sending correctPracticeWords:", error);
+ throw error;
+ }
+};
+
+export const updateCorrectPracticeWords = async (updates) => {
+ const token = localStorage.getItem("apiToken");
+
+ if (!updates || updates.length === 0) {
+ console.warn("No correct practice words to send.");
+ return;
+ }
+
+ try {
+ const response = await axios.put(
+ `${API_LEARNER_AI_APP_HOST}/api/towre/updateCorrectWords`,
+ { updates },
+ {
+ headers: {
+ Authorization: `Bearer ${token}`,
+ "Content-Type": "application/json",
+ },
+ }
+ );
+
+ return response.data;
+ } catch (error) {
+ console.error("Error sending correctPracticeWords:", error);
+ throw error;
+ }
+};
+
+export const getCorrectPracticeWords = async (understood) => {
+ const token = localStorage.getItem("apiToken");
+
+ try {
+ const response = await axios.get(
+ `${API_LEARNER_AI_APP_HOST}/api/towre/getCorrectWords?practiced=true&learned=true&understood=${understood}`,
+ {
+ headers: {
+ Authorization: `Bearer ${token}`,
+ "Content-Type": "application/json",
+ },
+ }
+ );
+
+ return response.data;
+ } catch (error) {
+ console.error("Error fetching correctPracticeWords:", error);
+ throw error;
+ }
+};
+
export const createLearnerProgress = async (
subSessionId,
milestoneLevel,
- totalSyllableCount
+ totalSyllableCount,
+ ansSelectionStatus
) => {
const sessionId = getLocalData("sessionId");
const language = getLocalData("lang");
@@ -81,6 +160,7 @@ export const createLearnerProgress = async (
subSessionId: subSessionId,
milestoneLevel: milestoneLevel,
language: language,
+ ansSelectionStatus: ansSelectionStatus,
};
if (totalSyllableCount !== undefined) {
requestBody.totalSyllableCount = totalSyllableCount;
diff --git a/src/services/telementryService.js b/src/services/telementryService.js
index 23855746..29553a59 100644
--- a/src/services/telementryService.js
+++ b/src/services/telementryService.js
@@ -63,6 +63,12 @@ export const initialize = async ({ context, config, metadata }) => {
cdata: [
{ id: contentSessionId, type: "ContentSession" },
{ id: playSessionId, type: "PlaySession" },
+ {
+ id: /Mobi|Android|iPhone|iPad|iPod/i.test(navigator.userAgent)
+ ? "Mobile"
+ : "Desktop",
+ type: "Device",
+ },
],
},
userOrgDetails: {},
@@ -294,6 +300,12 @@ export const getEventOptions = () => {
},
{ id: userDetails?.udise_code, type: "udise_code" },
{ id: getVirtualId() || null, type: "virtualId" },
+ {
+ id: /Mobi|Android|iPhone|iPad|iPod/i.test(navigator.userAgent)
+ ? "Mobile"
+ : "Desktop",
+ type: "Device",
+ },
],
rollup: {},
},
diff --git a/src/utils/AudioCompare.js b/src/utils/AudioCompare.js
index 777adf07..35cc68fd 100644
--- a/src/utils/AudioCompare.js
+++ b/src/utils/AudioCompare.js
@@ -1,11 +1,23 @@
import React, { useState, useEffect, useRef } from "react";
import RecordRTC from "recordrtc";
import { Box, CircularProgress } from "@mui/material";
-import { ListenButton, RetryIcon, SpeakButton, StopButton } from "./constants";
+import {
+ ListenButton,
+ RetryIcon,
+ SpeakButton,
+ StopButton,
+ getLocalData,
+} from "./constants";
import RecordVoiceVisualizer from "./RecordVoiceVisualizer";
import playButton from "../../src/assets/listen.png";
import pauseButton from "../../src/assets/pause.png";
import PropTypes from "prop-types";
+import { pipeline, env } from "@xenova/transformers";
+import { loadTranscriber } from "./transcriber";
+import { doubleMetaphone } from "double-metaphone";
+import { transliterateKannadaToLatin, compareWords } from "../utils/textUtils";
+
+env.localModelPath = "https://huggingface.co/Xenova/whisper-tiny/resolve/main/";
const AudioRecorder = (props) => {
const [isRecording, setIsRecording] = useState(false);
@@ -14,6 +26,21 @@ const AudioRecorder = (props) => {
const recorderRef = useRef(null);
const mediaStreamRef = useRef(null);
const [showLoader, setShowLoader] = useState(false);
+ const [language, setLanguage] = useState(getLocalData("lang") || "en");
+
+ function sanitize(text) {
+ return text
+ .toLowerCase()
+ .replace(/[.,\/#!$%\^&\*;:{}=\-_`~()"\[\]'’]/g, "")
+ .replace(/\s{2,}/g, " ")
+ .trim();
+ }
+
+ function phoneticMatch(a, b) {
+ const [a1, a2] = doubleMetaphone(a);
+ const [b1, b2] = doubleMetaphone(b);
+ return a1 === b1 || a1 === b2 || a2 === b1 || a2 === b2;
+ }
//console.log("pageName", props.pageName);
@@ -61,16 +88,64 @@ const AudioRecorder = (props) => {
const stopRecording = () => {
setShowLoader(true);
const timeoutId = setTimeout(() => {
- setShowLoader(false);
- setStatus("inactive");
+ // setShowLoader(false);
+ // setStatus("inactive");
if (recorderRef.current) {
- recorderRef.current.stopRecording(() => {
+ recorderRef.current.stopRecording(async () => {
const blob = recorderRef.current.getBlob();
if (blob) {
setAudioBlob(blob);
saveBlob(blob);
+ console.log("isShowCase", props.isShowCase);
+
+ if (props.noOffline !== true && !props.isShowCase) {
+ try {
+ // setLoading(true);
+ const transcriber = await loadTranscriber();
+ console.log("Transcriber is:", transcriber);
+ const audioUrl = URL.createObjectURL(blob);
+ const output = await transcriber(audioUrl, {
+ chunk_length_s: 20,
+ stride_length_s: 5,
+ task: "transcribe",
+ language: "en",
+ });
+ const transcripts = sanitize(output.text);
+ const target = sanitize(props.originalText);
+
+ console.log("Transcription resultss 1:", transcripts);
+ console.log("Transcription resultss 2:", target);
+
+ const isCorrect =
+ transcripts.includes(target) ||
+ phoneticMatch(transcripts, target);
+
+ if (language === "kn") {
+ const knLatin = transliterateKannadaToLatin(target);
+ const comparison = compareWords(transcripts, knLatin);
+ props.setIsCorrect?.(comparison?.isFine);
+ } else {
+ props.setIsCorrect?.(isCorrect);
+ }
+ setShowLoader(false);
+ setStatus("inactive");
+ } catch (error) {
+ console.error("Transcription error:", error);
+ setShowLoader(false);
+ setStatus("inactive");
+ props.setIsCorrect?.(false);
+ }
+ }
+ if (props.noOffline === true || props.isShowCase) {
+ setShowLoader(false);
+ setStatus("inactive");
+ props.setIsCorrect?.(false);
+ }
} else {
console.error("Failed to retrieve audio blob.");
+ setShowLoader(false);
+ setStatus("inactive");
+ props.setIsCorrect?.(false);
}
if (mediaStreamRef.current) {
mediaStreamRef.current.getTracks().forEach((track) => track.stop());
diff --git a/src/utils/LanguageModal.js b/src/utils/LanguageModal.js
new file mode 100644
index 00000000..c453c5b9
--- /dev/null
+++ b/src/utils/LanguageModal.js
@@ -0,0 +1,188 @@
+import React, { useState } from "react";
+import MotherTongue from "./../assets/motherTongue.svg";
+import { getLocalData, setLocalData } from "./constants";
+
+const sampleTranslations = [
+ { lang: "Kannada", text: "ka", icon: "ಅ" },
+ { lang: "Tamil", text: "tn", icon: "அ" },
+ { lang: "Telugu", text: "te", icon: "అ" },
+ { lang: "Hindi", text: "hi", icon: "क" },
+];
+
+const LanguageModalNew = ({ show, word, onClose }) => {
+ const [selectedLang, setSelectedLang] = useState("ka");
+
+ if (!show) return null;
+
+ const handleConfirm = () => {
+ setLocalData("nativeLang", selectedLang);
+ setLocalData("nativeLangEnable", true);
+ console.log("Selected language:", selectedLang);
+ onClose();
+ };
+
+ return (
+
+
+
+

+
Choose your help language
+
+
+
+ {sampleTranslations.map((entry, index) => {
+ const isSelected = selectedLang === entry.text;
+ return (
+
setSelectedLang(entry.text)}
+ >
+
+ {entry.icon}
+
+
+ {entry.lang}
+
+
+ {isSelected && "✔"}
+
+
+ );
+ })}
+
+
+
+
+
+ );
+};
+
+const styles = {
+ backdrop: {
+ position: "fixed",
+ top: 80,
+ left: 0,
+ width: "100%",
+ display: "flex",
+ justifyContent: "center",
+ alignItems: "center",
+ zIndex: 1000,
+ },
+ modal: {
+ backgroundColor: "#fff",
+ padding: "30px",
+ borderRadius: "20px",
+ width: "90%",
+ maxWidth: "600px",
+ boxShadow: "0 8px 24px rgba(0,0,0,0.15)",
+ textAlign: "center",
+ },
+ header: {
+ display: "flex",
+ alignItems: "center",
+ gap: "10px",
+ marginBottom: "35px",
+ justifyContent: "center",
+ },
+ avatar: {
+ width: "48px",
+ height: "48px",
+ borderRadius: "50%",
+ },
+ title: {
+ fontSize: "36px",
+ margin: 0,
+ fontWeight: "600",
+ fontFamily: "Quicksand",
+ color: "#333F61",
+ },
+ langGrid: {
+ display: "grid",
+ gridTemplateColumns: "repeat(3, 1fr)",
+ gap: "15px",
+ marginBottom: "20px",
+ },
+ card: {
+ border: "2px solid #e0e0e0",
+ borderRadius: "12px",
+ padding: "10px",
+ cursor: "pointer",
+ transition: "all 0.2s",
+ fontWeight: "600",
+ fontFamily: "Quicksand",
+ },
+ cardIcon: {
+ fontSize: "36px",
+ marginBottom: "5px",
+ fontWeight: "600",
+ fontFamily: "Quicksand",
+ },
+ cardText: {
+ fontSize: "20px",
+ fontWeight: "600",
+ fontFamily: "Quicksand",
+ },
+ tickMark: {
+ position: "absolute",
+ top: "10px",
+ right: "10px",
+ backgroundColor: "#fff",
+ color: "#F37021",
+ fontSize: "14px",
+ fontWeight: "bold",
+ borderRadius: "50%",
+ width: "24px",
+ height: "24px",
+ display: "flex",
+ alignItems: "center",
+ justifyContent: "center",
+ },
+ noTickMark: {
+ position: "absolute",
+ top: "10px",
+ right: "10px",
+ backgroundColor: "#fff",
+ border: "1.5px solid #999999",
+ fontSize: "14px",
+ fontWeight: "bold",
+ borderRadius: "50%",
+ width: "24px",
+ height: "24px",
+ display: "flex",
+ alignItems: "center",
+ justifyContent: "center",
+ },
+ confirmBtn: {
+ background: "linear-gradient(to right, #00c6ff, #0072ff)",
+ color: "#fff",
+ padding: "12px 72px",
+ borderRadius: "10px",
+ border: "none",
+ fontSize: "16px",
+ fontWeight: "600",
+ fontFamily: "Quicksand",
+ cursor: "pointer",
+ marginTop: "10px",
+ },
+};
+
+export default LanguageModalNew;
diff --git a/src/utils/SpeedSelector.js b/src/utils/SpeedSelector.js
new file mode 100644
index 00000000..b938c9ca
--- /dev/null
+++ b/src/utils/SpeedSelector.js
@@ -0,0 +1,194 @@
+import React, { useState } from "react";
+import rabbitImg from "../assets/rabbit.svg";
+import cheetahImg from "../assets/cheetah.svg";
+import tortoiseImg from "../assets/tortoise.svg";
+import meterlineimg from "../assets/meterline.svg";
+import dotimg from "../assets/dott.svg";
+
+const SpeedSelector = ({ onSelect, selected: propSelected }) => {
+ const [localSelected, setLocalSelected] = useState("Slow");
+ const selected = propSelected !== undefined ? propSelected : localSelected;
+
+ const handleSelect = (value) => {
+ if (propSelected === undefined) setLocalSelected(value);
+ if (onSelect) onSelect(value);
+ };
+
+ const getRotationAndFill = () => {
+ switch (selected) {
+ case "Slow":
+ return { needleRotate: -45, fillRotate: -137 };
+ case "Medium":
+ return { needleRotate: 0, fillRotate: -90 };
+ case "Fast":
+ return { needleRotate: 45, fillRotate: 0 };
+ default:
+ return { needleRotate: -45, fillRotate: -137 };
+ }
+ };
+
+ const { needleRotate, fillRotate } = getRotationAndFill();
+
+ return (
+
+
+
+
+
+
+
+
+
+
+
+

+

+
+
+
+
+ {[
+ { label: "Slow", img: tortoiseImg },
+ { label: "Medium", img: rabbitImg },
+ { label: "Fast", img: cheetahImg },
+ ].map((item) => (
+
handleSelect(item.label)}
+ style={{
+ cursor: "pointer",
+ width: "100%",
+ textAlign: "center",
+ borderRadius: "16px",
+ padding: "10px 0",
+ background:
+ selected === item.label
+ ? "linear-gradient(180deg, #fff3e0, #ffe0b2)"
+ : "transparent",
+ transition: "0.3s",
+ }}
+ >
+

+
+ {item.label}
+
+
+ ))}
+
+
+ );
+};
+
+export default SpeedSelector;
diff --git a/src/utils/VoiceAnalyser.js b/src/utils/VoiceAnalyser.js
index 5f417d5c..fc0b3b36 100644
--- a/src/utils/VoiceAnalyser.js
+++ b/src/utils/VoiceAnalyser.js
@@ -104,7 +104,7 @@ function VoiceAnalyser(props) {
return;
}
const { audioLink } = props;
- //console.log("llink", audioLink);
+ console.log("llink", audioLink);
try {
let audio = new Audio(
@@ -372,7 +372,7 @@ function VoiceAnalyser(props) {
let requestBody = {
original_text: originalText,
audio: base64Data,
- user_id: virtualId,
+ //user_id: virtualId,
session_id: sessionId,
language: lang,
date: new Date(),
@@ -614,7 +614,7 @@ function VoiceAnalyser(props) {
"ET"
);
} else {
- setApiResponse("error");
+ setApiResponse("telemetry error");
}
console.error("err", error);
@@ -654,6 +654,8 @@ function VoiceAnalyser(props) {
// Calculate lives lost based on percentage.
let livesLost = Math.floor(percentage / (threshold / totalLives));
+ console.log("percent", percentage, livesLost);
+
// Check fluency criteria and adjust lives lost accordingly.
let meetsFluencyCriteria;
switch (contentType.toLowerCase()) {
@@ -781,6 +783,8 @@ function VoiceAnalyser(props) {
buttonAnimation={props.buttonAnimation}
handleStartRecording={props.handleStartRecording}
handleStopRecording={props.handleStopRecording}
+ setIsCorrect={props.setIsCorrect}
+ noOffline={props.noOffline}
/>
{/*
*/}
>
diff --git a/src/utils/apiUtil.js b/src/utils/apiUtil.js
index 7fd1801d..eafb48ce 100644
--- a/src/utils/apiUtil.js
+++ b/src/utils/apiUtil.js
@@ -214,3 +214,16 @@ export const callTelemetryApi = async (
"ET"
);
};
+
+export const callTelemetryDiscovery = async (originalText) => {
+ response(
+ {
+ // Required
+ target: "", // Required. Target of the response
+ //"qid": "", // Required. Unique assessment/question id
+ type: "SPEAK", // Required. Type of response. CHOOSE, DRAG, SELECT, MATCH, INPUT, SPEAK, WRITE
+ values: [{ original_text: originalText }],
+ },
+ "ET"
+ );
+};
diff --git a/src/utils/constants.js b/src/utils/constants.js
index 8dee72c2..eee189d6 100644
--- a/src/utils/constants.js
+++ b/src/utils/constants.js
@@ -648,6 +648,2477 @@ export const SubmitButton = (props) => (
);
+export const LevelBeginner = (props) => (
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+);
+
export const LevelOne = (props) => (
{
};
export const levelConfig = {
+ B: { color: "#3872C1" },
1: { color: "#3872C1" },
2: { color: "#FF1276" },
3: { color: "#FFB31F" },
diff --git a/src/utils/rFlowS3Links.js b/src/utils/rFlowS3Links.js
new file mode 100644
index 00000000..3c338687
--- /dev/null
+++ b/src/utils/rFlowS3Links.js
@@ -0,0 +1,1233 @@
+export const getAssetUrl = (filename, type = "mechanics_images") => {
+ if (!filename) return false;
+ return `${process.env.REACT_APP_AWS_S3_BUCKET_CONTENT_URL}/${type}/${filename}`;
+};
+
+export const getAssetAudioUrl = (filename, type = "mechanics_audios") => {
+ if (!filename) return false;
+ return `${process.env.REACT_APP_AWS_S3_BUCKET_CONTENT_URL}/${type}/${filename}`;
+};
+
+export const applePhonemeAudio = "c44ffd22-c205-4745-8aca-5f45efabbf4c.mp3";
+export const catPhonemeAudio = "1cca4dac-684b-48d2-9dfa-93a4c509dfdd.mp3";
+export const peaPhonemeAudio = "137c172a-a9f8-422b-aa7c-1d9126c0dcb1.mp3";
+export const ballPhonemeAudio = "0256c499-94a8-4b8a-b34f-e809a0f270a5.mp3";
+export const zebraPhonemeAudio = "eab4b8d7-a71c-4149-954b-10cfcc01f887.mp3";
+export const cubPhonemeAudio = "a4e8aef3-7819-4a54-bdcc-1939c0ee4530.mp3";
+export const icePhonemeAudio = "847f321f-f216-4ef2-96cf-073c6a28d133.mp3";
+export const garlicPhonemeAudio = "a741e634-135a-4a09-b10d-8bfea480d228.mp3";
+export const dogPhonemeAudio = "6f59dbab-f8b9-4a67-9ffa-2da756e94848.mp3";
+export const windowPhonemeAudio = "39d2112c-a9aa-4162-80ce-099f42c56aec.mp3";
+export const swordPhonemeAudio = "f04603c4-9d29-4af3-9501-a2293497f25c.mp3";
+export const eggPhonemeAudio = "3492971b-35af-46b9-9762-1336da467f84.mp3";
+export const penPhonemeAudio = "004aaf85-3641-4a0d-b40e-47de73a17a87.mp3";
+export const kitePhonemeAudio = "a951e524-2902-4314-bf10-8643adbc7e0c.mp3";
+export const fishPhonemeAudio = "82ceae1e-6c93-4e19-a7e6-a1ca7b6833a2.mp3";
+export const giraffePhonemeAudio = "4ab0a9bd-2b8f-4394-b699-15bcce561022.mp3";
+export const leafPhonemeAudio = "b182e9e7-154a-4a69-aae1-ccaa537e4a42.mp3";
+export const goatPhonemeAudio = "1de204da-3560-4231-8724-844ae084a098.mp3";
+export const tigerPhonemeAudio = "a2959a62-d104-481f-9ec1-24085ce48493.mp3";
+export const handPhonemeAudio = "b6c90012-3733-4b31-ab84-103732bcf4e8.mp3";
+export const teacherPhonemeAudio = "0f51a845-b83e-4ee6-a98a-1e5e636b599c.mp3";
+export const earthPhonemeAudio = "94269edd-1ebc-4eda-ac2d-53dfae882077.mp3";
+export const pigPhonemeAudio = "5d0a806b-ea53-40eb-8b5a-612aeae3eadd.mp3";
+export const dhobiPhonemeAudio = "c1bf5585-cce1-452d-b779-5395b4d559a2.mp3";
+export const jamPhonemeAudio = "5c22226b-bd00-421a-b6b2-5e2da30c1550.mp3";
+export const brinjalPhonemeAudio = "5f7d78c2-4922-4525-8072-11dad00ed8d9.mp3";
+export const rajPhonemeAudio = "28365392-a4cd-4a5c-83c5-cf0219cb8117.mp3";
+export const monkeyPhonemeAudio = "8fe2f0f9-6254-4a59-9528-9c07dcbdadb2.mp3";
+export const bookPhonemeAudio = "cc92f22c-aad6-4016-a256-a27e99f20800.mp3";
+export const lionPhonemeAudio = "0823900f-87fe-4fdb-8af9-d12584595b89.mp3";
+export const balloonPhonemeAudio = "87363175-7674-47b7-8216-570be800fb41.mp3";
+export const bellPhonemeAudio = "2e7212e4-5275-4d36-837a-768fe060111e.mp3";
+export const mangoPhonemeAudio = "21238b39-9e68-450d-8daa-8c0c09d8fc8a.mp3";
+export const lemonPhonemeAudio = "21a540c1-a628-497f-a6f0-eecb787d53da.mp3";
+export const nestPhonemeAudio = "b31853ee-b1c7-4535-b619-b1930482a974.mp3";
+export const honeyPhonemeAudio = "7d4eee6d-9fe4-4a34-8a74-b30de34de97f.mp3";
+export const orangePhonemeAudio = "facf1b22-9192-4d93-9741-b41c8e76db35.mp3";
+export const capPhonemeAudio = "e94ff881-cd0b-40a0-8f65-b31d79677879.mp3";
+export const queenPhonemeAudio = "202957b2-5fc6-4301-b1b6-3c44ef7c45f7.mp3";
+export const mosquitoPhonemeAudio = "cc301073-cbf4-4070-96c0-b1c92ae30167.mp3";
+export const ratPhonemeAudio = "8f122fe9-5a2f-4c73-8f0a-c4bfc661092d.mp3";
+export const carrotPhonemeAudio = "0a9aa842-7a57-4c28-8de1-6dd4a7550987.mp3";
+export const carPhonemeAudio = "9b8eb9ff-805d-4fd7-8d59-e329f2fd8cff.mp3";
+export const sunPhonemeAudio = "acddb132-e3f8-42ba-9d66-eb7e9d1e9df8.mp3";
+export const horsePhonemeAudio = "78dd9087-8f05-434d-8824-23449836c575.mp3";
+export const busPhonemeAudio = "273458af-7a32-427b-a225-bf1b8422558a.mp3";
+export const watchPhonemeAudio = "56e5635f-bdad-47cc-9095-8a9e2b48fc39.mp3";
+export const plantPhonemeAudio = "31374a49-1ef2-462a-99a1-48e549740a90.mp3";
+export const umbrellaPhonemeAudio = "e03d5bf6-e02e-432f-b756-af61c6cde565.mp3";
+export const dustbinPhonemeAudio = "92272976-3d31-4428-b3a2-bfbe28c1265e.mp3";
+export const ladduPhonemeAudio = "967d0599-7292-47a6-8300-94205b0940a6.mp3";
+export const vanPhonemeAudio = "75056fba-d6a1-41d4-82b3-10385af1dadc.mp3";
+export const guavaPhonemeAudio = "4493b265-dc94-4a23-a082-3d58a2e97941.mp3";
+export const crowPhonemeAudio = "4f4ea9cb-72e7-47d5-8cc4-27efedd53d68.mp3";
+export const xrayPhonemeAudio = "fe3aac79-9b91-4ec4-a4fe-91db7d2f060d.mp3";
+export const textbookPhonemeAudio = "2f45dc7c-b8b3-4f5f-a23d-8a5e39acb66a.mp3";
+export const foxPhonemeAudio = "a8bffefd-7268-4325-876b-66f0cda2a3b3.mp3";
+export const yakPhonemeAudio = "e7357a4d-e2f2-440a-8d4f-bc29cad93a78.mp3";
+export const papayaPhonemeAudio = "467472ba-8012-43de-a98e-e15242465c9c.mp3";
+export const keyPhonemeAudio = "934e245a-b84a-43ce-a8c4-b77bd6f58e0c.mp3";
+export const puzzlePhonemeAudio = "b3f3d4b7-3523-476e-85e0-11bc19160a3a.mp3";
+export const quizPhonemeAudio = "fe5e5c29-0cae-4522-83b2-34869fe6d9d6.mp3";
+
+export const APhonemeAudio = "36e1b035-9f56-449f-8c34-1adf7c8de2e3.mp3";
+export const BPhonemeAudio = "2cb12b8b-fe90-4c00-bbae-19201b0e5fef.mp3";
+export const CPhonemeAudio = "41e58bfb-79de-4d11-b93b-770fb41fcd0e.mp3";
+export const DPhonemeAudio = "9292355b-d9a5-4580-b273-36692a786fda.mp3";
+export const EPhonemeAudio = "a952532f-b89c-4d6c-9bbb-899fce98b154.mp3";
+export const FPhonemeAudio = "ea0898d9-a0a0-4ea5-a650-68dcaf001529.mp3";
+export const GPhonemeAudio = "5b4d00cc-eb73-49f2-8232-14f57c664f45.mp3";
+export const HPhonemeAudio = "0aeeea80-008f-4a6f-8b1a-f40c92a3a492.mp3";
+export const IPhonemeAudio = "8637cfff-4632-4c64-a83e-e1bfcddd4cf8.mp3";
+export const JPhonemeAudio = "6d9dbd0f-eb78-4723-a5eb-fc39dbe51df9.mp3";
+export const KPhonemeAudio = "a5e9e05f-3023-4574-be8f-18f7f43f64be.mp3";
+export const LPhonemeAudio = "08a09a97-ee77-4989-8dc5-e9558e86d2a9.mp3";
+export const MPhonemeAudio = "4abab969-88de-4fff-8a0f-a0eedc5c5e3c.mp3";
+export const NPhonemeAudio = "c68fdd7e-0f2c-42a2-837e-5835d975dd15.mp3";
+export const OPhonemeAudio = "8c497f32-9b10-42c3-929f-876d24d11f8c.mp3";
+export const PPhonemeAudio = "6273715b-d5b6-4914-a14b-57e59a3fabe4.mp3";
+export const QPhonemeAudio = "6a74dfba-2e15-4f80-8ac0-f180f38db313.mp3";
+export const RPhonemeAudio = "98b88457-eb3c-4c2d-89f0-f652b4847ecc.mp3";
+export const SPhonemeAudio = "094fa70a-7ae3-4c8e-8979-67d5b45b6c31.mp3";
+export const TPhonemeAudio = "9a9f2b36-b97b-42ef-860f-1c42b7c5e4f7.mp3";
+export const UPhonemeAudio = "06ec93a2-fd9b-4e51-9873-340e2394c2d2.mp3";
+export const VPhonemeAudio = "72abfcd8-c4a4-4d8f-9488-ac8f663a0f13.mp3";
+export const WPhonemeAudio = "9f4d7328-a092-4370-82ac-b7533cbf1299.mp3";
+export const XPhonemeAudio = "62a3dd27-4af2-46e8-bc76-0be49c316d37.mp3";
+export const YPhonemeAudio = "c97b065d-c31e-4ab8-b561-d13d4836de73.mp3";
+export const ZPhonemeAudio = "44ca5adb-a9ba-43b5-9611-a9c00369f454.mp3";
+
+export const moonPhonemeAudioYT = "5d7131de-a05a-4dc5-9249-4fa181a963ae.mp3";
+export const boatPhonemeAudioYT = "697f57ec-f455-438d-901d-39c3f977e96d.mp3";
+export const starPhonemeAudioYT = "d8fb4014-9116-4d08-a420-939a60293897.mp3";
+export const chainPhonemeAudioYT = "6fdb65a3-1c5d-4061-a55c-48c63458e4e8.mp3";
+export const zipPhonemeAudioYT = "5fbb5d4c-5973-4c81-bbf0-1b041d23e031.mp3";
+export const motherPhonemeAudioYT = "baaabf69-6201-4341-8dc1-6c54bf58b086.mp3";
+export const bluePhonemeAudioYT = "dd071245-eb86-46db-99df-daa3a66ae0ec.mp3";
+export const ballPhonemeAudioYT = "5ea8ae82-7d77-4876-9fe7-c5ffb625757f.mp3";
+export const rainPhonemeAudioYT = "2bd5c50c-5727-4239-abb4-6cf3dcf202e3.mp3";
+export const quiltPhonemeAudioYT = "af4424d8-fe3c-4d1c-8438-abcba0620e02.mp3";
+export const sisterPhonemeAudioYT = "6964ab5d-cbc7-45d3-a23e-60344f8dfa02.mp3";
+export const yakPhonemeAudioYT = "ac906bb2-7492-42c1-99b3-324f9467e603.mp3";
+export const chairPhonemeAudioYT = "f3d7b913-1c5d-4306-9b02-d390d66dfadd.mp3";
+export const fishPhonemeAudioYT = "01ad2b85-75db-4f57-9867-4b50821a4f17.mp3";
+export const pumpkinPhonemeAudioYT = "a73be606-455a-46d4-97e9-a5c7040ae282.mp3";
+export const applePhonemeAudioYT = "8805e310-ab74-413f-ba88-761b9fc3a392.mp3";
+export const piePhonemeAudioYT = "28ea41e4-54ee-4522-bb92-b1854a1cc591.mp3";
+export const windowPhonemeAudioYT = "fbeee191-0424-4198-aba6-5d188a379c9f.mp3";
+export const lollipopPhonemeAudioYT =
+ "1ac624f2-495d-4d96-bf52-ead276d4bc02.mp3";
+export const drumPhonemeAudioYT = "fd27767f-0cd7-4c16-8fe9-fbe2095ccd87.mp3";
+export const nestPhonemeAudioYT = "2b658c87-9325-46ae-882d-ad9bfd8f984d.mp3";
+export const orangePhonemeAudioYT = "b8cb62fd-50f2-4f0d-9156-4d1eed5d21be.mp3";
+export const cloudPhonemeAudioYT = "71984b09-190b-4fdc-8096-c4b168ada080.mp3";
+export const cornPhonemeAudioYT = "e28ca36f-661b-42de-b7dd-ae64dff8eb3e.mp3";
+export const umbrellaPhonemeAudioYT =
+ "7181b745-b09f-4680-94fa-bc752ae06585.mp3";
+export const monkeyPhonemeAudioYT = "ae42e400-7d52-45de-83bf-f28baae77f09.mp3";
+export const vanPhonemeAudioYT = "71f47d42-6e25-4d4f-9596-1b0cfe03e390.mp3";
+export const iglooPhonemeAudioYT = "76572697-c5ec-4a51-83d9-bbef8381402e.mp3";
+export const foxPhonemeAudioYT = "dafeeeec-3f20-4804-91c7-195424b5aa8c.mp3";
+export const rainbowPhonemeAudioYT = "91fa4537-0b69-4830-bf10-aa56d229ff58.mp3";
+export const treePhonemeAudioYT = "27d37270-d2b1-4505-9dea-7d16e7d7f08f.mp3";
+export const treasurePhonemeAudioYT =
+ "724508f5-c5b3-405d-bae7-d31d362bb37a.mp3";
+export const coinPhonemeAudioYT = "c7131e3c-3d4b-4cf3-ac26-44cbde9ba1ab.mp3";
+export const sawPhonemeAudioYT = "a242d2b6-c8e9-4672-be6a-5e6b406d09d6.mp3";
+export const jamPhonemeAudioYT = "3b9c2371-4a60-49c8-8411-43be1b870041.mp3";
+export const grapesPhonemeAudioYT = "a6eff47b-4a3a-4935-bcd9-958543aa26f1.mp3";
+export const sheepPhonemeAudioYT = "78921841-6a6e-48a6-9a42-4ec3176bffe7.mp3";
+export const hearPhonemeAudioYT = "b7a36c03-44c0-4082-b806-ab293a73d899.mp3";
+export const beePhonemeAudioYT = "314486a1-8de7-40c3-96e4-090b8ee0fa90.mp3";
+export const eggPhonemeAudioYT = "fd04ca68-9c1e-4924-9bf6-67cc6d17576e.mp3";
+export const carPhonemeAudioYT = "319ef759-b656-4bcd-92e4-653e6ed8e57d.mp3";
+export const handPhonemeAudioYT = "1b62af74-516a-412e-a049-28b6f4b6fc31.mp3";
+export const singPhonemeAudioYT = "b8aa7950-7985-43d1-bac3-12773bcd762c.mp3";
+export const sunPhonemeAudioYT = "97295ef6-ce46-4612-828e-7a3ca295129e.mp3";
+
+export const CrowTwentyThreeImg = "7039f764-a61c-429f-9aba-890639d88161.png";
+export const teacherEightImg = "d2d2ff47-a608-4cb0-ac67-41f3a26ce308.png";
+export const peaOneImg = "e8711602-20dd-4dc8-9334-c14edd313865.png";
+export const dogSevenImg = "b6b282c7-7095-40f8-849f-c39c2ebc5173.png";
+export const orangeFifteenImg = "12802045-cff7-44e5-a12f-d36a9909117c.png";
+export const appleOneImg = "f83e7d27-4bb7-4ff9-815a-bfdc39fb6198.png";
+export const dogFourImg = "8a6e7ec1-913e-4893-865d-904a9b9eb24d.png";
+export const tigerTwentyImg = "eda4132e-0599-41b1-9046-f7cd35a25885.png";
+export const carrotEighteenImg = "ec2be172-44c3-48f8-9b28-2f89f16c2fbf.png";
+export const busNineteenImg = "e3ab7e88-fb96-4b67-9789-a0e9a0838f78.png";
+export const kiteFiveImg = "acacfe44-79a5-4f7d-a438-6ecb6bde7e0c.png";
+export const penFiveImg = "b44ad14e-db23-45db-913c-6b44a17164d5.png";
+export const queenSixteenImg = "5793d1b1-3e39-4c24-86ac-b4475f539d35.png";
+export const umbrellaTwentyOneImg = "f43e5389-ab25-4998-b28b-03aef23dbd02.png";
+export const watchTwentyImg = "ed06a69f-fe5a-4791-86b0-77abbcafe0e3.png";
+export const earthEightImg = "30df4040-68e0-4b2a-930c-b31b33fc7336.png";
+export const LionTwelveImg = "a2e2d9c9-dd26-4eb7-b404-e65f6224bc18.png";
+export const penFourteenImg = "7a25426c-4441-427e-a4f1-6f7253a98bdb.png";
+export const tigerSevenImg = "c5c075e7-9124-4007-b0cb-57130dbad84d.png";
+export const capSixteenImg = "bc3cdede-0e62-40e5-bdb4-f42c2c4eac5f.png";
+export const plantTwentyImg = "0b88a768-2bc6-4a12-857b-5c5ac154dc23.png";
+export const horseNineteenImg = "beb076e4-8fee-4d4f-b565-c61ace7f6aa2.png";
+export const goatSevenImg = "6acdec07-99d6-4e22-8bf6-f15404374f72.png";
+export const rajTenImg = "8d3a4053-f9ee-4b23-b56a-2e5c231a7cf4.png";
+export const girraffeSixImg = "759bd706-d765-40cb-8d80-20d40090ab09.png";
+export const cubTwoImg = "decea96c-15ac-4b91-88db-09476e9dcda7.png";
+export const yakTwentyFiveImg = "8edc33ea-fc3e-4d6d-b837-5c9b0803a479.png";
+export const HoneyFourteenImg = "f0728d4d-66e8-4ae4-93e0-03a02651508f.png";
+export const kiteElevenImg = "9d200529-4f86-43a4-b3d1-fe2fcc602524.png";
+export const BookTwentyFourImg = "c3816e74-6e00-462d-b74e-7d79209d6d42.png";
+export const brinjalTenImg = "97860ee6-7856-46c8-94b6-cebe38208871.png";
+export const mosquitoSeventeenImg = "924b819f-12f5-466a-b1bf-5ef01c492c77.png";
+export const NestFourteenImg = "a8292cbc-5e8e-42bc-920d-ef5a437f4a88.png";
+export const GuavaTwentyTwoImg = "aa8fd151-5ad5-492d-b366-ae68d0140b02.png";
+export const eggFiveImg = "a5e3a32d-0824-480f-b089-48841fd76850.png";
+export const zebraTwoImg = "98376705-66ff-4974-b934-fa754ee01e2d.png";
+export const swordTwentyThreeImg = "88b235ac-5d90-4fe8-b670-87a4f619ff54.png";
+export const zebraTwentySixImg = "55712e35-97cc-4ac4-92e2-1174e0d36720.png";
+export const KeyTwentyFiveImg = "efa597e1-68f8-4eff-bc53-2a7729bdf2c6.png";
+export const LadduTwentyOneImg = "75508824-783a-41cb-998b-9dbae9833bb2.png";
+export const DustbinTwentyOneImg = "7f77d88a-ee57-4822-a38e-fb49387ee4a3.png";
+export const sunNineteenImg = "932a2d94-d50a-4b89-ad1d-dcaa22704009.png";
+export const swordFourImg = "4a9aeab9-446b-414e-8ad7-a15cd6b1d97d.png";
+export const pigNineImg = "d44bc567-ab2a-4981-b14a-b49c993e014a.png";
+export const mangoThirteenImg = "45746d7b-258d-4ef8-8156-2dcf0540c5fa.png";
+export const papayaTwentyFiveImg = "5699cb1c-9bbb-42b9-a6e9-b59dc22fcac9.png";
+export const carEighteenImg = "9a022d9e-b689-424d-9f82-e89bef486563.png";
+export const jamThirteenImg = "399fdf90-3734-4914-a0d4-ad795b6e4264.png";
+export const catOneImg = "b5a39599-5775-4560-8fd7-c21c707af29c.png";
+export const BalloonTwelveImg = "140c7eca-db28-4112-8fd2-eb7a7bb7fed7.png";
+export const foxTwentyFourImg = "c610f7f2-a7dc-4a11-8ed3-715f48ed43a2.png";
+export const lemonThirteenImg = "7025566e-4bfb-4206-b651-1702a140042e.png";
+export const dhobiNineImg = "0b3fd1ed-6d46-458b-b7c5-bfa4db6ef7b4.png";
+export const fishSixImg = "83cc685d-1e1b-4698-8e5e-7ad5c841a414.png";
+export const bellTwelveImg = "01ad1df8-968d-4e7d-afc4-244bf806202b.png";
+export const xrayTwentyFourImg = "8639ec61-af2d-4522-b0b3-559b20f7c334.png";
+export const bookElevenImg = "e34a6ae5-5f9b-445e-8951-8fdbdb626882.png";
+export const catThreeImg = "58b72554-5d0e-4ada-a0d2-604973678483.png";
+export const VanTwentyTwoImg = "a47dd1cb-3a74-4b1c-8f49-61c316a251fa.png";
+export const jamTenImg = "bf1a0eb2-fa55-4e72-b2d9-dbe7b28e6620.png";
+export const iceThreeImg = "75b45194-1793-4531-9e5c-3659bcac2fd9.png";
+export const monkeyElevenImg = "6365521b-8c95-4f03-9205-b61cb5bc154b.png";
+export const LeafSixImg = "43333fd8-4232-4add-93e4-953f8df1f6b9.png";
+export const ratEighteenImg = "c6c8c6c9-a43c-4575-89e9-e4c5b7c70e6a.png";
+export const handEightImg = "c1500135-f677-4b94-95d9-6c3660d221ca.png";
+export const garlicThreeImg = "438ceb95-be87-46ff-95dc-44e38859482b.png";
+export const PuzzleTwentySixImg = "41169c67-fedd-4f34-b983-3a41393bb178.png";
+export const ball = "42c3e65e-8667-4956-b860-c2547e0a43d7.gif";
+export const window = "1f785e37-aad0-4a59-a13e-24265e312afd.png";
+
+export const yak = "fd090f8c-0702-40d9-99e9-d1bbe75e014f.png";
+export const sing = "b78ca4cc-05fe-4d65-8ee8-b3cab2056a6d.png";
+export const saw = "7fa4a172-4165-4b1c-a46b-2713bab40572.png";
+export const ballTwoImg = "94bcdb2e-6ea5-4b6f-a8bf-8ef12ba5e24f.png";
+export const umbrella = "d62c6de5-d2f8-4035-81b7-6e7072af87fd.png";
+export const barbecue = "470aa619-37f2-4389-9daf-148d67bdcb5e.png";
+export const corn = "574ae541-f2ea-4fde-9aa1-5e2e9cc1f929.png";
+export const chain = "1c6e6bdd-b4ee-4fa0-aa50-1a6c4dae5469.png";
+export const sister = "f4035b9e-7b13-4b79-9422-3df944a89aaf.png";
+export const sheep = "551cee58-e9b2-4abe-ad1b-e8c1bad082c6.png";
+export const igloo = "c97a2021-acd0-4b76-ac07-2f372083929c.png";
+export const book = "60f9e94b-2e20-4468-af3b-704e2e2ddc98.png";
+export const motherGif = "f40fa26f-0ff1-4f35-a638-a4572739e189.png";
+export const boat = "37d3a5fc-2930-4613-a25f-2a386e68bd29.png";
+export const bee = "aef5ce6e-afae-4cbb-8d0d-2f249bec0f44.png";
+export const quilt = "39c1c701-44c3-4ef0-ad62-44965fbaa8c2.png";
+export const star = "110c4502-8e8c-4c9f-b86a-e4b31689d31e.png";
+export const fox = "eb1ac5f8-8c7f-43ca-8e56-c388ec9749c1.png";
+export const hear = "762ec2a2-4e49-46be-a4b2-c04f3d2eeab6.png";
+export const egg = "bed83726-832f-4090-be2c-b3c1cad76c62.png";
+export const windowFourImg = "435db5bc-066b-4e7e-91b7-a51e317ce82a.png";
+export const tooth = "453ed734-cc8d-41ce-bb82-b22b32f277a0.png";
+export const cloud = "3b7fd608-3587-4895-b173-b78ddf6cf635.png";
+export const windowGif = "1f785e37-aad0-4a59-a13e-24265e312afd.png";
+export const chair = "0bedc1ea-acb0-49c1-bf5d-fcdf35547bdb.png";
+export const coin = "0fcef35e-be34-438f-aa27-26bbf8333cb0.png";
+export const jam = "b977561e-90ff-414f-8b80-4b5cd6341efb.png";
+export const apple = "664cfadb-e7c1-4b7b-938d-94a11d0dd24e.png";
+export const grapes = "0f20a751-5ed3-4603-83e8-76bbecd3a8c7.png";
+export const hands = "89662c57-b8d9-497f-b9be-82a75a808620.png";
+export const orange = "88c75884-0053-4c4d-b4ed-8c529794cbeb.png";
+export const moon = "6ad3de93-0f5d-4644-ae12-06c431bdc89f.png";
+export const pie = "5136ebc0-e568-4ae6-9226-bb7db1d00838.png";
+export const van = "dff7b73d-8cc5-4ffc-846f-3783a48f51f6.gif";
+export const lolipop = "f4fb9b99-3263-4da6-b0ef-4e73ab3579e1.gif";
+export const tree = "2ae72801-0309-4d7e-bd76-480d1c3f1017.gif";
+export const nest = "2e7c1d61-8ab7-4f5e-aeec-9701ce5dca76.gif";
+export const car = "f2a92815-a9d8-4702-8849-f823c849d11e.gif";
+export const monkey = "9a3ce608-fae5-4318-86eb-3064107716c7.gif";
+export const sun = "576a56e4-159b-4d70-a27e-791fc9ff4280.gif";
+export const pumpkin = "8adc18b7-6f32-4f5d-a762-5a871be506fe.gif";
+export const fish = "20edd691-eece-458c-930c-748b5a0a9158.gif";
+export const rain = "cb921941-5e59-4e4a-8501-4937520bb43c.gif";
+export const rainbow = "df1cd94a-cb12-4384-a6ae-55174199d411.gif";
+export const treasure = "3903bbf2-b1f3-48b1-9248-9b0b0c641dba.gif";
+export const drums = "1bf29dc7-c3c1-40cc-b6f8-6ec43cf56bd2.gif";
+export const ballGif = "42c3e65e-8667-4956-b860-c2547e0a43d7.gif";
+export const zip = "141ac1fb-8acc-4ede-8396-f62722e413b7.gif";
+
+export const RA15b = "b90c0403-a7cc-4f54-a868-07931331e9b2.mp3";
+export const RA5c = "6bb5e5e4-34ca-4241-91bf-3c236eae63ab.mp3";
+export const RA5b = "40fff886-bac1-4f59-b489-61616ffd4c4e.mp3";
+export const RA15c = "4d37819e-8505-4446-8b90-9114f0d77360.mp3";
+export const RA9c = "2e53112a-fdad-4547-902b-115a19b1f138.mp3";
+export const RA9b = "945b70ba-74f2-4b8d-9c5e-8d2075075821.mp3";
+export const RA8b = "47e8480c-a545-4d0b-9006-e23742db537d.mp3";
+export const RA8c = "e540c846-568e-44ce-847f-2a3aa5a04c48.mp3";
+export const RA14c = "831f9075-9a84-4bc3-8856-c26453ad044d.mp3";
+export const RA4b = "f63c7dcf-4b5b-4c8a-93a2-0849a24f6eb2.mp3";
+export const RA4c = "cbef75bb-863d-4dd3-a2e5-f98e4f2bbaec.mp3";
+export const RA14b = "75327be9-a673-4773-aa7f-219616f2b202.mp3";
+export const RA13b = "a63a858e-51c0-4fc2-a4a2-2dd34beb9c85.mp3";
+export const RA3c = "6489cabd-4687-4b59-a735-ab0a37196d14.mp3";
+export const RA3b = "a019c6a7-d403-4447-b19a-91b4cc4d501c.mp3";
+export const RA13c = "febd2261-bcd2-4a41-b8c1-c180be23e625.mp3";
+export const RA12c = "98a69048-5af9-4f56-a74d-ae4ba278010f.mp3";
+export const RA2b = "33967767-bc70-4159-968d-a7a54c8560ab.mp3";
+export const RA2c = "6701510b-80df-4341-ab63-12cbb4ad4367.mp3";
+export const RA12b = "e0d7921d-ecc1-4acf-857b-5d0fe54cc1d7.mp3";
+export const RA11c = "2b8eaa9f-4c29-4491-be28-033777f74bfd.mp3";
+export const RA1b = "0a312bf7-0bf7-437b-8f5c-36102c490480.mp3";
+export const RA1c = "66841c5f-56fa-4a7a-91f9-20b03900b929.mp3";
+export const RA11b = "d973da95-dff2-407d-8e5d-3994be546965.mp3";
+export const RA10b = "f0d650f0-56f7-4989-91fc-a79f9c1c25d2.mp3";
+export const RA1ato15a = "2c6ac74c-a71f-427e-93bd-20b3412d662b.mp3";
+export const RA10c = "95ceb4c4-9d51-4bff-befd-a6e9cb904224.mp3";
+export const RA7b = "2bf2848a-f28f-44f1-8d44-9c6dfe0042d9.mp3";
+export const RA7c = "341f85d3-ff9b-42b7-ba2d-0fe385fbc032.mp3";
+export const RA6c = "c2befd54-1d58-4e81-ae74-bfae185decef.mp3";
+export const RA6b = "47bd0fe3-dcae-409a-962d-1d5358b41f2b.mp3";
+
+export const R7_2 = "602b555d-bee8-4e7f-8872-e0740d038823.png";
+export const R5_1 = "a1f58954-917b-49fa-8340-c94776cdea7b.png";
+export const R7_1 = "48e2aec4-eab2-4606-8bbb-4689258767a2.png";
+export const R5_2 = "320d2a53-124f-4237-8c2a-6285d1a0e58b.png";
+export const R1_2 = "6d6010cc-abca-4741-802a-c81b6c29f9de.png";
+export const R3_1 = "5e59a23e-158c-40a0-8135-cbc399493293.png";
+export const R1_3 = "01714ddd-d373-49e7-9db8-df36381ce625.png";
+export const R1_1 = "96e197fb-4132-454b-bc86-711040ee0b9f.png";
+export const R8 = "7a9576ff-9369-4c97-9eb2-5d25ec75848d.png";
+export const R9 = "936b8806-5335-46f8-a6cc-b495df067a2a.png";
+export const R3_2 = "b475906c-20f1-453f-9561-171fe7436ed7.png";
+export const R6_1 = "a1ed0c41-e416-4bd1-a7cf-7e7904585c14.png";
+export const R14 = "feeb8fd6-f2b5-414c-9b92-c13348c47752.png";
+export const R15 = "8957953d-efbe-406c-81a9-e42e85077707.png";
+export const R4_2 = "4d64dedf-9897-4f68-8590-8ee06c9ed430.png";
+export const R6_2 = "c9059f26-762c-4858-a8d3-e8033d292c3b.png";
+export const R4_1 = "6535e0cc-d5f9-4b66-825d-1fca88d0545e.png";
+export const R12 = "74b1cb29-899f-40eb-908a-2dacd1dcc850.png";
+export const R2_2 = "ceaeb019-f6db-43de-bc3d-6a6e7857081c.png";
+export const R13 = "30a202e9-f5cd-4e9c-bbe0-86b25ffa8d70.png";
+export const R11 = "23bf77ad-7eef-49a9-a7a2-8300d7d0704e.png";
+export const R2_1 = "addbd99a-fd79-4a2f-a5b9-75e3ba282431.png";
+export const R10 = "1d7c2915-836a-48ff-900a-452fb08a8693.png";
+export const R10_1 = "ec402d39-86de-443c-aa2f-a58f7f44c19b.png";
+export const R12_2 = "7b02085c-9507-47fe-ad78-ac534a07cb1a.png";
+export const R10_2 = "af4a1333-2d59-4540-99b9-c139716f8e7f.png";
+export const R12_1 = "696d4c7d-8227-49b2-9776-4fdc9321ec80.png";
+export const R8_1 = "4ed96594-d069-4ecd-a47e-952d294da635.png";
+export const R14_2 = "66ff57c6-f7ed-4ddd-a21c-14a53c153dbf.png";
+export const R8_2 = "459409a2-d978-49d3-a6f8-1923ee52dae4.png";
+export const R14_1 = "2961d801-eb4d-4cbe-8efe-afd04191f9fe.png";
+export const R4 = "5eda1be9-81d6-4a43-8a6a-e56730fdaef7.png";
+export const R11_2 = "ed4e7893-0750-4aab-88b8-8c46892dc50b.png";
+export const R5 = "4523d961-ef4d-40ee-a829-10678f76e521.png";
+export const R13_1 = "2247c168-bcfb-4be3-806e-0c46b6c246c7.png";
+export const R7 = "136453a9-46c0-4277-baa7-756a2d604c96.png";
+export const R11_1 = "38d11a7c-bd6d-4c13-85ba-d05379ec1f39.png";
+export const R6 = "6db45d65-03ed-4f21-a489-cac58c5e3180.png";
+export const R13_2 = "9ad513a1-88a6-4cd7-a220-9215b17ca7d0.png";
+export const R2 = "84811ade-c50f-491c-b6ff-7680ad24208a.png";
+export const R9_2 = "ee63530d-514e-4749-9a6a-beac7fb31856.png";
+export const R15_1 = "2c866382-3c4b-492d-987e-d73aa4878223.png";
+export const R3 = "1dae0011-b1a6-4768-9cd6-2a446c3e7595.png";
+export const R1 = "e7f9320f-2735-4f06-b10a-f984b35739d3.png";
+export const R9_1 = "094fbc32-e858-4cd1-97af-8acb80e0781f.png";
+export const R15_2 = "5d28d025-3089-45d9-b396-c9aae36398b4.png";
+
+export const leafAlpAudio = "1a0c6e70-d449-4059-9fb5-392af325fbc2.mp3";
+export const featherAlpAudio = "d703a368-424b-492e-89d3-1bcac426b9eb.mp3";
+export const assetMoneyAndJewelsAlpAudio =
+ "dee29e31-c04b-488d-8a13-ba1420ba7551.mp3";
+export const foxAlpAudio = "7e726331-f455-40b3-9c91-ade8b79d5911.mp3";
+export const creeperAlpAudio = "36d5e551-2645-4d5f-b325-741cb7d0a5fd.mp3";
+export const earthenLampDiyaAlpAudio =
+ "b8df59b3-7c4a-4009-8894-85b89b1afb4f.mp3";
+export const kiteAlpAudio = "f54dcf8f-e1e4-4218-8e7b-ccf8ce0870a7.mp3";
+export const crocodileAlpAudio = "d2a6225d-6406-46f4-87fe-e363ef19d23d.mp3";
+export const goldChainAlpAudio = "85146f6d-60e1-49bb-9b75-88d8c812b7ad.mp3";
+export const bellyAlpAudio = "665b807c-e125-42d4-9283-c50d79f64782.mp3";
+export const mathAlpAudio = "1f1921ab-28ea-4b64-9e91-b48219c27fc1.mp3";
+export const kheerAlpAudio = "92c8c754-002f-4501-8ed5-2d9f1671f42a.mp3";
+export const jewelariesAlpAudio = "474d14cd-3717-4735-a73e-7659613a3f5d.mp3";
+export const mealAlpAudio = "35ef3070-c011-4ec1-ba46-950e49e8865a.mp3";
+export const cow2AlpAudio = "8d4e8b40-e5c7-440b-a396-47854ba2e694.mp3";
+export const fearAlpAudio = "8684920e-bd31-4dc5-b3dd-49d4b5ab5865.mp3";
+export const fragranceAlpAudio = "f24202a4-d4b1-45a5-9526-cd830080fc0b.mp3";
+export const jungleAlpAudio = "dd852efb-c61d-41d9-9271-c985a0545af5.mp3";
+export const lotusAlpAudio = "97a38f2b-bb3e-4e74-8b54-ab8bee6acfcc.mp3";
+export const manRingingTheBellAlpAudio =
+ "b21faecc-64fe-45d7-96a2-40f18c3fe143.mp3";
+export const hexagoneAlpAudio = "a3e36851-1dcf-4639-bb2b-aa18c7ac13f1.mp3";
+export const fiveAlpAudio = "cbfec947-c575-4d64-b987-c560dc3d6d19.mp3";
+export const medalAlpAudio = "0bd80d15-6aca-4ad5-8321-430b0a47096b.mp3";
+export const chariot1AlpAudio = "7dfc0727-ccff-4a9d-847a-ee8120af8f05.mp3";
+export const familyAlpAudio = "34c65d5b-0a61-488b-9924-5a65ea2a3ab5.mp3";
+export const frontPartOfTheNeckAlpAudio =
+ "3cebca03-bd60-4fd7-9c80-d8fbdcf23caf.mp3";
+export const cowAlpAudio = "314607d9-6d68-4db9-b661-69fd80ccbb7f.mp3";
+export const fingerAlpAudio = "048fae1c-e3e2-40d4-b152-92b2c5c68625.mp3";
+export const countryAlpAudio = "88b0f2f9-906c-4811-ac0a-92bf9338b81c.mp3";
+export const dreamAlpAudio = "77ecf439-5e32-4c64-8af8-e0a640fc8292.mp3";
+export const camelAlpAudio = "9011a27a-927a-44d2-a577-d9720d69c6ff.mp3";
+export const angryBoyAlpAudio = "d7db91c4-a94a-49ca-bf13-c08b3542e4e5.mp3";
+export const cotAlpAudio = "e40005d1-ef0a-471b-bd8d-3787e0a4d579.mp3";
+export const joyHappyAlpAudio = "6f0a9125-b154-416b-9d8f-639fa772bd79.mp3";
+export const highschoolAlpAudio = "c046f540-ec64-4e37-80a4-cc4be841279c.mp3";
+export const ladderAlpAudio = "e6913008-7b58-4bf7-99f9-6cce58f7d9b5.mp3";
+export const greenPeasAlpAudio = "25dc5a02-7214-4aed-a222-418716e3f95c.mp3";
+export const anOxOrBullAlpAudio = "b2e08305-86df-43d6-9df4-461431458a42.mp3";
+export const hairAlpAudio = "c6c5ec4f-7db5-42d6-9e32-a76a0d94a707.mp3";
+export const bellAlpAudio = "dc888d47-0fcc-4aa2-88a5-c9eb80d91a9b.mp3";
+export const kingAlpAudio = "057dc4c7-febd-4a0f-9605-c867e80b9f18.mp3";
+export const gaadhaNoImagAlpAudio = "d30f363a-e172-49a0-b3b1-50f707606abc.mp3";
+export const fanAlpAudio = "cad1f181-50b0-4972-bcc1-e1cff95367e0.mp3";
+export const fruitsAlpAudio = "587299dd-f51e-4370-8e13-e98078de7bbe.mp3";
+export const maleSheepAlpAudio = "c78dbc43-10cb-4f44-94fd-3468474bc007.mp3";
+export const elephantAlpAudio = "e0588408-f180-4012-9220-616da587c7c0.mp3";
+export const associationAlpAudio = "fcd928f7-8336-4028-903b-773afb8605af.mp3";
+export const lionAlpAudio = "a7ecfe42-4bdc-459c-8f64-18682c28207a.mp3";
+export const boltAlpAudio = "b50411a0-227b-4263-a510-84164c8d00bc.mp3";
+export const chariotAlpAudio = "8d3baecc-da3e-42d4-861f-ed6191666a8a.mp3";
+export const runningAlpAudio = "c27e8576-f5cd-44ce-aa6a-f79f6f73b3b7.mp3";
+export const rockSaltAlpAudio = "bcafb356-d716-4ff1-a960-a47a95a9ac12.mp3";
+export const phlegmAlpAudio = "8e87c582-0175-40a5-b5f9-145fd1a58fb5.mp3";
+export const oceanAlpAudio = "59126c40-1073-4838-b31a-259f6708b64e.mp3";
+export const medicine2AlpAudio = "770ae1fb-08fb-48ec-9c19-2fce6cc7e7fa.mp3";
+export const swimAlpAudio = "890b5c0b-e09c-4cd0-b0bd-d6b31a102d33.mp3";
+export const shiningNecklaceAlpAudio =
+ "8c7eef30-3729-4f01-843c-e24f7e8aac53.mp3";
+export const snakeAlpAudio = "08ccc274-a639-4bcb-a3b0-473ee6f5b022.mp3";
+export const peopleAlpAudio = "4fd1736b-d2f3-45fc-a3c8-9d97674a96ac.mp3";
+export const vehicleAlpAudio = "07b7f672-a01e-48c6-8c4b-df218cb66dc7.mp3";
+export const playAlpAudio = "091f3def-6b32-4a69-a6fb-a13c33a65053.mp3";
+export const swordAlpAudio = "eb9b822f-2182-4437-8ac6-680e99e48cb8.mp3";
+export const windowAlpAudio = "5ec1a14d-44a5-4938-a50a-b4c5af1809fd.mp3";
+export const tabalaAlpAudio = "8cb24205-349c-4678-ae0e-711ce02af7c4.mp3";
+export const moonAlpAudio = "21db8c9a-40d0-4ff3-b153-202fd832a19b.mp3";
+export const shakingWithFearAlpAudio =
+ "07094176-161c-4e3d-bdd1-8fed2cad14a0.mp3";
+export const shivaGodAlpAudio = "e5f5c8cc-6488-48bc-bb71-63d32affe0f0.mp3";
+export const wolfAlpAudio = "f1e07bfc-8c5f-4fa4-b438-6724b33da5f6.mp3";
+export const mouseAlpAudio = "121abb31-d8d6-4188-9357-d7852e9313c3.mp3";
+export const washermanDhobiAlpAudio =
+ "e1b6b280-5665-4bfb-bfc8-c6a67fe331cc.mp3";
+export const skyAlpAudio = "01ec453e-be20-40f3-8649-ef384ac6a41e.mp3";
+export const moneyAlpAudio = "7544ad70-a8f8-46a4-b769-03b74f10a0ea.mp3";
+export const treeAlpAudio = "bcd38151-6e88-4edc-ab34-7cf69691aac3.mp3";
+export const tenInASetAlpAudio = "e19fc090-cf86-4241-b940-80380a309658.mp3";
+export const roomAlpAudio = "32d2c27d-ea31-45ba-8ce4-cdf24b2bb8c2.mp3";
+export const wednesdayAlpAudio = "9818822c-1ad8-4763-81b3-cf8284fc563d.mp3";
+export const swanAlpAudio = "92985fd7-8b2e-419d-88a0-024c66afaec4.mp3";
+export const yellowAlpAudio = "e6690575-2179-43ac-aefa-9e0455de5e39.mp3";
+export const yamaAlpAudio = "6a68bce3-f147-4817-965d-5cc6434408e9.mp3";
+export const palmAlpAudio = "dbf83295-b1ec-4837-8a1b-ca3b7ce8dd8b.mp3";
+export const seedCornGrainAlpAudio = "8dd35eb5-11f4-4fcc-a127-c8ccbc2ccce7.mp3";
+export const sageAlpAudio = "d07dc6c9-d535-43f7-8396-9f2c2f2d13ba.mp3";
+export const shopAlpAudio = "f8119d3a-56cc-49a4-a592-588f7dfbbd49.mp3";
+export const purushaManAlpAudio = "5aca5100-a399-42a3-a24b-0e0f6047944d.mp3";
+export const medicineAlpAudio = "d84594a8-7ee4-4eb8-b3bc-2230bf4f975d.mp3";
+export const solarPanelAlpAudio = "d3d6d95d-0aa9-42d9-ac0a-6f47185033fd.mp3";
+export const snowAlpAudio = "5ee53bd3-afe2-46a4-8501-21721efd873d.mp3";
+export const smallBoxOrChestAlpAudio =
+ "e6acee39-68e5-4288-a833-b83b0c2bd7d1.mp3";
+export const plantAlpAudio = "a3c59c02-1fcd-4fe7-89fd-6e4f3d690b43.mp3";
+export const namasteAlpAudio = "4c6c7577-2670-4466-b9e2-6b22d8d1c071.mp3";
+export const rabbitAlpAudio = "532ee197-96b0-450c-9600-30c0f10211a6.mp3";
+export const spoonAlpAudio = "a0ce9f7d-0b6b-43dc-a6c9-d132d169c3f9.mp3";
+export const paperAlpAudio = "f9ca6881-317e-4333-90ee-f0354b0b2384.mp3";
+export const shoulderAlpAudio = "ee3f1795-42c5-4e53-8622-a4e710334136.mp3";
+export const penAlpAudio = "064d7bae-3f7b-4704-b3f6-7850e8909755.mp3";
+export const tabalaaAlpAudio = "548b92c4-c2c0-4efb-8fa5-9e11e18c32c0.mp3";
+export const thiefAlpAudio = "b5f90d89-de31-4c76-b599-80226700d4b9.mp3";
+export const weaverbirdAlpAudio = "8e34a777-2640-4afc-b3ed-fde6768916fc.mp3";
+
+//images
+
+export const fingerAlpTelImage = "4e41171e-12eb-412d-a750-311fde646f30.png";
+export const moonAlpTelImage = "174f0531-f145-4045-bcd0-b031bd5c4d6c.png";
+export const shivAlpTelImage = "e6079819-d66d-45be-a68b-83710fcd513b.png";
+export const ratAlpTelImage = "feff971d-c169-4668-969d-4f635e6b4d9a.png";
+export const countryAlpTelImage = "7fab8475-045d-46a5-b77a-8c982575ec43.png";
+export const familyAlpTelImage = "06f51a5a-7d95-449b-a38e-5a31163ed3dc.png";
+export const yamrajAlpTelImage = "58853b62-d17f-459f-ba31-4008567871b8.png";
+export const fruitAlpTelImage = "46b7f782-e11a-48d6-ac27-1a992357af88.png";
+export const swanAlpTelImage = "01fd62db-a703-4e8c-b57d-11e07ba031c1.png";
+export const treasureAlpTelImage = "69396d88-9c33-47f7-b6b8-eba9ffd1680d.png";
+export const lotusAlpTelImage = "e745d4ff-5613-4671-af81-9842ce86ed3d.png";
+export const foodAlpTelImage = "8d7bf1a3-395c-4741-a820-fffd05deb9c6.png";
+export const colorpencilAlpTelImage =
+ "d8549b66-fab3-4c1c-ae94-8256631db89b.png";
+export const horsechariotAlpTelImage =
+ "e5206af3-810d-4348-83a0-0c5193c155dc.png";
+export const swordAlpTelImage = "88796552-7a16-4b9c-ac03-cfab609cd3d2.png";
+export const drumAlpTelImage = "0e9e8c57-0509-4d4a-8586-01a9e3841b12.png";
+export const hexagonAlpTelImage = "2cd99ca5-9c96-4d5a-91c9-5f5c3125b506.png";
+export const necklaceAlpTelImage = "1dbc4083-68a5-4b0c-bd34-82b298936b81.png";
+export const fiveAlpTelImage = "26cea228-bf75-4075-a0aa-c3fcd0707bab.png";
+export const jewelleryAlpTelImage = "8856c235-bb2a-4eb8-9e63-b5a5dc005b33.png";
+export const happyAlpTelImage = "08dab3fe-c865-4e38-ad51-d1dd06308e6d.png";
+export const childrenassociationAlpTelImage =
+ "e534c038-60da-44d9-90b6-00ee33e693f4.png";
+export const fanAlpTelImage = "c991bcc4-0d7f-4919-890d-31c62fb638c2.png";
+export const thunderstormAlpTelImage =
+ "f931eb29-359c-4c36-8300-de325d9eedb1.png";
+export const monkAlpTelImage = "1607cce6-6288-45de-96ff-8217c4dc1d88.png";
+export const birdAlpTelImage = "b02aca59-0376-4de2-9cce-a077b9db0a73.png";
+export const leafAlpTelImage = "eea77b2a-f2a2-49b5-a46e-b3ee6ddfc917.png";
+export const kingAlpTelImage = "4f379beb-f279-4da7-b88a-56ae3f1f8f73.png";
+export const cerealAlpTelImage = "7dfae44d-906e-4045-bcef-48aa1e08fb05.png";
+export const fragranceAlpTelImage = "87cc656d-5a20-4afe-901e-386abc700dec.png";
+export const weplayAlpTelImage = "8cf1c600-16c2-4c89-a46f-cf8bc7bf72b1.png";
+export const fearAlpTelImage = "8d42c984-ef45-4f05-a4f5-27bb88c84e59.png";
+export const foxAlpTelImage = "cad89d2f-5895-463a-9ade-a5fd3cb33682.png";
+export const featherAlpTelImage = "a7a01039-7e0e-4144-b2c6-5399545344e4.png";
+export const hairAlpTelImage = "fe2ab25f-06b0-441a-928a-db166e025c95.png";
+export const lionAlpTelImage = "9392ed88-625b-4c08-928c-642a1c168b94.png";
+export const windowAlpTelImage = "19980eb7-1975-406e-8197-ac40d82136da.png";
+export const kiteAlpTelImage = "d1596a61-011f-425a-b4bc-8431c072d968.png";
+export const schoolAlpTelImage = "81aab210-6c49-4f56-9e13-ea8227f8e16b.png";
+export const medicineAlpTelImage = "58b14867-8dc9-4797-8229-1ca9ee474117.png";
+export const coinAlpTelImage = "1e05c89e-d93c-48cd-8626-e2d34b354ee2.png";
+export const mathematicsAlpTelImage =
+ "53ed7494-b7e6-4e0f-a5b7-e7f5ce89fe83.png";
+export const coughAlpTelImage = "ee9cc62b-0312-4eb1-90cd-a7d63f593237.png";
+export const sheepAlpTelImage = "5ebd3471-7774-46e1-a7d3-61efa82056f4.png";
+export const manAlpTelImage = "631a44eb-2187-454e-bbcc-98004113b060.png";
+export const peonAlpTelImage = "30ac3c0a-5150-4943-855e-d57893de71a9.png";
+export const solarAlpTelImage = "bcd68769-350b-43c0-8b23-8f640e38b66e.png";
+export const peasAlpTelImage = "87de9f6b-5204-4705-a573-3b4cb9959084.png";
+export const pranamAlpTelImage = "55ce1248-16e2-4e43-abd4-260f6e3d5a78.png";
+export const stewAlpTelImage = "2cf2c9bc-69f6-42fc-b9eb-7c38202d3200.png";
+export const plantAlpTelImage = "7042677c-21d3-4dfb-8629-9c970b1b74c4.png";
+export const crocodileAlpTelImage = "81462991-970b-4f7d-93e1-d66a4394cbcc.png";
+export const spoonAlpTelImage = "4eeb5ded-7c95-4b98-8541-f11d7185674c.png";
+export const beachAlpTelImage = "38780657-557e-4471-afb5-252eb508c39a.png";
+export const candleAlpTelImage = "525fb136-fc31-404e-beac-ecc2f63bf046.png";
+export const shoulderAlpTelImage = "a29f4199-e57b-4d7b-afec-8979083484e1.png";
+export const elephentAlpTelImage = "bb82ad72-0cc2-49f2-a506-95c105265c06.png";
+export const yellowAlpTelImage = "ce1282f0-e52b-4bb1-88e5-cae06be683a0.png";
+export const saltAlpTelImage = "c3d3a849-781f-48a9-9a8b-0c1b5928793b.png";
+export const treeAlpTelImage = "4cf124a2-bc27-4dec-a63e-f070551d822e.png";
+export const peopleAlpTelImage = "e77999c7-1524-4440-9707-8c4d4b0a1ca1.png";
+export const rabbitAlpTelImage = "c1d9146a-2e12-457b-b84c-e7830c722ccf.png";
+export const cowAlpTelImage = "04a83da3-a1d9-4ddc-a77d-6cd53fe257a4.png";
+export const angerAlpTelImage = "acbda781-1dd1-40e4-b275-e34c42f0dc83.png";
+export const swimAlpTelImage = "8470766e-10ca-437b-871a-2ea9d626800d.png";
+export const wednesdayAlpTelImage = "84d7753a-bec9-4054-9376-5e2dfc41986d.png";
+export const parrotAlpTelImage = "3b547c70-f8fc-49e4-9743-ff07a81adc1c.png";
+export const snowAlpTelImage = "7dc423e8-2894-4711-a1af-ca58a5255c7a.png";
+export const bellyAlpTelImage = "7b315f27-2f6e-4da8-8102-b567153655e4.png";
+export const bullAlpTelImage = "3f22de14-e65c-45e4-ac4a-e0d3ebb03b67.png";
+export const tabalaAlpTelImage = "830d0adb-c5b1-4b91-830b-d12a10162a44.png";
+export const snakeAlpTelImage = "ae0f04f8-4ca1-42a7-9387-99a87529c425.png";
+export const camelAlpTelImage = "5e6a9174-e884-472d-9869-7cbc8f639ee1.png";
+export const dreamAlpTelImage = "d3a8ec04-90b9-4ea7-937f-fce881f41605.png";
+export const penAlpTelImage = "6533b3e2-e720-4792-aefa-b27690a9c95b.png";
+export const forestAlpTelImage = "9fd9f701-c9f9-4784-987b-a9bcd86045c9.png";
+export const skyAlpTelImage = "442d99d0-77aa-4bcf-84b2-93261afde1c9.png";
+export const bedroomAlpTelImage = "39a0b5b1-75dd-444f-a3c9-1366041b8c3c.png";
+export const carAlpTelImage = "b3942546-0c28-48a9-bfd0-5b9042a20562.png";
+export const shiverAlpTelImage = "b26193c5-936b-4be0-b44b-ffdb845d8a08.png";
+export const neckAlpTelImage = "0f4c9b34-671d-484d-97a6-3ff5182782dc.png";
+export const boxAlpTelImage = "601e2943-c870-4dd8-9109-1af83476d37c.png";
+export const stomachAlpTelImage = "3bd29efc-cd7e-476f-a6bf-ae7b9c62a6e0.png";
+export const medalAlpTelImage = "97469169-e61d-4042-8657-1929b96c841f.png";
+export const paperAlpTelImage = "f1b108b7-5cd1-428c-8198-b5b6100205d0.png";
+export const runAlpTelImage = "fb5bb38e-d329-4631-a897-a2cc9d57b3cd.png";
+export const stairAlpTelImage = "1987c556-46e7-4fe0-ac66-c97b1a1b86a3.png";
+export const couchAlpTelImage = "58d17ace-20cf-4504-b0de-5706604f84b7.png";
+export const bicepAlpTelImage = "75d35179-e97b-4fec-aa32-b8aadcadc1bb.png";
+export const sheSingsAlpTelImage = "9be3f2de-f286-450e-85ca-fd634ea8829c.png";
+export const tinklechainAlpTelImage =
+ "1c6e6bdd-b4ee-4fa0-aa50-1a6c4dae5469.png";
+export const wolfAlpTelImage = "324c81d3-5431-4933-9ae1-37384f2ba2d8.png";
+
+//short audio
+
+export const alphabetWithYellowAudio =
+ "53a69e16-357a-404d-8e79-ea3b772756b1.mp3";
+
+export const alphabetWithScaredBoyAudio =
+ "d74c958f-0d96-41ff-a87d-3e5c230e8a83.mp3";
+
+export const alphabetJungleImageAudio =
+ "1446aa62-ffb1-434e-8b38-54c86903ac63.mp3";
+
+export const alphabetCreeperImageAudio =
+ "c94eeccc-89ce-4dec-a467-a14bde879caf.mp3";
+
+export const alphabetHexagoneAudio = "9d576b60-635e-4927-b8d8-133bd3897487.mp3";
+export const alphabetWithFruitsImageAudio =
+ "aea35287-43ca-486f-8d85-cadd7bad437c.mp3";
+
+export const alphabetWithCowAudio = "8da80e6a-8310-4ccc-9a00-dc6f48d6efc0.mp3";
+
+export const alphabetTreeImageAudio =
+ "ae71b5cc-77b0-4d16-8de6-d3d3900a4c24.mp3";
+
+export const saAudio = "c504e802-3ae5-4dea-8127-39d3788cc6b1.mp3";
+export const SHAAlphabetHexagoneAudio =
+ "298244e0-612b-4565-a2a9-388739d5cd18.mp3";
+
+export const wordWithCowAudio = "1013f5d5-ec16-42b3-8ede-1087e1e3daf1.mp3";
+export const kshaAlphabetTeacherImageAudio =
+ "272104b3-a43f-422b-b554-cdb53002c591.mp3";
+export const moneyImageAudio = "3c06850b-2cf3-4302-bc82-81443eacc1f6.mp3";
+export const kaWordBearAudio = "cf734fe7-d5dd-4b47-8a33-0871b521dd42.mp3";
+export const u5thAlphabetAudio = "57a40716-3513-4152-a0aa-7d6f1e922c47.mp3";
+export const wordWithYellowAudio = "253c1d0e-0fea-466f-871e-b4ae764542aa.mp3";
+export const wordWithFruitsImageAudio =
+ "96db0763-4993-492e-906c-159b2099bf0f.mp3";
+export const taAlphabetWithThiefAudio =
+ "85275bac-f325-47a4-97ee-a6204a9090ef.mp3";
+export const wordMoonImageAudio = "43de657a-118f-4b8e-b17d-23575d16b9d9.mp3";
+export const oWordWithCamelAudio = "30110403-1c44-4dde-8172-753ffd4aef1b.mp3";
+export const thakkaWordWithThiefImageAudio =
+ "ca49bca3-6395-470e-a354-00bfc3d13aa4.mp3";
+export const wordWithGlitteringChainImageAudio =
+ "eac96cc9-a4fa-4204-adfa-c857c03c5d50.mp3";
+export const naAlphabetWithFoxImageAudio =
+ "ac29536d-5c4e-4154-9879-9945d54c4880.mp3";
+export const paAlphabetWithCrackersAudio =
+ "4c07f234-632a-4c2b-a1bd-bda8adc543c7.mp3";
+export const khaAudio = "d5e29a8c-754e-4c2e-b02e-0b7f65320de9.mp3";
+export const uu6thAlphabetAudio = "a6b4a1bb-d237-4388-b0f9-f5cdcdb15661.mp3";
+export const raAlphabetChariotAudio =
+ "8c73a825-f48f-447f-a916-daea723c559b.mp3";
+export const naAlphabetWithMoneyImageAudio =
+ "004412f7-7404-400e-a6bc-34637c2384ac.mp3";
+export const wordJungleImageAudio = "a54bc4e3-e40a-4a80-990e-b2253a8ba8ad.mp3";
+export const ru7thAlphabetAudio = "42c432dc-fbbe-452a-a517-c4b77d467b42.mp3";
+export const saWordWithGoldChainImageAudio =
+ "3a66001e-8828-4d56-9110-553b882b0532.mp3";
+export const khaWithSwordWordAudio = "697a54a7-4b44-4396-9364-1a72b1ac5b75.mp3";
+export const oo12thAlphabetAudio = "98839aa9-8e57-48d9-85f4-f07ea2ee51c1.mp3";
+export const wordWithScaredBoyAudio =
+ "4a0eebac-4c01-47a2-b52c-dc7aa83406d5.mp3";
+export const wordFor5thLetterInKaAudio =
+ "9cbb790b-fd5d-438e-9bf5-dfa176ac8eef.mp3";
+export const taAlphabetWithHeadImageAudio =
+ "7c86aed0-383b-4f1a-9728-fadb37935f3d.mp3";
+export const wordForChariotAudio = "377a2db7-619d-428d-9ce1-23d190c7fd93.mp3";
+export const ooWordWithRunningAudio =
+ "0366b325-70e7-4a4d-b638-f4ac84517114.mp3";
+export const wordWithMaleSheepAudio =
+ "0f8c8b38-67d1-47e1-809e-7fda1227cfd4.mp3";
+export const wordCreeperImageAudio = "baea241b-1dbb-4364-8837-999c4ae27503.mp3";
+export const shaMoonAlphabetAudio = "fea75236-8160-4044-a7f3-4f86048b0c65.mp3";
+export const thaAlphabetWithGlitteringChainImageAudio =
+ "1b0d77c1-f1f9-4793-ab0b-2d3dc1f07e27.mp3";
+export const wordWithYamaImageAudio =
+ "0a524844-2ee6-42ef-b4f7-a38706ded5ea.mp3";
+export const ru7thAlphabetMonkImageAudio =
+ "6774b432-a6fb-402b-be71-680c5bf94487.mp3";
+export const yaAlphabetYamaAudio = "0a1f6d47-7d1d-449d-97e8-248fec83ae8d.mp3";
+export const uWithWordBellyAudio = "459eeef8-9db1-4e50-80f9-dc4d389084d9.mp3";
+export const wordHexagonImageAudio = "4a276dc6-456b-4f78-a585-3a1961dd193a.mp3";
+export const wordWithFoxImageAudio = "d5284af2-6617-4191-bff6-8a38da4ad5fb.mp3";
+export const uuWithWordMealAudio = "af1b365f-30b0-4e21-b846-587289b40b75.mp3";
+export const o11thAlphabetAudio = "8a8967fc-4625-4123-85c8-28f88181bc30.mp3";
+export const jnanaKnowledgeWordAudio =
+ "f40780da-f164-4c62-8c60-fbcf64634c45.mp3";
+export const kaAudio = "050a0c8b-beb5-4742-ad90-44d133b4278d.mp3";
+export const saAlphabetGoldChainImageAudio =
+ "c504e802-3ae5-4dea-8127-39d3788cc6b1.mp3";
+export const wordTeacherImageAudio = "b1665ff1-b4d7-4bf6-83cb-e09ad03965bb.mp3";
+export const knowledge5thLetterInChaSeriesAudio =
+ "409ca28e-d0f1-4a5d-a2af-c2b71c8a9362.mp3";
+export const wordWithMysoreDasaraImageAudio =
+ "dc27ec89-0abd-4d83-b9a6-024608fd8556.mp3";
+export const wordWithCrackersAudio = "b6e0800a-86ac-4c26-8e31-2670fbcc48ba.mp3";
+export const taleWordWithHeadImageAudio =
+ "f56646b7-d25a-442c-82f7-f0442f0342d0.mp3";
+export const nga5thLetterInKaSeriesAudio =
+ "4908d6f3-1ff8-460d-b5e5-b5a02d3fe84c.mp3";
+export const wordBangleAudio = "e848fb2b-3d8f-4e2d-a9f2-8c07de3005ff.mp3";
+export const wordWithTreeAudio = "7b4dc912-0156-4b69-96d4-13d734c97823.mp3";
+export const ta3rdSeriesInKaAudio = "8f4fdf14-3049-4bd6-8add-e4cf6f908855.mp3";
+
+export const am14thAlphabetAudio = "a55bcdcb-ca6e-471f-8061-b42b21df2657.mp3";
+export const aiWordWithFiveImageAudio =
+ "aa1e5632-30ba-403b-a964-ad1b4391654a.mp3";
+export const dhaAlphabetWithSchoolBellImageAudio =
+ "05dd8ce1-4cd8-4dca-a34e-06f410ce2f1f.mp3";
+export const aa2ndAudio = "5ff6c938-0ee6-43fd-a6ab-9c2d3efd2622.mp3";
+export const chaWordWithSpinningImageAudio =
+ "5746d71d-ae7e-4a6e-bb4f-c046956caacc.mp3";
+export const alphabetLaCreeperImageAudio =
+ "81ccaf72-6a3a-4cec-a179-7f3c94621bc8.mp3";
+export const dhaAlphabetForAssetWordNewAudio =
+ "54424753-bfbd-4697-944d-5cc8b4853b8a.mp3";
+export const auWordWithMedicineAudio =
+ "983e754b-397b-44f1-8cb3-89f8144386fc.mp3";
+export const dabbaWordForContainerImageAudio =
+ "84917d10-0bc2-4831-bb18-23959dc7f0a4.mp3";
+export const jna5thLetterInTheChaSeriesAudio =
+ "9de2bbf3-f21b-4d66-932b-e84fee8e521e.mp3";
+export const gaWordWithFeatherAudio =
+ "574cffd9-9c31-44ea-883f-3f57666e6900.mp3";
+export const e8thAlphabetAudio = "2b702f9f-2923-4d18-8458-586a10668f66.mp3";
+export const jaWithPeopleImageAudio =
+ "4bee2999-1f89-49db-b8b3-f10754709622.mp3";
+export const jhariWaterfallImageAudio =
+ "1061eb7c-e5b3-4308-8ccb-11c6d5daebc1.mp3";
+export const au13thAlphabetAudio = "7af8b871-dfc0-4414-b4e2-e2c2423f1fcb.mp3";
+export const ai10thAlphabetAudio = "966f0dd7-3be8-44b8-a0f0-f4d0d06b5d95.mp3";
+export const dhaWordWithAssetOrMoneyImageAudio =
+ "662e47a4-db18-46f6-9943-aadb51fdca38.mp3";
+export const baAlphabetBangleAudio = "920d6897-b4ed-4673-8a5e-813ae49d7c80.mp3";
+export const i3rdAlphabetAudio = "c8a75a0e-c94a-4a08-ab90-4f4ef17fcdf5.mp3";
+export const iWithWordMouseAudio = "4871dcc1-f3d3-407e-8686-03f981ec5f3f.mp3";
+export const jaAudio = "ed0f227e-4960-4c50-91f4-84cd4affc42f.mp3";
+export const dhanaDhanaWordWithSchoolBellRingingImageAudio =
+ "11b24b9b-d9c5-40ae-88cd-1e93899ac2c1.mp3";
+export const aha15thAlphabetAudio = "4ab3ffae-3368-4b12-83e4-3311d5ed60be.mp3";
+export const eeWordWithLadderAudio = "fc35402a-0b78-42f2-9ac7-c0daa7688080.mp3";
+export const ghaWithWordBellAudio = "30756b18-61b2-4b06-9e35-f1f4cf3cfe11.mp3";
+export const ee9thAlphabetAudio = "7eb23cb4-a939-4a56-bf2e-95bb28a5531e.mp3";
+export const gaAudio = "cd68eae9-f4fb-4e75-80e7-878485067ec1.mp3";
+export const daAlphabetWithMysoreDasaraImageAudio =
+ "1aebb069-030a-4e48-b6cf-caf01b4717cb.mp3";
+export const aFirstAlphabetAudio = "0e69d74d-6df9-4d17-a471-61356d326378.mp3";
+export const cha2ndChaAudio = "637501aa-91a6-44e6-9fc8-7b598d95bf4d.mp3";
+export const jnaTheLastOneAlphabetAudio =
+ "108f2bac-9ed1-4e6d-9484-5befff76eac8.mp3";
+export const chaWithUmbrellaImageAudio =
+ "9de11632-7e09-4fb0-b351-cb209a0b9cda.mp3";
+export const hanaWordWithMoneyImageAudio =
+ "5a408035-0668-4e01-8b03-9bec770465f2.mp3";
+export const ghaAudio = "b358c2b5-f307-428a-b909-b9bbf1c3e750.mp3";
+export const daAlphabetWithContainerImageAudio =
+ "3347f686-5d69-4f26-ba02-78de014d5bce.mp3";
+export const ii4thAlphabetAudio = "b38d7040-1506-4b72-8968-c2661a6862cb.mp3";
+export const haAlphabetWithCowAudio =
+ "8da80e6a-8310-4ccc-9a00-dc6f48d6efc0.mp3";
+export const aWithWordKingAudio = "47c261be-2bae-4503-8af5-35b44d3e7d69.mp3";
+export const jhaAudio = "2f9053ec-9e75-4c5e-87cc-7c7641adeae1.mp3";
+export const aaWithWordElephantAudio =
+ "25718578-8478-4384-a82a-5018de4dc1fe.mp3";
+export const chaAudio = "6c4b8c7b-1fd3-49b9-ab11-3b6a79d5e210.mp3";
+export const iiWordSwimAudio = "1e3f437f-0dd9-4c27-9bcd-d5e2fa07c8e4.mp3";
+export const eWordWithLeafAudio = "0b27a8cc-54ca-42d4-9faf-3e4ac044e4ee.mp3";
+export const amWordWithShopAudio = "7257f5a8-95e1-4358-b123-1a3211a2d547.mp3";
+export const saalphabetgoldchain = "c504e802-3ae5-4dea-8127-39d3788cc6b1.mp3";
+
+export const bhaAlphabetWithScaredBoyAudio =
+ "b4381153-8ce2-41ca-9efe-6dcf476a0c9d.mp3";
+export const phaAlphabetWithFruitsImageAudio =
+ "60bf7906-afcc-41bb-a83d-d8c356266863.mp3";
+export const vaAlphabetJungleImageAudio =
+ "077a9948-a44f-4f1a-b801-e23a6c2b7fa4.mp3";
+export const maAlphabetTreeImageAudio =
+ "787b14b4-b622-47f4-b1f4-882c219fc6d6.mp3";
+
+export const chillyAud = "dcfbb0ed-a599-4cba-be8a-7b9d6a8031ec.mp3";
+export const appleAud = "09c6b580-37d7-4b18-9d6a-6f1282b1612c.mp3";
+export const queenAud = "59263633-4265-4838-9199-4fc25532ae63.mp3";
+export const chilliImg = "2ecfdeab-a97f-4926-84a0-a9345ac09676.png";
+
+export const kelaaudio = "babd2269-35b6-4c6b-8a19-c5e104d29d6c.mp3";
+export const pahadaudio = "d4b9b0c3-2704-49f3-b4bf-8a5d0e45f723.mp3";
+export const bhaluaudio = "0b25846c-da4a-4177-8108-ec6cf3328758.mp3";
+export const papitaaudio = "5e233007-0e7f-4b56-a9df-a55f86ce74eb.mp3";
+export const bharataudio = "33de1c41-a4df-43fb-86e1-e4f8e256aa80.mp3";
+export const kitabaudio = "33df959f-c81d-460c-b90e-a693088698f3.mp3";
+export const sebaudio = "0700066c-7e38-46e3-921e-189ed2144e15.mp3";
+export const nadiaudio = "ac751bea-1d89-4340-81cf-12608bd431f4.mp3";
+export const jalaudio = "b95b6c4f-0230-41c2-ae37-199fa6b0b661.mp3";
+export const rajaaudio = "eb9da286-7bc2-4392-b543-a1b42ebe5e08.mp3";
+//tam
+export const மலைAudio = "2e60cafc-6f37-4c29-bc4a-f11d762285ef.mp3";
+export const நதிAudio = "4af31e39-369b-4494-9aa8-a92528f1e99f.mp3";
+export const மாடுAudio = "e9a11a73-acef-4ec5-9b71-7f1d186e9c2b.mp3";
+export const வலிAudio = "22ff767b-0dd0-4450-ac0f-ffe3d08f28df.mp3";
+export const தலைAudio = "2ae465cf-84f5-4ba1-9a4f-cea6912c54f8.mp3";
+export const நாடுAudio = "4de3abcd-0cb1-455e-af4a-f969c0a5e3ad.mp3";
+export const புழுAudio = "ecbe0ce9-16d8-41a2-b9ed-9e1ee2b447a3.mp3";
+export const மழைAudio = "f3df4c5d-fe27-4762-b099-95e6c2187385.mp3";
+export const கடைAudio = "23e02933-f5b0-40d0-a71a-7e4ca3dbf781.mp3";
+export const வீடுAudio = "a4d9553b-968a-44a3-9b16-240232e7314b.mp3";
+
+//tel
+export const నీరుAudio = "41c82465-5fbf-475e-a452-57fd9142c4d9.mp3";
+export const పాలుAudio = "4f37d514-4592-40df-a82b-89cc2880e27a.mp3";
+export const చేపAudio = "5ce3ed5c-8bce-4e34-8815-9516b831db51.mp3";
+export const పక్షిAudio = "5bf7ec6f-a0e2-471a-b930-b369a5d767d9.mp3";
+export const నదిAudio = "3a7958ff-f99d-495d-ad78-cb078ebeba29.mp3";
+export const కుక్కAudio = "a3899b6f-7585-4626-8dcc-ea5e5124fa0d.mp3";
+export const పిల్లిAudio = "d3d9fef3-02e6-4991-8392-5bd2d77d1a3b.mp3";
+export const మనిషిAudio = "e0424d53-ab20-4620-81b1-f6c26688b297.mp3";
+export const బడిAudio = "9d3357a5-f210-494a-ac52-2161dda4bbde.mp3";
+export const ఇల్లుAudio = "6293bf53-a836-4ad4-8d8d-a012c54ae4a7.mp3";
+
+export const ನೀರುAudio = "1c85fc5a-4541-46e1-bca6-4821c7eb5020.mp3";
+export const ಹಾಲುAudio = "2d8285c6-4145-433c-b4d3-022cab43514c.mp3";
+export const ಮೀನುAudio = "50759a48-4acb-4e3f-a80d-6d58f3dea73a.mp3";
+export const ಹಕ್ಕಿAudio = "91605a6f-eaa5-46a9-ac59-d2ffe2496d65.mp3";
+export const ನದಿAudio = "e6d751e9-79c0-4a0e-9cc4-677b89bc6703.mp3";
+export const ನಾಯಿAudio = "04ac99e0-fdde-41c1-9fb7-f50fb7de06a8.mp3";
+export const ಬೆಕ್ಕುAudio = "bd6e15e6-5f56-4bc4-baa9-cb1dd7f2bf22.mp3";
+export const ಮನೆAudio = "a851a652-cb93-4293-9f3c-b4cb7497296f.mp3";
+export const ಪಾಠAudio = "630654ec-639e-4207-b8fb-b877a808206f.mp3";
+export const ಬಳ್ಳಿAudio = "4e5efecf-a825-45f8-ac49-9ef2964f4347.mp3";
+
+export const ballfullAudio = "e0823953-39c1-4080-8454-ba7cd9e19062.mp3";
+export const drumfullAudio = "e28b345e-7d5e-45f8-9f4b-61f06569122c.mp3";
+export const fishfullAudio = "d74dc760-ff5b-45b7-903b-fd8ebfb46bf3.mp3";
+export const grapesfullAudio = "86a8f38f-f131-40c3-8c54-f1037bf65f14.mp3";
+export const handfullAudio = "66496645-cae7-4d8d-896e-545fe53ed1bd.mp3";
+export const jamfullAudio = "af9671dd-7961-4ec4-ba6d-3f6d1faf927b.mp3";
+export const carfullAudio = "28026dab-b43e-4718-9dd7-8cb086eaceef.mp3";
+export const lollipopfullAudio = "5b80a682-0cb7-4fe6-98fa-04a6df4f4f48.mp3";
+export const monkeyfullAudio = "2fcc5f69-a8d0-4ccc-92a6-e349c1e1a491.mp3";
+export const nestfullAudio = "c31b7a87-5e58-4d6f-8847-fee272d7a9a8.mp3";
+export const pumpkinfullAudio = "96561240-b20f-4105-b173-02920fda8bdb.mp3";
+export const rainbowfullAudio = "d13d4f25-7c51-4b6e-9253-2122a6461dfb.mp3";
+export const sunfullAudio = "6399bb26-0737-48a8-a47c-e9633f13844c.mp3";
+export const treasurefullAudio = "b8bab30e-2191-40d4-b636-1cefe2f78dbd.mp3";
+export const treefullAudio = "4c18045a-04b0-4b3c-8eab-15825334ffc0.mp3";
+export const vanfullAudio = "29bb3fcb-929e-4521-aa39-fc7b6115730b.mp3";
+export const windowfullAudio = "53c23149-fe6c-4123-936b-7a0222ca677d.mp3";
+export const yakfullAudio = "57a99e4d-cbcc-4d84-a66f-e50b6fb03ef7.mp3";
+export const zipfullAudio = "b8320f23-c236-4c12-97e4-ec3b70801c32.mp3";
+export const foxfullAudio = "c3975a10-42b7-4f4f-946e-59f6136cb092.mp3";
+export const queenfullAudio = "fa62e112-c1ea-4ca6-be2a-6001ac3fef35.mp3";
+export const chainfullAudio = "e4e3f136-9bfc-4cf7-80d9-08c5d308d5cf.mp3";
+export const sheepfullAudio = "f157fe12-cc6c-4115-8251-ce93bf265203.mp3";
+export const motherfullAudio = "c1abf3d1-0c64-4ac3-87a5-c272db8dc318.mp3";
+export const singfullAudio = "934f0370-9f6e-42f6-b51b-52eecd25c901.mp3";
+export const applefullAudio = "651f374c-7d39-4246-b77e-784b2a10857c.mp3";
+export const eggfullAudio = "bc82a1bb-9461-4434-8ea8-9d7335418d2f.mp3";
+export const igloofullAudio = "dfb69099-6ab2-437a-a461-4a3e93373b36.mp3";
+export const orangefullAudio = "37e16192-bcde-4836-8d1f-cb00e259e71f.mp3";
+export const umbrellafullAudio = "81b5b4b0-e0c2-4bac-8d3a-a7a66fb05440.mp3";
+export const rainfullAudio = "886c010a-de27-4a89-81fe-e5d12e53c44d.mp3";
+export const beefullAudio = "51b931bb-2387-4458-9672-180cd128777c.mp3";
+export const piefullAudio = "14e9e9a4-e4dc-472d-bb1f-36d7006fc471.mp3";
+export const boatfullAudio = "700dd0f7-6d31-44d3-a12d-484d04c864cc.mp3";
+export const moonfullAudio = "7279f890-024f-4874-b538-d84bccbd97a8.mp3";
+export const bookfullAudio = "d13e77a7-8902-4f8f-8a8a-3010a915c80a.mp3";
+export const cloudfullAudio = "7e73b1f2-9f40-40f9-b5d8-4f75fab86db9.mp3";
+export const coinfullAudio = "7ece1f48-02a0-4330-8cf5-716f58d8185a.mp3";
+export const sawfullAudio = "ac506c7d-fa92-46a8-8988-4f6666aac82d.mp3";
+export const starfullAudio = "f7b68c32-956a-4d50-876b-ee9299c6ec7d.mp3";
+export const sisterfullAudio = "126f5fc5-0e39-4dae-a676-e8f2a84feccb.mp3";
+export const cornfullAudio = "1fc5dfa0-65b1-493d-a2e8-2ab4b56f2127.mp3";
+export const chairfullAudio = "2f947601-50ff-4ee5-b2f2-23d9a683a9b8.mp3";
+export const hearfullAudio = "90b160a0-8bce-4d19-bb73-d370b0ba55af.mp3";
+
+//hindi
+
+export const अनारAudio = "8636e91c-1d36-46e6-88db-50b4ca63b77d.wav";
+export const अनारImg = "9d3d7f40-85c2-4e5b-9239-363d79f86eba.png";
+export const आमAudio = "92995673-b0a0-48fb-84f4-bde8d64ec46b.wav";
+export const आमImg = "850c278a-5526-4f5b-917d-90fdebac0b5e.png";
+export const इमलीAudio = "ddd32cc2-c93e-4fc8-8398-ee2d86b48b6d.wav";
+export const इमलीImg = "ca997054-aca9-4900-840e-77fea4f64666.png";
+export const ईखAudio = "ab6ddd38-cdbc-433e-8891-d295df3137a3.wav";
+export const ईखImg = "0b4318a0-6e5b-45a0-8d94-55dcf67821ae.png";
+export const उड़Audio = "849b13d5-1c64-452e-b18e-ff85e9a45286.wav";
+export const उड़Img = "f179eddc-6fbe-4205-82ec-fb05aa290b3f.png";
+export const ऊपरAudio = "637bd8d9-254c-4d67-9913-f483432adf6f.wav";
+export const ऊपरImg = "111db6b0-fc82-4eea-8673-b60d2fe9b1e3.png";
+export const ऋषिAudio = "04665c48-cbf1-418b-a9b1-5d6641c853b5.wav";
+export const ऋषिImg = "0d46c2dd-db3e-4285-ad5e-16ecfde7118a.png";
+export const एड़ीAudio = "0ebb4caa-d191-437f-94f7-4db2e352461c.wav";
+export const एड़ीImg = "8003335b-e614-4f39-9be4-188635aeca86.png";
+export const ऐनकAudio = "bc3758f7-db03-40ce-94d2-aa64f0f5f08c.wav";
+export const ऐनकImg = "97d0bfbe-0178-47da-81a1-c62a18baf394.png";
+export const ओखलीAudio = "2a06c101-12bb-4073-9ea2-13f45b7f0382.wav";
+export const ओखलीImg = "f1523352-174c-4dc2-bc2a-bad885c1a1b9.png";
+export const औरतAudio = "ecb8a011-7c44-40ad-b6c8-1ba2da4536fd.wav";
+export const औरतImg = "cb0398ce-8aea-4611-9f42-c15fc423e298.png";
+export const अंगूरAudio = "c8d7d90d-cf58-44cb-9ad0-84d2c8573f64.wav";
+export const अंगूरImg = "ca6be95f-0610-46b2-8933-9321926a7972.png";
+export const कबूतरAudio = "6504e6cb-a8bc-46fc-b5ef-f1fa1657b185.wav";
+export const कबूतरImg = "5631c6c0-fa11-4e84-a384-d3aa91da26b5.png";
+export const खरगोशAudio = "6187a712-aa4d-4e94-bf89-f2038461c03d.wav";
+export const खरगोशImg = "d86eacc2-291b-4370-a743-13bcf3372d50.png";
+export const गधाAudio = "d1111c99-c96c-448d-819e-08f6a3645643.wav";
+export const गधाImg = "94cc7f4b-0402-40d0-b4f5-d27d9c209361.png";
+export const घरAudio = "01696a5d-e388-4d25-bc18-5e823501df95.wav";
+export const घरImg = "a6491b17-12f9-45a5-aa5b-372863a411d8.png";
+export const चढ़Audio = "1cb123d4-3f30-49fb-9fa7-c6dcdfe46756.wav";
+export const चढ़Img = "894e3823-cf87-4404-ba03-171ed2cfb10e.png";
+export const छतAudio = "6b824bab-f112-492c-ae98-c3fe4d184758.wav";
+export const छतImg = "7396ca4a-8b37-4e2b-b179-8a04584b24b5.png";
+export const जगAudio = "e93fb7ca-dd81-4e85-9ae2-9ca19b7b885e.wav";
+export const जगImg = "6ec85add-038e-4268-ae86-f8a477f65187.png";
+export const झण्डाAudio = "251fe166-0123-4ef8-8d2a-9818bd304aa5.wav";
+export const झण्डाImg = "b2bed27b-a05d-45d6-8b5b-2a959cf8f969.png";
+export const टमाटरAudio = "93951817-6768-491d-b35e-7c7482f85144.wav";
+export const टमाटरImg = "0f8d66b7-7f31-4821-90c4-03ca7106df64.png";
+export const ठठेराAudio = "4e01c176-8c9f-4050-ba91-926120c15afc.wav";
+export const ठठेराImg = "0954c95b-7df2-4272-81f3-df1ba0906e88.png";
+export const डमरूAudio = "9223377a-cb6a-4295-bb55-2accabc67404.wav";
+export const डमरूImg = "b9917a02-2271-4363-b270-5dad4eed7144.png";
+export const ढक्कनAudio = "5b9b51c9-267e-4e4d-959a-241cc2310cb0.wav";
+export const ढक्कनImg = "99be8d2d-76ae-48b6-a9cc-3f62462017ea.png";
+export const तटAudio = "18b99070-bde8-4218-9cc3-7b179637020d.wav";
+export const तटImg = "b991c87d-89d4-4388-8c50-45dca03511a9.png";
+export const थकAudio = "3c3d0241-2dd5-4674-8f38-95d6a48ac24e.wav";
+export const थकImg = "680f387d-30f1-4943-ba20-dd635e822275.png";
+export const दरवाजाAudio = "9e1b002e-ba90-4b87-b2c1-bbfa6ffd206c.wav";
+export const दरवाजाImg = "e0d5799b-7048-4f00-bbd6-12444f2e6861.png";
+export const धनुषAudio = "0f57570f-f5cb-467f-8874-74fcf5ef1692.wav";
+export const धनुषImg = "25acc4ee-38b8-45f1-9e5f-ad22c2acad64.png";
+export const नलAudio = "e19a5cb0-5b03-411e-8a2e-ff7016ff9df6.wav";
+export const नलImg = "e22823a6-49f0-43b2-8dad-b04683eb8168.png";
+export const पतंगAudio = "c1fbeca9-c166-4878-a05b-a48a72a71e38.wav";
+export const पतंगImg = "9c01bd5f-1c1d-4f89-93ba-e442f92f7620.png";
+export const फलAudio = "d08f9fdb-a0a7-40cd-8ae1-e9d5321ed110.wav";
+export const फलImg = "50b28eea-ce87-40a4-b002-a32780e02963.png";
+export const बतखAudio = "7d0fb14e-4aa8-4ec4-8e99-78ff7f735940.wav";
+export const बतखImg = "f91ad36b-5497-48f0-b20f-c0167a0e8ade.png";
+export const भयAudio = "35d18e81-27c1-40d5-8463-ecb84d0b698d.wav";
+export const भयImg = "80e53d49-0a31-48a5-b179-c68105e882ab.png";
+export const मछलीAudio = "dc57b947-ce64-4e4d-aec8-b11fa17576d6.wav";
+export const मछलीImg = "36256c00-ee25-4918-a880-7ef70e6cbd94.png";
+export const यहAudio = "3e1ec485-a7c9-44c4-9e34-3449c1b96df2.wav";
+export const यहImg = "dd44caa8-5fcb-4ae9-97fc-3cbfd1641b43.png";
+export const रथAudio = "f4d797e6-8423-4cca-aa88-c6416d07a1b3.wav";
+export const रथImg = "372a87ab-3772-4618-b040-fa38739a99cd.png";
+export const लड़काAudio = "e8b5fea1-d85f-4ce7-9c1f-f3cb40ed544f.wav";
+export const लड़काImg = "e8d45718-0686-4eee-b96d-6331bc2ce00c.png";
+export const वनAudio = "a2f8204a-5805-4fb7-91d3-ff285669aca9.wav";
+export const वनImg = "0c49601a-7f66-48c6-b367-62acf8354f41.png";
+export const शहरAudio = "6a91e0fb-3253-433b-b862-9196fa3c54be.wav";
+export const शहरImg = "73e57f4f-f558-40a6-be91-239d0e420b18.png";
+export const षट्कोणAudio = "0c868f3c-8ab5-4e45-93a5-a0b51be844f4.wav";
+export const षट्कोणImg = "0431d520-d257-4aaf-915f-26d9bf2082c8.png";
+export const समयAudio = "3b8e6c24-f76c-4939-864a-6beaf34124b6.wav";
+export const समयImg = "e82b7321-8731-4d1c-bfca-7ac0605f19ae.png";
+export const हाथीAudio = "1409b559-2f41-40d9-afda-16bd65761e20.wav";
+export const हाथीImg = "ae1a3bf4-7bd7-4fc5-8ff0-ecbf1cab0540.png";
+export const क्षत्रियAudio = "3e3d4292-f218-4662-bb73-ba2b35a4143c.wav";
+export const क्षत्रियImg = "cecf3c32-e0f1-4453-befd-01cd6f75886c.png";
+export const त्रिशूलAudio = "8c9c330f-4deb-44cd-820b-54629233200e.wav";
+export const त्रिशूलImg = "cb07d910-f4f3-475b-a728-9e938813a76f.png";
+export const ज्ञानीAudio = "b7b1e4f3-f511-44d9-9496-13bbedc35faf.wav";
+export const ज्ञानीImg = "141ee8a8-7034-4509-bdb6-be26bf35392f.png";
+export const साइकिलAudio = "0a817a32-8c13-4cb9-b69a-1d81004b4da8.wav";
+export const साइकिलImg = "19d5c801-d4f9-4686-b0e5-97c59ee98f6e.png";
+export const बकरीAudio = "1cff7fba-822a-4c06-8351-052d11b8dca1.wav";
+export const बकरीImg = "8eaccda1-102b-40b5-a657-49fdd72534e8.png";
+export const लेखनAudio = "7b84434e-844b-4331-95bd-909746d3c6ac.wav";
+export const लेखनImg = "3289ced0-5375-45dd-a7a7-f04c6c303e27.png";
+export const नगरAudio = "37f33bef-04d9-4125-8ffe-510f23c7c2ed.wav";
+export const नगरImg = "7b963645-21c1-431d-9406-58927bfb7a49.png";
+export const घुँघरूAudio = "8278ec6b-e3fe-47a3-b88d-bfe8231d967f.wav";
+export const घुँघरूImg = "1f39ea62-6084-40b2-adb1-09a6d0338643.png";
+export const खिचड़ीAudio = "8db33ef8-8632-4d7f-be22-27430170d556.wav";
+export const खिचड़ीImg = "0f9e1c77-135d-4102-8390-f31c7c82fe95.png";
+export const गाजरAudio = "fc49211b-f12a-4ebb-a671-b6af7d9fe6cd.wav";
+export const गाजरImg = "b2c3c69a-1a2f-44fe-aab7-5392d2160d78.png";
+export const मटरAudio = "780eb0d1-3b70-4a37-9e88-747b8d5fcf10.wav";
+export const मटरImg = "6bc2a7eb-b2e2-47e7-8aec-1cc06912eef7.png";
+export const गुठलीAudio = "4e62f270-f95e-423c-afef-eedda462766b.wav";
+export const गुठलीImg = "d497bce8-0bcf-4b21-b904-64b88233b29c.png";
+export const मेंढकAudio = "114901e6-dbcf-4fa8-91c2-a2ce76de1190.wav";
+export const मेंढकImg = "fe2e7b19-a3eb-4955-a589-5965be134bd0.png";
+export const सुतलीAudio = "037a33c9-8434-438e-8d2f-d6c914340664.wav";
+export const सुतलीImg = "2059df08-6338-497c-9394-1b8da986bea9.png";
+export const बादलAudio = "e3618ee2-a6b8-4f46-b079-80180fab1c1e.wav";
+export const बादलImg = "80e77960-e564-4cab-b3da-99d03d73835d.png";
+export const इधरAudio = "8cdb2b82-803e-4a10-bb2c-25369138c646.wav";
+export const इधरImg = "6d551a7f-a262-4c4a-9523-e7008cfcb18c.png";
+export const जानवरAudio = "e4deb23a-5794-49eb-9190-c5c458a9b43d.wav";
+export const जानवरImg = "f8c87583-1fe8-4645-a5d8-38cded2a14bd.png";
+export const कपड़ेAudio = "e10aa655-92b7-4e7f-a01a-56ccbd9a4df7.wav";
+export const कपड़ेImg = "ee0ef83c-65de-4243-a0ae-1726c04dad2a.png";
+export const सुबहAudio = "01ad760d-b3f4-4ae6-a47c-dac557721873.wav";
+export const सुबहImg = "e267d4c8-ab31-4dc6-8b18-7b0cc69f0b2a.png";
+export const अनुभवAudio = "b8b70de7-a1c3-4ac2-9f4c-8c7fd33ca530.wav";
+export const अनुभवImg = "8de5f332-dfe8-48be-b83f-efa43c763235.png";
+export const गमलाAudio = "fe076834-0c17-4fc1-a70c-650b5718cb8b.wav";
+export const गमलाImg = "d3c82598-57c1-46de-a968-6127d14f06b9.png";
+export const पायलAudio = "172461a3-2f0a-4a58-953c-1cfdc001d49d.wav";
+export const पायलImg = "a850380f-f295-49b6-937d-99b20ad715f0.png";
+export const भारतAudio = "93070d52-b1b1-4854-aa7e-952a95a7be95.wav";
+export const भारतImg = "f0736306-4728-447c-816e-36151a9e7405.png";
+export const चलनाAudio = "a8db654e-a9b0-40be-ac14-5297bd443b3c.wav";
+export const चलनाImg = "09aba370-e513-4c7f-aa76-6e390315cd49.png";
+export const चावलAudio = "fa8d6c05-0454-4f27-ac11-0a239e60d74a.wav";
+export const चावलImg = "6ca0dd65-2ad4-4fff-a659-268058f769ee.png";
+export const विषयAudio = "ae9976b3-7d1a-431a-b8fb-ce33f5ce1589.wav";
+export const विषयImg = "947a18ca-a485-497e-a86e-6ab7df75910d.png";
+export const आसमानAudio = "ebf0a15b-ee7e-4ce3-aad9-8a55970c9189.wav";
+export const आसमानImg = "3f9d71cd-8646-4a8d-88ec-26849d6d0e7a.png";
+export const बाहरAudio = "617f1662-cb7b-473b-bbc5-4f0a01343223.wav";
+export const बाहरImg = "1a153e0a-ed8a-40ee-92fb-1ed791fbd572.png";
+export const अक्षरAudio = "5a542670-a1e6-44de-9b45-4c3a8a24f3bc.wav";
+export const अक्षरImg = "52f68a3c-b2b8-4ebb-a12d-5ba35c555f17.png";
+export const कछुआAudio = "3a76ed79-0b74-40bf-8c64-eec50fab32ab.wav";
+export const कछुआImg = "e8460752-bd7f-407a-8406-00c0a8acc621.png";
+export const नईAudio = "23ac663f-a641-42a6-b0de-9ea477d61dfd.wav";
+export const नईImg = "58d56b30-06b1-4dad-be76-0ed498a75cff.png";
+export const पढ़िएAudio = "3a70d81f-343e-401c-b686-61bd774c0ce8.wav";
+export const पढ़िएImg = "753fe894-8531-4623-b045-f5989aa63ba4.png";
+export const नमकAudio = "408f8df9-7280-4102-ad17-3891329b7c82.wav";
+export const नमकImg = "2860bc6d-2da9-46b8-943d-5538e372282c.png";
+export const भूखAudio = "4ff1e054-8559-42ab-ad24-769f1c24254d.wav";
+export const भूखImg = "12d4fa6b-739b-4446-b938-e98dca8a8f55.png";
+export const लोगAudio = "84dfc1db-4b94-449b-a486-f7ae44ebe8f6.wav";
+export const लोगImg = "94aab6ad-1104-4faa-b68b-65cf34e97e27.png";
+export const बाघAudio = "3fcfedf6-08f0-4a82-8b02-bbd132d0c21b.wav";
+export const बाघImg = "b2fb106b-3f46-448c-b7eb-68d56d5fd5ee.png";
+export const पाँचAudio = "86eda492-610a-4b9a-9727-a0172a1bb579.wav";
+export const पाँचImg = "13a6b54a-1642-4d00-b1cd-7507c1cf73ce.png";
+export const पूछAudio = "79c50843-097d-4733-979b-db27968b22db.wav";
+export const पूछImg = "39bb90d9-a4d5-475d-b232-cbc90513e0f7.png";
+export const सूरजAudio = "fd5e7e68-92cc-4b03-ac9f-ca99eb3ddacc.wav";
+export const सूरजImg = "998ddcc3-9f39-48ed-849d-4ccb42c9ae0e.png";
+export const ऊँटAudio = "79ca57a0-163b-42ba-aad1-8063f31ebd5f.wav";
+export const ऊँटImg = "39b9a4ce-0800-4337-9115-81049112a5e5.png";
+export const आठAudio = "840c7dea-0cad-4237-9827-54299e445d71.wav";
+export const आठImg = "bf1d56d1-de39-44bf-95bd-da7ab9935515.png";
+export const पेड़Audio = "4267107a-1eaa-49e8-8be8-0d45745e817e.wav";
+export const पेड़Img = "94816c6c-c18b-40ad-b20e-25d19694f1da.png";
+export const लवणAudio = "867b8376-0dd1-40e9-aaa7-a2e4898c5197.wav";
+export const लवणImg = "2860bc6d-2da9-46b8-943d-5538e372282c.png";
+export const रातAudio = "e64e97c6-c2bb-4199-afd0-e09394117b48.wav";
+export const रातImg = "2e9f1e59-7c52-44c8-9d03-8ba774b85184.png";
+export const हाथAudio = "739ed9cf-517a-4024-bf37-97c6ea09916f.wav";
+export const हाथImg = "ed2652bc-f2d4-44a5-a44d-9bebf34074ff.png";
+export const आनंदAudio = "a7393955-3a53-4b40-a6bd-a3a5271e3df9.wav";
+export const आनंदImg = "1143f959-bc6d-40c6-be95-a51372b3bd9d.png";
+export const दूधAudio = "5fae2338-1f38-42c8-9244-9be9c82985fc.wav";
+export const दूधImg = "3943ec7c-2460-4f90-837a-aa3911259554.png";
+export const बहनAudio = "d12eb685-5bf5-471b-975b-34654a7cef91.wav";
+export const बहनImg = "1c9770ea-d87f-4a46-8b28-dfe16e8451e3.png";
+export const साँपAudio = "ee562ffa-d151-4da7-93f6-14945b17dc83.wav";
+export const साँपImg = "2c9770ea-d87f-4a46-8b28-dfe16e8451e3.png";
+export const बर्फAudio = "d9e15a1a-8043-49a3-aebe-4b10e15ce9a7.wav";
+export const बर्फImg = "9ee540d5-38d9-456a-81b5-1c02ce0d00c8.png";
+export const सेबAudio = "56f32c4d-9d5a-48dc-9f22-ad889cc56cb8.wav";
+export const सेबImg = "ca354a27-0fb8-417b-8a06-277794dd433f.png";
+export const नभAudio = "d0c6c2f1-4131-486e-89b1-1357ee1696e9.wav";
+export const नभImg = "3f9d71cd-8646-4a8d-88ec-26849d6d0e7a.png";
+export const कदमAudio = "79eda54b-4755-4f18-b659-63a28a639fb5.wav";
+export const कदमImg = "e2ac18ac-858f-482d-acf7-2a53b68cdd13.png";
+export const गायAudio = "8519e871-c612-4540-9055-76f049b793bc.wav";
+export const गायImg = "e91bc7e9-622f-47e5-8a1a-78dabd98566c.png";
+export const चारAudio = "177242ca-8815-43b3-9e5f-86b484296b30.wav";
+export const चारImg = "6f4d5dd9-19a8-4c33-be19-2a94ebc602d0.png";
+export const बालAudio = "952b33a5-af48-4025-b490-e21fcf0a1c3e.wav";
+export const बालImg = "c52f5d62-5d36-47e2-9437-24c81c410d90.png";
+export const नावAudio = "6138a943-42d3-4869-bcb3-d957338aed1d.wav";
+export const नावImg = "482ff176-96ce-4635-a74e-0870fc9c7b9e.png";
+export const बारिशAudio = "4b610f12-60b0-4957-b6b6-6436b8be0627.wav";
+export const बारिशImg = "7608f173-7926-4ebc-9e77-0abe35b8db71.png";
+export const घासAudio = "85ffbc8d-252d-482d-8526-b6172e4d1d1f.wav";
+export const घासImg = "4f9c6046-c961-4da5-a4e2-d5175bc5a4a1.png";
+export const मुँहAudio = "642bcdf4-6d66-4a8d-b4af-1397b80ef9b8.wav";
+export const मुँहImg = "68caa33b-7d01-476b-b4f4-ba9f71ee7592.png";
+export const चित्रAudio = "2250dfcd-f523-41cc-8cf3-b1534c7aa183.wav";
+export const चित्रImg = "8d5382e4-024f-4576-8946-9f3a5f221496.png";
+
+//telegu
+
+export const అలImg = "2ffbd4ff-6bc8-40db-99f1-86acc008d117.png";
+export const అలAudio = "570022e9-909f-4ec5-b913-cec732d195a5.wav";
+export const ఆటImg = "3a074e2c-5fb0-44ba-9cd4-ffa7cd7b73b3.png";
+export const ఆటAudio = "4d94959f-be7a-4f87-8614-ba1821477629.wav";
+export const ఇలImg = "51d31076-753f-4457-bc74-3a42d755a2d3.png";
+export const ఇలAudio = "5fe42a6d-31b3-4803-961a-362e4fd7b3d1.wav";
+export const ఈగImg = "362cc367-2303-4aad-86e1-f35baa039e43.png";
+export const ఈగAudio = "0eb9b2bf-e692-4e0e-8c64-d2697e91215e.wav";
+export const ఉడుతImg = "8319cfd0-1521-43ed-84f8-412d04b1ec5c.png";
+export const ఉడుతAudio = "8fae43a2-8c15-4274-b484-79ebc2749012.wav";
+export const ఊయలImg = "3740866d-ca9e-4126-b304-bc427c6ff17b.png";
+export const ఊయలAudio = "4fe1f8da-7837-49aa-b141-56404bc5bdb7.wav";
+export const ఋషిImg = "0bac4bd4-9cd4-4f39-ae4b-dd0868ee14ab.png";
+export const ఋషిAudio = "2b518e4f-64b6-4c93-b16c-79edd9d78a5c.wav";
+export const ౠకImg = "672c1107-0025-4380-b2b9-52340e13b192.png";
+export const ౠకAudio = "600947f6-1511-417d-aa70-550114214eb0.wav";
+export const ఎలుకImg = "3f1f4c7a-adb4-4bb6-a34d-9c53877fbd12.png";
+export const ఎలుకAudio = "ae011572-8d51-4a84-872f-7ede0c76c8d8.wav";
+export const ఏనుగుImg = "ea2047cd-7182-43bf-9b9e-f3c835e1d647.png";
+export const ఏనుగుAudio = "5af76385-c2b0-41d4-92e1-016c336df5f4.wav";
+export const ఐదుImg = "20e410a6-8e8a-4a9a-b78c-60c2533cbfe2.png";
+export const ఐదుAudio = "01de0860-c5a6-40be-a29e-47e3455e1a8f.wav";
+export const ఒకImg = "8f7c89a2-4456-443c-b91e-b8b13e1c26f9.png";
+export const ఒకAudio = "46dc7de7-8d3f-4db1-aebe-49dc0dc1eb2c.wav";
+export const ఓడImg = "df41b634-9ab1-4b08-9629-e48ee75f6d3a.png";
+export const ఓడAudio = "29c008a5-eadf-4b5c-9572-01a3b2181c75.wav";
+export const ఔషధంImg = "f11e665f-fed2-47a7-aa83-4ce879d6990d.png";
+export const ఔషధంAudio = "4b2eb3ed-0eff-4d2d-be0e-a9020d3b0c4e.wav";
+export const అంగడిImg = "03f39912-a715-47a5-a9c7-c51735cf0e12.png";
+export const అంగడిAudio = "d4535b9b-a76b-48c1-92a9-399fe8b732ea.wav";
+export const కలImg = "6b60c09f-486f-48e9-9b24-100f1dff54e3.png";
+export const కలAudio = "7fe8d951-8799-4abd-9427-bc08981d34f0.wav";
+export const ఖరంImg = "7b60c09f-486f-48e9-9b24-100f1dff54e3.png";
+export const ఖరంAudio = "802032dd-d2d3-436d-9036-11a1ba3d5b8a.wav";
+export const గదImg = "ada68044-9107-4572-8945-11f6dbc73694.png";
+export const గదAudio = "01a1d3c8-9b59-4cad-810b-5438f92c8852.wav";
+export const ఘటంImg = "d4744503-0d37-42e6-8a1d-0b6dc33b9359.png";
+export const ఘటంAudio = "81b4c720-8ad9-4beb-b59f-46fe50b5fe59.wav";
+export const చరకాImg = "e3ddc30a-95ff-4c22-9b43-7f0438dff987.png";
+export const చరకాAudio = "5e9060c1-b3c3-4273-a365-92d169401355.wav";
+export const ఛత్రముImg = "7c0b6885-face-4acc-85d6-0a4015a38f12.png";
+export const ఛత్రముAudio = "e78de537-e8d3-47c0-8b35-9a46790b7bba.wav";
+export const జడImg = "154e4c3a-c9a8-4476-a35a-c5dce445f994.png";
+export const జడAudio = "ae487b5c-06dd-4fb1-b0bf-f7d405ced369.wav";
+export const ఝషంImg = "5547a178-79fc-4abc-8994-9bfdb2a0ccae.png";
+export const ఝషంAudio = "aff9bee6-f096-4ec2-90b9-d0e82d7c03dd.wav";
+export const టమాటImg = "5493860c-9c44-451c-b88e-1a95e03fa887.png";
+export const టమాటAudio = "da2ca59f-65ce-4ec5-b817-9e0e45731a2a.wav";
+export const డబ్బాImg = "45f17492-b03f-4b11-a60d-6340593366ae.png";
+export const డబ్బాAudio = "dfd123c6-8e7e-47a1-93bf-0257dd0bef05.wav";
+export const ఢమఢమImg = "8666690d-5d3a-46fe-9b41-c12349ffedf9.png";
+export const ఢమఢమAudio = "d0fe37f3-36c3-4585-85e5-11a46a4e0ab2.wav";
+export const తలImg = "c255c1f0-86e7-42c9-b544-cc94e4d60653.png";
+export const తలAudio = "ad8f382e-3359-46ff-a256-0921f80770a8.wav";
+export const థర్మోస్Img = "77bc4b3b-7ae1-40e9-8dc5-41fd087fe646.png";
+export const థర్మోస్Audio = "00c3ff1c-6e11-449f-947a-f65f3782d427.wav";
+export const దవడImg = "c872cedb-767c-49be-8305-ccb1142a1d60.png";
+export const దవడAudio = "21f6d78f-830c-4839-8f02-8b9630debd7c.wav";
+export const ధనంImg = "5846d600-b639-4652-a527-b5a2b5284a62.png";
+export const ధనంAudio = "8e99356f-18fc-452b-a0f1-b2aad15043fb.wav";
+export const నగImg = "0b4fe26a-bda9-4ef6-af5d-e37ad9b28a74.png";
+export const నగAudio = "f7219924-5772-409c-9dee-d926a61c42dc.wav";
+export const పలకImg = "1d76e2bb-a57c-45c3-8e60-a07632fb4bc8.png";
+export const పలకAudio = "f5e06a57-7c1d-4b23-a779-d47bbd7243cd.wav";
+export const ఫలముImg = "527ae6d0-3e1f-43fd-89a9-cdedaf9e1203.png";
+export const ఫలముAudio = "a8fbbcbd-963c-45cb-870d-651f06e1d71f.wav";
+export const బంతిImg = "0d7b9c70-d904-4e6f-bf5b-033fe5360931.png";
+export const బంతిAudio = "7666ed11-0216-4c3d-9385-f34c764a7d40.wav";
+export const భవనంImg = "1d7b9c70-d904-4e6f-bf5b-033fe5360931.png";
+export const భవనంAudio = "3ee746cf-d34b-4124-92b3-b50698fd4475.wav";
+export const మరImg = "9f6cbd13-208b-4ff5-b700-1f092c005106.png";
+export const మరAudio = "5bdbf4a2-c0de-4e48-b645-ce192b602515.wav";
+export const యదImg = "210ea014-5b8d-487a-b5ad-9ca3be44696c.png";
+export const యదAudio = "c9b6a00d-256a-4e78-aa44-6048c10ac74a.wav";
+export const రవిImg = "8edd2044-4933-4747-adfc-b0752e4bee34.png";
+export const రవిAudio = "77b5310d-cf2a-401b-9d95-9789c9934b32.wav";
+export const లతImg = "5a8ee72e-0bda-41b9-afa3-7c941fb659c8.png";
+export const లతAudio = "9693b54e-951b-497f-9dcb-5021186ff028.wav";
+export const వలImg = "94809065-da22-4985-bae1-3e98b036ece2.png";
+export const వలAudio = "c78c0397-8ed0-4849-8d3d-9d81ee95d3f0.wav";
+export const శకటంImg = "8189c5d2-64ad-4f4f-b948-10f089d05908.png";
+export const శకటంAudio = "2d3b9dd8-4a02-44c6-ba26-f4415c7ef442.wav";
+export const షరాయిImg = "3c20a789-40ba-4dd9-ad5d-e29389174bb7.png";
+export const షరాయిAudio = "980aabc0-13a2-435a-bc60-a3f65bcf7ae5.wav";
+export const సంతImg = "3e22bf70-9b83-4e46-b647-adf507ef198b.png";
+export const సంతAudio = "0e579e49-af6c-4f61-9184-4bb306887d73.wav";
+export const హంసImg = "4b6c0c2e-f001-40ab-9e71-2aab2bd21e74.png";
+export const హంసAudio = "baefaa24-6a2b-4f42-9276-cb00490df604.wav";
+export const తాళంImg = "60e26e2e-d54a-49c8-9926-f4bcf834df73.png";
+export const తాళంAudio = "d5bd4f58-d6f8-4833-a4d5-aa2aa08911b1.wav";
+export const క్షత్రియుడుImg = "cd42799d-4dd6-499f-8385-245cd5958b2e.png";
+export const క్షత్రియుడుAudio = "476a3055-e38e-4b17-9f3d-d46bcd4dc98f.wav";
+export const ఱంపంImg = "3409bc12-d115-4b26-8abc-aaeb61440a40.png";
+export const ఱంపంAudio = "d3343f4e-aa38-4527-9b27-782646ad76c9.wav";
+export const ఆకలిImg = "d6f92441-3e85-4703-a575-0fee44169555.png";
+export const ఆకలిAudio = "9ff28a44-7aba-4b42-9078-3fe00384055a.wav";
+export const ఉంగరంImg = "b0fa8242-9098-4038-94e1-70bd571cf2fd.png";
+export const ఉంగరంAudio = "c367e8fa-c6fd-4c15-8f94-a1bc3f9bd126.wav";
+export const రచనImg = "6d1ffc8e-aaac-483c-a536-f55acb4adfa6.png";
+export const రచనAudio = "9beaa785-4b92-4d17-a20b-3937b70211c9.wav";
+export const కంజరImg = "df27fd9d-986b-4234-b71f-5d95a4ffec66.png";
+export const కంజరAudio = "ff80ede9-40c3-4485-b659-80cd8e8bc426.wav";
+export const నాటకంImg = "d698f429-3a79-417c-9ec5-1f73aa3c565e.png";
+export const నాటకంAudio = "74d13a29-e173-4e34-bedb-2a660eb99d81.wav";
+export const పాఠశాలImg = "4ab53dd0-ae61-4a08-8014-10d18dc109cc.png";
+export const పాఠశాలAudio = "74143e1d-8ce5-4dd0-8c26-1d6085b27792.wav";
+export const అడవిImg = "54f10a3f-6e4c-4100-994c-acd74ba429e4.png";
+export const అడవిAudio = "6ff2781d-bb1b-47c2-aab3-e0c43ba040f0.wav";
+export const గణపతిImg = "31cb0c92-cc43-4e99-9829-d96f750f86a6.png";
+export const గణపతిAudio = "609f73f4-12a8-4b79-b7f8-cc48c1994a35.wav";
+export const జాతరImg = "231df0c7-e05c-4998-a9de-fabc748edc4d.png";
+export const జాతరAudio = "911309e1-4cd1-4fc8-b83e-d6e9ccc847f3.wav";
+export const రథముImg = "a75914d0-8d88-40ef-96f7-0a75d3e32829.png";
+export const రథముAudio = "c2ed2944-a3dd-4d76-85c1-464475c6f552.wav";
+export const ఉదయంImg = "0aa4c88d-5c2a-4ea0-ac0f-818700da3c1c.png";
+export const ఉదయంAudio = "139befbc-9b7b-42a8-870c-5633c52cb985.wav";
+export const అనపImg = "662504b5-d251-4e9f-9c04-1e50c2ca1885.png";
+export const అనపAudio = "c78f2624-afd1-458b-89c0-52aa555d7807.wav";
+export const చేపలుImg = "05834478-6557-46e2-a293-0b48060bc9d2.png";
+export const చేపలుAudio = "8520d6ac-c3ed-43be-aa67-c441bc2c9ae1.wav";
+export const తబలImg = "e38c69f3-1f80-4e8c-b741-31f0c322b237.png";
+export const తబలAudio = "04b8d683-8e8e-4166-a88f-be48c81cc66e.wav";
+export const నెమలిImg = "77a8e153-ce5e-49d9-80d9-a545aa84f340.png";
+export const నెమలిAudio = "6b9f685d-0601-4e8e-abc4-55928376dcb0.wav";
+export const కాయలుImg = "f701ab2c-60d2-40e9-a6cf-3282a119d7e2.png";
+export const కాయలుAudio = "d5e92c6f-d35f-4ead-9f3e-d81c66b2ea6d.wav";
+export const గిరకImg = "27250993-9572-433c-afbf-9ac29487da07.png";
+export const గిరకAudio = "a6013a2d-a00a-4922-9658-acd22c8c5e73.wav";
+export const బలపంImg = "71f293f8-c6ff-425b-b4a1-9ed833b8f49d.png";
+export const బలపంAudio = "e4abbe9c-71c4-47c2-8f8d-0af6b4400f32.wav";
+export const లవణంImg = "f3ccef59-a956-44fc-9bbd-171a9f9ab5ab.png";
+export const లవణంAudio = "4ec1d5af-6f60-4188-892b-ba8ecc6e7261.wav";
+export const దశమిImg = "1ab95c3e-c13f-4bfa-a85e-7197b99d5232.png";
+export const దశమిAudio = "4291e68d-dc61-464d-b408-1ee1afbfb04c.wav";
+export const దసరాImg = "0239ec34-f026-4371-9f25-0da1a681a063.png";
+export const దసరాAudio = "7003a15d-f213-46c6-8096-9344bd859b59.wav";
+export const వాహనంImg = "8189c5d2-64ad-4f4f-b948-10f089d05908.png";
+export const వాహనంAudio = "b479fa5d-e493-445e-904b-a229779c9c7a.wav";
+export const అక్షరంImg = "e28dc5ea-dd79-4ab4-a0c8-2c8f303f1bb0.png";
+export const అక్షరంAudio = "040c2d96-32d0-4547-9036-430412116bea.wav";
+export const చిలుకImg = "79d75593-297d-4400-86e8-e44c7a81a10e.png";
+export const చిలుకAudio = "6f210734-af31-43a2-a3c0-ea90005f4d8e.wav";
+export const పండుగImg = "d10f0f87-85af-4b8c-b32a-eaecf758409b.png";
+export const పండుగAudio = "0a7d5de2-7a96-4c09-8371-ceeaea9540f4.wav";
+export const మేఘంImg = "b92b8fe4-22fb-4cd7-be5c-b915a0ebb920.png";
+export const మేఘంAudio = "bccfb6f7-a546-480a-991e-02f09c9b750b.wav";
+export const కిచకిచImg = "5dda46e7-fdb3-4c83-97f1-68d000ffb27a.png";
+export const కిచకిచAudio = "d601b1ba-5b28-4aaf-b04f-5aff2d6de1b6.wav";
+export const జలజImg = "00921181-9e17-48c5-81f9-5820464c3a39.png";
+export const జలజAudio = "aa05c392-13ef-4745-9c92-66fd42d65ea8.wav";
+export const తోటImg = "4655629d-44de-4735-b087-53ad7b280f04.png";
+export const తోటAudio = "c24dc08d-43cd-4064-84d7-754132366faa.wav";
+export const పాఠంImg = "b7bdd811-c183-48bc-8a53-00459afc3f28.png";
+export const పాఠంAudio = "d5a86f1d-6f42-460b-8a33-c6daa6b6b94c.wav";
+export const బండImg = "44ffe770-bb22-4df3-a329-3edb818514fa.png";
+export const బండAudio = "43340597-0679-49f7-a484-08d7fcc41401.wav";
+export const వీణImg = "f0f5cc76-5be2-4049-9a9b-4ec550c39cab.png";
+export const వీణAudio = "ce24cdc6-443a-4199-bfcf-e805ad42f67b.wav";
+export const ఈతImg = "9b8e1871-2287-47cf-92e2-6cb1e3c9be90.png";
+export const ఈతAudio = "a058a8f8-03e7-4c2d-beb5-8683804615f3.wav";
+export const కథImg = "d9a30014-b116-4841-9985-2af591960b03.png";
+export const కథAudio = "135b7137-e1f3-4dd8-b6c2-2e78cb4bd41b.wav";
+export const కిందImg = "a4502f9e-667c-496d-90f0-6297c0bba0b8.png";
+export const కిందAudio = "6b55f698-32cf-4610-a4f3-e6e9280a89e0.wav";
+export const బాధImg = "896726de-0691-44fd-94cc-bcde77c39436.png";
+export const బాధAudio = "0b739b4d-df63-4d68-ad92-9aa45dedbc18.wav";
+export const వానImg = "dec09045-6182-43c7-95bc-ee493c12248b.png";
+export const వానAudio = "fcdd55e3-b1d5-4f5e-a213-29cbde7023f1.wav";
+export const పాపImg = "4c529422-5080-48a9-87a5-ad0c256905c2.png";
+export const పాపAudio = "a0842b11-e9c3-4839-8474-01230453d733.wav";
+export const సభImg = "359efe98-8ca8-443d-bf0e-49eed9582fe6.png";
+export const సభAudio = "2e8b9e35-f258-4a5e-afa5-15501c757983.wav";
+export const చీమImg = "3932069c-0965-4245-95cc-d99e7fb2cc97.png";
+export const చీమAudio = "df51b22d-3e7c-4105-a2ed-194c81ed287e.wav";
+export const వంకాయImg = "8c7a8489-fed9-46fa-8918-100a2b79ce04.png";
+export const వంకాయAudio = "e114d220-1a5b-4bfa-99a1-c4bed7a16cc4.wav";
+export const చీరImg = "531dcfe5-9a66-4a55-81a3-a4bd01b6c676.png";
+export const చీరAudio = "93e24968-438b-4e30-897d-5e477f7eb00e.wav";
+export const వెలImg = "d1d8ca66-57b7-4a59-876f-37efd68a80e6.png";
+export const వెలAudio = "f575c317-ce19-4408-b1e7-3d5bbc6bd5fa.wav";
+export const పడవImg = "3873fb75-22e8-4a8e-b2f9-9999e0f668cc.png";
+export const పడవAudio = "a53f4223-8195-4771-a89e-6281e2128737.wav";
+export const దిశImg = "1f5a93f4-9fff-4ac1-bd26-02f7eb14160b.png";
+export const దిశAudio = "b5a1b08f-84e1-4fdb-893f-05cb55bf30d0.wav";
+export const ఉషImg = "0a8c4eca-a048-4366-a0d7-b6fe9f0fac95.png";
+export const ఉషAudio = "d64eb2bb-88a0-4bc2-8a93-6f6bb6ba403e.wav";
+export const పనసImg = "62215cea-0812-436f-9a85-8ec8e519bd27.png";
+export const పనసAudio = "1fdf2d1c-1d00-46df-a382-bbb35e293f8a.wav";
+export const గుహImg = "a7e78c04-3585-4dec-ae88-5e28c50ba39f.png";
+export const గుహAudio = "cb899386-7a26-49a1-9ef1-d56ba8b20baf.wav";
+export const కళImg = "54abc22f-4e4f-4f65-87b1-0ba307712af1.png";
+export const కళAudio = "fca4e7f2-dd40-4ebe-8f23-5aa3b21815bc.wav";
+export const పరీక్షImg = "a17f9270-338b-4e65-8719-dff0835eea32.png";
+export const పరీక్షAudio = "6417ff08-1b13-452f-a983-ff4f8ec664ee.wav";
diff --git a/src/utils/textUtils.js b/src/utils/textUtils.js
new file mode 100644
index 00000000..09a5c8fa
--- /dev/null
+++ b/src/utils/textUtils.js
@@ -0,0 +1,45 @@
+// textUtils.js
+import { doubleMetaphone } from "double-metaphone";
+import Sanscript from "@indic-transliteration/sanscript";
+import levenshtein from "fast-levenshtein";
+
+/**
+ * Transliterates Kannada text (in Unicode) to Latin.
+ * Uses Sanscript with 'kannada' → 'iast' or 'itrans' scheme.
+ */
+export function transliterateKannadaToLatin(kannadaText) {
+ return Sanscript.t(kannadaText, "kannada", "iast").toLowerCase();
+}
+
+/**
+ * Compares two English (Latin) strings using Double Metaphone.
+ * Returns primary codes and boolean match flag.
+ */
+export function compareWords(str1, str2) {
+ // Step 1: Double Metaphone
+ const [metaphone1] = doubleMetaphone(str1);
+ const [metaphone2] = doubleMetaphone(str2);
+
+ let similarity = 0;
+
+ if (metaphone1 && metaphone2) {
+ // Metaphone similarity (percentage)
+ const maxLen = Math.max(metaphone1.length, metaphone2.length);
+ const distance = levenshtein.get(metaphone1, metaphone2);
+ similarity = Math.round(((maxLen - distance) / maxLen) * 100);
+ }
+
+ // Step 2: If similarity < 50, fallback to direct Levenshtein on original words
+ if (similarity < 50) {
+ const maxLen = Math.max(str1.length, str2.length);
+ const distance = levenshtein.get(str1, str2);
+ similarity = Math.round(((maxLen - distance) / maxLen) * 100);
+ }
+
+ return {
+ metaphone1,
+ metaphone2,
+ similarity,
+ isFine: similarity >= 50,
+ };
+}
diff --git a/src/utils/transcriber.js b/src/utils/transcriber.js
new file mode 100644
index 00000000..1d61f589
--- /dev/null
+++ b/src/utils/transcriber.js
@@ -0,0 +1,30 @@
+import { pipeline, env } from "@xenova/transformers";
+
+env.localModelPath = "https://huggingface.co/Xenova/whisper-tiny/resolve/main/";
+
+let transcriberInstance = null;
+let transcriberPromise = null;
+
+export const loadTranscriber = async () => {
+ if (transcriberInstance) {
+ return transcriberInstance;
+ }
+
+ if (!transcriberPromise) {
+ transcriberPromise = pipeline(
+ "automatic-speech-recognition",
+ "Xenova/whisper-tiny",
+ { quantized: true }
+ )
+ .then((instance) => {
+ transcriberInstance = instance;
+ return instance;
+ })
+ .catch((err) => {
+ transcriberPromise = null;
+ throw err;
+ });
+ }
+
+ return transcriberPromise;
+};
diff --git a/src/views/LetterHunt/LetterHunt.jsx b/src/views/LetterHunt/LetterHunt.jsx
new file mode 100644
index 00000000..a4a3514d
--- /dev/null
+++ b/src/views/LetterHunt/LetterHunt.jsx
@@ -0,0 +1,8 @@
+import React from "react";
+import AserFlow from "../../components/Practice/AserFlow";
+
+const LetterHunt = () => {
+ return ;
+};
+
+export default LetterHunt;
diff --git a/src/views/LetterHunt/index.js b/src/views/LetterHunt/index.js
new file mode 100644
index 00000000..465114a4
--- /dev/null
+++ b/src/views/LetterHunt/index.js
@@ -0,0 +1 @@
+export { default as LetterHunt } from "./LetterHunt";
diff --git a/src/views/LoginPage/LoginPage.jsx b/src/views/LoginPage/LoginPage.jsx
index 7e11ddc2..c8143489 100644
--- a/src/views/LoginPage/LoginPage.jsx
+++ b/src/views/LoginPage/LoginPage.jsx
@@ -17,6 +17,7 @@ import { setLocalData } from "../../utils/constants";
import FingerprintJS from "@fingerprintjs/fingerprintjs";
import { initialize } from "../../services/telementryService";
import { startEvent } from "../../services/callTelemetryIntract";
+import LanguageModalNew from "../../utils/LanguageModal";
const LoginPage = () => {
const navigate = useNavigate();
@@ -24,6 +25,11 @@ const LoginPage = () => {
const [password, setPassword] = useState("");
const isMobile = useMediaQuery("(max-width:600px)");
const ranonce = useRef(false);
+ const [showModal, setShowModal] = useState(false);
+
+ const handleWordClick = () => {
+ setShowModal(true);
+ };
const handleSubmit = async (e) => {
e.preventDefault();
@@ -78,6 +84,10 @@ const LoginPage = () => {
const { visitorId } = await fp.get();
await initService(visitorId);
+ setLocalData("readMatch", true);
+ //setLocalData("rFlow", true);
+ //setLocalData("wordWall", true);
+ handleWordClick();
navigate("/discover-start");
} else {
alert("Enter correct username and password");
@@ -130,6 +140,7 @@ const LoginPage = () => {
+
setShowModal(false)} />
);
};
diff --git a/src/views/Practice/Practice.jsx b/src/views/Practice/Practice.jsx
index 21b01afc..5dd7dc8a 100644
--- a/src/views/Practice/Practice.jsx
+++ b/src/views/Practice/Practice.jsx
@@ -7,8 +7,10 @@ import BingoCard from "../../components/Practice/BingoCard";
import SyllablePuzzle from "../../components/Practice/SyllablePuzzle";
import ReadAloud from "../../components/Practice/ReadAloud";
import R3 from "../../components/Practice/R3";
+import R0 from "../../RFlow/R0";
import R1 from "../../RFlow/R1";
import R2 from "../../RFlow/R2";
+import Barakhadi from "../../RFlow/Barakhadi";
import R3Flow from "../../RFlow/R3";
import R4 from "../../RFlow/R4";
import TowreFlow from "../../components/Practice/TowreFlow";
@@ -41,6 +43,15 @@ import { MessageDialog } from "../../components/Assesment/Assesment";
import { Log } from "../../services/telementryService";
import Mechanics6 from "../../components/Practice/Mechanics6";
import Mechanics7 from "../../components/Practice/Mechanics7";
+import FluencyP1 from "../../components/Practice/FluencyP1";
+import FluencyP2 from "../../components/Practice/FluencyP2";
+import FluencyP3 from "../../components/Practice/FluencyP3";
+import FluencyP4 from "../../components/Practice/FluencyP4";
+import FluencyP5 from "../../components/Practice/FluencyP5";
+import ParagraphFlow from "../../components/Practice/ParagraphFlow";
+import AserFlow from "../../components/Practice/AserFlow";
+import ReadMatch from "../../components/Practice/ReadMatch";
+import WordWall from "../../components/Practice/WordWall";
import * as Assets from "../../utils/imageAudioLinks";
import * as s3Assets from "../../utils/s3Links";
import { getAssetUrl } from "../../utils/s3Links";
@@ -53,6 +64,7 @@ import { jwtDecode } from "jwt-decode";
import {
addLesson,
addPointer,
+ addCorrectPracticeWords,
fetchUserPoints,
createLearnerProgress,
getLessonProgressByID,
@@ -105,6 +117,18 @@ const Practice = () => {
const [rStep, setRStep] = useState(() => {
return Number(getLocalData("rStep")) || 2;
});
+ const [rStepZero, setRStepZero] = useState(() => {
+ return Number(getLocalData("rStepZero"));
+ });
+
+ useEffect(() => {
+ const interval = setInterval(() => {
+ setRStepZero(Number(getLocalData("rStepZero")));
+ }, 1000);
+ return () => clearInterval(interval);
+ }, []);
+
+ //console.log("practice rStepZero", rStepZero);
const levels = {
en: {
@@ -4217,11 +4241,23 @@ const Practice = () => {
}
const currentLevel = practiceSteps?.[currentPracticeStep]?.title || "P1";
+ const milestoneType = ["S1", "S2"].includes(currentLevel)
+ ? "showcase"
+ : "practice";
//console.log("prog", progressDatas);
+ if (level === "B" && rStepZero !== 1) {
+ setLocalData("mFail", true);
+ setLocalData("rFlow", true);
+ setLocalData("rStepZero", 0);
+ }
+
const rFlow = String(getLocalData("rFlow"));
const tFlow = String(getLocalData("tFlow"));
+ const readMatch = String(getLocalData("readMatch"));
+ //const setWordWall = setLocalData("wordWall", true);
+ const wordWallFlow = String(getLocalData("wordWall"));
// useEffect(() => {
// if (lang !== "en") {
@@ -4282,6 +4318,7 @@ const Practice = () => {
const meetsFluencyCriteria = livesData?.meetsFluencyCriteria;
setGameOverData({ gameOver: true, userWon, ...data, meetsFluencyCriteria });
};
+ //console.log("data", currentImage, parentWords);
useEffect(() => {
if (startShowCase) {
@@ -4455,7 +4492,8 @@ const Practice = () => {
const getContentFn = currentGetContent?.mechanism
? getContent
- : process.env.REACT_APP_USE_RECOMMENDATION_API === "true"
+ : process.env.REACT_APP_USE_RECOMMENDATION_API === "true" &&
+ lang === "en"
? getContentNew
: getContent;
@@ -4487,6 +4525,10 @@ const Practice = () => {
return;
}
+ if ([1, 2, 4, 5, 6, 7, 8, 9].includes(level)) {
+ const addCorrectWords = await addCorrectPracticeWords();
+ }
+
const result = await addPointer(points, milestone);
const awardedPoints = result?.result?.points;
@@ -4552,12 +4594,17 @@ const Practice = () => {
if (lang === "en" && (level === 3 || level === 6 || level === 9)) {
gameOver({ link: "/assesment-end" }, true);
setLocalData("tFlow", true);
+ //setLocalData("wordWall", true);
+ }
+ if (lang === "en") {
+ gameOver({ link: "/assesment-end" }, true);
+ setLocalData("wordWall", true);
}
try {
await addLesson({
sessionId,
- milestone: `practice`,
+ milestone: milestoneType,
lesson: "0",
progress: 0,
language: lang,
@@ -4572,6 +4619,7 @@ const Practice = () => {
setLocalData("mFail", true);
setTimeout(() => {
setLocalData("rFlow", true);
+ setLocalData("rStepZero", 0);
}, 7000);
}
}
@@ -4584,7 +4632,7 @@ const Practice = () => {
}
await addLesson({
sessionId: sessionId,
- milestone: `practice`,
+ milestone: milestoneType,
lesson: newPracticeStep,
progress: currentPracticeProgress,
language: lang,
@@ -4596,7 +4644,7 @@ const Practice = () => {
return;
}
- if (![10, 11, 12, 13, 14, 15].includes(level)) {
+ if (!["B", 10, 11, 12, 13, 14, 15].includes(level)) {
const resGetContent = await getContentFn(
currentGetContent.criteria,
lang,
@@ -4607,7 +4655,9 @@ const Practice = () => {
tags: currentGetContent?.tags,
storyMode: currentGetContent?.storyMode,
CEFR_level: currentGetContent?.CEFR_level,
- }
+ multilingual: currentGetContent?.multilingual,
+ },
+ level
);
setTotalSyllableCount(resGetContent?.totalSyllableCount);
@@ -4795,17 +4845,21 @@ const Practice = () => {
// TODO: validate the getMilestoneDetails API return
setLocalData("getMilestone", JSON.stringify({ ...getMilestoneDetails }));
- setVocabCount(getMilestoneDetails?.data?.extra?.vocabulary_count || 0);
+ setVocabCount(
+ getMilestoneDetails?.data?.extra?.vocabulary_count +
+ getMilestoneDetails?.data?.extra?.learned_voc_count || 0
+ );
setWordCount(
getMilestoneDetails?.data?.extra?.latest_towre_data?.wordsPerMinute || 0
);
- let level =
- Number(getMilestoneDetails?.data?.milestone_level?.replace("m", "")) ||
- 1;
-
- //console.log("curGetCont3", level, getMilestoneDetails);
-
- setLevel(level);
+ const levels = getMilestoneDetails?.data?.milestone_level;
+ let newLevel = levels?.startsWith("m")
+ ? Number(levels.replace("m", ""))
+ : levels;
+ setLevel(
+ levels?.startsWith("m") ? Number(levels.replace("m", "")) : levels
+ );
+ console.log("newLevel", levels);
const resLessons = await getLessonProgressByID(lang);
@@ -4842,23 +4896,26 @@ const Practice = () => {
const getCurrentContent = (stepKey) => {
const lang = getLocalData("lang") || "en";
- //console.log("curGetCont2", lang, level);
- return levelGetContent[lang]?.[level]?.find(
+ console.log("curGetCont2", lang, levels);
+ return levelGetContent[lang]?.[newLevel]?.find(
(elem) => elem.title === practiceSteps?.[stepKey]?.name
);
};
const currentGetContent = getCurrentContent(userState);
+ console.log("curContent", currentGetContent, userState);
+
const getContentFn = currentGetContent?.mechanism
? getContent
- : process.env.REACT_APP_USE_RECOMMENDATION_API === "true"
+ : process.env.REACT_APP_USE_RECOMMENDATION_API === "true" &&
+ lang === "en"
? getContentNew
: getContent;
//console.log("curGetCont", userState, currentGetContent);
- if (![10, 11, 12, 13, 14, 15].includes(level)) {
+ if (!["B", 10, 11, 12, 13, 14, 15].includes(level)) {
const resWord = await getContentFn(
currentGetContent.criteria,
lang,
@@ -4869,7 +4926,9 @@ const Practice = () => {
tags: currentGetContent?.tags,
storyMode: currentGetContent?.storyMode,
CEFR_level: currentGetContent?.CEFR_level,
- }
+ multilingual: currentGetContent?.multilingual,
+ },
+ level
);
// TODO: handle error if resWord is empty
@@ -4894,7 +4953,7 @@ const Practice = () => {
setQuestions(quesArr);
}
- if ([10, 11, 12, 13, 14, 15].includes(level)) {
+ if (["B", 10, 11, 12, 13, 14, 15].includes(level)) {
const dummyQuestions = Array.from({ length: 5 }, (_, i) => ({
id: `dummy-${i + 1}`,
}));
@@ -4935,6 +4994,7 @@ const Practice = () => {
useEffect(() => {
fetchDetails();
+ setLocalData("correctPracticeWords", null);
}, []);
useEffect(() => {
@@ -4968,7 +5028,7 @@ const Practice = () => {
};
await addLesson({
sessionId: sessionId,
- milestone: "practice",
+ milestone: milestoneType,
lesson: newCurrentPracticeStep,
progress: (newCurrentPracticeStep / practiceSteps.length) * 100,
language: lang,
@@ -4981,13 +5041,14 @@ const Practice = () => {
const getContentFn = currentGetContent?.mechanism
? getContent
- : process.env.REACT_APP_USE_RECOMMENDATION_API === "true"
+ : process.env.REACT_APP_USE_RECOMMENDATION_API === "true" &&
+ lang === "en"
? getContentNew
: getContent;
let quesArr = [];
- if (![10, 11, 12, 13, 14, 15].includes(level)) {
+ if (!["B", 10, 11, 12, 13, 14, 15].includes(level)) {
const resWord = await getContentFn(
currentGetContent.criteria,
lang,
@@ -4998,7 +5059,9 @@ const Practice = () => {
tags: currentGetContent?.tags,
storyMode: currentGetContent?.storyMode,
CEFR_level: currentGetContent?.CEFR_level,
- }
+ multilingual: currentGetContent?.multilingual,
+ },
+ level
);
setTotalSyllableCount(resWord?.totalSyllableCount);
setLivesData({
@@ -5017,7 +5080,7 @@ const Practice = () => {
setQuestions(quesArr);
}
- if ([10, 11, 12, 13, 14, 15].includes(level)) {
+ if (["B", 10, 11, 12, 13, 14, 15].includes(level)) {
const dummyQuestions = Array.from({ length: 5 }, (_, i) => ({
id: `dummy-${i + 1}`,
}));
@@ -5142,7 +5205,7 @@ const Practice = () => {
component="h4"
ml={1}
sx={{
- color: "#333F61",
+ color: color,
fontSize: "clamp(1.6rem, 2.5vw, 3.8rem)",
fontWeight: 700,
fontFamily: "Quicksand",
@@ -5182,12 +5245,20 @@ const Practice = () => {
}
}, [questions[currentQuestion]]);
- //console.log("mec", mechanism, level, rFlow, currentLevel);
+ //console.log("mecc", wordWallFlow);
const renderMechanics = () => {
if (
- (!mechanism && rFlow !== "true" && tFlow !== "true") ||
- (mechanism?.id === "mechanic_15" && rFlow !== "true" && tFlow !== "true")
+ (!mechanism &&
+ rFlow !== "true" &&
+ tFlow !== "true" &&
+ readMatch !== "true" &&
+ wordWallFlow !== "true") ||
+ (mechanism?.id === "mechanic_15" &&
+ rFlow !== "true" &&
+ tFlow !== "true" &&
+ readMatch !== "true" &&
+ wordWallFlow !== "true")
) {
const mechanics_data = questions[currentQuestion]?.mechanics_data;
@@ -5195,12 +5266,7 @@ const Practice = () => {
{
? `Guess the below image`
: `Speak the below ${questions[currentQuestion]?.contentType}`),
words:
- process.env.REACT_APP_USE_RECOMMENDATION_API === "true"
- ? mechanism?.id === "mechanic_15"
- ? questions[currentQuestion]?.mechanics_data?.[0]?.text
- : questions[currentQuestion]?.contentSourceData?.[0]?.text
- : level === 1 || level === 2 || level === 3
- ? levelOneWord
- : mechanism?.id === "mechanic_15"
+ mechanism?.id === "mechanic_15"
? questions[currentQuestion]?.mechanics_data?.[0]?.text
: questions[currentQuestion]?.contentSourceData?.[0]?.text,
hints: questions[currentQuestion]?.mechanics_data?.[0]?.hints?.text,
+ multilingual: questions[currentQuestion]?.multilingual,
contentType: currentContentType,
contentId: questions[currentQuestion]?.contentId,
setVoiceText,
@@ -5313,7 +5374,156 @@ const Practice = () => {
}}
/>
);
- } else if (rFlow === "true" && level === 1) {
+ } else if (readMatch === "true") {
+ return (
+
+ );
+ } else if (wordWallFlow === "true") {
+ return (
+
+ );
+ } else if (
+ rFlow === "true" &&
+ (level === 1 || level === "B") &&
+ rStepZero === 0
+ ) {
+ return (
+
+ );
+ } else if (
+ rFlow === "true" &&
+ (level === 1 || level === "B") &&
+ rStepZero === 1 &&
+ lang === "en"
+ ) {
return (
{
}}
/>
);
+ } else if (
+ rFlow === "true" &&
+ (level === 1 || level === "B") &&
+ rStepZero === 1 &&
+ lang !== "en"
+ ) {
+ return (
+
+ );
} else if (rFlow === "true" && level === 2 && [2, 3, 4].includes(rStep)) {
return (
{
? `Guess the below image`
: `Speak the below word`,
//
- currentImg: currentImage,
- parentWords: parentWords,
+ currentImg: questions[currentQuestion]?.contentSourceData?.[0],
+ parentWords: questions[currentQuestion]?.mechanics_data?.[0],
+ multilingual: questions[currentQuestion]?.multilingual,
contentType: currentContentType,
contentId: questions[currentQuestion]?.contentId,
setVoiceText,
@@ -5583,7 +5845,292 @@ const Practice = () => {
: `Speak the below word`,
//
currentImg: currentImage,
- parentWords: parentWords,
+ parentWords: questions[currentQuestion]?.mechanics_data?.[0],
+ contentType: currentContentType,
+ contentId: questions[currentQuestion]?.contentId,
+ setVoiceText,
+ setRecordedAudio,
+ setVoiceAnimate,
+ storyLine,
+ handleNext,
+ type: "word",
+ // image: elephant,
+ enableNext,
+ showTimer: false,
+ points,
+ steps: questions?.length,
+ currentStep: currentQuestion + 1,
+ progressData,
+ showProgress: true,
+ background:
+ isShowCase &&
+ "linear-gradient(281.02deg, #AE92FF 31.45%, #555ADA 100%)",
+ playTeacherAudio,
+ callUpdateLearner: isShowCase,
+ disableScreen,
+ isShowCase,
+ handleBack: !isShowCase && handleBack,
+ setEnableNext,
+ loading,
+ setOpenMessageDialog,
+ vocabCount,
+ wordCount,
+ }}
+ />
+ );
+ } else if (mechanism.name === "fluencyP1") {
+ return (
+
+ );
+ } else if (mechanism.name === "fluencyP2") {
+ return (
+
+ );
+ } else if (mechanism.name === "fluencyP3") {
+ return (
+
+ );
+ } else if (mechanism.name === "fluencyP4") {
+ return (
+
+ );
+ } else if (mechanism.name === "fluencyP5") {
+ return (
+
+ );
+ } else if (mechanism.name === "fluencyP6") {
+ return (
+ {
? `Guess the below image`
: `Speak the below word`,
//
- currentImg: currentImage,
- parentWords: parentWords,
+ currentImg: questions[currentQuestion]?.contentSourceData?.[0],
+ parentWords: questions[currentQuestion]?.mechanics_data?.[0],
contentType: currentContentType,
contentId: questions[currentQuestion]?.contentId,
+ multilingual: questions[currentQuestion]?.multilingual,
setVoiceText,
setRecordedAudio,
setVoiceAnimate,
diff --git a/src/views/TowreFlow/TowreFlow.jsx b/src/views/TowreFlow/TowreFlow.jsx
new file mode 100644
index 00000000..f01e1ba0
--- /dev/null
+++ b/src/views/TowreFlow/TowreFlow.jsx
@@ -0,0 +1,8 @@
+import React from "react";
+import TowreFlow from "../../components/Practice/TowreFlow";
+
+const TowreFlowPage = () => {
+ return ;
+};
+
+export default TowreFlowPage;
diff --git a/src/views/TowreFlow/index.js b/src/views/TowreFlow/index.js
new file mode 100644
index 00000000..fdbc094a
--- /dev/null
+++ b/src/views/TowreFlow/index.js
@@ -0,0 +1 @@
+export { default as TowreFlowPage } from "./TowreFlow";
diff --git a/src/views/index.js b/src/views/index.js
index cd6d8bac..095526bd 100644
--- a/src/views/index.js
+++ b/src/views/index.js
@@ -9,3 +9,5 @@ export { AssesmentEnd } from "./AssesmentEnd";
export { DiscoverStart } from "./DiscoverStart";
export { PracticeRedirectPage } from "./PracticeRedirectPage";
export { LoginPage } from "./LoginPage";
+export { LetterHunt } from "./LetterHunt";
+export { TowreFlowPage } from "./TowreFlow";