From 3fed14c35356919b1e1948430e5adcbf40a612c8 Mon Sep 17 00:00:00 2001 From: Hieuhuy Pham Date: Sat, 11 Jan 2025 00:08:29 -0500 Subject: [PATCH] Full push for initial version of NullTranslationGroup website. --- global.d.ts | 6 + package-lock.json | 327 ++++++++++++------ package.json | 18 +- public/logo.png | Bin 0 -> 51744 bytes .../[bookId]/chapters/[chapterId]/page.tsx | 46 +++ src/app/books/[bookId]/page.tsx | 88 +++++ src/app/layout.tsx | 78 +++-- src/app/page.tsx | 153 ++++---- src/components/ChapterDropdown.tsx | 32 ++ src/components/NavigationBar.tsx | 67 ++++ src/components/NavigationButtons.tsx | 62 ++++ src/components/NightModeToggle.tsx | 19 + src/lib/api.tsx | 84 +++++ src/lib/types.tsx | 65 ++++ src/lib/utils.tsx | 7 + tailwind.config.ts | 6 +- 16 files changed, 821 insertions(+), 237 deletions(-) create mode 100644 global.d.ts create mode 100644 public/logo.png create mode 100644 src/app/books/[bookId]/chapters/[chapterId]/page.tsx create mode 100644 src/app/books/[bookId]/page.tsx create mode 100644 src/components/ChapterDropdown.tsx create mode 100644 src/components/NavigationBar.tsx create mode 100644 src/components/NavigationButtons.tsx create mode 100644 src/components/NightModeToggle.tsx create mode 100644 src/lib/api.tsx create mode 100644 src/lib/types.tsx create mode 100644 src/lib/utils.tsx diff --git a/global.d.ts b/global.d.ts new file mode 100644 index 0000000..bc5bc95 --- /dev/null +++ b/global.d.ts @@ -0,0 +1,6 @@ +declare namespace NodeJS { + interface ProcessEnv { + NEXT_PUBLIC_API_URL: string; + STRAPI_API_TOKEN: string; + } + } \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index bc807d6..716ce23 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8,6 +8,12 @@ "name": "frontend", "version": "0.1.0", "dependencies": { + "@tailwindcss/aspect-ratio": "^0.4.2", + "@tailwindcss/line-clamp": "^0.4.4", + "@tailwindcss/typography": "^0.5.16", + "@tanstack/react-query": "^5.63.0", + "@tanstack/react-query-devtools": "^5.63.0", + "axios": "^1.7.9", "next": "15.1.4", "react": "^19.0.0", "react-dom": "^19.0.0" @@ -28,7 +34,6 @@ "version": "5.2.0", "resolved": "https://registry.npmjs.org/@alloc/quick-lru/-/quick-lru-5.2.0.tgz", "integrity": "sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==", - "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -605,7 +610,6 @@ "version": "8.0.2", "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", - "dev": true, "license": "ISC", "dependencies": { "string-width": "^5.1.2", @@ -623,7 +627,6 @@ "version": "0.3.8", "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.8.tgz", "integrity": "sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==", - "dev": true, "license": "MIT", "dependencies": { "@jridgewell/set-array": "^1.2.1", @@ -638,7 +641,6 @@ "version": "3.1.2", "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", - "dev": true, "license": "MIT", "engines": { "node": ">=6.0.0" @@ -648,7 +650,6 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", - "dev": true, "license": "MIT", "engines": { "node": ">=6.0.0" @@ -658,14 +659,12 @@ "version": "1.5.0", "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", - "dev": true, "license": "MIT" }, "node_modules/@jridgewell/trace-mapping": { "version": "0.3.25", "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", - "dev": true, "license": "MIT", "dependencies": { "@jridgewell/resolve-uri": "^3.1.0", @@ -820,7 +819,6 @@ "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "dev": true, "license": "MIT", "dependencies": { "@nodelib/fs.stat": "2.0.5", @@ -834,7 +832,6 @@ "version": "2.0.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", - "dev": true, "license": "MIT", "engines": { "node": ">= 8" @@ -844,7 +841,6 @@ "version": "1.2.8", "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", - "dev": true, "license": "MIT", "dependencies": { "@nodelib/fs.scandir": "2.1.5", @@ -868,7 +864,6 @@ "version": "0.11.0", "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", - "dev": true, "license": "MIT", "optional": true, "engines": { @@ -904,6 +899,105 @@ "tslib": "^2.8.0" } }, + "node_modules/@tailwindcss/aspect-ratio": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/@tailwindcss/aspect-ratio/-/aspect-ratio-0.4.2.tgz", + "integrity": "sha512-8QPrypskfBa7QIMuKHg2TA7BqES6vhBrDLOv8Unb6FcFyd3TjKbc6lcmb9UPQHxfl24sXoJ41ux/H7qQQvfaSQ==", + "license": "MIT", + "peerDependencies": { + "tailwindcss": ">=2.0.0 || >=3.0.0 || >=3.0.0-alpha.1" + } + }, + "node_modules/@tailwindcss/line-clamp": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/@tailwindcss/line-clamp/-/line-clamp-0.4.4.tgz", + "integrity": "sha512-5U6SY5z8N42VtrCrKlsTAA35gy2VSyYtHWCsg1H87NU1SXnEfekTVlrga9fzUDrrHcGi2Lb5KenUWb4lRQT5/g==", + "license": "MIT", + "peerDependencies": { + "tailwindcss": ">=2.0.0 || >=3.0.0 || >=3.0.0-alpha.1" + } + }, + "node_modules/@tailwindcss/typography": { + "version": "0.5.16", + "resolved": "https://registry.npmjs.org/@tailwindcss/typography/-/typography-0.5.16.tgz", + "integrity": "sha512-0wDLwCVF5V3x3b1SGXPCDcdsbDHMBe+lkFzBRaHeLvNi+nrrnZ1lA18u+OTWO8iSWU2GxUOCvlXtDuqftc1oiA==", + "license": "MIT", + "dependencies": { + "lodash.castarray": "^4.4.0", + "lodash.isplainobject": "^4.0.6", + "lodash.merge": "^4.6.2", + "postcss-selector-parser": "6.0.10" + }, + "peerDependencies": { + "tailwindcss": ">=3.0.0 || insiders || >=4.0.0-alpha.20 || >=4.0.0-beta.1" + } + }, + "node_modules/@tailwindcss/typography/node_modules/postcss-selector-parser": { + "version": "6.0.10", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz", + "integrity": "sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==", + "license": "MIT", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@tanstack/query-core": { + "version": "5.62.16", + "resolved": "https://registry.npmjs.org/@tanstack/query-core/-/query-core-5.62.16.tgz", + "integrity": "sha512-9Sgft7Qavcd+sN0V25xVyo0nfmcZXBuODy3FVG7BMWTg1HMLm8wwG5tNlLlmSic1u7l1v786oavn+STiFaPH2g==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/tannerlinsley" + } + }, + "node_modules/@tanstack/query-devtools": { + "version": "5.62.16", + "resolved": "https://registry.npmjs.org/@tanstack/query-devtools/-/query-devtools-5.62.16.tgz", + "integrity": "sha512-3ff6UBJr0H3nIhfLSl9911rvKqXf0u4B58jl0uYdDWLqPk9pCvYIbxC35cGxK2+8INl4IaFVUHb/IdgWrNkg3Q==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/tannerlinsley" + } + }, + "node_modules/@tanstack/react-query": { + "version": "5.63.0", + "resolved": "https://registry.npmjs.org/@tanstack/react-query/-/react-query-5.63.0.tgz", + "integrity": "sha512-QWizLzSiog8xqIRYmuJRok9VELlXVBAwtINgVCgW1SNvamQwWDO5R0XFSkjoBEj53x9Of1KAthLRBUC5xmtVLQ==", + "license": "MIT", + "dependencies": { + "@tanstack/query-core": "5.62.16" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/tannerlinsley" + }, + "peerDependencies": { + "react": "^18 || ^19" + } + }, + "node_modules/@tanstack/react-query-devtools": { + "version": "5.63.0", + "resolved": "https://registry.npmjs.org/@tanstack/react-query-devtools/-/react-query-devtools-5.63.0.tgz", + "integrity": "sha512-j3+22r6srSJVy8oiLUpOOupI4g7IHwbISeEGM+5ASIzzOnVUUSsY6e4nu5pxxj7ODJbiag3GpkHU/otG9B9sAA==", + "license": "MIT", + "dependencies": { + "@tanstack/query-devtools": "5.62.16" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/tannerlinsley" + }, + "peerDependencies": { + "@tanstack/react-query": "^5.63.0", + "react": "^18 || ^19" + } + }, "node_modules/@types/estree": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz", @@ -1235,7 +1329,6 @@ "version": "6.1.0", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", - "dev": true, "license": "MIT", "engines": { "node": ">=12" @@ -1248,7 +1341,6 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -1264,14 +1356,12 @@ "version": "1.3.0", "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==", - "dev": true, "license": "MIT" }, "node_modules/anymatch": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", - "dev": true, "license": "ISC", "dependencies": { "normalize-path": "^3.0.0", @@ -1285,7 +1375,6 @@ "version": "5.0.2", "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz", "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==", - "dev": true, "license": "MIT" }, "node_modules/argparse": { @@ -1469,6 +1558,12 @@ "dev": true, "license": "MIT" }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", + "license": "MIT" + }, "node_modules/available-typed-arrays": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", @@ -1495,6 +1590,17 @@ "node": ">=4" } }, + "node_modules/axios": { + "version": "1.7.9", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.9.tgz", + "integrity": "sha512-LhLcE7Hbiryz8oMDdDptSrWowmB4Bl6RCt6sIJKpRB4XtVf0iEgewX3au/pJqm+Py1kCASkb/FFKjxQaLtxJvw==", + "license": "MIT", + "dependencies": { + "follow-redirects": "^1.15.6", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" + } + }, "node_modules/axobject-query": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-4.1.0.tgz", @@ -1509,14 +1615,12 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true, "license": "MIT" }, "node_modules/binary-extensions": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -1540,7 +1644,6 @@ "version": "3.0.3", "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", - "dev": true, "license": "MIT", "dependencies": { "fill-range": "^7.1.1" @@ -1624,7 +1727,6 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz", "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==", - "dev": true, "license": "MIT", "engines": { "node": ">= 6" @@ -1671,7 +1773,6 @@ "version": "3.6.0", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", - "dev": true, "license": "MIT", "dependencies": { "anymatch": "~3.1.2", @@ -1696,7 +1797,6 @@ "version": "5.1.2", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, "license": "ISC", "dependencies": { "is-glob": "^4.0.1" @@ -1729,7 +1829,6 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "devOptional": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -1742,7 +1841,6 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "devOptional": true, "license": "MIT" }, "node_modules/color-string": { @@ -1756,11 +1854,22 @@ "simple-swizzle": "^0.2.2" } }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "license": "MIT", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, "node_modules/commander": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", - "dev": true, "license": "MIT", "engines": { "node": ">= 6" @@ -1777,7 +1886,6 @@ "version": "7.0.6", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", - "dev": true, "license": "MIT", "dependencies": { "path-key": "^3.1.0", @@ -1792,7 +1900,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", - "dev": true, "license": "MIT", "bin": { "cssesc": "bin/cssesc" @@ -1930,6 +2037,15 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "license": "MIT", + "engines": { + "node": ">=0.4.0" + } + }, "node_modules/detect-libc": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.3.tgz", @@ -1944,14 +2060,12 @@ "version": "1.2.2", "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz", "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==", - "dev": true, "license": "Apache-2.0" }, "node_modules/dlv": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==", - "dev": true, "license": "MIT" }, "node_modules/doctrine": { @@ -1986,14 +2100,12 @@ "version": "0.2.0", "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", - "dev": true, "license": "MIT" }, "node_modules/emoji-regex": { "version": "9.2.2", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", - "dev": true, "license": "MIT" }, "node_modules/enhanced-resolve": { @@ -2705,7 +2817,6 @@ "version": "1.18.0", "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.18.0.tgz", "integrity": "sha512-QKHXPW0hD8g4UET03SdOdunzSouc9N4AuHdsX8XNcTsuz+yYFILVNIX4l9yHABMhiEI9Db0JTTIpu0wB+Y1QQw==", - "dev": true, "license": "ISC", "dependencies": { "reusify": "^1.0.4" @@ -2728,7 +2839,6 @@ "version": "7.1.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", - "dev": true, "license": "MIT", "dependencies": { "to-regex-range": "^5.0.1" @@ -2775,6 +2885,26 @@ "dev": true, "license": "ISC" }, + "node_modules/follow-redirects": { + "version": "1.15.9", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.9.tgz", + "integrity": "sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "license": "MIT", + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, "node_modules/for-each": { "version": "0.3.3", "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", @@ -2789,7 +2919,6 @@ "version": "3.3.0", "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.0.tgz", "integrity": "sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==", - "dev": true, "license": "ISC", "dependencies": { "cross-spawn": "^7.0.0", @@ -2802,11 +2931,24 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/form-data": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.1.tgz", + "integrity": "sha512-tzN8e4TX8+kkxGPK8D5u0FNmjPUjw3lwC9lSLxxoB/+GtsJG91CO8bSWy73APlgAZzZbXEYZJuxjkHH2w+Ezhw==", + "license": "MIT", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/fsevents": { "version": "2.3.3", "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", - "dev": true, "hasInstallScript": true, "license": "MIT", "optional": true, @@ -2821,7 +2963,6 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", - "dev": true, "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" @@ -2932,7 +3073,6 @@ "version": "10.4.5", "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", - "dev": true, "license": "ISC", "dependencies": { "foreground-child": "^3.1.0", @@ -2953,7 +3093,6 @@ "version": "6.0.2", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", - "dev": true, "license": "ISC", "dependencies": { "is-glob": "^4.0.3" @@ -2966,7 +3105,6 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, "license": "MIT", "dependencies": { "balanced-match": "^1.0.0" @@ -2976,7 +3114,6 @@ "version": "9.0.5", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", - "dev": true, "license": "ISC", "dependencies": { "brace-expansion": "^2.0.1" @@ -3130,7 +3267,6 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", - "dev": true, "license": "MIT", "dependencies": { "function-bind": "^1.1.2" @@ -3255,7 +3391,6 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "dev": true, "license": "MIT", "dependencies": { "binary-extensions": "^2.0.0" @@ -3308,7 +3443,6 @@ "version": "2.16.1", "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz", "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==", - "dev": true, "license": "MIT", "dependencies": { "hasown": "^2.0.2" @@ -3359,7 +3493,6 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "dev": true, "license": "MIT", "engines": { "node": ">=0.10.0" @@ -3385,7 +3518,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -3414,7 +3546,6 @@ "version": "4.0.3", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dev": true, "license": "MIT", "dependencies": { "is-extglob": "^2.1.1" @@ -3440,7 +3571,6 @@ "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true, "license": "MIT", "engines": { "node": ">=0.12.0" @@ -3619,7 +3749,6 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true, "license": "ISC" }, "node_modules/iterator.prototype": { @@ -3644,7 +3773,6 @@ "version": "3.4.3", "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", - "dev": true, "license": "BlueOak-1.0.0", "dependencies": { "@isaacs/cliui": "^8.0.2" @@ -3660,7 +3788,6 @@ "version": "1.21.7", "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.7.tgz", "integrity": "sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A==", - "dev": true, "license": "MIT", "bin": { "jiti": "bin/jiti.js" @@ -3784,7 +3911,6 @@ "version": "3.1.3", "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.3.tgz", "integrity": "sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==", - "dev": true, "license": "MIT", "engines": { "node": ">=14" @@ -3797,7 +3923,6 @@ "version": "1.2.4", "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", - "dev": true, "license": "MIT" }, "node_modules/locate-path": { @@ -3816,11 +3941,22 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/lodash.castarray": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.castarray/-/lodash.castarray-4.4.0.tgz", + "integrity": "sha512-aVx8ztPv7/2ULbArGJ2Y42bG1mEQ5mGjpdvrbJcJFU3TbYybe+QlLS4pst9zV52ymy2in1KpFPiZnAOATxD4+Q==", + "license": "MIT" + }, + "node_modules/lodash.isplainobject": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", + "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==", + "license": "MIT" + }, "node_modules/lodash.merge": { "version": "4.6.2", "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", - "dev": true, "license": "MIT" }, "node_modules/loose-envify": { @@ -3840,7 +3976,6 @@ "version": "10.4.3", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", - "dev": true, "license": "ISC" }, "node_modules/math-intrinsics": { @@ -3857,7 +3992,6 @@ "version": "1.4.1", "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "dev": true, "license": "MIT", "engines": { "node": ">= 8" @@ -3867,7 +4001,6 @@ "version": "4.0.8", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", - "dev": true, "license": "MIT", "dependencies": { "braces": "^3.0.3", @@ -3877,6 +4010,27 @@ "node": ">=8.6" } }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "license": "MIT", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, "node_modules/minimatch": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", @@ -3904,7 +4058,6 @@ "version": "7.1.2", "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", - "dev": true, "license": "ISC", "engines": { "node": ">=16 || 14 >=14.17" @@ -3921,7 +4074,6 @@ "version": "2.7.0", "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", - "dev": true, "license": "MIT", "dependencies": { "any-promise": "^1.0.0", @@ -4040,7 +4192,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true, "license": "MIT", "engines": { "node": ">=0.10.0" @@ -4050,7 +4201,6 @@ "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", - "dev": true, "license": "MIT", "engines": { "node": ">=0.10.0" @@ -4060,7 +4210,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz", "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==", - "dev": true, "license": "MIT", "engines": { "node": ">= 6" @@ -4250,7 +4399,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz", "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==", - "dev": true, "license": "BlueOak-1.0.0" }, "node_modules/parent-module": { @@ -4280,7 +4428,6 @@ "version": "3.1.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -4290,14 +4437,12 @@ "version": "1.0.7", "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true, "license": "MIT" }, "node_modules/path-scurry": { "version": "1.11.1", "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", - "dev": true, "license": "BlueOak-1.0.0", "dependencies": { "lru-cache": "^10.2.0", @@ -4320,7 +4465,6 @@ "version": "2.3.1", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true, "license": "MIT", "engines": { "node": ">=8.6" @@ -4333,7 +4477,6 @@ "version": "2.3.0", "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", - "dev": true, "license": "MIT", "engines": { "node": ">=0.10.0" @@ -4343,7 +4486,6 @@ "version": "4.0.6", "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz", "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==", - "dev": true, "license": "MIT", "engines": { "node": ">= 6" @@ -4363,7 +4505,6 @@ "version": "8.4.49", "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.49.tgz", "integrity": "sha512-OCVPnIObs4N29kxTjzLfUryOkvZEq+pf8jTF0lg8E7uETuWHA+v7j3c/xJmiqpX450191LlmZfUKkXxkTry7nA==", - "dev": true, "funding": [ { "type": "opencollective", @@ -4392,7 +4533,6 @@ "version": "15.1.0", "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-15.1.0.tgz", "integrity": "sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==", - "dev": true, "license": "MIT", "dependencies": { "postcss-value-parser": "^4.0.0", @@ -4410,7 +4550,6 @@ "version": "4.0.1", "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-4.0.1.tgz", "integrity": "sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==", - "dev": true, "license": "MIT", "dependencies": { "camelcase-css": "^2.0.1" @@ -4430,7 +4569,6 @@ "version": "4.0.2", "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-4.0.2.tgz", "integrity": "sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==", - "dev": true, "funding": [ { "type": "opencollective", @@ -4466,7 +4604,6 @@ "version": "6.2.0", "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-6.2.0.tgz", "integrity": "sha512-HQbt28KulC5AJzG+cZtj9kvKB93CFCdLvog1WFLf1D+xmMvPGlBstkpTEZfK5+AN9hfJocyBFCNiqyS48bpgzQ==", - "dev": true, "funding": [ { "type": "opencollective", @@ -4492,7 +4629,6 @@ "version": "6.1.2", "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz", "integrity": "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==", - "dev": true, "license": "MIT", "dependencies": { "cssesc": "^3.0.0", @@ -4506,7 +4642,6 @@ "version": "4.2.0", "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", - "dev": true, "license": "MIT" }, "node_modules/prelude-ls": { @@ -4531,6 +4666,12 @@ "react-is": "^16.13.1" } }, + "node_modules/proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", + "license": "MIT" + }, "node_modules/punycode": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", @@ -4545,7 +4686,6 @@ "version": "1.2.3", "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", - "dev": true, "funding": [ { "type": "github", @@ -4594,7 +4734,6 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==", - "dev": true, "license": "MIT", "dependencies": { "pify": "^2.3.0" @@ -4604,7 +4743,6 @@ "version": "3.6.0", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "dev": true, "license": "MIT", "dependencies": { "picomatch": "^2.2.1" @@ -4661,7 +4799,6 @@ "version": "1.22.10", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz", "integrity": "sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==", - "dev": true, "license": "MIT", "dependencies": { "is-core-module": "^2.16.0", @@ -4702,7 +4839,6 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", - "dev": true, "license": "MIT", "engines": { "iojs": ">=1.0.0", @@ -4713,7 +4849,6 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", - "dev": true, "funding": [ { "type": "github", @@ -4900,7 +5035,6 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, "license": "MIT", "dependencies": { "shebang-regex": "^3.0.0" @@ -4913,7 +5047,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -4999,7 +5132,6 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", - "dev": true, "license": "ISC", "engines": { "node": ">=14" @@ -5046,7 +5178,6 @@ "version": "5.1.2", "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", - "dev": true, "license": "MIT", "dependencies": { "eastasianwidth": "^0.2.0", @@ -5065,7 +5196,6 @@ "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, "license": "MIT", "dependencies": { "emoji-regex": "^8.0.0", @@ -5080,7 +5210,6 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -5090,14 +5219,12 @@ "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true, "license": "MIT" }, "node_modules/string-width-cjs/node_modules/strip-ansi": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, "license": "MIT", "dependencies": { "ansi-regex": "^5.0.1" @@ -5223,7 +5350,6 @@ "version": "7.1.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", - "dev": true, "license": "MIT", "dependencies": { "ansi-regex": "^6.0.1" @@ -5240,7 +5366,6 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, "license": "MIT", "dependencies": { "ansi-regex": "^5.0.1" @@ -5253,7 +5378,6 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -5309,7 +5433,6 @@ "version": "3.35.0", "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.35.0.tgz", "integrity": "sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==", - "dev": true, "license": "MIT", "dependencies": { "@jridgewell/gen-mapping": "^0.3.2", @@ -5345,7 +5468,6 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "dev": true, "license": "MIT", "engines": { "node": ">= 0.4" @@ -5358,7 +5480,6 @@ "version": "3.4.17", "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.17.tgz", "integrity": "sha512-w33E2aCvSDP0tW9RZuNXadXlkHXqFzSkQew/aIa2i/Sj8fThxwovwlXHSPXTbAHwEIhBFXAedUhP2tueAKP8Og==", - "dev": true, "license": "MIT", "dependencies": { "@alloc/quick-lru": "^5.2.0", @@ -5396,7 +5517,6 @@ "version": "3.3.3", "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", - "dev": true, "license": "MIT", "dependencies": { "@nodelib/fs.stat": "^2.0.2", @@ -5413,7 +5533,6 @@ "version": "5.1.2", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, "license": "ISC", "dependencies": { "is-glob": "^4.0.1" @@ -5436,7 +5555,6 @@ "version": "3.3.1", "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", - "dev": true, "license": "MIT", "dependencies": { "any-promise": "^1.0.0" @@ -5446,7 +5564,6 @@ "version": "1.6.0", "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz", "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==", - "dev": true, "license": "MIT", "dependencies": { "thenify": ">= 3.1.0 < 4" @@ -5459,7 +5576,6 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, "license": "MIT", "dependencies": { "is-number": "^7.0.0" @@ -5485,7 +5601,6 @@ "version": "0.1.13", "resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz", "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==", - "dev": true, "license": "Apache-2.0" }, "node_modules/tsconfig-paths": { @@ -5652,14 +5767,12 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", - "dev": true, "license": "MIT" }, "node_modules/which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, "license": "ISC", "dependencies": { "isexe": "^2.0.0" @@ -5773,7 +5886,6 @@ "version": "8.1.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", - "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^6.1.0", @@ -5792,7 +5904,6 @@ "version": "7.0.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.0.0", @@ -5810,7 +5921,6 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -5820,14 +5930,12 @@ "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true, "license": "MIT" }, "node_modules/wrap-ansi-cjs/node_modules/string-width": { "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, "license": "MIT", "dependencies": { "emoji-regex": "^8.0.0", @@ -5842,7 +5950,6 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, "license": "MIT", "dependencies": { "ansi-regex": "^5.0.1" @@ -5855,7 +5962,6 @@ "version": "6.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", - "dev": true, "license": "MIT", "engines": { "node": ">=12" @@ -5868,7 +5974,6 @@ "version": "2.7.0", "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.7.0.tgz", "integrity": "sha512-+hSoy/QHluxmC9kCIJyL/uyFmLmc+e5CFR5Wa+bpIhIj85LVb9ZH2nVnqrHoSvKogwODv0ClqZkmiSSaIH5LTA==", - "dev": true, "license": "ISC", "bin": { "yaml": "bin.mjs" diff --git a/package.json b/package.json index 838c7ce..9d5e56e 100644 --- a/package.json +++ b/package.json @@ -9,19 +9,25 @@ "lint": "next lint" }, "dependencies": { + "@tailwindcss/aspect-ratio": "^0.4.2", + "@tailwindcss/line-clamp": "^0.4.4", + "@tailwindcss/typography": "^0.5.16", + "@tanstack/react-query": "^5.63.0", + "@tanstack/react-query-devtools": "^5.63.0", + "axios": "^1.7.9", + "next": "15.1.4", "react": "^19.0.0", - "react-dom": "^19.0.0", - "next": "15.1.4" + "react-dom": "^19.0.0" }, "devDependencies": { - "typescript": "^5", + "@eslint/eslintrc": "^3", "@types/node": "^20", "@types/react": "^19", "@types/react-dom": "^19", - "postcss": "^8", - "tailwindcss": "^3.4.1", "eslint": "^9", "eslint-config-next": "15.1.4", - "@eslint/eslintrc": "^3" + "postcss": "^8", + "tailwindcss": "^3.4.1", + "typescript": "^5" } } diff --git a/public/logo.png b/public/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..ce5c9ad45dc16219c20ef0b86199c87f09b1f2d6 GIT binary patch literal 51744 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 + +// Dynamic page component +export default async function ChapterPage(props: { params: paramsType}) { + const { bookId, chapterId } = await props.params; + + const book = await fetchBookById(bookId); + + const chapters :Chapter[] = book.chapters; + const sorted_chapters:Chapter[] = chapters.sort((a, b) => a.Chapter_Number - b.Chapter_Number); + const current_chapter = sorted_chapters.find((chapter) => chapter.documentId === chapterId) || undefined; + const next_chapter = current_chapter ? sorted_chapters.find((chapter) => chapter.Chapter_Number === current_chapter.Chapter_Number + 1)?.documentId || "" : ""; + const prev_chapter = current_chapter ? sorted_chapters.find((chapter) => chapter.Chapter_Number === current_chapter.Chapter_Number - 1)?.documentId || "" : ""; + // Fetch chapter data + + if (current_chapter === undefined) { + return ( +
+
+

Chapter not found !

' }}>
+ + {/* Client component for navigation */} + +
+
+ ) + } + + + return ( +
+ + +
+ + {/* Client component for navigation */} + +
+ ); + +} \ No newline at end of file diff --git a/src/app/books/[bookId]/page.tsx b/src/app/books/[bookId]/page.tsx new file mode 100644 index 0000000..30d1b26 --- /dev/null +++ b/src/app/books/[bookId]/page.tsx @@ -0,0 +1,88 @@ +import { fetchBookChapterLinks } from "@/lib/api"; +import { Book } from "@/lib/types"; +import { formatDateToMonthDayYear } from "@/lib/utils"; +import ChapterDropdown from "@/components/ChapterDropdown"; + +export type paramsType = Promise<{ bookId: string}>; + + +export default async function BookPage(props: { params: paramsType }) { + const { bookId } = await props.params; + + let book: Book; + try { + book = await fetchBookChapterLinks(bookId); + } catch (error) { + console.error(error); + return ( +
+ Error fetching book data. Please try again later. +
+ ); + } + + const { Name, Author, Description, chapters } = book; + const recentChapters = chapters.length > 6 ? chapters.slice(chapters.length - 6, chapters.length) : chapters; + return ( +
); +} diff --git a/src/app/layout.tsx b/src/app/layout.tsx index f7fa87e..4efef51 100644 --- a/src/app/layout.tsx +++ b/src/app/layout.tsx @@ -1,33 +1,61 @@ -import type { Metadata } from "next"; -import { Geist, Geist_Mono } from "next/font/google"; -import "./globals.css"; +"use client"; -const geistSans = Geist({ - variable: "--font-geist-sans", - subsets: ["latin"], -}); +import "tailwindcss/tailwind.css"; -const geistMono = Geist_Mono({ - variable: "--font-geist-mono", - subsets: ["latin"], -}); +import React, { useEffect, useState } from "react"; +import NightModeToggle from "@/components/NightModeToggle"; +import Navbar from "@/components/NavigationBar"; -export const metadata: Metadata = { - title: "Create Next App", - description: "Generated by create next app", -}; +export default function RootLayout({ children }: { children: React.ReactNode }) { + const [isDarkMode, setIsDarkMode] = useState(false); + + useEffect(() => { + const savedTheme = localStorage.getItem("theme"); + const prefersDark = window.matchMedia("(prefers-color-scheme: dark)").matches; + + const shouldEnableDark = savedTheme === "dark" || (!savedTheme && prefersDark); + setIsDarkMode(shouldEnableDark); + + if (shouldEnableDark) { + document.documentElement.classList.add("dark"); + } else { + document.documentElement.classList.remove("dark"); + } + }, []); + + const toggleDarkMode = () => { + const newTheme = isDarkMode ? "light" : "dark"; + setIsDarkMode(!isDarkMode); + localStorage.setItem("theme", newTheme); + + document.documentElement.classList.toggle("dark", !isDarkMode); + }; -export default function RootLayout({ - children, -}: Readonly<{ - children: React.ReactNode; -}>) { return ( - - - {children} + + +