diff --git a/.gitignore b/.gitignore index 2736ed59..31437c3a 100755 --- a/.gitignore +++ b/.gitignore @@ -1,7 +1,7 @@ # See https://help.github.com/ignore-files/ for more about ignoring files. # dependencies -/node_modules/* +**/node_modules/* /.astro/* # testing diff --git a/.vscode/dictionaries/project-words.txt b/.vscode/dictionaries/project-words.txt index 3ffb2d53..a662e2f6 100755 --- a/.vscode/dictionaries/project-words.txt +++ b/.vscode/dictionaries/project-words.txt @@ -48,6 +48,7 @@ kmeans Kolkata letterpad linalg +lintify lucide LXXX Madhyam diff --git a/CHANGELOG.md b/CHANGELOG.md index d30bfa22..5616996b 100755 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -26,6 +26,11 @@ Created Repo from template - Added Nakshtra Page - Home Page Redesign +## [3.2.0] - 2025-07-20 + +- Added Poem section +- update CNAME + ### [Unreleased] Here we write upgrading notes for brands. It's a team effort to make them as straightforward as possible. diff --git a/CNAME b/CNAME index 64cb1414..808cb444 100644 --- a/CNAME +++ b/CNAME @@ -1 +1 @@ -parixan.xyz \ No newline at end of file +abcdkbd.com \ No newline at end of file diff --git a/abcd.code-workspace b/abcd.code-workspace index ad0233ad..ff629e3b 100644 --- a/abcd.code-workspace +++ b/abcd.code-workspace @@ -64,7 +64,7 @@ "editor.inlayHints.enabled": "offUnlessPressed", "editor.insertSpaces": true, "editor.linkedEditing": true, - "editor.minimap.enabled": false, + "editor.minimap.enabled": true, "editor.minimap.renderCharacters": false, "editor.minimap.size": "fill", "editor.multiCursorModifier": "alt", diff --git a/package-lock.json b/package-lock.json index 15a0dbde..fd2ff0bc 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@recursivezero/abcd", - "version": "3.0.0", + "version": "3.2.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@recursivezero/abcd", - "version": "3.0.0", + "version": "3.2.0", "license": "MIT", "dependencies": { "@astrojs/check": "0.9.4", @@ -20,8 +20,6 @@ "clsx": "2.1.0", "dotenv": "16.4.5", "dotenv-expand": "11.0.6", - "nanostores": "1.0.1", - "tailwind-merge": "2.2.0", "typescript": "5.6.2", "zod": "3.25.67" }, @@ -269,6 +267,7 @@ "version": "7.27.6", "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.27.6.tgz", "integrity": "sha512-vbavdySgbTTrmFE+EsiqUTzlOr5bzlnJtUv9PynGCAKvfQqjIXbvFdumPM/GxMDfyuGMJaJAU6TO4zc1Jf1i8Q==", + "dev": true, "license": "MIT", "engines": { "node": ">=6.9.0" @@ -7186,20 +7185,6 @@ "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" } }, - "node_modules/nanostores": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/nanostores/-/nanostores-1.0.1.tgz", - "integrity": "sha512-kNZ9xnoJYKg/AfxjrVL4SS0fKX++4awQReGqWnwTRHxeHGZ1FJFVgTqr/eMrNQdp0Tz7M7tG/TDaX8QfHDwVCw==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "engines": { - "node": "^20.0.0 || >=22.0.0" - } - }, "node_modules/natural-compare": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", @@ -9188,19 +9173,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/tailwind-merge": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/tailwind-merge/-/tailwind-merge-2.2.0.tgz", - "integrity": "sha512-SqqhhaL0T06SW59+JVNfAqKdqLs0497esifRrZ7jOaefP3o64fdFNDMrAQWZFMxTLJPiHVjRLUywT8uFz1xNWQ==", - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.23.5" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/dcastil" - } - }, "node_modules/text-table": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", diff --git a/package.json b/package.json index 6c3835d1..299251d6 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@recursivezero/abcd", - "version": "3.1.0", + "version": "3.2.0", "description": "A website for our kids trial phase of abcdkbd.com", "homepage": "https://parixan.xyz", "displayName": "abcd", @@ -120,8 +120,6 @@ "clsx": "2.1.0", "dotenv": "16.4.5", "dotenv-expand": "11.0.6", - "nanostores": "1.0.1", - "tailwind-merge": "2.2.0", "typescript": "5.6.2", "zod": "3.25.67" }, diff --git a/public/CNAME b/public/CNAME deleted file mode 100644 index b87fe653..00000000 --- a/public/CNAME +++ /dev/null @@ -1 +0,0 @@ -parixan.xyz diff --git a/public/assets/images/abcd.png b/public/assets/images/abcd.png index 306d497d..e2aabde3 100644 Binary files a/public/assets/images/abcd.png and b/public/assets/images/abcd.png differ diff --git a/public/assets/images/background.png b/public/assets/images/background.png new file mode 100644 index 00000000..87985001 Binary files /dev/null and b/public/assets/images/background.png differ diff --git a/public/assets/images/background1.png b/public/assets/images/background1.png new file mode 100644 index 00000000..40b0cc98 Binary files /dev/null and b/public/assets/images/background1.png differ diff --git a/public/assets/images/screenshots/dark/capital.png b/public/assets/images/screenshots/dark/capital.png new file mode 100644 index 00000000..acce8073 Binary files /dev/null and b/public/assets/images/screenshots/dark/capital.png differ diff --git a/public/assets/images/screenshots/dark/colors.png b/public/assets/images/screenshots/dark/colors.png new file mode 100644 index 00000000..8f2c9a06 Binary files /dev/null and b/public/assets/images/screenshots/dark/colors.png differ diff --git a/public/assets/images/screenshots/dark/crossword.png b/public/assets/images/screenshots/dark/crossword.png new file mode 100644 index 00000000..23753773 Binary files /dev/null and b/public/assets/images/screenshots/dark/crossword.png differ diff --git a/public/assets/images/screenshots/dark/grid.png b/public/assets/images/screenshots/dark/grid.png new file mode 100644 index 00000000..2f633cdb Binary files /dev/null and b/public/assets/images/screenshots/dark/grid.png differ diff --git a/public/assets/images/screenshots/dark/home.png b/public/assets/images/screenshots/dark/home.png new file mode 100644 index 00000000..43295f69 Binary files /dev/null and b/public/assets/images/screenshots/dark/home.png differ diff --git a/public/assets/images/screenshots/dark/indic.png b/public/assets/images/screenshots/dark/indic.png new file mode 100644 index 00000000..85d17ab5 Binary files /dev/null and b/public/assets/images/screenshots/dark/indic.png differ diff --git a/public/assets/images/screenshots/dark/map.png b/public/assets/images/screenshots/dark/map.png new file mode 100644 index 00000000..c478eea0 Binary files /dev/null and b/public/assets/images/screenshots/dark/map.png differ diff --git a/public/assets/images/screenshots/dark/month.png b/public/assets/images/screenshots/dark/month.png new file mode 100644 index 00000000..457a3a16 Binary files /dev/null and b/public/assets/images/screenshots/dark/month.png differ diff --git a/public/assets/images/screenshots/dark/moonsign.png b/public/assets/images/screenshots/dark/moonsign.png new file mode 100644 index 00000000..7cca7dbd Binary files /dev/null and b/public/assets/images/screenshots/dark/moonsign.png differ diff --git a/public/assets/images/screenshots/dark/nakshtra.png b/public/assets/images/screenshots/dark/nakshtra.png new file mode 100644 index 00000000..a716e27a Binary files /dev/null and b/public/assets/images/screenshots/dark/nakshtra.png differ diff --git a/public/assets/images/screenshots/dark/numbers.png b/public/assets/images/screenshots/dark/numbers.png new file mode 100644 index 00000000..a3d2b4cd Binary files /dev/null and b/public/assets/images/screenshots/dark/numbers.png differ diff --git a/public/assets/images/screenshots/dark/panel.png b/public/assets/images/screenshots/dark/panel.png new file mode 100644 index 00000000..26d0d74d Binary files /dev/null and b/public/assets/images/screenshots/dark/panel.png differ diff --git a/public/assets/images/screenshots/dark/quote.png b/public/assets/images/screenshots/dark/quote.png new file mode 100644 index 00000000..a3c65091 Binary files /dev/null and b/public/assets/images/screenshots/dark/quote.png differ diff --git a/public/assets/images/screenshots/dark/story.png b/public/assets/images/screenshots/dark/story.png new file mode 100644 index 00000000..5ffc91e9 Binary files /dev/null and b/public/assets/images/screenshots/dark/story.png differ diff --git a/public/assets/images/screenshots/dark/text.png b/public/assets/images/screenshots/dark/text.png new file mode 100644 index 00000000..2f734a93 Binary files /dev/null and b/public/assets/images/screenshots/dark/text.png differ diff --git a/public/assets/images/screenshots/dark/varnmala.png b/public/assets/images/screenshots/dark/varnmala.png new file mode 100644 index 00000000..1cab3c87 Binary files /dev/null and b/public/assets/images/screenshots/dark/varnmala.png differ diff --git a/public/assets/images/screenshots/dark/vedic.png b/public/assets/images/screenshots/dark/vedic.png new file mode 100644 index 00000000..0f4f9f61 Binary files /dev/null and b/public/assets/images/screenshots/dark/vedic.png differ diff --git a/public/assets/images/screenshots/light/capitalLight.png b/public/assets/images/screenshots/light/capitalLight.png new file mode 100644 index 00000000..c826a117 Binary files /dev/null and b/public/assets/images/screenshots/light/capitalLight.png differ diff --git a/public/assets/images/screenshots/light/chattisgarh.png b/public/assets/images/screenshots/light/chattisgarh.png new file mode 100644 index 00000000..9d906f96 Binary files /dev/null and b/public/assets/images/screenshots/light/chattisgarh.png differ diff --git a/public/assets/images/screenshots/light/colorsLight.png b/public/assets/images/screenshots/light/colorsLight.png new file mode 100644 index 00000000..38e2b08f Binary files /dev/null and b/public/assets/images/screenshots/light/colorsLight.png differ diff --git a/public/assets/images/screenshots/light/crossword.png b/public/assets/images/screenshots/light/crossword.png new file mode 100644 index 00000000..a883052a Binary files /dev/null and b/public/assets/images/screenshots/light/crossword.png differ diff --git a/public/assets/images/screenshots/light/grid.png b/public/assets/images/screenshots/light/grid.png new file mode 100644 index 00000000..6c01b405 Binary files /dev/null and b/public/assets/images/screenshots/light/grid.png differ diff --git a/public/assets/images/screenshots/light/home.png b/public/assets/images/screenshots/light/home.png new file mode 100644 index 00000000..86ed6107 Binary files /dev/null and b/public/assets/images/screenshots/light/home.png differ diff --git a/public/assets/images/screenshots/light/indic.png b/public/assets/images/screenshots/light/indic.png new file mode 100644 index 00000000..1ac6adb7 Binary files /dev/null and b/public/assets/images/screenshots/light/indic.png differ diff --git a/public/assets/images/screenshots/light/mapLight.png b/public/assets/images/screenshots/light/mapLight.png new file mode 100644 index 00000000..dcbd89a9 Binary files /dev/null and b/public/assets/images/screenshots/light/mapLight.png differ diff --git a/public/assets/images/screenshots/light/math.png b/public/assets/images/screenshots/light/math.png new file mode 100644 index 00000000..8e3d439c Binary files /dev/null and b/public/assets/images/screenshots/light/math.png differ diff --git a/public/assets/images/screenshots/light/panelLight.PNG b/public/assets/images/screenshots/light/panelLight.PNG new file mode 100644 index 00000000..a3c8287f Binary files /dev/null and b/public/assets/images/screenshots/light/panelLight.PNG differ diff --git a/public/assets/images/screenshots/light/quoteLight.png b/public/assets/images/screenshots/light/quoteLight.png new file mode 100644 index 00000000..78cf986a Binary files /dev/null and b/public/assets/images/screenshots/light/quoteLight.png differ diff --git a/public/assets/images/screenshots/light/roman.png b/public/assets/images/screenshots/light/roman.png new file mode 100644 index 00000000..3ff8eb53 Binary files /dev/null and b/public/assets/images/screenshots/light/roman.png differ diff --git a/public/assets/images/screenshots/light/storyLight.png b/public/assets/images/screenshots/light/storyLight.png new file mode 100644 index 00000000..df978d32 Binary files /dev/null and b/public/assets/images/screenshots/light/storyLight.png differ diff --git a/public/assets/images/screenshots/light/sunsign.png b/public/assets/images/screenshots/light/sunsign.png new file mode 100644 index 00000000..5fdb8300 Binary files /dev/null and b/public/assets/images/screenshots/light/sunsign.png differ diff --git a/public/assets/images/screenshots/light/text.png b/public/assets/images/screenshots/light/text.png new file mode 100644 index 00000000..8470d5d8 Binary files /dev/null and b/public/assets/images/screenshots/light/text.png differ diff --git a/public/assets/images/screenshots/light/varnmalaLight.png b/public/assets/images/screenshots/light/varnmalaLight.png new file mode 100644 index 00000000..b33f0fd6 Binary files /dev/null and b/public/assets/images/screenshots/light/varnmalaLight.png differ diff --git a/public/assets/images/screenshots/light/vedic.png b/public/assets/images/screenshots/light/vedic.png new file mode 100644 index 00000000..bfecce78 Binary files /dev/null and b/public/assets/images/screenshots/light/vedic.png differ diff --git a/public/assets/images/signup/capital.PNG b/public/assets/images/signup/capital.PNG new file mode 100644 index 00000000..acce8073 Binary files /dev/null and b/public/assets/images/signup/capital.PNG differ diff --git a/public/assets/images/signup/colors.PNG b/public/assets/images/signup/colors.PNG new file mode 100644 index 00000000..8f2c9a06 Binary files /dev/null and b/public/assets/images/signup/colors.PNG differ diff --git a/public/assets/images/signup/quote.PNG b/public/assets/images/signup/quote.PNG new file mode 100644 index 00000000..a3c65091 Binary files /dev/null and b/public/assets/images/signup/quote.PNG differ diff --git a/src/assets/icons/close.svg b/src/assets/icons/close.svg new file mode 100644 index 00000000..e4ff51e0 --- /dev/null +++ b/src/assets/icons/close.svg @@ -0,0 +1,9 @@ + + + + + + + \ No newline at end of file diff --git a/src/assets/icons/dark.svg b/src/assets/icons/dark.svg index 93d5917a..ca634028 100644 --- a/src/assets/icons/dark.svg +++ b/src/assets/icons/dark.svg @@ -1,6 +1,5 @@ \ No newline at end of file diff --git a/src/assets/icons/google.svg b/src/assets/icons/google.svg new file mode 100644 index 00000000..3ffa2aab --- /dev/null +++ b/src/assets/icons/google.svg @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/src/assets/icons/mute.svg b/src/assets/icons/mute.svg new file mode 100644 index 00000000..d5202fdf --- /dev/null +++ b/src/assets/icons/mute.svg @@ -0,0 +1,7 @@ + + + + \ No newline at end of file diff --git a/src/assets/icons/open.svg b/src/assets/icons/open.svg new file mode 100644 index 00000000..9c130f7a --- /dev/null +++ b/src/assets/icons/open.svg @@ -0,0 +1,18 @@ + + + + \ No newline at end of file diff --git a/src/assets/icons/volume.svg b/src/assets/icons/volume.svg new file mode 100644 index 00000000..0287e5bf --- /dev/null +++ b/src/assets/icons/volume.svg @@ -0,0 +1,9 @@ + + + + + \ No newline at end of file diff --git a/src/assets/icons/x.svg b/src/assets/icons/x.svg new file mode 100644 index 00000000..b5221ce1 --- /dev/null +++ b/src/assets/icons/x.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/screenshots/dark/capital.png b/src/assets/screenshots/dark/capital.png new file mode 100644 index 00000000..acce8073 Binary files /dev/null and b/src/assets/screenshots/dark/capital.png differ diff --git a/src/assets/screenshots/dark/colors.png b/src/assets/screenshots/dark/colors.png new file mode 100644 index 00000000..8f2c9a06 Binary files /dev/null and b/src/assets/screenshots/dark/colors.png differ diff --git a/src/assets/screenshots/dark/crossword.png b/src/assets/screenshots/dark/crossword.png new file mode 100644 index 00000000..23753773 Binary files /dev/null and b/src/assets/screenshots/dark/crossword.png differ diff --git a/src/assets/screenshots/dark/grid.png b/src/assets/screenshots/dark/grid.png new file mode 100644 index 00000000..2f633cdb Binary files /dev/null and b/src/assets/screenshots/dark/grid.png differ diff --git a/src/assets/screenshots/dark/home.png b/src/assets/screenshots/dark/home.png new file mode 100644 index 00000000..43295f69 Binary files /dev/null and b/src/assets/screenshots/dark/home.png differ diff --git a/src/assets/screenshots/dark/indic.png b/src/assets/screenshots/dark/indic.png new file mode 100644 index 00000000..85d17ab5 Binary files /dev/null and b/src/assets/screenshots/dark/indic.png differ diff --git a/src/assets/screenshots/dark/map.png b/src/assets/screenshots/dark/map.png new file mode 100644 index 00000000..c478eea0 Binary files /dev/null and b/src/assets/screenshots/dark/map.png differ diff --git a/src/assets/screenshots/dark/month.png b/src/assets/screenshots/dark/month.png new file mode 100644 index 00000000..457a3a16 Binary files /dev/null and b/src/assets/screenshots/dark/month.png differ diff --git a/src/assets/screenshots/dark/moonsign.png b/src/assets/screenshots/dark/moonsign.png new file mode 100644 index 00000000..7cca7dbd Binary files /dev/null and b/src/assets/screenshots/dark/moonsign.png differ diff --git a/src/assets/screenshots/dark/nakshtra.png b/src/assets/screenshots/dark/nakshtra.png new file mode 100644 index 00000000..a716e27a Binary files /dev/null and b/src/assets/screenshots/dark/nakshtra.png differ diff --git a/src/assets/screenshots/dark/numbers.png b/src/assets/screenshots/dark/numbers.png new file mode 100644 index 00000000..a3d2b4cd Binary files /dev/null and b/src/assets/screenshots/dark/numbers.png differ diff --git a/src/assets/screenshots/dark/panel.png b/src/assets/screenshots/dark/panel.png new file mode 100644 index 00000000..26d0d74d Binary files /dev/null and b/src/assets/screenshots/dark/panel.png differ diff --git a/src/assets/screenshots/dark/quote.png b/src/assets/screenshots/dark/quote.png new file mode 100644 index 00000000..a3c65091 Binary files /dev/null and b/src/assets/screenshots/dark/quote.png differ diff --git a/src/assets/screenshots/dark/story.png b/src/assets/screenshots/dark/story.png new file mode 100644 index 00000000..5ffc91e9 Binary files /dev/null and b/src/assets/screenshots/dark/story.png differ diff --git a/src/assets/screenshots/dark/text.png b/src/assets/screenshots/dark/text.png new file mode 100644 index 00000000..2f734a93 Binary files /dev/null and b/src/assets/screenshots/dark/text.png differ diff --git a/src/assets/screenshots/dark/varnmala.png b/src/assets/screenshots/dark/varnmala.png new file mode 100644 index 00000000..1cab3c87 Binary files /dev/null and b/src/assets/screenshots/dark/varnmala.png differ diff --git a/src/assets/screenshots/dark/vedic.png b/src/assets/screenshots/dark/vedic.png new file mode 100644 index 00000000..0f4f9f61 Binary files /dev/null and b/src/assets/screenshots/dark/vedic.png differ diff --git a/src/assets/screenshots/light/capitalLight.png b/src/assets/screenshots/light/capitalLight.png new file mode 100644 index 00000000..c826a117 Binary files /dev/null and b/src/assets/screenshots/light/capitalLight.png differ diff --git a/src/assets/screenshots/light/chattisgarh.png b/src/assets/screenshots/light/chattisgarh.png new file mode 100644 index 00000000..9d906f96 Binary files /dev/null and b/src/assets/screenshots/light/chattisgarh.png differ diff --git a/src/assets/screenshots/light/colorsLight.png b/src/assets/screenshots/light/colorsLight.png new file mode 100644 index 00000000..38e2b08f Binary files /dev/null and b/src/assets/screenshots/light/colorsLight.png differ diff --git a/src/assets/screenshots/light/crossword.png b/src/assets/screenshots/light/crossword.png new file mode 100644 index 00000000..a883052a Binary files /dev/null and b/src/assets/screenshots/light/crossword.png differ diff --git a/src/assets/screenshots/light/grid.png b/src/assets/screenshots/light/grid.png new file mode 100644 index 00000000..6c01b405 Binary files /dev/null and b/src/assets/screenshots/light/grid.png differ diff --git a/src/assets/screenshots/light/home.png b/src/assets/screenshots/light/home.png new file mode 100644 index 00000000..86ed6107 Binary files /dev/null and b/src/assets/screenshots/light/home.png differ diff --git a/src/assets/screenshots/light/indic.png b/src/assets/screenshots/light/indic.png new file mode 100644 index 00000000..1ac6adb7 Binary files /dev/null and b/src/assets/screenshots/light/indic.png differ diff --git a/src/assets/screenshots/light/mapLight.png b/src/assets/screenshots/light/mapLight.png new file mode 100644 index 00000000..dcbd89a9 Binary files /dev/null and b/src/assets/screenshots/light/mapLight.png differ diff --git a/src/assets/screenshots/light/math.png b/src/assets/screenshots/light/math.png new file mode 100644 index 00000000..8e3d439c Binary files /dev/null and b/src/assets/screenshots/light/math.png differ diff --git a/src/assets/screenshots/light/panelLight.PNG b/src/assets/screenshots/light/panelLight.PNG new file mode 100644 index 00000000..a3c8287f Binary files /dev/null and b/src/assets/screenshots/light/panelLight.PNG differ diff --git a/src/assets/screenshots/light/quoteLight.png b/src/assets/screenshots/light/quoteLight.png new file mode 100644 index 00000000..78cf986a Binary files /dev/null and b/src/assets/screenshots/light/quoteLight.png differ diff --git a/src/assets/screenshots/light/roman.png b/src/assets/screenshots/light/roman.png new file mode 100644 index 00000000..3ff8eb53 Binary files /dev/null and b/src/assets/screenshots/light/roman.png differ diff --git a/src/assets/screenshots/light/storyLight.png b/src/assets/screenshots/light/storyLight.png new file mode 100644 index 00000000..df978d32 Binary files /dev/null and b/src/assets/screenshots/light/storyLight.png differ diff --git a/src/assets/screenshots/light/sunsign.png b/src/assets/screenshots/light/sunsign.png new file mode 100644 index 00000000..5fdb8300 Binary files /dev/null and b/src/assets/screenshots/light/sunsign.png differ diff --git a/src/assets/screenshots/light/text.png b/src/assets/screenshots/light/text.png new file mode 100644 index 00000000..8470d5d8 Binary files /dev/null and b/src/assets/screenshots/light/text.png differ diff --git a/src/assets/screenshots/light/varnmalaLight.png b/src/assets/screenshots/light/varnmalaLight.png new file mode 100644 index 00000000..b33f0fd6 Binary files /dev/null and b/src/assets/screenshots/light/varnmalaLight.png differ diff --git a/src/assets/screenshots/light/vedic.png b/src/assets/screenshots/light/vedic.png new file mode 100644 index 00000000..bfecce78 Binary files /dev/null and b/src/assets/screenshots/light/vedic.png differ diff --git a/src/assets/styles/board.css b/src/assets/styles/board.css index fd7a91a7..44e93cba 100644 --- a/src/assets/styles/board.css +++ b/src/assets/styles/board.css @@ -1,4 +1,6 @@ .container__board { + container-type: inline-size; + container-name: board; max-width: 80vw; margin: 0 auto; min-height: 100vh; @@ -50,7 +52,7 @@ } } -@media (max-width: 1024px) { +@media (max-width: 1470px) { .container__board { & .board__list { grid-template-columns: repeat(2, 1fr); diff --git a/src/assets/styles/bubble.css b/src/assets/styles/bubble.css new file mode 100644 index 00000000..12a3f3e4 --- /dev/null +++ b/src/assets/styles/bubble.css @@ -0,0 +1,198 @@ +.bubble__container { + margin: 0; + padding: 0; + box-sizing: border-box; + container-type: inline-size; + container-name: bubble; +} + +.bubble__board { + border-radius: 0.75rem; + width: 100%; + height: 30vh; + position: relative; +} + +.slot { + height: 100%; + border-radius: 4px; + z-index: 10; + width: 100%; + display: flex; + box-sizing: border-box; + flex-direction: column; + justify-content: space-evenly; + align-items: center; +} + +.slot > div { + font-size: 3rem; + position: relative; + font-weight: 700; + color: var(--primary); +} + +@container bubble (max-width: 480px) { + .bubble__board { + height: 65vh; + } +} + +.bubble__area { + border-radius: inherit; + background: var(--container-bg); + width: 100%; + height: 100%; +} + +.bubble_square { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + margin: 0; + padding: 0; + overflow: hidden; +} + +.bubble_square li { + position: absolute; + list-style: none; + width: 20px; + height: 20px; + display: block; + background: #ffffff33; + bottom: -150px; + animation: animate 25s linear infinite; +} + +.bubble_square li:nth-child(1) { + left: 25%; + width: 80px; + height: 80px; + background: + linear-gradient(var(--container-bg), var(--container-bg), var(--container-bg)) padding-box, + linear-gradient(45deg, #5d069b, #09009f, #00ff95) border-box; + border: 8px solid transparent; + animation-delay: 0s; +} + +/* copy code from here */ +.bubble_square li:nth-child(2) { + left: 10%; + width: 20px; + height: 20px; + background: + linear-gradient(var(--container-bg), var(--container-bg)) padding-box, + linear-gradient(45deg, #d4145a, #fbb03b) border-box; + border: 2px solid transparent; + animation-delay: 2s; + animation-duration: 12s; +} + +.bubble_square li:nth-child(3) { + left: 70%; + width: 20px; + height: 20px; + background: + linear-gradient(var(--container-bg), var(--container-bg)) padding-box, + linear-gradient(45deg, #009245, #fcee21) border-box; + border: 2px solid transparent; + animation-delay: 4s; +} + +.bubble_square li:nth-child(4) { + left: 40%; + width: 60px; + height: 60px; + background: + linear-gradient(var(--container-bg), var(--container-bg)) padding-box, + linear-gradient(45deg, #662d8c, #ed1e79) border-box; + border: 6px solid transparent; + animation-delay: 0s; + animation-duration: 18s; +} + +.bubble_square li:nth-child(5) { + left: 65%; + width: 20px; + height: 20px; + background: + linear-gradient(var(--container-bg), var(--container-bg)) padding-box, + linear-gradient(45deg, #353a5f, #9ebaf3) border-box; + border: 2px solid transparent; + animation-delay: 0s; +} + +.bubble_square li:nth-child(6) { + left: 75%; + width: 110px; + height: 110px; + background: + linear-gradient(var(--container-bg), var(--container-bg)) padding-box, + linear-gradient(45deg, #c33764, #1d2671) border-box; + border: 11px solid transparent; + animation-delay: 3s; +} + +.bubble_square li:nth-child(7) { + left: 35%; + width: 150px; + height: 150px; + background: + linear-gradient(var(--container-bg), var(--container-bg)) padding-box, + linear-gradient(45deg, #737dfe, #ffcac9) border-box; + border: 15px solid transparent; + animation-delay: 7s; +} + +.bubble_square li:nth-child(8) { + left: 50%; + width: 25px; + height: 25px; + background: + linear-gradient(var(--container-bg), var(--container-bg)) padding-box, + linear-gradient(45deg, #aaffe2, #00d191) border-box; + border: 2.5px solid transparent; + animation-delay: 15s; + animation-duration: 45s; +} + +.bubble_square li:nth-child(9) { + left: 20%; + width: 15px; + height: 15px; + background: + linear-gradient(var(--container-bg), var(--container-bg)) padding-box, + linear-gradient(45deg, #2fbdff, #ff7582) border-box; + border: 1.5px solid transparent; + animation-delay: 2s; + animation-duration: 35s; +} + +.bubble_square li:nth-child(10) { + left: 85%; + width: 150px; + height: 150px; + background: + linear-gradient(var(--container-bg), var(--container-bg)) padding-box, + linear-gradient(45deg, #fad126, #ff564e) border-box; + border: 15px solid transparent; + animation-delay: 0s; + animation-duration: 11s; +} + +/* copy code till here */ + +@keyframes animate { + 0% { + transform: translateY(0) rotate(0deg); + border-radius: 0; + } + + 100% { + transform: translateY(-1000px) rotate(720deg); + border-radius: 50%; + } +} diff --git a/src/assets/styles/common.css b/src/assets/styles/common.css index a19b4313..a9b7e989 100644 --- a/src/assets/styles/common.css +++ b/src/assets/styles/common.css @@ -53,3 +53,12 @@ .no__link { text-decoration: none; } + +.text__balance { + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + text-size-adjust: auto; + text-shadow: #fc0 1px 0 10px; + text-wrap-style: balance; +} diff --git a/src/assets/styles/dashboard.css b/src/assets/styles/dashboard.css new file mode 100644 index 00000000..89f590ec --- /dev/null +++ b/src/assets/styles/dashboard.css @@ -0,0 +1,88 @@ +:root { + --background: #221f2e; + --background-secondary: #4a455b; + --text-primary: #eeeff1; + --text-secondary: #a3a1a8; + --primary: #7b5ede; + --primary-hover: #6a4ecc; + --border: rgba(255, 255, 255, 0.1); + --header-h: 60px; +} + +* { + margin: 0; + padding: 0; + box-sizing: border-box; + font-family: sans-serif; +} + +body { + background-color: var(--background-secondary); + color: var(--text-primary); +} + +main.dashboard-page { + display: flex; + align-items: center; + justify-content: center; + min-height: calc(100vh - var(--header-h)); + padding: 1rem; +} + +.dashboard-container { + background-color: var(--background); + padding: 3rem; + border-radius: 16px; + border: 1px solid var(--border); + box-shadow: 0 10px 30px rgba(0, 0, 0, 0.2); + text-align: center; + max-width: 600px; + width: 100%; +} + +.welcome-message { + font-size: 2.5rem; + font-weight: 500; + margin-bottom: 0.5rem; + color: var(--text-primary); +} + +.dashboard-info { + font-size: 1.1rem; + margin-bottom: 2.5rem; + line-height: 1.6; + color: var(--text-secondary); +} + +.dashboard-action-btn { + background-color: var(--primary); + color: white; + border: none; + border-radius: 8px; + padding: 1rem 2rem; + font-size: 1rem; + font-weight: 600; + cursor: pointer; + transition: background-color 0.3s; +} + +.dashboard-action-btn:hover { + background-color: var(--primary-hover); +} + +.header-logout-btn { + color: var(--text-primary); + background-color: rgba(255, 255, 255, 0.1); + border: none; + padding: 0.5rem 1rem; + border-radius: 0.375rem; + font-size: 0.9rem; + font-weight: 600; + cursor: pointer; + white-space: nowrap; + transition: background-color 0.2s ease; +} + +.header-logout-btn:hover { + background-color: rgba(255, 255, 255, 0.2); +} diff --git a/src/assets/styles/header.css b/src/assets/styles/header.css index 43fd76c0..4d656f6f 100644 --- a/src/assets/styles/header.css +++ b/src/assets/styles/header.css @@ -31,11 +31,20 @@ } } + .logo__link { + display: flex; + align-items: center; + text-decoration: none; + + & span { + margin-inline: 1rem; + } + } + .title { - font-size: 3rem; - font-weight: bold; + font-size: clamp(2rem, 4vw, 5rem); background: linear-gradient(270deg, #ff416c, #ff4b2b, #1e90ff, #32cd32); - background-size: 800% 800%; + background-size: 100% 100%; background-clip: inherit; -webkit-background-clip: text; -webkit-text-fill-color: transparent; @@ -56,38 +65,6 @@ } } - /* --- Navigation Links --- */ - .caption { - display: flex; - align-items: center; - /* gap: 0.1rem; */ - text-align: center; - justify-self: center; - } - - .caption a { - font-size: 1.5rem; - font-weight: 550; - margin: 0; - text-decoration: none; - border-radius: 0.375rem; - transition: all 0.2s ease-in-out; - white-space: nowrap; - margin-right: 2rem; - overflow: hidden; - text-overflow: ellipsis; - text-decoration: none; - } - - .caption a:hover { - color: #1dd299; - } - - .caption a.is-active { - color: var(--primary); - font-weight: 600; - } - .action-group { display: flex; gap: 1rem; @@ -103,6 +80,7 @@ max-width: 33vw; flex-wrap: nowrap; justify-content: flex-end; + border: 2px dashed red; } .controls { @@ -115,4 +93,9 @@ width: 2rem; border-radius: 50%; cursor: pointer; -} \ No newline at end of file +} + +.header-spacer { + min-height: 5rem; + border-bottom: 1px dotted grey; +} diff --git a/src/assets/styles/poem-card.css b/src/assets/styles/poem-card.css new file mode 100644 index 00000000..1cc4956f --- /dev/null +++ b/src/assets/styles/poem-card.css @@ -0,0 +1,162 @@ +.outer__poem { + width: 100%; + position: relative; +} + +.container__card { + width: 100%; + position: relative; + background-color: var(--container-bg); + box-sizing: border-box; + display: grid; + grid-template-columns: repeat(auto-fit, 320px); + gap: 1rem; + row-gap: 2rem; + padding: 5rem 1rem; + margin-top: 0.5rem; + /*padding: 8rem 0 ;*/ + justify-content: space-evenly; + align-content: center; + border-radius: 0.75rem; +} + +.card-wrapper { + padding: 4px; + display: flex; + align-items: center; + justify-content: center; +} + +.poem-card { + position: relative; + height: 100%; + width: 300px; + border-radius: 25px; + display: flex; + flex-direction: column; + box-shadow: 0 -4px 12px rgba(0, 0, 0, 0.15); + transition: + transform 0.3s ease, + box-shadow 0.3s ease; + cursor: pointer; +} + +.poem-card:hover { + filter: brightness(0.95); + transform: scale(1.03); + box-shadow: 0 6px 18px rgba(0, 0, 0, 0.2); + color: var(--primary); + + .open-indicator { + fill: var(--primary); + } +} + +@media (max-width: 480px) { + .container__card { + grid-template-columns: repeat(auto-fit, 300px); + } + + .poem-card { + width: 280px; + } +} + +/* Target every Nth .poem-card inside .container__card */ +.container__card > .card-wrapper:nth-child(6n + 1) .poem-card, +.card-wrapper:nth-child(6n + 1) .poem-card .emoji-content .overlay::after { + background-color: var(--poem-bg-1); +} + +.container__card > .card-wrapper:nth-child(6n + 2) .poem-card, +.card-wrapper:nth-child(6n + 2) .poem-card .emoji-content .overlay::after { + background-color: var(--poem-bg-2); +} + +.container__card > .card-wrapper:nth-child(6n + 3) .poem-card, +.card-wrapper:nth-child(6n + 3) .poem-card .emoji-content .overlay::after { + background-color: var(--poem-bg-3); +} + +.container__card > .card-wrapper:nth-child(6n + 4) .poem-card, +.card-wrapper:nth-child(6n + 4) .poem-card .emoji-content .overlay::after { + background-color: var(--poem-bg-4); +} + +.container__card > .card-wrapper:nth-child(6n + 5) .poem-card, +.card-wrapper:nth-child(6n + 5) .poem-card .emoji-content .overlay::after { + background-color: var(--poem-bg-5); +} + +.container__card > .card-wrapper:nth-child(6n) .poem-card, +.card-wrapper:nth-child(6n) .poem-card .emoji-content .overlay::after { + background-color: var(--poem-bg-6); +} + +.emoji-content, +.card-content { + padding: 10px 14px; + display: flex; + flex-direction: column; + align-items: center; +} + +.emoji-content { + row-gap: 5px; + position: relative; + padding: 25px 0; +} + +.overlay { + position: absolute; + left: 2%; + top: 2%; + height: 96%; + width: 96%; + background-color: var(--container-bg); + border-radius: 25px 25px 0 25px; +} + +.overlay::before, +.overlay::after { + content: ""; + position: absolute; + right: 0; + bottom: -40px; + height: 40px; + width: 40px; + background-color: var(--container-bg); +} + +.overlay::after { + border-radius: 0 25px 0 0; + /*background-color: pink;*/ +} + +.card-emoji { + position: relative; + height: 150px; + width: 150px; + /*border-radius: 50%; + background: #fff;*/ + padding: 3px; + display: flex; + align-items: center; + justify-content: center; +} + +.card-emoji .card-emo { + font-size: 9rem; + text-shadow: 0 -8px 18px rgba(0, 0, 0, 0.15); +} + +.name { + text-align: center; +} + +.card-indicator { + position: relative; + margin-left: auto; + right: 1rem; + height: 24px; +} diff --git a/src/assets/styles/poem-dialog.css b/src/assets/styles/poem-dialog.css new file mode 100644 index 00000000..47deaeea --- /dev/null +++ b/src/assets/styles/poem-dialog.css @@ -0,0 +1,96 @@ +.poem-dialog { + width: 540px; + max-width: 90%; + height: 600px; + border: 3px solid var(--color); + border-radius: 24px; + background-color: var(--container-bg); + padding: 1.5rem; + box-shadow: 0 15px 30px rgba(0, 0, 0, 0.2); + position: fixed; + transform: translate(-50%, -50%); + overflow: hidden; + color: var(--color); +} + +/* === Modal Content === */ +.modal-content { + display: flex; + flex-direction: column; + justify-content: flex-start; + height: 100%; + position: relative; +} + +/* === Top bar: speaker + close === */ +.modal-content > .model-buttons > button.speaker-btn, +.modal-content > .model-buttons > button.close { + background: none; + border: none; + padding: 0; + cursor: pointer; + width: 48px; + height: 48px; +} + +.modal-content > .model-buttons > button svg { + width: 44px; + height: 44px; + stroke: var(--color); + fill: none; +} + +.modal-content > .model-buttons > button:focus { + outline: none; + box-shadow: none; +} + +.modal-content .model-buttons { + display: flex; + align-items: center; + justify-content: space-between; +} + +/* === Title & Lines === */ +.modal-title { + margin-top: 3.2rem; + font-size: 3rem; + font-weight: 600; + text-align: center; +} + +.lines { + white-space: pre-line; + line-height: 1.6; + padding: 0 1rem; + overflow-y: auto; + flex-grow: 1; + font-size: 1.5rem; + text-align: center; +} + +/* === Scroll styling (optional) === */ +.lines::-webkit-scrollbar { + width: 6px; +} + +.lines::-webkit-scrollbar-thumb { + background: rgba(0, 0, 0, 0.2); + border-radius: 3px; +} + +/* === Responsive === */ +@media (max-width: 480px) { + .poem-dialog { + width: 90%; + height: 400px; + } + + .title { + font-size: 1.25rem; + } + + .lines { + font-size: 0.95rem; + } +} diff --git a/src/assets/styles/poems.css b/src/assets/styles/poems.css new file mode 100644 index 00000000..55e02ffa --- /dev/null +++ b/src/assets/styles/poems.css @@ -0,0 +1,43 @@ +:root { + --container-bg: #0f172a; + --color: #cbeafe; + --poem-bg-1: #19134e; + --poem-bg-2: #4e2513; + --poem-bg-3: #134e4a; + --poem-bg-4: #13444e; + --poem-bg-5: #13324e; + --poem-bg-6: #131f4e; + + --poem-text-color: #ffffff; +} + +[data-theme="dark"] { + --container-bg: #0f172a; + --color: #cbeafe; + --poem-bg-1: #19134e; + --poem-bg-2: #4e2513; + --poem-bg-3: #134e4a; + --poem-bg-4: #13444e; + --poem-bg-5: #13324e; + --poem-bg-6: #131f4e; + + --poem-text-color: #ffffff; +} + +[data-theme="light"] { + --container-bg: #fefcfb; + --color: #1a237e; + --poem-bg-1: #fecaca; + --poem-bg-2: #bfdbfe; + --poem-bg-3: #bbf7d0; + --poem-bg-4: #fef08a; + --poem-bg-5: #fed7aa; + --poem-bg-6: #ddd6fe; + + --poem-text-color: #222; +} + +.container__poems { + font-family: "roboto", sans-serif; + color: var(--color); +} diff --git a/src/assets/styles/shortcut.css b/src/assets/styles/shortcut.css new file mode 100644 index 00000000..427f5697 --- /dev/null +++ b/src/assets/styles/shortcut.css @@ -0,0 +1,158 @@ +/* Help Menu Styles */ + +.help-popup { + display: none; + position: fixed; + top: 0; + left: 0; + width: 100vw; + height: 100vh; + background: rgba(0, 0, 0, 0.4); + z-index: 1000; + justify-content: center; + align-items: center; +} +.help-popup.is-open { + display: flex; +} +.help-menu { + color: #222; + background: #fff; + border-radius: 10px; + box-shadow: 0 4px 24px rgba(0, 0, 0, 0.13); + width: 95vw; + max-width: 700px; + max-height: 80vh; + display: flex; + flex-direction: column; + overflow: hidden; + border: 1.5px solid #e1e4e8; +} +.help-menu-header { + display: flex; + justify-content: space-between; + align-items: center; + padding: 16px 20px 8px 20px; + border-bottom: 1px solid #e1e4e8; + background: #f6f8fa; +} +.help-menu-header h2 { + margin: 0; + font-size: 19px; + font-weight: 700; +} +.close-button { + background: none; + border: none; + font-size: 24px; + cursor: pointer; + color: #586069; + padding: 0 4px; + border-radius: 4px; + transition: background 0.15s; +} +.close-button:hover { + background: #eaecef; +} +.help-menu-content.grid { + display: flex; + gap: 0; + justify-content: space-between; + flex-wrap: nowrap; + padding: 16px 12px; + overflow-y: auto; + border-top: 1px solid #e1e4e8; + /* background: #f6f8fa; */ + position: relative; +} +.shortcut-section { + flex: 1; + min-width: 0; + border: 1.5px solid #e1e4e8; + border-radius: 8px; + margin: 0 8px; + padding: 12px 8px 8px 8px; + display: flex; + flex-direction: column; + box-shadow: 0 1px 4px rgba(0, 0, 0, 0.04); + font-size: 15px; + max-width: 320px; +} +.shortcut-section:first-child { + margin-left: 0; +} +.shortcut-section:last-child { + margin-right: 0; +} +.shortcut-section h3 { + font-size: 15px; + font-weight: 700; + margin-bottom: 10px; + border-bottom: 1px solid #e1e4e8; + padding-bottom: 6px; + color: #24292e; + border-radius: 6px 6px 0 0; +} +.shortcut-table { + width: 100%; + border-collapse: separate; + border-spacing: 0; + background: #fff; + border-radius: 6px; + box-shadow: none; + margin-bottom: 0.5rem; + overflow: hidden; + font-size: 14px; +} +.shortcut-table tr { + height: 2.2em; /* or use min-height if you prefer */ +} + +.shortcut-table td { + padding-top: 0.4em; + padding-bottom: 0.4em; + border-bottom: 1px solid #e1e4e8; + padding: 0.35rem 0.7rem; + font-size: 14px; + background: transparent; + transition: background 0.15s; +} +.shortcut-table tr:last-child td { + border-bottom: none; +} +.shortcut-table tr:hover td { + background: #f0f3f6; +} +.shortcut-table kbd { + background: #f6f8fa; + border: 1px solid #d1d5da; + border-radius: 5px; + padding: 2px 7px; + font-size: 13px; + margin-left: 2px; + margin-right: 2px; + font-family: inherit; + box-shadow: 0 1px 0 #d1d5da; +} +.shortcut-table tr:not(:last-child) { + border-bottom: 1px solid #eee; /* optional: adds a subtle divider */ +} +@media (max-width: 600px) { + .help-menu-content.grid { + flex-direction: column; + gap: 12px; + padding: 10px 2px; + } + .shortcut-section { + margin: 0 0 12px 0; + border-radius: 8px; + max-width: 100%; + } +} + +.keys { + text-align: end; +} +.rows { + margin: 3px; +} diff --git a/src/assets/styles/signup.css b/src/assets/styles/signup.css new file mode 100644 index 00000000..4851da0e --- /dev/null +++ b/src/assets/styles/signup.css @@ -0,0 +1,470 @@ +:root { + --signup-body-bg: #4a455b; + --signup-container-bg: #221f2e; + --signup-container-shadow: rgba(0, 0, 0, 0.3); + --signup-left-bg: #311d5a; + --signup-text-primary: white; + --signup-text-secondary: #a3a1a8; + --signup-text-placeholder: #8a8692; + --signup-back-link-bg: rgba(255, 255, 255, 0.2); + --signup-back-link-bg-hover: rgba(255, 255, 255, 0.3); + --signup-dots-bg: rgba(255, 255, 255, 0.4); + --signup-dots-active-bg: white; + --signup-input-bg: #322d3d; + --signup-input-border: #3d3748; + --signup-button-primary-bg: #7b5ede; + --signup-button-primary-bg-hover: #6a4ecc; + --signup-button-social-bg-hover: #322d3d; +} + +[data-theme="dark"] { + --signup-body-bg: #4a455b; + --signup-container-bg: #221f2e; + --signup-container-shadow: rgba(0, 0, 0, 0.3); + --signup-left-bg: #311d5a; + --signup-text-primary: white; + --signup-text-secondary: #a3a1a8; + --signup-text-placeholder: #8a8692; + --signup-back-link-bg: rgba(255, 255, 255, 0.2); + --signup-back-link-bg-hover: rgba(255, 255, 255, 0.3); + --signup-dots-bg: rgba(255, 255, 255, 0.4); + --signup-dots-active-bg: white; + --signup-input-bg: #322d3d; + --signup-input-border: #3d3748; + --signup-button-primary-bg: #7b5ede; + --signup-button-primary-bg-hover: #6a4ecc; + --signup-button-social-bg-hover: #322d3d; +} + +[data-theme="light"] { + --signup-body-bg: #f0f2f5; + --signup-container-bg: #ffffff; + --signup-container-shadow: rgba(0, 0, 0, 0.1); + --signup-left-bg: #e9e9f2; + --signup-text-primary: #1c1e21; + --signup-text-secondary: #555; + --signup-text-placeholder: #8a8692; + --signup-back-link-bg: rgba(0, 0, 0, 0.05); + --signup-back-link-bg-hover: rgba(0, 0, 0, 0.1); + --signup-dots-bg: rgba(0, 0, 0, 0.3); + --signup-dots-active-bg: #000; + --signup-input-bg: #f0f2f5; + --signup-input-border: #ddd; + --signup-button-primary-bg: #7b5ede; + --signup-button-primary-bg-hover: #6a4ecc; + --signup-button-social-bg-hover: #f0f2f5; +} + +* { + margin: 0; + padding: 0; + box-sizing: border-box; + font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, "Open Sans", + "Helvetica Neue", sans-serif; +} + +[data-theme="dark"] { + --signup-body-bg: #4a455b; + --signup-container-bg: #221f2e; + --signup-container-shadow: rgba(0, 0, 0, 0.3); + --signup-left-bg: #311d5a; + --signup-text-primary: white; + --signup-text-secondary: #a3a1a8; + --signup-text-placeholder: #8a8692; + --signup-back-link-bg: rgba(255, 255, 255, 0.2); + --signup-back-link-bg-hover: rgba(255, 255, 255, 0.3); + --signup-dots-bg: rgba(255, 255, 255, 0.4); + --signup-dots-active-bg: white; + --signup-input-bg: #322d3d; + --signup-input-border: #3d3748; + --signup-button-primary-bg: #7b5ede; + --signup-button-primary-bg-hover: #6a4ecc; + --signup-button-social-bg-hover: #322d3d; +} + +[data-theme="light"] { + --signup-body-bg: #f0f2f5; + --signup-container-bg: #ffffff; + --signup-container-shadow: rgba(0, 0, 0, 0.1); + --signup-left-bg: #e9e9f2; + --signup-text-primary: #1c1e21; + --signup-text-secondary: #555; + --signup-text-placeholder: #8a8692; + --signup-back-link-bg: rgba(0, 0, 0, 0.05); + --signup-back-link-bg-hover: rgba(0, 0, 0, 0.1); + --signup-dots-bg: rgba(0, 0, 0, 0.3); + --signup-dots-active-bg: #000; + --signup-input-bg: #f0f2f5; + --signup-input-border: #ddd; + --signup-button-primary-bg: #7b5ede; + --signup-button-primary-bg-hover: #6a4ecc; + --signup-button-social-bg-hover: #f0f2f5; +} + +.signup-container { + display: flex; + width: 100%; + margin: 2rem auto; + min-height: 70vh; + background-color: var(--signup-container-bg); + border-radius: 16px; + overflow: hidden; + box-shadow: 0 10px 30px var(--signup-container-shadow); +} + +.signup-container.form-only { + display: block; + width: 60%; + min-height: auto; + padding: clamp(1rem, 5vw, 3rem); +} + +.signup-left { + width: 60%; + position: relative; + overflow: hidden; + display: flex; + border-radius: 25px; +} + +.form-only .signup-left { + display: none; +} + +.signup-header { + display: flex; + justify-content: space-between; + align-items: center; + padding: clamp(1rem, 3vw, 2rem); + position: absolute; + top: 0; + left: 0; + width: 100%; + z-index: 10; +} + +.slider-container { + position: relative; + width: 100%; + height: 100%; + margin-right: 5px; +} + +.slider { + width: 100%; + height: 100%; + position: relative; +} + +.slide { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + opacity: 0; + transition: opacity 0.8s ease; +} + +.slide.active { + opacity: 1; +} + +.slide img { + width: 100%; + height: 100%; + object-fit: contain; +} + +.slide-caption { + position: absolute; + bottom: 8%; + left: 0; + width: 100%; + padding: 0 clamp(1.5rem, 5vw, 3rem); + text-align: center; +} + +.slide-caption h2 { + font-size: clamp(1.2rem, 2.5vw, 2rem); + line-height: 1.3; + font-weight: 500; +} + +.slider-dots { + position: absolute; + bottom: 5%; + left: 0; + width: 100%; + display: flex; + justify-content: center; + gap: 10px; +} + +.dot { + width: 30px; + height: 4px; + background-color: #000; + border-radius: 2px; + cursor: pointer; + transition: background-color 0.3s; +} + +.dot.active { + background-color: var(--signup-dots-active-bg); +} + +.signup-right { + width: 40%; + padding: clamp(1.5rem, 4vw, 3rem); + display: flex; + flex-direction: column; + justify-content: center; + position: relative; +} + +.form-only .signup-right { + width: 100%; + padding: 0; +} + +.form-container { + margin: 0 auto; + width: 100%; +} + +h1 { + color: var(--signup-text-primary); + font-size: clamp(2rem, 5vw, 3rem); + margin-bottom: 0.5rem; + font-weight: 500; +} + +.signup-text { + color: var(--signup-text-secondary); + font-size: clamp(0.9rem, 2vw, 1.1rem); + margin-bottom: clamp(1.5rem, 4vw, 2.5rem); +} + +.signup-link, +.terms-link { + color: var(--signup-text-primary); + text-decoration: none; +} + +.signup-link:hover, +.terms-link:hover { + text-decoration: underline; +} + +.signup-form { + display: flex; + flex-direction: column; + gap: clamp(0.8rem, 2vw, 1.2rem); +} + +.input-row { + display: flex; + gap: clamp(0.8rem, 2vw, 1.2rem); +} + +.input-row .input-group { + width: 50%; +} + +.input-group { + position: relative; +} + +input[type="text"], +input[type="email"], +input[type="password"] { + width: 100%; + padding: clamp(0.8rem, 2vw, 1.1rem); + border: none; + border-radius: 6px; + background-color: var(--signup-input-bg); + color: var(--signup-text-primary); + font-size: clamp(0.9rem, 2vw, 1rem); +} + +.password-group { + position: relative; +} + +.toggle-password { + position: absolute; + right: 10px; + top: 50%; + transform: translateY(-50%); + background: none; + border: none; + color: var(--signup-text-placeholder); + cursor: pointer; +} + +.checkbox-group { + display: flex; + align-items: center; + gap: 0.5rem; + margin: 0.5rem 0; +} + +input[type="checkbox"] { + width: 18px; + height: 18px; + accent-color: var(--signup-button-primary-bg); +} + +.checkbox-group label { + color: var(--signup-text-secondary); + font-size: clamp(0.8rem, 1.5vw, 0.9rem); +} + +.create-account-btn { + width: 100%; + padding: clamp(0.9rem, 2vw, 1.2rem); + border: none; + border-radius: 6px; + background-color: var(--signup-button-primary-bg); + color: white; + font-size: clamp(0.9rem, 2vw, 1.1rem); + cursor: pointer; + transition: background-color 0.3s; + margin-top: 0.5rem; +} + +.create-account-btn:hover { + background-color: var(--signup-button-primary-bg-hover); +} + +.divider { + display: flex; + align-items: center; + text-align: center; + color: var(--signup-text-placeholder); + font-size: 0.9rem; + margin: clamp(1rem, 3vw, 1.5rem) 0; +} + +.divider::before, +.divider::after { + content: ""; + flex: 1; + border-bottom: 1px solid var(--signup-input-border); +} + +.divider span { + padding: 0 10px; +} + +.social-buttons { + display: flex; + gap: 1rem; +} + +.google-btn, +.X-btn { + flex: 1; + display: flex; + align-items: center; + justify-content: center; + gap: 0.5rem; + padding: clamp(0.7rem, 2vw, 1rem); + border: 1px solid var(--signup-input-border); + border-radius: 6px; + background-color: transparent; + color: var(--signup-text-primary); + font-size: clamp(0.8rem, 1.5vw, 0.9rem); + cursor: pointer; + transition: background-color 0.3s; +} + +.google-btn:hover, +.X-btn:hover { + background-color: var(--signup-button-social-bg-hover); +} + +.google-btn svg, +.X-btn svg { + height: 20px; + width: 20px; +} + +.theme-toggle { + position: absolute; + top: clamp(1rem, 3vw, 2rem); + right: clamp(1rem, 3vw, 2rem); + background-color: var(--signup-input-bg); + border: 1px solid var(--signup-input-border); + color: var(--signup-text-primary); + padding: 0.5rem; + border-radius: 8px; + cursor: pointer; + display: flex; + align-items: center; + justify-content: center; +} + +.theme-toggle:hover { + background-color: var(--signup-button-social-bg-hover); +} + +.theme-toggle #theme-icon-sun { + display: none; +} + +.theme-toggle #theme-icon-moon { + display: block; +} + +[data-theme="dark"] .theme-toggle #theme-icon-sun { + display: block; +} + +[data-theme="dark"] .theme-toggle #theme-icon-moon { + display: none; +} + +.footer-theme-toggle { + display: none !important; +} + +@media (max-width: 900px) { + .signup-container { + flex-direction: column; + height: auto; + min-height: auto; + margin: 1rem; + } + + .signup-left, + .signup-right { + width: 100%; + } + + .signup-left { + height: 300px; + } + + .signup-right { + padding: 1.5rem; + } + + .slide-caption h2 { + font-size: 1.5rem; + } + + .form-container { + padding: 1rem 0; + } + + .input-row { + flex-direction: column; + gap: 1rem; + } + + .input-row .input-group { + width: 100%; + } +} diff --git a/src/assets/styles/survey.css b/src/assets/styles/survey.css index c7b8ec68..6e26d299 100644 --- a/src/assets/styles/survey.css +++ b/src/assets/styles/survey.css @@ -669,3 +669,13 @@ min-height: 1500px; } } + +.option-label:has(input:checked) { + background-color: var(--primary); + color: var(--text); +} + +.question-card:has(input:checked) { + border: 1px solid green; + background-color: lightyellow; +} diff --git a/src/components/PoemCard.astro b/src/components/PoemCard.astro new file mode 100644 index 00000000..f2822840 --- /dev/null +++ b/src/components/PoemCard.astro @@ -0,0 +1,30 @@ +--- +import OpenIcon from "@/assets/icons/open.svg"; +import "@/assets/styles/poem-card.css"; + +export interface Props { + title: string; + lines: string[]; + emoji: string; +} +const { title, lines, emoji } = Astro.props; +--- + +
+
+
+ +
+ +
+
+
{emoji}
+
+
+
+

+ {title} +

+
+
+
diff --git a/src/components/PoemDialog.astro b/src/components/PoemDialog.astro new file mode 100644 index 00000000..81fda5de --- /dev/null +++ b/src/components/PoemDialog.astro @@ -0,0 +1,144 @@ +--- +import CloseIcon from "@/assets/icons/close.svg"; +import "@/assets/styles/poem-dialog.css"; +--- + + + + + + diff --git a/src/components/Shortcut.astro b/src/components/Shortcut.astro new file mode 100644 index 00000000..dadd7f5c --- /dev/null +++ b/src/components/Shortcut.astro @@ -0,0 +1,184 @@ +--- +import "@/assets/styles/shortcut.css"; +--- + +
+ +
+
+
+

Keyboard Shortcuts

+ +
+
+
+

Main Navigation

+
+ + + + +
+
+
+
+

General & Other

+ + + + +
+
+
+
+
+
+ + diff --git a/src/components/SquareBubble.astro b/src/components/SquareBubble.astro new file mode 100644 index 00000000..2a9ebb2f --- /dev/null +++ b/src/components/SquareBubble.astro @@ -0,0 +1,14 @@ +--- +import "@/assets/styles/bubble.css"; +--- + +
+
+
+
+
    + {Array.from({ length: 10 }, (_, i) =>
  • )} +
+
+
+
diff --git a/src/data/poem.json b/src/data/poem.json new file mode 100644 index 00000000..e695049a --- /dev/null +++ b/src/data/poem.json @@ -0,0 +1,274 @@ +{ + "poems": [ + { + "id": "mary_lamb", + "cute_emoji": "๐Ÿ‘", + "title": "Mary Had a Little Lamb", + "lines": ["Mary had a little lamb,", "Its fleece was white as snow;", "And everywhere that Mary went,", "The lamb was sure to go."] + }, + { + "id": "baa_baa_black_sheep", + "cute_emoji": "๐Ÿงถ", + "title": "Baa Baa Black Sheep", + "lines": ["Baa, baa, black sheep, have you any wool?", "Yes sir, yes sir, three bags full.", "One for the master, one for the dame,", "And one for the little boy who lives down the lane."] + }, + { + "id": "humpty_dumpty", + "cute_emoji": "๐Ÿฅš", + "title": "Humpty Dumpty", + "lines": ["Humpty Dumpty sat on a wall,", "Humpty Dumpty had a great fall.", "All the kingโ€™s horses and all the kingโ€™s men", "Couldnโ€™t put Humpty together again."] + }, + { + "id": "jack_and_jill", + "cute_emoji": "๐Ÿชฃ", + "title": "Jack and Jill", + "lines": ["Jack and Jill went up the hill", "To fetch a pail of water;", "Jack fell down and broke his crown,", "And Jill came tumbling after."] + }, + { + "id": "rain_rain_go_away", + "cute_emoji": "๐ŸŒง๏ธ", + "title": "Rain, Rain, Go Away", + "lines": ["Rain, rain, go away,", "Come again another day,", "Little Johnny wants to play.", "Rain, rain, go away."] + }, + { + "id": "roses_are_red", + "cute_emoji": "๐ŸŒน", + "title": "Roses are Red", + "lines": ["Roses are red,", "Violets are blue,", "Sugar is sweet,", "And so are you."] + }, + { + "id": "little_miss_muffet", + "cute_emoji": "๐Ÿ•ท๏ธ", + "title": "Little Miss Muffet", + "lines": ["Little Miss Muffet sat on a tuffet,", "Eating her curds and whey;", "Along came a spider who sat down beside her,", "And frightened Miss Muffet away."] + }, + { + "id": "hickory_dickory_dock", + "cute_emoji": "๐Ÿญ", + "title": "Hickory Dickory Dock", + "lines": ["Hickory dickory dock,", "The mouse ran up the clock;", "The clock struck one,", "The mouse ran down,", "Hickory dickory dock."] + }, + { + "id": "old_macdonald", + "cute_emoji": "๐Ÿ„", + "title": "Old MacDonald Had a Farm", + "lines": ["Old MacDonald had a farm, E-I-E-I-O,", "And on that farm he had a cow, E-I-E-I-O,", "With a moo moo here and a moo moo there,", "Here a moo, there a moo, everywhere a moo moo."] + }, + { + "id": "twinkle", + "cute_emoji": "โœจ", + "title": "Twinkle Twinkle Little Star", + "lines": ["Twinkle, twinkle, little star,", "How I wonder what you are!", "Up above the world so high,", "Like a diamond in the sky."] + }, + { + "id": "the_itsy_bitsy_spider", + "cute_emoji": "๐Ÿ•ธ๏ธ", + "title": "The Itsy Bitsy Spider", + "lines": ["The itsy bitsy spider climbed up the waterspout;", "Down came the rain and washed the spider out;", "Out came the sun and dried up all the rain;", "And the itsy bitsy spider climbed up the spout again."] + }, + { + "id": "hey_diddle_diddle", + "cute_emoji": "๐Ÿ„", + "title": "Hey Diddle Diddle", + "lines": ["Hey diddle diddle, the cat and the fiddle,", "The cow jumped over the moon;", "The little dog laughed to see such fun,", "And the dish ran away with the spoon."] + }, + { + "id": "pat_a_cake", + "cute_emoji": "๐ŸŽ‚", + "title": "Pat-a-Cake", + "lines": ["Pat-a-cake, pat-a-cake, baker's man.", "Bake me a cake as fast as you can.", "Pat it and prick it and mark it with B,", "And put it in the oven for baby and me."] + }, + { + "id": "row_row_your_boat", + "cute_emoji": "๐Ÿšค", + "title": "Row, Row, Row Your Boat", + "lines": ["Row, row, row your boat,", "Gently down the stream.", "Merrily, merrily, merrily, merrily,", "Life is but a dream."] + }, + { + "id": "this_little_piggy", + "cute_emoji": "๐Ÿท", + "title": "This Little Piggy", + "lines": ["This little piggy went to market,", "This little piggy stayed home,", "This little piggy had roast beef,", "This little piggy had none.", "This little piggy cried 'wee wee wee' all the way home."] + }, + { + "id": "london_bridge", + "cute_emoji": "๐ŸŒ‰", + "title": "London Bridge", + "lines": ["London Bridge is falling down,", "Falling down, falling down,", "London Bridge is falling down,", "My fair lady."] + }, + { + "id": "three_blind_mice", + "cute_emoji": "๐Ÿ", + "title": "Three Blind Mice", + "lines": ["Three blind mice, three blind mice,", "See how they run, see how they run!", "They all ran after the farmer's wife,", "Who cut off their tails with a carving knife."] + }, + { + "id": "yankee_doodle", + "cute_emoji": "๐ŸŽ–๏ธ", + "title": "Yankee Doodle", + "lines": ["Yankee Doodle went to town,", "Riding on a pony;", "He stuck a feather in his cap,", "And called it macaroni."] + }, + { + "id": "abc_song", + "cute_emoji": "๐Ÿ”ค", + "title": "ABC Song", + "lines": ["A B C D E F G,", "H I J K L M N O P,", "Q R S, T U V,", "W X, Y and Z.", "Now I know my ABCs,", "Next time won't you sing with me?"] + }, + { + "id": "ding_dong_bell", + "cute_emoji": "๐Ÿ””", + "title": "Ding Dong Bell", + "lines": ["Ding dong bell, Pussyโ€™s in the well.", "Who put her in? Little Johnny Flynn.", "Who pulled her out? Little Tommy Stout.", "What a naughty boy was that,", "To try to drown poor pussy cat!"] + }, + { + "id": "one_two_buckle", + "cute_emoji": "๐Ÿ‘ž", + "title": "One, Two, Buckle My Shoe", + "lines": ["One, two, buckle my shoe;", "Three, four, knock at the door;", "Five, six, pick up sticks;", "Seven, eight, lay them straight;", "Nine, ten, a big fat hen."] + }, + { + "id": "georgie_porgie", + "cute_emoji": "๐Ÿ˜—", + "title": "Georgie Porgie", + "lines": ["Georgie Porgie, pudding and pie,", "Kissed the girls and made them cry.", "When the boys came out to play,", "Georgie Porgie ran away."] + }, + { + "id": "hot_cross_buns", + "cute_emoji": "๐Ÿฅฏ", + "title": "Hot Cross Buns", + "lines": ["Hot cross buns! Hot cross buns!", "One a penny, two a penny, hot cross buns!", "If you have no daughters, give them to your sons.", "One a penny, two a penny, hot cross buns!"] + }, + { + "id": "peter_piper", + "cute_emoji": "๐ŸŒถ๏ธ", + "title": "Peter Piper", + "lines": ["Peter Piper picked a peck of pickled peppers;", "A peck of pickled peppers Peter Piper picked;", "If Peter Piper picked a peck of pickled peppers,", "Whereโ€™s the peck of pickled peppers Peter Piper picked?"] + }, + { + "id": "little_boy_blue", + "cute_emoji": "๐Ÿ“ฏ", + "title": "Little Boy Blue", + "lines": ["Little Boy Blue, come blow your horn,", "The sheepโ€™s in the meadow, the cowโ€™s in the corn.", "Where is the boy who looks after the sheep?", "Heโ€™s under the haystack, fast asleep."] + }, + { + "id": "rock_a_bye_baby", + "cute_emoji": "๐Ÿผ", + "title": "Rock-a-bye Baby", + "lines": ["Rock-a-bye baby, on the treetop,", "When the wind blows, the cradle will rock;", "When the bough breaks, the cradle will fall,", "And down will come baby, cradle and all."] + }, + { + "id": "baa_baa_white_sheep", + "cute_emoji": "๐Ÿ‘", + "title": "Baa Baa White Sheep", + "lines": ["Baa baa white sheep, have you any wool?", "Yes sir, yes sir, bags full.", "Some for my blanket, some for my bed,", "Some for the little boy who lives in the shed."] + }, + { + "id": "there_was_a_crooked_man", + "cute_emoji": "๐Ÿ‘ž", + "title": "There Was a Crooked Man", + "lines": ["There was a crooked man, and he walked a crooked mile.", "He found a crooked sixpence upon a crooked stile.", "He bought a crooked cat, which caught a crooked mouse,", "And they all lived together in a little crooked house."] + }, + { + "id": "little_bo_peep", + "cute_emoji": "๐Ÿ", + "title": "Little Bo-Peep", + "lines": ["Little Bo-Peep has lost her sheep,", "And doesn't know where to find them;", "Leave them alone, and they'll come home,", "Wagging their tails behind them."] + }, + { + "id": "tom_tom_piper", + "cute_emoji": "๐ŸŽถ", + "title": "Tom, Tom, the Piper's Son", + "lines": ["Tom, Tom, the piper's son,", "Stole a pig and away he run;", "The pig was eat and Tom was beat,", "And Tom went crying down the street."] + }, + { + "id": "ring_a_ring_o_roses", + "cute_emoji": "๐ŸŒธ", + "title": "Ring a Ring o' Roses", + "lines": ["Ring-a-ring o' roses,", "A pocket full of posies,", "A-tishoo! A-tishoo!", "We all fall down."] + }, + { + "id": "simple_simon", + "cute_emoji": "๐Ÿฅง", + "title": "Simple Simon", + "lines": ["Simple Simon met a pieman", "Going to the fair;", "Says Simple Simon to the pieman,", "โ€˜Let me taste your ware.โ€™"] + }, + { + "id": "solomon_grundy", + "cute_emoji": "๐Ÿ“…", + "title": "Solomon Grundy", + "lines": ["Solomon Grundy,", "Born on a Monday,", "Christened on Tuesday,", "Married on Wednesday...", "Died on Sunday.", "That was the end of Solomon Grundy."] + }, + { + "id": "the_wheels_on_the_bus", + "cute_emoji": "๐ŸšŒ", + "title": "The Wheels on the Bus", + "lines": ["The wheels on the bus go round and round,", "Round and round, round and round,", "The wheels on the bus go round and round,", "All through the town."] + }, + { + "id": "ten_little_indians", + "cute_emoji": "๐Ÿ”Ÿ", + "title": "Ten Little Indians", + "lines": ["One little, two little, three little Indians,", "Four little, five little, six little Indians,", "Seven little, eight little, nine little Indians,", "Ten little Indian boys."] + }, + { + "id": "goosey_goosey_gander", + "cute_emoji": "๐Ÿฆข", + "title": "Goosey Goosey Gander", + "lines": ["Goosey, goosey, gander,", "Whither shall I wander?", "Upstairs and downstairs,", "And in my ladyโ€™s chamber."] + }, + { + "id": "curly_locks", + "cute_emoji": "๐Ÿ‘ง", + "title": "Curly Locks", + "lines": ["Curly Locks, Curly Locks, will you be mine?", "You shall not wash dishes, nor yet feed the swine;", "But sit on a cushion and sew a fine seam,", "And feed upon strawberries, sugar, and cream."] + }, + { + "id": "one_two_three_four", + "cute_emoji": "๐Ÿ”ข", + "title": "One, Two, Three, Four, Five", + "lines": ["One, two, three, four, five,", "Once I caught a fish alive,", "Six, seven, eight, nine, ten,", "Then I let it go again."] + }, + { + "id": "who_has_seen_the_wind", + "cute_emoji": "๐ŸŒฌ๏ธ", + "title": "Who Has Seen the Wind?", + "lines": ["Who has seen the wind?", "Neither I nor you:", "But when the leaves hang trembling,", "The wind is passing through."] + }, + { + "id": "polly_put_the_kettle_on", + "cute_emoji": "โ˜•", + "title": "Polly Put the Kettle On", + "lines": ["Polly, put the kettle on,", "Polly, put the kettle on,", "Polly, put the kettle on,", "We'll all have tea."] + }, + { + "id": "teddy_bear_teddy_bear", + "cute_emoji": "๐Ÿงธ", + "title": "Teddy Bear, Teddy Bear", + "lines": ["Teddy bear, teddy bear, turn around,", "Teddy bear, teddy bear, touch the ground.", "Teddy bear, teddy bear, polish your shoes,", "Teddy bear, teddy bear, off to school!"] + }, + { + "id": "five_little_ducks", + "cute_emoji": "๐Ÿฆ†", + "title": "Five Little Ducks", + "lines": ["Five little ducks went out one day,", "Over the hill and far away.", "Mother duck said, 'Quack, quack, quack, quack,'", "But only four little ducks came back."] + }, + { + "id": "little_jack_horner", + "cute_emoji": "๐Ÿฅง", + "title": "Little Jack Horner", + "lines": ["Little Jack Horner sat in a corner,", "Eating his Christmas pie;", "He put in his thumb, and pulled out a plum,", "And said, 'What a good boy am I!'"] + }, + { + "id": "see_saw_marjory_daw", + "cute_emoji": "โš–๏ธ", + "title": "See Saw Margery Daw", + "lines": ["See saw, Margery Daw,", "Jack shall have a new master;", "He shall earn but a penny a day,", "Because he can't work any faster."] + }, + { + "id": "what_are_little_boys", + "cute_emoji": "๐Ÿง’", + "title": "What Are Little Boys Made Of?", + "lines": ["What are little boys made of?", "Snips and snails, and puppy dogsโ€™ tails;", "Thatโ€™s what little boys are made of."] + } + ] +} diff --git a/src/layouts/Base.astro b/src/layouts/Base.astro index 5800ef00..b686b972 100755 --- a/src/layouts/Base.astro +++ b/src/layouts/Base.astro @@ -5,6 +5,7 @@ import Footer from "@/layouts/common/Footer"; import Header from "@/layouts/common/Header"; import Menu from "@/layouts/common/Menu"; import { siteConfig } from "@/site-config"; +import Shortcut from "@/components/Shortcut.astro"; const { meta: { title, description = siteConfig.description, ogImage }, @@ -18,6 +19,7 @@ const { +
diff --git a/src/layouts/common/Header.astro b/src/layouts/common/Header.astro index f3a34652..863165f8 100755 --- a/src/layouts/common/Header.astro +++ b/src/layouts/common/Header.astro @@ -3,18 +3,16 @@ import "@/assets/styles/header.css"; import { APP_NAME } from "@/utils/constants"; import { Picture } from "astro:assets"; import logoImage from "/public/assets/images/512x512.png"; - -const { hasBack = true } = Astro.props; --- -
-
- -
Welcome to the world of learning
+
Welcome to the corner of learning
- - { - hasBack && ( - - Back - - ) - } - +
- - diff --git a/src/pages/alphabets/[alphabet]/playground.astro b/src/pages/alphabets/[alphabet]/playground.astro index 0aa86d6d..617c2444 100644 --- a/src/pages/alphabets/[alphabet]/playground.astro +++ b/src/pages/alphabets/[alphabet]/playground.astro @@ -7,6 +7,8 @@ import { DATASET } from "@/mappers/dataset"; import SharePopover from "@/components/ShareButton.astro"; import KeyboardTrigger from "@/components/KeyboardTrigger.astro"; +import { capitalizeThis } from "@/utils/common"; + export const prerender = true; export async function getStaticPaths() { @@ -23,9 +25,11 @@ const defaultCategory = { }; const { alphabet } = Astro.params; const currentCategory = DATASET[alphabet] || defaultCategory; + +const title = `${capitalizeThis(alphabet)} - Playground`; --- - +
Press a key to see the magic @@ -34,8 +38,8 @@ const currentCategory = DATASET[alphabet] || defaultCategory;
diff --git a/src/pages/dashboard.astro b/src/pages/dashboard.astro new file mode 100644 index 00000000..583c82d8 --- /dev/null +++ b/src/pages/dashboard.astro @@ -0,0 +1,37 @@ +--- +import "@/assets/styles/dashboard.css"; +import Header from "@/layouts/common/Header"; +--- + + + + Dashboard + + +
+ +
+
+
+

Hello there!

+

+ This is your personal dashboard. From here you can manage your account, view your activity, and much more. +

+ +
+
+ + + diff --git a/src/pages/forgot-password.astro b/src/pages/forgot-password.astro new file mode 100644 index 00000000..09157ccc --- /dev/null +++ b/src/pages/forgot-password.astro @@ -0,0 +1,68 @@ +--- +import "@/assets/styles/signup.css"; +import SunIcon from "@/assets/icons/sun.svg"; +import MoonIcon from "@/assets/icons/moon.svg"; +import Base from "@/layouts/Base"; +--- + + + + + + diff --git a/src/pages/login.astro b/src/pages/login.astro new file mode 100644 index 00000000..c8057787 --- /dev/null +++ b/src/pages/login.astro @@ -0,0 +1,206 @@ +--- +import "@/assets/styles/signup.css"; +import GoogleIcon from "@/assets/icons/google.svg"; +import EyeIcon from "@/assets/icons/eye.svg"; +import XIcon from "@/assets/icons/x.svg"; +import SunIcon from "@/assets/icons/sun.svg"; +import MoonIcon from "@/assets/icons/moon.svg"; +import Base from "@/layouts/Base"; + +const slideImages = [ + { dark: "/assets/images/screenshots/dark/capital.png", light: "/assets/images/screenshots/light/capitalLight.png" }, + { dark: "/assets/images/screenshots/dark/colors.png", light: "/assets/images/screenshots/light/colorsLight.png" }, + { dark: "/assets/images/screenshots/dark/quote.png", light: "/assets/images/screenshots/light/quoteLight.png" }, + { dark: "/assets/images/screenshots/dark/story.png", light: "/assets/images/screenshots/light/storyLight.png" }, + { dark: "/assets/images/screenshots/dark/map.png", light: "/assets/images/screenshots/light/mapLight.png" }, + { dark: "/assets/images/screenshots/dark/varnmala.png", light: "/assets/images/screenshots/light/varnmalaLight.png" } +]; +--- + + + + + + + + diff --git a/src/pages/poems.astro b/src/pages/poems.astro new file mode 100644 index 00000000..c206307d --- /dev/null +++ b/src/pages/poems.astro @@ -0,0 +1,40 @@ +--- +import "@/assets/styles/poems.css"; +import BackIcon from "@/components/Back.astro"; +import Help from "@/components/Help.astro"; +import PoemCard from "@/components/PoemCard.astro"; +import PoemDialog from "@/components/PoemDialog.astro"; +import SharePopover from "@/components/ShareButton.astro"; +import SquareBubble from "@/components/SquareBubble.astro"; +import poem from "@/data/poem.json"; +import BaseLayout from "@/layouts/Base"; +import "@/utils/common"; /* for sortBy method */ +const { poems } = poem; +poems.sortBy("title"); +const title = "Poems"; +--- + + + + + + + +
+ +
+
Welcome to Poem World!
+
Hello, little reader!
+
+
+
+
+ {poems.map((poem) => )} +
+
+ +
+
diff --git a/src/pages/signup.astro b/src/pages/signup.astro new file mode 100644 index 00000000..668b9be2 --- /dev/null +++ b/src/pages/signup.astro @@ -0,0 +1,236 @@ +--- +import "@/assets/styles/signup.css"; +import GoogleIcon from "@/assets/icons/google.svg"; +import EyeIcon from "@/assets/icons/eye.svg"; +import XIcon from "@/assets/icons/x.svg"; +import SunIcon from "@/assets/icons/sun.svg"; +import MoonIcon from "@/assets/icons/moon.svg"; +import Base from "@/layouts/Base"; + +const slideImages = [ + { dark: "/assets/images/screenshots/dark/capital.PNG", light: "/assets/images/screenshots/light/capitalLight.png" }, + { dark: "/assets/images/screenshots/dark/colors.PNG", light: "/assets/images/screenshots/light/colorsLight.png" }, + { dark: "/assets/images/screenshots/dark/quote.PNG", light: "/assets/images/screenshots/light/quoteLight.png" }, + { dark: "/assets/images/screenshots/dark/story.png", light: "/assets/images/screenshots/light/storyLight.png" }, + { dark: "/assets/images/screenshots/dark/map.png", light: "/assets/images/screenshots/light/mapLight.png" }, + { dark: "/assets/images/screenshots/dark/varnmala.png", light: "/assets/images/screenshots/light/varnmalaLight.png" } +]; +--- + + + + + + + + diff --git a/src/pages/varnmala/hindi.astro b/src/pages/varnmala/hindi.astro index 6accdd55..08261480 100644 --- a/src/pages/varnmala/hindi.astro +++ b/src/pages/varnmala/hindi.astro @@ -2,9 +2,9 @@ import AlphabetComponent from "@/components/Alphabet.astro"; import BackButton from "@/components/BackButton.astro"; import Help from "@/components/Help.astro"; +import SharePopover from "@/components/ShareButton.astro"; import BaseLayout from "@/layouts/Base"; import { hindiVowelList, varnmala_hindi } from "@/utils/characters"; -import SharePopover from "@/components/ShareButton.astro"; // Vowels to be excluded const vowelsToRemove = ["เคŒ", "เคŽ", "เค’"]; @@ -24,7 +24,7 @@ const formattedVowelList = hindiVowelList diff --git a/src/types/index.ts b/src/types/index.ts index ac5b07ff..659e49bc 100644 --- a/src/types/index.ts +++ b/src/types/index.ts @@ -1,3 +1,9 @@ +declare global { + interface Array { + sortBy(key: K): T[]; + } +} + export type { LetterEntity } from "./alphabet"; export type { BlogCardProps, BlogMeta, BlogPost } from "./blog"; export type { LinkProps } from "./link"; diff --git a/src/utils/common.ts b/src/utils/common.ts index 2ae099da..286b27a2 100644 --- a/src/utils/common.ts +++ b/src/utils/common.ts @@ -52,3 +52,17 @@ export const getInitials = (name: string): string => { return initials; }; + +/* sort an array of object based on its key */ +Array.prototype.sortBy = function (this: T[], key: K): T[] { + return this.slice().sort((a, b) => { + const valA = a[key]; + const valB = b[key]; + + if (valA < valB) return -1; + if (valA > valB) return 1; + return 0; + }); +}; + +export const capitalizeThis = (text: string) => text?.charAt(0).toUpperCase() + text?.slice(1); diff --git a/src/utils/constants.ts b/src/utils/constants.ts index 81f636a0..ae258dd0 100644 --- a/src/utils/constants.ts +++ b/src/utils/constants.ts @@ -211,6 +211,12 @@ export const NavbarLinks: LinkProps[] = [ title: "Stories", path: "/stories", isActive: true + }, + { + name: "Poems", + title: "Poems", + path: "/poems", + isActive: true } ];