diff --git a/.env.example b/.env.example
deleted file mode 100644
index 995c7d7..0000000
--- a/.env.example
+++ /dev/null
@@ -1,15 +0,0 @@
-#Refer https://github.com/itzzzme/anime-api to host your backend API
-VITE_API_URL=/api
-
-#Refer this gist to setup proxy server https://gist.github.com/itzzzme/180813be2c7b45eedc8ce8344c8dea3b
-VITE_PROXY_URL=/?url=
-
-#Refer https://github.com/itzzzme/m3u8proxy to host you m3u8 proxy server though it's optional but if you don't set it up you may get CORS error for some servers if you set up from the given repo then only the url structure will look like this
-VITE_M3U8_PROXY_URL=/m3u8-proxy?url=
-
-#totaly optional / if you don't want to setup worker just change the code of getQtip.utils.js following the pattern of any other utils file
-VITE_WORKER_URL=https://worker1.workers.dev,https://worker2.workers.dev,https://worker3.workers.dev,...
-
-VITE_BASE_IFRAME_URL=https://megaplay.buzz/stream/s-2
-
-VITE_BASE_IFRAME_URL_2=https://vidwish.live/stream/s-2
diff --git a/.gitignore b/.gitignore
deleted file mode 100644
index 4855fb9..0000000
--- a/.gitignore
+++ /dev/null
@@ -1,133 +0,0 @@
-# Logs
-logs
-*.log
-npm-debug.log*
-yarn-debug.log*
-yarn-error.log*
-lerna-debug.log*
-.pnpm-debug.log*
-
-# Diagnostic reports (https://nodejs.org/api/report.html)
-report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json
-
-# Runtime data
-pids
-*.pid
-*.seed
-*.pid.lock
-
-# Directory for instrumented libs generated by jscoverage/JSCover
-lib-cov
-
-# Coverage directory used by tools like istanbul
-coverage
-*.lcov
-
-# nyc test coverage
-.nyc_output
-
-# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files)
-.grunt
-
-# Bower dependency directory (https://bower.io/)
-bower_components
-
-# node-waf configuration
-.lock-wscript
-
-# Compiled binary addons (https://nodejs.org/api/addons.html)
-build/Release
-
-# Dependency directories
-node_modules/
-jspm_packages/
-
-# lock json files
-package-lock.json
-
-# Snowpack dependency directory (https://snowpack.dev/)
-web_modules/
-
-# TypeScript cache
-*.tsbuildinfo
-
-# Optional npm cache directory
-.npm
-
-# Optional eslint cache
-.eslintcache
-
-# Optional stylelint cache
-.stylelintcache
-
-# Microbundle cache
-.rpt2_cache/
-.rts2_cache_cjs/
-.rts2_cache_es/
-.rts2_cache_umd/
-
-# Optional REPL history
-.node_repl_history
-
-# Output of 'npm pack'
-*.tgz
-
-# Yarn Integrity file
-.yarn-integrity
-
-# dotenv environment variable files
-.env
-.env.development.local
-.env.test.local
-.env.production.local
-.env.local
-
-# parcel-bundler cache (https://parceljs.org/)
-.cache
-.parcel-cache
-
-# Next.js build output
-.next
-out
-
-# Nuxt.js build / generate output
-.nuxt
-dist
-
-# Gatsby files
-.cache/
-# Comment in the public line in if your project uses Gatsby and not Next.js
-# https://nextjs.org/blog/next-9-1#public-directory-support
-# public
-
-# vuepress build output
-.vuepress/dist
-
-# vuepress v2.x temp and cache directory
-.temp
-.cache
-
-# Docusaurus cache and generated files
-.docusaurus
-
-# Serverless directories
-.serverless/
-
-# FuseBox cache
-.fusebox/
-
-# DynamoDB Local files
-.dynamodb/
-
-# TernJS port file
-.tern-port
-
-# Stores VSCode versions used for testing VSCode extensions
-.vscode-test
-
-# yarn v2
-.yarn/cache
-.yarn/unplugged
-.yarn/build-state.yml
-.yarn/install-state.gz
-.pnp.*
\ No newline at end of file
diff --git a/LICENSE b/LICENSE
deleted file mode 100644
index 85f6de2..0000000
--- a/LICENSE
+++ /dev/null
@@ -1,21 +0,0 @@
-MIT License
-
-Copyright (c) 2024 Sayan
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
diff --git a/README.md b/README.md
deleted file mode 100644
index 1d2b28f..0000000
--- a/README.md
+++ /dev/null
@@ -1,119 +0,0 @@
-
-
- Zenime - Ad free anime streaming platform
-
-
-
-
-
-
-
-
-
-
-
- Zenime is an open-source anime streaming service that uses custom API, built using ReactJS with javascript and Tailwind CSS. It lets you easily find any anime with intuitive search & suggestion feature and stream without any ads.
-
-
-
-View more Features
-
-### General
-
-- Sub Anime support
-- Dub Anime support
-- User-friendly interface
-- Mobile responsive
-- Fast page load
-- Character & Voice Actors
-
-### Watch Page
-
-- Related Animes
-- Recommended Animes
-- Available seasons
-- Estimated schedule of upcoming episodes
-- **Player**
- - Autoplay
- - Autoskip intro/outro
- - Autonext
-
-
-
-## Previews
-
-
-
-## Installation and Local Development
-
-### 1. Make sure you have node installed on your device
-
-### 2. Run the following code to clone the repository and install all required dependencies
-
-```bash
-git clone https://github.com/itzzzme/zenime.git
-cd zenime
-npm install # or yarn
-```
-
-### 3. Refer the .env.example to set your .env file up
-
-## Start the server
-
-```bash
-npm start # or npm run dev (to run develepment server)
-```
-## Live Deployment
-
-### Vercel
-
-Host your own instance of Zenime on vercel
-
-[](https://vercel.com/new/clone?repository-url=https://github.com/itzzzme/zenime)
-
-### Render
-
-Host your own instance of Zenime on Render.
-
-[](https://render.com/deploy?repo=https://github.com/itzzzme/zenime)
-
-### Pull Requests
-
-- Pull requests are welcomed that address bug fixes, improvements, or new features.
-- Fork the repository and create a new branch for your changes.
-- Ensure your code follows our coding standards.
-- Include tests if applicable.
-- Describe your changes clearly in the pull request, explaining the problem and solution.
-
- ### Reporting Issues
-
-If you discover any issues or have suggestions for improvement, please open an issue. Provide a clear and concise description of the problem, steps to reproduce it, and any relevant information about your environment.
-
-### Support
-
- If you like the project feel free to drop a star ✨. Your appreciation means a lot.
-
-Made by itzzzme
- 🫰
diff --git a/components.json b/components.json
deleted file mode 100644
index d16853e..0000000
--- a/components.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
- "$schema": "https://ui.shadcn.com/schema.json",
- "style": "new-york",
- "rsc": false,
- "tsx": false,
- "tailwind": {
- "config": "tailwind.config.js",
- "css": "src/index.css",
- "baseColor": "zinc",
- "cssVariables": true,
- "prefix": ""
- },
- "aliases": {
- "components": "@/components",
- "utils": "@/lib/utils",
- "ui": "@/components/ui",
- "lib": "@/lib",
- "hooks": "@/hooks"
- }
-}
\ No newline at end of file
diff --git a/eslint.config.js b/eslint.config.js
deleted file mode 100644
index 238d2e4..0000000
--- a/eslint.config.js
+++ /dev/null
@@ -1,38 +0,0 @@
-import js from '@eslint/js'
-import globals from 'globals'
-import react from 'eslint-plugin-react'
-import reactHooks from 'eslint-plugin-react-hooks'
-import reactRefresh from 'eslint-plugin-react-refresh'
-
-export default [
- { ignores: ['dist'] },
- {
- files: ['**/*.{js,jsx}'],
- languageOptions: {
- ecmaVersion: 2020,
- globals: globals.browser,
- parserOptions: {
- ecmaVersion: 'latest',
- ecmaFeatures: { jsx: true },
- sourceType: 'module',
- },
- },
- settings: { react: { version: '18.3' } },
- plugins: {
- react,
- 'react-hooks': reactHooks,
- 'react-refresh': reactRefresh,
- },
- rules: {
- ...js.configs.recommended.rules,
- ...react.configs.recommended.rules,
- ...react.configs['jsx-runtime'].rules,
- ...reactHooks.configs.recommended.rules,
- 'react/jsx-no-target-blank': 'off',
- 'react-refresh/only-export-components': [
- 'warn',
- { allowConstantExport: true },
- ],
- },
- },
-]
diff --git a/index.html b/index.html
deleted file mode 100644
index ea57811..0000000
--- a/index.html
+++ /dev/null
@@ -1,93 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- JustAnime | Free Anime Streaming Platform
-
-
-
-
-
-
-
-
-
-
-
diff --git a/jsconfig.json b/jsconfig.json
deleted file mode 100644
index 0d81cf7..0000000
--- a/jsconfig.json
+++ /dev/null
@@ -1,9 +0,0 @@
-{
- "compilerOptions": {
- "baseUrl": ".",
- "paths": {
- "@/*": ["./*"]
- }
- }
- }
-
\ No newline at end of file
diff --git a/lib/utils.js b/lib/utils.js
deleted file mode 100644
index b20bf01..0000000
--- a/lib/utils.js
+++ /dev/null
@@ -1,6 +0,0 @@
-import { clsx } from "clsx";
-import { twMerge } from "tailwind-merge"
-
-export function cn(...inputs) {
- return twMerge(clsx(inputs));
-}
diff --git a/package-lock.json b/package-lock.json
deleted file mode 100644
index 83e3160..0000000
--- a/package-lock.json
+++ /dev/null
@@ -1,6506 +0,0 @@
-{
- "name": "justanime",
- "version": "0.0.0",
- "lockfileVersion": 3,
- "requires": true,
- "packages": {
- "": {
- "name": "justanime",
- "version": "0.0.0",
- "dependencies": {
- "@fortawesome/fontawesome-svg-core": "^6.6.0",
- "@fortawesome/free-brands-svg-icons": "^6.7.2",
- "@fortawesome/free-solid-svg-icons": "^6.6.0",
- "@fortawesome/react-fontawesome": "^0.2.2",
- "@radix-ui/react-icons": "^1.3.0",
- "artplayer": "^5.2.3",
- "artplayer-plugin-chapter": "^1.0.0",
- "artplayer-plugin-hls-control": "^1.0.1",
- "axios": "^1.7.7",
- "cheerio": "^1.0.0",
- "class-variance-authority": "^0.7.0",
- "clsx": "^2.1.1",
- "hls.js": "^1.5.17",
- "lucide-react": "^0.447.0",
- "react": "^18.3.1",
- "react-content-loader": "^7.0.2",
- "react-dom": "^18.3.1",
- "react-icons": "^5.3.0",
- "react-lazy-load": "^4.0.1",
- "react-router-dom": "^6.26.2",
- "styled-components": "^6.1.13",
- "swiper": "^11.2.5",
- "tailwind-merge": "^2.5.3",
- "tailwindcss-animate": "^1.0.7"
- },
- "devDependencies": {
- "@eslint/js": "^9.9.0",
- "@types/react": "^18.3.3",
- "@types/react-dom": "^18.3.0",
- "@vitejs/plugin-react": "^4.3.1",
- "autoprefixer": "^10.4.20",
- "eslint": "^9.9.0",
- "eslint-plugin-react": "^7.35.0",
- "eslint-plugin-react-hooks": "^5.1.0-rc.0",
- "eslint-plugin-react-refresh": "^0.4.9",
- "globals": "^15.9.0",
- "postcss": "^8.4.47",
- "tailwindcss": "^3.4.13",
- "vite": "^5.4.1"
- }
- },
- "node_modules/@alloc/quick-lru": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/@alloc/quick-lru/-/quick-lru-5.2.0.tgz",
- "integrity": "sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==",
- "license": "MIT",
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/@ampproject/remapping": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz",
- "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==",
- "dev": true,
- "license": "Apache-2.0",
- "dependencies": {
- "@jridgewell/gen-mapping": "^0.3.5",
- "@jridgewell/trace-mapping": "^0.3.24"
- },
- "engines": {
- "node": ">=6.0.0"
- }
- },
- "node_modules/@babel/code-frame": {
- "version": "7.27.1",
- "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.27.1.tgz",
- "integrity": "sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-validator-identifier": "^7.27.1",
- "js-tokens": "^4.0.0",
- "picocolors": "^1.1.1"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/compat-data": {
- "version": "7.28.0",
- "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.28.0.tgz",
- "integrity": "sha512-60X7qkglvrap8mn1lh2ebxXdZYtUcpd7gsmy9kLaBJ4i/WdY8PqTSdxyA8qraikqKQK5C1KRBKXqznrVapyNaw==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/core": {
- "version": "7.28.0",
- "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.28.0.tgz",
- "integrity": "sha512-UlLAnTPrFdNGoFtbSXwcGFQBtQZJCNjaN6hQNP3UPvuNXT1i82N26KL3dZeIpNalWywr9IuQuncaAfUaS1g6sQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@ampproject/remapping": "^2.2.0",
- "@babel/code-frame": "^7.27.1",
- "@babel/generator": "^7.28.0",
- "@babel/helper-compilation-targets": "^7.27.2",
- "@babel/helper-module-transforms": "^7.27.3",
- "@babel/helpers": "^7.27.6",
- "@babel/parser": "^7.28.0",
- "@babel/template": "^7.27.2",
- "@babel/traverse": "^7.28.0",
- "@babel/types": "^7.28.0",
- "convert-source-map": "^2.0.0",
- "debug": "^4.1.0",
- "gensync": "^1.0.0-beta.2",
- "json5": "^2.2.3",
- "semver": "^6.3.1"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/babel"
- }
- },
- "node_modules/@babel/generator": {
- "version": "7.28.0",
- "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.28.0.tgz",
- "integrity": "sha512-lJjzvrbEeWrhB4P3QBsH7tey117PjLZnDbLiQEKjQ/fNJTjuq4HSqgFA+UNSwZT8D7dxxbnuSBMsa1lrWzKlQg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/parser": "^7.28.0",
- "@babel/types": "^7.28.0",
- "@jridgewell/gen-mapping": "^0.3.12",
- "@jridgewell/trace-mapping": "^0.3.28",
- "jsesc": "^3.0.2"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-compilation-targets": {
- "version": "7.27.2",
- "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.27.2.tgz",
- "integrity": "sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/compat-data": "^7.27.2",
- "@babel/helper-validator-option": "^7.27.1",
- "browserslist": "^4.24.0",
- "lru-cache": "^5.1.1",
- "semver": "^6.3.1"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-globals": {
- "version": "7.28.0",
- "resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.28.0.tgz",
- "integrity": "sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-module-imports": {
- "version": "7.27.1",
- "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.27.1.tgz",
- "integrity": "sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/traverse": "^7.27.1",
- "@babel/types": "^7.27.1"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-module-transforms": {
- "version": "7.27.3",
- "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.27.3.tgz",
- "integrity": "sha512-dSOvYwvyLsWBeIRyOeHXp5vPj5l1I011r52FM1+r1jCERv+aFXYk4whgQccYEGYxK2H3ZAIA8nuPkQ0HaUo3qg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-module-imports": "^7.27.1",
- "@babel/helper-validator-identifier": "^7.27.1",
- "@babel/traverse": "^7.27.3"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0"
- }
- },
- "node_modules/@babel/helper-plugin-utils": {
- "version": "7.27.1",
- "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.27.1.tgz",
- "integrity": "sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-string-parser": {
- "version": "7.27.1",
- "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz",
- "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-validator-identifier": {
- "version": "7.27.1",
- "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.27.1.tgz",
- "integrity": "sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-validator-option": {
- "version": "7.27.1",
- "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz",
- "integrity": "sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helpers": {
- "version": "7.28.2",
- "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.28.2.tgz",
- "integrity": "sha512-/V9771t+EgXz62aCcyofnQhGM8DQACbRhvzKFsXKC9QM+5MadF8ZmIm0crDMaz3+o0h0zXfJnd4EhbYbxsrcFw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/template": "^7.27.2",
- "@babel/types": "^7.28.2"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/parser": {
- "version": "7.28.0",
- "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.28.0.tgz",
- "integrity": "sha512-jVZGvOxOuNSsuQuLRTh13nU0AogFlw32w/MT+LV6D3sP5WdbW61E77RnkbaO2dUvmPAYrBDJXGn5gGS6tH4j8g==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/types": "^7.28.0"
- },
- "bin": {
- "parser": "bin/babel-parser.js"
- },
- "engines": {
- "node": ">=6.0.0"
- }
- },
- "node_modules/@babel/plugin-transform-react-jsx-self": {
- "version": "7.27.1",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.27.1.tgz",
- "integrity": "sha512-6UzkCs+ejGdZ5mFFC/OCUrv028ab2fp1znZmCZjAOBKiBK2jXD1O+BPSfX8X2qjJ75fZBMSnQn3Rq2mrBJK2mw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.27.1"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-react-jsx-source": {
- "version": "7.27.1",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.27.1.tgz",
- "integrity": "sha512-zbwoTsBruTeKB9hSq73ha66iFeJHuaFkUbwvqElnygoNbj/jHRsSeokowZFN3CZ64IvEqcmmkVe89OPXc7ldAw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.27.1"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/template": {
- "version": "7.27.2",
- "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.27.2.tgz",
- "integrity": "sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/code-frame": "^7.27.1",
- "@babel/parser": "^7.27.2",
- "@babel/types": "^7.27.1"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/traverse": {
- "version": "7.28.0",
- "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.28.0.tgz",
- "integrity": "sha512-mGe7UK5wWyh0bKRfupsUchrQGqvDbZDbKJw+kcRGSmdHVYrv+ltd0pnpDTVpiTqnaBru9iEvA8pz8W46v0Amwg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/code-frame": "^7.27.1",
- "@babel/generator": "^7.28.0",
- "@babel/helper-globals": "^7.28.0",
- "@babel/parser": "^7.28.0",
- "@babel/template": "^7.27.2",
- "@babel/types": "^7.28.0",
- "debug": "^4.3.1"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/types": {
- "version": "7.28.2",
- "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.28.2.tgz",
- "integrity": "sha512-ruv7Ae4J5dUYULmeXw1gmb7rYRz57OWCPM57pHojnLq/3Z1CK2lNSLTCVjxVk1F/TZHwOZZrOWi0ur95BbLxNQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-string-parser": "^7.27.1",
- "@babel/helper-validator-identifier": "^7.27.1"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@emotion/is-prop-valid": {
- "version": "1.2.2",
- "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-1.2.2.tgz",
- "integrity": "sha512-uNsoYd37AFmaCdXlg6EYD1KaPOaRWRByMCYzbKUX4+hhMfrxdVSelShywL4JVaAeM/eHUOSprYBQls+/neX3pw==",
- "license": "MIT",
- "dependencies": {
- "@emotion/memoize": "^0.8.1"
- }
- },
- "node_modules/@emotion/memoize": {
- "version": "0.8.1",
- "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.8.1.tgz",
- "integrity": "sha512-W2P2c/VRW1/1tLox0mVUalvnWXxavmv/Oum2aPsRcoDJuob75FC3Y8FbpfLwUegRcxINtGUMPq0tFCvYNTBXNA==",
- "license": "MIT"
- },
- "node_modules/@emotion/unitless": {
- "version": "0.8.1",
- "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.8.1.tgz",
- "integrity": "sha512-KOEGMu6dmJZtpadb476IsZBclKvILjopjUii3V+7MnXIQCYh8W3NgNcgwo21n9LXZX6EDIKvqfjYxXebDwxKmQ==",
- "license": "MIT"
- },
- "node_modules/@esbuild/aix-ppc64": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz",
- "integrity": "sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==",
- "cpu": [
- "ppc64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "aix"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/android-arm": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.21.5.tgz",
- "integrity": "sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==",
- "cpu": [
- "arm"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "android"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/android-arm64": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz",
- "integrity": "sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "android"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/android-x64": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.21.5.tgz",
- "integrity": "sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "android"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/darwin-arm64": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz",
- "integrity": "sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "darwin"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/darwin-x64": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz",
- "integrity": "sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "darwin"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/freebsd-arm64": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz",
- "integrity": "sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "freebsd"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/freebsd-x64": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz",
- "integrity": "sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "freebsd"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/linux-arm": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz",
- "integrity": "sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==",
- "cpu": [
- "arm"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/linux-arm64": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz",
- "integrity": "sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/linux-ia32": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz",
- "integrity": "sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==",
- "cpu": [
- "ia32"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/linux-loong64": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz",
- "integrity": "sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==",
- "cpu": [
- "loong64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/linux-mips64el": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz",
- "integrity": "sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==",
- "cpu": [
- "mips64el"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/linux-ppc64": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz",
- "integrity": "sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==",
- "cpu": [
- "ppc64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/linux-riscv64": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz",
- "integrity": "sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==",
- "cpu": [
- "riscv64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/linux-s390x": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz",
- "integrity": "sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==",
- "cpu": [
- "s390x"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/linux-x64": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz",
- "integrity": "sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/netbsd-x64": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz",
- "integrity": "sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "netbsd"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/openbsd-x64": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz",
- "integrity": "sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "openbsd"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/sunos-x64": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz",
- "integrity": "sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "sunos"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/win32-arm64": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz",
- "integrity": "sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "win32"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/win32-ia32": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz",
- "integrity": "sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==",
- "cpu": [
- "ia32"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "win32"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/win32-x64": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz",
- "integrity": "sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "win32"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@eslint-community/eslint-utils": {
- "version": "4.7.0",
- "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.7.0.tgz",
- "integrity": "sha512-dyybb3AcajC7uha6CvhdVRJqaKyn7w2YKqKyAN37NKYgZT36w+iRb0Dymmc5qEJ549c/S31cMMSFd75bteCpCw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "eslint-visitor-keys": "^3.4.3"
- },
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "funding": {
- "url": "https://opencollective.com/eslint"
- },
- "peerDependencies": {
- "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0"
- }
- },
- "node_modules/@eslint-community/eslint-utils/node_modules/eslint-visitor-keys": {
- "version": "3.4.3",
- "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz",
- "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==",
- "dev": true,
- "license": "Apache-2.0",
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "funding": {
- "url": "https://opencollective.com/eslint"
- }
- },
- "node_modules/@eslint-community/regexpp": {
- "version": "4.12.1",
- "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.1.tgz",
- "integrity": "sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": "^12.0.0 || ^14.0.0 || >=16.0.0"
- }
- },
- "node_modules/@eslint/config-array": {
- "version": "0.21.0",
- "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.21.0.tgz",
- "integrity": "sha512-ENIdc4iLu0d93HeYirvKmrzshzofPw6VkZRKQGe9Nv46ZnWUzcF1xV01dcvEg/1wXUR61OmmlSfyeyO7EvjLxQ==",
- "dev": true,
- "license": "Apache-2.0",
- "dependencies": {
- "@eslint/object-schema": "^2.1.6",
- "debug": "^4.3.1",
- "minimatch": "^3.1.2"
- },
- "engines": {
- "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
- }
- },
- "node_modules/@eslint/config-helpers": {
- "version": "0.3.0",
- "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.3.0.tgz",
- "integrity": "sha512-ViuymvFmcJi04qdZeDc2whTHryouGcDlaxPqarTD0ZE10ISpxGUVZGZDx4w01upyIynL3iu6IXH2bS1NhclQMw==",
- "dev": true,
- "license": "Apache-2.0",
- "engines": {
- "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
- }
- },
- "node_modules/@eslint/core": {
- "version": "0.15.1",
- "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.15.1.tgz",
- "integrity": "sha512-bkOp+iumZCCbt1K1CmWf0R9pM5yKpDv+ZXtvSyQpudrI9kuFLp+bM2WOPXImuD/ceQuaa8f5pj93Y7zyECIGNA==",
- "dev": true,
- "license": "Apache-2.0",
- "dependencies": {
- "@types/json-schema": "^7.0.15"
- },
- "engines": {
- "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
- }
- },
- "node_modules/@eslint/eslintrc": {
- "version": "3.3.1",
- "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.1.tgz",
- "integrity": "sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "ajv": "^6.12.4",
- "debug": "^4.3.2",
- "espree": "^10.0.1",
- "globals": "^14.0.0",
- "ignore": "^5.2.0",
- "import-fresh": "^3.2.1",
- "js-yaml": "^4.1.0",
- "minimatch": "^3.1.2",
- "strip-json-comments": "^3.1.1"
- },
- "engines": {
- "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
- },
- "funding": {
- "url": "https://opencollective.com/eslint"
- }
- },
- "node_modules/@eslint/eslintrc/node_modules/globals": {
- "version": "14.0.0",
- "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz",
- "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=18"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/@eslint/js": {
- "version": "9.31.0",
- "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.31.0.tgz",
- "integrity": "sha512-LOm5OVt7D4qiKCqoiPbA7LWmI+tbw1VbTUowBcUMgQSuM6poJufkFkYDcQpo5KfgD39TnNySV26QjOh7VFpSyw==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
- },
- "funding": {
- "url": "https://eslint.org/donate"
- }
- },
- "node_modules/@eslint/object-schema": {
- "version": "2.1.6",
- "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.6.tgz",
- "integrity": "sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA==",
- "dev": true,
- "license": "Apache-2.0",
- "engines": {
- "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
- }
- },
- "node_modules/@eslint/plugin-kit": {
- "version": "0.3.4",
- "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.3.4.tgz",
- "integrity": "sha512-Ul5l+lHEcw3L5+k8POx6r74mxEYKG5kOb6Xpy2gCRW6zweT6TEhAf8vhxGgjhqrd/VO/Dirhsb+1hNpD1ue9hw==",
- "dev": true,
- "license": "Apache-2.0",
- "dependencies": {
- "@eslint/core": "^0.15.1",
- "levn": "^0.4.1"
- },
- "engines": {
- "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
- }
- },
- "node_modules/@fortawesome/fontawesome-common-types": {
- "version": "6.7.2",
- "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-common-types/-/fontawesome-common-types-6.7.2.tgz",
- "integrity": "sha512-Zs+YeHUC5fkt7Mg1l6XTniei3k4bwG/yo3iFUtZWd/pMx9g3fdvkSK9E0FOC+++phXOka78uJcYb8JaFkW52Xg==",
- "license": "MIT",
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/@fortawesome/fontawesome-svg-core": {
- "version": "6.7.2",
- "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-svg-core/-/fontawesome-svg-core-6.7.2.tgz",
- "integrity": "sha512-yxtOBWDrdi5DD5o1pmVdq3WMCvnobT0LU6R8RyyVXPvFRd2o79/0NCuQoCjNTeZz9EzA9xS3JxNWfv54RIHFEA==",
- "license": "MIT",
- "dependencies": {
- "@fortawesome/fontawesome-common-types": "6.7.2"
- },
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/@fortawesome/free-brands-svg-icons": {
- "version": "6.7.2",
- "resolved": "https://registry.npmjs.org/@fortawesome/free-brands-svg-icons/-/free-brands-svg-icons-6.7.2.tgz",
- "integrity": "sha512-zu0evbcRTgjKfrr77/2XX+bU+kuGfjm0LbajJHVIgBWNIDzrhpRxiCPNT8DW5AdmSsq7Mcf9D1bH0aSeSUSM+Q==",
- "license": "(CC-BY-4.0 AND MIT)",
- "dependencies": {
- "@fortawesome/fontawesome-common-types": "6.7.2"
- },
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/@fortawesome/free-solid-svg-icons": {
- "version": "6.7.2",
- "resolved": "https://registry.npmjs.org/@fortawesome/free-solid-svg-icons/-/free-solid-svg-icons-6.7.2.tgz",
- "integrity": "sha512-GsBrnOzU8uj0LECDfD5zomZJIjrPhIlWU82AHwa2s40FKH+kcxQaBvBo3Z4TxyZHIyX8XTDxsyA33/Vx9eFuQA==",
- "license": "(CC-BY-4.0 AND MIT)",
- "dependencies": {
- "@fortawesome/fontawesome-common-types": "6.7.2"
- },
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/@fortawesome/react-fontawesome": {
- "version": "0.2.3",
- "resolved": "https://registry.npmjs.org/@fortawesome/react-fontawesome/-/react-fontawesome-0.2.3.tgz",
- "integrity": "sha512-HlJco8RDY8NrzFVjy23b/7mNS4g9NegcrBG3n7jinwpc2x/AmSVk53IhWniLYM4szYLxRAFTAGwGn0EIlclDeQ==",
- "license": "MIT",
- "dependencies": {
- "prop-types": "^15.8.1"
- },
- "peerDependencies": {
- "@fortawesome/fontawesome-svg-core": "~1 || ~6 || ~7",
- "react": "^16.3 || ^17.0.0 || ^18.0.0 || ^19.0.0"
- }
- },
- "node_modules/@humanfs/core": {
- "version": "0.19.1",
- "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz",
- "integrity": "sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==",
- "dev": true,
- "license": "Apache-2.0",
- "engines": {
- "node": ">=18.18.0"
- }
- },
- "node_modules/@humanfs/node": {
- "version": "0.16.6",
- "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.6.tgz",
- "integrity": "sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==",
- "dev": true,
- "license": "Apache-2.0",
- "dependencies": {
- "@humanfs/core": "^0.19.1",
- "@humanwhocodes/retry": "^0.3.0"
- },
- "engines": {
- "node": ">=18.18.0"
- }
- },
- "node_modules/@humanfs/node/node_modules/@humanwhocodes/retry": {
- "version": "0.3.1",
- "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.3.1.tgz",
- "integrity": "sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==",
- "dev": true,
- "license": "Apache-2.0",
- "engines": {
- "node": ">=18.18"
- },
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/nzakas"
- }
- },
- "node_modules/@humanwhocodes/module-importer": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz",
- "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==",
- "dev": true,
- "license": "Apache-2.0",
- "engines": {
- "node": ">=12.22"
- },
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/nzakas"
- }
- },
- "node_modules/@humanwhocodes/retry": {
- "version": "0.4.3",
- "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.3.tgz",
- "integrity": "sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==",
- "dev": true,
- "license": "Apache-2.0",
- "engines": {
- "node": ">=18.18"
- },
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/nzakas"
- }
- },
- "node_modules/@isaacs/cliui": {
- "version": "8.0.2",
- "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz",
- "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==",
- "license": "ISC",
- "dependencies": {
- "string-width": "^5.1.2",
- "string-width-cjs": "npm:string-width@^4.2.0",
- "strip-ansi": "^7.0.1",
- "strip-ansi-cjs": "npm:strip-ansi@^6.0.1",
- "wrap-ansi": "^8.1.0",
- "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0"
- },
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@jridgewell/gen-mapping": {
- "version": "0.3.12",
- "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.12.tgz",
- "integrity": "sha512-OuLGC46TjB5BbN1dH8JULVVZY4WTdkF7tV9Ys6wLL1rubZnCMstOhNHueU5bLCrnRuDhKPDM4g6sw4Bel5Gzqg==",
- "license": "MIT",
- "dependencies": {
- "@jridgewell/sourcemap-codec": "^1.5.0",
- "@jridgewell/trace-mapping": "^0.3.24"
- }
- },
- "node_modules/@jridgewell/resolve-uri": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz",
- "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==",
- "license": "MIT",
- "engines": {
- "node": ">=6.0.0"
- }
- },
- "node_modules/@jridgewell/sourcemap-codec": {
- "version": "1.5.4",
- "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.4.tgz",
- "integrity": "sha512-VT2+G1VQs/9oz078bLrYbecdZKs912zQlkelYpuf+SXF+QvZDYJlbx/LSx+meSAwdDFnF8FVXW92AVjjkVmgFw==",
- "license": "MIT"
- },
- "node_modules/@jridgewell/trace-mapping": {
- "version": "0.3.29",
- "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.29.tgz",
- "integrity": "sha512-uw6guiW/gcAGPDhLmd77/6lW8QLeiV5RUTsAX46Db6oLhGaVj4lhnPwb184s1bkc8kdVg/+h988dro8GRDpmYQ==",
- "license": "MIT",
- "dependencies": {
- "@jridgewell/resolve-uri": "^3.1.0",
- "@jridgewell/sourcemap-codec": "^1.4.14"
- }
- },
- "node_modules/@nodelib/fs.scandir": {
- "version": "2.1.5",
- "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
- "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==",
- "license": "MIT",
- "dependencies": {
- "@nodelib/fs.stat": "2.0.5",
- "run-parallel": "^1.1.9"
- },
- "engines": {
- "node": ">= 8"
- }
- },
- "node_modules/@nodelib/fs.stat": {
- "version": "2.0.5",
- "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz",
- "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==",
- "license": "MIT",
- "engines": {
- "node": ">= 8"
- }
- },
- "node_modules/@nodelib/fs.walk": {
- "version": "1.2.8",
- "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz",
- "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==",
- "license": "MIT",
- "dependencies": {
- "@nodelib/fs.scandir": "2.1.5",
- "fastq": "^1.6.0"
- },
- "engines": {
- "node": ">= 8"
- }
- },
- "node_modules/@pkgjs/parseargs": {
- "version": "0.11.0",
- "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz",
- "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==",
- "license": "MIT",
- "optional": true,
- "engines": {
- "node": ">=14"
- }
- },
- "node_modules/@radix-ui/react-icons": {
- "version": "1.3.2",
- "resolved": "https://registry.npmjs.org/@radix-ui/react-icons/-/react-icons-1.3.2.tgz",
- "integrity": "sha512-fyQIhGDhzfc9pK2kH6Pl9c4BDJGfMkPqkyIgYDthyNYoNg3wVhoJMMh19WS4Up/1KMPFVpNsT2q3WmXn2N1m6g==",
- "license": "MIT",
- "peerDependencies": {
- "react": "^16.x || ^17.x || ^18.x || ^19.0.0 || ^19.0.0-rc"
- }
- },
- "node_modules/@remix-run/router": {
- "version": "1.23.0",
- "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.23.0.tgz",
- "integrity": "sha512-O3rHJzAQKamUz1fvE0Qaw0xSFqsA/yafi2iqeE0pvdFtCO1viYx8QL6f3Ln/aCCTLxs68SLf0KPM9eSeM8yBnA==",
- "license": "MIT",
- "engines": {
- "node": ">=14.0.0"
- }
- },
- "node_modules/@rolldown/pluginutils": {
- "version": "1.0.0-beta.27",
- "resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.0-beta.27.tgz",
- "integrity": "sha512-+d0F4MKMCbeVUJwG96uQ4SgAznZNSq93I3V+9NHA4OpvqG8mRCpGdKmK8l/dl02h2CCDHwW2FqilnTyDcAnqjA==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/@rollup/rollup-android-arm-eabi": {
- "version": "4.45.1",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.45.1.tgz",
- "integrity": "sha512-NEySIFvMY0ZQO+utJkgoMiCAjMrGvnbDLHvcmlA33UXJpYBCvlBEbMMtV837uCkS+plG2umfhn0T5mMAxGrlRA==",
- "cpu": [
- "arm"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "android"
- ]
- },
- "node_modules/@rollup/rollup-android-arm64": {
- "version": "4.45.1",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.45.1.tgz",
- "integrity": "sha512-ujQ+sMXJkg4LRJaYreaVx7Z/VMgBBd89wGS4qMrdtfUFZ+TSY5Rs9asgjitLwzeIbhwdEhyj29zhst3L1lKsRQ==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "android"
- ]
- },
- "node_modules/@rollup/rollup-darwin-arm64": {
- "version": "4.45.1",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.45.1.tgz",
- "integrity": "sha512-FSncqHvqTm3lC6Y13xncsdOYfxGSLnP+73k815EfNmpewPs+EyM49haPS105Rh4aF5mJKywk9X0ogzLXZzN9lA==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "darwin"
- ]
- },
- "node_modules/@rollup/rollup-darwin-x64": {
- "version": "4.45.1",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.45.1.tgz",
- "integrity": "sha512-2/vVn/husP5XI7Fsf/RlhDaQJ7x9zjvC81anIVbr4b/f0xtSmXQTFcGIQ/B1cXIYM6h2nAhJkdMHTnD7OtQ9Og==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "darwin"
- ]
- },
- "node_modules/@rollup/rollup-freebsd-arm64": {
- "version": "4.45.1",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.45.1.tgz",
- "integrity": "sha512-4g1kaDxQItZsrkVTdYQ0bxu4ZIQ32cotoQbmsAnW1jAE4XCMbcBPDirX5fyUzdhVCKgPcrwWuucI8yrVRBw2+g==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "freebsd"
- ]
- },
- "node_modules/@rollup/rollup-freebsd-x64": {
- "version": "4.45.1",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.45.1.tgz",
- "integrity": "sha512-L/6JsfiL74i3uK1Ti2ZFSNsp5NMiM4/kbbGEcOCps99aZx3g8SJMO1/9Y0n/qKlWZfn6sScf98lEOUe2mBvW9A==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "freebsd"
- ]
- },
- "node_modules/@rollup/rollup-linux-arm-gnueabihf": {
- "version": "4.45.1",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.45.1.tgz",
- "integrity": "sha512-RkdOTu2jK7brlu+ZwjMIZfdV2sSYHK2qR08FUWcIoqJC2eywHbXr0L8T/pONFwkGukQqERDheaGTeedG+rra6Q==",
- "cpu": [
- "arm"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ]
- },
- "node_modules/@rollup/rollup-linux-arm-musleabihf": {
- "version": "4.45.1",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.45.1.tgz",
- "integrity": "sha512-3kJ8pgfBt6CIIr1o+HQA7OZ9mp/zDk3ctekGl9qn/pRBgrRgfwiffaUmqioUGN9hv0OHv2gxmvdKOkARCtRb8Q==",
- "cpu": [
- "arm"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ]
- },
- "node_modules/@rollup/rollup-linux-arm64-gnu": {
- "version": "4.45.1",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.45.1.tgz",
- "integrity": "sha512-k3dOKCfIVixWjG7OXTCOmDfJj3vbdhN0QYEqB+OuGArOChek22hn7Uy5A/gTDNAcCy5v2YcXRJ/Qcnm4/ma1xw==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ]
- },
- "node_modules/@rollup/rollup-linux-arm64-musl": {
- "version": "4.45.1",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.45.1.tgz",
- "integrity": "sha512-PmI1vxQetnM58ZmDFl9/Uk2lpBBby6B6rF4muJc65uZbxCs0EA7hhKCk2PKlmZKuyVSHAyIw3+/SiuMLxKxWog==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ]
- },
- "node_modules/@rollup/rollup-linux-loongarch64-gnu": {
- "version": "4.45.1",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.45.1.tgz",
- "integrity": "sha512-9UmI0VzGmNJ28ibHW2GpE2nF0PBQqsyiS4kcJ5vK+wuwGnV5RlqdczVocDSUfGX/Na7/XINRVoUgJyFIgipoRg==",
- "cpu": [
- "loong64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ]
- },
- "node_modules/@rollup/rollup-linux-powerpc64le-gnu": {
- "version": "4.45.1",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.45.1.tgz",
- "integrity": "sha512-7nR2KY8oEOUTD3pBAxIBBbZr0U7U+R9HDTPNy+5nVVHDXI4ikYniH1oxQz9VoB5PbBU1CZuDGHkLJkd3zLMWsg==",
- "cpu": [
- "ppc64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ]
- },
- "node_modules/@rollup/rollup-linux-riscv64-gnu": {
- "version": "4.45.1",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.45.1.tgz",
- "integrity": "sha512-nlcl3jgUultKROfZijKjRQLUu9Ma0PeNv/VFHkZiKbXTBQXhpytS8CIj5/NfBeECZtY2FJQubm6ltIxm/ftxpw==",
- "cpu": [
- "riscv64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ]
- },
- "node_modules/@rollup/rollup-linux-riscv64-musl": {
- "version": "4.45.1",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.45.1.tgz",
- "integrity": "sha512-HJV65KLS51rW0VY6rvZkiieiBnurSzpzore1bMKAhunQiECPuxsROvyeaot/tcK3A3aGnI+qTHqisrpSgQrpgA==",
- "cpu": [
- "riscv64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ]
- },
- "node_modules/@rollup/rollup-linux-s390x-gnu": {
- "version": "4.45.1",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.45.1.tgz",
- "integrity": "sha512-NITBOCv3Qqc6hhwFt7jLV78VEO/il4YcBzoMGGNxznLgRQf43VQDae0aAzKiBeEPIxnDrACiMgbqjuihx08OOw==",
- "cpu": [
- "s390x"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ]
- },
- "node_modules/@rollup/rollup-linux-x64-gnu": {
- "version": "4.45.1",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.45.1.tgz",
- "integrity": "sha512-+E/lYl6qu1zqgPEnTrs4WysQtvc/Sh4fC2nByfFExqgYrqkKWp1tWIbe+ELhixnenSpBbLXNi6vbEEJ8M7fiHw==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ]
- },
- "node_modules/@rollup/rollup-linux-x64-musl": {
- "version": "4.45.1",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.45.1.tgz",
- "integrity": "sha512-a6WIAp89p3kpNoYStITT9RbTbTnqarU7D8N8F2CV+4Cl9fwCOZraLVuVFvlpsW0SbIiYtEnhCZBPLoNdRkjQFw==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ]
- },
- "node_modules/@rollup/rollup-win32-arm64-msvc": {
- "version": "4.45.1",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.45.1.tgz",
- "integrity": "sha512-T5Bi/NS3fQiJeYdGvRpTAP5P02kqSOpqiopwhj0uaXB6nzs5JVi2XMJb18JUSKhCOX8+UE1UKQufyD6Or48dJg==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "win32"
- ]
- },
- "node_modules/@rollup/rollup-win32-ia32-msvc": {
- "version": "4.45.1",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.45.1.tgz",
- "integrity": "sha512-lxV2Pako3ujjuUe9jiU3/s7KSrDfH6IgTSQOnDWr9aJ92YsFd7EurmClK0ly/t8dzMkDtd04g60WX6yl0sGfdw==",
- "cpu": [
- "ia32"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "win32"
- ]
- },
- "node_modules/@rollup/rollup-win32-x64-msvc": {
- "version": "4.45.1",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.45.1.tgz",
- "integrity": "sha512-M/fKi4sasCdM8i0aWJjCSFm2qEnYRR8AMLG2kxp6wD13+tMGA4Z1tVAuHkNRjud5SW2EM3naLuK35w9twvf6aA==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "win32"
- ]
- },
- "node_modules/@types/babel__core": {
- "version": "7.20.5",
- "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz",
- "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/parser": "^7.20.7",
- "@babel/types": "^7.20.7",
- "@types/babel__generator": "*",
- "@types/babel__template": "*",
- "@types/babel__traverse": "*"
- }
- },
- "node_modules/@types/babel__generator": {
- "version": "7.27.0",
- "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.27.0.tgz",
- "integrity": "sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/types": "^7.0.0"
- }
- },
- "node_modules/@types/babel__template": {
- "version": "7.4.4",
- "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz",
- "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/parser": "^7.1.0",
- "@babel/types": "^7.0.0"
- }
- },
- "node_modules/@types/babel__traverse": {
- "version": "7.20.7",
- "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.7.tgz",
- "integrity": "sha512-dkO5fhS7+/oos4ciWxyEyjWe48zmG6wbCheo/G2ZnHx4fs3EU6YC6UM8rk56gAjNJ9P3MTH2jo5jb92/K6wbng==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/types": "^7.20.7"
- }
- },
- "node_modules/@types/estree": {
- "version": "1.0.8",
- "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz",
- "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/@types/json-schema": {
- "version": "7.0.15",
- "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz",
- "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/@types/prop-types": {
- "version": "15.7.15",
- "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.15.tgz",
- "integrity": "sha512-F6bEyamV9jKGAFBEmlQnesRPGOQqS2+Uwi0Em15xenOxHaf2hv6L8YCVn3rPdPJOiJfPiCnLIRyvwVaqMY3MIw==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/@types/react": {
- "version": "18.3.23",
- "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.23.tgz",
- "integrity": "sha512-/LDXMQh55EzZQ0uVAZmKKhfENivEvWz6E+EYzh+/MCjMhNsotd+ZHhBGIjFDTi6+fz0OhQQQLbTgdQIxxCsC0w==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@types/prop-types": "*",
- "csstype": "^3.0.2"
- }
- },
- "node_modules/@types/react-dom": {
- "version": "18.3.7",
- "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.3.7.tgz",
- "integrity": "sha512-MEe3UeoENYVFXzoXEWsvcpg6ZvlrFNlOQ7EOsvhI3CfAXwzPfO8Qwuxd40nepsYKqyyVQnTdEfv68q91yLcKrQ==",
- "dev": true,
- "license": "MIT",
- "peerDependencies": {
- "@types/react": "^18.0.0"
- }
- },
- "node_modules/@types/stylis": {
- "version": "4.2.5",
- "resolved": "https://registry.npmjs.org/@types/stylis/-/stylis-4.2.5.tgz",
- "integrity": "sha512-1Xve+NMN7FWjY14vLoY5tL3BVEQ/n42YLwaqJIPYhotZ9uBHt87VceMwWQpzmdEt2TNXIorIFG+YeCUUW7RInw==",
- "license": "MIT"
- },
- "node_modules/@vitejs/plugin-react": {
- "version": "4.7.0",
- "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-4.7.0.tgz",
- "integrity": "sha512-gUu9hwfWvvEDBBmgtAowQCojwZmJ5mcLn3aufeCsitijs3+f2NsrPtlAWIR6OPiqljl96GVCUbLe0HyqIpVaoA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/core": "^7.28.0",
- "@babel/plugin-transform-react-jsx-self": "^7.27.1",
- "@babel/plugin-transform-react-jsx-source": "^7.27.1",
- "@rolldown/pluginutils": "1.0.0-beta.27",
- "@types/babel__core": "^7.20.5",
- "react-refresh": "^0.17.0"
- },
- "engines": {
- "node": "^14.18.0 || >=16.0.0"
- },
- "peerDependencies": {
- "vite": "^4.2.0 || ^5.0.0 || ^6.0.0 || ^7.0.0"
- }
- },
- "node_modules/acorn": {
- "version": "8.15.0",
- "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz",
- "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==",
- "dev": true,
- "license": "MIT",
- "bin": {
- "acorn": "bin/acorn"
- },
- "engines": {
- "node": ">=0.4.0"
- }
- },
- "node_modules/acorn-jsx": {
- "version": "5.3.2",
- "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz",
- "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==",
- "dev": true,
- "license": "MIT",
- "peerDependencies": {
- "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0"
- }
- },
- "node_modules/ajv": {
- "version": "6.12.6",
- "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
- "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "fast-deep-equal": "^3.1.1",
- "fast-json-stable-stringify": "^2.0.0",
- "json-schema-traverse": "^0.4.1",
- "uri-js": "^4.2.2"
- },
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/epoberezkin"
- }
- },
- "node_modules/ansi-regex": {
- "version": "6.1.0",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz",
- "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==",
- "license": "MIT",
- "engines": {
- "node": ">=12"
- },
- "funding": {
- "url": "https://github.com/chalk/ansi-regex?sponsor=1"
- }
- },
- "node_modules/ansi-styles": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
- "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
- "license": "MIT",
- "dependencies": {
- "color-convert": "^2.0.1"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
- }
- },
- "node_modules/any-promise": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz",
- "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==",
- "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==",
- "license": "ISC",
- "dependencies": {
- "normalize-path": "^3.0.0",
- "picomatch": "^2.0.4"
- },
- "engines": {
- "node": ">= 8"
- }
- },
- "node_modules/arg": {
- "version": "5.0.2",
- "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz",
- "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==",
- "license": "MIT"
- },
- "node_modules/argparse": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
- "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==",
- "dev": true,
- "license": "Python-2.0"
- },
- "node_modules/array-buffer-byte-length": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.2.tgz",
- "integrity": "sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "call-bound": "^1.0.3",
- "is-array-buffer": "^3.0.5"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/array-includes": {
- "version": "3.1.9",
- "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.9.tgz",
- "integrity": "sha512-FmeCCAenzH0KH381SPT5FZmiA/TmpndpcaShhfgEN9eCVjnFBqq3l1xrI42y8+PPLI6hypzou4GXw00WHmPBLQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "call-bind": "^1.0.8",
- "call-bound": "^1.0.4",
- "define-properties": "^1.2.1",
- "es-abstract": "^1.24.0",
- "es-object-atoms": "^1.1.1",
- "get-intrinsic": "^1.3.0",
- "is-string": "^1.1.1",
- "math-intrinsics": "^1.1.0"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/array.prototype.findlast": {
- "version": "1.2.5",
- "resolved": "https://registry.npmjs.org/array.prototype.findlast/-/array.prototype.findlast-1.2.5.tgz",
- "integrity": "sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "call-bind": "^1.0.7",
- "define-properties": "^1.2.1",
- "es-abstract": "^1.23.2",
- "es-errors": "^1.3.0",
- "es-object-atoms": "^1.0.0",
- "es-shim-unscopables": "^1.0.2"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/array.prototype.flat": {
- "version": "1.3.3",
- "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.3.tgz",
- "integrity": "sha512-rwG/ja1neyLqCuGZ5YYrznA62D4mZXg0i1cIskIUKSiqF3Cje9/wXAls9B9s1Wa2fomMsIv8czB8jZcPmxCXFg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "call-bind": "^1.0.8",
- "define-properties": "^1.2.1",
- "es-abstract": "^1.23.5",
- "es-shim-unscopables": "^1.0.2"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/array.prototype.flatmap": {
- "version": "1.3.3",
- "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.3.tgz",
- "integrity": "sha512-Y7Wt51eKJSyi80hFrJCePGGNo5ktJCslFuboqJsbf57CCPcm5zztluPlc4/aD8sWsKvlwatezpV4U1efk8kpjg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "call-bind": "^1.0.8",
- "define-properties": "^1.2.1",
- "es-abstract": "^1.23.5",
- "es-shim-unscopables": "^1.0.2"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/array.prototype.tosorted": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.4.tgz",
- "integrity": "sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "call-bind": "^1.0.7",
- "define-properties": "^1.2.1",
- "es-abstract": "^1.23.3",
- "es-errors": "^1.3.0",
- "es-shim-unscopables": "^1.0.2"
- },
- "engines": {
- "node": ">= 0.4"
- }
- },
- "node_modules/arraybuffer.prototype.slice": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.4.tgz",
- "integrity": "sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "array-buffer-byte-length": "^1.0.1",
- "call-bind": "^1.0.8",
- "define-properties": "^1.2.1",
- "es-abstract": "^1.23.5",
- "es-errors": "^1.3.0",
- "get-intrinsic": "^1.2.6",
- "is-array-buffer": "^3.0.4"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/artplayer": {
- "version": "5.2.3",
- "resolved": "https://registry.npmjs.org/artplayer/-/artplayer-5.2.3.tgz",
- "integrity": "sha512-WaOZQrpZn/L+GgI2f0TEsoAL3Wb+v16Mu0JmWh7qKFYuvr11WNt3dWhWeIaCfoHy3NtkCWM9jTP+xwwsxdElZQ==",
- "license": "MIT",
- "dependencies": {
- "option-validator": "^2.0.6"
- }
- },
- "node_modules/artplayer-plugin-chapter": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/artplayer-plugin-chapter/-/artplayer-plugin-chapter-1.0.1.tgz",
- "integrity": "sha512-opXKGN/AdUkzhJeOJu7Pp7ExjDI9HhFbzEXmjvhLfDwZY0zSd3PpcBA5ZWPxKMqA9qxdbInCkLtWbPEhi3ZSxA==",
- "license": "MIT"
- },
- "node_modules/artplayer-plugin-hls-control": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/artplayer-plugin-hls-control/-/artplayer-plugin-hls-control-1.0.1.tgz",
- "integrity": "sha512-rbOeH/mzqgZuosOtxJ9NERil6siOLd9K7nsCRWARrSyT+zH3xdDo0WunYgDQiATniNySicxZ//ex/pPLxYECUg==",
- "license": "MIT"
- },
- "node_modules/async-function": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/async-function/-/async-function-1.0.0.tgz",
- "integrity": "sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">= 0.4"
- }
- },
- "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/autoprefixer": {
- "version": "10.4.21",
- "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.21.tgz",
- "integrity": "sha512-O+A6LWV5LDHSJD3LjHYoNi4VLsj/Whi7k6zG12xTYaU4cQ8oxQGckXNX8cRHK5yOZ/ppVHe0ZBXGzSV9jXdVbQ==",
- "dev": true,
- "funding": [
- {
- "type": "opencollective",
- "url": "https://opencollective.com/postcss/"
- },
- {
- "type": "tidelift",
- "url": "https://tidelift.com/funding/github/npm/autoprefixer"
- },
- {
- "type": "github",
- "url": "https://github.com/sponsors/ai"
- }
- ],
- "license": "MIT",
- "dependencies": {
- "browserslist": "^4.24.4",
- "caniuse-lite": "^1.0.30001702",
- "fraction.js": "^4.3.7",
- "normalize-range": "^0.1.2",
- "picocolors": "^1.1.1",
- "postcss-value-parser": "^4.2.0"
- },
- "bin": {
- "autoprefixer": "bin/autoprefixer"
- },
- "engines": {
- "node": "^10 || ^12 || >=14"
- },
- "peerDependencies": {
- "postcss": "^8.1.0"
- }
- },
- "node_modules/available-typed-arrays": {
- "version": "1.0.7",
- "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz",
- "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "possible-typed-array-names": "^1.0.0"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/axios": {
- "version": "1.11.0",
- "resolved": "https://registry.npmjs.org/axios/-/axios-1.11.0.tgz",
- "integrity": "sha512-1Lx3WLFQWm3ooKDYZD1eXmoGO9fxYQjrycfHFC8P0sCfQVXyROp0p9PFWBehewBOdCwHc+f/b8I0fMto5eSfwA==",
- "license": "MIT",
- "dependencies": {
- "follow-redirects": "^1.15.6",
- "form-data": "^4.0.4",
- "proxy-from-env": "^1.1.0"
- }
- },
- "node_modules/balanced-match": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
- "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
- "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==",
- "license": "MIT",
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/boolbase": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz",
- "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==",
- "license": "ISC"
- },
- "node_modules/brace-expansion": {
- "version": "1.1.12",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz",
- "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "balanced-match": "^1.0.0",
- "concat-map": "0.0.1"
- }
- },
- "node_modules/braces": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz",
- "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==",
- "license": "MIT",
- "dependencies": {
- "fill-range": "^7.1.1"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/browserslist": {
- "version": "4.25.1",
- "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.25.1.tgz",
- "integrity": "sha512-KGj0KoOMXLpSNkkEI6Z6mShmQy0bc1I+T7K9N81k4WWMrfz+6fQ6es80B/YLAeRoKvjYE1YSHHOW1qe9xIVzHw==",
- "dev": true,
- "funding": [
- {
- "type": "opencollective",
- "url": "https://opencollective.com/browserslist"
- },
- {
- "type": "tidelift",
- "url": "https://tidelift.com/funding/github/npm/browserslist"
- },
- {
- "type": "github",
- "url": "https://github.com/sponsors/ai"
- }
- ],
- "license": "MIT",
- "dependencies": {
- "caniuse-lite": "^1.0.30001726",
- "electron-to-chromium": "^1.5.173",
- "node-releases": "^2.0.19",
- "update-browserslist-db": "^1.1.3"
- },
- "bin": {
- "browserslist": "cli.js"
- },
- "engines": {
- "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7"
- }
- },
- "node_modules/call-bind": {
- "version": "1.0.8",
- "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz",
- "integrity": "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "call-bind-apply-helpers": "^1.0.0",
- "es-define-property": "^1.0.0",
- "get-intrinsic": "^1.2.4",
- "set-function-length": "^1.2.2"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/call-bind-apply-helpers": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz",
- "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==",
- "license": "MIT",
- "dependencies": {
- "es-errors": "^1.3.0",
- "function-bind": "^1.1.2"
- },
- "engines": {
- "node": ">= 0.4"
- }
- },
- "node_modules/call-bound": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz",
- "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "call-bind-apply-helpers": "^1.0.2",
- "get-intrinsic": "^1.3.0"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/callsites": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
- "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/camelcase-css": {
- "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==",
- "license": "MIT",
- "engines": {
- "node": ">= 6"
- }
- },
- "node_modules/camelize": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/camelize/-/camelize-1.0.1.tgz",
- "integrity": "sha512-dU+Tx2fsypxTgtLoE36npi3UqcjSSMNYfkqgmoEhtZrraP5VWq0K7FkWVTYa8eMPtnU/G2txVsfdCJTn9uzpuQ==",
- "license": "MIT",
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/caniuse-lite": {
- "version": "1.0.30001727",
- "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001727.tgz",
- "integrity": "sha512-pB68nIHmbN6L/4C6MH1DokyR3bYqFwjaSs/sWDHGj4CTcFtQUQMuJftVwWkXq7mNWOybD3KhUv3oWHoGxgP14Q==",
- "dev": true,
- "funding": [
- {
- "type": "opencollective",
- "url": "https://opencollective.com/browserslist"
- },
- {
- "type": "tidelift",
- "url": "https://tidelift.com/funding/github/npm/caniuse-lite"
- },
- {
- "type": "github",
- "url": "https://github.com/sponsors/ai"
- }
- ],
- "license": "CC-BY-4.0"
- },
- "node_modules/chalk": {
- "version": "4.1.2",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
- "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/chalk?sponsor=1"
- }
- },
- "node_modules/cheerio": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.1.2.tgz",
- "integrity": "sha512-IkxPpb5rS/d1IiLbHMgfPuS0FgiWTtFIm/Nj+2woXDLTZ7fOT2eqzgYbdMlLweqlHbsZjxEChoVK+7iph7jyQg==",
- "license": "MIT",
- "dependencies": {
- "cheerio-select": "^2.1.0",
- "dom-serializer": "^2.0.0",
- "domhandler": "^5.0.3",
- "domutils": "^3.2.2",
- "encoding-sniffer": "^0.2.1",
- "htmlparser2": "^10.0.0",
- "parse5": "^7.3.0",
- "parse5-htmlparser2-tree-adapter": "^7.1.0",
- "parse5-parser-stream": "^7.1.2",
- "undici": "^7.12.0",
- "whatwg-mimetype": "^4.0.0"
- },
- "engines": {
- "node": ">=20.18.1"
- },
- "funding": {
- "url": "https://github.com/cheeriojs/cheerio?sponsor=1"
- }
- },
- "node_modules/cheerio-select": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/cheerio-select/-/cheerio-select-2.1.0.tgz",
- "integrity": "sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==",
- "license": "BSD-2-Clause",
- "dependencies": {
- "boolbase": "^1.0.0",
- "css-select": "^5.1.0",
- "css-what": "^6.1.0",
- "domelementtype": "^2.3.0",
- "domhandler": "^5.0.3",
- "domutils": "^3.0.1"
- },
- "funding": {
- "url": "https://github.com/sponsors/fb55"
- }
- },
- "node_modules/chokidar": {
- "version": "3.6.0",
- "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz",
- "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==",
- "license": "MIT",
- "dependencies": {
- "anymatch": "~3.1.2",
- "braces": "~3.0.2",
- "glob-parent": "~5.1.2",
- "is-binary-path": "~2.1.0",
- "is-glob": "~4.0.1",
- "normalize-path": "~3.0.0",
- "readdirp": "~3.6.0"
- },
- "engines": {
- "node": ">= 8.10.0"
- },
- "funding": {
- "url": "https://paulmillr.com/funding/"
- },
- "optionalDependencies": {
- "fsevents": "~2.3.2"
- }
- },
- "node_modules/chokidar/node_modules/glob-parent": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
- "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
- "license": "ISC",
- "dependencies": {
- "is-glob": "^4.0.1"
- },
- "engines": {
- "node": ">= 6"
- }
- },
- "node_modules/class-variance-authority": {
- "version": "0.7.1",
- "resolved": "https://registry.npmjs.org/class-variance-authority/-/class-variance-authority-0.7.1.tgz",
- "integrity": "sha512-Ka+9Trutv7G8M6WT6SeiRWz792K5qEqIGEGzXKhAE6xOWAY6pPH8U+9IY3oCMv6kqTmLsv7Xh/2w2RigkePMsg==",
- "license": "Apache-2.0",
- "dependencies": {
- "clsx": "^2.1.1"
- },
- "funding": {
- "url": "https://polar.sh/cva"
- }
- },
- "node_modules/clsx": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz",
- "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==",
- "license": "MIT",
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/color-convert": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
- "license": "MIT",
- "dependencies": {
- "color-name": "~1.1.4"
- },
- "engines": {
- "node": ">=7.0.0"
- }
- },
- "node_modules/color-name": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
- "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
- "license": "MIT"
- },
- "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==",
- "license": "MIT",
- "engines": {
- "node": ">= 6"
- }
- },
- "node_modules/concat-map": {
- "version": "0.0.1",
- "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
- "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/convert-source-map": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz",
- "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/cross-spawn": {
- "version": "7.0.6",
- "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz",
- "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==",
- "license": "MIT",
- "dependencies": {
- "path-key": "^3.1.0",
- "shebang-command": "^2.0.0",
- "which": "^2.0.1"
- },
- "engines": {
- "node": ">= 8"
- }
- },
- "node_modules/css-color-keywords": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/css-color-keywords/-/css-color-keywords-1.0.0.tgz",
- "integrity": "sha512-FyyrDHZKEjXDpNJYvVsV960FiqQyXc/LlYmsxl2BcdMb2WPx0OGRVgTg55rPSyLSNMqP52R9r8geSp7apN3Ofg==",
- "license": "ISC",
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/css-select": {
- "version": "5.2.2",
- "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.2.2.tgz",
- "integrity": "sha512-TizTzUddG/xYLA3NXodFM0fSbNizXjOKhqiQQwvhlspadZokn1KDy0NZFS0wuEubIYAV5/c1/lAr0TaaFXEXzw==",
- "license": "BSD-2-Clause",
- "dependencies": {
- "boolbase": "^1.0.0",
- "css-what": "^6.1.0",
- "domhandler": "^5.0.2",
- "domutils": "^3.0.1",
- "nth-check": "^2.0.1"
- },
- "funding": {
- "url": "https://github.com/sponsors/fb55"
- }
- },
- "node_modules/css-to-react-native": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/css-to-react-native/-/css-to-react-native-3.2.0.tgz",
- "integrity": "sha512-e8RKaLXMOFii+02mOlqwjbD00KSEKqblnpO9e++1aXS1fPQOpS1YoqdVHBqPjHNoxeF2mimzVqawm2KCbEdtHQ==",
- "license": "MIT",
- "dependencies": {
- "camelize": "^1.0.0",
- "css-color-keywords": "^1.0.0",
- "postcss-value-parser": "^4.0.2"
- }
- },
- "node_modules/css-what": {
- "version": "6.2.2",
- "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.2.2.tgz",
- "integrity": "sha512-u/O3vwbptzhMs3L1fQE82ZSLHQQfto5gyZzwteVIEyeaY5Fc7R4dapF/BvRoSYFeqfBk4m0V1Vafq5Pjv25wvA==",
- "license": "BSD-2-Clause",
- "engines": {
- "node": ">= 6"
- },
- "funding": {
- "url": "https://github.com/sponsors/fb55"
- }
- },
- "node_modules/cssesc": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz",
- "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==",
- "license": "MIT",
- "bin": {
- "cssesc": "bin/cssesc"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/csstype": {
- "version": "3.1.3",
- "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz",
- "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==",
- "license": "MIT"
- },
- "node_modules/data-view-buffer": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.2.tgz",
- "integrity": "sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "call-bound": "^1.0.3",
- "es-errors": "^1.3.0",
- "is-data-view": "^1.0.2"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/data-view-byte-length": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.2.tgz",
- "integrity": "sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "call-bound": "^1.0.3",
- "es-errors": "^1.3.0",
- "is-data-view": "^1.0.2"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/inspect-js"
- }
- },
- "node_modules/data-view-byte-offset": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.1.tgz",
- "integrity": "sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "call-bound": "^1.0.2",
- "es-errors": "^1.3.0",
- "is-data-view": "^1.0.1"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/debug": {
- "version": "4.4.1",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz",
- "integrity": "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "ms": "^2.1.3"
- },
- "engines": {
- "node": ">=6.0"
- },
- "peerDependenciesMeta": {
- "supports-color": {
- "optional": true
- }
- }
- },
- "node_modules/deep-is": {
- "version": "0.1.4",
- "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz",
- "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/define-data-property": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz",
- "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "es-define-property": "^1.0.0",
- "es-errors": "^1.3.0",
- "gopd": "^1.0.1"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/define-properties": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz",
- "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "define-data-property": "^1.0.1",
- "has-property-descriptors": "^1.0.0",
- "object-keys": "^1.1.1"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "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/didyoumean": {
- "version": "1.2.2",
- "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz",
- "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==",
- "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==",
- "license": "MIT"
- },
- "node_modules/doctrine": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz",
- "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==",
- "dev": true,
- "license": "Apache-2.0",
- "dependencies": {
- "esutils": "^2.0.2"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/dom-serializer": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz",
- "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==",
- "license": "MIT",
- "dependencies": {
- "domelementtype": "^2.3.0",
- "domhandler": "^5.0.2",
- "entities": "^4.2.0"
- },
- "funding": {
- "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1"
- }
- },
- "node_modules/domelementtype": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz",
- "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==",
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/fb55"
- }
- ],
- "license": "BSD-2-Clause"
- },
- "node_modules/domhandler": {
- "version": "5.0.3",
- "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz",
- "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==",
- "license": "BSD-2-Clause",
- "dependencies": {
- "domelementtype": "^2.3.0"
- },
- "engines": {
- "node": ">= 4"
- },
- "funding": {
- "url": "https://github.com/fb55/domhandler?sponsor=1"
- }
- },
- "node_modules/domutils": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.2.2.tgz",
- "integrity": "sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==",
- "license": "BSD-2-Clause",
- "dependencies": {
- "dom-serializer": "^2.0.0",
- "domelementtype": "^2.3.0",
- "domhandler": "^5.0.3"
- },
- "funding": {
- "url": "https://github.com/fb55/domutils?sponsor=1"
- }
- },
- "node_modules/dunder-proto": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz",
- "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==",
- "license": "MIT",
- "dependencies": {
- "call-bind-apply-helpers": "^1.0.1",
- "es-errors": "^1.3.0",
- "gopd": "^1.2.0"
- },
- "engines": {
- "node": ">= 0.4"
- }
- },
- "node_modules/eastasianwidth": {
- "version": "0.2.0",
- "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz",
- "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==",
- "license": "MIT"
- },
- "node_modules/electron-to-chromium": {
- "version": "1.5.190",
- "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.190.tgz",
- "integrity": "sha512-k4McmnB2091YIsdCgkS0fMVMPOJgxl93ltFzaryXqwip1AaxeDqKCGLxkXODDA5Ab/D+tV5EL5+aTx76RvLRxw==",
- "dev": true,
- "license": "ISC"
- },
- "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==",
- "license": "MIT"
- },
- "node_modules/encoding-sniffer": {
- "version": "0.2.1",
- "resolved": "https://registry.npmjs.org/encoding-sniffer/-/encoding-sniffer-0.2.1.tgz",
- "integrity": "sha512-5gvq20T6vfpekVtqrYQsSCFZ1wEg5+wW0/QaZMWkFr6BqD3NfKs0rLCx4rrVlSWJeZb5NBJgVLswK/w2MWU+Gw==",
- "license": "MIT",
- "dependencies": {
- "iconv-lite": "^0.6.3",
- "whatwg-encoding": "^3.1.1"
- },
- "funding": {
- "url": "https://github.com/fb55/encoding-sniffer?sponsor=1"
- }
- },
- "node_modules/entities": {
- "version": "4.5.0",
- "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz",
- "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==",
- "license": "BSD-2-Clause",
- "engines": {
- "node": ">=0.12"
- },
- "funding": {
- "url": "https://github.com/fb55/entities?sponsor=1"
- }
- },
- "node_modules/es-abstract": {
- "version": "1.24.0",
- "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.24.0.tgz",
- "integrity": "sha512-WSzPgsdLtTcQwm4CROfS5ju2Wa1QQcVeT37jFjYzdFz1r9ahadC8B8/a4qxJxM+09F18iumCdRmlr96ZYkQvEg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "array-buffer-byte-length": "^1.0.2",
- "arraybuffer.prototype.slice": "^1.0.4",
- "available-typed-arrays": "^1.0.7",
- "call-bind": "^1.0.8",
- "call-bound": "^1.0.4",
- "data-view-buffer": "^1.0.2",
- "data-view-byte-length": "^1.0.2",
- "data-view-byte-offset": "^1.0.1",
- "es-define-property": "^1.0.1",
- "es-errors": "^1.3.0",
- "es-object-atoms": "^1.1.1",
- "es-set-tostringtag": "^2.1.0",
- "es-to-primitive": "^1.3.0",
- "function.prototype.name": "^1.1.8",
- "get-intrinsic": "^1.3.0",
- "get-proto": "^1.0.1",
- "get-symbol-description": "^1.1.0",
- "globalthis": "^1.0.4",
- "gopd": "^1.2.0",
- "has-property-descriptors": "^1.0.2",
- "has-proto": "^1.2.0",
- "has-symbols": "^1.1.0",
- "hasown": "^2.0.2",
- "internal-slot": "^1.1.0",
- "is-array-buffer": "^3.0.5",
- "is-callable": "^1.2.7",
- "is-data-view": "^1.0.2",
- "is-negative-zero": "^2.0.3",
- "is-regex": "^1.2.1",
- "is-set": "^2.0.3",
- "is-shared-array-buffer": "^1.0.4",
- "is-string": "^1.1.1",
- "is-typed-array": "^1.1.15",
- "is-weakref": "^1.1.1",
- "math-intrinsics": "^1.1.0",
- "object-inspect": "^1.13.4",
- "object-keys": "^1.1.1",
- "object.assign": "^4.1.7",
- "own-keys": "^1.0.1",
- "regexp.prototype.flags": "^1.5.4",
- "safe-array-concat": "^1.1.3",
- "safe-push-apply": "^1.0.0",
- "safe-regex-test": "^1.1.0",
- "set-proto": "^1.0.0",
- "stop-iteration-iterator": "^1.1.0",
- "string.prototype.trim": "^1.2.10",
- "string.prototype.trimend": "^1.0.9",
- "string.prototype.trimstart": "^1.0.8",
- "typed-array-buffer": "^1.0.3",
- "typed-array-byte-length": "^1.0.3",
- "typed-array-byte-offset": "^1.0.4",
- "typed-array-length": "^1.0.7",
- "unbox-primitive": "^1.1.0",
- "which-typed-array": "^1.1.19"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/es-define-property": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz",
- "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==",
- "license": "MIT",
- "engines": {
- "node": ">= 0.4"
- }
- },
- "node_modules/es-errors": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz",
- "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==",
- "license": "MIT",
- "engines": {
- "node": ">= 0.4"
- }
- },
- "node_modules/es-iterator-helpers": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.2.1.tgz",
- "integrity": "sha512-uDn+FE1yrDzyC0pCo961B2IHbdM8y/ACZsKD4dG6WqrjV53BADjwa7D+1aom2rsNVfLyDgU/eigvlJGJ08OQ4w==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "call-bind": "^1.0.8",
- "call-bound": "^1.0.3",
- "define-properties": "^1.2.1",
- "es-abstract": "^1.23.6",
- "es-errors": "^1.3.0",
- "es-set-tostringtag": "^2.0.3",
- "function-bind": "^1.1.2",
- "get-intrinsic": "^1.2.6",
- "globalthis": "^1.0.4",
- "gopd": "^1.2.0",
- "has-property-descriptors": "^1.0.2",
- "has-proto": "^1.2.0",
- "has-symbols": "^1.1.0",
- "internal-slot": "^1.1.0",
- "iterator.prototype": "^1.1.4",
- "safe-array-concat": "^1.1.3"
- },
- "engines": {
- "node": ">= 0.4"
- }
- },
- "node_modules/es-object-atoms": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz",
- "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==",
- "license": "MIT",
- "dependencies": {
- "es-errors": "^1.3.0"
- },
- "engines": {
- "node": ">= 0.4"
- }
- },
- "node_modules/es-set-tostringtag": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz",
- "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==",
- "license": "MIT",
- "dependencies": {
- "es-errors": "^1.3.0",
- "get-intrinsic": "^1.2.6",
- "has-tostringtag": "^1.0.2",
- "hasown": "^2.0.2"
- },
- "engines": {
- "node": ">= 0.4"
- }
- },
- "node_modules/es-shim-unscopables": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.1.0.tgz",
- "integrity": "sha512-d9T8ucsEhh8Bi1woXCf+TIKDIROLG5WCkxg8geBCbvk22kzwC5G2OnXVMO6FUsvQlgUUXQ2itephWDLqDzbeCw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "hasown": "^2.0.2"
- },
- "engines": {
- "node": ">= 0.4"
- }
- },
- "node_modules/es-to-primitive": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.3.0.tgz",
- "integrity": "sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "is-callable": "^1.2.7",
- "is-date-object": "^1.0.5",
- "is-symbol": "^1.0.4"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/esbuild": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.21.5.tgz",
- "integrity": "sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==",
- "dev": true,
- "hasInstallScript": true,
- "license": "MIT",
- "bin": {
- "esbuild": "bin/esbuild"
- },
- "engines": {
- "node": ">=12"
- },
- "optionalDependencies": {
- "@esbuild/aix-ppc64": "0.21.5",
- "@esbuild/android-arm": "0.21.5",
- "@esbuild/android-arm64": "0.21.5",
- "@esbuild/android-x64": "0.21.5",
- "@esbuild/darwin-arm64": "0.21.5",
- "@esbuild/darwin-x64": "0.21.5",
- "@esbuild/freebsd-arm64": "0.21.5",
- "@esbuild/freebsd-x64": "0.21.5",
- "@esbuild/linux-arm": "0.21.5",
- "@esbuild/linux-arm64": "0.21.5",
- "@esbuild/linux-ia32": "0.21.5",
- "@esbuild/linux-loong64": "0.21.5",
- "@esbuild/linux-mips64el": "0.21.5",
- "@esbuild/linux-ppc64": "0.21.5",
- "@esbuild/linux-riscv64": "0.21.5",
- "@esbuild/linux-s390x": "0.21.5",
- "@esbuild/linux-x64": "0.21.5",
- "@esbuild/netbsd-x64": "0.21.5",
- "@esbuild/openbsd-x64": "0.21.5",
- "@esbuild/sunos-x64": "0.21.5",
- "@esbuild/win32-arm64": "0.21.5",
- "@esbuild/win32-ia32": "0.21.5",
- "@esbuild/win32-x64": "0.21.5"
- }
- },
- "node_modules/escalade": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz",
- "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/escape-string-regexp": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
- "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/eslint": {
- "version": "9.31.0",
- "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.31.0.tgz",
- "integrity": "sha512-QldCVh/ztyKJJZLr4jXNUByx3gR+TDYZCRXEktiZoUR3PGy4qCmSbkxcIle8GEwGpb5JBZazlaJ/CxLidXdEbQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@eslint-community/eslint-utils": "^4.2.0",
- "@eslint-community/regexpp": "^4.12.1",
- "@eslint/config-array": "^0.21.0",
- "@eslint/config-helpers": "^0.3.0",
- "@eslint/core": "^0.15.0",
- "@eslint/eslintrc": "^3.3.1",
- "@eslint/js": "9.31.0",
- "@eslint/plugin-kit": "^0.3.1",
- "@humanfs/node": "^0.16.6",
- "@humanwhocodes/module-importer": "^1.0.1",
- "@humanwhocodes/retry": "^0.4.2",
- "@types/estree": "^1.0.6",
- "@types/json-schema": "^7.0.15",
- "ajv": "^6.12.4",
- "chalk": "^4.0.0",
- "cross-spawn": "^7.0.6",
- "debug": "^4.3.2",
- "escape-string-regexp": "^4.0.0",
- "eslint-scope": "^8.4.0",
- "eslint-visitor-keys": "^4.2.1",
- "espree": "^10.4.0",
- "esquery": "^1.5.0",
- "esutils": "^2.0.2",
- "fast-deep-equal": "^3.1.3",
- "file-entry-cache": "^8.0.0",
- "find-up": "^5.0.0",
- "glob-parent": "^6.0.2",
- "ignore": "^5.2.0",
- "imurmurhash": "^0.1.4",
- "is-glob": "^4.0.0",
- "json-stable-stringify-without-jsonify": "^1.0.1",
- "lodash.merge": "^4.6.2",
- "minimatch": "^3.1.2",
- "natural-compare": "^1.4.0",
- "optionator": "^0.9.3"
- },
- "bin": {
- "eslint": "bin/eslint.js"
- },
- "engines": {
- "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
- },
- "funding": {
- "url": "https://eslint.org/donate"
- },
- "peerDependencies": {
- "jiti": "*"
- },
- "peerDependenciesMeta": {
- "jiti": {
- "optional": true
- }
- }
- },
- "node_modules/eslint-plugin-react": {
- "version": "7.37.5",
- "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.37.5.tgz",
- "integrity": "sha512-Qteup0SqU15kdocexFNAJMvCJEfa2xUKNV4CC1xsVMrIIqEy3SQ/rqyxCWNzfrd3/ldy6HMlD2e0JDVpDg2qIA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "array-includes": "^3.1.8",
- "array.prototype.findlast": "^1.2.5",
- "array.prototype.flatmap": "^1.3.3",
- "array.prototype.tosorted": "^1.1.4",
- "doctrine": "^2.1.0",
- "es-iterator-helpers": "^1.2.1",
- "estraverse": "^5.3.0",
- "hasown": "^2.0.2",
- "jsx-ast-utils": "^2.4.1 || ^3.0.0",
- "minimatch": "^3.1.2",
- "object.entries": "^1.1.9",
- "object.fromentries": "^2.0.8",
- "object.values": "^1.2.1",
- "prop-types": "^15.8.1",
- "resolve": "^2.0.0-next.5",
- "semver": "^6.3.1",
- "string.prototype.matchall": "^4.0.12",
- "string.prototype.repeat": "^1.0.0"
- },
- "engines": {
- "node": ">=4"
- },
- "peerDependencies": {
- "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7"
- }
- },
- "node_modules/eslint-plugin-react-hooks": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-5.2.0.tgz",
- "integrity": "sha512-+f15FfK64YQwZdJNELETdn5ibXEUQmW1DZL6KXhNnc2heoy/sg9VJJeT7n8TlMWouzWqSWavFkIhHyIbIAEapg==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=10"
- },
- "peerDependencies": {
- "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0"
- }
- },
- "node_modules/eslint-plugin-react-refresh": {
- "version": "0.4.20",
- "resolved": "https://registry.npmjs.org/eslint-plugin-react-refresh/-/eslint-plugin-react-refresh-0.4.20.tgz",
- "integrity": "sha512-XpbHQ2q5gUF8BGOX4dHe+71qoirYMhApEPZ7sfhF/dNnOF1UXnCMGZf79SFTBO7Bz5YEIT4TMieSlJBWhP9WBA==",
- "dev": true,
- "license": "MIT",
- "peerDependencies": {
- "eslint": ">=8.40"
- }
- },
- "node_modules/eslint-scope": {
- "version": "8.4.0",
- "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.4.0.tgz",
- "integrity": "sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==",
- "dev": true,
- "license": "BSD-2-Clause",
- "dependencies": {
- "esrecurse": "^4.3.0",
- "estraverse": "^5.2.0"
- },
- "engines": {
- "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
- },
- "funding": {
- "url": "https://opencollective.com/eslint"
- }
- },
- "node_modules/eslint-visitor-keys": {
- "version": "4.2.1",
- "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz",
- "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==",
- "dev": true,
- "license": "Apache-2.0",
- "engines": {
- "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
- },
- "funding": {
- "url": "https://opencollective.com/eslint"
- }
- },
- "node_modules/espree": {
- "version": "10.4.0",
- "resolved": "https://registry.npmjs.org/espree/-/espree-10.4.0.tgz",
- "integrity": "sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==",
- "dev": true,
- "license": "BSD-2-Clause",
- "dependencies": {
- "acorn": "^8.15.0",
- "acorn-jsx": "^5.3.2",
- "eslint-visitor-keys": "^4.2.1"
- },
- "engines": {
- "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
- },
- "funding": {
- "url": "https://opencollective.com/eslint"
- }
- },
- "node_modules/esquery": {
- "version": "1.6.0",
- "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz",
- "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==",
- "dev": true,
- "license": "BSD-3-Clause",
- "dependencies": {
- "estraverse": "^5.1.0"
- },
- "engines": {
- "node": ">=0.10"
- }
- },
- "node_modules/esrecurse": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz",
- "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==",
- "dev": true,
- "license": "BSD-2-Clause",
- "dependencies": {
- "estraverse": "^5.2.0"
- },
- "engines": {
- "node": ">=4.0"
- }
- },
- "node_modules/estraverse": {
- "version": "5.3.0",
- "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
- "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
- "dev": true,
- "license": "BSD-2-Clause",
- "engines": {
- "node": ">=4.0"
- }
- },
- "node_modules/esutils": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
- "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
- "dev": true,
- "license": "BSD-2-Clause",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/fast-deep-equal": {
- "version": "3.1.3",
- "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
- "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/fast-glob": {
- "version": "3.3.3",
- "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz",
- "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==",
- "license": "MIT",
- "dependencies": {
- "@nodelib/fs.stat": "^2.0.2",
- "@nodelib/fs.walk": "^1.2.3",
- "glob-parent": "^5.1.2",
- "merge2": "^1.3.0",
- "micromatch": "^4.0.8"
- },
- "engines": {
- "node": ">=8.6.0"
- }
- },
- "node_modules/fast-glob/node_modules/glob-parent": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
- "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
- "license": "ISC",
- "dependencies": {
- "is-glob": "^4.0.1"
- },
- "engines": {
- "node": ">= 6"
- }
- },
- "node_modules/fast-json-stable-stringify": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
- "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/fast-levenshtein": {
- "version": "2.0.6",
- "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
- "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/fastq": {
- "version": "1.19.1",
- "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.19.1.tgz",
- "integrity": "sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==",
- "license": "ISC",
- "dependencies": {
- "reusify": "^1.0.4"
- }
- },
- "node_modules/file-entry-cache": {
- "version": "8.0.0",
- "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz",
- "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "flat-cache": "^4.0.0"
- },
- "engines": {
- "node": ">=16.0.0"
- }
- },
- "node_modules/fill-range": {
- "version": "7.1.1",
- "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz",
- "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==",
- "license": "MIT",
- "dependencies": {
- "to-regex-range": "^5.0.1"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/find-up": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz",
- "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "locate-path": "^6.0.0",
- "path-exists": "^4.0.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/flat-cache": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz",
- "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "flatted": "^3.2.9",
- "keyv": "^4.5.4"
- },
- "engines": {
- "node": ">=16"
- }
- },
- "node_modules/flatted": {
- "version": "3.3.3",
- "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz",
- "integrity": "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==",
- "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.5",
- "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.5.tgz",
- "integrity": "sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "is-callable": "^1.2.7"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/foreground-child": {
- "version": "3.3.1",
- "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz",
- "integrity": "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==",
- "license": "ISC",
- "dependencies": {
- "cross-spawn": "^7.0.6",
- "signal-exit": "^4.0.1"
- },
- "engines": {
- "node": ">=14"
- },
- "funding": {
- "url": "https://github.com/sponsors/isaacs"
- }
- },
- "node_modules/form-data": {
- "version": "4.0.4",
- "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.4.tgz",
- "integrity": "sha512-KrGhL9Q4zjj0kiUt5OO4Mr/A/jlI2jDYs5eHBpYHPcBEVSiipAvn2Ko2HnPe20rmcuuvMHNdZFp+4IlGTMF0Ow==",
- "license": "MIT",
- "dependencies": {
- "asynckit": "^0.4.0",
- "combined-stream": "^1.0.8",
- "es-set-tostringtag": "^2.1.0",
- "hasown": "^2.0.2",
- "mime-types": "^2.1.12"
- },
- "engines": {
- "node": ">= 6"
- }
- },
- "node_modules/fraction.js": {
- "version": "4.3.7",
- "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.7.tgz",
- "integrity": "sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": "*"
- },
- "funding": {
- "type": "patreon",
- "url": "https://github.com/sponsors/rawify"
- }
- },
- "node_modules/fsevents": {
- "version": "2.3.3",
- "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz",
- "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==",
- "hasInstallScript": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "darwin"
- ],
- "engines": {
- "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
- }
- },
- "node_modules/function-bind": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
- "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==",
- "license": "MIT",
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/function.prototype.name": {
- "version": "1.1.8",
- "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.8.tgz",
- "integrity": "sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "call-bind": "^1.0.8",
- "call-bound": "^1.0.3",
- "define-properties": "^1.2.1",
- "functions-have-names": "^1.2.3",
- "hasown": "^2.0.2",
- "is-callable": "^1.2.7"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/functions-have-names": {
- "version": "1.2.3",
- "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz",
- "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==",
- "dev": true,
- "license": "MIT",
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/gensync": {
- "version": "1.0.0-beta.2",
- "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz",
- "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/get-intrinsic": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz",
- "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==",
- "license": "MIT",
- "dependencies": {
- "call-bind-apply-helpers": "^1.0.2",
- "es-define-property": "^1.0.1",
- "es-errors": "^1.3.0",
- "es-object-atoms": "^1.1.1",
- "function-bind": "^1.1.2",
- "get-proto": "^1.0.1",
- "gopd": "^1.2.0",
- "has-symbols": "^1.1.0",
- "hasown": "^2.0.2",
- "math-intrinsics": "^1.1.0"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/get-proto": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz",
- "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==",
- "license": "MIT",
- "dependencies": {
- "dunder-proto": "^1.0.1",
- "es-object-atoms": "^1.0.0"
- },
- "engines": {
- "node": ">= 0.4"
- }
- },
- "node_modules/get-symbol-description": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.1.0.tgz",
- "integrity": "sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "call-bound": "^1.0.3",
- "es-errors": "^1.3.0",
- "get-intrinsic": "^1.2.6"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/glob": {
- "version": "10.4.5",
- "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz",
- "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==",
- "license": "ISC",
- "dependencies": {
- "foreground-child": "^3.1.0",
- "jackspeak": "^3.1.2",
- "minimatch": "^9.0.4",
- "minipass": "^7.1.2",
- "package-json-from-dist": "^1.0.0",
- "path-scurry": "^1.11.1"
- },
- "bin": {
- "glob": "dist/esm/bin.mjs"
- },
- "funding": {
- "url": "https://github.com/sponsors/isaacs"
- }
- },
- "node_modules/glob-parent": {
- "version": "6.0.2",
- "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz",
- "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==",
- "license": "ISC",
- "dependencies": {
- "is-glob": "^4.0.3"
- },
- "engines": {
- "node": ">=10.13.0"
- }
- },
- "node_modules/glob/node_modules/brace-expansion": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz",
- "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==",
- "license": "MIT",
- "dependencies": {
- "balanced-match": "^1.0.0"
- }
- },
- "node_modules/glob/node_modules/minimatch": {
- "version": "9.0.5",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz",
- "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==",
- "license": "ISC",
- "dependencies": {
- "brace-expansion": "^2.0.1"
- },
- "engines": {
- "node": ">=16 || 14 >=14.17"
- },
- "funding": {
- "url": "https://github.com/sponsors/isaacs"
- }
- },
- "node_modules/globals": {
- "version": "15.15.0",
- "resolved": "https://registry.npmjs.org/globals/-/globals-15.15.0.tgz",
- "integrity": "sha512-7ACyT3wmyp3I61S4fG682L0VA2RGD9otkqGJIwNUMF1SWUombIIk+af1unuDYgMm082aHYwD+mzJvv9Iu8dsgg==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=18"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/globalthis": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz",
- "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "define-properties": "^1.2.1",
- "gopd": "^1.0.1"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/gopd": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz",
- "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==",
- "license": "MIT",
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/has-bigints": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.1.0.tgz",
- "integrity": "sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/has-flag": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/has-property-descriptors": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz",
- "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "es-define-property": "^1.0.0"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/has-proto": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.2.0.tgz",
- "integrity": "sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "dunder-proto": "^1.0.0"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/has-symbols": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz",
- "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==",
- "license": "MIT",
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/has-tostringtag": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz",
- "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==",
- "license": "MIT",
- "dependencies": {
- "has-symbols": "^1.0.3"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/hasown": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz",
- "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==",
- "license": "MIT",
- "dependencies": {
- "function-bind": "^1.1.2"
- },
- "engines": {
- "node": ">= 0.4"
- }
- },
- "node_modules/hls.js": {
- "version": "1.6.7",
- "resolved": "https://registry.npmjs.org/hls.js/-/hls.js-1.6.7.tgz",
- "integrity": "sha512-QW2fnwDGKGc9DwQUGLbmMOz8G48UZK7PVNJPcOUql1b8jubKx4/eMHNP5mGqr6tYlJNDG1g10Lx2U/qPzL6zwQ==",
- "license": "Apache-2.0"
- },
- "node_modules/htmlparser2": {
- "version": "10.0.0",
- "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-10.0.0.tgz",
- "integrity": "sha512-TwAZM+zE5Tq3lrEHvOlvwgj1XLWQCtaaibSN11Q+gGBAS7Y1uZSWwXXRe4iF6OXnaq1riyQAPFOBtYc77Mxq0g==",
- "funding": [
- "https://github.com/fb55/htmlparser2?sponsor=1",
- {
- "type": "github",
- "url": "https://github.com/sponsors/fb55"
- }
- ],
- "license": "MIT",
- "dependencies": {
- "domelementtype": "^2.3.0",
- "domhandler": "^5.0.3",
- "domutils": "^3.2.1",
- "entities": "^6.0.0"
- }
- },
- "node_modules/htmlparser2/node_modules/entities": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/entities/-/entities-6.0.1.tgz",
- "integrity": "sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==",
- "license": "BSD-2-Clause",
- "engines": {
- "node": ">=0.12"
- },
- "funding": {
- "url": "https://github.com/fb55/entities?sponsor=1"
- }
- },
- "node_modules/iconv-lite": {
- "version": "0.6.3",
- "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz",
- "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==",
- "license": "MIT",
- "dependencies": {
- "safer-buffer": ">= 2.1.2 < 3.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/ignore": {
- "version": "5.3.2",
- "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz",
- "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">= 4"
- }
- },
- "node_modules/import-fresh": {
- "version": "3.3.1",
- "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz",
- "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "parent-module": "^1.0.0",
- "resolve-from": "^4.0.0"
- },
- "engines": {
- "node": ">=6"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/imurmurhash": {
- "version": "0.1.4",
- "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
- "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=0.8.19"
- }
- },
- "node_modules/internal-slot": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.1.0.tgz",
- "integrity": "sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "es-errors": "^1.3.0",
- "hasown": "^2.0.2",
- "side-channel": "^1.1.0"
- },
- "engines": {
- "node": ">= 0.4"
- }
- },
- "node_modules/is-array-buffer": {
- "version": "3.0.5",
- "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.5.tgz",
- "integrity": "sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "call-bind": "^1.0.8",
- "call-bound": "^1.0.3",
- "get-intrinsic": "^1.2.6"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/is-async-function": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.1.1.tgz",
- "integrity": "sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "async-function": "^1.0.0",
- "call-bound": "^1.0.3",
- "get-proto": "^1.0.1",
- "has-tostringtag": "^1.0.2",
- "safe-regex-test": "^1.1.0"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/is-bigint": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.1.0.tgz",
- "integrity": "sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "has-bigints": "^1.0.2"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/is-binary-path": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
- "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
- "license": "MIT",
- "dependencies": {
- "binary-extensions": "^2.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/is-boolean-object": {
- "version": "1.2.2",
- "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.2.2.tgz",
- "integrity": "sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "call-bound": "^1.0.3",
- "has-tostringtag": "^1.0.2"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/is-callable": {
- "version": "1.2.7",
- "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz",
- "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/is-core-module": {
- "version": "2.16.1",
- "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz",
- "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==",
- "license": "MIT",
- "dependencies": {
- "hasown": "^2.0.2"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/is-data-view": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.2.tgz",
- "integrity": "sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "call-bound": "^1.0.2",
- "get-intrinsic": "^1.2.6",
- "is-typed-array": "^1.1.13"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/is-date-object": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.1.0.tgz",
- "integrity": "sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "call-bound": "^1.0.2",
- "has-tostringtag": "^1.0.2"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/is-extglob": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
- "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
- "license": "MIT",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/is-finalizationregistry": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.1.1.tgz",
- "integrity": "sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "call-bound": "^1.0.3"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/is-fullwidth-code-point": {
- "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==",
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/is-generator-function": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.1.0.tgz",
- "integrity": "sha512-nPUB5km40q9e8UfN/Zc24eLlzdSf9OfKByBw9CIdw4H1giPMeA0OIJvbchsCu4npfI2QcMVBsGEBHKZ7wLTWmQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "call-bound": "^1.0.3",
- "get-proto": "^1.0.0",
- "has-tostringtag": "^1.0.2",
- "safe-regex-test": "^1.1.0"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/is-glob": {
- "version": "4.0.3",
- "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
- "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
- "license": "MIT",
- "dependencies": {
- "is-extglob": "^2.1.1"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/is-map": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz",
- "integrity": "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/is-negative-zero": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz",
- "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/is-number": {
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
- "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
- "license": "MIT",
- "engines": {
- "node": ">=0.12.0"
- }
- },
- "node_modules/is-number-object": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.1.1.tgz",
- "integrity": "sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "call-bound": "^1.0.3",
- "has-tostringtag": "^1.0.2"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/is-regex": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.2.1.tgz",
- "integrity": "sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "call-bound": "^1.0.2",
- "gopd": "^1.2.0",
- "has-tostringtag": "^1.0.2",
- "hasown": "^2.0.2"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/is-set": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz",
- "integrity": "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/is-shared-array-buffer": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.4.tgz",
- "integrity": "sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "call-bound": "^1.0.3"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/is-string": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.1.1.tgz",
- "integrity": "sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "call-bound": "^1.0.3",
- "has-tostringtag": "^1.0.2"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/is-symbol": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.1.1.tgz",
- "integrity": "sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "call-bound": "^1.0.2",
- "has-symbols": "^1.1.0",
- "safe-regex-test": "^1.1.0"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/is-typed-array": {
- "version": "1.1.15",
- "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.15.tgz",
- "integrity": "sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "which-typed-array": "^1.1.16"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/is-weakmap": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz",
- "integrity": "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/is-weakref": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.1.1.tgz",
- "integrity": "sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "call-bound": "^1.0.3"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/is-weakset": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.4.tgz",
- "integrity": "sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "call-bound": "^1.0.3",
- "get-intrinsic": "^1.2.6"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/isarray": {
- "version": "2.0.5",
- "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz",
- "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/isexe": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
- "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",
- "license": "ISC"
- },
- "node_modules/iterator.prototype": {
- "version": "1.1.5",
- "resolved": "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.5.tgz",
- "integrity": "sha512-H0dkQoCa3b2VEeKQBOxFph+JAbcrQdE7KC0UkqwpLmv2EC4P41QXP+rqo9wYodACiG5/WM5s9oDApTU8utwj9g==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "define-data-property": "^1.1.4",
- "es-object-atoms": "^1.0.0",
- "get-intrinsic": "^1.2.6",
- "get-proto": "^1.0.0",
- "has-symbols": "^1.1.0",
- "set-function-name": "^2.0.2"
- },
- "engines": {
- "node": ">= 0.4"
- }
- },
- "node_modules/jackspeak": {
- "version": "3.4.3",
- "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz",
- "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==",
- "license": "BlueOak-1.0.0",
- "dependencies": {
- "@isaacs/cliui": "^8.0.2"
- },
- "funding": {
- "url": "https://github.com/sponsors/isaacs"
- },
- "optionalDependencies": {
- "@pkgjs/parseargs": "^0.11.0"
- }
- },
- "node_modules/jiti": {
- "version": "1.21.7",
- "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.7.tgz",
- "integrity": "sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A==",
- "license": "MIT",
- "bin": {
- "jiti": "bin/jiti.js"
- }
- },
- "node_modules/js-tokens": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
- "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
- "license": "MIT"
- },
- "node_modules/js-yaml": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz",
- "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "argparse": "^2.0.1"
- },
- "bin": {
- "js-yaml": "bin/js-yaml.js"
- }
- },
- "node_modules/jsesc": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz",
- "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==",
- "dev": true,
- "license": "MIT",
- "bin": {
- "jsesc": "bin/jsesc"
- },
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/json-buffer": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz",
- "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/json-schema-traverse": {
- "version": "0.4.1",
- "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
- "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/json-stable-stringify-without-jsonify": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz",
- "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/json5": {
- "version": "2.2.3",
- "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz",
- "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==",
- "dev": true,
- "license": "MIT",
- "bin": {
- "json5": "lib/cli.js"
- },
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/jsx-ast-utils": {
- "version": "3.3.5",
- "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz",
- "integrity": "sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "array-includes": "^3.1.6",
- "array.prototype.flat": "^1.3.1",
- "object.assign": "^4.1.4",
- "object.values": "^1.1.6"
- },
- "engines": {
- "node": ">=4.0"
- }
- },
- "node_modules/keyv": {
- "version": "4.5.4",
- "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz",
- "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "json-buffer": "3.0.1"
- }
- },
- "node_modules/kind-of": {
- "version": "6.0.3",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz",
- "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==",
- "license": "MIT",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/levn": {
- "version": "0.4.1",
- "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz",
- "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "prelude-ls": "^1.2.1",
- "type-check": "~0.4.0"
- },
- "engines": {
- "node": ">= 0.8.0"
- }
- },
- "node_modules/lilconfig": {
- "version": "3.1.3",
- "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.3.tgz",
- "integrity": "sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==",
- "license": "MIT",
- "engines": {
- "node": ">=14"
- },
- "funding": {
- "url": "https://github.com/sponsors/antonk52"
- }
- },
- "node_modules/lines-and-columns": {
- "version": "1.2.4",
- "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz",
- "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==",
- "license": "MIT"
- },
- "node_modules/locate-path": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz",
- "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "p-locate": "^5.0.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "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": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz",
- "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==",
- "license": "MIT",
- "dependencies": {
- "js-tokens": "^3.0.0 || ^4.0.0"
- },
- "bin": {
- "loose-envify": "cli.js"
- }
- },
- "node_modules/lru-cache": {
- "version": "5.1.1",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz",
- "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "yallist": "^3.0.2"
- }
- },
- "node_modules/lucide-react": {
- "version": "0.447.0",
- "resolved": "https://registry.npmjs.org/lucide-react/-/lucide-react-0.447.0.tgz",
- "integrity": "sha512-SZ//hQmvi+kDKrNepArVkYK7/jfeZ5uFNEnYmd45RKZcbGD78KLnrcNXmgeg6m+xNHFvTG+CblszXCy4n6DN4w==",
- "license": "ISC",
- "peerDependencies": {
- "react": "^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0-rc"
- }
- },
- "node_modules/math-intrinsics": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz",
- "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==",
- "license": "MIT",
- "engines": {
- "node": ">= 0.4"
- }
- },
- "node_modules/merge2": {
- "version": "1.4.1",
- "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz",
- "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==",
- "license": "MIT",
- "engines": {
- "node": ">= 8"
- }
- },
- "node_modules/micromatch": {
- "version": "4.0.8",
- "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz",
- "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==",
- "license": "MIT",
- "dependencies": {
- "braces": "^3.0.3",
- "picomatch": "^2.3.1"
- },
- "engines": {
- "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",
- "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "brace-expansion": "^1.1.7"
- },
- "engines": {
- "node": "*"
- }
- },
- "node_modules/minipass": {
- "version": "7.1.2",
- "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz",
- "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==",
- "license": "ISC",
- "engines": {
- "node": ">=16 || 14 >=14.17"
- }
- },
- "node_modules/ms": {
- "version": "2.1.3",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
- "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/mz": {
- "version": "2.7.0",
- "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz",
- "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==",
- "license": "MIT",
- "dependencies": {
- "any-promise": "^1.0.0",
- "object-assign": "^4.0.1",
- "thenify-all": "^1.0.0"
- }
- },
- "node_modules/nanoid": {
- "version": "3.3.11",
- "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz",
- "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==",
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/ai"
- }
- ],
- "license": "MIT",
- "bin": {
- "nanoid": "bin/nanoid.cjs"
- },
- "engines": {
- "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
- }
- },
- "node_modules/natural-compare": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz",
- "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/node-releases": {
- "version": "2.0.19",
- "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.19.tgz",
- "integrity": "sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/normalize-path": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
- "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
- "license": "MIT",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/normalize-range": {
- "version": "0.1.2",
- "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz",
- "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/nth-check": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz",
- "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==",
- "license": "BSD-2-Clause",
- "dependencies": {
- "boolbase": "^1.0.0"
- },
- "funding": {
- "url": "https://github.com/fb55/nth-check?sponsor=1"
- }
- },
- "node_modules/object-assign": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
- "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==",
- "license": "MIT",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/object-hash": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz",
- "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==",
- "license": "MIT",
- "engines": {
- "node": ">= 6"
- }
- },
- "node_modules/object-inspect": {
- "version": "1.13.4",
- "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz",
- "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/object-keys": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz",
- "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">= 0.4"
- }
- },
- "node_modules/object.assign": {
- "version": "4.1.7",
- "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.7.tgz",
- "integrity": "sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "call-bind": "^1.0.8",
- "call-bound": "^1.0.3",
- "define-properties": "^1.2.1",
- "es-object-atoms": "^1.0.0",
- "has-symbols": "^1.1.0",
- "object-keys": "^1.1.1"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/object.entries": {
- "version": "1.1.9",
- "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.9.tgz",
- "integrity": "sha512-8u/hfXFRBD1O0hPUjioLhoWFHRmt6tKA4/vZPyckBr18l1KE9uHrFaFaUi8MDRTpi4uak2goyPTSNJLXX2k2Hw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "call-bind": "^1.0.8",
- "call-bound": "^1.0.4",
- "define-properties": "^1.2.1",
- "es-object-atoms": "^1.1.1"
- },
- "engines": {
- "node": ">= 0.4"
- }
- },
- "node_modules/object.fromentries": {
- "version": "2.0.8",
- "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.8.tgz",
- "integrity": "sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "call-bind": "^1.0.7",
- "define-properties": "^1.2.1",
- "es-abstract": "^1.23.2",
- "es-object-atoms": "^1.0.0"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/object.values": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.2.1.tgz",
- "integrity": "sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "call-bind": "^1.0.8",
- "call-bound": "^1.0.3",
- "define-properties": "^1.2.1",
- "es-object-atoms": "^1.0.0"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/option-validator": {
- "version": "2.0.6",
- "resolved": "https://registry.npmjs.org/option-validator/-/option-validator-2.0.6.tgz",
- "integrity": "sha512-tmZDan2LRIRQyhUGvkff68/O0R8UmF+Btmiiz0SmSw2ng3CfPZB9wJlIjHpe/MKUZqyIZkVIXCrwr1tIN+0Dzg==",
- "license": "MIT",
- "dependencies": {
- "kind-of": "^6.0.3"
- }
- },
- "node_modules/optionator": {
- "version": "0.9.4",
- "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz",
- "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "deep-is": "^0.1.3",
- "fast-levenshtein": "^2.0.6",
- "levn": "^0.4.1",
- "prelude-ls": "^1.2.1",
- "type-check": "^0.4.0",
- "word-wrap": "^1.2.5"
- },
- "engines": {
- "node": ">= 0.8.0"
- }
- },
- "node_modules/own-keys": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/own-keys/-/own-keys-1.0.1.tgz",
- "integrity": "sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "get-intrinsic": "^1.2.6",
- "object-keys": "^1.1.1",
- "safe-push-apply": "^1.0.0"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/p-limit": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz",
- "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "yocto-queue": "^0.1.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/p-locate": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz",
- "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "p-limit": "^3.0.2"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/package-json-from-dist": {
- "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==",
- "license": "BlueOak-1.0.0"
- },
- "node_modules/parent-module": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz",
- "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "callsites": "^3.0.0"
- },
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/parse5": {
- "version": "7.3.0",
- "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.3.0.tgz",
- "integrity": "sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==",
- "license": "MIT",
- "dependencies": {
- "entities": "^6.0.0"
- },
- "funding": {
- "url": "https://github.com/inikulin/parse5?sponsor=1"
- }
- },
- "node_modules/parse5-htmlparser2-tree-adapter": {
- "version": "7.1.0",
- "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-7.1.0.tgz",
- "integrity": "sha512-ruw5xyKs6lrpo9x9rCZqZZnIUntICjQAd0Wsmp396Ul9lN/h+ifgVV1x1gZHi8euej6wTfpqX8j+BFQxF0NS/g==",
- "license": "MIT",
- "dependencies": {
- "domhandler": "^5.0.3",
- "parse5": "^7.0.0"
- },
- "funding": {
- "url": "https://github.com/inikulin/parse5?sponsor=1"
- }
- },
- "node_modules/parse5-parser-stream": {
- "version": "7.1.2",
- "resolved": "https://registry.npmjs.org/parse5-parser-stream/-/parse5-parser-stream-7.1.2.tgz",
- "integrity": "sha512-JyeQc9iwFLn5TbvvqACIF/VXG6abODeB3Fwmv/TGdLk2LfbWkaySGY72at4+Ty7EkPZj854u4CrICqNk2qIbow==",
- "license": "MIT",
- "dependencies": {
- "parse5": "^7.0.0"
- },
- "funding": {
- "url": "https://github.com/inikulin/parse5?sponsor=1"
- }
- },
- "node_modules/parse5/node_modules/entities": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/entities/-/entities-6.0.1.tgz",
- "integrity": "sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==",
- "license": "BSD-2-Clause",
- "engines": {
- "node": ">=0.12"
- },
- "funding": {
- "url": "https://github.com/fb55/entities?sponsor=1"
- }
- },
- "node_modules/path-exists": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
- "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/path-key": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
- "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/path-parse": {
- "version": "1.0.7",
- "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
- "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
- "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==",
- "license": "BlueOak-1.0.0",
- "dependencies": {
- "lru-cache": "^10.2.0",
- "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0"
- },
- "engines": {
- "node": ">=16 || 14 >=14.18"
- },
- "funding": {
- "url": "https://github.com/sponsors/isaacs"
- }
- },
- "node_modules/path-scurry/node_modules/lru-cache": {
- "version": "10.4.3",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz",
- "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==",
- "license": "ISC"
- },
- "node_modules/picocolors": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz",
- "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==",
- "license": "ISC"
- },
- "node_modules/picomatch": {
- "version": "2.3.1",
- "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
- "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
- "license": "MIT",
- "engines": {
- "node": ">=8.6"
- },
- "funding": {
- "url": "https://github.com/sponsors/jonschlinkert"
- }
- },
- "node_modules/pify": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
- "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==",
- "license": "MIT",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/pirates": {
- "version": "4.0.7",
- "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.7.tgz",
- "integrity": "sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA==",
- "license": "MIT",
- "engines": {
- "node": ">= 6"
- }
- },
- "node_modules/possible-typed-array-names": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.1.0.tgz",
- "integrity": "sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">= 0.4"
- }
- },
- "node_modules/postcss": {
- "version": "8.5.6",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz",
- "integrity": "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==",
- "funding": [
- {
- "type": "opencollective",
- "url": "https://opencollective.com/postcss/"
- },
- {
- "type": "tidelift",
- "url": "https://tidelift.com/funding/github/npm/postcss"
- },
- {
- "type": "github",
- "url": "https://github.com/sponsors/ai"
- }
- ],
- "license": "MIT",
- "dependencies": {
- "nanoid": "^3.3.11",
- "picocolors": "^1.1.1",
- "source-map-js": "^1.2.1"
- },
- "engines": {
- "node": "^10 || ^12 || >=14"
- }
- },
- "node_modules/postcss-import": {
- "version": "15.1.0",
- "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-15.1.0.tgz",
- "integrity": "sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==",
- "license": "MIT",
- "dependencies": {
- "postcss-value-parser": "^4.0.0",
- "read-cache": "^1.0.0",
- "resolve": "^1.1.7"
- },
- "engines": {
- "node": ">=14.0.0"
- },
- "peerDependencies": {
- "postcss": "^8.0.0"
- }
- },
- "node_modules/postcss-import/node_modules/resolve": {
- "version": "1.22.10",
- "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz",
- "integrity": "sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==",
- "license": "MIT",
- "dependencies": {
- "is-core-module": "^2.16.0",
- "path-parse": "^1.0.7",
- "supports-preserve-symlinks-flag": "^1.0.0"
- },
- "bin": {
- "resolve": "bin/resolve"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/postcss-js": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-4.0.1.tgz",
- "integrity": "sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==",
- "license": "MIT",
- "dependencies": {
- "camelcase-css": "^2.0.1"
- },
- "engines": {
- "node": "^12 || ^14 || >= 16"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/postcss/"
- },
- "peerDependencies": {
- "postcss": "^8.4.21"
- }
- },
- "node_modules/postcss-load-config": {
- "version": "4.0.2",
- "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-4.0.2.tgz",
- "integrity": "sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==",
- "funding": [
- {
- "type": "opencollective",
- "url": "https://opencollective.com/postcss/"
- },
- {
- "type": "github",
- "url": "https://github.com/sponsors/ai"
- }
- ],
- "license": "MIT",
- "dependencies": {
- "lilconfig": "^3.0.0",
- "yaml": "^2.3.4"
- },
- "engines": {
- "node": ">= 14"
- },
- "peerDependencies": {
- "postcss": ">=8.0.9",
- "ts-node": ">=9.0.0"
- },
- "peerDependenciesMeta": {
- "postcss": {
- "optional": true
- },
- "ts-node": {
- "optional": true
- }
- }
- },
- "node_modules/postcss-nested": {
- "version": "6.2.0",
- "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-6.2.0.tgz",
- "integrity": "sha512-HQbt28KulC5AJzG+cZtj9kvKB93CFCdLvog1WFLf1D+xmMvPGlBstkpTEZfK5+AN9hfJocyBFCNiqyS48bpgzQ==",
- "funding": [
- {
- "type": "opencollective",
- "url": "https://opencollective.com/postcss/"
- },
- {
- "type": "github",
- "url": "https://github.com/sponsors/ai"
- }
- ],
- "license": "MIT",
- "dependencies": {
- "postcss-selector-parser": "^6.1.1"
- },
- "engines": {
- "node": ">=12.0"
- },
- "peerDependencies": {
- "postcss": "^8.2.14"
- }
- },
- "node_modules/postcss-selector-parser": {
- "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==",
- "license": "MIT",
- "dependencies": {
- "cssesc": "^3.0.0",
- "util-deprecate": "^1.0.2"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/postcss-value-parser": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz",
- "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==",
- "license": "MIT"
- },
- "node_modules/prelude-ls": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz",
- "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">= 0.8.0"
- }
- },
- "node_modules/prop-types": {
- "version": "15.8.1",
- "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz",
- "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==",
- "license": "MIT",
- "dependencies": {
- "loose-envify": "^1.4.0",
- "object-assign": "^4.1.1",
- "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",
- "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/queue-microtask": {
- "version": "1.2.3",
- "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
- "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==",
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/feross"
- },
- {
- "type": "patreon",
- "url": "https://www.patreon.com/feross"
- },
- {
- "type": "consulting",
- "url": "https://feross.org/support"
- }
- ],
- "license": "MIT"
- },
- "node_modules/react": {
- "version": "18.3.1",
- "resolved": "https://registry.npmjs.org/react/-/react-18.3.1.tgz",
- "integrity": "sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==",
- "license": "MIT",
- "dependencies": {
- "loose-envify": "^1.1.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/react-content-loader": {
- "version": "7.1.1",
- "resolved": "https://registry.npmjs.org/react-content-loader/-/react-content-loader-7.1.1.tgz",
- "integrity": "sha512-yNkqtd+15wXRLfDKZb5nTqDV2fPTG2kpUgeGRb+WBz43bU0j4DSGXETF0bnFr44fAoTPpm0Dya0WGdhpHSvtYA==",
- "license": "MIT",
- "engines": {
- "node": ">=10"
- },
- "peerDependencies": {
- "react": ">=16.0.0"
- }
- },
- "node_modules/react-dom": {
- "version": "18.3.1",
- "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz",
- "integrity": "sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==",
- "license": "MIT",
- "dependencies": {
- "loose-envify": "^1.1.0",
- "scheduler": "^0.23.2"
- },
- "peerDependencies": {
- "react": "^18.3.1"
- }
- },
- "node_modules/react-icons": {
- "version": "5.5.0",
- "resolved": "https://registry.npmjs.org/react-icons/-/react-icons-5.5.0.tgz",
- "integrity": "sha512-MEFcXdkP3dLo8uumGI5xN3lDFNsRtrjbOEKDLD7yv76v4wpnEq2Lt2qeHaQOr34I/wPN3s3+N08WkQ+CW37Xiw==",
- "license": "MIT",
- "peerDependencies": {
- "react": "*"
- }
- },
- "node_modules/react-is": {
- "version": "16.13.1",
- "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz",
- "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==",
- "license": "MIT"
- },
- "node_modules/react-lazy-load": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/react-lazy-load/-/react-lazy-load-4.0.1.tgz",
- "integrity": "sha512-TnXRr79X9rlC9UcmO6iyS28rOPHrgkHIP4+b8yZPfs1tw6k/Rp2DmFY8R20BqWR45ZWkpT+4dqV1f+yci+1ozg==",
- "license": "MIT",
- "peerDependencies": {
- "react": "^17.0.0 || ^18.0.0",
- "react-dom": "^17.0.0 || ^18.0.0"
- }
- },
- "node_modules/react-refresh": {
- "version": "0.17.0",
- "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.17.0.tgz",
- "integrity": "sha512-z6F7K9bV85EfseRCp2bzrpyQ0Gkw1uLoCel9XBVWPg/TjRj94SkJzUTGfOa4bs7iJvBWtQG0Wq7wnI0syw3EBQ==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/react-router": {
- "version": "6.30.1",
- "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.30.1.tgz",
- "integrity": "sha512-X1m21aEmxGXqENEPG3T6u0Th7g0aS4ZmoNynhbs+Cn+q+QGTLt+d5IQ2bHAXKzKcxGJjxACpVbnYQSCRcfxHlQ==",
- "license": "MIT",
- "dependencies": {
- "@remix-run/router": "1.23.0"
- },
- "engines": {
- "node": ">=14.0.0"
- },
- "peerDependencies": {
- "react": ">=16.8"
- }
- },
- "node_modules/react-router-dom": {
- "version": "6.30.1",
- "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.30.1.tgz",
- "integrity": "sha512-llKsgOkZdbPU1Eg3zK8lCn+sjD9wMRZZPuzmdWWX5SUs8OFkN5HnFVC0u5KMeMaC9aoancFI/KoLuKPqN+hxHw==",
- "license": "MIT",
- "dependencies": {
- "@remix-run/router": "1.23.0",
- "react-router": "6.30.1"
- },
- "engines": {
- "node": ">=14.0.0"
- },
- "peerDependencies": {
- "react": ">=16.8",
- "react-dom": ">=16.8"
- }
- },
- "node_modules/read-cache": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz",
- "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==",
- "license": "MIT",
- "dependencies": {
- "pify": "^2.3.0"
- }
- },
- "node_modules/readdirp": {
- "version": "3.6.0",
- "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
- "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
- "license": "MIT",
- "dependencies": {
- "picomatch": "^2.2.1"
- },
- "engines": {
- "node": ">=8.10.0"
- }
- },
- "node_modules/reflect.getprototypeof": {
- "version": "1.0.10",
- "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.10.tgz",
- "integrity": "sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "call-bind": "^1.0.8",
- "define-properties": "^1.2.1",
- "es-abstract": "^1.23.9",
- "es-errors": "^1.3.0",
- "es-object-atoms": "^1.0.0",
- "get-intrinsic": "^1.2.7",
- "get-proto": "^1.0.1",
- "which-builtin-type": "^1.2.1"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/regexp.prototype.flags": {
- "version": "1.5.4",
- "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.4.tgz",
- "integrity": "sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "call-bind": "^1.0.8",
- "define-properties": "^1.2.1",
- "es-errors": "^1.3.0",
- "get-proto": "^1.0.1",
- "gopd": "^1.2.0",
- "set-function-name": "^2.0.2"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/resolve": {
- "version": "2.0.0-next.5",
- "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.5.tgz",
- "integrity": "sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "is-core-module": "^2.13.0",
- "path-parse": "^1.0.7",
- "supports-preserve-symlinks-flag": "^1.0.0"
- },
- "bin": {
- "resolve": "bin/resolve"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/resolve-from": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz",
- "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/reusify": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz",
- "integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==",
- "license": "MIT",
- "engines": {
- "iojs": ">=1.0.0",
- "node": ">=0.10.0"
- }
- },
- "node_modules/rollup": {
- "version": "4.45.1",
- "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.45.1.tgz",
- "integrity": "sha512-4iya7Jb76fVpQyLoiVpzUrsjQ12r3dM7fIVz+4NwoYvZOShknRmiv+iu9CClZml5ZLGb0XMcYLutK6w9tgxHDw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@types/estree": "1.0.8"
- },
- "bin": {
- "rollup": "dist/bin/rollup"
- },
- "engines": {
- "node": ">=18.0.0",
- "npm": ">=8.0.0"
- },
- "optionalDependencies": {
- "@rollup/rollup-android-arm-eabi": "4.45.1",
- "@rollup/rollup-android-arm64": "4.45.1",
- "@rollup/rollup-darwin-arm64": "4.45.1",
- "@rollup/rollup-darwin-x64": "4.45.1",
- "@rollup/rollup-freebsd-arm64": "4.45.1",
- "@rollup/rollup-freebsd-x64": "4.45.1",
- "@rollup/rollup-linux-arm-gnueabihf": "4.45.1",
- "@rollup/rollup-linux-arm-musleabihf": "4.45.1",
- "@rollup/rollup-linux-arm64-gnu": "4.45.1",
- "@rollup/rollup-linux-arm64-musl": "4.45.1",
- "@rollup/rollup-linux-loongarch64-gnu": "4.45.1",
- "@rollup/rollup-linux-powerpc64le-gnu": "4.45.1",
- "@rollup/rollup-linux-riscv64-gnu": "4.45.1",
- "@rollup/rollup-linux-riscv64-musl": "4.45.1",
- "@rollup/rollup-linux-s390x-gnu": "4.45.1",
- "@rollup/rollup-linux-x64-gnu": "4.45.1",
- "@rollup/rollup-linux-x64-musl": "4.45.1",
- "@rollup/rollup-win32-arm64-msvc": "4.45.1",
- "@rollup/rollup-win32-ia32-msvc": "4.45.1",
- "@rollup/rollup-win32-x64-msvc": "4.45.1",
- "fsevents": "~2.3.2"
- }
- },
- "node_modules/run-parallel": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz",
- "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==",
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/feross"
- },
- {
- "type": "patreon",
- "url": "https://www.patreon.com/feross"
- },
- {
- "type": "consulting",
- "url": "https://feross.org/support"
- }
- ],
- "license": "MIT",
- "dependencies": {
- "queue-microtask": "^1.2.2"
- }
- },
- "node_modules/safe-array-concat": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.3.tgz",
- "integrity": "sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "call-bind": "^1.0.8",
- "call-bound": "^1.0.2",
- "get-intrinsic": "^1.2.6",
- "has-symbols": "^1.1.0",
- "isarray": "^2.0.5"
- },
- "engines": {
- "node": ">=0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/safe-push-apply": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/safe-push-apply/-/safe-push-apply-1.0.0.tgz",
- "integrity": "sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "es-errors": "^1.3.0",
- "isarray": "^2.0.5"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/safe-regex-test": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.1.0.tgz",
- "integrity": "sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "call-bound": "^1.0.2",
- "es-errors": "^1.3.0",
- "is-regex": "^1.2.1"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/safer-buffer": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
- "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
- "license": "MIT"
- },
- "node_modules/scheduler": {
- "version": "0.23.2",
- "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.2.tgz",
- "integrity": "sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==",
- "license": "MIT",
- "dependencies": {
- "loose-envify": "^1.1.0"
- }
- },
- "node_modules/semver": {
- "version": "6.3.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
- "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
- "dev": true,
- "license": "ISC",
- "bin": {
- "semver": "bin/semver.js"
- }
- },
- "node_modules/set-function-length": {
- "version": "1.2.2",
- "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz",
- "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "define-data-property": "^1.1.4",
- "es-errors": "^1.3.0",
- "function-bind": "^1.1.2",
- "get-intrinsic": "^1.2.4",
- "gopd": "^1.0.1",
- "has-property-descriptors": "^1.0.2"
- },
- "engines": {
- "node": ">= 0.4"
- }
- },
- "node_modules/set-function-name": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz",
- "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "define-data-property": "^1.1.4",
- "es-errors": "^1.3.0",
- "functions-have-names": "^1.2.3",
- "has-property-descriptors": "^1.0.2"
- },
- "engines": {
- "node": ">= 0.4"
- }
- },
- "node_modules/set-proto": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/set-proto/-/set-proto-1.0.0.tgz",
- "integrity": "sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "dunder-proto": "^1.0.1",
- "es-errors": "^1.3.0",
- "es-object-atoms": "^1.0.0"
- },
- "engines": {
- "node": ">= 0.4"
- }
- },
- "node_modules/shallowequal": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/shallowequal/-/shallowequal-1.1.0.tgz",
- "integrity": "sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==",
- "license": "MIT"
- },
- "node_modules/shebang-command": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
- "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
- "license": "MIT",
- "dependencies": {
- "shebang-regex": "^3.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/shebang-regex": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
- "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/side-channel": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz",
- "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "es-errors": "^1.3.0",
- "object-inspect": "^1.13.3",
- "side-channel-list": "^1.0.0",
- "side-channel-map": "^1.0.1",
- "side-channel-weakmap": "^1.0.2"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/side-channel-list": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz",
- "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "es-errors": "^1.3.0",
- "object-inspect": "^1.13.3"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/side-channel-map": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz",
- "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "call-bound": "^1.0.2",
- "es-errors": "^1.3.0",
- "get-intrinsic": "^1.2.5",
- "object-inspect": "^1.13.3"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/side-channel-weakmap": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz",
- "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "call-bound": "^1.0.2",
- "es-errors": "^1.3.0",
- "get-intrinsic": "^1.2.5",
- "object-inspect": "^1.13.3",
- "side-channel-map": "^1.0.1"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/signal-exit": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz",
- "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==",
- "license": "ISC",
- "engines": {
- "node": ">=14"
- },
- "funding": {
- "url": "https://github.com/sponsors/isaacs"
- }
- },
- "node_modules/source-map-js": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz",
- "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==",
- "license": "BSD-3-Clause",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/stop-iteration-iterator": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.1.0.tgz",
- "integrity": "sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "es-errors": "^1.3.0",
- "internal-slot": "^1.1.0"
- },
- "engines": {
- "node": ">= 0.4"
- }
- },
- "node_modules/string-width": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz",
- "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==",
- "license": "MIT",
- "dependencies": {
- "eastasianwidth": "^0.2.0",
- "emoji-regex": "^9.2.2",
- "strip-ansi": "^7.0.1"
- },
- "engines": {
- "node": ">=12"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/string-width-cjs": {
- "name": "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==",
- "license": "MIT",
- "dependencies": {
- "emoji-regex": "^8.0.0",
- "is-fullwidth-code-point": "^3.0.0",
- "strip-ansi": "^6.0.1"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/string-width-cjs/node_modules/ansi-regex": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
- "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/string-width-cjs/node_modules/emoji-regex": {
- "version": "8.0.0",
- "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
- "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
- "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==",
- "license": "MIT",
- "dependencies": {
- "ansi-regex": "^5.0.1"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/string.prototype.matchall": {
- "version": "4.0.12",
- "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.12.tgz",
- "integrity": "sha512-6CC9uyBL+/48dYizRf7H7VAYCMCNTBeM78x/VTUe9bFEaxBepPJDa1Ow99LqI/1yF7kuy7Q3cQsYMrcjGUcskA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "call-bind": "^1.0.8",
- "call-bound": "^1.0.3",
- "define-properties": "^1.2.1",
- "es-abstract": "^1.23.6",
- "es-errors": "^1.3.0",
- "es-object-atoms": "^1.0.0",
- "get-intrinsic": "^1.2.6",
- "gopd": "^1.2.0",
- "has-symbols": "^1.1.0",
- "internal-slot": "^1.1.0",
- "regexp.prototype.flags": "^1.5.3",
- "set-function-name": "^2.0.2",
- "side-channel": "^1.1.0"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/string.prototype.repeat": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/string.prototype.repeat/-/string.prototype.repeat-1.0.0.tgz",
- "integrity": "sha512-0u/TldDbKD8bFCQ/4f5+mNRrXwZ8hg2w7ZR8wa16e8z9XpePWl3eGEcUD0OXpEH/VJH/2G3gjUtR3ZOiBe2S/w==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "define-properties": "^1.1.3",
- "es-abstract": "^1.17.5"
- }
- },
- "node_modules/string.prototype.trim": {
- "version": "1.2.10",
- "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.10.tgz",
- "integrity": "sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "call-bind": "^1.0.8",
- "call-bound": "^1.0.2",
- "define-data-property": "^1.1.4",
- "define-properties": "^1.2.1",
- "es-abstract": "^1.23.5",
- "es-object-atoms": "^1.0.0",
- "has-property-descriptors": "^1.0.2"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/string.prototype.trimend": {
- "version": "1.0.9",
- "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.9.tgz",
- "integrity": "sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "call-bind": "^1.0.8",
- "call-bound": "^1.0.2",
- "define-properties": "^1.2.1",
- "es-object-atoms": "^1.0.0"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/string.prototype.trimstart": {
- "version": "1.0.8",
- "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz",
- "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "call-bind": "^1.0.7",
- "define-properties": "^1.2.1",
- "es-object-atoms": "^1.0.0"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/strip-ansi": {
- "version": "7.1.0",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz",
- "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==",
- "license": "MIT",
- "dependencies": {
- "ansi-regex": "^6.0.1"
- },
- "engines": {
- "node": ">=12"
- },
- "funding": {
- "url": "https://github.com/chalk/strip-ansi?sponsor=1"
- }
- },
- "node_modules/strip-ansi-cjs": {
- "name": "strip-ansi",
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
- "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
- "license": "MIT",
- "dependencies": {
- "ansi-regex": "^5.0.1"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/strip-ansi-cjs/node_modules/ansi-regex": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
- "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/strip-json-comments": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz",
- "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/styled-components": {
- "version": "6.1.19",
- "resolved": "https://registry.npmjs.org/styled-components/-/styled-components-6.1.19.tgz",
- "integrity": "sha512-1v/e3Dl1BknC37cXMhwGomhO8AkYmN41CqyX9xhUDxry1ns3BFQy2lLDRQXJRdVVWB9OHemv/53xaStimvWyuA==",
- "license": "MIT",
- "dependencies": {
- "@emotion/is-prop-valid": "1.2.2",
- "@emotion/unitless": "0.8.1",
- "@types/stylis": "4.2.5",
- "css-to-react-native": "3.2.0",
- "csstype": "3.1.3",
- "postcss": "8.4.49",
- "shallowequal": "1.1.0",
- "stylis": "4.3.2",
- "tslib": "2.6.2"
- },
- "engines": {
- "node": ">= 16"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/styled-components"
- },
- "peerDependencies": {
- "react": ">= 16.8.0",
- "react-dom": ">= 16.8.0"
- }
- },
- "node_modules/styled-components/node_modules/postcss": {
- "version": "8.4.49",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.49.tgz",
- "integrity": "sha512-OCVPnIObs4N29kxTjzLfUryOkvZEq+pf8jTF0lg8E7uETuWHA+v7j3c/xJmiqpX450191LlmZfUKkXxkTry7nA==",
- "funding": [
- {
- "type": "opencollective",
- "url": "https://opencollective.com/postcss/"
- },
- {
- "type": "tidelift",
- "url": "https://tidelift.com/funding/github/npm/postcss"
- },
- {
- "type": "github",
- "url": "https://github.com/sponsors/ai"
- }
- ],
- "license": "MIT",
- "dependencies": {
- "nanoid": "^3.3.7",
- "picocolors": "^1.1.1",
- "source-map-js": "^1.2.1"
- },
- "engines": {
- "node": "^10 || ^12 || >=14"
- }
- },
- "node_modules/stylis": {
- "version": "4.3.2",
- "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.3.2.tgz",
- "integrity": "sha512-bhtUjWd/z6ltJiQwg0dUfxEJ+W+jdqQd8TbWLWyeIJHlnsqmGLRFFd8e5mA0AZi/zx90smXRlN66YMTcaSFifg==",
- "license": "MIT"
- },
- "node_modules/sucrase": {
- "version": "3.35.0",
- "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.35.0.tgz",
- "integrity": "sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==",
- "license": "MIT",
- "dependencies": {
- "@jridgewell/gen-mapping": "^0.3.2",
- "commander": "^4.0.0",
- "glob": "^10.3.10",
- "lines-and-columns": "^1.1.6",
- "mz": "^2.7.0",
- "pirates": "^4.0.1",
- "ts-interface-checker": "^0.1.9"
- },
- "bin": {
- "sucrase": "bin/sucrase",
- "sucrase-node": "bin/sucrase-node"
- },
- "engines": {
- "node": ">=16 || 14 >=14.17"
- }
- },
- "node_modules/supports-color": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
- "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "has-flag": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/supports-preserve-symlinks-flag": {
- "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==",
- "license": "MIT",
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/swiper": {
- "version": "11.2.10",
- "resolved": "https://registry.npmjs.org/swiper/-/swiper-11.2.10.tgz",
- "integrity": "sha512-RMeVUUjTQH+6N3ckimK93oxz6Sn5la4aDlgPzB+rBrG/smPdCTicXyhxa+woIpopz+jewEloiEE3lKo1h9w2YQ==",
- "funding": [
- {
- "type": "patreon",
- "url": "https://www.patreon.com/swiperjs"
- },
- {
- "type": "open_collective",
- "url": "http://opencollective.com/swiper"
- }
- ],
- "license": "MIT",
- "engines": {
- "node": ">= 4.7.0"
- }
- },
- "node_modules/tailwind-merge": {
- "version": "2.6.0",
- "resolved": "https://registry.npmjs.org/tailwind-merge/-/tailwind-merge-2.6.0.tgz",
- "integrity": "sha512-P+Vu1qXfzediirmHOC3xKGAYeZtPcV9g76X+xg2FD4tYgR71ewMA35Y3sCz3zhiN/dwefRpJX0yBcgwi1fXNQA==",
- "license": "MIT",
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/dcastil"
- }
- },
- "node_modules/tailwindcss": {
- "version": "3.4.17",
- "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.17.tgz",
- "integrity": "sha512-w33E2aCvSDP0tW9RZuNXadXlkHXqFzSkQew/aIa2i/Sj8fThxwovwlXHSPXTbAHwEIhBFXAedUhP2tueAKP8Og==",
- "license": "MIT",
- "dependencies": {
- "@alloc/quick-lru": "^5.2.0",
- "arg": "^5.0.2",
- "chokidar": "^3.6.0",
- "didyoumean": "^1.2.2",
- "dlv": "^1.1.3",
- "fast-glob": "^3.3.2",
- "glob-parent": "^6.0.2",
- "is-glob": "^4.0.3",
- "jiti": "^1.21.6",
- "lilconfig": "^3.1.3",
- "micromatch": "^4.0.8",
- "normalize-path": "^3.0.0",
- "object-hash": "^3.0.0",
- "picocolors": "^1.1.1",
- "postcss": "^8.4.47",
- "postcss-import": "^15.1.0",
- "postcss-js": "^4.0.1",
- "postcss-load-config": "^4.0.2",
- "postcss-nested": "^6.2.0",
- "postcss-selector-parser": "^6.1.2",
- "resolve": "^1.22.8",
- "sucrase": "^3.35.0"
- },
- "bin": {
- "tailwind": "lib/cli.js",
- "tailwindcss": "lib/cli.js"
- },
- "engines": {
- "node": ">=14.0.0"
- }
- },
- "node_modules/tailwindcss-animate": {
- "version": "1.0.7",
- "resolved": "https://registry.npmjs.org/tailwindcss-animate/-/tailwindcss-animate-1.0.7.tgz",
- "integrity": "sha512-bl6mpH3T7I3UFxuvDEXLxy/VuFxBk5bbzplh7tXI68mwMokNYd1t9qPBHlnyTwfa4JGC4zP516I1hYYtQ/vspA==",
- "license": "MIT",
- "peerDependencies": {
- "tailwindcss": ">=3.0.0 || insiders"
- }
- },
- "node_modules/tailwindcss/node_modules/resolve": {
- "version": "1.22.10",
- "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz",
- "integrity": "sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==",
- "license": "MIT",
- "dependencies": {
- "is-core-module": "^2.16.0",
- "path-parse": "^1.0.7",
- "supports-preserve-symlinks-flag": "^1.0.0"
- },
- "bin": {
- "resolve": "bin/resolve"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/thenify": {
- "version": "3.3.1",
- "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz",
- "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==",
- "license": "MIT",
- "dependencies": {
- "any-promise": "^1.0.0"
- }
- },
- "node_modules/thenify-all": {
- "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==",
- "license": "MIT",
- "dependencies": {
- "thenify": ">= 3.1.0 < 4"
- },
- "engines": {
- "node": ">=0.8"
- }
- },
- "node_modules/to-regex-range": {
- "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==",
- "license": "MIT",
- "dependencies": {
- "is-number": "^7.0.0"
- },
- "engines": {
- "node": ">=8.0"
- }
- },
- "node_modules/ts-interface-checker": {
- "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==",
- "license": "Apache-2.0"
- },
- "node_modules/tslib": {
- "version": "2.6.2",
- "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz",
- "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==",
- "license": "0BSD"
- },
- "node_modules/type-check": {
- "version": "0.4.0",
- "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz",
- "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "prelude-ls": "^1.2.1"
- },
- "engines": {
- "node": ">= 0.8.0"
- }
- },
- "node_modules/typed-array-buffer": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.3.tgz",
- "integrity": "sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "call-bound": "^1.0.3",
- "es-errors": "^1.3.0",
- "is-typed-array": "^1.1.14"
- },
- "engines": {
- "node": ">= 0.4"
- }
- },
- "node_modules/typed-array-byte-length": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.3.tgz",
- "integrity": "sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "call-bind": "^1.0.8",
- "for-each": "^0.3.3",
- "gopd": "^1.2.0",
- "has-proto": "^1.2.0",
- "is-typed-array": "^1.1.14"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/typed-array-byte-offset": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.4.tgz",
- "integrity": "sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "available-typed-arrays": "^1.0.7",
- "call-bind": "^1.0.8",
- "for-each": "^0.3.3",
- "gopd": "^1.2.0",
- "has-proto": "^1.2.0",
- "is-typed-array": "^1.1.15",
- "reflect.getprototypeof": "^1.0.9"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/typed-array-length": {
- "version": "1.0.7",
- "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.7.tgz",
- "integrity": "sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "call-bind": "^1.0.7",
- "for-each": "^0.3.3",
- "gopd": "^1.0.1",
- "is-typed-array": "^1.1.13",
- "possible-typed-array-names": "^1.0.0",
- "reflect.getprototypeof": "^1.0.6"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/unbox-primitive": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.1.0.tgz",
- "integrity": "sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "call-bound": "^1.0.3",
- "has-bigints": "^1.0.2",
- "has-symbols": "^1.1.0",
- "which-boxed-primitive": "^1.1.1"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/undici": {
- "version": "7.12.0",
- "resolved": "https://registry.npmjs.org/undici/-/undici-7.12.0.tgz",
- "integrity": "sha512-GrKEsc3ughskmGA9jevVlIOPMiiAHJ4OFUtaAH+NhfTUSiZ1wMPIQqQvAJUrJspFXJt3EBWgpAeoHEDVT1IBug==",
- "license": "MIT",
- "engines": {
- "node": ">=20.18.1"
- }
- },
- "node_modules/update-browserslist-db": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.3.tgz",
- "integrity": "sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==",
- "dev": true,
- "funding": [
- {
- "type": "opencollective",
- "url": "https://opencollective.com/browserslist"
- },
- {
- "type": "tidelift",
- "url": "https://tidelift.com/funding/github/npm/browserslist"
- },
- {
- "type": "github",
- "url": "https://github.com/sponsors/ai"
- }
- ],
- "license": "MIT",
- "dependencies": {
- "escalade": "^3.2.0",
- "picocolors": "^1.1.1"
- },
- "bin": {
- "update-browserslist-db": "cli.js"
- },
- "peerDependencies": {
- "browserslist": ">= 4.21.0"
- }
- },
- "node_modules/uri-js": {
- "version": "4.4.1",
- "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz",
- "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==",
- "dev": true,
- "license": "BSD-2-Clause",
- "dependencies": {
- "punycode": "^2.1.0"
- }
- },
- "node_modules/util-deprecate": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
- "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==",
- "license": "MIT"
- },
- "node_modules/vite": {
- "version": "5.4.19",
- "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.19.tgz",
- "integrity": "sha512-qO3aKv3HoQC8QKiNSTuUM1l9o/XX3+c+VTgLHbJWHZGeTPVAg2XwazI9UWzoxjIJCGCV2zU60uqMzjeLZuULqA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "esbuild": "^0.21.3",
- "postcss": "^8.4.43",
- "rollup": "^4.20.0"
- },
- "bin": {
- "vite": "bin/vite.js"
- },
- "engines": {
- "node": "^18.0.0 || >=20.0.0"
- },
- "funding": {
- "url": "https://github.com/vitejs/vite?sponsor=1"
- },
- "optionalDependencies": {
- "fsevents": "~2.3.3"
- },
- "peerDependencies": {
- "@types/node": "^18.0.0 || >=20.0.0",
- "less": "*",
- "lightningcss": "^1.21.0",
- "sass": "*",
- "sass-embedded": "*",
- "stylus": "*",
- "sugarss": "*",
- "terser": "^5.4.0"
- },
- "peerDependenciesMeta": {
- "@types/node": {
- "optional": true
- },
- "less": {
- "optional": true
- },
- "lightningcss": {
- "optional": true
- },
- "sass": {
- "optional": true
- },
- "sass-embedded": {
- "optional": true
- },
- "stylus": {
- "optional": true
- },
- "sugarss": {
- "optional": true
- },
- "terser": {
- "optional": true
- }
- }
- },
- "node_modules/whatwg-encoding": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-3.1.1.tgz",
- "integrity": "sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==",
- "license": "MIT",
- "dependencies": {
- "iconv-lite": "0.6.3"
- },
- "engines": {
- "node": ">=18"
- }
- },
- "node_modules/whatwg-mimetype": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-4.0.0.tgz",
- "integrity": "sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==",
- "license": "MIT",
- "engines": {
- "node": ">=18"
- }
- },
- "node_modules/which": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
- "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
- "license": "ISC",
- "dependencies": {
- "isexe": "^2.0.0"
- },
- "bin": {
- "node-which": "bin/node-which"
- },
- "engines": {
- "node": ">= 8"
- }
- },
- "node_modules/which-boxed-primitive": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.1.1.tgz",
- "integrity": "sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "is-bigint": "^1.1.0",
- "is-boolean-object": "^1.2.1",
- "is-number-object": "^1.1.1",
- "is-string": "^1.1.1",
- "is-symbol": "^1.1.1"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/which-builtin-type": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.2.1.tgz",
- "integrity": "sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "call-bound": "^1.0.2",
- "function.prototype.name": "^1.1.6",
- "has-tostringtag": "^1.0.2",
- "is-async-function": "^2.0.0",
- "is-date-object": "^1.1.0",
- "is-finalizationregistry": "^1.1.0",
- "is-generator-function": "^1.0.10",
- "is-regex": "^1.2.1",
- "is-weakref": "^1.0.2",
- "isarray": "^2.0.5",
- "which-boxed-primitive": "^1.1.0",
- "which-collection": "^1.0.2",
- "which-typed-array": "^1.1.16"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/which-collection": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.2.tgz",
- "integrity": "sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "is-map": "^2.0.3",
- "is-set": "^2.0.3",
- "is-weakmap": "^2.0.2",
- "is-weakset": "^2.0.3"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/which-typed-array": {
- "version": "1.1.19",
- "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.19.tgz",
- "integrity": "sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "available-typed-arrays": "^1.0.7",
- "call-bind": "^1.0.8",
- "call-bound": "^1.0.4",
- "for-each": "^0.3.5",
- "get-proto": "^1.0.1",
- "gopd": "^1.2.0",
- "has-tostringtag": "^1.0.2"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/word-wrap": {
- "version": "1.2.5",
- "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz",
- "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/wrap-ansi": {
- "version": "8.1.0",
- "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz",
- "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==",
- "license": "MIT",
- "dependencies": {
- "ansi-styles": "^6.1.0",
- "string-width": "^5.0.1",
- "strip-ansi": "^7.0.1"
- },
- "engines": {
- "node": ">=12"
- },
- "funding": {
- "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
- }
- },
- "node_modules/wrap-ansi-cjs": {
- "name": "wrap-ansi",
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
- "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
- "license": "MIT",
- "dependencies": {
- "ansi-styles": "^4.0.0",
- "string-width": "^4.1.0",
- "strip-ansi": "^6.0.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
- }
- },
- "node_modules/wrap-ansi-cjs/node_modules/ansi-regex": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
- "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/wrap-ansi-cjs/node_modules/emoji-regex": {
- "version": "8.0.0",
- "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
- "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
- "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==",
- "license": "MIT",
- "dependencies": {
- "emoji-regex": "^8.0.0",
- "is-fullwidth-code-point": "^3.0.0",
- "strip-ansi": "^6.0.1"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/wrap-ansi-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==",
- "license": "MIT",
- "dependencies": {
- "ansi-regex": "^5.0.1"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/wrap-ansi/node_modules/ansi-styles": {
- "version": "6.2.1",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz",
- "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==",
- "license": "MIT",
- "engines": {
- "node": ">=12"
- },
- "funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
- }
- },
- "node_modules/yallist": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
- "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==",
- "dev": true,
- "license": "ISC"
- },
- "node_modules/yaml": {
- "version": "2.8.0",
- "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.8.0.tgz",
- "integrity": "sha512-4lLa/EcQCB0cJkyts+FpIRx5G/llPxfP6VQU5KByHEhLxY3IJCH0f0Hy1MHI8sClTvsIb8qwRJ6R/ZdlDJ/leQ==",
- "license": "ISC",
- "bin": {
- "yaml": "bin.mjs"
- },
- "engines": {
- "node": ">= 14.6"
- }
- },
- "node_modules/yocto-queue": {
- "version": "0.1.0",
- "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz",
- "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- }
- }
-}
diff --git a/package.json b/package.json
deleted file mode 100644
index 0abc694..0000000
--- a/package.json
+++ /dev/null
@@ -1,54 +0,0 @@
-{
- "name": "justanime",
- "private": true,
- "version": "0.0.0",
- "type": "module",
- "scripts": {
- "dev": "vite",
- "build": "vite build",
- "lint": "eslint .",
- "preview": "vite preview",
- "host": "vite --host"
- },
- "dependencies": {
- "@fortawesome/fontawesome-svg-core": "^6.6.0",
- "@fortawesome/free-brands-svg-icons": "^6.7.2",
- "@fortawesome/free-solid-svg-icons": "^6.6.0",
- "@fortawesome/react-fontawesome": "^0.2.2",
- "@radix-ui/react-icons": "^1.3.0",
- "artplayer": "^5.2.3",
- "artplayer-plugin-chapter": "^1.0.0",
- "artplayer-plugin-hls-control": "^1.0.1",
- "axios": "^1.7.7",
- "cheerio": "^1.0.0",
- "class-variance-authority": "^0.7.0",
- "clsx": "^2.1.1",
- "hls.js": "^1.5.17",
- "lucide-react": "^0.447.0",
- "react": "^18.3.1",
- "react-content-loader": "^7.0.2",
- "react-dom": "^18.3.1",
- "react-icons": "^5.3.0",
- "react-lazy-load": "^4.0.1",
- "react-router-dom": "^6.26.2",
- "styled-components": "^6.1.13",
- "swiper": "^11.2.5",
- "tailwind-merge": "^2.5.3",
- "tailwindcss-animate": "^1.0.7"
- },
- "devDependencies": {
- "@eslint/js": "^9.9.0",
- "@types/react": "^18.3.3",
- "@types/react-dom": "^18.3.0",
- "@vitejs/plugin-react": "^4.3.1",
- "autoprefixer": "^10.4.20",
- "eslint": "^9.9.0",
- "eslint-plugin-react": "^7.35.0",
- "eslint-plugin-react-hooks": "^5.1.0-rc.0",
- "eslint-plugin-react-refresh": "^0.4.9",
- "globals": "^15.9.0",
- "postcss": "^8.4.47",
- "tailwindcss": "^3.4.13",
- "vite": "^5.4.1"
- }
-}
diff --git a/postcss.config.js b/postcss.config.js
deleted file mode 100644
index 2e7af2b..0000000
--- a/postcss.config.js
+++ /dev/null
@@ -1,6 +0,0 @@
-export default {
- plugins: {
- tailwindcss: {},
- autoprefixer: {},
- },
-}
diff --git a/public/Favicon.png b/public/Favicon.png
deleted file mode 100644
index a7bbe4a..0000000
Binary files a/public/Favicon.png and /dev/null differ
diff --git a/public/Logo.png b/public/Logo.png
deleted file mode 100644
index ae75320..0000000
Binary files a/public/Logo.png and /dev/null differ
diff --git a/public/robots.txt b/public/robots.txt
deleted file mode 100644
index 1e85586..0000000
--- a/public/robots.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-User-Agent: *
-Allow: /
-
-Sitemap: https://zenime.site/sitemap.xml
\ No newline at end of file
diff --git a/public/sitemap.xml b/public/sitemap.xml
deleted file mode 100644
index 87923c4..0000000
--- a/public/sitemap.xml
+++ /dev/null
@@ -1,2430 +0,0 @@
-
-
-
- https://zenime.site/
- 2024-11-08T15:50:46+00:00
- 1.00
-
-
- https://zenime.site/top-upcoming
- 2024-11-08T15:50:46+00:00
- 0.80
-
-
- https://zenime.site/movie
- 2024-11-08T15:50:46+00:00
- 0.80
-
-
- https://zenime.site/tv
- 2024-11-08T15:50:46+00:00
- 0.80
-
-
- https://zenime.site/most-popular
- 2024-11-08T15:50:46+00:00
- 0.80
-
-
- https://zenime.site/top-airing
- 2024-11-08T15:50:46+00:00
- 0.80
-
-
-
- https://zenime.site/search?keyword=Dandadan
- 2024-11-08T15:50:46+00:00
- 0.80
-
-
- https://zenime.site/search?keyword=Blue%20Box
- 2024-11-08T15:50:46+00:00
- 0.80
-
-
- https://zenime.site/search?keyword=Haikyu!!%20Movie%3A%20Battle%20of%20the%20Garbage%20Dump
- 2024-11-08T15:50:46+00:00
- 0.80
-
-
- https://zenime.site/search?keyword=One%20Piece
- 2024-11-08T15:50:46+00:00
- 0.80
-
-
- https://zenime.site/search?keyword=Dragon%20Ball%20Daima
- 2024-11-08T15:50:46+00:00
- 0.80
-
-
- https://zenime.site/search?keyword=Solo%20Leveling
- 2024-11-08T15:50:46+00:00
- 0.80
-
-
- https://zenime.site/search?keyword=Re%3AZERO%20-Starting%20Life%20in%20Another%20World-%20Season%203
- 2024-11-08T15:50:46+00:00
- 0.80
-
-
- https://zenime.site/search?keyword=Attack%20on%20Titan
- 2024-11-08T15:50:46+00:00
- 0.80
-
-
- https://zenime.site/search?keyword=Bleach%3A%20Thousand-Year%20Blood%20War%20-%20The%20Conflict
- 2024-11-08T15:50:46+00:00
- 0.80
-
-
- https://zenime.site/search?keyword=My%20Hero%20Academia%20Season%207
- 2024-11-08T15:50:46+00:00
- 0.80
-
-
- https://zenime.site/basilisk-1307
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/subbed-anime
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/dubbed-anime
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/ova
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/ona
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/special
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/app-download
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/genre/action
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/genre/adventure
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/genre/cars
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/genre/comedy
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/genre/dementia
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/genre/demons
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/genre/drama
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/genre/ecchi
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/genre/fantasy
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/genre/game
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/genre/harem
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/genre/historical
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/genre/horror
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/genre/isekai
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/genre/josei
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/genre/kids
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/genre/magic
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/genre/marial-arts
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/genre/mecha
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/genre/military
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/genre/music
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/genre/mystery
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/genre/parody
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/genre/police
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/genre/psychological
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/genre/romance
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/genre/samurai
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/genre/school
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/genre/sci-fi
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/genre/seinen
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/genre/shoujo
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/genre/shoujo-ai
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/genre/shounen
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/genre/shounen-ai
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/genre/slice-of-life
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/genre/space
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/genre/sports
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/genre/super-power
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/genre/supernatural
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/genre/thriller
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/genre/vampire
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/filter
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/watch/ranma-1-2-19335
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/ranma-1-2-19335
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/watch/the-elusive-samurai-19233
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/the-elusive-samurai-19233
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/watch/no-longer-allowed-in-another-world-19247
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/no-longer-allowed-in-another-world-19247
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/watch/why-does-nobody-remember-me-in-this-world-19240
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/why-does-nobody-remember-me-in-this-world-19240
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/watch/one-piece-100
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/one-piece-100
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/watch/the-strongest-magician-in-the-demon-lords-army-was-a-human-19238
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/the-strongest-magician-in-the-demon-lords-army-was-a-human-19238
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/watch/pseudo-harem-19246
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/pseudo-harem-19246
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/watch/demon-slayer-kimetsu-no-yaiba-hashira-training-arc-19107
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/demon-slayer-kimetsu-no-yaiba-hashira-training-arc-19107
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/watch/wind-breaker-19136
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/wind-breaker-19136
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/watch/bleach-806
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/bleach-806
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/dandadan-19319
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/blue-lock-season-2-19318
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/blue-box-19326
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/bleach-thousand-year-blood-war-the-conflict-19322
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/rurouni-kenshin-kyoto-disturbance-19340
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/rezero-starting-life-in-another-world-season-3-19301
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/my-star-season-2-19256
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/good-bye-dragon-life-19347
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/case-closed-323
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/naruto-shippuden-355
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/jujutsu-kaisen-2nd-season-18413
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/black-clover-2404
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/chainsaw-man-17406
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/jujutsu-kaisen-tv-534
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/demon-slayer-kimetsu-no-yaiba-swordsmith-village-arc-18056
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/most-favorite
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/look-back-19083
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/i-parry-everything-19229
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/high-card-the-flowers-bloom-19410
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/jellyfish-cant-swim-in-the-night-19124
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/level-1-demon-lord-and-one-room-hero-18465
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/completed
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/recently-updated
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/watch/hamidashi-creative-19368?w=latest
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/hamidashi-creative-19368
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/watch/25-dimensional-seduction-19245?w=latest
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/25-dimensional-seduction-19245
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/watch/another-journey-to-the-west-19402?w=latest
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/another-journey-to-the-west-19402
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/watch/rurouni-kenshin-kyoto-disturbance-19340?w=latest
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/watch/trillion-game-19362?w=latest
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/trillion-game-19362
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/watch/good-bye-dragon-life-19347?w=latest
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/watch/365-days-to-the-wedding-19332?w=latest
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/365-days-to-the-wedding-19332
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/watch/mechanical-arms-19354?w=latest
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/mechanical-arms-19354
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/watch/look-back-19083?w=latest
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/watch/dandadan-19319?w=latest
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/watch/loner-life-in-another-world-19337?w=latest
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/loner-life-in-another-world-19337
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/watch/kinoko-inu-19373?w=latest
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/kinoko-inu-19373
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/recently-added
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/watch/look-back-19083
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/watch/i-parry-everything-19229
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/watch/high-card-the-flowers-bloom-19410
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/watch/jellyfish-cant-swim-in-the-night-19124
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/watch/level-1-demon-lord-and-one-room-hero-18465
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/watch/future-folktales-8383
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/future-folktales-8383
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/watch/mission-yozakura-family-19133
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/mission-yozakura-family-19133
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/watch/da-shen-xian-17405
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/da-shen-xian-17405
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/watch/da-shen-xian-17526
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/da-shen-xian-17526
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/watch/crayon-shin-chan-movie-31-chounouryoku-daikessen-tobe-tobe-temakizushi-18427
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/crayon-shin-chan-movie-31-chounouryoku-daikessen-tobe-tobe-temakizushi-18427
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/watch/crayon-shin-chan-movie-30-mononoke-ninja-chinpuuden-19408
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/crayon-shin-chan-movie-30-mononoke-ninja-chinpuuden-19408
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/watch/cardfight-vanguard-divinez-season-2-19206
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/cardfight-vanguard-divinez-season-2-19206
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/rakshasa-street-4th-season-19411
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/murder-mystery-of-the-dead-19405
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/kagaku-x-bouken-survival-19376
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/genjitsu-no-yohane-sunshine-in-the-mirror-movie-19394
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/give-it-all-19393
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/solo-leveling-reawakening-19392
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/attack-on-titan-the-last-attack-19391
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/gintama-on-theater-2d-kintama-hen-19389
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/beastars-final-season-19385
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/pinkfong-gwa-hogi-sae-chingu-ninimo-19384
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/pochaazu-19383
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/kumarba-season-2-19382
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/is-it-wrong-to-try-to-pick-up-girls-in-a-dungeon-v-19323
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/haikyu-movie-battle-of-the-garbage-dump-18922
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/my-hero-academia-season-7-19146
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/dragon-ball-daima-19328
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/az-list
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/az-list/other
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/az-list/0-9
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/az-list/A
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/az-list/B
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/az-list/C
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/az-list/D
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/az-list/E
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/az-list/F
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/az-list/G
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/az-list/H
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/az-list/I
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/az-list/J
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/az-list/K
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/az-list/L
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/az-list/M
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/az-list/N
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/az-list/O
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/az-list/P
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/az-list/Q
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/az-list/R
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/az-list/S
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/az-list/T
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/az-list/U
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/az-list/V
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/az-list/W
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/az-list/X
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/az-list/Y
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/az-list/Z
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/spy-x-family-code-white-19291
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/be-forever-yamato-rebel-3199-19192
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/idolish7-movie-live-4bit-beyond-the-period-19176
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/blue-lock-episode-nagi-19085
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/my-oni-girl-19076
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/kuramerukagari-19075
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/rascal-does-not-dream-of-a-sister-venturing-out-18934
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/dead-dead-demons-dededede-destruction-18925
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/oomuro-ke-dear-sisters-18916
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/ya-boy-kongming-road-to-summer-sonia-18913
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/mobile-suit-gundam-seed-freedom-18910
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/psycho-pass-movie-providence-18715
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/white-snake-2-the-tribulation-of-the-green-snake-18682
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/detective-conan-movie-26-black-iron-submarine-18655
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/my-hero-academia-ua-heroes-battle-18629
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/digimon-adventure-02-movie-18562
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/the-imaginary-18561
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/i-am-what-i-am-18555
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/the-summer-18553
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/boonie-bears-back-to-earth-18549
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/boonie-bears-the-wild-life-18548
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/free-movie-5-the-final-stroke-kouhen-18504
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/maboroshi-18434
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/sound-euphonium-ensemble-contest-arc-18433
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/kaina-of-the-great-snow-sea-star-sage-18432
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/resident-evil-death-island-18429
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/detective-conan-movie-the-story-of-haibara-ai-black-iron-mystery-train-18412
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/tsurune-movie-hajimari-no-issha-18411
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/backflip-the-movie-18405
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/mobile-suit-gundam-cucuruz-doans-island-18400
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/movie?page=2
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/movie?page=3
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/movie?page=32
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/one-piece-log-fish-man-island-saga-19404
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/tower-of-god-season-2-workshop-battle-19400
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/punirunes-2-19381
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/okaimono-panda-19379
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/asatir-2-mirai-no-mukashi-banashi-19378
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/neko-ni-tensei-shita-ojisan-19375
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/hyakushou-kizoku-2nd-season-19374
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/puniru-is-a-kawaii-slime-19372
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/tonbo-season-2-19370
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/the-idolm-at-ster-shiny-colors-2nd-season-19369
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/a-herbivorous-dragon-of-5000-years-gets-unfairly-villainized-2nd-season-19367
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/a-story-of-a-girl-that-was-unable-to-become-a-mage-19366
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/the-prince-of-tennis-u-17-world-cup-semifinal-19365
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/kamierabi-godapp-season-2-19364
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/negative-positive-angler-19363
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/haigakura-19361
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/acro-trip-19360
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/a-terrified-teacher-at-ghoul-school-19359
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/touhai-ura-rate-mahjong-touhai-roku-19358
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/magilumiere-co-ltd-19357
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/let-this-grieving-soul-retire-19356
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/how-i-attended-an-all-guys-mixer-19355
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/the-most-notorious-talker-runs-the-worlds-greatest-clan-19353
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/love-live-superstar-3rd-season-19352
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/about-the-movement-of-the-earth-19351
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/blue-wolves-of-mibu-19350
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/demon-lord-retry-r-19349
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/nina-the-starry-bride-19348
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/after-school-hanako-kun-part-2-19346
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/tv?page=2
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/tv?page=3
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/tv?page=113
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/boruto-naruto-next-generations-8143
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/naruto-677
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/spy-x-family-17977
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/solo-leveling-18718
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/hunter-x-hunter-2
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/blue-lock-17889
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/demon-slayer-entertainment-district-arc-17483
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/demon-slayer-kimetsu-no-yaiba-47
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/attack-on-titan-112
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/my-hero-academia-season-6-18154
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/hells-paradise-18332
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/dragon-ball-z-325
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/the-eminence-in-shadow-17473
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/dragon-ball-super-1692
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/attack-on-titan-final-season-part-2-17753
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/death-note-60
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/mashle-magic-and-muscles-18339
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/attack-on-titan-season-3-85
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/i-got-a-cheat-skill-in-another-world-and-became-unrivaled-in-the-real-world-too-18343
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/dragon-ball-509
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/attack-on-titan-final-season-part-1-15548
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/classroom-of-the-elite-2nd-season-18076
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/fairy-tail-930
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/my-hero-academia-5th-season-15666
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/bleach-thousandyear-blood-war-the-separation-18420
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/my-star-18330
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/vinland-saga-2nd-season-18239
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/that-time-i-got-reincarnated-as-a-slime-season-3-19109
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/jujutsu-kaisen-0-movie-17763
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/most-popular?page=2
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/most-popular?page=3
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/most-popular?page=50
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/fairy-tail-100-years-quest-19253
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/super-dragon-ball-heroes-9688
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/pokemon-horizons-the-series-18397
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/seirei-gensouki-spirit-chronicles-season-2-19320
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/the-healer-who-was-banished-from-his-party-is-in-fact-the-strongest-19345
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/shangri-la-frontier-season-2-19324
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/as-a-reincarnated-aristocrat-ill-use-my-appraisal-skill-to-rise-in-the-world-season-2-19329
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/arifureta-from-commonplace-to-worlds-strongest-season-3-19321
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/super-dragon-ball-heroes-big-bang-mission-17970
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/yakuza-fiance-19336
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/battle-through-the-heavens-5th-season-18119
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/ill-become-a-villainess-who-goes-down-in-history-19334
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/demon-lord-2099-19339
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/you-are-ms-servant-19331
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/shin-chan-1058
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/the-do-over-damsel-conquers-the-dragon-emperor-19341
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/tying-the-knot-with-an-amagami-sister-19338
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/beyblade-x-18632
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/soul-land-2-peerless-tang-sect-18416
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/swallowed-star-2nd-season-18018
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/top-airing?page=2
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/top-airing?page=3
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/top-airing?page=10
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/watch/dandadan-19319
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/dandadan-19319
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/watch/blue-giant-18260
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/blue-giant-18260
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/watch/blue-gender-3372
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/blue-gender-3372
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/watch/blue-reflection-17485
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/blue-reflection-17485
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/watch/blue-box-19326
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/blue-box-19326
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/watch/blue-period-17427
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/blue-period-17427
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/watch/blue-lock-17889
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/blue-lock-17889
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/watch/blue-dragon-6179
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/blue-dragon-6179
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/watch/blue-seed-3431
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/blue-seed-3431
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/watch/grand-blue-dreaming-139
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/grand-blue-dreaming-139
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/watch/perfect-blue-127
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/perfect-blue-127
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/watch/blue-literature-893
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/blue-literature-893
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/watch/blue-wolves-of-mibu-19350
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/blue-wolves-of-mibu-19350
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/watch/blue-seed-beyond-6048
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/blue-seed-beyond-6048
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/watch/the-blue-orchestra-18359
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/the-blue-orchestra-18359
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/watch/bb-fish-10438
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/bb-fish-10438
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/watch/sweet-blue-flowers-2862
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/sweet-blue-flowers-2862
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/watch/armed-blue-gunvolt-8786
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/armed-blue-gunvolt-8786
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/watch/blue-seed-omake-4193
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/blue-seed-omake-4193
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/watch/blue-exorcist-1198
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/blue-exorcist-1198
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/watch/blue-drop-4694
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/blue-drop-4694
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/watch/blue-blink-4540
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/blue-blink-4540
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/watch/sky-blue-3412
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/sky-blue-3412
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/watch/ginga-no-uo-ursa-minor-blue-7064
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/ginga-no-uo-ursa-minor-blue-7064
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/watch/blue-dragon-the-seven-dragons-of-the-heavens-5453
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/blue-dragon-the-seven-dragons-of-the-heavens-5453
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/watch/blue-lock-season-2-19318
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/blue-lock-season-2-19318
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/watch/aoki-honoo-10273
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/aoki-honoo-10273
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/watch/801-tts-airbats-5741
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/801-tts-airbats-5741
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/watch/ao-no-exorcist-kyoto-fujouou-hen-ova-2896
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/ao-no-exorcist-kyoto-fujouou-hen-ova-2896
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/watch/blue-archive-the-animation-19125
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/blue-archive-the-animation-19125
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/watch/blue-lock-episode-nagi-19085
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/blue-lock-episode-nagi-19085
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/watch/world-war-blue-8602
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/world-war-blue-8602
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/watch/her-blue-sky-1418
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/her-blue-sky-1418
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/watch/blue-legend-shoot-1822
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/blue-legend-shoot-1822
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/watch/blue-legend-shoot-4518
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/blue-legend-shoot-4518
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/watch/combat-mecha-xabungle-2768
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/combat-mecha-xabungle-2768
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/watch/blue-exorcist-kyoto-saga-1628
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/blue-exorcist-kyoto-saga-1628
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/search?keyword=Blue%20Box&page=2
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/search?keyword=Blue%20Box&page=3
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/watch/haikyu-movie-battle-of-the-garbage-dump-18922
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/haikyu-movie-battle-of-the-garbage-dump-18922
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/watch/knights-of-the-zodiac-saint-seiya-battle-for-sanctuary-18135
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/knights-of-the-zodiac-saint-seiya-battle-for-sanctuary-18135
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/watch/persona-3-the-movie-1-spring-of-birth-1244
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/persona-3-the-movie-1-spring-of-birth-1244
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/watch/persona-3-the-movie-4-winter-of-rebirth-500
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/persona-3-the-movie-4-winter-of-rebirth-500
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/watch/haikyu-76
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/haikyu-76
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/watch/ex-driver-the-movie-5019
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/ex-driver-the-movie-5019
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/watch/dirty-pair-project-eden-3340
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/dirty-pair-project-eden-3340
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/watch/the-last-naruto-the-movie-882
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/the-last-naruto-the-movie-882
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/watch/boruto-naruto-the-movie-1391
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/boruto-naruto-the-movie-1391
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/watch/love-live-the-school-idol-movie-572
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/love-live-the-school-idol-movie-572
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/watch/banner-of-the-stars-945
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/banner-of-the-stars-945
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/watch/recycle-of-the-penguindrum-17796
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/recycle-of-the-penguindrum-17796
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/watch/haikyu-2nd-season-29
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/haikyu-2nd-season-29
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/watch/haikyu-3rd-season-18
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/haikyu-3rd-season-18
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/watch/my-hero-academia-the-movie-3-world-heroes-mission-17334
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/my-hero-academia-the-movie-3-world-heroes-mission-17334
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/watch/naruto-shippuuden-movie-6-road-to-ninja-1066
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/naruto-shippuuden-movie-6-road-to-ninja-1066
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/watch/persona-3-the-movie-3-falling-down-1230
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/persona-3-the-movie-3-falling-down-1230
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/watch/love-live-sunshine-the-school-idol-movie-over-the-rainbow-1211
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/love-live-sunshine-the-school-idol-movie-over-the-rainbow-1211
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/watch/banner-of-the-stars-ii-753
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/banner-of-the-stars-ii-753
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/watch/black-butler-book-of-the-atlantic-224
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/black-butler-book-of-the-atlantic-224
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/watch/magi-the-labyrinth-of-magic-425
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/magi-the-labyrinth-of-magic-425
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/watch/magi-the-kingdom-of-magic-208
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/magi-the-kingdom-of-magic-208
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/watch/patlabor-the-movie-1464
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/patlabor-the-movie-1464
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/watch/persona-3-the-movie-2-midsummer-knights-dream-1088
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/persona-3-the-movie-2-midsummer-knights-dream-1088
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/watch/my-hero-academia-the-movie-2-heroes-rising-383
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/my-hero-academia-the-movie-2-heroes-rising-383
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/watch/battle-of-clay-10620
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/battle-of-clay-10620
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/watch/tales-of-luminaria-the-fateful-crossroad-17962
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/tales-of-luminaria-the-fateful-crossroad-17962
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/watch/growlanser-iv-wayfarer-of-time-8906
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/growlanser-iv-wayfarer-of-time-8906
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/watch/blackfox-4434
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/blackfox-4434
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/watch/mobile-police-patlabor-2-the-movie-696
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/mobile-police-patlabor-2-the-movie-696
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/watch/garouden-the-way-of-the-lone-wolf-19165
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/garouden-the-way-of-the-lone-wolf-19165
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/watch/saint-seiya-the-movie-evil-goddess-eris-4181
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/saint-seiya-the-movie-evil-goddess-eris-4181
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/watch/kabaneri-of-the-iron-fortress-the-battle-of-unato-933
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/kabaneri-of-the-iron-fortress-the-battle-of-unato-933
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/watch/saint-seiya-knights-of-the-zodiac-battle-for-sanctuary-part-2-19090
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/saint-seiya-knights-of-the-zodiac-battle-for-sanctuary-part-2-19090
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/watch/soul-hunter-3019
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/soul-hunter-3019
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/watch/highschool-of-the-dead-drifters-of-the-dead-5101
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/highschool-of-the-dead-drifters-of-the-dead-5101
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/search?keyword=Haikyu!!%20Movie:%20Battle%20of%20the%20Garbage%20Dump&page=2
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/search?keyword=Haikyu!!%20Movie:%20Battle%20of%20the%20Garbage%20Dump&page=3
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/search?keyword=Haikyu!!%20Movie:%20Battle%20of%20the%20Garbage%20Dump&page=76
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/watch/one-piece-movie-1-3096
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/one-piece-movie-1-3096
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/one-piece-100
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/watch/one-piece-fan-letter-19406
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/one-piece-fan-letter-19406
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/watch/one-piece-film-red-18236
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/one-piece-film-red-18236
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/watch/one-piece-the-movie-13-film-gold-550
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/one-piece-the-movie-13-film-gold-550
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/watch/one-room-9215
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/one-room-9215
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/watch/one-room-second-season-7392
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/one-room-second-season-7392
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/watch/one-room-third-season-6959
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/one-room-third-season-6959
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/watch/one-piece-episode-of-skypiea-3097
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/one-piece-episode-of-skypiea-3097
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/watch/one-piece-log-fish-man-island-saga-19404
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/one-piece-log-fish-man-island-saga-19404
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
- https://zenime.site/watch/one-piece-3d-gekisou-trap-coaster-3400
- 2024-11-08T15:50:46+00:00
- 0.64
-
-
-
-
\ No newline at end of file
diff --git a/public/splash.jpg b/public/splash.jpg
deleted file mode 100644
index 12b0bc5..0000000
Binary files a/public/splash.jpg and /dev/null differ
diff --git a/src/App.css b/src/App.css
deleted file mode 100644
index d608b5b..0000000
--- a/src/App.css
+++ /dev/null
@@ -1,27 +0,0 @@
-* {
- margin: 0;
- padding: 0;
- box-sizing: border-box;
-}
-html,
-body,
-#root {
- margin: 0;
- padding: 0;
-}
-
-.app-container {
- display: flex;
- flex-direction: column;
- min-height: 100vh;
- max-width: 2048px;
- margin-inline: auto;
-}
-.content {
- width: 100%;
- flex-grow: 1;
-}
-
-footer {
- margin-top: auto;
-}
diff --git a/src/App.jsx b/src/App.jsx
deleted file mode 100644
index 65102a4..0000000
--- a/src/App.jsx
+++ /dev/null
@@ -1,73 +0,0 @@
-import { useLocation } from "react-router-dom";
-import { useEffect } from "react";
-import { Routes, Route } from "react-router-dom";
-import { HomeInfoProvider } from "./context/HomeInfoContext";
-import Home from "./pages/Home/Home";
-import AnimeInfo from "./pages/animeInfo/AnimeInfo";
-import Navbar from "./components/navbar/Navbar";
-import Footer from "./components/footer/Footer";
-import Error from "./components/error/Error";
-import Category from "./pages/category/Category";
-import AtoZ from "./pages/a2z/AtoZ";
-import { azRoute, categoryRoutes } from "./utils/category.utils";
-import "./App.css";
-import Search from "./pages/search/Search";
-import Watch from "./pages/watch/Watch";
-import Producer from "./components/producer/Producer";
-import SplashScreen from "./components/splashscreen/SplashScreen";
-
-function App() {
- const location = useLocation();
-
- // Scroll to top on location change
- useEffect(() => {
- window.scrollTo(0, 0);
- }, [location]);
-
- // Check if the current route is for the splash screen
- const isSplashScreen = location.pathname === "/";
-
- return (
-
-
-
- {!isSplashScreen && }
-
- } />
- } />
- } />
- } />
- } />
- } />
- } />
- {/* Render category routes */}
- {categoryRoutes.map((path) => (
-
- }
- />
- ))}
- {/* Render A to Z routes */}
- {azRoute.map((path) => (
- }
- />
- ))}
- } />
- } />
- {/* Catch-all route for 404 */}
- } />
-
- {!isSplashScreen && }
-
-
-
- );
-}
-
-export default App;
diff --git a/src/components/Loader/AnimeInfo.loader.jsx b/src/components/Loader/AnimeInfo.loader.jsx
deleted file mode 100644
index 3a20c22..0000000
--- a/src/components/Loader/AnimeInfo.loader.jsx
+++ /dev/null
@@ -1,58 +0,0 @@
-import { Skeleton } from "@/src/components/ui/Skeleton/Skeleton";
-import CategoryCardLoader from "./CategoryCard.loader";
-import SidecardLoader from "./Sidecard.loader";
-
-const SkeletonItems = ({ count, className }) => (
- [...Array(count)].map((_, index) => )
-);
-
-function AnimeInfoLoader() {
- return (
- <>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- >
- );
-}
-export default AnimeInfoLoader;
diff --git a/src/components/Loader/AtoZ.loader.jsx b/src/components/Loader/AtoZ.loader.jsx
deleted file mode 100644
index 8c9ba62..0000000
--- a/src/components/Loader/AtoZ.loader.jsx
+++ /dev/null
@@ -1,26 +0,0 @@
-import { Skeleton } from "../ui/Skeleton/Skeleton";
-import CategoryCardLoader from "./CategoryCard.loader";
-
-const SkeletonItems = ({ count, className }) => (
- [...Array(count)].map((_, index) => )
-);
-
-function AtoZLoader() {
- return (
-
- );
-}
-
-export default AtoZLoader;
diff --git a/src/components/Loader/Cart.loader.jsx b/src/components/Loader/Cart.loader.jsx
deleted file mode 100644
index 2467415..0000000
--- a/src/components/Loader/Cart.loader.jsx
+++ /dev/null
@@ -1,27 +0,0 @@
-import { Skeleton } from "../ui/Skeleton/Skeleton"
-const SkeletonItems = ({ count, className }) => (
- [...Array(count)].map((_, index) => )
-);
-function CartLoader() {
- return (
-
-
-
- {[...Array(5)].map((item, index) => (
-
- ))}
-
-
-
- )
-}
-
-export default CartLoader
\ No newline at end of file
diff --git a/src/components/Loader/Category.loader.jsx b/src/components/Loader/Category.loader.jsx
deleted file mode 100644
index 45a6b21..0000000
--- a/src/components/Loader/Category.loader.jsx
+++ /dev/null
@@ -1,23 +0,0 @@
-import { Skeleton } from "../ui/Skeleton/Skeleton"
-import CategoryCardLoader from "./CategoryCard.loader"
-import SidecardLoader from "./Sidecard.loader"
-
-function CategoryLoader() {
- return (
-
- )
-}
-
-export default CategoryLoader
\ No newline at end of file
diff --git a/src/components/Loader/CategoryCard.loader.jsx b/src/components/Loader/CategoryCard.loader.jsx
deleted file mode 100644
index c170069..0000000
--- a/src/components/Loader/CategoryCard.loader.jsx
+++ /dev/null
@@ -1,35 +0,0 @@
-import { Skeleton } from "../ui/Skeleton/Skeleton";
-
-function CategoryCardLoader({ className, showLabelSkeleton = true }) {
- return (
-
- {showLabelSkeleton && (
-
- )}
-
- {[...Array(12)].map((_, index) => (
-
- ))}
-
-
- );
-}
-
-export default CategoryCardLoader;
diff --git a/src/components/Loader/Home.loader.jsx b/src/components/Loader/Home.loader.jsx
deleted file mode 100644
index 21f8491..0000000
--- a/src/components/Loader/Home.loader.jsx
+++ /dev/null
@@ -1,32 +0,0 @@
-import CartLoader from "./Cart.loader";
-import CategoryCardLoader from "./CategoryCard.loader";
-import SidecardLoader from "./Sidecard.loader";
-import SpotlightLoader from "./Spotlight.loader";
-import Trendingloader from "./Trending.loader";
-function HomeLoader() {
- return (
-
- );
-}
-
-export default HomeLoader;
diff --git a/src/components/Loader/Loader.jsx b/src/components/Loader/Loader.jsx
deleted file mode 100644
index e6a7886..0000000
--- a/src/components/Loader/Loader.jsx
+++ /dev/null
@@ -1,24 +0,0 @@
-import AnimeInfoLoader from "./AnimeInfo.loader";
-import HomeLoader from "./Home.loader";
-import CategoryLoader from "./Category.loader";
-import AtoZLoader from "./AtoZ.loader";
-import ProducerLoader from "./Producer.loader";
-
-const Loader = ({ type }) => {
- switch (type) {
- case "home":
- return ;
- case "animeInfo":
- return ;
- case "category":
- return ;
- case "producer":
- return ;
- case "AtoZ":
- return ;
- default:
- return
;
- }
-};
-
-export default Loader;
diff --git a/src/components/Loader/Producer.loader.jsx b/src/components/Loader/Producer.loader.jsx
deleted file mode 100644
index b48b908..0000000
--- a/src/components/Loader/Producer.loader.jsx
+++ /dev/null
@@ -1,15 +0,0 @@
-import CategoryCardLoader from "./CategoryCard.loader";
-import SidecardLoader from "./Sidecard.loader";
-
-function ProducerLoader() {
- return (
-
- );
-}
-
-export default ProducerLoader;
diff --git a/src/components/Loader/Sidecard.loader.jsx b/src/components/Loader/Sidecard.loader.jsx
deleted file mode 100644
index 8f9d7d5..0000000
--- a/src/components/Loader/Sidecard.loader.jsx
+++ /dev/null
@@ -1,26 +0,0 @@
-import { Skeleton } from "../ui/Skeleton/Skeleton";
-function SidecardLoader({ className }) {
- return (
-
-
-
- {[...Array(10)].map((_, index) => (
-
- ))}
-
-
- );
-}
-
-export default SidecardLoader;
diff --git a/src/components/Loader/Spotlight.loader.jsx b/src/components/Loader/Spotlight.loader.jsx
deleted file mode 100644
index 583d74c..0000000
--- a/src/components/Loader/Spotlight.loader.jsx
+++ /dev/null
@@ -1,34 +0,0 @@
-import { Skeleton } from "../ui/Skeleton/Skeleton"
-const SkeletonItems = ({ count, className }) => (
- [...Array(count)].map((_, index) => )
-);
-function SpotlightLoader() {
- return (
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- )
-}
-
-export default SpotlightLoader
\ No newline at end of file
diff --git a/src/components/Loader/Trending.loader.jsx b/src/components/Loader/Trending.loader.jsx
deleted file mode 100644
index bf777db..0000000
--- a/src/components/Loader/Trending.loader.jsx
+++ /dev/null
@@ -1,34 +0,0 @@
-import { useState, useEffect } from "react";
-import { Skeleton } from "../ui/Skeleton/Skeleton";
-
-function TrendingLoader() {
- const [count, setCount] = useState(() => window.innerWidth < 720 ? 3 : window.innerWidth < 1300 ? 4 : 6);
- useEffect(() => {
- const updateCount = () => {
- if (window.innerWidth < 720) {
- setCount(3);
- } else if (window.innerWidth < 1300) {
- setCount(4);
- } else {
- setCount(6);
- }
- };
- updateCount();
- window.addEventListener("resize", updateCount);
- return () => window.removeEventListener("resize", updateCount);
- }, []);
- return (
-
-
-
- {[...Array(count)].map((_, index) => (
-
-
-
- ))}
-
-
- );
-}
-
-export default TrendingLoader;
diff --git a/src/components/Loader/VoiceActorlist.loader.jsx b/src/components/Loader/VoiceActorlist.loader.jsx
deleted file mode 100644
index f4b975e..0000000
--- a/src/components/Loader/VoiceActorlist.loader.jsx
+++ /dev/null
@@ -1,21 +0,0 @@
-import { Skeleton } from "../ui/Skeleton/Skeleton"
-
-function VoiceActorlistLoader() {
- return (
-
- {[...Array(10)].map((_, index) => (
-
- ))}
-
- )
-}
-
-export default VoiceActorlistLoader
\ No newline at end of file
diff --git a/src/components/banner/Banner.css b/src/components/banner/Banner.css
deleted file mode 100644
index 599a1b4..0000000
--- a/src/components/banner/Banner.css
+++ /dev/null
@@ -1,133 +0,0 @@
-.spotlight {
- overflow: hidden;
-}
-
-.spotlight-overlay {
- width: 100.1%;
- height: 100.1%;
- position: absolute;
- top: 0;
- left: 0;
- right: 0;
- bottom:0;
- background: radial-gradient(
- circle at 130% center,
- rgba(32, 31, 49, 0) 50%,
- rgba(32, 31, 49, 0.5) 60%,
- rgba(32, 31, 49, 1) 80%,
- rgba(32, 31, 49, 1) 100%
- ),
- linear-gradient(
- to top,
- rgba(32, 31, 49, 1) 0%,
- rgba(32, 31, 49, 0) 20%,
- rgba(32, 31, 49, 0) 100%
- ),
- linear-gradient(
- to left,
- rgba(32, 31, 49, 1) 0%,
- rgba(32, 31, 49, 0) 20%,
- rgba(32, 31, 49, 0) 100%
- ),
- linear-gradient(
- to bottom,
- rgba(32, 31, 49, 1) 0%,
- rgba(32, 31, 49, 0) 20%,
- rgba(32, 31, 49, 0) 100%
- );
-
- z-index: 1;
-}
-@media only screen and (max-width: 1300px) {
- .spotlight-overlay {
- background: radial-gradient(
- circle at 130% center,
- rgba(32, 31, 49, 0) 50%,
- rgba(32, 31, 49, 0.5) 60%,
- rgba(32, 31, 49, 1) 80%,
- rgba(32, 31, 49, 1) 100%
- ),
- linear-gradient(
- to top,
- rgba(32, 31, 49, 1) 0%,
- rgba(32, 31, 49, 0) 20%,
- rgba(32, 31, 49, 0) 100%
- ),
- linear-gradient(
- to left,
- rgba(32, 31, 49, 1) 0%,
- rgba(32, 31, 49, 0) 20%,
- rgba(32, 31, 49, 0) 100%
- ),
- linear-gradient(
- to bottom,
- rgba(32, 31, 49, 1) 0%,
- rgba(32, 31, 49, 0) 50%,
- rgba(32, 31, 49, 0) 100%
- );
- }
-}
-@media only screen and (max-width: 1200px) {
- .spotlight-overlay {
- background: radial-gradient(
- circle at 100% center,
- rgba(32, 31, 49, 0) 50%,
- rgba(32, 31, 49, 0.5) 60%,
- rgba(32, 31, 49, 1) 95%,
- rgba(32, 31, 49, 1) 100%
- ),
- linear-gradient(
- to top,
- rgba(32, 31, 49, 1) 0%,
- rgba(32, 31, 49, 0) 20%,
- rgba(32, 31, 49, 0) 100%
- ),
- linear-gradient(
- to left,
- rgba(32, 31, 49, 1) 0%,
- rgba(32, 31, 49, 0) 20%,
- rgba(32, 31, 49, 0) 100%
- ),
- linear-gradient(
- to bottom,
- rgba(32, 31, 49, 1) 0%,
- rgba(32, 31, 49, 0) 70%,
- rgba(32, 31, 49, 0) 100%
- );
- }
-}
-@media only screen and (max-width: 900px) {
- .spotlight-overlay {
- background: radial-gradient(
- circle at 60% center,
- rgba(32, 31, 49, 0) 50%,
- rgba(32, 31, 49, 0.5) 85%,
- rgba(32, 31, 49, 1) 95%,
- rgba(32, 31, 49, 1) 100%
- ),
- linear-gradient(
- to top,
- rgba(32, 31, 49, 1) 0%,
- rgba(32, 31, 49, 0) 70%,
- rgba(32, 31, 49, 0) 100%
- ),
- linear-gradient(
- to left,
- rgba(32, 31, 49, 1) 0%,
- rgba(32, 31, 49, 0) 20%,
- rgba(32, 31, 49, 0) 100%
- ),
- linear-gradient(
- to bottom,
- rgba(32, 31, 49, 1) 0%,
- rgba(32, 31, 49, 0) 70%,
- rgba(32, 31, 49, 0) 100%
- ),
- linear-gradient(
- to right,
- rgba(32, 31, 49, 1) 0%,
- rgba(32, 31, 49, 0) 15%,
- rgba(32, 31, 49, 0) 100%
- );
- }
-}
diff --git a/src/components/banner/Banner.jsx b/src/components/banner/Banner.jsx
deleted file mode 100644
index aa9aaf5..0000000
--- a/src/components/banner/Banner.jsx
+++ /dev/null
@@ -1,136 +0,0 @@
-import { FontAwesomeIcon } from "@fortawesome/react-fontawesome";
-import {
- faPlay,
- faClosedCaptioning,
- faMicrophone,
- faCalendar,
- faClock,
-} from "@fortawesome/free-solid-svg-icons";
-import { FaChevronRight } from "react-icons/fa";
-import { Link } from "react-router-dom";
-import { useLanguage } from "@/src/context/LanguageContext";
-import "./Banner.css";
-
-function Banner({ item, index }) {
- const { language } = useLanguage();
- return (
-
-
-
-
-
- #{index + 1} Spotlight
-
-
- {language === "EN" ? item.title : item.japanese_title}
-
-
- {item.tvInfo && (
- <>
- {item.tvInfo.showType && (
-
-
-
- {item.tvInfo.showType}
-
-
- )}
-
- {item.tvInfo.duration && (
-
-
-
- {item.tvInfo.duration}
-
-
- )}
-
- {item.tvInfo.releaseDate && (
-
-
-
- {item.tvInfo.releaseDate}
-
-
- )}
-
-
- {item.tvInfo.quality && (
-
- {item.tvInfo.quality}
-
- )}
-
- {item.tvInfo.episodeInfo?.sub && (
-
-
-
- {item.tvInfo.episodeInfo.sub}
-
-
- )}
-
- {item.tvInfo.episodeInfo?.dub && (
-
-
-
- {item.tvInfo.episodeInfo.dub}
-
-
- )}
-
-
- >
- )}
-
-
- {item.description}
-
-
-
-
-
- Watch Now
-
-
-
-
- Detail
-
-
-
-
-
-
- );
-}
-
-export default Banner;
diff --git a/src/components/cart/Cart.css b/src/components/cart/Cart.css
deleted file mode 100644
index ff2b750..0000000
--- a/src/components/cart/Cart.css
+++ /dev/null
@@ -1,10 +0,0 @@
-.dot {
- width: 4px;
- height: 4px;
- display: flex;
- justify-content: center;
- align-items: center;
- border-radius: 50%;
- background: rgba(255, 255, 255, .3);
- display: inline-block;
-}
diff --git a/src/components/cart/Cart.jsx b/src/components/cart/Cart.jsx
deleted file mode 100644
index 0ceefe7..0000000
--- a/src/components/cart/Cart.jsx
+++ /dev/null
@@ -1,132 +0,0 @@
-import { FontAwesomeIcon } from "@fortawesome/react-fontawesome";
-import {
- faClosedCaptioning,
- faMicrophone,
-} from "@fortawesome/free-solid-svg-icons";
-import { FaChevronRight } from "react-icons/fa";
-import { useLanguage } from "@/src/context/LanguageContext";
-import "./Cart.css";
-import { Link, useNavigate } from "react-router-dom";
-import { useState } from "react";
-import useToolTipPosition from "@/src/hooks/useToolTipPosition";
-import Qtip from "../qtip/Qtip";
-
-function Cart({ label, data, path }) {
- const { language } = useLanguage();
- const navigate = useNavigate();
- const [hoveredItem, setHoveredItem] = useState(null);
- const [hoverTimeout, setHoverTimeout] = useState(null);
- const { tooltipPosition, tooltipHorizontalPosition, cardRefs } =
- useToolTipPosition(hoveredItem, data);
-
- const handleImageEnter = (item, index) => {
- if (hoverTimeout) clearTimeout(hoverTimeout);
- setHoveredItem(item.id + index);
- };
-
- const handleImageLeave = () => {
- setHoverTimeout(
- setTimeout(() => {
- setHoveredItem(null);
- }, 300)
- );
- };
-
- return (
-
-
- {label}
-
-
- {data &&
- data.slice(0, 5).map((item, index) => (
-
(cardRefs.current[index] = el)}
- >
-
navigate(`/watch/${item.id}`)}
- onMouseEnter={() => handleImageEnter(item, index)}
- onMouseLeave={handleImageLeave}
- />
-
- {hoveredItem === item.id + index && window.innerWidth > 1024 && (
-
{
- if (hoverTimeout) clearTimeout(hoverTimeout);
- }}
- onMouseLeave={handleImageLeave}
- >
-
-
- )}
-
-
-
- {language === "EN" ? item.title : item.japanese_title}
-
-
- {item.tvInfo?.sub && (
-
- )}
-
- {item.tvInfo?.dub && (
-
- )}
-
-
-
- {item.tvInfo.showType}
-
-
-
-
-
- ))}
-
-
- View more
-
-
-
-
-
- );
-}
-
-export default Cart;
diff --git a/src/components/categorycard/CategoryCard.css b/src/components/categorycard/CategoryCard.css
deleted file mode 100644
index 04411bc..0000000
--- a/src/components/categorycard/CategoryCard.css
+++ /dev/null
@@ -1,27 +0,0 @@
-.overlay {
- width: 100%;
- height: 100%;
- position: absolute;
- top: 0;
- left: 0;
- right: 0;
- bottom: 0;
- background: linear-gradient(
- to top,
- rgba(32, 31, 49, 1) 0%,
- rgba(32, 31, 49, 0) 20%,
- rgba(32, 31, 49, 0) 100%
- );
-
- z-index: 50;
-}
-.dot {
- width: 5px;
- height: 5px;
- display: flex;
- justify-content: center;
- align-items: center;
- border-radius: 50%;
- background: rgba(255, 255, 255, 0.3);
- display: inline-block;
-}
diff --git a/src/components/categorycard/CategoryCard.jsx b/src/components/categorycard/CategoryCard.jsx
deleted file mode 100644
index 00bd560..0000000
--- a/src/components/categorycard/CategoryCard.jsx
+++ /dev/null
@@ -1,340 +0,0 @@
-import React, { useCallback, useEffect, useState } from "react";
-import { FontAwesomeIcon } from "@fortawesome/react-fontawesome";
-import {
- faClosedCaptioning,
- faMicrophone,
- faPlay,
-} from "@fortawesome/free-solid-svg-icons";
-import { FaChevronRight } from "react-icons/fa";
-import "./CategoryCard.css";
-import { useLanguage } from "@/src/context/LanguageContext";
-import { Link, useNavigate } from "react-router-dom";
-import Qtip from "../qtip/Qtip";
-import useToolTipPosition from "@/src/hooks/useToolTipPosition";
-
-const CategoryCard = React.memo(
- ({
- label,
- data,
- showViewMore = true,
- className,
- categoryPage = false,
- cardStyle,
- path,
- limit,
- }) => {
- const { language } = useLanguage();
- const navigate = useNavigate();
- const [showPlay, setShowPlay] = useState(false);
- if (limit) {
- data = data.slice(0, limit);
- }
-
- const [itemsToRender, setItemsToRender] = useState({
- firstRow: [],
- remainingItems: [],
- });
-
- const getItemsToRender = useCallback(() => {
- if (categoryPage) {
- const firstRow =
- window.innerWidth > 758 && data.length > 4 ? data.slice(0, 4) : [];
- const remainingItems =
- window.innerWidth > 758 && data.length > 4
- ? data.slice(4)
- : data.slice(0);
- return { firstRow, remainingItems };
- }
- return { firstRow: [], remainingItems: data.slice(0) };
- }, [categoryPage, data]);
-
- useEffect(() => {
- const handleResize = () => {
- setItemsToRender(getItemsToRender());
- };
- const newItems = getItemsToRender();
- setItemsToRender((prev) => {
- if (
- JSON.stringify(prev.firstRow) !== JSON.stringify(newItems.firstRow) ||
- JSON.stringify(prev.remainingItems) !==
- JSON.stringify(newItems.remainingItems)
- ) {
- return newItems;
- }
- return prev;
- });
-
- window.addEventListener("resize", handleResize);
- return () => {
- window.removeEventListener("resize", handleResize);
- };
- }, [getItemsToRender]);
- const [hoveredItem, setHoveredItem] = useState(null);
- const [hoverTimeout, setHoverTimeout] = useState(null);
- const { tooltipPosition, tooltipHorizontalPosition, cardRefs } =
- useToolTipPosition(hoveredItem, data);
- const handleMouseEnter = (item, index) => {
- const timeout = setTimeout(() => {
- setHoveredItem(item.id + index);
- setShowPlay(true);
- }, 400);
- setHoverTimeout(timeout);
- };
- const handleMouseLeave = () => {
- clearTimeout(hoverTimeout);
- setHoveredItem(null);
- setShowPlay(false);
- };
- return (
-
-
-
- {label}
-
- {showViewMore && (
-
-
- View more
-
-
-
- )}
-
- <>
- {categoryPage && (
-
0
- ? "mt-8 max-[758px]:hidden"
- : ""
- }`}
- >
- {itemsToRender.firstRow.map((item, index) => (
-
(cardRefs.current[index] = el)}
- >
-
- navigate(
- `${
- path === "top-upcoming"
- ? `/${item.id}`
- : `/watch/${item.id}`
- }`
- )
- }
- onMouseEnter={() => handleMouseEnter(item, index)}
- onMouseLeave={handleMouseLeave}
- >
- {hoveredItem === item.id + index && showPlay && (
-
- )}
-
-
-
-
-
- {(item.tvInfo?.rating === "18+" ||
- item?.adultContent === true) && (
-
- 18+
-
- )}
-
- {item.tvInfo?.sub && (
-
-
-
- {item.tvInfo.sub}
-
-
- )}
- {item.tvInfo?.dub && (
-
-
-
- {item.tvInfo.dub}
-
-
- )}
- {item.tvInfo?.eps && (
-
-
- {item.tvInfo.eps}
-
-
- )}
-
- {hoveredItem === item.id + index &&
- window.innerWidth > 1024 && (
-
-
-
- )}
-
-
- {language === "EN" ? item.title : item.japanese_title}
-
- {item.description && (
-
- {item.description}
-
- )}
-
-
- {item.tvInfo.showType.split(" ").shift()}
-
-
-
- {item.tvInfo?.duration === "m" ||
- item.tvInfo?.duration === "?" ||
- item.duration === "m" ||
- item.duration === "?"
- ? "N/A"
- : item.tvInfo?.duration || item.duration || "N/A"}
-
-
-
- ))}
-
- )}
-
- {itemsToRender.remainingItems.map((item, index) => (
-
(cardRefs.current[index] = el)}
- >
-
- navigate(
- `${
- path === "top-upcoming"
- ? `/${item.id}`
- : `/watch/${item.id}`
- }`
- )
- }
- onMouseEnter={() => handleMouseEnter(item, index)}
- onMouseLeave={handleMouseLeave}
- >
- {hoveredItem === item.id + index && showPlay && (
-
- )}
-
-
-
-
- {(item.tvInfo?.rating === "18+" ||
- item?.adultContent === true) && (
-
- 18+
-
- )}
-
- {item.tvInfo?.sub && (
-
-
-
- {item.tvInfo.sub}
-
-
- )}
- {item.tvInfo?.dub && (
-
-
-
- {item.tvInfo.dub}
-
-
- )}
-
- {hoveredItem === item.id + index &&
- window.innerWidth > 1024 && (
-
-
-
- )}
-
-
- {language === "EN" ? item.title : item.japanese_title}
-
-
-
- {item.tvInfo.showType.split(" ").shift()}
-
-
-
- {item.tvInfo?.duration === "m" ||
- item.tvInfo?.duration === "?" ||
- item.duration === "m" ||
- item.duration === "?"
- ? "N/A"
- : item.tvInfo?.duration || item.duration || "N/A"}
-
-
-
- ))}
-
- >
-
- );
- }
-);
-
-CategoryCard.displayName = "CategoryCard";
-
-export default CategoryCard;
diff --git a/src/components/continue/ContinueWatching.jsx b/src/components/continue/ContinueWatching.jsx
deleted file mode 100644
index da8d369..0000000
--- a/src/components/continue/ContinueWatching.jsx
+++ /dev/null
@@ -1,132 +0,0 @@
-import { Navigation } from "swiper/modules";
-import { Swiper, SwiperSlide } from "swiper/react";
-import { Link } from "react-router-dom";
-import { useEffect, useState, useRef, useMemo } from "react";
-import "swiper/css";
-import "swiper/css/pagination";
-import "swiper/css/navigation";
-import { FaHistory, FaChevronLeft, FaChevronRight } from "react-icons/fa";
-import { useLanguage } from "@/src/context/LanguageContext";
-import { FontAwesomeIcon } from "@fortawesome/react-fontawesome";
-import { faPlay } from "@fortawesome/free-solid-svg-icons";
-
-const ContinueWatching = () => {
- const [watchList, setWatchList] = useState([]);
- const { language } = useLanguage();
- const swiperRef = useRef(null);
-
- useEffect(() => {
- const data = JSON.parse(localStorage.getItem("continueWatching") || "[]");
- setWatchList(data);
- }, []);
-
- // Memoize watchList to avoid unnecessary re-renders
- const memoizedWatchList = useMemo(() => watchList, [watchList]);
-
- const removeFromWatchList = (episodeId) => {
- setWatchList((prevList) => {
- const updatedList = prevList.filter(
- (item) => item.episodeId !== episodeId
- );
- localStorage.setItem("continueWatching", JSON.stringify(updatedList));
- return updatedList;
- });
- };
-
- if (memoizedWatchList.length === 0) return null;
-
- return (
-
-
-
-
-
- Continue Watching
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- {memoizedWatchList.map((item, index) => (
-
-
-
removeFromWatchList(item.episodeId)}
- >
- ✖
-
-
-
-
-
-
-
-
- {item?.adultContent === true && (
-
- 18+
-
- )}
-
-
- {language === "EN"
- ? item?.title
- : item?.japanese_title}
-
-
- Episode {item.episodeNum}
-
-
-
-
- ))}
-
-
-
- );
-};
-
-export default ContinueWatching;
diff --git a/src/components/episodelist/Episodelist.css b/src/components/episodelist/Episodelist.css
deleted file mode 100644
index 8fd6b62..0000000
--- a/src/components/episodelist/Episodelist.css
+++ /dev/null
@@ -1,15 +0,0 @@
-@keyframes glow {
- 0% {
- box-shadow: 0 0 7px #ffbade;
- }
- 50% {
- box-shadow: 0 0 20px #ffbade;
- }
- 100% {
- box-shadow: 0 0 7px #ffbade;
- }
-}
-
-.glow-animation {
- animation: glow 1.5s infinite;
-}
diff --git a/src/components/episodelist/Episodelist.jsx b/src/components/episodelist/Episodelist.jsx
deleted file mode 100644
index cc86327..0000000
--- a/src/components/episodelist/Episodelist.jsx
+++ /dev/null
@@ -1,303 +0,0 @@
-import { useLanguage } from "@/src/context/LanguageContext";
-import {
- faAngleDown,
- faCirclePlay,
- faList,
- faCheck,
-} from "@fortawesome/free-solid-svg-icons";
-import { FontAwesomeIcon } from "@fortawesome/react-fontawesome";
-import { faMagnifyingGlass } from "@fortawesome/free-solid-svg-icons";
-import { useState, useEffect, useRef } from "react";
-import "./Episodelist.css";
-
-function Episodelist({
- episodes,
- onEpisodeClick,
- currentEpisode,
- totalEpisodes,
-}) {
- const [activeEpisodeId, setActiveEpisodeId] = useState(currentEpisode);
- const { language } = useLanguage();
- const listContainerRef = useRef(null);
- const activeEpisodeRef = useRef(null);
- const [showDropDown, setShowDropDown] = useState(false);
- const [selectedRange, setSelectedRange] = useState([1, 100]);
- const [activeRange, setActiveRange] = useState("1-100");
- const [episodeNum, setEpisodeNum] = useState(currentEpisode);
- const dropDownRef = useRef(null);
- const [searchedEpisode, setSearchedEpisode] = useState(null);
-
- const scrollToActiveEpisode = () => {
- if (activeEpisodeRef.current && listContainerRef.current) {
- const container = listContainerRef.current;
- const activeEpisode = activeEpisodeRef.current;
- const containerTop = container.getBoundingClientRect().top;
- const containerHeight = container.clientHeight;
- const activeEpisodeTop = activeEpisode.getBoundingClientRect().top;
- const activeEpisodeHeight = activeEpisode.clientHeight;
- const offset = activeEpisodeTop - containerTop;
- container.scrollTop =
- container.scrollTop +
- offset -
- containerHeight / 2 +
- activeEpisodeHeight / 2;
- }
- };
- useEffect(() => {
- setActiveEpisodeId(episodeNum);
- }, [episodeNum]);
- useEffect(() => {
- scrollToActiveEpisode();
- }, [activeEpisodeId]);
-
- useEffect(() => {
- const handleClickOutside = (event) => {
- if (dropDownRef.current && !dropDownRef.current.contains(event.target)) {
- setShowDropDown(false);
- }
- };
- document.addEventListener("mousedown", handleClickOutside);
- return () => {
- document.removeEventListener("mousedown", handleClickOutside);
- };
- }, []);
-
- function handleChange(e) {
- const value = e.target.value;
- if (value.trim() === "") {
- const newRange = findRangeForEpisode(1);
- setSelectedRange(newRange);
- setActiveRange(`${newRange[0]}-${newRange[1]}`);
- setSearchedEpisode(null);
- } else if (!value || isNaN(value)) {
- setSearchedEpisode(null);
- } else if (
- !isNaN(value) &&
- parseInt(value, 10) > totalEpisodes &&
- episodeNum !== null
- ) {
- const newRange = findRangeForEpisode(episodeNum);
- setSelectedRange(newRange);
- setActiveRange(`${newRange[0]}-${newRange[1]}`);
- setSearchedEpisode(null);
- } else if (!isNaN(value) && value.trim() !== "") {
- const num = parseInt(value, 10);
- const foundEpisode = episodes.find((item) => item?.episode_no === num);
- if (foundEpisode) {
- const newRange = findRangeForEpisode(num);
- setSelectedRange(newRange);
- setActiveRange(`${newRange[0]}-${newRange[1]}`);
- setSearchedEpisode(foundEpisode?.id);
- }
- } else {
- setSearchedEpisode(null);
- }
- }
-
- function findRangeForEpisode(episodeNumber) {
- const step = 100;
- const start = Math.floor((episodeNumber - 1) / step) * step + 1;
- const end = Math.min(start + step - 1, totalEpisodes);
- return [start, end];
- }
-
- function generateRangeOptions(totalEpisodes) {
- const ranges = [];
- const step = 100;
-
- for (let i = 0; i < totalEpisodes; i += step) {
- const start = i + 1;
- const end = Math.min(i + step, totalEpisodes);
- ranges.push(`${start}-${end}`);
- }
- return ranges;
- }
- useEffect(() => {
- if (currentEpisode && episodeNum) {
- if (episodeNum < selectedRange[0] || episodeNum > selectedRange[1]) {
- const newRange = findRangeForEpisode(episodeNum);
- setSelectedRange(newRange);
- setActiveRange(`${newRange[0]}-${newRange[1]}`);
- }
- }
- }, [currentEpisode, totalEpisodes, episodeNum]);
-
- const handleRangeSelect = (range) => {
- const [start, end] = range.split("-").map(Number);
- setSelectedRange([start, end]);
- };
-
- useEffect(() => {
- const activeEpisode = episodes.find(
- (item) => item?.id.match(/ep=(\d+)/)?.[1] === activeEpisodeId
- );
- if (activeEpisode) {
- setEpisodeNum(activeEpisode?.episode_no);
- }
- }, [activeEpisodeId, episodes]);
-
- return (
-
-
-
List of episodes:
- {totalEpisodes > 100 && (
-
-
-
setShowDropDown((prev) => !prev)}
- className="text-white w-fit mt-1 text-[13px] relative cursor-pointer bg-[#0D0D15] flex justify-center items-center"
- ref={dropDownRef}
- >
-
-
-
- EPS: {selectedRange[0]}-{selectedRange[1]}
-
-
-
- {showDropDown && (
-
- {generateRangeOptions(totalEpisodes).map((item, index) => (
-
{
- handleRangeSelect(item);
- setActiveRange(item);
- }}
- className={`hover:bg-gray-200 cursor-pointer text-black ${
- item === activeRange ? "bg-[#EFF0F4]" : ""
- }`}
- >
-
- EPS: {item}
- {item === activeRange ? (
-
- ) : null}
-
-
- ))}
-
- )}
-
-
-
-
-
-
-
- )}
-
-
-
30
- ? "p-3 grid grid-cols-5 gap-1 max-[1200px]:grid-cols-12 max-[860px]:grid-cols-10 max-[575px]:grid-cols-8 max-[478px]:grid-cols-6 max-[350px]:grid-cols-5"
- : ""
- }`}
- >
- {totalEpisodes > 30
- ? episodes
- .slice(selectedRange[0] - 1, selectedRange[1])
- .map((item, index) => {
- const episodeNumber = item?.id.match(/ep=(\d+)/)?.[1];
- const isActive =
- activeEpisodeId === episodeNumber ||
- currentEpisode === episodeNumber;
- const isSearched = searchedEpisode === item?.id;
-
- return (
-
{
- if (episodeNumber) {
- onEpisodeClick(episodeNumber);
- setActiveEpisodeId(episodeNumber);
- setSearchedEpisode(null);
- }
- }}
- >
-
- {index + selectedRange[0]}
-
-
- );
- })
- : episodes?.map((item, index) => {
- const episodeNumber = item?.id.match(/ep=(\d+)/)?.[1];
- const isActive =
- activeEpisodeId === episodeNumber ||
- currentEpisode === episodeNumber;
- const isSearched = searchedEpisode === item?.id;
-
- return (
-
{
- if (episodeNumber) {
- onEpisodeClick(episodeNumber);
- setActiveEpisodeId(episodeNumber);
- setSearchedEpisode(null);
- }
- }}
- >
-
{index + 1}
-
-
- {language === "EN" ? item?.title : item?.japanese_title}
-
- {isActive && (
-
- )}
-
-
- );
- })}
-
-
-
- );
-}
-
-export default Episodelist;
diff --git a/src/components/error/Error.jsx b/src/components/error/Error.jsx
deleted file mode 100644
index 6776274..0000000
--- a/src/components/error/Error.jsx
+++ /dev/null
@@ -1,21 +0,0 @@
-import { FaChevronLeft } from "react-icons/fa"
-import { useNavigate } from "react-router-dom"
-
-function Error({ error }) {
- const navigate = useNavigate();
- return (
-
-
-
-
{error === "404" ? "404 Error" : "Error"}
-
Oops! We couldn't find this page.
-
-
- navigate('/home')} className="text-[18px]">Back to homepage
-
-
-
- )
-}
-
-export default Error
\ No newline at end of file
diff --git a/src/components/footer/Footer.jsx b/src/components/footer/Footer.jsx
deleted file mode 100644
index 43404af..0000000
--- a/src/components/footer/Footer.jsx
+++ /dev/null
@@ -1,62 +0,0 @@
-import logoTitle from "@/src/config/logoTitle.js";
-import website_name from "@/src/config/website.js";
-import { Link } from "react-router-dom";
-
-function Footer() {
- return (
-
-
-
-
-
-
-
A-Z LIST
-
- Searching anime order by alphabet name A to Z
-
-
-
- {[
- "All",
- "#",
- "0-9",
- ...Array.from({ length: 26 }, (_, i) =>
- String.fromCharCode(65 + i)
- ),
- ].map((item, index) => (
-
- {item}
-
- ))}
-
-
-
- {website_name} does not host any files, it merely pulls streams from
- 3rd party services. Legal issues should be taken up with the file
- hosts and providers. {website_name} is not responsible for any media
- files shown by the video providers.
-
-
- © {website_name}. All rights reserved.
-
-
-
-
- );
-}
-
-export default Footer;
diff --git a/src/components/genres/Genre.jsx b/src/components/genres/Genre.jsx
deleted file mode 100644
index c74424d..0000000
--- a/src/components/genres/Genre.jsx
+++ /dev/null
@@ -1,54 +0,0 @@
-import React, { useState } from "react";
-import { Link } from "react-router-dom";
-
-function Genre({ data }) {
- const colors = [
- "#A4B389",
- "#FFBADE",
- "#935C5F",
- "#AD92BC",
- "#ABCCD8",
- "#D8B2AB",
- "#85E1CD",
- "#B7C996",
- ];
-
- const [showAll, setShowAll] = useState(false);
- const toggleGenres = () => {
- setShowAll((prev) => !prev);
- };
-
- return (
-
-
Genres
-
-
- {data &&
- (showAll ? data : data.slice(0, 24)).map((item, index) => {
- const textColor = colors[index % colors.length];
- return (
-
-
- {item.charAt(0).toUpperCase() + item.slice(1)}
-
-
- );
- })}
-
-
- {showAll ? "Show less" : "Show more"}
-
-
-
- );
-}
-
-export default React.memo(Genre);
diff --git a/src/components/navbar/Navbar.jsx b/src/components/navbar/Navbar.jsx
deleted file mode 100644
index f6f1215..0000000
--- a/src/components/navbar/Navbar.jsx
+++ /dev/null
@@ -1,147 +0,0 @@
-import { useState, useEffect } from "react";
-import logoTitle from "@/src/config/logoTitle";
-import { FontAwesomeIcon } from "@fortawesome/react-fontawesome";
-import {
- faBars,
- faFilm,
- faRandom,
- faStar,
-} from "@fortawesome/free-solid-svg-icons";
-import { useLanguage } from "@/src/context/LanguageContext";
-import { Link, useLocation } from "react-router-dom";
-import Sidebar from "../sidebar/Sidebar";
-import { SearchProvider } from "@/src/context/SearchContext";
-import WebSearch from "../searchbar/WebSearch";
-import MobileSearch from "../searchbar/MobileSearch";
-import { FaTelegramPlane } from "react-icons/fa";
-
-function Navbar() {
- const location = useLocation();
- const { language, toggleLanguage } = useLanguage();
- const [isNotHomePage, setIsNotHomePage] = useState(
- location.pathname !== "/" && location.pathname !== "/home"
- );
- const [isScrolled, setIsScrolled] = useState(false);
- const [isSidebarOpen, setIsSidebarOpen] = useState(false);
-
- useEffect(() => {
- const handleScroll = () => {
- setIsScrolled(window.scrollY > 0);
- };
- window.addEventListener("scroll", handleScroll);
- return () => {
- window.removeEventListener("scroll", handleScroll);
- };
- }, []);
-
- const handleHamburgerClick = () => {
- setIsSidebarOpen(true);
- };
-
- const handleCloseSidebar = () => {
- setIsSidebarOpen(false);
- };
- const handleRandomClick = () => {
- if (location.pathname === "/random") {
- window.location.reload();
- }
- };
- useEffect(() => {
- setIsNotHomePage(
- location.pathname !== "/" && location.pathname !== "/home"
- );
- }, [location.pathname]);
-
- return (
-
-
-
-
-
-
- {logoTitle.slice(0, 3)}
- {logoTitle.slice(3, 4)}
- {logoTitle.slice(4)}
-
-
-
-
-
- {[
- { icon: faRandom, label: "Random", path: "/random" },
- { icon: faFilm, label: "Movie", path: "/movie" },
- { icon: faStar, label: "Popular", path: "/most-popular" },
- ].map((item) => (
-
-
-
{item.label}
-
- ))}
-
-
- {["EN", "JP"].map((lang, index) => (
- toggleLanguage(lang)}
- className={`px-1 py-[1px] text-xs font-bold ${
- index === 0 ? "rounded-l-[3px]" : "rounded-r-[3px]"
- } ${
- language === lang
- ? "bg-[#ffbade] text-black"
- : "bg-gray-600 text-white"
- }`}
- >
- {lang}
-
- ))}
-
-
-
-
-
-
Join Telegram
-
-
-
-
-
-
- );
-}
-
-export default Navbar;
diff --git a/src/components/pageslider/PageSlider.jsx b/src/components/pageslider/PageSlider.jsx
deleted file mode 100644
index c42ebe2..0000000
--- a/src/components/pageslider/PageSlider.jsx
+++ /dev/null
@@ -1,76 +0,0 @@
-import { faAngleDoubleLeft, faAngleDoubleRight, faChevronLeft, faChevronRight } from "@fortawesome/free-solid-svg-icons";
-import { FontAwesomeIcon } from "@fortawesome/react-fontawesome";
-
-function PageSlider({ page, totalPages, handlePageChange, start = false, style }) {
- const renderPageNumbers = () => {
- const pages = [];
- if (totalPages === 1) return null;
- if (totalPages <= 3) {
- for (let i = 1; i <= totalPages; i++) {
- pages.push(i);
- }
- } else {
- if (page === 1) {
- pages.push(1, 2, 3);
- } else if (page === 2) {
- pages.push(1, 2, 3, 4);
- } else if (page === totalPages) {
- pages.push(totalPages - 2, totalPages - 1, totalPages);
- } else if (page === totalPages - 1) {
- pages.push(totalPages - 3, totalPages - 2, totalPages - 1, totalPages);
- } else {
- pages.push(page - 2, page - 1, page, page + 1, page + 2);
- }
- }
- return pages.map((p) => (
- handlePageChange(p)}
- className={`w-[40px] text-[15px] mx-1 flex justify-center items-center p-2 rounded-full font-bold ${page === p ? 'bg-[#ffbade] text-[#2B2A3C] cursor-default' : 'bg-[#2B2A3C] text-[#999] hover:text-[#ffbade]'} ${start ? "bg-[#353537]" : "bg-[#2B2A3C]"} `}
- >
- {p}
-
- ));
- };
- return (
-
-
- {page > 1 && totalPages > 2 && (
- handlePageChange(1)}
- className={`w-[40px] mx-1 p-2 ${start ? "bg-[#353537]" : "bg-[#2B2A3C]"} rounded-full text-[#999] text-[8px] hover:text-[#ffbade]`}
- >
-
-
- )}
- {page > 1 && (
- { if (page > 0) handlePageChange(page - 1) }}
- className={`w-[40px] mx-1 p-2 ${start ? "bg-[#353537]" : "bg-[#2B2A3C]"} rounded-full text-[#999] text-[8px] hover:text-[#ffbade]`}
- >
-
-
- )}
- {renderPageNumbers()}
- {page < totalPages && (
- { if (page < totalPages) handlePageChange(page + 1) }}
- className={`w-[40px] mx-1 p-2 ${start ? "bg-[#353537]" : "bg-[#2B2A3C]"} rounded-full text-[#999] text-[8px] hover:text-[#ffbade]`}
- >
-
-
- )}
- {page < totalPages && totalPages > 2 && (
- handlePageChange(totalPages)}
- className={`w-[40px] mx-1 p-2 ${start ? "bg-[#353537]" : "bg-[#2B2A3C]"} rounded-full text-[#999] text-[8px] hover:text-[#ffbade]`}
- >
-
-
- )}
-
-
- )
-}
-
-export default PageSlider
\ No newline at end of file
diff --git a/src/components/player/IframePlayer.jsx b/src/components/player/IframePlayer.jsx
deleted file mode 100644
index efbaab1..0000000
--- a/src/components/player/IframePlayer.jsx
+++ /dev/null
@@ -1,148 +0,0 @@
-/* eslint-disable react/prop-types */
-import { useEffect, useState } from "react";
-import BouncingLoader from "../ui/bouncingloader/Bouncingloader";
-import axios from "axios";
-
-export default function IframePlayer({
- animeId,
- episodeId,
- serverName,
- servertype,
- animeInfo,
- episodeNum,
- episodes,
- playNext,
- autoNext,
-}) {
- const api_url=import.meta.env.VITE_API_URL;
- const baseURL =
- serverName.toLowerCase() === "hd-1"
- ? import.meta.env.VITE_BASE_IFRAME_URL
- : serverName.toLowerCase() === "hd-4"
- ? import.meta.env.VITE_BASE_IFRAME_URL_2
- : undefined;
-
- const [loading, setLoading] = useState(true);
- const [iframeLoaded, setIframeLoaded] = useState(false);
- const [iframeSrc, setIframeSrc] = useState("");
- const [currentEpisodeIndex, setCurrentEpisodeIndex] = useState(
- episodes?.findIndex(
- (episode) => episode.id.match(/ep=(\d+)/)?.[1] === episodeId
- )
- );
-
- useEffect(() => {
- const loadIframeUrl = async () => {
- setLoading(true);
- setIframeLoaded(false);
- setIframeSrc("");
-
- const lowerName = serverName.toLowerCase();
-
- if (lowerName === "hd-1" || lowerName === "hd-4") {
- setIframeSrc(`${baseURL}/${episodeId}/${servertype}`);
- } else if (lowerName === "hd-2" || lowerName === "hd-3") {
- try {
- const res = await axios.get(
- `${api_url}/stream?id=${animeId}?ep=${episodeId}&server=${serverName}&type=${servertype}`
- );
-
- const link = res?.data?.results?.streamingLink?.link;
- if (link) {
- setIframeSrc(`${link}&_debug=true`);
- } else {
- console.error("Streaming link not found in response");
- }
- } catch (err) {
- console.error("Failed to fetch streaming link:", err);
- }
- }
- };
-
- loadIframeUrl();
- // eslint-disable-next-line react-hooks/exhaustive-deps
- }, [episodeId, servertype, serverName, animeInfo]);
-
- useEffect(() => {
- if (episodes?.length > 0) {
- const newIndex = episodes.findIndex(
- (episode) => episode.id.match(/ep=(\d+)/)?.[1] === episodeId
- );
- setCurrentEpisodeIndex(newIndex);
- }
- }, [episodeId, episodes]);
-
- useEffect(() => {
- const handleMessage = (event) => {
- const { currentTime, duration } = event.data;
- if (typeof currentTime === "number" && typeof duration === "number") {
- if (
- currentTime >= duration &&
- currentEpisodeIndex < episodes?.length - 1 &&
- autoNext
- ) {
- playNext(episodes[currentEpisodeIndex + 1].id.match(/ep=(\d+)/)?.[1]);
- }
- }
- };
- window.addEventListener("message", handleMessage);
- return () => {
- window.removeEventListener("message", handleMessage);
- };
- }, [autoNext, currentEpisodeIndex, episodes, playNext]);
-
- useEffect(() => {
- setLoading(true);
- setIframeLoaded(false);
- return () => {
- const continueWatching = JSON.parse(localStorage.getItem("continueWatching")) || [];
- const newEntry = {
- id: animeInfo?.id,
- data_id: animeInfo?.data_id,
- episodeId,
- episodeNum,
- adultContent: animeInfo?.adultContent,
- poster: animeInfo?.poster,
- title: animeInfo?.title,
- japanese_title: animeInfo?.japanese_title,
- };
- if (!newEntry.data_id) return;
- const existingIndex = continueWatching.findIndex(
- (item) => item.data_id === newEntry.data_id
- );
- if (existingIndex !== -1) {
- continueWatching[existingIndex] = newEntry;
- } else {
- continueWatching.push(newEntry);
- }
- localStorage.setItem("continueWatching", JSON.stringify(continueWatching));
- };
- // eslint-disable-next-line react-hooks/exhaustive-deps
- }, [episodeId, servertype]);
-
- return (
-
- {/* Loader Overlay */}
-
-
-
-
-
-
- );
-}
diff --git a/src/components/player/Player.css b/src/components/player/Player.css
deleted file mode 100644
index 87bd52b..0000000
--- a/src/components/player/Player.css
+++ /dev/null
@@ -1,59 +0,0 @@
-.art-subtitle {
- padding-inline: 0px !important;
- gap: 2px !important;
-}
-.art-volume-panel {
- padding-bottom: 20px !important;
-}
-.art-settings {
- margin-bottom: 20px !important;
-}
-.art-subtitle {
- margin-bottom: 1rem !important;
-}
-.art-subtitle-line {
- min-width: fit-content;
- background-color: rgba(0, 0, 0, 0.479) !important;
- padding-inline: 3px !important;
-}
-.art-subtitle-line,
-.art-subtitle-line * {
- font-size: inherit !important;
- color: inherit !important;
- line-height: inherit !important;
- font-weight: inherit !important;
- white-space: inherit !important;
-}
-@media screen and (max-width: 370px) {
- .art-progress {
- padding-bottom: 5px !important;
- }
- .art-controls-left .art-control {
- justify-content: flex-start !important;
- }
- .art-controls-right .art-control {
- justify-content: flex-end !important;
- }
- .art-controls-right .art-control svg {
- width: 22px;
- height: 22px;
- }
- .art-controls-left .art-control svg {
- width: 22px;
- height: 22px;
- }
- .art-state .art-icon svg {
- width: 50px;
- height: 50px;
- }
-}
-@media screen and (max-width: 350px) {
- .art-controls-right .art-control svg {
- width: 20px;
- height: 20px;
- }
- .art-controls-left .art-control svg {
- width: 20px;
- height: 20px;
- }
-}
diff --git a/src/components/player/Player.jsx b/src/components/player/Player.jsx
deleted file mode 100644
index bcf29bb..0000000
--- a/src/components/player/Player.jsx
+++ /dev/null
@@ -1,494 +0,0 @@
-/* eslint-disable react/prop-types */
-import Hls from "hls.js";
-import { useEffect, useRef, useState } from "react";
-import Artplayer from "artplayer";
-import artplayerPluginChapter from "./artPlayerPluinChaper";
-import autoSkip from "./autoSkip";
-import artplayerPluginVttThumbnail from "./artPlayerPluginVttThumbnail";
-import {
- backward10Icon,
- backwardIcon,
- captionIcon,
- forward10Icon,
- forwardIcon,
- fullScreenOffIcon,
- fullScreenOnIcon,
- loadingIcon,
- logo,
- muteIcon,
- pauseIcon,
- pipIcon,
- playIcon,
- playIconLg,
- settingsIcon,
- volumeIcon,
-} from "./PlayerIcons";
-import "./Player.css";
-import website_name from "@/src/config/website";
-import getChapterStyles from "./getChapterStyle";
-import artplayerPluginHlsControl from "artplayer-plugin-hls-control";
-import artplayerPluginUploadSubtitle from "./artplayerPluginUploadSubtitle";
-
-Artplayer.LOG_VERSION = false;
-Artplayer.CONTEXTMENU = false;
-
-const KEY_CODES = {
- M: "m",
- I: "i",
- F: "f",
- V: "v",
- SPACE: " ",
- ARROW_UP: "arrowup",
- ARROW_DOWN: "arrowdown",
- ARROW_RIGHT: "arrowright",
- ARROW_LEFT: "arrowleft",
-};
-
-export default function Player({
- streamUrl,
- subtitles,
- thumbnail,
- intro,
- outro,
- serverName,
- autoSkipIntro,
- autoPlay,
- autoNext,
- episodeId,
- episodes,
- playNext,
- animeInfo,
- episodeNum,
- streamInfo,
-}) {
- const artRef = useRef(null);
- const leftAtRef = useRef(0);
- const proxy = import.meta.env.VITE_PROXY_URL;
- const m3u8proxy = import.meta.env.VITE_M3U8_PROXY_URL?.split(",") || [];
- const [currentEpisodeIndex, setCurrentEpisodeIndex] = useState(
- episodes?.findIndex(
- (episode) => episode.id.match(/ep=(\d+)/)?.[1] === episodeId
- )
- );
-
- useEffect(() => {
- if (episodes?.length > 0) {
- const newIndex = episodes.findIndex(
- (episode) => episode.id.match(/ep=(\d+)/)?.[1] === episodeId
- );
- setCurrentEpisodeIndex(newIndex);
- }
- }, [episodeId, episodes]);
- useEffect(() => {
- const applyChapterStyles = () => {
- const existingStyles = document.querySelectorAll(
- "style[data-chapter-styles]"
- );
- existingStyles.forEach((style) => style.remove());
- const styleElement = document.createElement("style");
- styleElement.setAttribute("data-chapter-styles", "true");
- const styles = getChapterStyles(intro, outro);
- styleElement.textContent = styles;
- document.head.appendChild(styleElement);
- return () => {
- styleElement.remove();
- };
- };
-
- if (streamUrl || intro || outro) {
- const cleanup = applyChapterStyles();
- return cleanup;
- }
- }, [streamUrl, intro, outro]);
-
- const playM3u8 = (video, url, art) => {
- if (Hls.isSupported()) {
- if (art.hls) art.hls.destroy();
- const hls = new Hls();
- hls.loadSource(url);
- hls.attachMedia(video);
- art.hls = hls;
-
- art.on("destroy", () => hls.destroy());
-
- // hls.on(Hls.Events.ERROR, (event, data) => {
- // console.error("HLS.js error:", data);
- // });
- video.addEventListener("timeupdate", () => {
- const currentTime = Math.round(video.currentTime);
- const duration = Math.round(video.duration);
- if (duration > 0 && currentTime >= duration) {
- art.pause();
- if (currentEpisodeIndex < episodes?.length - 1 && autoNext) {
- playNext(
- episodes[currentEpisodeIndex + 1].id.match(/ep=(\d+)/)?.[1]
- );
- }
- }
- });
- } else if (video.canPlayType("application/vnd.apple.mpegurl")) {
- video.src = url;
- video.addEventListener("timeupdate", () => {
- const currentTime = Math.round(video.currentTime);
- const duration = Math.round(video.duration);
- if (duration > 0 && currentTime >= duration) {
- art.pause();
- if (currentEpisodeIndex < episodes?.length - 1 && autoNext) {
- playNext(
- episodes[currentEpisodeIndex + 1].id.match(/ep=(\d+)/)?.[1]
- );
- }
- }
- });
- } else {
- console.log("Unsupported playback format: m3u8");
- }
- };
-
- const createChapters = () => {
- const chapters = [];
- if (intro?.start !== 0 || intro?.end !== 0) {
- chapters.push({ start: intro.start, end: intro.end, title: "intro" });
- }
- if (outro?.start !== 0 || outro?.end !== 0) {
- chapters.push({ start: outro.start, end: outro.end, title: "outro" });
- }
- return chapters;
- };
-
- const handleKeydown = (event, art) => {
- const tagName = event.target.tagName.toLowerCase();
-
- if (tagName === "input" || tagName === "textarea") return;
-
- switch (event.key.toLowerCase()) {
- case KEY_CODES.M:
- art.muted = !art.muted;
- break;
- case KEY_CODES.I:
- art.pip = !art.pip;
- break;
- case KEY_CODES.F:
- event.preventDefault();
- event.stopPropagation();
- art.fullscreen = !art.fullscreen;
- break;
- case KEY_CODES.V:
- event.preventDefault();
- event.stopPropagation();
- art.subtitle.show = !art.subtitle.show;
- break;
- case KEY_CODES.SPACE:
- event.preventDefault();
- event.stopPropagation();
- art.playing ? art.pause() : art.play();
- break;
- case KEY_CODES.ARROW_UP:
- event.preventDefault();
- event.stopPropagation();
- art.volume = Math.min(art.volume + 0.1, 1);
- break;
- case KEY_CODES.ARROW_DOWN:
- event.preventDefault();
- event.stopPropagation();
- art.volume = Math.max(art.volume - 0.1, 0);
- break;
- case KEY_CODES.ARROW_RIGHT:
- event.preventDefault();
- event.stopPropagation();
- art.currentTime = Math.min(art.currentTime + 10, art.duration);
- break;
- case KEY_CODES.ARROW_LEFT:
- event.preventDefault();
- event.stopPropagation();
- art.currentTime = Math.max(art.currentTime - 10, 0);
- break;
- default:
- break;
- }
- };
-
- useEffect(() => {
- if (!streamUrl || !artRef.current) return;
- const iframeUrl = streamInfo?.streamingLink?.iframe;
- const headers = {};
- headers.referer=new URL(iframeUrl).origin+"/";
- const art = new Artplayer({
- url:
- m3u8proxy[Math.floor(Math.random() * m3u8proxy?.length)] +
- encodeURIComponent(streamUrl) +
- "&headers=" +
- encodeURIComponent(JSON.stringify(headers)),
- container: artRef.current,
- type: "m3u8",
- autoplay: autoPlay,
- volume: 1,
- setting: true,
- playbackRate: true,
- pip: true,
- hotkey: false,
- fullscreen: true,
- mutex: true,
- playsInline: true,
- lock: true,
- airplay: true,
- autoOrientation: true,
- fastForward: true,
- aspectRatio: true,
- plugins: [
- artplayerPluginHlsControl({
- quality: {
- setting: true,
- getName: (level) => level.height + "P",
- title: "Quality",
- auto: "Auto",
- },
- }),
- artplayerPluginUploadSubtitle(),
- artplayerPluginChapter({ chapters: createChapters() }),
- ],
- subtitle: {
- style: {
- color: "#fff",
- "font-weight": "400",
- left: "50%",
- transform: "translateX(-50%)",
- "margin-bottom": "2rem",
- },
- escape: false,
- },
- layers: [
- {
- name: website_name,
- html: logo,
- tooltip: website_name,
- style: {
- opacity: 1,
- position: "absolute",
- top: "5px",
- right: "5px",
- transition: "opacity 0.5s ease-out",
- },
- },
- {
- html: "",
- style: {
- position: "absolute",
- left: "50%",
- top: 0,
- width: "20%",
- height: "100%",
- transform: "translateX(-50%)",
- },
- disable: !Artplayer.utils.isMobile,
- click: () => art.toggle(),
- },
- {
- name: "rewind",
- html: "",
- style: { position: "absolute", left: 0, top: 0, width: "40%", height: "100%" },
- disable: !Artplayer.utils.isMobile,
- click: () => {
- art.controls.show = !art.controls.show;
- },
- },
- {
- name: "forward",
- html: "",
- style: { position: "absolute", right: 0, top: 0, width: "40%", height: "100%" },
- disable: !Artplayer.utils.isMobile,
- click: () => {
- art.controls.show = !art.controls.show;
- },
- },
- {
- name: "backwardIcon",
- html: backwardIcon,
- style: {
- position: "absolute",
- left: "25%",
- top: "50%",
- transform: "translate(50%,-50%)",
- opacity: 0,
- transition: "opacity 0.5s ease-in-out",
- },
- disable: !Artplayer.utils.isMobile,
- },
- {
- name: "forwardIcon",
- html: forwardIcon,
- style: {
- position: "absolute",
- right: "25%",
- top: "50%",
- transform: "translate(50%, -50%)",
- opacity: 0,
- transition: "opacity 0.5s ease-in-out",
- },
- disable: !Artplayer.utils.isMobile,
- },
- ],
- controls: [
- {
- html: backward10Icon,
- position: "right",
- tooltip: "Backward 10s",
- click: () => {
- art.currentTime = Math.max(art.currentTime - 10, 0);
- },
- },
- {
- html: forward10Icon,
- position: "right",
- tooltip: "Forward 10s",
- click: () => {
- art.currentTime = Math.min(art.currentTime + 10, art.duration);
- },
- },
- ],
- icons: {
- play: playIcon,
- pause: pauseIcon,
- setting: settingsIcon,
- volume: volumeIcon,
- pip: pipIcon,
- volumeClose: muteIcon,
- state: playIconLg,
- loading: loadingIcon,
- fullscreenOn: fullScreenOnIcon,
- fullscreenOff: fullScreenOffIcon,
- },
- customType: { m3u8: playM3u8 },
- });
- art.on("resize", () => {
- art.subtitle.style({
- fontSize:
- (art.width > 500 ? art.width * 0.02 : art.width * 0.03) + "px",
- });
- });
- art.on("ready", () => {
- const continueWatchingList = JSON.parse(localStorage.getItem("continueWatching")) || [];
- const currentEntry = continueWatchingList.find((item) => item.episodeId === episodeId);
- if (currentEntry?.leftAt) art.currentTime = currentEntry.leftAt;
-
- art.on("video:timeupdate", () => {
- leftAtRef.current = Math.floor(art.currentTime);
- });
-
- setTimeout(() => {
- art.layers[website_name].style.opacity = 0;
- }, 2000);
-
- const defaultSubtitle = subtitles?.find((sub) => sub.label.toLowerCase() === "english");
- if (defaultSubtitle) {
- art.subtitle.switch(defaultSubtitle.file, {
- name: defaultSubtitle.label,
- default: true,
- });
- }
-
- const skipRanges = [
- ...(intro.start != null && intro.end != null ? [[intro.start + 1, intro.end - 1]] : []),
- ...(outro.start != null && outro.end != null ? [[outro.start + 1, outro.end]] : []),
- ];
- autoSkipIntro && art.plugins.add(autoSkip(skipRanges));
-
- document.addEventListener("keydown", (event) => handleKeydown(event, art));
-
- art.subtitle.style({
- fontSize: (art.width > 500 ? art.width * 0.02 : art.width * 0.03) + "px",
- });
-
- if (thumbnail) {
- art.plugins.add(
- artplayerPluginVttThumbnail({
- vtt: `${proxy}${thumbnail}`,
- })
- );
- }
- const $rewind = art.layers["rewind"];
- const $forward = art.layers["forward"];
- Artplayer.utils.isMobile &&
- art.proxy($rewind, "dblclick", () => {
- art.currentTime = Math.max(0, art.currentTime - 10);
- art.layers["backwardIcon"].style.opacity = 1;
- setTimeout(() => {
- art.layers["backwardIcon"].style.opacity = 0;
- }, 300);
- });
- Artplayer.utils.isMobile &&
- art.proxy($forward, "dblclick", () => {
- art.currentTime = Math.max(0, art.currentTime + 10);
- art.layers["forwardIcon"].style.opacity = 1;
- setTimeout(() => {
- art.layers["forwardIcon"].style.opacity = 0;
- }, 300);
- });
- if (subtitles?.length > 0) {
- const defaultEnglishSub =
- subtitles.find((sub) => sub.label.toLowerCase() === "english" && sub.default) ||
- subtitles.find((sub) => sub.label.toLowerCase() === "english");
-
- art.setting.add({
- name: "captions",
- icon: captionIcon,
- html: "Subtitle",
- tooltip: defaultEnglishSub?.label || "default",
- position: "right",
- selector: [
- {
- html: "Display",
- switch: true,
- onSwitch: (item) => {
- item.tooltip = item.switch ? "Hide" : "Show";
- art.subtitle.show = !item.switch;
- return !item.switch;
- },
- },
- ...subtitles.map((sub) => ({
- default: sub.label.toLowerCase() === "english" && sub === defaultEnglishSub,
- html: sub.label,
- url: sub.file,
- })),
- ],
- onSelect: (item) => {
- art.subtitle.switch(item.url, { name: item.html });
- return item.html;
- },
- });
- }
- });
-
- return () => {
- if (art && art.destroy) {
- art.destroy(false);
- }
- document.removeEventListener("keydown", handleKeydown);
- const continueWatching = JSON.parse(localStorage.getItem("continueWatching")) || [];
- const newEntry = {
- id: animeInfo?.id,
- data_id: animeInfo?.data_id,
- episodeId,
- episodeNum,
- adultContent: animeInfo?.adultContent,
- poster: animeInfo?.poster,
- title: animeInfo?.title,
- japanese_title: animeInfo?.japanese_title,
- leftAt: leftAtRef.current,
- };
-
- if (!newEntry.data_id) return;
-
- const existingIndex = continueWatching.findIndex((item) => item.data_id === newEntry.data_id);
- if (existingIndex !== -1) {
- continueWatching[existingIndex] = newEntry;
- } else {
- continueWatching.push(newEntry);
- }
- localStorage.setItem("continueWatching", JSON.stringify(continueWatching));
- };
- // eslint-disable-next-line react-hooks/exhaustive-deps
- }, [streamUrl, subtitles, intro, outro]);
-
- return
;
-}
\ No newline at end of file
diff --git a/src/components/player/PlayerIcons.jsx b/src/components/player/PlayerIcons.jsx
deleted file mode 100644
index 2410fa3..0000000
--- a/src/components/player/PlayerIcons.jsx
+++ /dev/null
@@ -1,103 +0,0 @@
-const backward10Icon = `
-
-
- `;
-
-const forward10Icon = `
-
-
-
- `;
-
-const forwardIcon = `
-
- `;
-
-const backwardIcon = `
-
- `;
-
-const volumeIcon = ` `;
-
-const muteIcon = `
-
-
-`;
-
-const captionIcon = `
-
-
-`;
-const captionOffIcon = ` `;
-
-const pipOffIcon = `
- `;
-
-const loadingIcon = ` `;
-
-const pipIcon = `
-
- `;
-
-const playIconLg = ` `;
-
-const playIcon = ` `;
-
-const pauseIcon = ` `;
-
-const uploadIcon = `
-
-
- `;
-
-const settingsIcon = `
-
-
- `;
-
-const fullScreenOnIcon = ` `;
-
-const fullScreenOffIcon = ` `;
-
-const logo = `
- Powered by
-
- Zen! me
-
-
-`;
-
-export {
- backward10Icon,
- forward10Icon,
- backwardIcon,
- forwardIcon,
- playIcon,
- playIconLg,
- pauseIcon,
- loadingIcon,
- uploadIcon,
- settingsIcon,
- pipIcon,
- pipOffIcon,
- volumeIcon,
- muteIcon,
- captionIcon,
- captionOffIcon,
- fullScreenOnIcon,
- fullScreenOffIcon,
- logo,
-};
diff --git a/src/components/player/artPlayerPluginVttThumbnail.js b/src/components/player/artPlayerPluginVttThumbnail.js
deleted file mode 100644
index 4cb851c..0000000
--- a/src/components/player/artPlayerPluginVttThumbnail.js
+++ /dev/null
@@ -1,72 +0,0 @@
-import getVttArray from "./getVttArray";
-
-export default function artplayerPluginVttThumbnail(option) {
- return async (art) => {
- const {
- constructor: {
- utils: { setStyle, isMobile, addClass },
- },
- template: { $progress },
- } = art;
-
- let timer = null;
- const thumbnails = await getVttArray(option.vtt);
-
- function showThumbnails($control, find, width) {
- setStyle($control, "backgroundImage", `url(${find.url})`);
- setStyle($control, "height", `${find.h}px`);
- setStyle($control, "width", `${find.w}px`);
- setStyle($control, "backgroundPosition", `-${find.x}px -${find.y}px`);
- if (width <= find.w / 2) {
- setStyle($control, "left", 0);
- } else if (width > $progress.clientWidth - find.w / 2) {
- setStyle($control, "left", `${$progress.clientWidth - find.w}px`);
- } else {
- setStyle($control, "left", `${width - find.w / 2}px`);
- }
- }
-
- art.controls.add({
- name: "vtt-thumbnail",
- position: "top",
- index: 20,
- style: option.style || {},
- mounted($control) {
- addClass($control, "art-control-thumbnails");
- art.on("setBar", async (type, percentage, event) => {
- const isMobileDroging = type === "played" && event && isMobile;
-
- if (type === "hover" || isMobileDroging) {
- const width = $progress.clientWidth * percentage;
- const second = percentage * art.duration;
- setStyle($control, "display", "flex");
-
- const find = thumbnails.find(
- (item) => second >= item.start && second <= item.end
- );
- if (!find) return setStyle($control, "display", "none");
-
- if (width > 0 && width < $progress.clientWidth) {
- showThumbnails($control, find, width);
- } else {
- if (!isMobile) {
- setStyle($control, "display", "none");
- }
- }
-
- if (isMobileDroging) {
- clearTimeout(timer);
- timer = setTimeout(() => {
- setStyle($control, "display", "none");
- }, 500);
- }
- }
- });
- },
- });
-
- return {
- name: "artplayerPluginVttThumbnail",
- };
- };
-}
diff --git a/src/components/player/artPlayerPluinChaper.js b/src/components/player/artPlayerPluinChaper.js
deleted file mode 100644
index ba681d8..0000000
--- a/src/components/player/artPlayerPluinChaper.js
+++ /dev/null
@@ -1,211 +0,0 @@
-import style from "./pluginChapterStyle.js";
-
-export default function artplayerPluginChapter(option = {}) {
- return (art) => {
- const { $player } = art.template;
- const { setStyle, append, clamp, query, isMobile, addClass, removeClass } =
- art.constructor.utils;
-
- const html = `
-
- `;
-
- let titleTimer = null;
- let $chapters = [];
-
- const $progress = art.query(".art-control-progress");
- const $inner = art.query(".art-control-progress-inner");
- const $control = append($inner, '
');
- const $title = append($inner, '
');
-
- function showTitle({ $chapter, width }) {
- const title = $chapter.dataset.title.trim();
- if (title) {
- setStyle($title, "display", "flex");
- $title.innerText = title;
- const titleWidth = $title.clientWidth;
- if (width <= titleWidth / 2) {
- setStyle($title, "left", 0);
- } else if (width > $inner.clientWidth - titleWidth / 2) {
- setStyle($title, "left", `${$inner.clientWidth - titleWidth}px`);
- } else {
- setStyle($title, "left", `${width - titleWidth / 2}px`);
- }
- } else {
- setStyle($title, "display", "none");
- }
- }
-
- function update(chapters = []) {
- $chapters = [];
- $control.innerText = "";
- removeClass($player, "artplayer-plugin-chapter");
-
- if (!Array.isArray(chapters)) return;
- if (!chapters.length) return;
- if (!art.duration) return;
-
- chapters = chapters.sort((a, b) => a.start - b.start);
-
- for (let i = 0; i < chapters.length; i++) {
- const chapter = chapters[i];
- const nextChapter = chapters[i + 1];
-
- if (chapter.end === Infinity) {
- chapter.end = art.duration;
- }
-
- if (
- typeof chapter.start !== "number" ||
- typeof chapter.end !== "number" ||
- typeof chapter.title !== "string"
- ) {
- throw new Error("Illegal chapter data type");
- }
-
- if (
- chapter.start < 0 ||
- chapter.end > Math.ceil(art.duration) ||
- chapter.start >= chapter.end
- ) {
- throw new Error("Illegal chapter time point");
- }
-
- if (nextChapter && chapter.end > nextChapter.start) {
- throw new Error("Illegal chapter time point");
- }
- }
-
- if (chapters[0].start > 0) {
- chapters.unshift({ start: 0, end: chapters[0].start, title: "" });
- }
-
- if (chapters[chapters.length - 1].end < art.duration) {
- chapters.push({
- start: chapters[chapters.length - 1].end,
- end: art.duration,
- title: "",
- });
- }
-
- for (let i = 0; i < chapters.length - 1; i++) {
- if (chapters[i].end !== chapters[i + 1].start) {
- chapters.splice(i + 1, 0, {
- start: chapters[i].end,
- end: chapters[i + 1].start,
- title: "",
- });
- }
- }
-
- $chapters = chapters.map((chapter) => {
- const $chapter = append($control, html);
- const start = clamp(chapter.start, 0, art.duration);
- const end = clamp(chapter.end, 0, art.duration);
- const duration = end - start;
- const percentage = duration / art.duration;
- $chapter.dataset.start = start;
- $chapter.dataset.end = end;
- $chapter.dataset.duration = duration;
- $chapter.dataset.title = chapter.title.trim();
- $chapter.style.width = `${percentage * 100}%`;
-
- return {
- $chapter,
- $hover: query(".art-progress-hover", $chapter),
- $loaded: query(".art-progress-loaded", $chapter),
- $played: query(".art-progress-played", $chapter),
- };
- });
-
- addClass($player, "artplayer-plugin-chapter");
- art.emit("setBar", "loaded", art.loaded || 0);
- }
-
- art.on("setBar", (type, percentage, event) => {
- if (!$chapters.length) return;
-
- for (let i = 0; i < $chapters.length; i++) {
- const { $chapter, $loaded, $played, $hover } = $chapters[i];
-
- const $target = {
- hover: $hover,
- loaded: $loaded,
- played: $played,
- }[type];
-
- if (!$target) return;
-
- const width = $control.clientWidth * percentage;
- const currentTime = art.duration * percentage;
- const duration = parseFloat($chapter.dataset.duration);
- const start = parseFloat($chapter.dataset.start);
- const end = parseFloat($chapter.dataset.end);
-
- if (currentTime < start) {
- setStyle($target, "width", 0);
- }
-
- if (currentTime > end) {
- setStyle($target, "width", "100%");
- }
-
- if (currentTime >= start && currentTime <= end) {
- const percentage = (currentTime - start) / duration;
- setStyle($target, "width", `${percentage * 100}%`);
-
- if (isMobile) {
- if (type === "played" && event) {
- showTitle({ $chapter, width });
- clearTimeout(titleTimer);
- titleTimer = setTimeout(() => {
- setStyle($title, "display", "none");
- }, 500);
- }
- } else {
- if (type === "hover") {
- showTitle({ $chapter, width });
- }
- }
- }
- }
- });
-
- if (!isMobile) {
- art.proxy($progress, "mouseleave", () => {
- if (!$chapters.length) return;
- setStyle($title, "display", "none");
- });
- }
-
- art.once("video:loadedmetadata", () => update(option.chapters));
-
- return {
- name: "artplayerPluginChapter",
- update: ({ chapters }) => update(chapters),
- };
- };
-}
-
-if (typeof document !== "undefined") {
- const id = "artplayer-plugin-chapter";
- const $style = document.getElementById(id);
- if ($style) {
- $style.textContent = style;
- } else {
- const $style = document.createElement("style");
- $style.id = id;
- $style.textContent = style;
- document.head.appendChild($style);
- }
-}
-
-if (typeof window !== "undefined") {
- window["artplayerPluginChapter"] = artplayerPluginChapter;
-}
diff --git a/src/components/player/artplayerPluginUploadSubtitle.js b/src/components/player/artplayerPluginUploadSubtitle.js
deleted file mode 100644
index 20a362d..0000000
--- a/src/components/player/artplayerPluginUploadSubtitle.js
+++ /dev/null
@@ -1,49 +0,0 @@
-import { uploadIcon } from "./PlayerIcons";
-
-export default function artplayerPluginUploadSubtitle() {
- return (art) => {
- const { getExt } = art.constructor.utils;
-
- art.setting.add({
- html: `
-
-
-
- Upload Subtitle
-
-
- `,
- icon: uploadIcon,
- onClick(setting, $setting) {
- const $input = $setting.querySelector("input[name='subtitle-upload']");
- const $label = $setting.querySelector(".subtitle-upload-label");
-
- art.proxy($input, "change", (event) => {
- const file = event.target?.files?.[0];
- if (!file) return;
-
- const url = URL.createObjectURL(file);
- art.subtitle.switch(url, {
- type: getExt(file.name),
- });
-
- event.target.value = null;
-
- // Update UI
- $label.textContent = file.name;
- art.notice.show = `Upload Subtitle :${file.name}`;
- setting.tooltip = file.name;
- });
- },
- });
- };
-}
diff --git a/src/components/player/autoSkip.js b/src/components/player/autoSkip.js
deleted file mode 100644
index 38588b9..0000000
--- a/src/components/player/autoSkip.js
+++ /dev/null
@@ -1,74 +0,0 @@
-export default function autoSkip(option) {
- function validateRanges(ranges) {
- if (!Array.isArray(ranges)) {
- throw new TypeError("Option must be an array of time ranges");
- }
-
- ranges.forEach((range, index) => {
- if (!Array.isArray(range) || range.length !== 2) {
- throw new TypeError(
- `Range at index ${index} must be an array of two numbers`
- );
- }
-
- const [start, end] = range;
- if (
- typeof start !== "number" ||
- (typeof end !== "number" && end !== Infinity)
- ) {
- throw new TypeError(
- `Range at index ${index} must contain valid numbers or Infinity`
- );
- }
-
- if (start > end && end !== Infinity) {
- throw new RangeError(
- `In range at index ${index}, start time must be less than end time`
- );
- }
-
- if (index > 0) {
- const prevEnd = ranges[index - 1][1];
- if (prevEnd !== Infinity && start <= prevEnd) {
- throw new RangeError(
- `Range at index ${index} overlaps with the previous range`
- );
- }
- }
- });
- }
- validateRanges(option);
- return (art) => {
- let skipRanges = option;
-
- function updateRanges() {
- const duration = art.duration;
- skipRanges = skipRanges.map(([start, end]) => [
- start,
- end === Infinity ? duration : end,
- ]);
- }
-
- function checkAndSkip() {
- const currentTime = art.currentTime;
- for (const [start, end] of skipRanges) {
- if (currentTime >= start && currentTime < end) {
- art.seek = end;
- break;
- }
- }
- }
-
- art.on("video:timeupdate", checkAndSkip);
- art.on("video:loadedmetadata", updateRanges);
-
- return {
- name: "autoSkip",
- update(newOption = []) {
- validateRanges(newOption);
- skipRanges = newOption;
- updateRanges();
- },
- };
- };
-}
diff --git a/src/components/player/getChapterStyle.js b/src/components/player/getChapterStyle.js
deleted file mode 100644
index c558d89..0000000
--- a/src/components/player/getChapterStyle.js
+++ /dev/null
@@ -1,82 +0,0 @@
-export default function getChapterStyles(intro, outro) {
- let styles = `
- .art-chapters {
- gap: 0px !important;
- }
- `;
-
- if (intro && outro) {
- if (
- intro.start === 0 &&
- intro.end === 0 &&
- outro.start === 0 &&
- outro.end === 0
- ) {
- styles += ``;
- } else if (
- intro.start === 0 &&
- intro.end === 0 &&
- outro.start !== 0 &&
- outro.end !== 0
- ) {
- styles += `
- .art-chapter:nth-child(2) {
- background-color: #fdd253;
- transform: scaleY(0.6);
- }
- `;
- } else if (
- intro.start === 0 &&
- intro.end !== 0 &&
- outro.start === 0 &&
- outro.end === 0
- ) {
- styles += `
- .art-chapter:nth-child(1){
- background-color: #fdd253;
- transform: scaleY(0.6);
- }
- `;
- } else if (
- intro.start === 0 &&
- intro.end !== 0 &&
- outro.start !== 0 &&
- outro.end !== 0
- ) {
- styles += `
- .art-chapter:nth-child(1),
- .art-chapter:nth-child(3) {
- background-color: #fdd253;
- transform: scaleY(0.6);
- }
- `;
- } else if (
- intro.start !== 0 &&
- intro.end !== 0 &&
- outro.start === 0 &&
- outro.end === 0
- ) {
- styles += `
- .art-chapter:nth-child(2) {
- background-color: #fdd253;
- transform: scaleY(0.6);
- }
- `;
- } else if (
- intro.start !== 0 &&
- intro.end !== 0 &&
- outro.start !== 0 &&
- outro.end !== 0
- ) {
- styles += `
- .art-chapter:nth-child(2),
- .art-chapter:nth-child(4) {
- background-color: #fdd253;
- transform: scaleY(0.6);
- }
- `;
- }
- }
-
- return styles;
-}
diff --git a/src/components/player/getVttArray.js b/src/components/player/getVttArray.js
deleted file mode 100644
index 6df8d10..0000000
--- a/src/components/player/getVttArray.js
+++ /dev/null
@@ -1,101 +0,0 @@
-function padEnd(str, targetLength, padString) {
- if (str.length > targetLength) {
- return String(str);
- } else {
- targetLength = targetLength - str.length;
- if (targetLength > padString.length) {
- padString += padString.repeat(targetLength / padString.length);
- }
- return String(str) + padString.slice(0, targetLength);
- }
-}
-
-function t2d(time) {
- var arr = time.split(".");
- var left = arr[0].split(":") || [];
- var right = padEnd(arr[1] || "0", 3, "0");
- var ms = Number(right) / 1000;
-
- var h = Number(left[left.length - 3] || 0) * 3600;
- var m = Number(left[left.length - 2] || 0) * 60;
- var s = Number(left[left.length - 1] || 0);
- return h + m + s + ms;
-}
-
-export default async function getVttArray(vttUrl = "") {
- const vttString = await (await fetch(vttUrl)).text();
- let lines = vttString.split(/\r?\n/).filter((item) => item.trim());
- const vttArray = [];
-
- //checking if the WEBVTT header is present
- const isWebVTTHeader = lines[0].trim().toUpperCase() === "WEBVTT";
-
- let startIndex = 0;
- let increment = 2;
-
- // Check if the first line is an index line
- const indexLineReg = /^\d+$/; // Regex to match lines containing only digits
-
- if (!isWebVTTHeader && indexLineReg.test(lines[0].trim())) {
- // console.log("WEBVTT not present but index line is present");
- increment = 3; // Set increment to 3 if an index line is present
- startIndex = 1; // Start from the second line
- } else if (isWebVTTHeader) {
- // If WEBVTT is present, check the next line
- // console.log("WEBVTT lines is present checking if index line is present...");
- const indexLine = lines[1];
- if (indexLine && indexLineReg.test(indexLine.trim())) {
- // console.log("Index line is present");
- increment = 3; // Set increment to 3 if an index line is present
- startIndex = 2; // Start from the line after the index
- } else {
- // console.log("Index line is not present");
- startIndex = 1; // If no index line, start from the line after WEBVTT
- increment = 2; // Set increment to 2
- }
- }
-
- for (let i = startIndex; i < lines.length; i += increment) {
- const time = lines[i];
- const text = lines[i + 1];
- if (!text.trim()) continue;
-
- // console.log(`Processing time line: ${time}`); // Logging processing timestamps
-
- const timeReg =
- /((?:[0-9]{2}:)?(?:[0-9]{2}:)?[0-9]{2}(?:.[0-9]{3})?)(?: ?--> ?)((?:[0-9]{2}:)?(?:[0-9]{2}:)?[0-9]{2}(?:.[0-9]{3})?)/;
- const timeMatch = time.match(timeReg);
-
- if (!timeMatch) {
- // console.warn(`Failed to match time: ${time}`); // Log failed matches
- continue; // Skip to the next loop iteration if match fails
- }
-
- const textReg = /(.*)#(\w{4})=(.*)/i;
- const textMatch = text.match(textReg);
- const start = Math.floor(t2d(timeMatch[1]));
- const end = Math.floor(t2d(timeMatch[2]));
-
- let url = textMatch[1];
- const isAbsoluteUrl = /^\/|((https?|ftp|file):\/\/)/i.test(url);
- if (!isAbsoluteUrl) {
- const urlArr = vttUrl.split("/");
- urlArr.pop();
- urlArr.push(url);
- url = urlArr.join("/");
- }
-
- const result = { start, end, url };
-
- const keys = textMatch[2].split("");
- const values = textMatch[3].split(",");
-
- for (let j = 0; j < keys.length; j++) {
- result[keys[j]] = values[j];
- }
-
- vttArray.push(result);
- }
-
- return vttArray;
-}
diff --git a/src/components/player/pluginChapterStyle.js b/src/components/player/pluginChapterStyle.js
deleted file mode 100644
index 1e945ce..0000000
--- a/src/components/player/pluginChapterStyle.js
+++ /dev/null
@@ -1,55 +0,0 @@
-export default `
-.artplayer-plugin-chapter .art-control-progress-inner {
- height: 100% !important;
- background-color: transparent !important;
-}
-.artplayer-plugin-chapter .art-control-progress-inner > .art-progress-hover,
-.artplayer-plugin-chapter .art-control-progress-inner > .art-progress-loaded,
-.artplayer-plugin-chapter .art-control-progress-inner > .art-progress-played {
- display: none !important;
-}
-.artplayer-plugin-chapter .art-control-thumbnails {
- bottom: calc(var(--art-bottom-gap) + 64px) !important;
-}
-.artplayer-plugin-chapter .art-chapters {
- position: absolute;
- z-index: 0;
- inset: 0;
- display: flex;
- align-items: center;
- gap: 4px;
- height: 100%;
- transform: scaleY(1.25);
-}
-.artplayer-plugin-chapter .art-chapters .art-chapter {
- display: flex;
- align-items: center;
- height: 100%;
-}
-.artplayer-plugin-chapter .art-chapters .art-chapter .art-chapter-inner {
- position: relative;
- cursor: pointer;
- width: 100%;
- height: 50%;
- border-radius: 10px;
- overflow: hidden;
- transition: height var(--art-transition-duration) ease;
- background-color: var(--art-progress-color);
-}
-.artplayer-plugin-chapter .art-chapters .art-chapter:hover .art-chapter-inner {
- height: 100%;
-}
-.artplayer-plugin-chapter .art-chapter-title {
- display: none;
- position: absolute;
- z-index: 70;
- top: -50px;
- left: 0;
- padding: 3px 5px;
- line-height: 1;
- font-size: 14px;
- border-radius: var(--art-border-radius);
- white-space: nowrap;
- background-color: var(--art-tip-background);
-}
-`;
diff --git a/src/components/producer/Producer.jsx b/src/components/producer/Producer.jsx
deleted file mode 100644
index 90b7c10..0000000
--- a/src/components/producer/Producer.jsx
+++ /dev/null
@@ -1,102 +0,0 @@
-import { useNavigate, useParams, useSearchParams } from "react-router-dom";
-import Error from "../error/Error";
-import Topten from "../topten/Topten";
-import Genre from "../genres/Genre";
-import SidecardLoader from "../Loader/Sidecard.loader";
-import PageSlider from "../pageslider/PageSlider";
-import CategoryCard from "../categorycard/CategoryCard";
-import { useEffect, useState } from "react";
-import { useHomeInfo } from "@/src/context/HomeInfoContext";
-import getProducer from "@/src/utils/getProducer.utils";
-import Loader from "../Loader/Loader";
-
-function Producer() {
- const { id } = useParams();
- const [searchParams, setSearchParams] = useSearchParams();
- const [producerInfo, setProducerInfo] = useState(null);
- const [loading, setLoading] = useState(true);
- const [error, setError] = useState(null);
- const [totalPages, setTotalPages] = useState(0);
- const page = parseInt(searchParams.get("page")) || 1;
- const { homeInfo, homeInfoLoading } = useHomeInfo();
- const navigate = useNavigate();
- useEffect(() => {
- const fetchProducerInfo = async () => {
- setLoading(true);
- try {
- const data = await getProducer(id, page);
- setProducerInfo(data.data);
- setTotalPages(data.totalPages);
- setLoading(false);
- } catch (err) {
- setError(err);
- console.error("Error fetching category info:", err);
- }
- };
- fetchProducerInfo();
- window.scrollTo(0, 0);
- }, [id, page]);
- if (loading) return ;
- if (error) {
- navigate("/error-page");
- return ;
- }
- if (!producerInfo) {
- navigate("/404-not-found-page");
- return null;
- }
- const handlePageChange = (newPage) => {
- setSearchParams({ page: newPage });
- };
-
- return (
-
- {producerInfo ? (
-
- {page > totalPages ? (
-
- You came a long way, go back
- nothing is here
-
- ) : (
-
- {producerInfo && (
-
- )}
-
-
- )}
-
- {homeInfoLoading ? (
-
- ) : (
- <>
- {homeInfo && homeInfo.topten && (
-
- )}
- {homeInfo?.genres && }
- >
- )}
-
-
- ) : (
-
- )}
-
- );
-}
-export default Producer;
diff --git a/src/components/qtip/Qtip.jsx b/src/components/qtip/Qtip.jsx
deleted file mode 100644
index a3c4efe..0000000
--- a/src/components/qtip/Qtip.jsx
+++ /dev/null
@@ -1,159 +0,0 @@
-import BouncingLoader from "../ui/bouncingloader/Bouncingloader";
-import getQtip from "@/src/utils/getQtip.utils";
-import { useState, useEffect } from "react";
-import { FontAwesomeIcon } from "@fortawesome/react-fontawesome";
-import {
- faPlay,
- faStar,
- faClosedCaptioning,
- faMicrophone,
-} from "@fortawesome/free-solid-svg-icons";
-import { Link } from "react-router-dom";
-
-function Qtip({ id }) {
- const [qtip, setQtip] = useState(null);
- const [loading, setLoading] = useState(true);
- const [error, setError] = useState(null);
-
- useEffect(() => {
- const fetchQtipInfo = async () => {
- setLoading(true);
- try {
- const data = await getQtip(id);
- setQtip(data);
- } catch (err) {
- console.error("Error fetching anime info:", err);
- setError(err);
- } finally {
- setLoading(false);
- }
- };
- fetchQtipInfo();
- }, [id]);
-
- return (
-
- {loading || error || !qtip ? (
-
- ) : (
-
-
- {qtip.title}
-
-
- {qtip?.rating && (
-
- )}
-
- {qtip?.quality && (
-
- )}
-
- {qtip?.subCount && (
-
- )}
- {qtip?.dubCount && (
-
- )}
- {qtip?.episodeCount && (
-
-
- {qtip.episodeCount}
-
-
- )}
-
- {qtip?.type && (
-
- )}
-
-
- {qtip?.description && (
-
- {qtip.description}
-
- )}
-
- {qtip?.japaneseTitle && (
-
-
- Japanese:
-
- {qtip.japaneseTitle}
-
- )}
- {qtip?.Synonyms && (
-
-
- Synonyms:
-
- {qtip.Synonyms}
-
- )}
- {qtip?.airedDate && (
-
- Aired:
- {qtip.airedDate}
-
- )}
- {qtip?.status && (
-
-
- Status:
-
- {qtip.status}
-
- )}
- {qtip?.genres && (
-
-
- Genres:
-
- {qtip.genres.map((genre, index) => (
-
-
- {genre}
- {index === qtip.genres.length - 1 ? "" : ","}
-
-
- ))}
-
- )}
-
-
-
-
Watch Now
-
-
- )}
-
- );
-}
-
-export default Qtip;
diff --git a/src/components/schedule/Schedule.jsx b/src/components/schedule/Schedule.jsx
deleted file mode 100644
index 200f6a6..0000000
--- a/src/components/schedule/Schedule.jsx
+++ /dev/null
@@ -1,241 +0,0 @@
-import { useState, useEffect, useRef } from "react";
-import getSchedInfo from "../../utils/getScheduleInfo.utils";
-import { Pagination, Navigation } from "swiper/modules";
-import { Swiper, SwiperSlide } from "swiper/react";
-import { FaChevronLeft, FaChevronRight } from "react-icons/fa";
-import BouncingLoader from "../ui/bouncingloader/Bouncingloader";
-import { FontAwesomeIcon } from "@fortawesome/react-fontawesome";
-import { faPlay } from "@fortawesome/free-solid-svg-icons";
-import "./schedule.css";
-import { Link } from "react-router-dom";
-
-const Schedule = () => {
- const [dates, setDates] = useState([]);
- const [loading, setLoading] = useState(false);
- const [error, setError] = useState(null);
- const [showAll, setShowAll] = useState(false);
- const [currentActiveIndex, setCurrentActiveIndex] = useState(null);
- const [scheduleData, setscheduleData] = useState([]);
- const [currentTime, setCurrentTime] = useState(new Date());
- const cardRefs = useRef([]);
- const swiperRef = useRef(null);
- const currentDate = new Date();
- const year = currentDate.getFullYear();
- const month = currentDate.getMonth();
- const monthName = currentDate.toLocaleString("default", { month: "short" });
- const daysInMonth = new Date(year, month + 1, 0).getDate();
- const GMTOffset = `GMT ${
- new Date().getTimezoneOffset() > 0 ? "-" : "+"
- }${String(Math.floor(Math.abs(new Date().getTimezoneOffset()) / 60)).padStart(
- 2,
- "0"
- )}:${String(Math.abs(new Date().getTimezoneOffset()) % 60).padStart(2, "0")}`;
- const months = [];
-
- useEffect(() => {
- for (let day = 1; day <= daysInMonth; day++) {
- const date = new Date(year, month, day);
- const dayname = date.toLocaleString("default", { weekday: "short" });
- const yearr = date.getFullYear();
- const monthh = String(date.getMonth() + 1).padStart(2, "0");
- const dayy = String(date.getDate()).padStart(2, "0");
- const fulldate = `${yearr}-${monthh}-${dayy}`;
- months.push({ day, monthName, dayname, fulldate });
- }
- setDates(months);
- const timer = setInterval(() => {
- setCurrentTime(new Date());
- }, 1000);
- return () => clearInterval(timer);
- }, []);
-
- useEffect(() => {
- const todayIndex = dates.findIndex(
- (date) =>
- date.fulldate ===
- `${currentDate.getFullYear()}-${String(
- currentDate.getMonth() + 1
- ).padStart(2, "0")}-${String(currentDate.getDate()).padStart(2, "0")}`
- );
-
- if (todayIndex !== -1) {
- setCurrentActiveIndex(todayIndex);
- toggleActive(todayIndex);
- }
- }, [dates]);
-
- const fetchSched = async (date) => {
- try {
- setLoading(true);
-
- // Check if cached data exists
- const cachedData = localStorage.getItem(`schedule-${date}`);
- if (cachedData) {
- const parsedData = JSON.parse(cachedData);
- setscheduleData(Array.isArray(parsedData) ? parsedData : []);
- } else {
- const data = await getSchedInfo(date);
- setscheduleData(Array.isArray(data) ? data : []);
- localStorage.setItem(`schedule-${date}`, JSON.stringify(data || []));
- }
- } catch (err) {
- console.error("Error fetching schedule info:", err);
- setError(err);
- } finally {
- setLoading(false);
- }
- };
-
- const toggleActive = (index) => {
- cardRefs.current.forEach((card) => {
- if (card) {
- card.classList.remove("active");
- }
- });
- if (cardRefs.current[index]) {
- cardRefs.current[index].classList.add("active");
- if (dates[index] && dates[index].fulldate) {
- fetchSched(dates[index].fulldate);
- }
- setCurrentActiveIndex(index);
- }
- };
-
- const toggleShowAll = () => {
- setShowAll(!showAll);
- };
-
- useEffect(() => {
- setShowAll(false);
- if (currentActiveIndex !== null && swiperRef.current) {
- swiperRef.current.slideTo(currentActiveIndex);
- }
- }, [currentActiveIndex]);
-
- return (
- <>
-
-
-
- Estimated Schedule
-
-
- ({GMTOffset}) {currentTime.toLocaleDateString()}{" "}
- {currentTime.toLocaleTimeString()}
-
-
-
-
-
-
(swiperRef.current = swiper)}
- >
- {dates &&
- dates.map((date, index) => (
-
- (cardRefs.current[index] = el)}
- onClick={() => toggleActive(index)}
- className={`h-[70px] flex flex-col justify-center items-center w-full text-center rounded-xl shadow-lg cursor-pointer ${
- currentActiveIndex === index
- ? "bg-[#ffbade] text-black"
- : "bg-white bg-opacity-5 text-[#ffffff] hover:bg-[#373646] transition-all duration-300 ease-in-out"
- }`}
- >
-
- {date.dayname}
-
-
- {date.monthName} {date.day}
-
-
-
- ))}
-
-
-
-
-
-
-
-
-
- {loading ? (
-
-
-
- ) : !scheduleData || scheduleData.length === 0 ? (
-
- No data to display
-
- ) : error ? (
-
- Something went wrong
-
- ) : (
-
- {(showAll
- ? scheduleData
- : Array.isArray(scheduleData)
- ? scheduleData.slice(0, 7)
- : []
- ).map((item, idx) => (
-
-
-
- {item.time || "N/A"}
-
-
- {item.title || "N/A"}
-
-
-
-
-
- Episode {item.episode_no || "N/A"}
-
-
-
- ))}
- {scheduleData.length > 7 && (
-
- {showAll ? "Show Less" : "Show More"}
-
- )}
-
- )}
- >
- );
-};
-
-export default Schedule;
diff --git a/src/components/schedule/schedule.css b/src/components/schedule/schedule.css
deleted file mode 100644
index 440906f..0000000
--- a/src/components/schedule/schedule.css
+++ /dev/null
@@ -1,11 +0,0 @@
-.next,
-.prev {
- width: 30px;
- height: 30px;
- border-radius: 100%;
- background-color: white;
- color: black;
- font-size: 13px;
- padding: 10px;
- z-index: 10;
-}
diff --git a/src/components/searchbar/MobileSearch.jsx b/src/components/searchbar/MobileSearch.jsx
deleted file mode 100644
index 80a56d7..0000000
--- a/src/components/searchbar/MobileSearch.jsx
+++ /dev/null
@@ -1,73 +0,0 @@
-import Suggestion from '../suggestion/Suggestion';
-import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
-import { faMagnifyingGlass } from '@fortawesome/free-solid-svg-icons';
-import useSearch from '@/src/hooks/useSearch';
-import { useNavigate } from 'react-router-dom';
-
-function MobileSearch() {
- const navigate = useNavigate();
- const {
- isSearchVisible,
- searchValue,
- setSearchValue,
- isFocused,
- setIsFocused,
- debouncedValue,
- suggestionRefs,
- addSuggestionRef,
- } = useSearch();
- const handleSearchClick = () => {
- if (searchValue.trim() && window.innerWidth <= 600) {
- navigate(`/search?keyword=${encodeURIComponent(searchValue)}`);
- }
- };
- return (
- <>
- {isSearchVisible && (
-
-
setSearchValue(e.target.value)}
- onFocus={() => setIsFocused(true)}
- onBlur={() => {
- setTimeout(() => {
- const isInsideSuggestionBox = suggestionRefs.current.some(
- (ref) => ref && ref.contains(document.activeElement),
- );
- if (!isInsideSuggestionBox) {
- setIsFocused(false);
- }
- }, 100);
- }}
- onKeyDown={(e) => {
- if (e.key === 'Enter') {
- handleSearchClick();
- }
- }}
- />
-
-
-
- {searchValue.trim() && isFocused && (
-
-
-
- )}
-
- )}
- >
- );
-}
-
-export default MobileSearch;
diff --git a/src/components/searchbar/WebSearch.jsx b/src/components/searchbar/WebSearch.jsx
deleted file mode 100644
index 8f36cd6..0000000
--- a/src/components/searchbar/WebSearch.jsx
+++ /dev/null
@@ -1,77 +0,0 @@
-import { faMagnifyingGlass } from "@fortawesome/free-solid-svg-icons";
-import { FontAwesomeIcon } from "@fortawesome/react-fontawesome";
-import Suggestion from "../suggestion/Suggestion";
-import useSearch from "@/src/hooks/useSearch";
-import { useNavigate } from "react-router-dom";
-
-function WebSearch() {
- const navigate = useNavigate();
- const {
- setIsSearchVisible,
- searchValue,
- setSearchValue,
- isFocused,
- setIsFocused,
- debouncedValue,
- suggestionRefs,
- addSuggestionRef,
- } = useSearch();
-
- const handleSearchClick = () => {
- if (window.innerWidth <= 600) {
- setIsSearchVisible((prev) => !prev);
- }
- if (searchValue.trim() && window.innerWidth > 600) {
- navigate(`/search?keyword=${encodeURIComponent(searchValue)}`);
- }
- };
-
- return (
-
-
setSearchValue(e.target.value)}
- onFocus={() => setIsFocused(true)}
- onBlur={() => {
- setTimeout(() => {
- const isInsideSuggestionBox = suggestionRefs.current.some(
- (ref) => ref && ref.contains(document.activeElement),
- );
- if (!isInsideSuggestionBox) {
- setIsFocused(false);
- }
- }, 100);
- }}
- onKeyDown={(e) => {
- if (e.key === 'Enter') {
- if (searchValue.trim()) {
- navigate(`/search?keyword=${encodeURIComponent(searchValue)}`);
- }
- }
- }}
- />
-
-
-
- {searchValue.trim() && isFocused && (
-
-
-
- )}
-
- );
-}
-
-export default WebSearch;
diff --git a/src/components/servers/Servers.css b/src/components/servers/Servers.css
deleted file mode 100644
index 10bf0e4..0000000
--- a/src/components/servers/Servers.css
+++ /dev/null
@@ -1,9 +0,0 @@
-.servers {
- border-bottom: 1px dashed #35373d;
-}
-.servers:only-child {
- border-bottom: none;
-}
-.servers:last-child {
- border-bottom: none;
-}
diff --git a/src/components/servers/Servers.jsx b/src/components/servers/Servers.jsx
deleted file mode 100644
index 39f82bd..0000000
--- a/src/components/servers/Servers.jsx
+++ /dev/null
@@ -1,187 +0,0 @@
-/* eslint-disable react/prop-types */
-import {
- faClosedCaptioning,
- faFile,
- faMicrophone,
-} from "@fortawesome/free-solid-svg-icons";
-import { FontAwesomeIcon } from "@fortawesome/react-fontawesome";
-import BouncingLoader from "../ui/bouncingloader/Bouncingloader";
-import "./Servers.css";
-import { useEffect } from "react";
-
-function Servers({
- servers,
- activeEpisodeNum,
- activeServerId,
- setActiveServerId,
- serverLoading,
- setActiveServerType,
- setActiveServerName,
-}) {
- const subServers =
- servers?.filter((server) => server.type === "sub") || [];
- const dubServers =
- servers?.filter((server) => server.type === "dub") || [];
- const rawServers =
- servers?.filter((server) => server.type === "raw") || [];
-
- useEffect(() => {
- const savedServerName = localStorage.getItem("server_name");
- if (savedServerName) {
- const matchingServer = servers?.find(
- (server) => server.serverName === savedServerName,
- );
-
- if (matchingServer) {
- setActiveServerId(matchingServer.data_id);
- setActiveServerType(matchingServer.type);
- } else if (servers && servers.length > 0) {
- setActiveServerId(servers[0].data_id);
- setActiveServerType(servers[0].type);
- }
- } else if (servers && servers.length > 0) {
- setActiveServerId(servers[0].data_id);
- setActiveServerType(servers[0].type);
- }
- // eslint-disable-next-line react-hooks/exhaustive-deps
- }, [servers]);
-
- const handleServerSelect = (server) => {
- setActiveServerId(server.data_id);
- setActiveServerType(server.type);
- setActiveServerName(server.serverName);
- localStorage.setItem("server_name", server.serverName);
- localStorage.setItem("server_type", server.type);
- };
- return (
-
- {serverLoading ? (
-
-
-
- ) : servers ? (
-
-
-
- You are watching
-
- Episode {activeEpisodeNum}
-
-
-
- If the current server doesn't work, please try other servers
- beside.
-
-
-
- {rawServers.length > 0 && (
-
-
-
- {rawServers.map((item, index) => (
-
handleServerSelect(item)}
- >
-
- {item.serverName}
-
-
- ))}
-
-
- )}
- {subServers.length > 0 && (
-
-
-
- {subServers.map((item, index) => (
-
handleServerSelect(item)}
- >
-
- {item.serverName}
-
-
- ))}
-
-
- )}
- {dubServers.length > 0 && (
-
-
-
- {dubServers.map((item, index) => (
-
handleServerSelect(item)}
- >
-
- {item.serverName}
-
-
- ))}
-
-
- )}
-
-
- ) : (
-
- Could not load servers
- Either reload or try again after sometime
-
- )}
-
- );
-}
-
-export default Servers;
diff --git a/src/components/sidebar/Sidebar.jsx b/src/components/sidebar/Sidebar.jsx
deleted file mode 100644
index 61a61c9..0000000
--- a/src/components/sidebar/Sidebar.jsx
+++ /dev/null
@@ -1,141 +0,0 @@
-import { FaChevronLeft } from "react-icons/fa";
-import { FontAwesomeIcon } from "@fortawesome/react-fontawesome";
-import { faFilm, faRandom } from "@fortawesome/free-solid-svg-icons";
-import { useLanguage } from "@/src/context/LanguageContext";
-import { useEffect } from "react";
-import { Link, useLocation } from "react-router-dom";
-import {
- cleanupScrollbar,
- toggleScrollbar,
-} from "@/src/helper/toggleScrollbar";
-
-const Sidebar = ({ isOpen, onClose }) => {
- const { language, toggleLanguage } = useLanguage();
- const location = useLocation();
-
- useEffect(() => {
- toggleScrollbar(isOpen);
- return () => {
- cleanupScrollbar();
- };
- }, [isOpen]);
-
- useEffect(() => {
- onClose();
- }, [location]);
-
- return (
- <>
- {isOpen && (
-
- )}
-
-
-
-
-
- {[
- { icon: faRandom, label: "Random" },
- { icon: faFilm, label: "Movie" },
- ].map((item, index) => (
-
-
-
- {item.label}
-
-
- ))}
-
-
- {["EN", "JP"].map((lang, index) => (
- toggleLanguage(lang)}
- className={`px-1 py-[1px] text-xs font-bold ${
- index === 0 ? "rounded-l-[3px]" : "rounded-r-[3px]"
- } ${
- language === lang
- ? "bg-[#ffbade] text-black"
- : "bg-gray-600 text-white"
- } max-[575px]:text-[9px] max-[575px]:py-0`}
- >
- {lang}
-
- ))}
-
-
-
-
-
- {[
- { name: "Home", path: "/home" },
- { name: "Subbed Anime", path: "/subbed-anime" },
- { name: "Dubbed Anime", path: "/dubbed-anime" },
- { name: "Most Popular", path: "/most-popular" },
- { name: "Movies", path: "/movie" },
- { name: "TV Series", path: "/tv" },
- { name: "OVAs", path: "/ova" },
- { name: "ONAs", path: "/ona" },
- { name: "Specials", path: "/special" },
- {
- name: "Join Telegram",
- path: "https://t.me/zenime_discussion",
- },
- ].map((item, index) => (
-
-
- {item.name}
-
-
- ))}
-
-
-
- >
- );
-};
-
-export default Sidebar;
diff --git a/src/components/sidecard/Sidecard.jsx b/src/components/sidecard/Sidecard.jsx
deleted file mode 100644
index fb539da..0000000
--- a/src/components/sidecard/Sidecard.jsx
+++ /dev/null
@@ -1,142 +0,0 @@
-import React, { useState } from "react";
-import { FontAwesomeIcon } from "@fortawesome/react-fontawesome";
-import {
- faClosedCaptioning,
- faMicrophone,
-} from "@fortawesome/free-solid-svg-icons";
-import { useLanguage } from "@/src/context/LanguageContext";
-import { Link, useNavigate } from "react-router-dom";
-import useToolTipPosition from "@/src/hooks/useToolTipPosition";
-import Qtip from "../qtip/Qtip";
-
-function Sidecard({ data, label, className, limit }) {
- const { language } = useLanguage();
- const navigate = useNavigate();
- const [showAll, setShowAll] = useState(false);
- const [hoverTimeout, setHoverTimeout] = useState(null);
- const handleMouseEnter = (item, index) => {
- const timeout = setTimeout(() => {
- setHoveredItem(item.id + index);
- }, 400);
- setHoverTimeout(timeout);
- };
- const handleMouseLeave = () => {
- clearTimeout(hoverTimeout);
- setHoveredItem(null);
- };
- const toggleShowAll = () => {
- setShowAll((prev) => !prev);
- };
-
- const displayedData = limit
- ? data.slice(0, limit)
- : showAll
- ? data
- : data.slice(0, 6);
- const [hoveredItem, setHoveredItem] = useState(null);
- const { tooltipPosition, tooltipHorizontalPosition, cardRefs } =
- useToolTipPosition(hoveredItem, data);
- return (
-
-
{label}
-
- {data &&
- displayedData.map((item, index) => (
-
(cardRefs.current[index] = el)}
- >
-
- {hoveredItem === item.id + index &&
- window.innerWidth > 1024 && (
-
-
-
- )}
-
navigate(`/watch/${item.id}`)}
- onMouseEnter={() => handleMouseEnter(item, index)}
- onMouseLeave={handleMouseLeave}
- />
-
-
- window.scrollTo({ top: 0, behavior: "smooth" })
- }
- >
- {language === "EN" ? item.title : item.japanese_title}
-
-
- {item.tvInfo?.sub && (
-
-
-
- {item.tvInfo.sub}
-
-
- )}
- {item.tvInfo?.dub && (
-
-
-
- {item.tvInfo.dub}
-
-
- )}
- {item.tvInfo?.showType && (
-
-
-
- {item.tvInfo.showType}
-
-
- )}
-
-
-
-
- ))}
- {!limit && data.length > 6 && (
-
- {showAll ? "Show less" : "Show more"}
-
- )}
-
-
- );
-}
-
-export default React.memo(Sidecard);
diff --git a/src/components/splashscreen/SplashScreen.css b/src/components/splashscreen/SplashScreen.css
deleted file mode 100644
index 7401cba..0000000
--- a/src/components/splashscreen/SplashScreen.css
+++ /dev/null
@@ -1,227 +0,0 @@
-/* Base styles */
-body {
- margin: 0;
- font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
- color: white;
-}
-
-/* Container and background */
-.splash-container {
- min-height: 100vh;
- width: 100%;
- position: relative;
- background: url('/splash.jpg') no-repeat center center fixed;
- background-size: cover;
- display: flex;
- justify-content: center;
- align-items: flex-start;
- padding: 0 30px;
-}
-
-.splash-overlay {
- position: absolute;
- top: 0;
- left: 0;
- right: 0;
- bottom: 0;
- background: rgba(0, 0, 0, 0.7);
- z-index: 1;
-}
-
-.content-wrapper {
- position: relative;
- z-index: 2;
- width: 100%;
- max-width: 800px;
- display: flex;
- flex-direction: column;
- align-items: center;
- padding-top: 140px;
-}
-
-/* Logo */
-.logo-container {
- margin-bottom: 30px;
-}
-
-.logo {
- height: 75px;
- width: auto;
-}
-
-/* Search */
-.search-container {
- width: 100%;
- max-width: 500px;
- position: relative;
- margin-bottom: 24px;
-}
-
-.search-input {
- width: 100%;
- padding: 14px 48px 14px 20px;
- background: rgba(17, 17, 17, 0.75);
- border: 1px solid rgba(255, 255, 255, 0.1);
- border-radius: 8px;
- color: white;
- font-size: 16px;
- outline: none;
- transition: border-color 0.2s;
-}
-
-.search-input:focus {
- border-color: rgba(255, 255, 255, 0.3);
-}
-
-.search-input::placeholder {
- color: rgba(255, 255, 255, 0.5);
-}
-
-.search-button {
- position: absolute;
- right: 16px;
- top: 50%;
- transform: translateY(-50%);
- background: none;
- border: none;
- color: rgba(255, 255, 255, 0.5);
- cursor: pointer;
- padding: 0;
- font-size: 18px;
- transition: color 0.2s;
-}
-
-.search-button:hover {
- color: white;
-}
-
-/* Enter button */
-.enter-button {
- background: white;
- color: black;
- padding: 12px 24px;
- border-radius: 8px;
- text-decoration: none;
- font-weight: 500;
- margin: 8px 0 60px;
- transition: background-color 0.2s;
-}
-
-.enter-button:hover {
- background: #ffbade;
-}
-
-/* FAQ Section */
-.faq-section {
- width: 100%;
- max-width: 700px;
-}
-
-.faq-title {
- font-size: 32px;
- font-weight: 700;
- text-align: center;
- margin-bottom: 40px;
- color: white;
-}
-
-.faq-list {
- display: flex;
- flex-direction: column;
- gap: 10px;
-}
-
-.faq-item {
- background: #141414;
- border-radius: 12px;
- overflow: hidden;
- border: 1px solid #1a1a1a;
-}
-
-.faq-question {
- width: 100%;
- padding: 18px 24px;
- display: flex;
- justify-content: space-between;
- align-items: center;
- background: none;
- border: none;
- color: white;
- font-size: 17px;
- text-align: left;
- cursor: pointer;
- transition: all 0.2s ease;
-}
-
-.faq-question:hover {
- background: #1a1a1a;
-}
-
-.faq-toggle {
- font-size: 16px;
- color: white;
- opacity: 0.8;
- transition: transform 0.2s ease;
-}
-
-.faq-toggle.rotate {
- transform: rotate(180deg);
-}
-
-.faq-answer {
- padding: 0 24px 18px;
- color: rgba(255, 255, 255, 0.7);
- line-height: 1.6;
- font-size: 15px;
-}
-
-/* Responsive adjustments */
-@media (max-width: 768px) {
- .content-wrapper {
- padding-top: 100px;
- }
-
- .logo {
- height: 60px;
- }
-
- .search-input {
- padding: 12px 40px 12px 16px;
- font-size: 15px;
- }
-
- .faq-title {
- font-size: 24px;
- margin-bottom: 24px;
- }
-}
-
-@media (max-width: 480px) {
- .content-wrapper {
- padding-top: 80px;
- }
-
- .logo {
- height: 50px;
- }
-
- .search-input {
- padding: 12px 36px 12px 14px;
- font-size: 14px;
- }
-
- .enter-button {
- padding: 10px 20px;
- font-size: 14px;
- }
-
- .faq-question {
- padding: 16px;
- font-size: 15px;
- }
-
- .faq-answer {
- padding: 0 16px 16px;
- font-size: 14px;
- }
-}
diff --git a/src/components/splashscreen/SplashScreen.jsx b/src/components/splashscreen/SplashScreen.jsx
deleted file mode 100644
index b060ae0..0000000
--- a/src/components/splashscreen/SplashScreen.jsx
+++ /dev/null
@@ -1,107 +0,0 @@
-import { useState, useCallback } from "react";
-import { Link, useNavigate } from "react-router-dom";
-import "./SplashScreen.css";
-import logoTitle from "@/src/config/logoTitle";
-import { FontAwesomeIcon } from "@fortawesome/react-fontawesome";
-import { faMagnifyingGlass, faChevronDown } from "@fortawesome/free-solid-svg-icons";
-
-const FAQ_ITEMS = [
- {
- question: "Is JustAnime safe?",
- answer: "Yes, JustAnime is completely safe to use. We ensure all content is properly scanned and secured for our users."
- },
- {
- question: "What makes JustAnime the best site to watch anime free online?",
- answer: "JustAnime offers high-quality streaming, a vast library of anime, no intrusive ads, and a user-friendly interface - all completely free."
- },
- {
- question: "How do I request an anime?",
- answer: "You can submit anime requests through our contact form or by reaching out to our support team."
- }
-];
-
-function SplashScreen() {
- const navigate = useNavigate();
- const [search, setSearch] = useState("");
- const [expandedFaq, setExpandedFaq] = useState(null);
-
- const handleSearchSubmit = useCallback(() => {
- const trimmedSearch = search.trim();
- if (!trimmedSearch) return;
- const queryParam = encodeURIComponent(trimmedSearch);
- navigate(`/search?keyword=${queryParam}`);
- }, [search, navigate]);
-
- const handleKeyDown = useCallback(
- (e) => {
- if (e.key === "Enter") {
- handleSearchSubmit();
- }
- },
- [handleSearchSubmit]
- );
-
- const toggleFaq = (index) => {
- setExpandedFaq(expandedFaq === index ? null : index);
- };
-
- return (
-
-
-
-
-
-
-
-
- setSearch(e.target.value)}
- onKeyDown={handleKeyDown}
- />
-
-
-
-
-
-
- Enter Homepage →
-
-
-
-
Frequently Asked Questions
-
- {FAQ_ITEMS.map((item, index) => (
-
-
toggleFaq(index)}
- >
- {item.question}
-
-
- {expandedFaq === index && (
-
- {item.answer}
-
- )}
-
- ))}
-
-
-
-
- );
-}
-
-export default SplashScreen;
diff --git a/src/components/spotlight/Spotlight.css b/src/components/spotlight/Spotlight.css
deleted file mode 100644
index 01d867e..0000000
--- a/src/components/spotlight/Spotlight.css
+++ /dev/null
@@ -1,68 +0,0 @@
-.swiper {
- width: 100%;
-}
-.swiper-slide {
- font-size: 18px;
- display: -webkit-box;
- display: -ms-flexbox;
- display: -webkit-flex;
- -webkit-box-pack: center;
- -ms-flex-pack: center;
- -webkit-box-align: center;
- -ms-flex-align: center;
-}
-.button-prev,
-.button-next {
- width: 40px;
- height: 40px;
- color: white;
- background-color: #383747;
- border-radius: 7px;
- display: flex;
- justify-content: center;
- align-items: center;
- cursor: pointer;
- transition: all 0.3s ease-out;
-}
-.button-prev:hover,
-.button-next:hover {
- background-color: #ffbade;
- color: #383747;
-}
-
-.button-prev::after {
- font-family: "Font Awesome 5 Free";
- content: "\f053";
- font-weight: 900;
- font-size: 14px;
-}
-
-.button-next::after {
- font-family: "Font Awesome 5 Free";
- content: "\f054";
- font-weight: 900;
- font-size: 14px;
-}
-
-.swiper-horizontal > .swiper-pagination-bullets {
- display: none;
-}
-.swiper-pagination-bullet-active {
- background-color: rgb(239, 213, 22) !important;
-}
-@media only screen and (max-width: 575px) {
- .swiper-horizontal > .swiper-pagination-bullets {
- /* bottom: var(--swiper-pagination-bottom, 8px); */
- bottom: 0;
- right: 10px !important ;
- left: auto !important;
- width: 20px !important;
- bottom: 5px !important;
- display: flex !important;
- gap: 18px;
- align-items: center;
- justify-content: center;
- height: 80%;
- flex-direction: column;
- }
-}
diff --git a/src/components/spotlight/Spotlight.jsx b/src/components/spotlight/Spotlight.jsx
deleted file mode 100644
index 94e2e7a..0000000
--- a/src/components/spotlight/Spotlight.jsx
+++ /dev/null
@@ -1,54 +0,0 @@
-import { Swiper, SwiperSlide } from "swiper/react";
-import { Navigation, Autoplay } from "swiper/modules";
-import "swiper/css";
-import "swiper/css/autoplay";
-import "swiper/css/navigation";
-import "./Spotlight.css";
-import Banner from "../banner/Banner";
-
-const Spotlight = ({ spotlights }) => {
- return (
- <>
-
-
- {spotlights && spotlights.length > 0 ? (
- <>
-
- {spotlights.map((item, index) => (
-
-
-
- ))}
-
- >
- ) : (
-
No spotlights to show.
- )}
-
- >
- );
-};
-
-export default Spotlight;
diff --git a/src/components/suggestion/Suggestion.jsx b/src/components/suggestion/Suggestion.jsx
deleted file mode 100644
index 5cacb94..0000000
--- a/src/components/suggestion/Suggestion.jsx
+++ /dev/null
@@ -1,115 +0,0 @@
-import getSearchSuggestion from "@/src/utils/getSearchSuggestion.utils";
-import { useEffect, useState } from "react";
-import BouncingLoader from "../ui/bouncingloader/Bouncingloader";
-import { FaChevronRight } from "react-icons/fa";
-import { Link } from "react-router-dom";
-
-function Suggestion({ keyword, className }) {
- const [suggestion, setSuggestion] = useState([]);
- const [loading, setLoading] = useState(false);
- const [error, setError] = useState(null);
- const [hasFetched, setHasFetched] = useState(false);
-
- useEffect(() => {
- const fetchSearchSuggestion = async () => {
- if (!keyword) return;
- setLoading(true);
- setHasFetched(false);
- try {
- const data = await getSearchSuggestion(keyword);
- setSuggestion(data);
- setHasFetched(true);
- } catch (err) {
- console.error("Error fetching search suggestion info:", err);
- setError(err);
- } finally {
- setLoading(false);
- }
- };
- fetchSearchSuggestion();
- }, [keyword]);
-
- return (
-
- {loading ? (
-
- ) : error && !suggestion ? (
-
Error loading suggestions
- ) : suggestion && hasFetched ? (
-
- {suggestion.map((item, index) => (
-
-
{
- e.target.src = "https://i.postimg.cc/HnHKvHpz/no-avatar.jpg";
- }}
- />
-
- {item?.title && (
-
- {item.title || "N/A"}
-
- )}
- {item?.japanese_title && (
-
- {item.japanese_title || "N/A"}
-
- )}
- {(item?.releaseDate || item?.showType || item?.duration) && (
-
-
- {item.releaseDate || "N/A"}
-
-
-
- {item.showType || "N/A"}
-
-
-
- {item.duration || "N/A"}
-
-
- )}
-
-
- ))}
- {!loading && hasFetched && (
-
-
-
- View all results
-
-
-
-
- )}
-
- ) : hasFetched ? (
-
No results found!
- ) : null}
-
- );
-}
-
-export default Suggestion;
diff --git a/src/components/topten/Topten.jsx b/src/components/topten/Topten.jsx
deleted file mode 100644
index c0a6758..0000000
--- a/src/components/topten/Topten.jsx
+++ /dev/null
@@ -1,176 +0,0 @@
-import React, { useState } from "react";
-import { FontAwesomeIcon } from "@fortawesome/react-fontawesome";
-import {
- faClosedCaptioning,
- faMicrophone,
-} from "@fortawesome/free-solid-svg-icons";
-import { useLanguage } from "@/src/context/LanguageContext";
-import { Link, useNavigate } from "react-router-dom";
-import useToolTipPosition from "@/src/hooks/useToolTipPosition";
-import Qtip from "../qtip/Qtip";
-
-function Topten({ data, className }) {
- const { language } = useLanguage();
- const [activePeriod, setActivePeriod] = useState("today");
- const [hoveredItem, setHoveredItem] = useState(null);
- const [hoverTimeout, setHoverTimeout] = useState(null);
- const navigate = useNavigate();
-
- const handlePeriodChange = (period) => {
- setActivePeriod(period);
- };
-
- const handleNavigate = (id) => {
- navigate(`/${id}`);
- window.scrollTo({ top: 0, behavior: "smooth" });
- };
-
- const currentData =
- activePeriod === "today"
- ? data.today
- : activePeriod === "week"
- ? data.week
- : data.month;
-
- const { tooltipPosition, tooltipHorizontalPosition, cardRefs } =
- useToolTipPosition(hoveredItem, currentData);
-
- const handleMouseEnter = (item, index) => {
- if (hoverTimeout) clearTimeout(hoverTimeout);
- setHoveredItem(item.id + index);
- };
-
- const handleMouseLeave = () => {
- setHoverTimeout(
- setTimeout(() => {
- setHoveredItem(null);
- }, 300) // Small delay to prevent flickering
- );
- };
-
- return (
-
-
-
Top 10
-
- {["today", "week", "month"].map((period) => (
- handlePeriodChange(period)}
- >
- {period.charAt(0).toUpperCase() + period.slice(1)}
-
- ))}
-
-
-
-
- {currentData &&
- currentData.map((item, index) => (
-
(cardRefs.current[index] = el)}
- >
-
- {`${index + 1 < 10 ? "0" : ""}${index + 1}`}
-
-
- {/* Image with tooltip behavior */}
-
navigate(`/watch/${item.id}`)}
- onMouseEnter={() => handleMouseEnter(item, index)}
- onMouseLeave={handleMouseLeave}
- />
-
- {/* Tooltip positioned near image */}
- {hoveredItem === item.id + index &&
- window.innerWidth > 1024 && (
-
{
- if (hoverTimeout) clearTimeout(hoverTimeout);
- }}
- onMouseLeave={handleMouseLeave}
- >
-
-
- )}
-
-
-
handleNavigate(item.id)}
- >
- {language === "EN" ? item.title : item.japanese_title}
-
-
- {item.tvInfo?.sub && (
-
-
-
- {item.tvInfo.sub}
-
-
- )}
- {item.tvInfo?.dub && (
-
-
-
- {item.tvInfo.dub}
-
-
- )}
-
-
-
-
- ))}
-
-
- );
-}
-
-export default React.memo(Topten);
diff --git a/src/components/trending/Trending.jsx b/src/components/trending/Trending.jsx
deleted file mode 100644
index 002ad54..0000000
--- a/src/components/trending/Trending.jsx
+++ /dev/null
@@ -1,77 +0,0 @@
-import { Pagination, Navigation } from "swiper/modules";
-import { Swiper, SwiperSlide } from "swiper/react";
-import { FaChevronLeft, FaChevronRight } from "react-icons/fa";
-import { useLanguage } from "@/src/context/LanguageContext";
-import { Link, useNavigate } from "react-router-dom";
-
-const Trending = ({ trending }) => {
- const { language } = useLanguage();
- const navigate = useNavigate();
- return (
-
-
- Trending
-
-
-
- {trending &&
- trending.map((item, idx) => (
- navigate(`/watch/${item.id}`)}
- >
-
-
-
- {item.number}
-
-
- {language === "EN" ? item.title : item.japanese_title}
-
-
-
-
-
-
-
- ))}
-
-
-
-
- );
-};
-
-export default Trending;
diff --git a/src/components/ui/Skeleton/Skeleton.css b/src/components/ui/Skeleton/Skeleton.css
deleted file mode 100644
index d51e7a0..0000000
--- a/src/components/ui/Skeleton/Skeleton.css
+++ /dev/null
@@ -1,23 +0,0 @@
-@keyframes shimmer {
- 0% {
- background-position: 100% 0;
- }
- 100% {
- background-position: -100% 0;
- }
- }
-
- .shimmer-effect {
- background: linear-gradient(
- to right,
- rgba(255, 255, 255, 0.1) 0%,
- rgba(255, 255, 255, 0.2) 20%,
- rgba(255, 255, 255, 0.3) 40%,
- rgba(255, 255, 255, 0.2) 60%,
- rgba(255, 255, 255, 0.1) 80%,
- rgba(0, 0, 0, 0.03) 100%
- );
- background-size: 200% 100%;
- animation: shimmer 1.5s infinite linear;
- }
-
\ No newline at end of file
diff --git a/src/components/ui/Skeleton/Skeleton.jsx b/src/components/ui/Skeleton/Skeleton.jsx
deleted file mode 100644
index eab2eaa..0000000
--- a/src/components/ui/Skeleton/Skeleton.jsx
+++ /dev/null
@@ -1,16 +0,0 @@
-import { cn } from "@/lib/utils";
-import './Skeleton.css';
-
-function Skeleton({ className, animation=true, ...props }) {
- return (
-
- );
-}
-
-export { Skeleton };
diff --git a/src/components/ui/bouncingloader/Bouncingloader.css b/src/components/ui/bouncingloader/Bouncingloader.css
deleted file mode 100644
index c5b1723..0000000
--- a/src/components/ui/bouncingloader/Bouncingloader.css
+++ /dev/null
@@ -1,45 +0,0 @@
-.bouncing-loading > div {
- width: 18px;
- height: 18px;
- background-color: #858490;
- border-radius: 100%;
- display: inline-block;
- -webkit-animation: sk-bouncedelay 1.4s infinite ease-in-out both;
- animation: sk-bouncedelay 1.4s infinite ease-in-out both;
-}
-
-.bouncing-loading .span1 {
- -webkit-animation-delay: -0.32s;
- animation-delay: -0.32s;
-}
-
-.bouncing-loading .span2 {
- -webkit-animation-delay: -0.16s;
- animation-delay: -0.16s;
-}
-
-@-webkit-keyframes sk-bouncedelay {
- 0%,
- 100%,
- 80% {
- -webkit-transform: scale(0);
- }
-
- 40% {
- -webkit-transform: scale(1);
- }
-}
-
-@keyframes sk-bouncedelay {
- 0%,
- 100%,
- 80% {
- -webkit-transform: scale(0);
- transform: scale(0);
- }
-
- 40% {
- -webkit-transform: scale(1);
- transform: scale(1);
- }
-}
diff --git a/src/components/ui/bouncingloader/Bouncingloader.jsx b/src/components/ui/bouncingloader/Bouncingloader.jsx
deleted file mode 100644
index 9c81444..0000000
--- a/src/components/ui/bouncingloader/Bouncingloader.jsx
+++ /dev/null
@@ -1,12 +0,0 @@
-import "./Bouncingloader.css"
-const BouncingLoader = () => {
- return (
-
- );
-};
-
-export default BouncingLoader;
\ No newline at end of file
diff --git a/src/components/voiceactor/Voiceactor.jsx b/src/components/voiceactor/Voiceactor.jsx
deleted file mode 100644
index bcc588e..0000000
--- a/src/components/voiceactor/Voiceactor.jsx
+++ /dev/null
@@ -1,100 +0,0 @@
-import { useState } from "react";
-import { FaChevronRight } from "react-icons/fa";
-import VoiceactorList from "../voiceactorlist/VoiceactorList";
-
-function Voiceactor({ animeInfo, className }) {
- const [showVoiceActors, setShowVoiceActors] = useState(false);
- return (
-
-
-
- Characters & Voice Actors
-
-
- {
- setShowVoiceActors(true);
- }}
- >
- View more
-
-
-
-
-
- {animeInfo.charactersVoiceActors.slice(0, 6).map((character, index) => (
-
- {character.character && (
-
-
- {character.character.poster && (
-
{
- e.target.src = "https://i.postimg.cc/HnHKvHpz/no-avatar.jpg";
- }}
- className="w-[45px] h-[45px] flex-shrink-0 rounded-full object-cover"
- loading="lazy"
- />
- )}
-
- {character.character.name && (
-
- {character.character.name}
-
- )}
- {character.character.cast && (
-
- {character.character.cast}
-
- )}
-
-
-
- )}
- {character.voiceActors.length > 0 && character.voiceActors[0] && (
-
-
-
- {character.voiceActors[0].name && (
-
- {character.voiceActors[0].name}
-
- )}
-
- {character.voiceActors[0].poster && (
-
{
- e.target.src = "https://i.postimg.cc/HnHKvHpz/no-avatar.jpg";
- }}
- className="w-[45px] h-[45px] rounded-full object-cover grayscale hover:grayscale-0 hover:cursor-pointer flex-shrink-0 transition-all duration-300 ease-in-out"
- />
- )}
-
-
- )}
-
- ))}
-
- {showVoiceActors && (
-
setShowVoiceActors(false)}
- />
- )}
-
- );
-}
-
-export default Voiceactor;
diff --git a/src/components/voiceactorlist/VoiceactorList.jsx b/src/components/voiceactorlist/VoiceactorList.jsx
deleted file mode 100644
index 43f951d..0000000
--- a/src/components/voiceactorlist/VoiceactorList.jsx
+++ /dev/null
@@ -1,175 +0,0 @@
-import { useState, useEffect } from "react";
-import {
- faAngleDoubleLeft,
- faAngleDoubleRight,
- faChevronLeft,
- faChevronRight,
-} from "@fortawesome/free-solid-svg-icons";
-import { FontAwesomeIcon } from "@fortawesome/react-fontawesome";
-import fetchVoiceActorInfo from "@/src/utils/getVoiceActor.utils";
-import VoiceActorlistLoader from "../Loader/VoiceActorlist.loader";
-import { useNavigate } from "react-router-dom";
-import Error from "../error/Error";
-import {
- cleanupScrollbar,
- toggleScrollbar,
-} from "@/src/helper/toggleScrollbar";
-import PageSlider from "../pageslider/PageSlider";
-
-function VoiceactorList({ id, isOpen, onClose }) {
- const [loading, setLoading] = useState(true);
- const [page, setPage] = useState(1);
- const [totalPages, setTotalPages] = useState(1);
- const [error, setError] = useState(null);
- const [VoiceactorList, setVoiceactorList] = useState([]);
- const navigate = useNavigate();
-
- useEffect(() => {
- toggleScrollbar(isOpen);
- return () => {
- cleanupScrollbar();
- };
- }, [isOpen]);
-
- useEffect(() => {
- const fetchCategoryInfo = async () => {
- setLoading(true);
- try {
- const data = await fetchVoiceActorInfo(id, page);
- setVoiceactorList(data.data);
- setTotalPages(data.totalPages);
- setLoading(false);
- } catch (err) {
- setError(err);
- console.error("Error fetching category info:", err);
- }
- };
- fetchCategoryInfo();
- }, [page]);
- if (error) {
- navigate("/error-page");
- return ;
- }
- if (!VoiceactorList) {
- navigate("/404-not-found-page");
- return null;
- }
- return (
-
-
- {!loading && (
-
- Characters & Voice Actors
-
- )}
-
- {loading ? (
-
- ) : (
-
- {VoiceactorList.map((item, index) => (
-
-
-
{
- e.target.src = "https://i.postimg.cc/HnHKvHpz/no-avatar.jpg";
- }}
- />
-
- {item.character.name && (
-
- {item.character.name}
-
- )}
- {item.character.cast && (
-
- {item.character.cast}
-
- )}
-
-
-
- {item.voiceActors &&
- item.voiceActors.length > 0 &&
- (item.voiceActors.length > 1 ? (
-
- {item.voiceActors.map((data, index) => (
-
{
- e.target.src = "https://i.postimg.cc/HnHKvHpz/no-avatar.jpg";
- }}
- />
- ))}
-
- ) : (
-
- {item?.voiceActors[0]?.name && (
-
- {item.voiceActors[0].name}
-
- )}
-
{
- e.target.src = "https://i.postimg.cc/HnHKvHpz/no-avatar.jpg";
- }}
- />
-
- ))}
-
- ))}
-
- )}
-
-
- ×
-
-
-
-
-
- );
-}
-
-export default VoiceactorList;
diff --git a/src/components/watchcontrols/Watchcontrols.jsx b/src/components/watchcontrols/Watchcontrols.jsx
deleted file mode 100644
index c5ca17e..0000000
--- a/src/components/watchcontrols/Watchcontrols.jsx
+++ /dev/null
@@ -1,97 +0,0 @@
-import { faBackward, faForward } from "@fortawesome/free-solid-svg-icons";
-import { FontAwesomeIcon } from "@fortawesome/react-fontawesome";
-import { useEffect, useState } from "react";
-
-const ToggleButton = ({ label, isActive, onClick }) => (
-
- {label}
-
- {isActive ? "on" : "off"}
-
-
-);
-
-export default function WatchControls({
- autoPlay,
- setAutoPlay,
- autoSkipIntro,
- setAutoSkipIntro,
- autoNext,
- setAutoNext,
- episodeId,
- episodes = [],
- onButtonClick,
-}) {
- const [currentEpisodeIndex, setCurrentEpisodeIndex] = useState(
- episodes?.findIndex(
- (episode) => episode.id.match(/ep=(\d+)/)?.[1] === episodeId
- )
- );
-
- useEffect(() => {
- if (episodes?.length > 0) {
- const newIndex = episodes.findIndex(
- (episode) => episode.id.match(/ep=(\d+)/)?.[1] === episodeId
- );
- setCurrentEpisodeIndex(newIndex);
- }
- }, [episodeId, episodes]);
-
- return (
-
-
- setAutoPlay((prev) => !prev)}
- />
- setAutoSkipIntro((prev) => !prev)}
- />
- setAutoNext((prev) => !prev)}
- />
-
-
- {
- if (currentEpisodeIndex > 0) {
- onButtonClick(
- episodes[currentEpisodeIndex - 1].id.match(/ep=(\d+)/)?.[1]
- );
- }
- }}
- disabled={currentEpisodeIndex <= 0}
- >
-
-
- {
- if (currentEpisodeIndex < episodes?.length - 1) {
- onButtonClick(
- episodes[currentEpisodeIndex + 1].id.match(/ep=(\d+)/)?.[1]
- );
- }
- }}
- disabled={currentEpisodeIndex >= episodes?.length - 1}
- >
-
-
-
-
- );
-}
diff --git a/src/config/logoTitle.js b/src/config/logoTitle.js
deleted file mode 100644
index 95b3110..0000000
--- a/src/config/logoTitle.js
+++ /dev/null
@@ -1,3 +0,0 @@
-const logoTitle="Zen!me"
-
-export default logoTitle;
\ No newline at end of file
diff --git a/src/config/website.js b/src/config/website.js
deleted file mode 100644
index d7cdf5d..0000000
--- a/src/config/website.js
+++ /dev/null
@@ -1,3 +0,0 @@
-const website_name = "JustAnime";
-
-export default website_name;
\ No newline at end of file
diff --git a/src/context/HomeInfoContext.jsx b/src/context/HomeInfoContext.jsx
deleted file mode 100644
index 814e8b0..0000000
--- a/src/context/HomeInfoContext.jsx
+++ /dev/null
@@ -1,31 +0,0 @@
-import { createContext, useContext, useState, useEffect } from 'react';
-import getHomeInfo from '../utils/getHomeInfo.utils.js';
-
-const HomeInfoContext = createContext();
-
-export const HomeInfoProvider = ({ children }) => {
- const [homeInfo, setHomeInfo] = useState(null);
- const [homeInfoLoading, setHomeInfoLoading] = useState(true);
- const [error, setError] = useState(null);
- useEffect(() => {
- const fetchHomeInfo = async () => {
- try {
- const data = await getHomeInfo();
- setHomeInfo(data);
- } catch (err) {
- console.error("Error fetching home info:", err);
- setError(err);
- } finally {
- setHomeInfoLoading(false);
- }
- };
- fetchHomeInfo();
- }, []);
- return (
-
- {children}
-
- );
-};
-
-export const useHomeInfo = () => useContext(HomeInfoContext);
diff --git a/src/context/LanguageContext.jsx b/src/context/LanguageContext.jsx
deleted file mode 100644
index cec8067..0000000
--- a/src/context/LanguageContext.jsx
+++ /dev/null
@@ -1,27 +0,0 @@
-import { createContext, useContext, useState, useEffect } from 'react';
-
-const LanguageContext = createContext();
-
-export const LanguageProvider = ({ children }) => {
- const [language, setLanguage] = useState(() => {
- const storedLanguage = localStorage.getItem('language');
- return storedLanguage ? storedLanguage : 'EN';
- });
- useEffect(() => {
- localStorage.setItem('language', language);
- }, [language]);
-
- const toggleLanguage = (lang) => {
- setLanguage(lang);
- };
-
- return (
-
- {children}
-
- );
-};
-
-export const useLanguage = () => {
- return useContext(LanguageContext);
-};
diff --git a/src/context/SearchContext.jsx b/src/context/SearchContext.jsx
deleted file mode 100644
index 36e738e..0000000
--- a/src/context/SearchContext.jsx
+++ /dev/null
@@ -1,13 +0,0 @@
-import { createContext, useContext, useState } from 'react';
-
-const SearchContext = createContext();
-export function SearchProvider({ children }) {
- const [isSearchVisible, setIsSearchVisible] = useState(false);
-
- return (
-
- {children}
-
- );
-}
-export const useSearchContext = () => useContext(SearchContext);
\ No newline at end of file
diff --git a/src/helper/toggleScrollbar.js b/src/helper/toggleScrollbar.js
deleted file mode 100644
index 77e0bdd..0000000
--- a/src/helper/toggleScrollbar.js
+++ /dev/null
@@ -1,32 +0,0 @@
-export function toggleScrollbar(isOpen) {
- const getScrollbarWidth = () => {
- return window.innerWidth - document.documentElement.clientWidth;
- };
- const body = document.body;
- if (isOpen) {
- const scrollbarWidth = getScrollbarWidth();
- body.style.paddingRight = `${scrollbarWidth}px`;
- body.classList.add("overflow-y-hidden");
-
- const style = document.createElement("style");
- style.id = "hide-scrollbar";
- style.innerHTML = `::-webkit-scrollbar { display: none; }`;
- document.head.appendChild(style);
- } else {
- body.style.paddingRight = "0";
- body.classList.remove("overflow-y-hidden");
- const styleElement = document.getElementById("hide-scrollbar");
- if (styleElement) {
- styleElement.remove();
- }
- }
-}
-export function cleanupScrollbar() {
- const body = document.body;
- body.style.paddingRight = "0";
- body.classList.remove("overflow-y-hidden");
- const styleElement = document.getElementById("hide-scrollbar");
- if (styleElement) {
- styleElement.remove();
- }
-}
diff --git a/src/hooks/useSearch.js b/src/hooks/useSearch.js
deleted file mode 100644
index f094b86..0000000
--- a/src/hooks/useSearch.js
+++ /dev/null
@@ -1,64 +0,0 @@
-import { useState, useEffect, useRef, useCallback } from "react";
-import { useLocation } from "react-router-dom";
-import { useSearchContext } from "@/src/context/SearchContext";
-
-const useSearch = () => {
- const { isSearchVisible, setIsSearchVisible } = useSearchContext();
- const [searchValue, setSearchValue] = useState("");
- const [isFocused, setIsFocused] = useState(false);
- const [debouncedValue, setDebouncedValue] = useState("");
- const suggestionRefs = useRef([]);
- const location = useLocation();
-
- useEffect(() => {
- const timer = setTimeout(() => {
- setDebouncedValue(searchValue);
- }, 500);
- return () => {
- clearTimeout(timer);
- };
- }, [searchValue]);
-
- useEffect(() => {
- setIsSearchVisible(false);
- setSearchValue("");
- setDebouncedValue("");
- // setIsFocused(false);
- }, [location, setIsSearchVisible]);
-
- useEffect(() => {
- const handleClickOutside = (event) => {
- const isInsideSuggestionBox = suggestionRefs.current.some(
- (ref) => ref && ref.contains(event.target)
- );
- const isInsideInput = document.activeElement === event.target;
- if (!isInsideSuggestionBox && !isInsideInput) {
- setIsFocused(false);
- }
- };
-
- document.addEventListener("mousedown", handleClickOutside);
- return () => {
- document.removeEventListener("mousedown", handleClickOutside);
- };
- }, []);
- const addSuggestionRef = useCallback((ref) => {
- if (ref && !suggestionRefs.current.includes(ref)) {
- suggestionRefs.current.push(ref);
- }
- }, []);
-
- return {
- isSearchVisible,
- setIsSearchVisible,
- searchValue,
- setSearchValue,
- isFocused,
- setIsFocused,
- debouncedValue,
- suggestionRefs,
- addSuggestionRef,
- };
-};
-
-export default useSearch;
diff --git a/src/hooks/useToolTipPosition.js b/src/hooks/useToolTipPosition.js
deleted file mode 100644
index ae74331..0000000
--- a/src/hooks/useToolTipPosition.js
+++ /dev/null
@@ -1,49 +0,0 @@
-import { useEffect, useRef, useState } from "react";
-
-const useToolTipPosition = (hoveredItem, data) => {
- const cardRefs = useRef([]);
- const [tooltipPosition, setTooltipPosition] = useState("top-1/2");
- const [tooltipHorizontalPosition, setTooltipHorizontalPosition] =
- useState("left-1/2");
-
- const updateToolTipPosition = () => {
- if (hoveredItem !== null) {
- const refIndex = data.findIndex(
- (item, index) => item.id + index === hoveredItem
- );
- const ref = cardRefs.current[refIndex];
- if (ref) {
- const { top, height, left, width } = ref.getBoundingClientRect();
- const adjustedTop = top + height / 2 - 64;
- const bottomY = window.innerHeight - adjustedTop;
- if (adjustedTop < bottomY) {
- setTooltipPosition("top-1/2");
- } else {
- setTooltipPosition("bottom-1/2");
- }
- const adjustedLeft = left + width / 2;
- const spaceRight = window.innerWidth - adjustedLeft;
- if (spaceRight > 320) {
- setTooltipHorizontalPosition("left-1/2");
- } else {
- setTooltipHorizontalPosition("right-1/2");
- }
- }
- }
- };
-
- useEffect(() => {
- updateToolTipPosition();
- const handleScroll = () => {
- updateToolTipPosition();
- };
- window.addEventListener("scroll", handleScroll);
- return () => {
- window.removeEventListener("scroll", handleScroll);
- };
- }, [hoveredItem, data]);
-
- return { tooltipPosition, tooltipHorizontalPosition, cardRefs };
-};
-
-export default useToolTipPosition;
diff --git a/src/hooks/useWatch.js b/src/hooks/useWatch.js
deleted file mode 100644
index cc416bb..0000000
--- a/src/hooks/useWatch.js
+++ /dev/null
@@ -1,269 +0,0 @@
-/* eslint-disable react-hooks/exhaustive-deps */
-import { useState, useEffect, useRef } from "react";
-import getAnimeInfo from "@/src/utils/getAnimeInfo.utils";
-import getEpisodes from "@/src/utils/getEpisodes.utils";
-import getNextEpisodeSchedule from "../utils/getNextEpisodeSchedule.utils";
-import getServers from "../utils/getServers.utils";
-import getStreamInfo from "../utils/getStreamInfo.utils";
-
-export const useWatch = (animeId, initialEpisodeId) => {
- const [error, setError] = useState(null);
- const [buffering, setBuffering] = useState(true);
- const [streamInfo, setStreamInfo] = useState(null);
- const [animeInfo, setAnimeInfo] = useState(null);
- const [episodes, setEpisodes] = useState(null);
- const [animeInfoLoading, setAnimeInfoLoading] = useState(false);
- const [totalEpisodes, setTotalEpisodes] = useState(null);
- const [seasons, setSeasons] = useState(null);
- const [servers, setServers] = useState(null);
- const [streamUrl, setStreamUrl] = useState(null);
- const [isFullOverview, setIsFullOverview] = useState(false);
- const [subtitles, setSubtitles] = useState([]);
- const [thumbnail, setThumbnail] = useState(null);
- const [intro, setIntro] = useState(null);
- const [outro, setOutro] = useState(null);
- const [episodeId, setEpisodeId] = useState(null);
- const [activeEpisodeNum, setActiveEpisodeNum] = useState(null);
- const [activeServerId, setActiveServerId] = useState(null);
- const [activeServerType, setActiveServerType] = useState(null);
- const [activeServerName, setActiveServerName] = useState(null);
- const [serverLoading, setServerLoading] = useState(true);
- const [nextEpisodeSchedule, setNextEpisodeSchedule] = useState(null);
- const isServerFetchInProgress = useRef(false);
- const isStreamFetchInProgress = useRef(false);
-
- useEffect(() => {
- setEpisodes(null);
- setEpisodeId(null);
- setActiveEpisodeNum(null);
- setServers(null);
- setActiveServerId(null);
- setStreamInfo(null);
- setStreamUrl(null);
- setSubtitles([]);
- setThumbnail(null);
- setIntro(null);
- setOutro(null);
- setBuffering(true);
- setServerLoading(true);
- setError(null);
- setAnimeInfo(null);
- setSeasons(null);
- setTotalEpisodes(null);
- setAnimeInfoLoading(true);
- isServerFetchInProgress.current = false;
- isStreamFetchInProgress.current = false;
- }, [animeId]);
-
- useEffect(() => {
- const fetchInitialData = async () => {
- try {
- setAnimeInfoLoading(true);
- const [animeData, episodesData] = await Promise.all([
- getAnimeInfo(animeId, false),
- getEpisodes(animeId),
- ]);
- setAnimeInfo(animeData?.data);
- setSeasons(animeData?.seasons);
- setEpisodes(episodesData?.episodes);
- setTotalEpisodes(episodesData?.totalEpisodes);
- const newEpisodeId =
- initialEpisodeId ||
- (episodesData?.episodes?.length > 0
- ? episodesData.episodes[0].id.match(/ep=(\d+)/)?.[1]
- : null);
- setEpisodeId(newEpisodeId);
- } catch (err) {
- console.error("Error fetching initial data:", err);
- setError(err.message || "An error occurred.");
- } finally {
- setAnimeInfoLoading(false);
- }
- };
- fetchInitialData();
- }, [animeId]);
-
- useEffect(() => {
- const fetchNextEpisodeSchedule = async () => {
- try {
- const data = await getNextEpisodeSchedule(animeId);
- setNextEpisodeSchedule(data);
- } catch (err) {
- console.error("Error fetching next episode schedule:", err);
- }
- };
- fetchNextEpisodeSchedule();
- }, [animeId]);
-
- useEffect(() => {
- if (!episodes || !episodeId) {
- setActiveEpisodeNum(null);
- return;
- }
- const activeEpisode = episodes.find((episode) => {
- const match = episode.id.match(/ep=(\d+)/);
- return match && match[1] === episodeId;
- });
- const newActiveEpisodeNum = activeEpisode ? activeEpisode.episode_no : null;
- if (activeEpisodeNum !== newActiveEpisodeNum) {
- setActiveEpisodeNum(newActiveEpisodeNum);
- }
- }, [episodeId, episodes]);
-
- useEffect(() => {
- if (!episodeId || !episodes || isServerFetchInProgress.current) return;
-
- const fetchServers = async () => {
- isServerFetchInProgress.current = true;
- setServerLoading(true);
- try {
- const data = await getServers(animeId, episodeId);
- console.log(data);
-
- const filteredServers = data?.filter(
- (server) =>
- server.serverName === "HD-1" ||
- server.serverName === "HD-2" ||
- server.serverName === "HD-3"
- );
- if (filteredServers.some((s) => s.type === "sub")) {
- filteredServers.push({
- type: "sub",
- data_id: "69696969",
- server_id: "41",
- serverName: "HD-4",
- });
- }
- if (filteredServers.some((s) => s.type === "dub")) {
- filteredServers.push({
- type: "dub",
- data_id: "96969696",
- server_id: "42",
- serverName: "HD-4",
- });
- }
- const savedServerName = localStorage.getItem("server_name");
- const savedServerType = localStorage.getItem("server_type");
- let initialServer =
- data.find(
- (s) =>
- s.serverName === savedServerName && s.type === savedServerType
- ) ||
- data.find((s) => s.serverName === savedServerName) ||
- data.find((s) => s.type === savedServerType) ||
- data.find(
- (s) => s.serverName === "HD-1" && s.type === savedServerType
- ) ||
- data.find(
- (s) => s.serverName === "HD-2" && s.type === savedServerType
- ) ||
- data.find(
- (s) => s.serverName === "HD-3" && s.type === savedServerType
- ) ||
- data.find(
- (s) => s.serverName === "HD-4" && s.type === savedServerType
- ) ||
- filteredServers[0];
- setServers(filteredServers);
- setActiveServerType(initialServer?.type);
- setActiveServerName(initialServer?.serverName);
- setActiveServerId(initialServer?.data_id);
- } catch (error) {
- console.error("Error fetching servers:", error);
- setError(error.message || "An error occurred.");
- } finally {
- setServerLoading(false);
- isServerFetchInProgress.current = false;
- }
- };
- fetchServers();
- }, [episodeId, episodes]);
- // Fetch stream info only when episodeId, activeServerId, and servers are ready
- useEffect(() => {
- if (
- !episodeId ||
- !activeServerId ||
- !servers ||
- isServerFetchInProgress.current ||
- isStreamFetchInProgress.current
- )
- return;
- if (
- (activeServerName?.toLowerCase() === "hd-1"
- || activeServerName?.toLowerCase() === "hd-2"|| activeServerName?.toLowerCase() === "hd-3"|| activeServerName?.toLowerCase() === "hd-4")
- &&
- !serverLoading
- ) {
- setBuffering(false);
- return;
- }
- const fetchStreamInfo = async () => {
- isStreamFetchInProgress.current = true;
- setBuffering(true);
- try {
- const server = servers.find((srv) => srv.data_id === activeServerId);
- if (server) {
- const data = await getStreamInfo(
- animeId,
- episodeId,
- server.serverName.toLowerCase(),
- server.type.toLowerCase()
- );
- setStreamInfo(data);
- setStreamUrl(data?.streamingLink?.link?.file || null);
- setIntro(data?.streamingLink?.intro || null);
- setOutro(data?.streamingLink?.outro || null);
- const subtitles =
- data?.streamingLink?.tracks
- ?.filter((track) => track.kind === "captions")
- .map(({ file, label }) => ({ file, label })) || [];
- setSubtitles(subtitles);
- const thumbnailTrack = data?.streamingLink?.tracks?.find(
- (track) => track.kind === "thumbnails" && track.file
- );
- if (thumbnailTrack) setThumbnail(thumbnailTrack.file);
- } else {
- setError("No server found with the activeServerId.");
- }
- } catch (err) {
- console.error("Error fetching stream info:", err);
- setError(err.message || "An error occurred.");
- } finally {
- setBuffering(false);
- isStreamFetchInProgress.current = false;
- }
- };
- fetchStreamInfo();
- }, [episodeId, activeServerId, servers]);
-
- return {
- error,
- buffering,
- serverLoading,
- streamInfo,
- animeInfo,
- episodes,
- nextEpisodeSchedule,
- animeInfoLoading,
- totalEpisodes,
- seasons,
- servers,
- streamUrl,
- isFullOverview,
- setIsFullOverview,
- subtitles,
- thumbnail,
- intro,
- outro,
- episodeId,
- setEpisodeId,
- activeEpisodeNum,
- setActiveEpisodeNum,
- activeServerId,
- setActiveServerId,
- activeServerType,
- setActiveServerType,
- activeServerName,
- setActiveServerName,
- };
-};
diff --git a/src/hooks/useWatchControl.js b/src/hooks/useWatchControl.js
deleted file mode 100644
index 6ae19f9..0000000
--- a/src/hooks/useWatchControl.js
+++ /dev/null
@@ -1,34 +0,0 @@
-import { useState, useEffect } from "react";
-
-export default function useWatchControl() {
- const [autoPlay, setAutoPlay] = useState(
- () => JSON.parse(localStorage.getItem("autoPlay")) || false
- );
- const [autoSkipIntro, setAutoSkipIntro] = useState(
- () => JSON.parse(localStorage.getItem("autoSkipIntro")) || false
- );
- const [autoNext, setAutoNext] = useState(
- () => JSON.parse(localStorage.getItem("autoNext")) || false
- );
-
- useEffect(() => {
- localStorage.setItem("autoPlay", JSON.stringify(autoPlay));
- }, [autoPlay]);
-
- useEffect(() => {
- localStorage.setItem("autoSkipIntro", JSON.stringify(autoSkipIntro));
- }, [autoSkipIntro]);
-
- useEffect(() => {
- localStorage.setItem("autoNext", JSON.stringify(autoNext));
- }, [autoNext]);
-
- return {
- autoPlay,
- setAutoPlay,
- autoSkipIntro,
- setAutoSkipIntro,
- autoNext,
- setAutoNext,
- };
-}
diff --git a/src/index.css b/src/index.css
deleted file mode 100644
index 765f332..0000000
--- a/src/index.css
+++ /dev/null
@@ -1,126 +0,0 @@
-@tailwind base;
-@tailwind components;
-@tailwind utilities;
-
-:root {
- font-family: Inter, system-ui, Avenir, Helvetica, Arial, sans-serif;
- line-height: 1.5;
- font-weight: 400;
- color-scheme: light dark;
- color: rgba(255, 255, 255, 0.87);
- background-color: #201f31;
- font-synthesis: none;
- text-rendering: optimizeLegibility;
- -webkit-font-smoothing: antialiased;
- -moz-osx-font-smoothing: grayscale;
-}
-* {
- margin: 0;
- padding: 0;
- box-sizing: border-box;
-}
-body {
- overflow-y: scroll;
-}
-.scrollbar-visible {
- scrollbar-width: auto;
- scrollbar-color: #888 #333;
-}
-.scrollbar-visible::-webkit-scrollbar {
- width: 20px;
-}
-
-.scrollbar-visible::-webkit-scrollbar-thumb {
- background-color: #888;
-}
-
-.scrollbar-visible::-webkit-scrollbar-track {
- background: black;
-}
-.scrollbar-hide {
- -ms-overflow-style: none;
- scrollbar-width: none;
-}
-::-webkit-scrollbar {
- width: 16px;
-}
-
-::-webkit-scrollbar-track {
- background: #23222c;
-}
-
-::-webkit-scrollbar-thumb {
- background: #65646a;
-}
-.scrollbar-hide::-webkit-scrollbar {
- display: none;
-}
-
-.is-visible {
- opacity: 1;
-}
-@layer base {
- :root {
- --background: 0 0% 100%;
- --foreground: 240 10% 3.9%;
- --card: 0 0% 100%;
- --card-foreground: 240 10% 3.9%;
- --popover: 0 0% 100%;
- --popover-foreground: 240 10% 3.9%;
- --primary: 240 5.9% 10%;
- --primary-foreground: 0 0% 98%;
- --secondary: 240 4.8% 95.9%;
- --secondary-foreground: 240 5.9% 10%;
- --muted: 240 4.8% 95.9%;
- --muted-foreground: 240 3.8% 46.1%;
- --accent: 240 4.8% 95.9%;
- --accent-foreground: 240 5.9% 10%;
- --destructive: 0 84.2% 60.2%;
- --destructive-foreground: 0 0% 98%;
- --border: 240 5.9% 90%;
- --input: 240 5.9% 90%;
- --ring: 240 10% 3.9%;
- --chart-1: 12 76% 61%;
- --chart-2: 173 58% 39%;
- --chart-3: 197 37% 24%;
- --chart-4: 43 74% 66%;
- --chart-5: 27 87% 67%;
- --radius: 0.5rem;
- }
- .dark {
- --background: 240 10% 3.9%;
- --foreground: 0 0% 98%;
- --card: 240 10% 3.9%;
- --card-foreground: 0 0% 98%;
- --popover: 240 10% 3.9%;
- --popover-foreground: 0 0% 98%;
- --primary: 0 0% 98%;
- --primary-foreground: 240 5.9% 10%;
- --secondary: 240 3.7% 15.9%;
- --secondary-foreground: 0 0% 98%;
- --muted: 240 3.7% 15.9%;
- --muted-foreground: 240 5% 64.9%;
- --accent: 240 3.7% 15.9%;
- --accent-foreground: 0 0% 98%;
- --destructive: 0 62.8% 30.6%;
- --destructive-foreground: 0 0% 98%;
- --border: 240 3.7% 15.9%;
- --input: 240 3.7% 15.9%;
- --ring: 240 4.9% 83.9%;
- --chart-1: 220 70% 50%;
- --chart-2: 160 60% 45%;
- --chart-3: 30 80% 55%;
- --chart-4: 280 65% 60%;
- --chart-5: 340 75% 55%;
- }
-}
-.dot {
- width: 4px;
- height: 4px;
- display: flex;
- justify-content: center;
- align-items: center;
- border-radius: 50%;
- background: rgba(255, 255, 255, 0.3);
- display: inline-block;
-}
diff --git a/src/main.jsx b/src/main.jsx
deleted file mode 100644
index e5bd98c..0000000
--- a/src/main.jsx
+++ /dev/null
@@ -1,13 +0,0 @@
-import { LanguageProvider } from './context/LanguageContext';
-import { createRoot } from 'react-dom/client';
-import { BrowserRouter } from 'react-router-dom';
-import App from './App.jsx';
-import './index.css';
-
-createRoot(document.getElementById('root')).render(
-
-
-
-
-
-);
diff --git a/src/pages/Home/Home.jsx b/src/pages/Home/Home.jsx
deleted file mode 100644
index 789fb6a..0000000
--- a/src/pages/Home/Home.jsx
+++ /dev/null
@@ -1,82 +0,0 @@
-import website_name from "@/src/config/website.js";
-import Spotlight from "@/src/components/spotlight/Spotlight.jsx";
-import Trending from "@/src/components/trending/Trending.jsx";
-import Cart from "@/src/components/cart/Cart.jsx";
-import CategoryCard from "@/src/components/categorycard/CategoryCard.jsx";
-import Genre from "@/src/components/genres/Genre.jsx";
-import Topten from "@/src/components/topten/Topten.jsx";
-import Loader from "@/src/components/Loader/Loader.jsx";
-import Error from "@/src/components/error/Error.jsx";
-import { useHomeInfo } from "@/src/context/HomeInfoContext.jsx";
-import Schedule from "@/src/components/schedule/Schedule";
-import ContinueWatching from "@/src/components/continue/ContinueWatching";
-
-function Home() {
- const { homeInfo, homeInfoLoading, error } = useHomeInfo();
- if (homeInfoLoading) return ;
- if (error) return ;
- if (!homeInfo) return ;
- return (
- <>
-
- >
- );
-}
-
-export default Home;
diff --git a/src/pages/a2z/AtoZ.jsx b/src/pages/a2z/AtoZ.jsx
deleted file mode 100644
index f2717e6..0000000
--- a/src/pages/a2z/AtoZ.jsx
+++ /dev/null
@@ -1,118 +0,0 @@
-import { useEffect, useState } from "react";
-import { useSearchParams, Link } from "react-router-dom";
-import getCategoryInfo from "@/src/utils/getCategoryInfo.utils";
-import CategoryCard from "@/src/components/categorycard/CategoryCard";
-import Loader from "@/src/components/Loader/Loader";
-import Error from "@/src/components/error/Error";
-import PageSlider from "@/src/components/pageslider/PageSlider";
-
-function AtoZ({ path }) {
- const [searchParams, setSearchParams] = useSearchParams();
- const [categoryInfo, setCategoryInfo] = useState(null);
- const [loading, setLoading] = useState(true);
- const [error, setError] = useState(null);
- const [totalPages, setTotalPages] = useState(0);
- const page = parseInt(searchParams.get("page")) || 1;
- const currentLetter = path.split("/").pop() || "";
-
- useEffect(() => {
- const fetchAtoZInfo = async () => {
- setLoading(true);
- try {
- const data = await getCategoryInfo(path, page);
- setCategoryInfo(data.data);
- setTotalPages(data.totalPages);
- setLoading(false);
- } catch (err) {
- setError(err);
- setLoading(false);
- console.error("Error fetching category info:", err);
- }
- };
- fetchAtoZInfo();
- window.scrollTo(0, 0);
- }, [path, page]);
-
- if (loading) return ;
- if (error) {
- return ;
- }
- if (!categoryInfo) {
- return null;
- }
- const handlePageChange = (newPage) => {
- setSearchParams({ page: newPage });
- };
-
- return (
-
-
-
-
- Home
-
-
-
- A-Z List
-
-
-
- Sort By Letters
-
-
- {[
- "All",
- "#",
- "0-9",
- ...Array.from({ length: 26 }, (_, i) =>
- String.fromCharCode(65 + i)
- ),
- ].map((item, index) => {
- const linkPath =
- item.toLowerCase() === "all"
- ? ""
- : item === "#"
- ? "other"
- : item;
- const isActive =
- (currentLetter === "az-list" && item.toLowerCase() === "all") ||
- (currentLetter === "other" && item === "#") ||
- currentLetter === item.toLowerCase();
-
- return (
-
- {item}
-
- );
- })}
-
-
-
-
- {categoryInfo && categoryInfo.length > 0 && (
-
- )}
-
-
-
-
- );
-}
-
-export default AtoZ;
diff --git a/src/pages/animeInfo/AnimeInfo.jsx b/src/pages/animeInfo/AnimeInfo.jsx
deleted file mode 100644
index 60b1e4f..0000000
--- a/src/pages/animeInfo/AnimeInfo.jsx
+++ /dev/null
@@ -1,416 +0,0 @@
-import getAnimeInfo from "@/src/utils/getAnimeInfo.utils";
-import { FontAwesomeIcon } from "@fortawesome/react-fontawesome";
-import {
- faPlay,
- faClosedCaptioning,
- faMicrophone,
-} from "@fortawesome/free-solid-svg-icons";
-import { useEffect, useState } from "react";
-import { Link, useNavigate, useParams } from "react-router-dom";
-import website_name from "@/src/config/website";
-import CategoryCard from "@/src/components/categorycard/CategoryCard";
-import Sidecard from "@/src/components/sidecard/Sidecard";
-import Loader from "@/src/components/Loader/Loader";
-import Error from "@/src/components/error/Error";
-import { useLanguage } from "@/src/context/LanguageContext";
-import { useHomeInfo } from "@/src/context/HomeInfoContext";
-import Voiceactor from "@/src/components/voiceactor/Voiceactor";
-
-function InfoItem({ label, value, isProducer = true }) {
- return (
- value && (
-
- {`${label}: `}
-
- {Array.isArray(value) ? (
- value.map((item, index) =>
- isProducer ? (
- :;,.?/\\|{}[\]`~*_]/g, "")
- .split(" ")
- .join("-")
- .replace(/-+/g, "-")}`}
- key={index}
- className="cursor-pointer hover:text-[#ffbade]"
- >
- {item}
- {index < value.length - 1 && ", "}
-
- ) : (
-
- {item}
-
- )
- )
- ) : isProducer ? (
- :;,.?/\\|{}[\]`~*_]/g, "")
- .split(" ")
- .join("-")
- .replace(/-+/g, "-")}`}
- className="cursor-pointer hover:text-[#ffbade]"
- >
- {value}
-
- ) : (
- {value}
- )}
-
-
- )
- );
-}
-
-function Tag({ bgColor, index, icon, text }) {
- return (
-
- );
-}
-
-function AnimeInfo({ random = false }) {
- const { language } = useLanguage();
- const { id: paramId } = useParams();
- const id = random ? null : paramId;
- const [isFull, setIsFull] = useState(false);
- const [animeInfo, setAnimeInfo] = useState(null);
- const [seasons, setSeasons] = useState(null);
- const [loading, setLoading] = useState(true);
- const [error, setError] = useState(null);
- const { homeInfo } = useHomeInfo();
- const { id: currentId } = useParams();
- const navigate = useNavigate();
- useEffect(() => {
- if (id === "404-not-found-page") {
- console.log("404 got!");
- return null;
- } else {
- const fetchAnimeInfo = async () => {
- setLoading(true);
- try {
- const data = await getAnimeInfo(id, random);
- setSeasons(data?.seasons);
- setAnimeInfo(data.data);
- } catch (err) {
- console.error("Error fetching anime info:", err);
- setError(err);
- } finally {
- setLoading(false);
- }
- };
- fetchAnimeInfo();
- window.scrollTo({ top: 0, behavior: "smooth" });
- }
- }, [id, random]);
- useEffect(() => {
- if (animeInfo && location.pathname === `/${animeInfo.id}`) {
- document.title = `Watch ${animeInfo.title} English Sub/Dub online Free on ${website_name}`;
- }
- return () => {
- document.title = `${website_name} | Free anime streaming platform`;
- };
- }, [animeInfo]);
- if (loading) return ;
- if (error) {
- return ;
- }
- if (!animeInfo) {
- navigate("/404-not-found-page");
- return undefined;
- }
- const { title, japanese_title, poster, animeInfo: info } = animeInfo;
- const tags = [
- {
- condition: info.tvInfo?.rating,
- bgColor: "#ffffff",
- text: info.tvInfo.rating,
- },
- {
- condition: info.tvInfo?.quality,
- bgColor: "#FFBADE",
- text: info.tvInfo.quality,
- },
- {
- condition: info.tvInfo?.sub,
- icon: faClosedCaptioning,
- bgColor: "#B0E3AF",
- text: info.tvInfo.sub,
- },
- {
- condition: info.tvInfo?.dub,
- icon: faMicrophone,
- bgColor: "#B9E7FF",
- text: info.tvInfo.dub,
- },
- ];
-
- return (
- <>
-
-
-
-
-
- {animeInfo.adultContent && (
-
- 18+
-
- )}
-
-
-
-
- {language === "EN" ? title : japanese_title}
-
-
- {tags.map(
- ({ condition, icon, bgColor, text }, index) =>
- condition && (
-
- )
- )}
-
- {[info.tvInfo?.showType, info.tvInfo?.duration].map(
- (item, index) =>
- item && (
-
- )
- )}
-
-
- {animeInfo?.animeInfo?.Status?.toLowerCase() !== "not-yet-aired" ? (
-
-
-
Watch Now
-
- ) : (
-
- )}
- {info?.Overview && (
-
- {info.Overview.length > 270 ? (
- <>
- {isFull
- ? info.Overview
- : `${info.Overview.slice(0, 270)}...`}
- setIsFull(!isFull)}
- >
- {isFull ? "- Less" : "+ More"}
-
- >
- ) : (
- info.Overview
- )}
-
- )}
-
- {`${website_name} is the best site to watch `}
- {title}
- {` SUB online, or you can even watch `}
- {title}
- {` DUB in HD quality.`}
-
-
-
-
-
- Share Anime
-
-
to your friends
-
-
-
-
-
-
- {info?.Overview && (
-
- )}
- {[
- { label: "Japanese", value: info?.Japanese },
- { label: "Synonyms", value: info?.Synonyms },
- { label: "Aired", value: info?.Aired },
- { label: "Premiered", value: info?.Premiered },
- { label: "Duration", value: info?.Duration },
- { label: "Status", value: info?.Status },
- { label: "MAL Score", value: info?.["MAL Score"] },
- ].map(({ label, value }, index) => (
-
- ))}
- {info?.Genres && (
-
-
Genres:
-
- {info.Genres.map((genre, index) => (
-
- {genre}
-
- ))}
-
-
- )}
- {[
- { label: "Studios", value: info?.Studios },
- { label: "Producers", value: info?.Producers },
- ].map(({ label, value }, index) => (
-
- ))}
-
- {`${website_name} is the best site to watch `}
- {title}
- {` SUB online, or you can even watch `}
- {title}
- {` DUB in HD quality.`}
-
-
-
-
-
-
- {seasons?.length > 0 && (
-
-
- More Seasons
-
-
- {seasons.map((season, index) => (
-
-
- {season.season}
-
-
-
-
- ))}
-
-
- )}
- {animeInfo?.charactersVoiceActors.length > 0 && (
-
- )}
- {animeInfo.recommended_data.length > 0 && (
-
- )}
-
-
- {animeInfo.related_data.length > 0 && (
-
- )}
- {homeInfo && homeInfo.most_popular && (
-
- )}
-
-
- >
- );
-}
-
-export default AnimeInfo;
diff --git a/src/pages/category/Category.jsx b/src/pages/category/Category.jsx
deleted file mode 100644
index 326c61e..0000000
--- a/src/pages/category/Category.jsx
+++ /dev/null
@@ -1,111 +0,0 @@
-import { useEffect, useState } from "react";
-import { useSearchParams } from "react-router-dom";
-import getCategoryInfo from "@/src/utils/getCategoryInfo.utils";
-import CategoryCard from "@/src/components/categorycard/CategoryCard";
-import Genre from "@/src/components/genres/Genre";
-import Topten from "@/src/components/topten/Topten";
-import Loader from "@/src/components/Loader/Loader";
-import Error from "@/src/components/error/Error";
-import { useNavigate } from "react-router-dom";
-import { useHomeInfo } from "@/src/context/HomeInfoContext";
-import PageSlider from "@/src/components/pageslider/PageSlider";
-import SidecardLoader from "@/src/components/Loader/Sidecard.loader";
-
-function Category({ path, label }) {
- const [searchParams, setSearchParams] = useSearchParams();
- const [categoryInfo, setCategoryInfo] = useState(null);
- const [loading, setLoading] = useState(true);
- const [error, setError] = useState(null);
- const [totalPages, setTotalPages] = useState(0);
- const page = parseInt(searchParams.get("page")) || 1;
- const { homeInfo, homeInfoLoading } = useHomeInfo();
- const navigate = useNavigate();
- useEffect(() => {
- const fetchCategoryInfo = async () => {
- setLoading(true);
- try {
- const data = await getCategoryInfo(path, page);
- setCategoryInfo(data.data);
- setTotalPages(data.totalPages);
- setLoading(false);
- } catch (err) {
- setError(err);
- console.error("Error fetching category info:", err);
- }
- };
- fetchCategoryInfo();
- window.scrollTo(0, 0);
- }, [path, page]);
- if (loading) return ;
- if (error) {
- navigate("/error-page");
- return ;
- }
- if (!categoryInfo) {
- navigate("/404-not-found-page");
- return null;
- }
- const handlePageChange = (newPage) => {
- setSearchParams({ page: newPage });
- };
-
- return (
-
-
-
-
-
Share Anime
-
to your friends
-
-
- {categoryInfo ? (
-
- {page > totalPages ? (
-
- You came a long way, go back
- nothing is here
-
- ) : (
-
- {categoryInfo && categoryInfo.length > 0 && (
-
- )}
-
-
- )}
-
- {homeInfoLoading ? (
-
- ) : (
- <>
- {homeInfo && homeInfo.topten && (
-
- )}
- {homeInfo?.genres && }
- >
- )}
-
-
- ) : (
-
- )}
-
- );
-}
-
-export default Category;
diff --git a/src/pages/search/Search.jsx b/src/pages/search/Search.jsx
deleted file mode 100644
index f52033c..0000000
--- a/src/pages/search/Search.jsx
+++ /dev/null
@@ -1,74 +0,0 @@
-import CategoryCard from '@/src/components/categorycard/CategoryCard';
-import Genre from '@/src/components/genres/Genre';
-import CategoryCardLoader from '@/src/components/Loader/CategoryCard.loader';
-import SidecardLoader from '@/src/components/Loader/Sidecard.loader';
-import PageSlider from '@/src/components/pageslider/PageSlider';
-import Sidecard from '@/src/components/sidecard/Sidecard';
-import { useHomeInfo } from '@/src/context/HomeInfoContext';
-import getSearch from '@/src/utils/getSearch.utils';
-import { useEffect, useState } from 'react';
-import { useSearchParams } from 'react-router-dom';
-
-function Search() {
- const { homeInfo, homeInfoLoading } = useHomeInfo();
- const [searchParams, setSearchParams] = useSearchParams();
- const keyword = searchParams.get("keyword");
- const page = parseInt(searchParams.get("page"), 10) || 1;
- const [searchData, setSearchData] = useState(null);
- const [totalPages, setTotalPages] = useState(0);
- const [loading, setLoading] = useState(true);
- const [error, setError] = useState(null);
-
- useEffect(() => {
- const fetchSearch = async () => {
- setLoading(true);
- try {
- const data = await getSearch(keyword,page);
- setSearchData(data.data);
- setTotalPages(data.totalPage);
- setLoading(false);
- } catch (err) {
- console.error("Error fetching anime info:", err);
- setError(err);
- setLoading(false);
- }
- };
- fetchSearch();
- window.scrollTo({ top: 0, behavior: 'smooth' });
- }, [keyword, page]);
-
- const handlePageChange = (newPage) => {
- setSearchParams({ keyword, page: newPage });
- };
- return (
-
- {loading ? (
-
- ) : page > totalPages ?
You came a long way, go back nothing is here
: searchData && searchData.length > 0 ? (
-
- ) : error ?
Couldn't get search result please try again
: (
-
{`Search results for: ${keyword}`}
- )}
-
- {homeInfoLoading ? (
-
- ) : (
- <>
- {homeInfo?.most_popular && }
- {homeInfo?.genres && }
- >
- )}
-
-
- );
-}
-
-export default Search;
diff --git a/src/pages/watch/Watch.jsx b/src/pages/watch/Watch.jsx
deleted file mode 100644
index e9ee8c0..0000000
--- a/src/pages/watch/Watch.jsx
+++ /dev/null
@@ -1,541 +0,0 @@
-/* eslint-disable react/prop-types */
-import { useEffect, useRef, useState } from "react";
-import { useLocation, useParams, Link, useNavigate } from "react-router-dom";
-import { useLanguage } from "@/src/context/LanguageContext";
-import { useHomeInfo } from "@/src/context/HomeInfoContext";
-import { useWatch } from "@/src/hooks/useWatch";
-import BouncingLoader from "@/src/components/ui/bouncingloader/Bouncingloader";
-import IframePlayer from "@/src/components/player/IframePlayer";
-import Episodelist from "@/src/components/episodelist/Episodelist";
-import website_name from "@/src/config/website";
-import Sidecard from "@/src/components/sidecard/Sidecard";
-import CategoryCard from "@/src/components/categorycard/CategoryCard";
-import {
- faClosedCaptioning,
- faMicrophone,
-} from "@fortawesome/free-solid-svg-icons";
-import { FontAwesomeIcon } from "@fortawesome/react-fontawesome";
-import Servers from "@/src/components/servers/Servers";
-import CategoryCardLoader from "@/src/components/Loader/CategoryCard.loader";
-import { Skeleton } from "@/src/components/ui/Skeleton/Skeleton";
-import SidecardLoader from "@/src/components/Loader/Sidecard.loader";
-import Voiceactor from "@/src/components/voiceactor/Voiceactor";
-import Watchcontrols from "@/src/components/watchcontrols/Watchcontrols";
-import useWatchControl from "@/src/hooks/useWatchControl";
-import Player from "@/src/components/player/Player";
-
-export default function Watch() {
- const location = useLocation();
- const navigate = useNavigate();
- const { id: animeId } = useParams();
- const queryParams = new URLSearchParams(location.search);
- let initialEpisodeId = queryParams.get("ep");
- const [tags, setTags] = useState([]);
- const { language } = useLanguage();
- const { homeInfo } = useHomeInfo();
- const isFirstSet = useRef(true);
- const [showNextEpisodeSchedule, setShowNextEpisodeSchedule] = useState(true);
- const {
- // error,
- buffering,
- streamInfo,
- streamUrl,
- animeInfo,
- episodes,
- nextEpisodeSchedule,
- animeInfoLoading,
- totalEpisodes,
- isFullOverview,
- intro,
- outro,
- subtitles,
- thumbnail,
- setIsFullOverview,
- activeEpisodeNum,
- seasons,
- episodeId,
- setEpisodeId,
- activeServerId,
- setActiveServerId,
- servers,
- serverLoading,
- activeServerType,
- setActiveServerType,
- activeServerName,
- setActiveServerName
- } = useWatch(animeId, initialEpisodeId);
- const {
- autoPlay,
- setAutoPlay,
- autoSkipIntro,
- setAutoSkipIntro,
- autoNext,
- setAutoNext,
- } = useWatchControl();
-
- useEffect(() => {
- if (!episodes || episodes.length === 0) return;
-
- const isValidEpisode = episodes.some(ep => {
- const epNumber = ep.id.split('ep=')[1];
- return epNumber === episodeId;
- });
-
- // If missing or invalid episodeId, fallback to first
- if (!episodeId || !isValidEpisode) {
- const fallbackId = episodes[0].id.match(/ep=(\d+)/)?.[1];
- if (fallbackId && fallbackId !== episodeId) {
- setEpisodeId(fallbackId);
- }
- return;
- }
-
- const newUrl = `/watch/${animeId}?ep=${episodeId}`;
- if (isFirstSet.current) {
- navigate(newUrl, { replace: true });
- isFirstSet.current = false;
- } else {
- navigate(newUrl);
- }
- // eslint-disable-next-line react-hooks/exhaustive-deps
- }, [episodeId, animeId, navigate, episodes]);
-
- // Update document title
- useEffect(() => {
- if (animeInfo) {
- document.title = `Watch ${animeInfo.title} English Sub/Dub online Free on ${website_name}`;
- }
- return () => {
- document.title = `${website_name} | Free anime streaming platform`;
- };
- // eslint-disable-next-line react-hooks/exhaustive-deps
- }, [animeId]);
-
- // Redirect if no episodes
- useEffect(() => {
- if (totalEpisodes !== null && totalEpisodes === 0) {
- navigate(`/${animeId}`);
- }
- }, [streamInfo, episodeId, animeId, totalEpisodes, navigate]);
-
- useEffect(() => {
- const adjustHeight = () => {
- if (window.innerWidth > 1200) {
- const player = document.querySelector(".player");
- const episodes = document.querySelector(".episodes");
- if (player && episodes) {
- episodes.style.height = `${player.clientHeight}px`;
- }
- } else {
- const episodes = document.querySelector(".episodes");
- if (episodes) {
- episodes.style.height = "auto";
- }
- }
- };
- adjustHeight();
- window.addEventListener("resize", adjustHeight);
- return () => {
- window.removeEventListener("resize", adjustHeight);
- };
- });
-
- function Tag({ bgColor, index, icon, text }) {
- return (
-
- );
- }
-
- useEffect(() => {
- setTags([
- {
- condition: animeInfo?.animeInfo?.tvInfo?.rating,
- bgColor: "#ffffff",
- text: animeInfo?.animeInfo?.tvInfo?.rating,
- },
- {
- condition: animeInfo?.animeInfo?.tvInfo?.quality,
- bgColor: "#FFBADE",
- text: animeInfo?.animeInfo?.tvInfo?.quality,
- },
- {
- condition: animeInfo?.animeInfo?.tvInfo?.sub,
- icon: faClosedCaptioning,
- bgColor: "#B0E3AF",
- text: animeInfo?.animeInfo?.tvInfo?.sub,
- },
- {
- condition: animeInfo?.animeInfo?.tvInfo?.dub,
- icon: faMicrophone,
- bgColor: "#B9E7FF",
- text: animeInfo?.animeInfo?.tvInfo?.dub,
- },
- ]);
- }, [animeId, animeInfo]);
- return (
-
-
-
-
-
- {animeInfo && (
-
- )}
-
-
- {!episodes ? (
-
- ) : (
- setEpisodeId(id)}
- totalEpisodes={totalEpisodes}
- />
- )}
-
-
-
- {!buffering ? (( activeServerName.toLowerCase()==="hd-1" || activeServerName.toLowerCase()==="hd-2" || activeServerName.toLowerCase()==="hd-3" || activeServerName.toLowerCase()==="hd-4") ?
-
setEpisodeId(id)}
- autoNext={autoNext}
- />: setEpisodeId(id)}
- animeInfo={animeInfo}
- episodeNum={activeEpisodeNum}
- streamInfo={streamInfo}
- />
- ) : (
-
-
-
- )}
-
- {!buffering && !activeServerType ? (
- servers ? (
- <>
- Probably this server is down, try other servers
-
- Either reload or try again after sometime
- >
- ) : (
- <>
- Probably streaming server is down
-
- Either reload or try again after sometime
- >
- )
- ) : null}
-
-
-
- {!buffering && (
-
setEpisodeId(id)}
- />
- )}
-
- {seasons?.length > 0 && (
-
-
- Watch more seasons of this anime
-
-
- {seasons.map((season, index) => (
-
-
- {season.season}
-
-
-
-
- ))}
-
-
- )}
- {nextEpisodeSchedule?.nextEpisodeSchedule &&
- showNextEpisodeSchedule && (
-
-
-
- 🚀
- {" Estimated the next episode will come at "}
-
- {new Date(
- new Date(
- nextEpisodeSchedule.nextEpisodeSchedule
- ).getTime() -
- new Date().getTimezoneOffset() * 60000
- ).toLocaleDateString("en-GB", {
- day: "2-digit",
- month: "2-digit",
- year: "numeric",
- hour: "2-digit",
- minute: "2-digit",
- second: "2-digit",
- hour12: true,
- })}
-
-
-
setShowNextEpisodeSchedule(false)}
- >
- ×
-
-
-
- )}
-
-
-
- {animeInfo && animeInfo?.poster ? (
-
- ) : (
-
- )}
-
- {animeInfo && animeInfo?.title ? (
-
- {language ? animeInfo?.title : animeInfo?.japanese_title}
-
- ) : (
-
- )}
-
- {animeInfo ? (
- tags.map(
- ({ condition, icon, bgColor, text }, index) =>
- condition && (
-
- )
- )
- ) : (
-
- )}
-
- {[
- animeInfo?.animeInfo?.tvInfo?.showType,
- animeInfo?.animeInfo?.tvInfo?.duration,
- ].map(
- (item, index) =>
- item && (
-
- )
- )}
-
-
- {animeInfo ? (
- animeInfo?.animeInfo?.Overview && (
-
-
-
- {animeInfo?.animeInfo?.Overview.length > 270 ? (
- <>
- {isFullOverview
- ? animeInfo?.animeInfo?.Overview
- : `${animeInfo?.animeInfo?.Overview.slice(
- 0,
- 270
- )}...`}
- setIsFullOverview(!isFullOverview)}
- >
- {isFullOverview ? "- Less" : "+ More"}
-
- >
- ) : (
- animeInfo?.animeInfo?.Overview
- )}
-
-
-
- )
- ) : (
-
-
-
-
-
-
- )}
-
- {`${website_name} is the best site to watch `}
-
- {language ? animeInfo?.title : animeInfo?.japanese_title}
-
- {` SUB online, or you can even watch `}
-
- {language ? animeInfo?.title : animeInfo?.japanese_title}
-
- {` DUB in HD quality.`}
-
-
- View detail
-
-
-
-
-
-
-
-
-
Share Anime
-
to your friends
-
-
-
-
- {animeInfo?.charactersVoiceActors.length > 0 && (
-
- )}
- {animeInfo?.recommended_data.length > 0 ? (
-
- ) : (
-
- )}
-
-
- {animeInfo && animeInfo.related_data ? (
-
- ) : (
-
- )}
- {homeInfo && homeInfo.most_popular && (
-
- )}
-
-
-
- );
-}
diff --git a/src/utils/category.utils.js b/src/utils/category.utils.js
deleted file mode 100644
index dfc5d69..0000000
--- a/src/utils/category.utils.js
+++ /dev/null
@@ -1,89 +0,0 @@
-export const categoryRoutes = [
- "genre/action",
- "genre/adventure",
- "genre/cars",
- "genre/comedy",
- "genre/dementia",
- "genre/demons",
- "genre/drama",
- "genre/ecchi",
- "genre/fantasy",
- "genre/game",
- "genre/harem",
- "genre/historical",
- "genre/horror",
- "genre/isekai",
- "genre/josei",
- "genre/kids",
- "genre/magic",
- "genre/martial-arts",
- "genre/mecha",
- "genre/military",
- "genre/music",
- "genre/mystery",
- "genre/parody",
- "genre/police",
- "genre/psychological",
- "genre/romance",
- "genre/samurai",
- "genre/school",
- "genre/sci-fi",
- "genre/seinen",
- "genre/shoujo",
- "genre/shoujo-ai",
- "genre/shounen",
- "genre/shounen-ai",
- "genre/slice-of-life",
- "genre/space",
- "genre/sports",
- "genre/super-power",
- "genre/supernatural",
- "genre/thriller",
- "genre/vampire",
- "top-airing",
- "most-popular",
- "most-favorite",
- "completed",
- "recently-updated",
- "recently-added",
- "top-upcoming",
- "subbed-anime",
- "dubbed-anime",
- "movie",
- "special",
- "ova",
- "ona",
- "tv",
-];
-
-export const azRoute = [
- "az-list",
- "az-list/other",
- "az-list/0-9",
- "az-list/a",
- "az-list/b",
- "az-list/c",
- "az-list/d",
- "az-list/e",
- "az-list/f",
- "az-list/g",
- "az-list/h",
- "az-list/i",
- "az-list/j",
- "az-list/k",
- "az-list/l",
- "az-list/m",
- "az-list/n",
- "az-list/o",
- "az-list/p",
- "az-list/q",
- "az-list/r",
- "az-list/s",
- "az-list/t",
- "az-list/u",
- "az-list/v",
- "az-list/w",
- "az-list/x",
- "az-list/y",
- "az-list/z",
-];
diff --git a/src/utils/getAnimeInfo.utils.js b/src/utils/getAnimeInfo.utils.js
deleted file mode 100644
index 8736365..0000000
--- a/src/utils/getAnimeInfo.utils.js
+++ /dev/null
@@ -1,18 +0,0 @@
-import axios from "axios";
-
-export default async function fetchAnimeInfo(id, random = false) {
- const api_url = import.meta.env.VITE_API_URL;
- try {
- if (random) {
- const id = await axios.get(`${api_url}/random/id`);
- const response = await axios.get(`${api_url}/info?id=${id.data.results}`);
- return response.data.results;
- } else {
- const response = await axios.get(`${api_url}/info?id=${id}`);
- return response.data.results;
- }
- } catch (error) {
- console.error("Error fetching anime info:", error);
- return error;
- }
-}
diff --git a/src/utils/getCategoryInfo.utils.js b/src/utils/getCategoryInfo.utils.js
deleted file mode 100644
index 409631e..0000000
--- a/src/utils/getCategoryInfo.utils.js
+++ /dev/null
@@ -1,14 +0,0 @@
-import axios from "axios";
-
-const getCategoryInfo = async (path,page) => {
- const api_url = import.meta.env.VITE_API_URL;
- try {
- const response = await axios.get(`${api_url}/${path}?page=${page}`);
- return response.data.results;
- } catch (err) {
- console.error("Error fetching genre info:", err);
- return err;
- }
-};
-
-export default getCategoryInfo;
diff --git a/src/utils/getEpisodes.utils.js b/src/utils/getEpisodes.utils.js
deleted file mode 100644
index d98c5f6..0000000
--- a/src/utils/getEpisodes.utils.js
+++ /dev/null
@@ -1,12 +0,0 @@
-import axios from "axios";
-
-export default async function getEpisodes(id) {
- const api_url = import.meta.env.VITE_API_URL;
- try {
- const response = await axios.get(`${api_url}/episodes/${id}`);
- return response.data.results;
- } catch (error) {
- console.error("Error fetching anime info:", error);
- return error;
- }
-}
diff --git a/src/utils/getHomeInfo.utils.js b/src/utils/getHomeInfo.utils.js
deleted file mode 100644
index 655182b..0000000
--- a/src/utils/getHomeInfo.utils.js
+++ /dev/null
@@ -1,58 +0,0 @@
-import axios from "axios";
-
-const CACHE_KEY = "homeInfoCache";
-const CACHE_DURATION = 24 * 60 * 60 * 1000;
-
-export default async function getHomeInfo() {
- const api_url = import.meta.env.VITE_API_URL;
-
- const currentTime = Date.now();
- const cachedData = JSON.parse(localStorage.getItem(CACHE_KEY));
-
- if (cachedData && currentTime - cachedData.timestamp < CACHE_DURATION) {
- return cachedData.data;
- }
- const response = await axios.get(`${api_url}`);
- if (
- !response.data.results ||
- Object.keys(response.data.results).length === 0
- ) {
- return null;
- }
- const {
- spotlights,
- trending,
- topTen: topten,
- today: todaySchedule,
- topAiring: top_airing,
- mostPopular: most_popular,
- mostFavorite: most_favorite,
- latestCompleted: latest_completed,
- latestEpisode: latest_episode,
- topUpcoming: top_upcoming,
- recentlyAdded: recently_added,
- genres,
- } = response.data.results;
-
- const dataToCache = {
- data: {
- spotlights,
- trending,
- topten,
- todaySchedule,
- top_airing,
- most_popular,
- most_favorite,
- latest_completed,
- latest_episode,
- top_upcoming,
- recently_added,
- genres,
- },
- timestamp: currentTime,
- };
-
- localStorage.setItem(CACHE_KEY, JSON.stringify(dataToCache));
-
- return dataToCache.data;
-}
diff --git a/src/utils/getNextEpisodeSchedule.utils.js b/src/utils/getNextEpisodeSchedule.utils.js
deleted file mode 100644
index e01cb5b..0000000
--- a/src/utils/getNextEpisodeSchedule.utils.js
+++ /dev/null
@@ -1,14 +0,0 @@
-import axios from "axios";
-
-const getNextEpisodeSchedule = async (id) => {
- const api_url = import.meta.env.VITE_API_URL;
- try {
- const response = await axios.get(`${api_url}/schedule/${id}`);
- return response.data.results;
- } catch (err) {
- console.error("Error fetching next episode schedule:", err);
- return err;
- }
-};
-
-export default getNextEpisodeSchedule;
diff --git a/src/utils/getProducer.utils.js b/src/utils/getProducer.utils.js
deleted file mode 100644
index 8f4e5bc..0000000
--- a/src/utils/getProducer.utils.js
+++ /dev/null
@@ -1,14 +0,0 @@
-import axios from "axios";
-
-const getProducer = async (producer, page) => {
- const api_url = import.meta.env.VITE_API_URL;
- try {
- const response = await axios.get(`${api_url}/producer/${producer}?page=${page}`);
- return response.data.results;
- } catch (err) {
- console.error("Error fetching genre info:", err);
- return err;
- }
-};
-
-export default getProducer;
diff --git a/src/utils/getQtip.utils.js b/src/utils/getQtip.utils.js
deleted file mode 100644
index 19c8026..0000000
--- a/src/utils/getQtip.utils.js
+++ /dev/null
@@ -1,18 +0,0 @@
-import axios from "axios";
-
-const getQtip = async (id) => {
- try {
- let workerUrls = import.meta.env.VITE_WORKER_URL?.split(",");
- let baseUrl = workerUrls?.length
- ? workerUrls[Math.floor(Math.random() * workerUrls.length)]
- : import.meta.env.VITE_API_URL;
- if (!baseUrl) throw new Error("No API endpoint defined.");
- const response = await axios.get(`${baseUrl}/qtip/${id.split("-").pop()}`);
- return response.data.results;
- } catch (err) {
- console.error("Error fetching genre info:", err);
- return null;
- }
-};
-
-export default getQtip;
diff --git a/src/utils/getScheduleInfo.utils.js b/src/utils/getScheduleInfo.utils.js
deleted file mode 100644
index 1095c23..0000000
--- a/src/utils/getScheduleInfo.utils.js
+++ /dev/null
@@ -1,12 +0,0 @@
-import axios from "axios";
-
-export default async function getSchedInfo(date) {
- try {
- const api_url = import.meta.env.VITE_API_URL;
- const response = await axios.get(`${api_url}/schedule?date=${date}`);
- return response.data.results;
- } catch (error) {
- console.error(error);
- return error;
- }
-}
diff --git a/src/utils/getSearch.utils.js b/src/utils/getSearch.utils.js
deleted file mode 100644
index 48aafb9..0000000
--- a/src/utils/getSearch.utils.js
+++ /dev/null
@@ -1,17 +0,0 @@
-import axios from "axios";
-
-const getSearch = async (keyword, page) => {
- const api_url = import.meta.env.VITE_API_URL;
- if (!page) page = 1;
- try {
- const response = await axios.get(
- `${api_url}/search?keyword=${keyword}&page=${page}`
- );
- return response.data.results;
- } catch (err) {
- console.error("Error fetching genre info:", err);
- return err;
- }
-};
-
-export default getSearch;
diff --git a/src/utils/getSearchSuggestion.utils.js b/src/utils/getSearchSuggestion.utils.js
deleted file mode 100644
index 0d1173d..0000000
--- a/src/utils/getSearchSuggestion.utils.js
+++ /dev/null
@@ -1,16 +0,0 @@
-import axios from "axios";
-
-const getSearchSuggestion = async (keyword) => {
- const api_url = import.meta.env.VITE_API_URL;
- try {
- const response = await axios.get(
- `${api_url}/search/suggest?keyword=${keyword}`
- );
- return response.data.results;
- } catch (err) {
- console.error("Error fetching genre info:", err);
- return err;
- }
-};
-
-export default getSearchSuggestion;
diff --git a/src/utils/getServers.utils.js b/src/utils/getServers.utils.js
deleted file mode 100644
index 0ed3e14..0000000
--- a/src/utils/getServers.utils.js
+++ /dev/null
@@ -1,14 +0,0 @@
-import axios from "axios";
-
-export default async function getServers(animeId, episodeId) {
- try {
- const api_url = import.meta.env.VITE_API_URL;
- const response = await axios.get(
- `${api_url}/servers/${animeId}?ep=${episodeId}`
- );
- return response.data.results;
- } catch (error) {
- console.error(error);
- return error;
- }
-}
diff --git a/src/utils/getStreamInfo.utils.js b/src/utils/getStreamInfo.utils.js
deleted file mode 100644
index d044e5c..0000000
--- a/src/utils/getStreamInfo.utils.js
+++ /dev/null
@@ -1,12 +0,0 @@
-import axios from "axios";
-
-export default async function getStreamInfo(animeId,episodeId,serverName,type) {
- const api_url = import.meta.env.VITE_API_URL;
- try {
- const response = await axios.get(`${api_url}/stream?id=${animeId}?ep=${episodeId}&server=${serverName}&type=${type}`);
- return response.data.results;
- } catch (error) {
- console.error("Error fetching stream info:", error);
- return error;
- }
-}
diff --git a/src/utils/getTopSearch.utils.js b/src/utils/getTopSearch.utils.js
deleted file mode 100644
index a1d1282..0000000
--- a/src/utils/getTopSearch.utils.js
+++ /dev/null
@@ -1,32 +0,0 @@
-import axios from "axios";
-
-const getTopSearch = async () => {
- try {
- let workerUrls = import.meta.env.VITE_WORKER_URL?.split(",");
- let baseUrl = workerUrls?.length
- ? workerUrls[Math.floor(Math.random() * workerUrls.length)]
- : import.meta.env.VITE_API_URL;
- const storedData = localStorage.getItem("topSearch");
- if (storedData) {
- const { data, timestamp } = JSON.parse(storedData);
- if (Date.now() - timestamp <= 7 * 24 * 60 * 60 * 1000) {
- return data;
- }
- }
- const { data } = await axios.get(`${baseUrl}/top-search`);
- const results = data?.results || [];
- if (results.length) {
- localStorage.setItem(
- "topSearch",
- JSON.stringify({ data: results, timestamp: Date.now() })
- );
- return results;
- }
- return [];
- } catch (error) {
- console.error("Error fetching top search data:", error);
- return null;
- }
-};
-
-export default getTopSearch;
diff --git a/src/utils/getVoiceActor.utils.js b/src/utils/getVoiceActor.utils.js
deleted file mode 100644
index 57afecf..0000000
--- a/src/utils/getVoiceActor.utils.js
+++ /dev/null
@@ -1,14 +0,0 @@
-import axios from "axios";
-
-export default async function fetchVoiceActorInfo(id, page) {
- const api_url = import.meta.env.VITE_API_URL;
- try {
- const response = await axios.get(
- `${api_url}/character/list/${id}?page=${page}`
- );
- return response.data.results;
- } catch (error) {
- console.error("Error fetching anime info:", error);
- return error;
- }
-}
diff --git a/tailwind.config.js b/tailwind.config.js
deleted file mode 100644
index 2725950..0000000
--- a/tailwind.config.js
+++ /dev/null
@@ -1,62 +0,0 @@
-/** @type {import('tailwindcss').Config} */
-export default {
- darkMode: ["class"],
- content: ["./index.html", "./src/**/*.{js,ts,jsx,tsx}"],
- theme: {
- extend: {
- borderRadius: {
- lg: "var(--radius)",
- md: "calc(var(--radius) - 2px)",
- sm: "calc(var(--radius) - 4px)",
- },
- screens: {
- "custom-md": "600px",
- "custom-xl": "1200px",
- "ultra-wide":"1660px",
- },
- colors: {
- background: "hsl(var(--background))",
- foreground: "hsl(var(--foreground))",
- card: {
- DEFAULT: "hsl(var(--card))",
- foreground: "hsl(var(--card-foreground))",
- },
- popover: {
- DEFAULT: "hsl(var(--popover))",
- foreground: "hsl(var(--popover-foreground))",
- },
- primary: {
- DEFAULT: "hsl(var(--primary))",
- foreground: "hsl(var(--primary-foreground))",
- },
- secondary: {
- DEFAULT: "hsl(var(--secondary))",
- foreground: "hsl(var(--secondary-foreground))",
- },
- muted: {
- DEFAULT: "hsl(var(--muted))",
- foreground: "hsl(var(--muted-foreground))",
- },
- accent: {
- DEFAULT: "hsl(var(--accent))",
- foreground: "hsl(var(--accent-foreground))",
- },
- destructive: {
- DEFAULT: "hsl(var(--destructive))",
- foreground: "hsl(var(--destructive-foreground))",
- },
- border: "hsl(var(--border))",
- input: "hsl(var(--input))",
- ring: "hsl(var(--ring))",
- chart: {
- 1: "hsl(var(--chart-1))",
- 2: "hsl(var(--chart-2))",
- 3: "hsl(var(--chart-3))",
- 4: "hsl(var(--chart-4))",
- 5: "hsl(var(--chart-5))",
- },
- },
- },
- },
- plugins: [require("tailwindcss-animate")],
-};
diff --git a/vercel.json b/vercel.json
deleted file mode 100644
index 2e3d156..0000000
--- a/vercel.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "routes": [{ "src": "/[^.]+", "dest": "/", "status": 200 }]
-}
\ No newline at end of file
diff --git a/vite.config.js b/vite.config.js
deleted file mode 100644
index 454ab3e..0000000
--- a/vite.config.js
+++ /dev/null
@@ -1,12 +0,0 @@
-import path from "path"
-import react from "@vitejs/plugin-react"
-import { defineConfig } from "vite"
-
-export default defineConfig({
- plugins: [react()],
- resolve: {
- alias: {
- "@": path.resolve(__dirname, "./"),
- },
- },
-})