diff --git a/.vscode/dictionaries/project-words.txt b/.vscode/dictionaries/project-words.txt index 8f4070e..fab50b0 100755 --- a/.vscode/dictionaries/project-words.txt +++ b/.vscode/dictionaries/project-words.txt @@ -23,6 +23,7 @@ jsonify kmeans linalg lucide +matras Organja orgenja Peina @@ -30,6 +31,7 @@ prerender Reddy roboto Rushi +sanyukat shadcn signup sitemapindex diff --git a/abcd.code-workspace b/abcd.code-workspace index 3955a1e..d136661 100644 --- a/abcd.code-workspace +++ b/abcd.code-workspace @@ -73,9 +73,25 @@ "javascript": "javascriptreact" }, "eslint.options": { - "extensions": [".js", ".jsx", ".md", ".mdx", ".ts", ".tsx", ".astro"] - }, - "eslint.validate": ["mdx", "markdown", "javascript", "javascriptreact", "typescript", "typescriptreact", "astro"], + "extensions": [ + ".js", + ".jsx", + ".md", + ".mdx", + ".ts", + ".tsx", + ".astro" + ] + }, + "eslint.validate": [ + "mdx", + "markdown", + "javascript", + "javascriptreact", + "typescript", + "typescriptreact", + "astro" + ], "explorer.compactFolders": false, "explorer.confirmDelete": false, "explorer.confirmDragAndDrop": false, @@ -103,7 +119,10 @@ }, "git.autofetch": true, "git.branchPrefix": "feature/", - "git.branchProtection": ["develop", "main"], + "git.branchProtection": [ + "develop", + "main" + ], "git.branchRandomName.enable": true, "git.confirmSync": false, "git.enableCommitSigning": false, @@ -114,7 +133,9 @@ "js/ts.implicitProjectConfig.checkJs": true, "peacock.affectSideBarBorder": true, "peacock.color": "#abcd00", - "prettier.documentSelectors": ["**/*.astro"], + "prettier.documentSelectors": [ + "**/*.astro" + ], "prettier.printWidth": 120, "prettier.quoteProps": "consistent", "prettier.singleQuote": false, @@ -153,11 +174,11 @@ "titleBar.activeBackground": "#abcd00", "titleBar.activeForeground": "#15202b", "titleBar.inactiveBackground": "#abcd0099", - "titleBar.inactiveForeground": "#15202b99", - "tab.activeBorder": "#d5ff01" + "titleBar.inactiveForeground": "#15202b99" }, "files.exclude": { - "**/.git": false + "**/.git": false, + "**/.git/": true }, "workbench.editor.pinnedTabSizing": "compact", "workbench.editor.pinnedTabsOnSeparateRow": true, @@ -171,4 +192,4 @@ ".githooks/**": true } } -} +} \ No newline at end of file diff --git a/docs/pages.md b/docs/pages.md index 8048816..174be0e 100644 --- a/docs/pages.md +++ b/docs/pages.md @@ -21,42 +21,91 @@ This document describes the functionality and purpose of each page in the applic ### Interactive Learning Pages -#### Barahkhadi Page (/pages/barahkhadi/index.astro) +#### Alphabets Section - +##### Alphabets Explorer Page (/pages/alphabets/index.astro) -- Grid display of Hindi consonants organized in traditional groups -- Quick view popover showing barahkhadi variations for each consonant -- Interactive buttons to show/hide variations -- Clickable consonants leading to detailed pages -- Responsive layout with consonant groups + + +- Main hub showing all available alphabet categories +- Cards with category icons, titles and descriptions +- Navigation to specialized playground and board pages for each category +- Animated card interactions and hover effects + +##### Alphabet Playground (/pages/alphabets/[alphabet]/playground.astro) + + + +- Interactive keyboard-driven learning experience +- Displays letters, emojis, and spelling animations based on key presses +- Dynamic color changes for visual engagement +- Category-specific content loaded based on URL parameter +- Includes help component explaining keyboard interaction + +##### Alphabet Board (/pages/alphabets/[alphabet]/board.astro) + + + +- Complete display of all letters in selected alphabet category +- Grid layout with letter cards showing detailed information +- Organized reference view for all category items +- Back navigation to main alphabets explorer + +#### Varnmala Section + +##### Varnmala Hub Page (/pages/varnmala/index.astro) -#### Varnmala Page (/pages/varnmala.astro) + - +- Main hub for all alphabet learning activities +- Navigation to specialized practice pages +- Overview of available learning modes + +##### Alphabet Display (/pages/varnmala/alphabet.astro) + + - Displays Hindi and English alphabets - Uses Alphabet component to render letter lists - Includes help section explaining the concept -#### Typing Page (/pages/typing.astro) +##### Typing Practice (/pages/varnmala/typing.astro) - + - Interactive typing practice - Shows letters, emojis, and spelling animations - Responds to keyboard input (A-Z) - Includes visual feedback -#### Reader Page (/pages/reader.astro) +##### Reader (/pages/varnmala/reader.astro) - + - Text-to-speech functionality - Multiple speaker options (Mudra, Rutvi) - Audio control for alphabet pronunciation - Emoji display with letters +##### English Practice (/pages/varnmala/english.astro) + + + +- English alphabet practice +- Color-changing letter display +- Keyboard interaction +- Visual feedback + +#### Barahkhadi Page (/pages/barahkhadi/index.astro) + + + +- Grid display of Hindi consonants organized in traditional groups +- Quick view popover showing barahkhadi variations for each consonant +- Interactive buttons to show/hide variations +- Clickable consonants leading to detailed pages +- Responsive layout with consonant groups + #### Panel Page (/pages/panel.astro)  @@ -66,15 +115,6 @@ This document describes the functionality and purpose of each page in the applic - Custom HTML element (letter-panel) - Interactive letter display -#### English Page (/pages/hindi.astro) - - - -- English alphabet practice -- Color-changing letter display -- Keyboard interaction -- Visual feedback - #### Record Page (/pages/record.astro)  diff --git a/public/assets/images/alphabets/general/apple.jpg b/public/assets/images/alphabets/general/apple.jpg new file mode 100644 index 0000000..d9c3f95 Binary files /dev/null and b/public/assets/images/alphabets/general/apple.jpg differ diff --git a/public/map/images/andaman.webp b/public/map/images/andaman.webp new file mode 100644 index 0000000..36bb23a Binary files /dev/null and b/public/map/images/andaman.webp differ diff --git a/public/map/images/andhra.jpg b/public/map/images/andhra.jpg deleted file mode 100644 index 80795d2..0000000 Binary files a/public/map/images/andhra.jpg and /dev/null differ diff --git a/public/map/images/andhra.webp b/public/map/images/andhra.webp new file mode 100644 index 0000000..19998a2 Binary files /dev/null and b/public/map/images/andhra.webp differ diff --git a/public/map/images/arunachal.jpeg b/public/map/images/arunachal.jpeg deleted file mode 100644 index b8c5b23..0000000 Binary files a/public/map/images/arunachal.jpeg and /dev/null differ diff --git a/public/map/images/arunachal.webp b/public/map/images/arunachal.webp new file mode 100644 index 0000000..9870f41 Binary files /dev/null and b/public/map/images/arunachal.webp differ diff --git a/public/map/images/assam.jpg b/public/map/images/assam.jpg deleted file mode 100644 index 4c5a649..0000000 Binary files a/public/map/images/assam.jpg and /dev/null differ diff --git a/public/map/images/assam.webp b/public/map/images/assam.webp new file mode 100644 index 0000000..3bac374 Binary files /dev/null and b/public/map/images/assam.webp differ diff --git a/public/map/images/bihar.jpeg b/public/map/images/bihar.jpeg deleted file mode 100644 index a8972f3..0000000 Binary files a/public/map/images/bihar.jpeg and /dev/null differ diff --git a/public/map/images/bihar.webp b/public/map/images/bihar.webp new file mode 100644 index 0000000..4be92a0 Binary files /dev/null and b/public/map/images/bihar.webp differ diff --git a/public/map/images/chandigarh.webp b/public/map/images/chandigarh.webp new file mode 100644 index 0000000..edec3f8 Binary files /dev/null and b/public/map/images/chandigarh.webp differ diff --git a/public/map/images/chhatisgarh.jpg b/public/map/images/chhatisgarh.jpg deleted file mode 100644 index 86e29fb..0000000 Binary files a/public/map/images/chhatisgarh.jpg and /dev/null differ diff --git a/public/map/images/chhatisgarh.webp b/public/map/images/chhatisgarh.webp new file mode 100644 index 0000000..6ee7867 Binary files /dev/null and b/public/map/images/chhatisgarh.webp differ diff --git a/public/map/images/dadar.webp b/public/map/images/dadar.webp new file mode 100644 index 0000000..db8f95a Binary files /dev/null and b/public/map/images/dadar.webp differ diff --git a/public/map/images/delhi.jpg b/public/map/images/delhi.jpg deleted file mode 100644 index 4281da4..0000000 Binary files a/public/map/images/delhi.jpg and /dev/null differ diff --git a/public/map/images/delhi.webp b/public/map/images/delhi.webp new file mode 100644 index 0000000..f9e7b63 Binary files /dev/null and b/public/map/images/delhi.webp differ diff --git a/public/map/images/goa.jpg b/public/map/images/goa.jpg deleted file mode 100644 index 5656cc6..0000000 Binary files a/public/map/images/goa.jpg and /dev/null differ diff --git a/public/map/images/goa.webp b/public/map/images/goa.webp new file mode 100644 index 0000000..ca1ee8f Binary files /dev/null and b/public/map/images/goa.webp differ diff --git a/public/map/images/gujrat.jpg b/public/map/images/gujrat.jpg deleted file mode 100644 index 4e13a05..0000000 Binary files a/public/map/images/gujrat.jpg and /dev/null differ diff --git a/public/map/images/gujrat.webp b/public/map/images/gujrat.webp new file mode 100644 index 0000000..397c915 Binary files /dev/null and b/public/map/images/gujrat.webp differ diff --git a/public/map/images/harayana.webp b/public/map/images/harayana.webp new file mode 100644 index 0000000..a2d6393 Binary files /dev/null and b/public/map/images/harayana.webp differ diff --git a/public/map/images/haryana.jpeg b/public/map/images/haryana.jpeg deleted file mode 100644 index 8b103de..0000000 Binary files a/public/map/images/haryana.jpeg and /dev/null differ diff --git a/public/map/images/himachal.jpg b/public/map/images/himachal.jpg deleted file mode 100644 index 11e6ddd..0000000 Binary files a/public/map/images/himachal.jpg and /dev/null differ diff --git a/public/map/images/himachal.webp b/public/map/images/himachal.webp new file mode 100644 index 0000000..800a7c3 Binary files /dev/null and b/public/map/images/himachal.webp differ diff --git a/public/map/images/jharkhand.jpg b/public/map/images/jharkhand.jpg deleted file mode 100644 index 44f6efd..0000000 Binary files a/public/map/images/jharkhand.jpg and /dev/null differ diff --git a/public/map/images/jharkhand.webp b/public/map/images/jharkhand.webp new file mode 100644 index 0000000..c81a8c1 Binary files /dev/null and b/public/map/images/jharkhand.webp differ diff --git a/public/map/images/karnataka.jpg b/public/map/images/karnataka.jpg deleted file mode 100644 index 38033ed..0000000 Binary files a/public/map/images/karnataka.jpg and /dev/null differ diff --git a/public/map/images/karnataka.webp b/public/map/images/karnataka.webp new file mode 100644 index 0000000..b694925 Binary files /dev/null and b/public/map/images/karnataka.webp differ diff --git a/public/map/images/kashmir.jpeg b/public/map/images/kashmir.jpeg deleted file mode 100644 index 148f508..0000000 Binary files a/public/map/images/kashmir.jpeg and /dev/null differ diff --git a/public/map/images/kashmir.webp b/public/map/images/kashmir.webp new file mode 100644 index 0000000..dba2525 Binary files /dev/null and b/public/map/images/kashmir.webp differ diff --git a/public/map/images/kerala.jpg b/public/map/images/kerala.jpg deleted file mode 100644 index 7868262..0000000 Binary files a/public/map/images/kerala.jpg and /dev/null differ diff --git a/public/map/images/kerala.webp b/public/map/images/kerala.webp new file mode 100644 index 0000000..3c166a0 Binary files /dev/null and b/public/map/images/kerala.webp differ diff --git a/public/map/images/ladakh.jpg b/public/map/images/ladakh.jpg deleted file mode 100644 index 76eb3ba..0000000 Binary files a/public/map/images/ladakh.jpg and /dev/null differ diff --git a/public/map/images/ladakh.webp b/public/map/images/ladakh.webp new file mode 100644 index 0000000..e3de312 Binary files /dev/null and b/public/map/images/ladakh.webp differ diff --git a/public/map/images/lakshadweep.webp b/public/map/images/lakshadweep.webp new file mode 100644 index 0000000..7a96b2c Binary files /dev/null and b/public/map/images/lakshadweep.webp differ diff --git a/public/map/images/madhyapradesh.jpg b/public/map/images/madhyapradesh.jpg deleted file mode 100644 index 6764034..0000000 Binary files a/public/map/images/madhyapradesh.jpg and /dev/null differ diff --git a/public/map/images/madhyapradesh.webp b/public/map/images/madhyapradesh.webp new file mode 100644 index 0000000..b052b0e Binary files /dev/null and b/public/map/images/madhyapradesh.webp differ diff --git a/public/map/images/maharashtra.jpg b/public/map/images/maharashtra.jpg deleted file mode 100644 index 779fda3..0000000 Binary files a/public/map/images/maharashtra.jpg and /dev/null differ diff --git a/public/map/images/maharashtra.webp b/public/map/images/maharashtra.webp new file mode 100644 index 0000000..ae581bd Binary files /dev/null and b/public/map/images/maharashtra.webp differ diff --git a/public/map/images/manipur.jpeg b/public/map/images/manipur.jpeg deleted file mode 100644 index 0d266bb..0000000 Binary files a/public/map/images/manipur.jpeg and /dev/null differ diff --git a/public/map/images/manipur.webp b/public/map/images/manipur.webp new file mode 100644 index 0000000..910aa26 Binary files /dev/null and b/public/map/images/manipur.webp differ diff --git a/public/map/images/meghalaya.jpeg b/public/map/images/meghalaya.jpeg deleted file mode 100644 index c46b568..0000000 Binary files a/public/map/images/meghalaya.jpeg and /dev/null differ diff --git a/public/map/images/meghalaya.webp b/public/map/images/meghalaya.webp new file mode 100644 index 0000000..8f3fbc3 Binary files /dev/null and b/public/map/images/meghalaya.webp differ diff --git a/public/map/images/mizoram.jpg b/public/map/images/mizoram.jpg deleted file mode 100644 index bc3a1fd..0000000 Binary files a/public/map/images/mizoram.jpg and /dev/null differ diff --git a/public/map/images/mizoram.webp b/public/map/images/mizoram.webp new file mode 100644 index 0000000..35c3112 Binary files /dev/null and b/public/map/images/mizoram.webp differ diff --git a/public/map/images/nagaland.jpeg b/public/map/images/nagaland.jpeg deleted file mode 100644 index f3a94e6..0000000 Binary files a/public/map/images/nagaland.jpeg and /dev/null differ diff --git a/public/map/images/nagaland.webp b/public/map/images/nagaland.webp new file mode 100644 index 0000000..e184ef6 Binary files /dev/null and b/public/map/images/nagaland.webp differ diff --git a/public/map/images/odisha.jpg b/public/map/images/odisha.jpg deleted file mode 100644 index 02d77f8..0000000 Binary files a/public/map/images/odisha.jpg and /dev/null differ diff --git a/public/map/images/odisha.webp b/public/map/images/odisha.webp new file mode 100644 index 0000000..46d60b0 Binary files /dev/null and b/public/map/images/odisha.webp differ diff --git a/public/map/images/puducherry.webp b/public/map/images/puducherry.webp new file mode 100644 index 0000000..cbb1ab1 Binary files /dev/null and b/public/map/images/puducherry.webp differ diff --git a/public/map/images/punjab.jpg b/public/map/images/punjab.jpg deleted file mode 100644 index 0063ccf..0000000 Binary files a/public/map/images/punjab.jpg and /dev/null differ diff --git a/public/map/images/punjab.webp b/public/map/images/punjab.webp new file mode 100644 index 0000000..bbbd0fd Binary files /dev/null and b/public/map/images/punjab.webp differ diff --git a/public/map/images/rajasthan.jpg b/public/map/images/rajasthan.jpg deleted file mode 100644 index 050f51a..0000000 Binary files a/public/map/images/rajasthan.jpg and /dev/null differ diff --git a/public/map/images/rajasthan.webp b/public/map/images/rajasthan.webp new file mode 100644 index 0000000..52d2bfa Binary files /dev/null and b/public/map/images/rajasthan.webp differ diff --git a/public/map/images/sikkim.jpg b/public/map/images/sikkim.jpg deleted file mode 100644 index c87bcf9..0000000 Binary files a/public/map/images/sikkim.jpg and /dev/null differ diff --git a/public/map/images/sikkim.webp b/public/map/images/sikkim.webp new file mode 100644 index 0000000..f3dec06 Binary files /dev/null and b/public/map/images/sikkim.webp differ diff --git a/public/map/images/tamilnadu.jpeg b/public/map/images/tamilnadu.jpeg deleted file mode 100644 index e658678..0000000 Binary files a/public/map/images/tamilnadu.jpeg and /dev/null differ diff --git a/public/map/images/tamilnadu.webp b/public/map/images/tamilnadu.webp new file mode 100644 index 0000000..018252c Binary files /dev/null and b/public/map/images/tamilnadu.webp differ diff --git a/public/map/images/telangana.jpg b/public/map/images/telangana.jpg deleted file mode 100644 index a4d49a9..0000000 Binary files a/public/map/images/telangana.jpg and /dev/null differ diff --git a/public/map/images/telangana.webp b/public/map/images/telangana.webp new file mode 100644 index 0000000..450f309 Binary files /dev/null and b/public/map/images/telangana.webp differ diff --git a/public/map/images/tripura.jpg b/public/map/images/tripura.jpg deleted file mode 100644 index 295b748..0000000 Binary files a/public/map/images/tripura.jpg and /dev/null differ diff --git a/public/map/images/tripura.webp b/public/map/images/tripura.webp new file mode 100644 index 0000000..b2ecb75 Binary files /dev/null and b/public/map/images/tripura.webp differ diff --git a/public/map/images/uttarakhand.jpeg b/public/map/images/uttarakhand.jpeg deleted file mode 100644 index 83f64fa..0000000 Binary files a/public/map/images/uttarakhand.jpeg and /dev/null differ diff --git a/public/map/images/uttarakhand.webp b/public/map/images/uttarakhand.webp new file mode 100644 index 0000000..1d90d51 Binary files /dev/null and b/public/map/images/uttarakhand.webp differ diff --git a/public/map/images/uttarpradesh.jpg b/public/map/images/uttarpradesh.jpg deleted file mode 100644 index de05cee..0000000 Binary files a/public/map/images/uttarpradesh.jpg and /dev/null differ diff --git a/public/map/images/uttarpradesh.webp b/public/map/images/uttarpradesh.webp new file mode 100644 index 0000000..c96ecab Binary files /dev/null and b/public/map/images/uttarpradesh.webp differ diff --git a/public/map/images/westbengal.jpg b/public/map/images/westbengal.jpg deleted file mode 100644 index 44f6efd..0000000 Binary files a/public/map/images/westbengal.jpg and /dev/null differ diff --git a/public/map/images/westbengal.webp b/public/map/images/westbengal.webp new file mode 100644 index 0000000..8d66219 Binary files /dev/null and b/public/map/images/westbengal.webp differ diff --git a/public/mocks/cross.json b/public/mocks/cross.json new file mode 100644 index 0000000..710123d --- /dev/null +++ b/public/mocks/cross.json @@ -0,0 +1,17 @@ +[ + { + "easy": ["CAT", "DOG", "SUN", "MOON", "STAR"], + "medium": ["APPLE", "GRAPE", "ORANGE", "BERRIES"], + "hard": ["WALRUS", "GIRAFFE", "PENGUIN", "DOLPHIN"] + }, + { + "easy": ["HAT", "CAR", "BALL", "SHOE", "LAMP"], + "medium": ["CHERRY", "COCONUT", "PLUM", "MELON", "PEACH"], + "hard": ["OCTOPUS", "JACKAL", "WALRUS", "PEACOCK"] + }, + { + "easy": ["RED", "BLUE", "GREEN", "YELLOW", "PURPLE"], + "medium": ["BLACK", "WHITE", "BROWN", "ORANGE", "PINK"], + "hard": ["MAGENTA", "CYAN", "VIOLET", "MAROON"] + } +] diff --git a/src/assets/json/state.json b/src/assets/json/state.json index dcf7742..50e16b8 100644 --- a/src/assets/json/state.json +++ b/src/assets/json/state.json @@ -6,7 +6,7 @@ "dance": "Kuchipudi", "festival": "Sankranti", "description": "Kuchipudi is one of the eight major Indian classical dances and originated in Andhra Pradesh.", - "image": "andhra.jpg", + "image": "andhra.webp", "svg": "Andhra.svg", "wikiLink": "https://en.wikipedia.org/wiki/Andhra_Pradesh", "official_website": "https://www.ap.gov.in", @@ -20,10 +20,10 @@ "dance": "Bihu Dance", "festival": "Bihu", "description": "The Bihu dance is an energetic and vibrant folk dance performed during the Bihu festival in Assam.", - "image": "assam.jpg", + "image": "assam.webp", "svg": "Assam.svg", "wikiLink": "https://en.wikipedia.org/wiki/Assam", - "official_website": "https://www.assam.gov.in", + "official_website": "https://assam.gov.in", "isActive": true }, { @@ -33,10 +33,10 @@ "dance": "Yak Dance", "festival": "Losar, Reh", "description": "The Yak dance is a traditional dance form performed during major festivals in Arunachal Pradesh.", - "image": "arunachal.jpeg", + "image": "arunachal.webp", "svg": "ArunachalPradesh.svg", "wikiLink": "https://en.wikipedia.org/wiki/Arunachal_Pradesh", - "official_website": "https://www.arunachalpradesh.gov.in", + "official_website": "https://arunachalpradesh.gov.in", "isActive": true, "alternate_dance": "Bari Dance" }, @@ -47,7 +47,7 @@ "dance": "Perini Shiva Thandavam", "festival": "Bonalu", "description": "Perini Shiva Thandavam is a dance dedicated to Lord Shiva, performed in Telangana.", - "image": "telangana.jpg", + "image": "telangana.webp", "svg": "Telangana.svg", "wikiLink": "https://en.wikipedia.org/wiki/Telangana", "official_website": "https://www.telangana.gov.in", @@ -60,7 +60,7 @@ "dance": "Panthi Dance", "festival": "Bastar Dussehra", "description": "Panthi Dance is a traditional dance performed by the Satnami community of Chhattisgarh.", - "image": "chhatisgarh.jpg", + "image": "chhatisgarh.webp", "svg": "Chhatisgarh.svg", "wikiLink": "https://en.wikipedia.org/wiki/Chhattisgarh", "official_website": "https://www.cgstate.gov.in", @@ -74,7 +74,7 @@ "dance": "Kathak", "festival": "Republic Day Parade", "description": "Delhi, the capital of India, hosts Kathak performances and cultural events during national celebrations.", - "image": "delhi.jpg", + "image": "delhi.webp", "svg": "Delhi.svg", "wikiLink": "https://en.wikipedia.org/wiki/Delhi", "official_website": "https://delhi.gov.in", @@ -87,10 +87,10 @@ "dance": "Tarpa Dance", "festival": "Nariyal Poornima", "description": "Tarpa Dance is a tribal dance performed in Dadra and Nagar Haveli and Daman and Diu, especially during harvest festivals.", - "image": "dadra_daman.jpg", + "image": "dadar.webp", "svg": "DadraNagarHaveliDamanDiu.svg", "wikiLink": "https://en.wikipedia.org/wiki/Dadra_and_Nagar_Haveli_and_Daman_and_Diu", - "official_website": "https://dddh.gov.in", + "official_website": "https://ddd.gov.in", "isActive": true }, { @@ -100,7 +100,7 @@ "dance": "Dekhnni", "festival": "Carnival", "description": "Dekhnni is a semi-classical Goan dance form that blends Indian and Western influences.", - "image": "goa.jpg", + "image": "goa.webp", "svg": "Goa.svg", "wikiLink": "https://en.wikipedia.org/wiki/Goa", "official_website": "https://www.goa.gov.in", @@ -113,7 +113,7 @@ "dance": "Garba", "festival": "Navratri", "description": "Garba is a popular folk dance of Gujarat performed during the Navratri festival.", - "image": "gujrat.jpg", + "image": "gujrat.webp", "svg": "Gujrat.svg", "wikiLink": "https://en.wikipedia.org/wiki/Gujarat", "official_website": "https://gujaratindia.gov.in", @@ -126,7 +126,7 @@ "dance": "Kathakali", "festival": "Onam", "description": "Kathakali is a classical Indian dance form known for its elaborate costumes and expressive gestures.", - "image": "kerala.jpg", + "image": "kerala.webp", "svg": "Kerala.svg", "wikiLink": "https://en.wikipedia.org/wiki/Kerala", "official_website": "https://kerala.gov.in", @@ -140,10 +140,10 @@ "dance": "Yakshagana", "festival": "Dasara", "description": "Yakshagana is a traditional theatre form that combines dance, music, and dialogue in Karnataka.", - "image": "karnataka.jpg", + "image": "karnataka.webp", "svg": "Karnataka.svg", "wikiLink": "https://en.wikipedia.org/wiki/Karnataka", - "official_website": "https://www.karnataka.gov.in", + "official_website": "https://karnataka.gov.in/english", "isActive": true }, { @@ -153,10 +153,10 @@ "dance": "Lavani", "festival": "Ganesh Chaturthi", "description": "Lavani is a popular folk dance form of Maharashtra, known for its rhythm and vibrant performance.", - "image": "maharashtra.jpg", + "image": "maharashtra.webp", "svg": "Maharashtra.svg", "wikiLink": "https://en.wikipedia.org/wiki/Maharashtra", - "official_website": "https://www.maharashtra.gov.in", + "official_website": "http://www.maharashtra.gov.in/", "isActive": true }, { @@ -166,7 +166,7 @@ "dance": "Matki Dance", "festival": "Lokrang Festival", "description": "Matki Dance is a traditional folk dance performed by women during celebrations in Madhya Pradesh.", - "image": "madhyapradesh.jpg", + "image": "madhyapradesh.webp", "svg": "MadhyaPradesh.svg", "wikiLink": "https://en.wikipedia.org/wiki/Madhya_Pradesh", "official_website": "https://www.mp.gov.in", @@ -180,7 +180,7 @@ "dance": "Odissi", "festival": "Rath Yatra", "description": "Odissi is one of the eight classical dance forms of India, originating from Odisha.", - "image": "odisha.jpg", + "image": "odisha.webp", "svg": "Odisha.svg", "wikiLink": "https://en.wikipedia.org/wiki/Odisha", "official_website": "https://www.odisha.gov.in", @@ -193,7 +193,7 @@ "dance": "Chhau Dance", "festival": "Durga Puja", "description": "Chhau Dance is a semi-classical dance form performed during festivals in West Bengal.", - "image": "westbengal.jpg", + "image": "westbengal.webp", "svg": "WestBengal.svg", "wikiLink": "https://en.wikipedia.org/wiki/West_Bengal", "official_website": "https://wb.gov.in", @@ -203,10 +203,10 @@ "id": "jharkhand", "state_id": 11, "name": "Jharkhand", - "dance": "Chhau Dance", + "dance": "Jhumair", "festival": "Sarhul", - "description": "Chhau is a semi-classical dance performed during festivals in Jharkhand.", - "image": "jharkhand.jpg", + "description": "Jhumair is a semi-classical dance performed during festivals in Jharkhand.", + "image": "jharkhand.webp", "svg": "Jharkhand.svg", "wikiLink": "https://en.wikipedia.org/wiki/Jharkhand", "official_website": "https://www.jharkhand.gov.in", @@ -220,7 +220,7 @@ "dance": "Jat-Jatin", "festival": "Chhath Puja", "description": "Jat-Jatin is a popular folk dance of Bihar that represents rural life and relationships.", - "image": "bihar.jpeg", + "image": "bihar.webp", "svg": "Bihar.svg", "wikiLink": "https://en.wikipedia.org/wiki/Bihar", "official_website": "https://state.bihar.gov.in", @@ -234,7 +234,7 @@ "dance": "Kathak", "festival": "Diwali", "description": "Kathak is one of the eight major classical dance forms of India, originating from Uttar Pradesh.", - "image": "uttarpradesh.jpg", + "image": "uttarpradesh.webp", "svg": "UttarPradesh.svg", "wikiLink": "https://en.wikipedia.org/wiki/Uttar_Pradesh", "official_website": "https://up.gov.in", @@ -247,7 +247,7 @@ "dance": "Chang Lo", "festival": "Hornbill Festival", "description": "Chang Lo is a traditional dance performed by the Chang tribe during celebrations in Nagaland.", - "image": "nagaland.jpeg", + "image": "nagaland.webp", "svg": "Nagaland.svg", "wikiLink": "https://en.wikipedia.org/wiki/Nagaland", "official_website": "https://www.nagaland.gov.in", @@ -260,7 +260,7 @@ "dance": "Manipuri Dance", "festival": "Yaoshang", "description": "Manipuri Dance is a classical dance form of Manipur, emphasizing graceful movements and expressions.", - "image": "manipur.jpeg", + "image": "manipur.webp", "svg": "Manipur.svg", "wikiLink": "https://en.wikipedia.org/wiki/Manipur", "official_website": "https://manipur.gov.in", @@ -273,7 +273,7 @@ "dance": "Nongkrem Dance", "festival": "Shad Suk Mynsiem", "description": "Nongkrem Dance is a religious dance performed by the Khasi tribe in Meghalaya.", - "image": "meghalaya.jpeg", + "image": "meghalaya.webp", "svg": "Meghalaya.svg", "wikiLink": "https://en.wikipedia.org/wiki/Meghalaya", "official_website": "https://www.meghalaya.gov.in", @@ -286,7 +286,7 @@ "dance": "Cheraw Dance", "festival": "Chapchar Kut", "description": "Cheraw Dance, also known as the Bamboo Dance, is a traditional dance of Mizoram.", - "image": "mizoram.jpg", + "image": "mizoram.webp", "svg": "Mizoram.svg", "wikiLink": "https://en.wikipedia.org/wiki/Mizoram", "official_website": "https://mizoram.gov.in", @@ -299,10 +299,10 @@ "dance": "Ghoomar", "festival": "Teej", "description": "Ghoomar is a traditional folk dance performed by women in Rajasthan, known for its swirling movements.", - "image": "rajasthan.jpg", + "image": "rajasthan.webp", "svg": "Rajasthan.svg", "wikiLink": "https://en.wikipedia.org/wiki/Rajasthan", - "official_website": "https://www.rajasthan.gov.in", + "official_website": "https://rajasthan.gov.in/", "isActive": true }, { @@ -312,7 +312,7 @@ "dance": "Singhi Cham", "festival": "Losar", "description": "Singhi Cham is a mask dance performed during Buddhist festivals in Sikkim.", - "image": "sikkim.jpg", + "image": "sikkim.webp", "svg": "Sikkim.svg", "wikiLink": "https://en.wikipedia.org/wiki/Sikkim", "official_website": "https://sikkim.gov.in", @@ -325,7 +325,7 @@ "dance": "Bharatanatyam", "festival": "Pongal", "description": "Bharatanatyam is one of the oldest classical dance forms of India, originating in Tamil Nadu.", - "image": "tamilnadu.jpeg", + "image": "tamilnadu.webp", "svg": "TamilNadu.svg", "wikiLink": "https://en.wikipedia.org/wiki/Tamil_Nadu", "official_website": "https://www.tn.gov.in", @@ -338,7 +338,7 @@ "dance": "Hojagiri Dance", "festival": "Kharchi Puja", "description": "Hojagiri Dance is a traditional dance performed by the Reang community of Tripura.", - "image": "tripura.jpg", + "image": "tripura.webp", "svg": "Tripura.svg", "wikiLink": "https://en.wikipedia.org/wiki/Tripura", "official_website": "https://tripura.gov.in", @@ -351,7 +351,7 @@ "dance": "Phag Dance", "festival": "Lohri", "description": "Phag Dance is a folk dance that celebrates the harvest season in Haryana.", - "image": "haryana.jpeg", + "image": "harayana.webp", "svg": "Harayana.svg", "wikiLink": "https://en.wikipedia.org/wiki/Haryana", "official_website": "https://haryana.gov.in", @@ -365,7 +365,7 @@ "dance": "Bhangra", "festival": "Lohri", "description": "Bhangra is a lively and energetic folk dance of Punjab, traditionally performed during harvest celebrations.", - "image": "punjab.jpg", + "image": "punjab.webp", "svg": "Punjab.svg", "wikiLink": "https://en.wikipedia.org/wiki/Punjab,_India", "official_website": "https://punjab.gov.in", @@ -378,10 +378,10 @@ "dance": "Chholiya Dance", "festival": "Kumbh Mela", "description": "Chholiya Dance is a traditional folk dance of Uttarakhand, performed during weddings and celebrations.", - "image": "uttarakhand.jpeg", + "image": "uttarakhand.webp", "svg": "Uttarakhand.svg", "wikiLink": "https://en.wikipedia.org/wiki/Uttarakhand", - "official_website": "https://uttarakhand.gov.in", + "official_website": "https://uk.gov.in/", "isActive": true }, { @@ -391,7 +391,7 @@ "dance": "Nati", "festival": "Kullu Dussehra", "description": "Nati is a traditional folk dance of Himachal Pradesh, performed during festivals and celebrations.", - "image": "himachal.jpg", + "image": "himachal.webp", "svg": "HimachalPradesh.svg", "wikiLink": "https://en.wikipedia.org/wiki/Himachal_Pradesh", "official_website": "https://himachal.nic.in", @@ -405,7 +405,7 @@ "dance": "Rouf", "festival": "Lohri, Navroz", "description": "Rouf is a traditional Kashmiri dance performed during festivals and special occasions.", - "image": "kashmir.jpeg", + "image": "kashmir.webp", "svg": "Kashmir.svg", "wikiLink": "https://en.wikipedia.org/wiki/Jammu_and_Kashmir", "official_website": "https://jk.gov.in", @@ -419,10 +419,10 @@ "dance": "Nicobarese Dance", "festival": "Island Tourism Festival", "description": "Nicobarese Dance is performed by the Nicobarese tribe during festive occasions in the Andaman and Nicobar Islands.", - "image": "andaman.jpg", + "image": "andaman.webp", "svg": "AndamanAndNicobar.svg", "wikiLink": "https://en.wikipedia.org/wiki/Andaman_and_Nicobar_Islands", - "official_website": "https://www.andaman.gov.in", + "official_website": "https://andaman.gov.in/", "isActive": true }, { @@ -432,7 +432,7 @@ "dance": "Gidda and Bhangra", "festival": "Rose Festival", "description": "Chandigarh celebrates its rich culture with performances of Gidda and Bhangra during various festivals.", - "image": "chandigarh.jpg", + "image": "chandigarh.webp", "svg": "Chandigarh.svg", "wikiLink": "https://en.wikipedia.org/wiki/Chandigarh", "official_website": "https://chandigarh.gov.in", @@ -445,7 +445,7 @@ "dance": "Lava Dance", "festival": "Minicoy Fest", "description": "Lava Dance is a traditional dance performed by the people of Lakshadweep during joyous occasions.", - "image": "lakshadweep.jpg", + "image": "lakshadweep.webp", "svg": "Lakshadweep.svg", "wikiLink": "https://en.wikipedia.org/wiki/Lakshadweep", "official_website": "https://lakshadweep.gov.in", @@ -458,10 +458,10 @@ "dance": "Cham Dance", "festival": "Hemis Festival", "description": "Cham Dance is a mask dance performed during Buddhist festivals in Ladakh.", - "image": "ladakh.jpg", + "image": "ladakh.webp", "svg": "Ladakh.svg", "wikiLink": "https://en.wikipedia.org/wiki/Ladakh", - "official_website": "https://ladakh.nic.in", + "official_website": "https://nicladakh.nic.in", "isActive": true }, { @@ -471,10 +471,10 @@ "dance": "Garadi Dance", "festival": "Pondicherry Heritage Festival", "description": "Garadi Dance is a traditional dance form of Puducherry, performed during temple festivals.", - "image": "puducherry.jpg", + "image": "puducherry.webp", "svg": "Pondicherry.svg", "wikiLink": "https://en.wikipedia.org/wiki/Puducherry", "official_website": "https://www.py.gov.in", "isActive": true } -] +] \ No newline at end of file diff --git a/src/assets/screenshots/alphabets/board.png b/src/assets/screenshots/alphabets/board.png new file mode 100644 index 0000000..3bc3d98 Binary files /dev/null and b/src/assets/screenshots/alphabets/board.png differ diff --git a/src/assets/screenshots/alphabets/index.png b/src/assets/screenshots/alphabets/index.png new file mode 100644 index 0000000..61b0d11 Binary files /dev/null and b/src/assets/screenshots/alphabets/index.png differ diff --git a/src/assets/screenshots/alphabets/playground.png b/src/assets/screenshots/alphabets/playground.png new file mode 100644 index 0000000..20fb2c7 Binary files /dev/null and b/src/assets/screenshots/alphabets/playground.png differ diff --git a/src/assets/screenshots/varnmala/alphabets.png b/src/assets/screenshots/varnmala/alphabets.png new file mode 100644 index 0000000..963c1ec Binary files /dev/null and b/src/assets/screenshots/varnmala/alphabets.png differ diff --git a/src/assets/screenshots/varnmala/english.png b/src/assets/screenshots/varnmala/english.png new file mode 100644 index 0000000..b6cfa53 Binary files /dev/null and b/src/assets/screenshots/varnmala/english.png differ diff --git a/src/assets/screenshots/varnmala/index.png b/src/assets/screenshots/varnmala/index.png new file mode 100644 index 0000000..4713e07 Binary files /dev/null and b/src/assets/screenshots/varnmala/index.png differ diff --git a/src/assets/screenshots/varnmala/reader.png b/src/assets/screenshots/varnmala/reader.png new file mode 100644 index 0000000..625f89a Binary files /dev/null and b/src/assets/screenshots/varnmala/reader.png differ diff --git a/src/assets/screenshots/varnmala/typing.png b/src/assets/screenshots/varnmala/typing.png new file mode 100644 index 0000000..304c95c Binary files /dev/null and b/src/assets/screenshots/varnmala/typing.png differ diff --git a/src/assets/styles/about.css b/src/assets/styles/about.css index d42f679..c9dce34 100644 --- a/src/assets/styles/about.css +++ b/src/assets/styles/about.css @@ -2,8 +2,8 @@ display: block; padding: 1rem; - > .moto { + & .moto { color: #3a8657; - font-size: 3rem; + font-size: 2rem; } } diff --git a/src/assets/styles/alphabets/[alphabet]/board.css b/src/assets/styles/alphabets/[alphabet]/board.css new file mode 100644 index 0000000..f831cd6 --- /dev/null +++ b/src/assets/styles/alphabets/[alphabet]/board.css @@ -0,0 +1,136 @@ +.container__alphabets { + display: flex; + flex-direction: column; + width: 100%; + height: calc(100vh - 4rem); + overflow-y: scroll; + gap: 1rem; + align-items: flex-start; + justify-content: flex-start; + padding: 1rem; + + & .head { + display: flex; + gap: 1rem; + align-items: center; + width: 100%; + justify-content: space-between; + padding: 1rem; + border-radius: 0.5rem; + font-weight: 600; + box-shadow: 0 0 10px rgba(0, 0, 0, 0.1); + + & .back { + margin-bottom: 0 !important; + } + } + + & .flip__all__button { + background-color: var(--background); + border: none; + padding: 0.5rem 1rem; + border-radius: 0.5rem; + font-weight: 200; + margin: 1rem 0; + cursor: pointer; + transition: all 0.3s ease; + align-self: flex-end; + } + + & .flip__all__button:hover { + transform: translateY(-2px); + } + + & .flip__all__button.active { + transform: scale(0.95); + background-color: color-mix(in srgb, var(--primary) 70%, black 30%); + } + + & .container__alphabet { + display: grid; + gap: 2rem; + container-type: inline-size; + container-name: layout; + font-family: "atkinson"; + position: relative; + max-width: 2000px; + margin-inline: auto; + width: 100%; + } + + & .container__alphabet::before { + content: ''; + position: absolute; + inset: 0; + background: radial-gradient(circle at 50% 0%, + color-mix(in srgb, var(--primary) 5%, transparent), + transparent 70%); + pointer-events: none; + z-index: -1; + } + + & .container__alphabet .list { + display: grid; + gap: 2rem; + grid-template-columns: repeat(auto-fill, minmax(min(100%, 280px), 1fr)); + padding: 1rem; + position: relative; + } + + /* Animation for list items */ + & .container__alphabet .list>* { + opacity: 0; + transform: translateY(20px); + animation: slideUp 0.6s ease forwards; + } + + & .container__alphabet .list>*:nth-child(1n) { + animation-delay: 0.1s; + } + + & .container__alphabet .list>*:nth-child(2n) { + animation-delay: 0.2s; + } + + & .container__alphabet .list>*:nth-child(3n) { + animation-delay: 0.3s; + } + + & .container__alphabet .list>*:nth-child(4n) { + animation-delay: 0.4s; + } + + @keyframes slideUp { + from { + opacity: 0; + transform: translateY(20px); + } + + to { + opacity: 1; + transform: translateY(0); + } + } + + @container layout (width <=1200px) { + .container__alphabet { + padding: 1.5rem; + } + + .container__alphabet .list { + gap: 1.5rem; + grid-template-columns: repeat(auto-fill, minmax(min(100%, 250px), 1fr)); + } + } + + @container layout (width <=768px) { + .container__alphabet { + padding: 1rem; + } + + .container__alphabet .list { + gap: 1rem; + grid-template-columns: repeat(auto-fill, minmax(min(100%, 200px), 1fr)); + } + } +} \ No newline at end of file diff --git a/src/assets/styles/alphabets/[alphabet]/playground.css b/src/assets/styles/alphabets/[alphabet]/playground.css new file mode 100644 index 0000000..74c09c8 --- /dev/null +++ b/src/assets/styles/alphabets/[alphabet]/playground.css @@ -0,0 +1,154 @@ +:root { + --letter__txt--2: blueviolet; + --spelling__txt--3: palevioletred; + --steps: 10; + --steps-desc: 30; +} + +.container__typing { + display: grid; + grid-template-columns: repeat(2, 1fr); + grid-template-rows: 35% auto auto; + grid-template-areas: + "letter content__display" + "spelling spelling" + "description description"; + grid-auto-flow: row; + height: calc(100vh - 10rem); + width: auto; + font-size: clamp(0.8rem, 1vw, 1.2rem); + place-items: center; + will-change: contents; + + & .letter { + grid-area: letter; + font-size: clamp(10em, 20vw, 25em); + color: var(--letter__txt--2); + padding: 0; + transition: color 0.5s ease-in; + text-align: center; + line-height: 1; + width: 100%; + } + + & .content__display { + grid-area: content__display; + display: flex; + justify-content: center; + align-items: center; + width: 100%; + height: 100%; + overflow: hidden; + padding: 1rem; + } + + & .content__spelling { + font-size: 5.5rem; + display: flex; + justify-content: center; + align-items: center; + width: 100%; + height: 100%; + font-weight: bold; + text-align: center; + } + + & .emoji { + font-size: clamp(6em, 15vw, 18em); + } + + & .image__container { + width: 100%; + height: 100%; + display: none; + justify-content: center; + align-items: center; + overflow: hidden; + } + + & .image__container img { + max-width: 100%; + max-height: 100%; + object-fit: contain; + border-radius: 8px; + box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1); + } + + & .animation { + animation: + typing 1.5s steps(var(--steps, 10)) forwards, + blink 0.5s step-end infinite alternate; + width: 0; + overflow: hidden; + white-space: nowrap; + } + + & .spelling { + grid-area: spelling; + grid-column: 1/3; + grid-row: 2/3; + width: 0; + max-width: fit-content; + white-space: nowrap; + overflow: hidden; + border-right: 3px solid; + font-family: monospace; + font-size: clamp(4em, 10vw, 12em); + transition: all 0.5s ease-in-out; + color: var(--spelling__txt--3); + margin: 0 auto; + } + + & .spelling:not(.animation) { + width: auto; + } + + & .description { + grid-area: description; + width: 100%; + text-align: center; + font-family: monospace; + font-size: clamp(1.5em, 3vw, 2em); + padding: 1rem; + margin-top: 2rem; + color: var(--spelling__txt--3); + min-height: 2em; + overflow: hidden; + } + + & .description.animation { + width: 0; + display: inline-block; + max-width: fit-content; + margin: 0 auto; + border-right: 3px solid; + animation: + typing 2s steps(var(--steps-desc, 30)) forwards, + blink 0.5s step-end infinite alternate; + } + + & .description:not(.animation) { + width: auto; + border-right: none; + } + + & .description:empty { + border-right: none; + } +} + +@keyframes typing { + from { + width: 0; + } + + to { + width: 100%; + } +} + +@keyframes blink { + 50% { + border-color: transparent; + } +} \ No newline at end of file diff --git a/src/assets/styles/alphabets/index.css b/src/assets/styles/alphabets/index.css new file mode 100644 index 0000000..79e2e4f --- /dev/null +++ b/src/assets/styles/alphabets/index.css @@ -0,0 +1,135 @@ +.container__alphabets { + padding: 2rem 1.5rem; + max-width: 1400px; + margin: 0 auto; + + & .alphabets__header { + text-align: center; + margin-bottom: 2rem; + } + + & .alphabets__header h1 { + font-size: clamp(2.5rem, 5vw, 4rem); + font-weight: 800; + background: linear-gradient(135deg, var(--primary), var(--primary-light)); + -webkit-background-clip: text; + background-clip: text; + color: transparent; + margin-bottom: 1rem; + } + + & .subtitle { + color: var(--secondary); + font-size: 1.1rem; + max-width: 600px; + margin: 0 auto; + } + + & .list__alphabets { + display: grid; + grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); + gap: 1rem; + padding: 0; + list-style: none; + } + + & .card { + opacity: 0; + animation: fadeInUp 0.4s ease forwards; + } + + & .card__link { + display: block; + text-decoration: none; + background: linear-gradient(145deg, var(--background), color-mix(in srgb, var(--background) 97%, var(--text) 3%)); + border-radius: 1rem; + border: 1px solid var(--border); + padding: 2rem; + transition: all 0.3s ease; + height: 100%; + overflow: hidden; + } + + & .card__link:hover { + transform: translateY(-5px); + box-shadow: + 0 20px 30px rgba(0, 0, 0, 0.1), + 0 0 0 1px rgba(var(--primary-rgb, 44, 62, 80), 0.1); + } + + & .card__content { + position: relative; + } + + & .category__title { + font-size: 1.5rem; + font-weight: 700; + color: var(--text); + margin: 0 0 1rem 0; + transition: color 0.3s ease; + } + + & .category__description { + color: var(--secondary); + font-size: 0.95rem; + line-height: 1.6; + margin: 0; + } + + & .card__arrow { + position: absolute; + top: 0; + right: 0; + font-size: 1.5rem; + color: var(--primary); + opacity: 0; + transition: all 0.3s ease; + transform: translateX(-10px); + } + + & .card__link:hover .category__title { + background: linear-gradient(135deg, var(--primary), var(--primary-light)); + -webkit-background-clip: text; + background-clip: text; + color: transparent; + } + + & .card__link:hover .card__arrow { + opacity: 1; + transform: translateX(0); + } +} + + +@keyframes fadeInUp { + to { + opacity: 1; + transform: translateY(0); + } +} + +@media (max-width: 768px) { + .container__alphabets { + padding: 1rem; + + & .list__alphabets { + grid-template-columns: 1fr; + gap: 1rem; + } + + & .card__link { + padding: 1.5rem; + } + + & .card__actions { + flex-direction: column; + gap: 0.5rem; + } + + & .btn { + width: 100%; + font-size: 1.1rem; + padding: 0.75rem 1rem; + } + } +} \ No newline at end of file diff --git a/src/assets/styles/crossword.css b/src/assets/styles/crossword.css new file mode 100644 index 0000000..ee9652d --- /dev/null +++ b/src/assets/styles/crossword.css @@ -0,0 +1,654 @@ +:root { + /* Color Palette */ + --primary-color: #6366f1; + --secondary-color: #06b6d4; + --accent1-color: #f87171; + --accent2-color: #60a5fa; + --accent3-color: #fbbf24; + --accent4-color: #34d399; + --accent5-color: #ec4899; + --accent6-color: #818cf8; + --accent7-color: #f97316; + --accent8-color: #38bdf8; + + /* Text & Background */ + --text-color: #1e293b; + --text-light: #64748b; + --bg-color: #f8fafc; + --bg-dark: #0f172a; + + /* Effects */ + --border-radius: 16px; + --box-shadow: 0 10px 25px -5px rgba(0, 0, 0, 0.1); + --transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1); + + /* Stats */ + --stats-button-bg: #e2e8f0; + --stats-button-text: #334155; + --stats-button-border: #cbd5e1; + --stats-button-hover: #818cf8; +} + +/* Main Layout */ +.puzzle-container { + position: relative; + width: 100%; + max-width: 800px; + margin: 0 auto; + min-height: 100vh; +} + +/* Settings Components */ +.settings-trigger { + position: fixed; + top: 82px; + right: 32px; + width: 60px; + height: 60px; + border-radius: 50%; + background: var(--primary-color); + border: none; + cursor: pointer; + box-shadow: var(--box-shadow); + transition: var(--transition); + z-index: 1000; + display: flex; + align-items: center; + justify-content: center; + + svg { + width: 28px; + height: 28px; + color: white; + } + + &:hover { + background: var(--accent6-color); + transform: scale(1.05) rotate(45deg); + } + + &.active { + transform: scale(1) rotate(180deg); + background: var(--accent1-color); + } +} + +/* Default Slide-in Settings Panel (Desktop) */ +.settings-panel { + position: fixed; + top: 180px; + right: -320px; + width: 220px; + background: #ffffff; + border-radius: var(--border-radius); + box-shadow: var(--box-shadow); + padding: 10px; + z-index: 999; + transition: all 0.4s cubic-bezier(0.34, 1.56, 0.64, 1); + border-image: linear-gradient(45deg, var(--primary-color), var(--accent2-color), var(--accent4-color)) 1; + + * { + color: var(--text-color); + } + + .controls-group { + display: flex; + flex-direction: column; + gap: 16px; + } + + &:not(.active) { + opacity: 0; + pointer-events: none; + transform: translateX(0); + } + + &.active { + opacity: 1; + pointer-events: auto; + transform: translateX(-340px); + } +} + +/* Control Buttons */ +.control-btn { + background: var(--primary-color); + color: white; + border: none; + border-radius: var(--border-radius); + padding: 14px 24px; + cursor: pointer; + transition: var(--transition); + display: flex; + align-items: center; + justify-content: center; + gap: 10px; + font-weight: 600; + font-size: 1rem; + letter-spacing: 0.01em; + + &:hover { + background: var(--accent6-color); + transform: translateY(-3px); + } + + &:active { + transform: translateY(0); + } + + newPuzzleBtn { + background: var(--secondary-color); + &:hover { background: var(--accent7-color); } + } + + resetBtn { + background: var(--accent4-color); + &:hover { background: var(--accent6-color); } + } + + solutionBtn { + background: var(--accent1-color); + &:hover { background: var(--accent5-color); } + } + + clearBtn { + background: var(--accent5-color); + &:hover { background: var(--accent1-color); } + &::before { content: "🗑️"; margin-right: 8px; } + } + + themeToggle { + background: var(--accent6-color); + &:hover { background: var(--primary-color); } + } +} + +/* Puzzle Grid */ +.grid { + display: grid; + gap: 12px; + padding: 28px; + border-radius: var(--border-radius); + box-shadow: var(--box-shadow), 0 0 0 15px rgba(99, 102, 241, 0.08); + margin: 0 auto; + width: 100%; + max-width: 600px; + aspect-ratio: 1; + border: 6px solid #f1f5f9; + + .cell { + aspect-ratio: 1; + display: flex; + justify-content: center; + align-items: center; + background: #f8fafc; + border: 3px solid #e2e8f0; + border-radius: 12px; + font-size: 24px; + font-weight: bold; + color: var(--text-color); + transition: var(--transition); + cursor: pointer; + + &:hover { + transform: translateY(-3px); + background: #eef2ff; + border-color: var(--primary-color); + } + + &.selected { + background: var(--primary-color); + color: white; + transform: scale(1.08); + box-shadow: 0 8px 20px rgba(99, 102, 241, 0.4); + animation: pulse 1.5s infinite alternate; + } + + &[class*="word-color-"] { + color: white !important; + border-color: transparent !important; + box-shadow: 0 4px 12px rgba(0, 0, 0, 0.3); + } + + &.word-color-1 { background-color: var(--accent7-color); } + &.word-color-2 { background-color: var(--secondary-color); } + &.word-color-3 { background-color: var(--accent1-color); } + &.word-color-4 { background-color: var(--accent4-color); } + &.word-color-5 { background-color: var(--accent5-color); } + &.word-color-6 { background-color: var(--accent6-color); } + &.word-color-7 { background-color: var(--accent3-color); } + &.word-color-8 { background-color: var(--accent8-color); } + } +} + +/* Word List & Details */ +details { + width: 100%; + border-radius: var(--border-radius); + background-color: rgba(99, 102, 241, 0.08); + box-shadow: 0 4px 15px rgba(0, 0, 0, 0.03); + margin: 20px 0; + border-left: 4px solid var(--primary-color); + + /* Default open state styles */ + background-color: rgba(99, 102, 241, 0.05); + box-shadow: 0 8px 20px rgba(0, 0, 0, 0.05); + + summary { + padding: 16px 24px; + cursor: pointer; + font-weight: 600; + display: flex; + align-items: center; + gap: 12px; + position: relative; + border-bottom: 2px solid rgba(99, 102, 241, 0.1); + margin-bottom: 12px; + + /* Custom arrow SVG using pseudo-element */ + &::after { + content: ""; + position: absolute; + right: 24px; + width: 20px; + height: 20px; + background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%236366f1' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'%3E%3C/polyline%3E%3C/svg%3E"); + background-repeat: no-repeat; + background-position: center; + transition: var(--transition); + transform: rotate(180deg); /* Arrow points up when open */ + } + + /* Remove default arrow */ + &::-webkit-details-marker { + display: none; + } + } + + /* Closed state styles */ + &:not([open]) { + background-color: rgba(99, 102, 241, 0.08); + box-shadow: 0 4px 15px rgba(0, 0, 0, 0.03); + + summary { + border-bottom: none; + margin-bottom: 0; + + &::after { + transform: rotate(0deg); /* Arrow points down when closed */ + } + } + } +} + +.word-list { + display: flex; + flex-wrap: wrap; + gap: 12px; + padding: 16px; + + .word { + padding: 8px 16px; + border-radius: 25px; + font-weight: 600; + color: white; + transition: var(--transition); + box-shadow: 0 6px 12px rgba(0, 0, 0, 0.1); + background-color: var(--accent6-color); + + &.found { + text-decoration: line-through; + opacity: 0.7; + transform: scale(0.97); + } + } +} + +/* Stats Components */ +.stats-container { + display: flex; + gap: 24px; + margin: 32px 0; + justify-content: center; + + .stats-button { + background: linear-gradient(135deg, var(--primary-color), var(--accent6-color)); + border: 2px solid transparent; + border-radius: var(--border-radius); + padding: 14px 28px; + font-weight: 600; + transition: var(--transition); + color: white; + position: relative; + overflow: hidden; + + &:hover { + transform: translateY(-2px); + box-shadow: var(--box-shadow); + background: linear-gradient(135deg, var(--accent2-color), var(--accent8-color)); + } + + &:nth-child(1) { background: var(--accent4-color); } + &:nth-child(2) { background: var(--secondary-color); } + &:nth-child(3) { background: linear-gradient(135deg, var(--accent5-color), var(--accent3-color)); } + &:nth-child(4) { background: linear-gradient(135deg, var(--accent2-color), var(--accent8-color)); } + } +} + +/* Animations */ +/*@keyframes pulse { + 0% { transform: scale(1.08); } + 100% { transform: scale(1.14); } +} + +@keyframes darkPulse { + 0% { transform: scale(1.08); } + 100% { transform: scale(1.14); } +}*/ + +/* Settings backdrop for mobile */ +.settings-backdrop { + position: fixed; + top: 0; + left: 0; + width: 100%; + height: 100%; + background: rgba(15, 23, 42, 0.7); + /*backdrop-filter: blur(3px);*/ + z-index: 998; + opacity: 0; + visibility: hidden; + /*transition: all 0.3s ease;*/ + display: none; /* Hidden by default in desktop mode */ + + &.active { + opacity: 1; + visibility: visible; + } +} + +/* Responsive Styles */ +@media (max-width: 768px) { + /* Show settings backdrop in mobile */ + /*.settings-backdrop { + display: block; + } + */ + /* Pop-up settings in mobile view (removed slide animation) */ + .settings-panel { + position: fixed; + top: 50%; + left: 50%; + right: auto; + /*transform: translate(-50%, -50%) scale(0.9);*/ + width: 280px; + padding: 16px; + opacity: 0; + visibility: hidden; + pointer-events: none; + border: 2px solid var(--primary-color); + /* Pop-up animation for mobile */ + /*transition: opacity 0.25s ease, visibility 0.25s ease, transform 0.25s ease;*/ + + .settings-header { + display: flex; + justify-content: space-between; + align-items: center; + margin-bottom: 14px; + padding-bottom: 10px; + border-bottom: 2px solid var(--accent2-color); + } + + .settings-title { + font-weight: 700; + font-size: 1.1rem; + color: var(--primary-color); + } + + .close-settings { + background: transparent; + border: none; + cursor: pointer; + width: 28px; + height: 28px; + display: flex; + align-items: center; + justify-content: center; + border-radius: 50%; + + &:hover { + background: rgba(99, 102, 241, 0.1); + } + + svg { + width: 20px; + height: 20px; + color: var(--accent1-color); + } + } + + .controls-group { + gap: 12px; + } + + &.active { + opacity: 1; + visibility: visible; + pointer-events: auto; + transform: translate(-50%, -50%) scale(1); + } + } + + .grid { + padding: 18px; + max-width: 100%; + gap: 8px; + + .cell { + font-size: 1.3rem; + border-width: 2px; + border-radius: 10px; + } + } + + .settings-trigger { + top: 70px; + right: 25px; + width: 50px; + height: 50px; + + svg { + width: 24px; + height: 24px; + } + } + + .control-btn { + padding: 12px 16px; + font-size: 0.9rem; + } + + .stats-container { + flex-wrap: wrap; + justify-content: center; + gap: 16px; + } + + .stats-button { + min-width: 80px; + padding: 12px 20px; + font-size: 0.9rem; + } +} + +@media (max-width: 480px) { + .settings-trigger { + top: 72px; + right: 12px; + width: 45px; + height: 45px; + } + + .settings-panel { + width: 85%; + max-width: 260px; + padding: 14px; + } + + .stats-container { + flex-wrap: wrap; + justify-content: center; + gap: 10px; + } + + .stats-button { + padding: 10px 16px; + font-size: 0.85rem; + min-width: 70px; + } + + .control-btn { + padding: 10px 14px; + font-size: 0.85rem; + } + + details summary { + padding: 12px 16px; + + &::after { + right: 16px; + width: 16px; + height: 16px; + } + } + + .word-list { + gap: 8px; + padding: 12px; + + .word { + padding: 6px 12px; + font-size: 0.9rem; + } + } + + .grid { + padding: 12px; + gap: 6px; + + .cell { + font-size: 1.4rem; + border-width: 2px; + border-radius: 8px; + } + } +} + +@media (max-width: 360px) { + .grid { + padding: 8px; + gap: 4px; + + .cell { + font-size: 1.3rem; + border-width: 1px; + border-radius: 6px; + } + } + + .settings-trigger { + top: 72px; + right: 10px; + width: 40px; + height: 40px; + + svg { + width: 20px; + height: 20px; + } + } + + .settings-panel { + width: 90%; + max-width: 240px; + padding: 12px; + } + + .control-btn { + padding: 8px 12px; + font-size: 0.8rem; + } + + .stats-button { + padding: 8px 12px; + font-size: 0.8rem; + min-width: 65px; + } + + .word-list .word { + padding: 5px 10px; + font-size: 0.8rem; + } +} + +/* Dark Theme */ +.puzzle-container[data-theme="dark"] { + --primary-color: #a78bfa; + --secondary-color: #2dd4bf; + --text-color: #f8fafc; + --stats-button-bg: #1e293b; + --stats-button-text: #e2e8f0; + --stats-button-border: #334155; + --stats-button-hover: #a78bfa; + + .grid { + background: #1e293b; + border-color: #334155; + + .cell { + background: #334155; + border-color: #475569; + color: #f1f5f9; + + &:hover { background: var(--accent1-color); } + &.selected { + background: var(--primary-color); + box-shadow: 0 8px 20px rgba(167, 139, 250, 0.4); + animation: darkPulse 1.5s infinite alternate; + } + } + } + + details { + background-color: rgba(167, 139, 250, 0.15); + border-left-color: var(--primary-color); + + summary::after { + background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23a78bfa' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'%3E%3C/polyline%3E%3C/svg%3E"); + } + } + + .settings-panel { + background: #1e293b; + + @media (min-width: 769px) { + border-image: linear-gradient(45deg, var(--primary-color), var(--secondary-color), var(--accent4-color)) 1; + } + + @media (max-width: 768px) { + border-color: var(--primary-color); + + .settings-title { + color: var(--primary-color); + } + + .close-settings svg { + color: var(--accent1-color); + } + } + } + + .settings-backdrop { + background: rgba(0, 0, 0, 0.7); + } +} \ No newline at end of file diff --git a/src/assets/styles/dialog.css b/src/assets/styles/dialog.css index fe42cc0..3d950db 100644 --- a/src/assets/styles/dialog.css +++ b/src/assets/styles/dialog.css @@ -119,3 +119,13 @@ dialog[closing]::backdrop { background: rgba(0, 0, 0, 0); } } + +@keyframes fadeOut { + from { + background: rgba(0, 0, 0, 0.5); + } + + to { + background: rgba(0, 0, 0, 0); + } +} diff --git a/src/assets/styles/english.css b/src/assets/styles/english.css deleted file mode 100644 index 9a2e65c..0000000 --- a/src/assets/styles/english.css +++ /dev/null @@ -1,97 +0,0 @@ -.container__hindi { - display: flex; - justify-content: center; - align-items: center; - height: 100vh; - width: auto; - font-size: 1rem; - place-items: center; - will-change: contents; -} - -.letter { - font-size: min(100vw, 100vh); - line-height: 1; - text-align: center; - margin: 0; - padding: 0; - color: var(--letter__txt--2); - transition: color 0.5s ease-in; -} - -/* Controls styles */ -.controls { - position: relative; - background-color: color-mix(in srgb, var(--background) 95%, var(--text) 5%); - padding: 1rem; - z-index: 100; - display: flex; - justify-content: space-around; - box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1); - color: var(--text); -} - -.control-group { - display: flex; - align-items: center; - gap: 1rem; - accent-color: var(--primary); -} - -.control-group label { - font-weight: bold; - color: var(--text); -} - -.control-group select, -.control-group button { - padding: 0.5rem; - border-radius: 4px; - border: 1px solid var(--border); - background-color: var(--background); - color: var(--text); -} - -.control-group button { - cursor: pointer; - transition: all 0.3s; -} - -.control-group button:hover, -.control-group select:hover { - background-color: color-mix(in srgb, var(--background) 90%, var(--text) 10%); - border-color: var(--primary); -} - -/* Background styles */ -.bg-gradient1 { - background: linear-gradient(45deg, #ff6b6b, #4ecdc4); -} - -.bg-gradient2 { - background: linear-gradient(45deg, #a8e6cf, #dcedc1); -} - -.bg-pattern1 { - background-image: repeating-linear-gradient(45deg, - rgba(0, 0, 0, 0.1) 0px, - rgba(0, 0, 0, 0.1) 2px, - transparent 2px, - transparent 4px); -} - -.no-background { - background: none !important; -} - -@keyframes letterPop { - 0% { - transform: scale(0.8); - opacity: 0.5; - } - - 100% { - transform: scale(1); - opacity: 1; - } -} \ No newline at end of file diff --git a/src/assets/styles/header.css b/src/assets/styles/header.css index 0c0ad15..40c845b 100644 --- a/src/assets/styles/header.css +++ b/src/assets/styles/header.css @@ -10,14 +10,15 @@ border-bottom: 1px solid var(--border); height: var(--header-h); padding: 0 1.5rem; - display: flex; + display: grid; + grid-template-columns: 1fr auto 1fr; align-items: center; - justify-content: space-between; .header__brand { display: flex; align-items: center; gap: 0.75rem; + justify-self: start; .logo { width: 2rem; @@ -33,6 +34,7 @@ .caption { text-align: center; + justify-self: center; h1 { font-size: 1.25rem; @@ -48,14 +50,27 @@ display: flex; gap: 1rem; align-items: center; + justify-self: end; justify-content: flex-end; } } +[slot="header-right"] { + display: flex; + align-items: center; + max-width: 33vw; + flex-wrap: nowrap; + justify-content: flex-end; +} + +.controls { + flex-shrink: 0; +} + .switch { background-color: black; height: 2rem; width: 2rem; border-radius: 50%; cursor: pointer; -} +} \ No newline at end of file diff --git a/src/assets/styles/letter.css b/src/assets/styles/letter.css deleted file mode 100644 index f0b9f31..0000000 --- a/src/assets/styles/letter.css +++ /dev/null @@ -1,103 +0,0 @@ -.controls { - position: relative; - background-color: rgba(255, 255, 255, 0.95); - padding: 1rem; - z-index: 100; - display: flex; - justify-content: space-around; - box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1); - color: black; -} - -.control-group { - display: flex; - align-items: center; - gap: 1rem; - accent-color: purple; - - label { - font-weight: bold; - } - - select, - button { - padding: 0.5rem; - border-radius: 4px; - border: 1px solid #ccc; - } - - button { - cursor: pointer; - background: #fff; - transition: background-color 0.3s; - } - - button:hover { - background: #f0f0f0; - } -} - -.section__board { - display: grid; - grid-auto-flow: row; - grid-gap: 4px; - margin-block: 1rem; - - & .letter__part { - min-height: 100vh; - display: grid; - place-items: center; - grid-auto-rows: max-content; - - & mark { - color: grey; - font-size: 1rem; - } - - .letter__big { - font-size: 56svmin; - font-weight: bold; - transition: all 0.3s; - animation: letterPop 0.3s ease-out; - } - } - - & .meaning__part { - padding: 1rem; - background-color: rgb(43 26 26); - display: grid; - grid-template-columns: 5rem 30% max-content; - grid-gap: 4px; - grid-auto-flow: column; - - & .meaning-content { - max-width: 800px; - margin: 0 auto; - line-height: 1.6; - } - } -} - -/* Gradient backgrounds */ -.bg-gradient1 { - background: linear-gradient(45deg, #ff6b6b, #4ecdc4); -} - -.bg-gradient2 { - background: linear-gradient(45deg, #a8e6cf, #dcedc1); -} - -.no-background { - background-image: none; - background-color: initial; -} - -.bg-pattern1 { - background-image: repeating-linear-gradient( - 45deg, - rgba(0, 0, 0, 0.1) 0px, - rgba(0, 0, 0, 0.1) 2px, - transparent 2px, - transparent 4px - ); -} diff --git a/src/assets/styles/map/map.css b/src/assets/styles/map/map.css index 2adce2b..ba13f1e 100644 --- a/src/assets/styles/map/map.css +++ b/src/assets/styles/map/map.css @@ -9,10 +9,9 @@ position: relative; & svg { - width: 100%; - height: auto; max-width: 100%; } + .tooltip { position: absolute; background-color: rgba(0, 0, 0, 0.8); @@ -23,6 +22,7 @@ pointer-events: none; z-index: 500; display: none; + transform: translate(-300%, -200%); } & path { @@ -37,4 +37,4 @@ fill: #ffa500; transform: scale(1); } -} +} \ No newline at end of file diff --git a/src/assets/styles/map/popup.css b/src/assets/styles/map/popup.css index e7d835f..b8453f4 100644 --- a/src/assets/styles/map/popup.css +++ b/src/assets/styles/map/popup.css @@ -31,7 +31,7 @@ &__image { width: 100%; height: auto; - max-height: 200px; + max-height: 220px; object-fit: cover; border-radius: 8px; margin: 10px 0; diff --git a/src/assets/styles/map/state.css b/src/assets/styles/map/state.css index f5cacce..ce4d033 100644 --- a/src/assets/styles/map/state.css +++ b/src/assets/styles/map/state.css @@ -11,16 +11,6 @@ --spacing-unit: 1rem; } -/* Main Content Wrapper */ -main { - max-width: 1400px; - margin: 0 auto; - padding: calc(var(--spacing-unit) * 2); - display: flex; - flex-direction: column; - gap: calc(var(--spacing-unit) * 3); -} - /* Header Container */ .container_header { text-align: center; @@ -28,14 +18,14 @@ main { background-color: var(--primary-bg); border-radius: 8px; box-shadow: var(--shadow-md); +} - h1 { - font-size: 2.5rem; - color: var(--primary-text); - font-weight: 700; - letter-spacing: -0.5px; - margin: 0; - } +.container_header h1 { + font-size: 2.5rem; + color: var(--primary-text); + font-weight: 700; + letter-spacing: -0.5px; + margin: 0; } /* Main Container */ @@ -51,23 +41,23 @@ main { /* SVG Container (Left Side) */ #state-svg-container { flex: 0.8; - padding: calc(var(--spacing-unit) * 2); + padding: calc(var(--spacing-unit) * 1); background-color: var(--secondary-bg); border-radius: 8px; box-shadow: var(--shadow-md); +} - h3 { - margin-bottom: calc(var(--spacing-unit) * 1.5); - color: var(--primary-text); - font-size: 1.5rem; - text-align: center; - } +#state-svg-container h3 { + margin-bottom: calc(var(--spacing-unit) * 1.5); + color: var(--primary-text); + font-size: 1.5rem; + text-align: center; +} - #state-svg { - width: 100%; - height: auto; - min-height: 300px; - } +#state-svg { + width: 100%; + height: auto; + min-height: 300px; } /* Right Content */ @@ -76,31 +66,31 @@ main { display: flex; flex-direction: column; gap: calc(var(--spacing-unit) * 2); +} - img { - width: 100%; - height: auto; - object-fit: cover; - border-radius: 8px; - box-shadow: var(--shadow-md); - } +.right-content img { + width: 100%; + height: auto; + object-fit: cover; + border-radius: 8px; + box-shadow: var(--shadow-md); +} - .content-text { - display: flex; - flex-direction: column; - gap: calc(var(--spacing-unit) * 1.5); - - a { - color: var(--accent-color); - text-decoration: none; - font-weight: 500; - margin-top: var(--spacing-unit); - - &:hover { - text-decoration: underline; - } - } - } +.content-text { + display: flex; + flex-direction: column; + gap: calc(var(--spacing-unit) * 1.5); +} + +.content-text a { + color: var(--accent-color); + text-decoration: none; + font-weight: 500; + margin-top: var(--spacing-unit); +} + +.content-text a:hover { + text-decoration: underline; } /* Info Table */ @@ -111,37 +101,62 @@ main { border-radius: 8px; overflow: hidden; box-shadow: var(--shadow-md); +} - th, - td { - padding: calc(var(--spacing-unit) * 1.2); - border: 1px solid var(--border-color); - color: rgba(46, 41, 55, 0.911); - } +.info-table th, .info-table td { + padding: calc(var(--spacing-unit) * 1.2); + border: 1px solid var(--border-color); + color: rgba(46, 41, 55, 0.911); +} - th { - background: var(--accent-color); - color: black; - text-align: left; - font-size: 1.3rem; - letter-spacing: 0.5px; - } +.info-table th { + background: var(--accent-color); + color: rgb(10, 10, 10); /* Change header text color to white */ + text-align: left; + font-size: 1.4rem; + letter-spacing: 0.5px; +} - tr { - &:nth-child(even) { - background-color: var(--secondary-bg); - } - &:hover { - background-color: color-mix(in srgb, var(--secondary-bg) 80%, var(--accent-color) 20%); - transition: background-color 0.2s ease; - } - } +/* Style for the official website link */ +.info-table th a { + color: white; /* Change link color to white */ + text-decoration: none; + font-weight: 500; + font-size: 1.2rem; +} - td:first-child { - font-weight: 600; - color: var(--primary-text); - width: 30%; - } +.info-table th a:hover { + text-decoration: underline; /* Add underline on hover */ + opacity: 0.8; +} + +.info-table tr:nth-child(even) { + background-color: var(--secondary-bg); +} + +.info-table tr:hover { + background-color: color-mix(in srgb, var(--secondary-bg) 80%, var(--accent-color) 20%); + transition: background-color 0.2s ease; +} + +.info-table td:first-child { + font-weight: 600; + color: var(--primary-text); + width: 30%; +} + +/* Quick Facts Link */ +.info-table .quick-facts-link { + color: #d24d4d; + font-weight: 500; + text-decoration: none; + margin-left: 10px; + display: inline-block; +} + +.info-table .quick-facts-link:hover { + text-decoration: underline; + opacity: 0.8; } /* Error State */ @@ -161,12 +176,11 @@ main { font-size: 2rem; } - #state-svg-container, - .right-content { + #state-svg-container, .right-content { flex: 1; } .info-table { font-size: 0.9rem; } -} +} \ No newline at end of file diff --git a/src/assets/styles/typing.css b/src/assets/styles/typing.css deleted file mode 100644 index 469c14f..0000000 --- a/src/assets/styles/typing.css +++ /dev/null @@ -1,64 +0,0 @@ -/* following :root block added by css color collector */ -:root { - --letter__txt--2: blueviolet; - --spelling__txt--3: palevioletred; - --steps: 10; -} - -.container__typing { - display: grid; - grid-template-columns: repeat(2, 1fr); - grid-template-rows: 40% auto; - grid-template-areas: "letter emoji" "spelling spelling"; - grid-auto-flow: row; - height: 100vh; - width: auto; - font-size: clamp(0.8rem, 1vw, 1.2rem); - place-items: center; - will-change: contents; - - & .letter { - grid-area: letter; - font-size: clamp(10em, 20vw, 25em); - color: var(--letter__txt--2); - padding-left: 10vh; - transition: color 0.5s ease-in; - } - - & .emoji { - grid-area: emoji; - font-size: clamp(6em, 15vw, 18em); - } - - & .animation { - animation: - typing 1s steps(var(--steps, 10)), - blink 0.5s step-end infinite alternate; - } - - & .spelling { - grid-area: spelling; - grid-column: 1/3; - grid-row: 2/3; - width: clamp(6ch, 50vw, 12ch); - white-space: nowrap; - overflow: hidden; - border-right: 3px solid; - font-family: monospace; - font-size: clamp(4em, 10vw, 12em); - transition: all 0.5s ease-in-out; - color: var(--spelling__txt--3); - } -} - -@keyframes typing { - from { - width: 0; - } -} - -@keyframes blink { - 50% { - border-color: transparent; - } -} diff --git a/src/assets/styles/varnmala.css b/src/assets/styles/varnmala/alphabet.css similarity index 96% rename from src/assets/styles/varnmala.css rename to src/assets/styles/varnmala/alphabet.css index 3b2b1aa..4216eba 100644 --- a/src/assets/styles/varnmala.css +++ b/src/assets/styles/varnmala/alphabet.css @@ -30,9 +30,10 @@ color: var(--background); } -.container__varnmala { +.container__alphabets { + #english, & #hindi { scroll-margin-top: calc(var(--header-height) + 80px); } -} +} \ No newline at end of file diff --git a/src/assets/styles/barahkhadi/consonant.css b/src/assets/styles/varnmala/barahkhadi/consonant.css similarity index 100% rename from src/assets/styles/barahkhadi/consonant.css rename to src/assets/styles/varnmala/barahkhadi/consonant.css diff --git a/src/assets/styles/barahkhadi/index.css b/src/assets/styles/varnmala/barahkhadi/index.css similarity index 99% rename from src/assets/styles/barahkhadi/index.css rename to src/assets/styles/varnmala/barahkhadi/index.css index 9b35e2e..60a2484 100644 --- a/src/assets/styles/barahkhadi/index.css +++ b/src/assets/styles/varnmala/barahkhadi/index.css @@ -1,6 +1,6 @@ .container__barahkhadi { padding: 1rem; - height: 100%; + height: calc(100vh - 5rem); overflow-y: auto; & .consonants__rows { diff --git a/src/assets/styles/varnmala/english.css b/src/assets/styles/varnmala/english.css new file mode 100644 index 0000000..d9433b5 --- /dev/null +++ b/src/assets/styles/varnmala/english.css @@ -0,0 +1,179 @@ +.container__hindi { + display: flex; + justify-content: center; + align-items: center; + height: 100vh; + width: auto; + font-size: 1rem; + place-items: center; + will-change: contents; +} + +.letter { + font-size: min(100vw, 100vh); + line-height: 1; + text-align: center; + margin: 0; + padding: 0; + color: var(--letter__txt--2); + transition: color 0.5s ease-in; +} + +.control-group button:hover, +.control-group select:hover { + background-color: color-mix(in srgb, var(--background) 90%, var(--text) 10%); + border-color: var(--primary); + transform: translateY(-1px); +} + +/* Container styles */ +.container__english { + & .letter { + font-size: min(100vw, 100vh); + line-height: 1; + text-align: center; + margin: 0; + padding: 0; + color: var(--letter__txt--2); + transition: color 0.5s ease-in; + } + + /* Background styles */ + & .bg-gradient1 { + background: linear-gradient(45deg, #ff6b6b, #4ecdc4); + } + + & .bg-gradient2 { + background: linear-gradient(45deg, #a8e6cf, #dcedc1); + } + + & .bg-pattern1 { + background-image: repeating-linear-gradient(45deg, + rgba(0, 0, 0, 0.1) 0px, + rgba(0, 0, 0, 0.1) 2px, + transparent 2px, + transparent 4px); + } + + & .no-background { + background: none !important; + } +} + +@keyframes letterPop { + 0% { + transform: scale(0.8); + opacity: 0.5; + } + + .bg-gradient2 { + background: linear-gradient(45deg, #a8e6cf, #dcedc1); + } +} + +/* Controls styles */ +.controls { + background-color: color-mix(in srgb, var(--background) 95%, var(--text) 5%); + padding: 0.5rem 0.7rem; + z-index: 100; + display: flex; + justify-content: center; + align-items: center; + height: 100vh; + width: auto; + font-size: 1rem; + place-items: center; + will-change: contents; +} + +.letter { + font-size: min(100vw, 100vh); + line-height: 1; + text-align: center; + margin: 0; + padding: 0; + color: var(--letter__txt--2); + transition: color 0.5s ease-in; +} + +.control-group button:hover, +.control-group select:hover { + background-color: color-mix(in srgb, var(--background) 90%, var(--text) 10%); + border-color: var(--primary); + transform: translateY(-1px); +} + +/* Container styles */ +.container__english { + & .letter { + font-size: min(100vw, 100vh); + line-height: 1; + text-align: center; + margin: 0; + padding: 0; + color: var(--letter__txt--2); + transition: color 0.5s ease-in; + } + + /* Background styles */ + & .bg-gradient1 { + background: linear-gradient(45deg, #ff6b6b, #4ecdc4); + } + + /* Background styles */ + .bg-gradient1 { + background: linear-gradient(45deg, #ff6b6b, #4ecdc4); + } + + .bg-gradient2 { + background: linear-gradient(45deg, #a8e6cf, #dcedc1); + } + + .bg-pattern1 { + background-image: repeating-linear-gradient(45deg, + rgba(0, 0, 0, 0.1) 0px, + rgba(0, 0, 0, 0.1) 2px, + transparent 2px, + transparent 4px); + } + + .no-background { + background: none !important; + } + + @keyframes letterPop { + 0% { + transform: scale(0.8); + opacity: 0.5; + } + + 100% { + transform: scale(1); + opacity: 1; + } + } + + .bg-pattern1 { + background-image: repeating-linear-gradient(45deg, + rgba(0, 0, 0, 0.1) 0px, + rgba(0, 0, 0, 0.1) 2px, + transparent 2px, + transparent 4px); + } + + .no-background { + background: none !important; + } + + @keyframes letterPop { + 0% { + transform: scale(0.8); + opacity: 0.5; + } + + 100% { + transform: scale(1); + opacity: 1; + } + } +} diff --git a/src/assets/styles/varnmala/index.css b/src/assets/styles/varnmala/index.css new file mode 100644 index 0000000..cc6ba7f --- /dev/null +++ b/src/assets/styles/varnmala/index.css @@ -0,0 +1,106 @@ +.container__varnmala { + padding: 2rem; + max-width: 1200px; + margin: 0 auto; + + & .list__alphabets { + display: grid; + grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); + gap: 2rem; + padding: 0; + list-style: none; + } + + & .card { + opacity: 0; + animation: fadeInUp 0.6s ease forwards; + transform: translateY(20px); + } + + & .card__link { + display: block; + text-decoration: none; + background: linear-gradient(145deg, var(--background), color-mix(in srgb, var(--background) 97%, var(--text) 3%)); + border-radius: 1rem; + border: 1px solid var(--border); + padding: 2rem; + transition: all 0.3s ease; + height: 100%; + } + + & .card__link:hover { + transform: translateY(-5px); + box-shadow: + 0 20px 30px rgba(0, 0, 0, 0.1), + 0 0 0 1px rgba(var(--primary-rgb, 44, 62, 80), 0.1); + } + + & .card__content { + position: relative; + } + + & .category__title { + font-size: 1.5rem; + font-weight: 700; + color: var(--text); + margin: 0 0 1rem 0; + transition: color 0.3s ease; + } + + & .category__description { + color: var(--secondary); + font-size: 0.95rem; + line-height: 1.6; + margin: 0; + } + + & .card__arrow { + position: absolute; + top: 0; + right: 0; + font-size: 1.5rem; + color: var(--primary); + opacity: 0; + transition: all 0.3s ease; + transform: translateX(-10px); + } + + & .card__link:hover .category__title { + background: linear-gradient(135deg, var(--primary), var(--primary-light)); + -webkit-background-clip: text; + background-clip: text; + color: transparent; + } + + & .card__link:hover .card__arrow { + opacity: 1; + transform: translateX(0); + } +} + +@keyframes fadeInUp { + from { + opacity: 0; + transform: translateY(20px); + } + + to { + opacity: 1; + transform: translateY(0); + } +} + +@media (max-width: 768px) { + .container__varnmala { + padding: 1rem; + } + + .list__alphabets { + grid-template-columns: 1fr; + gap: 1rem; + } + + .card__link { + padding: 1.5rem; + } +} \ No newline at end of file diff --git a/src/assets/styles/reader.css b/src/assets/styles/varnmala/reader.css similarity index 95% rename from src/assets/styles/reader.css rename to src/assets/styles/varnmala/reader.css index 45376a9..fb43614 100644 --- a/src/assets/styles/reader.css +++ b/src/assets/styles/varnmala/reader.css @@ -4,23 +4,22 @@ } #container__reader { - font-size: min(40rem, 45vw); + font-size: min(40rem, 35vw); display: grid; place-items: center; grid-template-columns: repeat(auto-fit, minmax(min(100%, 250px), 1fr)); place-content: center; color: var(--main__txt); - height: 100vh; outline: none; text-transform: uppercase; transform: rotate(0deg); transition: all 0.3s ease-in-out; will-change: contents; text-align: center; - min-height: 60vh; line-height: 1; padding: 1rem; gap: 0.5rem; + overflow: hidden; } .hide { diff --git a/src/components/LetterCard.astro b/src/components/LetterCard.astro new file mode 100644 index 0000000..e343678 --- /dev/null +++ b/src/components/LetterCard.astro @@ -0,0 +1,291 @@ +--- +import { type AlphabetEntry } from "@/types/alphabet.ts"; + +interface Props { + item: AlphabetEntry; + category: string; +} + +const { item, category } = Astro.props; +--- + +
{item.letter}
+{item.description}
+{item.emoji}
+ ) : ( +{item.text}
+ ) + } +Choose a category to discover different alphabet representations
+{getCategoryDescription(category)}
+Quick Facts | |
---|---|
+ Quick Facts
+ {stateInfo.official_website && (
+ <>
+ + + Visit the official website of {name} + + > + )} + |
+ |
Dance Form | {dance} |
Origin | {name}, India |
Festival | {festival} |
Description | {description} + |
Description | +
+ {description} Read more about {dance} on Wikipedia - |
{section.description}
+ → +