├── example
├── src
│ ├── index.css
│ ├── main.tsx
│ └── App.tsx
├── postcss.config.js
├── tailwind.config.js
├── vite.config.ts
├── index.html
├── .gitignore
├── package.json
└── package-lock.json
├── .pnpmrc
├── src
├── utils
│ └── cn.ts
├── index.ts
├── hooks
│ ├── useClickOutside.ts
│ └── __tests__
│ │ └── useClickOutside.test.tsx
└── components
│ ├── Modal
│ ├── __tests__
│ │ └── Modal.test.tsx
│ └── Modal.tsx
│ ├── Table
│ ├── __tests__
│ │ └── Table.test.tsx
│ └── Table.tsx
│ └── Drawer
│ ├── __tests__
│ └── Drawer.test.tsx
│ └── Drawer.tsx
├── .prettierignore
├── babel.config.cjs
├── .prettierrc
├── jest.setup.js
├── tsconfig.json
├── .gitignore
├── rollup.config.js
├── .eslintrc.cjs
├── jest.config.cjs
├── .eslintrc.json
├── CHANGELOG.md
├── LICENSE
├── package.json
└── README.md
/example/src/index.css:
--------------------------------------------------------------------------------
1 | @tailwind base;
2 | @tailwind components;
3 | @tailwind utilities;
--------------------------------------------------------------------------------
/.pnpmrc:
--------------------------------------------------------------------------------
1 | strict-peer-dependencies=false
2 | auto-install-peers=true
3 | resolution-mode=highest
4 |
--------------------------------------------------------------------------------
/example/postcss.config.js:
--------------------------------------------------------------------------------
1 | export default {
2 | plugins: {
3 | tailwindcss: {},
4 | autoprefixer: {},
5 | },
6 | }
7 |
--------------------------------------------------------------------------------
/src/utils/cn.ts:
--------------------------------------------------------------------------------
1 | export function cn(...classes: (string | undefined | boolean | null)[]) {
2 | return classes.filter(Boolean).join(' ');
3 | }
4 |
--------------------------------------------------------------------------------
/.prettierignore:
--------------------------------------------------------------------------------
1 | node_modules
2 | dist
3 | coverage
4 | build
5 | .next
6 | .vercel
7 | .env*
8 | package-lock.json
9 | pnpm-lock.yaml
10 | yarn.lock
11 |
--------------------------------------------------------------------------------
/babel.config.cjs:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | presets: [
3 | ['@babel/preset-env', { targets: { node: 'current' } }],
4 | '@babel/preset-typescript',
5 | ['@babel/preset-react', { runtime: 'automatic' }],
6 | ],
7 | };
8 |
--------------------------------------------------------------------------------
/example/tailwind.config.js:
--------------------------------------------------------------------------------
1 | /** @type {import('tailwindcss').Config} */
2 | export default {
3 | content: [
4 | "./index.html",
5 | "./src/**/*.{js,ts,jsx,tsx}",
6 | "../src/**/*.{js,ts,jsx,tsx}"
7 | ],
8 | theme: {
9 | extend: {},
10 | },
11 | plugins: [],
12 | }
--------------------------------------------------------------------------------
/src/index.ts:
--------------------------------------------------------------------------------
1 | // Components
2 | export { Modal } from './components/Modal/Modal';
3 | export { Drawer } from './components/Drawer/Drawer';
4 | export {
5 | Table,
6 | TableHead,
7 | TableBody,
8 | TableRow,
9 | TableCell,
10 | TableHeadCell,
11 | } from './components/Table/Table';
12 |
--------------------------------------------------------------------------------
/example/src/main.tsx:
--------------------------------------------------------------------------------
1 | import React from 'react'
2 | import ReactDOM from 'react-dom/client'
3 | import './index.css'
4 | import App from './App'
5 |
6 | ReactDOM.createRoot(document.getElementById('root') as HTMLElement).render(
7 |
8 |
9 |
10 | )
11 |
--------------------------------------------------------------------------------
/example/vite.config.ts:
--------------------------------------------------------------------------------
1 | import { defineConfig } from 'vite'
2 | import react from '@vitejs/plugin-react'
3 | import path from 'path'
4 |
5 | export default defineConfig({
6 | plugins: [react()],
7 | resolve: {
8 | alias: {
9 | '@cisseui/react-components': path.resolve(__dirname, '../src')
10 | }
11 | }
12 | })
13 |
--------------------------------------------------------------------------------
/example/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | React UI Components Demo
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/.prettierrc:
--------------------------------------------------------------------------------
1 | {
2 | "semi": true,
3 | "tabWidth": 2,
4 | "printWidth": 100,
5 | "singleQuote": true,
6 | "trailingComma": "es5",
7 | "bracketSpacing": true,
8 | "bracketSameLine": false,
9 | "arrowParens": "always",
10 | "endOfLine": "lf",
11 | "importOrder": [
12 | "^react",
13 | "^@/(.*)$",
14 | "^[./]"
15 | ],
16 | "importOrderSeparation": true,
17 | "importOrderSortSpecifiers": true,
18 | "plugins": ["@trivago/prettier-plugin-sort-imports"]
19 | }
20 |
--------------------------------------------------------------------------------
/jest.setup.js:
--------------------------------------------------------------------------------
1 | require('@testing-library/jest-dom');
2 |
3 | // Mock IntersectionObserver
4 | class IntersectionObserver {
5 | observe() { return null; }
6 | unobserve() { return null; }
7 | disconnect() { return null; }
8 | }
9 | window.IntersectionObserver = IntersectionObserver;
10 |
11 | // Mock ResizeObserver
12 | class ResizeObserver {
13 | observe() { return null; }
14 | unobserve() { return null; }
15 | disconnect() { return null; }
16 | }
17 | window.ResizeObserver = ResizeObserver;
18 |
19 | // Setup portal root
20 | document.body.innerHTML = '';
21 |
--------------------------------------------------------------------------------
/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "target": "es5",
4 | "lib": ["dom", "dom.iterable", "esnext"],
5 | "allowJs": true,
6 | "skipLibCheck": true,
7 | "esModuleInterop": true,
8 | "allowSyntheticDefaultImports": true,
9 | "strict": true,
10 | "forceConsistentCasingInFileNames": true,
11 | "noFallthroughCasesInSwitch": true,
12 | "module": "esnext",
13 | "moduleResolution": "node",
14 | "resolveJsonModule": true,
15 | "isolatedModules": true,
16 | "noEmit": true,
17 | "jsx": "react-jsx",
18 | "baseUrl": "src",
19 | "paths": {
20 | "@/*": ["*"]
21 | }
22 | },
23 | "include": ["src"],
24 | "exclude": ["node_modules", "dist"]
25 | }
26 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # Dependencies
2 | node_modules
3 | /.pnp
4 | .pnp.js
5 |
6 | # Testing
7 | /coverage
8 |
9 | # Production
10 | /build
11 | /dist
12 | /lib
13 | /es
14 |
15 | # Development
16 | .env.local
17 | .env.development.local
18 | .env.test.local
19 | .env.production.local
20 |
21 | # Logs
22 | npm-debug.log*
23 | yarn-debug.log*
24 | yarn-error.log*
25 |
26 | # Editor directories and files
27 | .idea
28 | .vscode
29 | *.swp
30 | *.swo
31 | .DS_Store
32 | *.sublime-workspace
33 | *.sublime-project
34 |
35 | # TypeScript
36 | *.tsbuildinfo
37 |
38 | # Cache
39 | .cache
40 | .npm
41 |
42 | # Optional npm cache directory
43 | .npm
44 |
45 | # Optional eslint cache
46 | .eslintcache
47 |
48 | # Optional stylelint cache
49 | .stylelintcache
50 |
--------------------------------------------------------------------------------
/example/.gitignore:
--------------------------------------------------------------------------------
1 | # Dependencies
2 | node_modules
3 | /.pnp
4 | .pnp.js
5 |
6 | # Testing
7 | /coverage
8 |
9 | # Production
10 | /build
11 | /dist
12 | /lib
13 | /es
14 |
15 | # Development
16 | .env.local
17 | .env.development.local
18 | .env.test.local
19 | .env.production.local
20 |
21 | # Logs
22 | npm-debug.log*
23 | yarn-debug.log*
24 | yarn-error.log*
25 |
26 | # Editor directories and files
27 | .idea
28 | .vscode
29 | *.swp
30 | *.swo
31 | .DS_Store
32 | *.sublime-workspace
33 | *.sublime-project
34 |
35 | # TypeScript
36 | *.tsbuildinfo
37 |
38 | # Cache
39 | .cache
40 | .npm
41 |
42 | # Optional npm cache directory
43 | .npm
44 |
45 | # Optional eslint cache
46 | .eslintcache
47 |
48 | # Optional stylelint cache
49 | .stylelintcache
50 |
--------------------------------------------------------------------------------
/src/hooks/useClickOutside.ts:
--------------------------------------------------------------------------------
1 | import { RefObject, useEffect } from 'react';
2 |
3 | export const useClickOutside = (
4 | ref: RefObject,
5 | handler: (event: MouseEvent | TouchEvent) => void
6 | ) => {
7 | useEffect(() => {
8 | const listener = (event: MouseEvent | TouchEvent) => {
9 | if (!ref.current || ref.current.contains(event.target as Node)) {
10 | return;
11 | }
12 | handler(event);
13 | };
14 |
15 | document.addEventListener('mousedown', listener);
16 | document.addEventListener('touchstart', listener);
17 |
18 | return () => {
19 | document.removeEventListener('mousedown', listener);
20 | document.removeEventListener('touchstart', listener);
21 | };
22 | }, [ref, handler]);
23 | };
24 |
--------------------------------------------------------------------------------
/example/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "react-ui-components-example",
3 | "private": true,
4 | "version": "0.0.0",
5 | "type": "module",
6 | "scripts": {
7 | "dev": "vite",
8 | "build": "tsc && vite build",
9 | "preview": "vite preview"
10 | },
11 | "dependencies": {
12 | "@cisseui/react-components": "file:..",
13 | "react": "^18.0.0",
14 | "react-dom": "^18.0.0",
15 | "clsx": "^2.0.0",
16 | "tailwind-merge": "^2.0.0"
17 | },
18 | "devDependencies": {
19 | "@types/react": "^18.0.0",
20 | "@types/react-dom": "^18.0.0",
21 | "@vitejs/plugin-react": "^4.0.0",
22 | "autoprefixer": "^10.4.20",
23 | "postcss": "^8.5.1",
24 | "tailwindcss": "^3.4.17",
25 | "typescript": "^5.0.0",
26 | "vite": "^6.2.4"
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/rollup.config.js:
--------------------------------------------------------------------------------
1 | import resolve from '@rollup/plugin-node-resolve';
2 | import commonjs from '@rollup/plugin-commonjs';
3 | import typescript from '@rollup/plugin-typescript';
4 | import pkg from './package.json' assert { type: "json" };
5 |
6 | export default {
7 | input: 'src/index.ts',
8 | output: [
9 | {
10 | file: pkg.main,
11 | format: 'cjs',
12 | sourcemap: true,
13 | },
14 | {
15 | file: pkg.module,
16 | format: 'esm',
17 | sourcemap: true,
18 | },
19 | ],
20 | plugins: [
21 | resolve(),
22 | commonjs(),
23 | typescript({
24 | tsconfig: './tsconfig.json',
25 | declaration: true,
26 | declarationDir: 'dist',
27 | }),
28 | ],
29 | external: [...Object.keys(pkg.peerDependencies || {})],
30 | };
31 |
--------------------------------------------------------------------------------
/.eslintrc.cjs:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | root: true,
3 | env: {
4 | browser: true,
5 | es2021: true,
6 | node: true,
7 | jest: true,
8 | },
9 | extends: [
10 | 'eslint:recommended',
11 | 'plugin:react/recommended',
12 | 'plugin:@typescript-eslint/recommended',
13 | 'plugin:react-hooks/recommended',
14 | ],
15 | parser: '@typescript-eslint/parser',
16 | parserOptions: {
17 | ecmaFeatures: {
18 | jsx: true,
19 | },
20 | ecmaVersion: 12,
21 | sourceType: 'module',
22 | },
23 | plugins: ['react', '@typescript-eslint', 'react-hooks'],
24 | settings: {
25 | react: {
26 | version: 'detect',
27 | },
28 | },
29 | rules: {
30 | 'react/react-in-jsx-scope': 'off',
31 | 'react/prop-types': 'off',
32 | '@typescript-eslint/explicit-module-boundary-types': 'off',
33 | '@typescript-eslint/no-explicit-any': 'warn',
34 | },
35 | };
36 |
--------------------------------------------------------------------------------
/jest.config.cjs:
--------------------------------------------------------------------------------
1 | /** @type {import('ts-jest').JestConfigWithTsJest} */
2 | module.exports = {
3 | preset: 'ts-jest',
4 | testEnvironment: 'jsdom',
5 | setupFilesAfterEnv: ['/jest.setup.js'],
6 | moduleNameMapper: {
7 | '^@/(.*)$': '/src/$1',
8 | '\\.(css|less|scss|sass)$': 'identity-obj-proxy',
9 | },
10 | transform: {
11 | '^.+\\.(ts|tsx)$': ['ts-jest', {
12 | babelConfig: true
13 | }],
14 | '^.+\\.(js|jsx)$': ['babel-jest', {
15 | configFile: './babel.config.cjs'
16 | }]
17 | },
18 | testMatch: ['**/__tests__/**/*.test.(ts|tsx)'],
19 | coverageDirectory: 'coverage',
20 | collectCoverageFrom: [
21 | 'src/**/*.{ts,tsx}',
22 | '!src/**/*.d.ts',
23 | '!src/index.ts',
24 | ],
25 | globals: {
26 | 'ts-jest': {
27 | tsconfig: 'tsconfig.json',
28 | diagnostics: false,
29 | babelConfig: true
30 | },
31 | },
32 | };
33 |
--------------------------------------------------------------------------------
/.eslintrc.json:
--------------------------------------------------------------------------------
1 | {
2 | "env": {
3 | "browser": true,
4 | "es2021": true,
5 | "jest": true
6 | },
7 | "extends": [
8 | "eslint:recommended",
9 | "plugin:@typescript-eslint/recommended",
10 | "plugin:react/recommended",
11 | "plugin:react-hooks/recommended"
12 | ],
13 | "parser": "@typescript-eslint/parser",
14 | "parserOptions": {
15 | "ecmaFeatures": {
16 | "jsx": true
17 | },
18 | "ecmaVersion": "latest",
19 | "sourceType": "module"
20 | },
21 | "plugins": [
22 | "react",
23 | "@typescript-eslint",
24 | "react-hooks"
25 | ],
26 | "settings": {
27 | "react": {
28 | "version": "detect"
29 | }
30 | },
31 | "rules": {
32 | "react/react-in-jsx-scope": "off",
33 | "@typescript-eslint/explicit-module-boundary-types": "off",
34 | "@typescript-eslint/no-explicit-any": "warn",
35 | "@typescript-eslint/no-unused-vars": "off"
36 | }
37 | }
38 |
--------------------------------------------------------------------------------
/CHANGELOG.md:
--------------------------------------------------------------------------------
1 | # Changelog
2 |
3 | All notable changes to this project will be documented in this file.
4 |
5 | The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6 | and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7 |
8 | ## [0.1.2] - 2025-02-06
9 |
10 | ### Added
11 | - Initial release of the component library
12 | - Table component with sorting and selection features
13 | - Modal component with customizable content
14 | - Drawer component with different positions
15 | - useClickOutside hook for detecting clicks outside elements
16 |
17 | ### Changed
18 | - Updated package name to match GitHub organization
19 | - Configured package for GitHub Packages registry
20 |
21 | ## [0.1.1] - 2025-02-06
22 |
23 | ### Fixed
24 | - Fixed TypeScript configuration
25 | - Resolved Jest and Babel configuration issues
26 |
27 | ## [0.1.0] - 2025-02-06
28 |
29 | ### Added
30 | - Initial project setup
31 | - Basic component structure
32 | - Testing environment setup
33 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2025
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/src/hooks/__tests__/useClickOutside.test.tsx:
--------------------------------------------------------------------------------
1 | import { fireEvent, render } from '@testing-library/react';
2 |
3 | import React from 'react';
4 |
5 | import { useClickOutside } from '../useClickOutside';
6 |
7 | describe('useClickOutside', () => {
8 | it('should call handler when clicking outside', () => {
9 | const handler = jest.fn();
10 |
11 | const TestComponent = () => {
12 | const ref = React.useRef(null);
13 | useClickOutside(ref, handler);
14 | return (
15 |
16 | Inside Content
17 |
18 | );
19 | };
20 |
21 | render();
22 | const outsideElement = document.createElement('div');
23 | document.body.appendChild(outsideElement);
24 |
25 | fireEvent.mouseDown(outsideElement);
26 | expect(handler).toHaveBeenCalled();
27 |
28 | document.body.removeChild(outsideElement);
29 | });
30 |
31 | it('should not call handler when clicking inside', () => {
32 | const handler = jest.fn();
33 |
34 | const TestComponent = () => {
35 | const ref = React.useRef(null);
36 | useClickOutside(ref, handler);
37 | return (
38 |
39 | Inside Content
40 |
41 | );
42 | };
43 |
44 | const { getByTestId } = render();
45 | const insideElement = getByTestId('inside');
46 |
47 | fireEvent.mouseDown(insideElement);
48 | expect(handler).not.toHaveBeenCalled();
49 | });
50 |
51 | it('should handle null ref', () => {
52 | const handler = jest.fn();
53 | const TestComponent = () => {
54 | const ref = React.useRef(null);
55 | useClickOutside(ref, handler);
56 | return null;
57 | };
58 |
59 | render();
60 | fireEvent.mouseDown(document.body);
61 | expect(handler).not.toHaveBeenCalled();
62 | });
63 | });
64 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "@cisseui/react-components",
3 | "version": "1.1.1",
4 | "description": "Modern React UI components including Table, Modal, and Drawer",
5 | "type": "module",
6 | "main": "dist/index.js",
7 | "module": "dist/index.esm.js",
8 | "types": "dist/index.d.ts",
9 | "files": [
10 | "dist"
11 | ],
12 | "scripts": {
13 | "build": "rollup -c",
14 | "test": "jest --config jest.config.cjs",
15 | "lint": "eslint \"src/**/*.{ts,tsx}\"",
16 | "format": "prettier --write \"src/**/*.{js,jsx,ts,tsx,json,css,scss,md}\"",
17 | "format:check": "prettier --check \"src/**/*.{js,jsx,ts,tsx,json,css,scss,md}\"",
18 | "storybook": "start-storybook -p 6006",
19 | "build-storybook": "build-storybook",
20 | "prepublishOnly": "npm run test && npm run lint && npm run build",
21 | "version:patch": "npm version patch -m 'chore: release %s'",
22 | "version:minor": "npm version minor -m 'chore: release %s'",
23 | "version:major": "npm version major -m 'chore: release %s'",
24 | "postversion": "git push --follow-tags"
25 | },
26 | "peerDependencies": {
27 | "react": "^18.0.0",
28 | "react-dom": "^18.0.0"
29 | },
30 | "devDependencies": {
31 | "@babel/core": "^7.22.0",
32 | "@babel/preset-env": "^7.22.0",
33 | "@babel/preset-react": "^7.22.0",
34 | "@babel/preset-typescript": "^7.22.0",
35 | "@rollup/plugin-commonjs": "^25.0.0",
36 | "@rollup/plugin-node-resolve": "^15.0.0",
37 | "@rollup/plugin-typescript": "^11.0.0",
38 | "@testing-library/jest-dom": "^5.16.5",
39 | "@testing-library/react": "^14.0.0",
40 | "@types/jest": "^29.5.0",
41 | "@types/react": "^18.0.0",
42 | "@types/react-dom": "^18.0.0",
43 | "@typescript-eslint/eslint-plugin": "^8.23.0",
44 | "@typescript-eslint/parser": "^8.23.0",
45 | "babel-jest": "^29.5.0",
46 | "eslint": "^8.0.0",
47 | "eslint-plugin-react": "^7.37.4",
48 | "eslint-plugin-react-hooks": "^5.1.0",
49 | "jest": "^29.5.0",
50 | "jest-environment-jsdom": "^29.5.0",
51 | "prettier": "^3.4.2",
52 | "rollup": "^4.34.5",
53 | "ts-jest": "^29.1.0",
54 | "typescript": "^5.0.0"
55 | },
56 | "repository": {
57 | "type": "git",
58 | "url": "git+https://github.com/tcisse/react-ui-components.git"
59 | },
60 | "keywords": [
61 | "react",
62 | "components",
63 | "ui",
64 | "table",
65 | "modal",
66 | "drawer"
67 | ],
68 | "author": "cissedev",
69 | "license": "MIT",
70 | "publishConfig": {
71 | "access": "public"
72 | },
73 | "engines": {
74 | "node": ">=16",
75 | "pnpm": ">=8"
76 | }
77 | }
78 |
--------------------------------------------------------------------------------
/src/components/Modal/__tests__/Modal.test.tsx:
--------------------------------------------------------------------------------
1 | import { fireEvent, render, screen } from '@testing-library/react';
2 |
3 | import React from 'react';
4 |
5 | import { Modal } from '../Modal';
6 |
7 | describe('Modal Component', () => {
8 | const onCloseMock = jest.fn();
9 |
10 | beforeEach(() => {
11 | onCloseMock.mockClear();
12 | });
13 |
14 | it('should not render when isOpen is false', () => {
15 | render(
16 |
17 | Test Content
18 |
19 | );
20 |
21 | expect(screen.queryByText('Test Content')).not.toBeInTheDocument();
22 | });
23 |
24 | it('should render when isOpen is true', () => {
25 | render(
26 |
27 | Test Content
28 |
29 | );
30 |
31 | expect(screen.getByText('Test Content')).toBeInTheDocument();
32 | });
33 |
34 | it('should render title when provided', () => {
35 | render(
36 |
37 | Test Content
38 |
39 | );
40 |
41 | expect(screen.getByText('Test Title')).toBeInTheDocument();
42 | });
43 |
44 | it('should call onClose when clicking outside', () => {
45 | render(
46 |
47 | Test Content
48 |
49 | );
50 |
51 | // Simulate click outside by clicking the backdrop
52 | const backdrop = screen.getByRole('dialog').parentElement;
53 | if (backdrop) {
54 | fireEvent.mouseDown(backdrop);
55 | }
56 |
57 | expect(onCloseMock).toHaveBeenCalled();
58 | });
59 |
60 | it('should call onClose when pressing Escape', () => {
61 | render(
62 |
63 | Test Content
64 |
65 | );
66 |
67 | fireEvent.keyDown(document, { key: 'Escape' });
68 | expect(onCloseMock).toHaveBeenCalled();
69 | });
70 |
71 | it('should not call onClose when clicking inside the modal', () => {
72 | render(
73 |
74 | Test Content
75 |
76 | );
77 |
78 | fireEvent.mouseDown(screen.getByText('Test Content'));
79 | expect(onCloseMock).not.toHaveBeenCalled();
80 | });
81 |
82 | it('should apply correct size class', () => {
83 | render(
84 |
85 | Test Content
86 |
87 | );
88 |
89 | const modalContent = screen.getByRole('dialog');
90 | expect(modalContent).toHaveClass('max-w-lg');
91 | });
92 | });
93 |
--------------------------------------------------------------------------------
/example/src/App.tsx:
--------------------------------------------------------------------------------
1 | import React, { useState } from 'react'
2 | import { Modal } from '../../src/components/Modal/Modal'
3 | import { Table, TableHead, TableBody, TableRow, TableCell, TableHeadCell } from '../../src/components/Table/Table'
4 | import { Drawer } from '../../src/components/Drawer/Drawer'
5 |
6 | function App() {
7 | const [isOpen, setIsOpen] = useState(false);
8 | const [drawerOpen, setDrawerOpen] = useState(false);
9 |
10 | const data = [
11 | { id: 1, name: 'John Doe', email: 'john@example.com', role: 'Admin' },
12 | { id: 2, name: 'Jane Smith', email: 'jane@example.com', role: 'User' },
13 | { id: 3, name: 'Bob Johnson', email: 'bob@example.com', role: 'User' },
14 | ];
15 |
16 | return (
17 |
18 |
React UI Components Demo
19 |
20 |
21 |
27 |
28 |
setIsOpen(false)}
31 | title="User Details"
32 | size="lg"
33 | className='bg-white'
34 | >
35 |
36 |
Modal Content
37 |
This modal shows the details of our users.
38 |
39 |
40 |
41 |
42 |
43 |
Users Table
44 |
45 |
46 |
47 | ID
48 | Name
49 | Email
50 | Role
51 |
52 |
53 |
54 | {data.map((row) => (
55 |
56 | {row.id}
57 | {row.name}
58 | {row.email}
59 | {row.role}
60 |
61 | ))}
62 |
63 |
64 |
65 |
setDrawerOpen(false)}
68 | title="Example Drawer"
69 | position="left"
70 | size='md'
71 | className='bg-white'
72 | closeOnClickOutside={false}
73 | closeOnEsc={false}
74 | >
75 |
76 |
Drawer Content
77 |
This is an example drawer
78 |
79 |
80 |
81 | )
82 | }
83 |
84 | export default App
85 |
--------------------------------------------------------------------------------
/src/components/Table/__tests__/Table.test.tsx:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import { render, screen } from '@testing-library/react';
3 | import {
4 | Table,
5 | TableHead,
6 | TableBody,
7 | TableRow,
8 | TableCell,
9 | TableHeadCell,
10 | } from '../Table';
11 |
12 | describe('Table Component', () => {
13 | const mockData = [
14 | { id: 1, name: 'John Doe', email: 'john@example.com' },
15 | { id: 2, name: 'Jane Smith', email: 'jane@example.com' },
16 | ];
17 |
18 | it('renders table with header and body', () => {
19 | render(
20 |
21 |
22 |
23 | ID
24 | Name
25 | Email
26 |
27 |
28 |
29 | {mockData.map((row) => (
30 |
31 | {row.id}
32 | {row.name}
33 | {row.email}
34 |
35 | ))}
36 |
37 |
38 | );
39 |
40 | // Verify header cells
41 | expect(screen.getByText('ID')).toBeInTheDocument();
42 | expect(screen.getByText('Name')).toBeInTheDocument();
43 | expect(screen.getByText('Email')).toBeInTheDocument();
44 |
45 | // Verify data cells
46 | mockData.forEach((row) => {
47 | expect(screen.getByText(row.id.toString())).toBeInTheDocument();
48 | expect(screen.getByText(row.name)).toBeInTheDocument();
49 | expect(screen.getByText(row.email)).toBeInTheDocument();
50 | });
51 | });
52 |
53 | it('applies custom className to table components', () => {
54 | const { container } = render(
55 |
56 |
57 |
58 | Header
59 |
60 |
61 |
62 |
63 | Cell
64 |
65 |
66 |
67 | );
68 |
69 | expect(container.querySelector('.custom-table')).toBeInTheDocument();
70 | expect(container.querySelector('.custom-head')).toBeInTheDocument();
71 | expect(container.querySelector('.custom-body')).toBeInTheDocument();
72 | expect(container.querySelector('.custom-header-cell')).toBeInTheDocument();
73 | expect(container.querySelector('.custom-cell')).toBeInTheDocument();
74 | });
75 |
76 | it('forwards ref to table element', () => {
77 | const ref = React.createRef();
78 | render(
79 |
80 |
81 |
82 | Header
83 |
84 |
85 |
86 | );
87 |
88 | expect(ref.current).toBeInstanceOf(HTMLTableElement);
89 | });
90 | });
91 |
--------------------------------------------------------------------------------
/src/components/Drawer/__tests__/Drawer.test.tsx:
--------------------------------------------------------------------------------
1 | import '@testing-library/jest-dom';
2 | import { fireEvent, render, screen } from '@testing-library/react';
3 |
4 | import React from 'react';
5 |
6 | import { Drawer } from '../Drawer';
7 |
8 | describe('Drawer Component', () => {
9 | const onCloseMock = jest.fn();
10 |
11 | beforeEach(() => {
12 | onCloseMock.mockClear();
13 | });
14 |
15 | it('should not render when isOpen is false', () => {
16 | render(
17 |
18 | Test Content
19 |
20 | );
21 |
22 | expect(screen.queryByText('Test Content')).not.toBeInTheDocument();
23 | });
24 |
25 | it('should render when isOpen is true', () => {
26 | render(
27 |
28 | Test Content
29 |
30 | );
31 |
32 | expect(screen.getByText('Test Content')).toBeInTheDocument();
33 | });
34 |
35 | it('should call onClose when clicking outside', () => {
36 | render(
37 |
38 | Test Content
39 |
40 | );
41 |
42 | // Simulate click outside by clicking the backdrop
43 | const backdrop = screen.getByTestId('drawer-container');
44 | fireEvent.mouseDown(backdrop);
45 |
46 | expect(onCloseMock).toHaveBeenCalled();
47 | });
48 |
49 | it('should call onClose when pressing Escape', () => {
50 | render(
51 |
52 | Test Content
53 |
54 | );
55 |
56 | fireEvent.keyDown(document, { key: 'Escape' });
57 | expect(onCloseMock).toHaveBeenCalled();
58 | });
59 |
60 | it('should not call onClose when clicking inside the drawer', () => {
61 | render(
62 |
63 | Test Content
64 |
65 | );
66 |
67 | fireEvent.mouseDown(screen.getByText('Test Content'));
68 | expect(onCloseMock).not.toHaveBeenCalled();
69 | });
70 |
71 | it('should apply correct position class', () => {
72 | render(
73 |
74 | Test Content
75 |
76 | );
77 |
78 | const drawerContent = screen.getByTestId('drawer-content');
79 | expect(drawerContent).toHaveClass('left-0');
80 | });
81 |
82 | it('should apply correct size class', () => {
83 | render(
84 |
85 | Test Content
86 |
87 | );
88 |
89 | const drawerContent = screen.getByTestId('drawer-content');
90 | expect(drawerContent).toHaveClass('w-96');
91 | });
92 |
93 | it('should not render overlay when overlay prop is false', () => {
94 | const { container } = render(
95 |
96 | Test Content
97 |
98 | );
99 |
100 | const overlay = container.querySelector('.bg-black.bg-opacity-50');
101 | expect(overlay).not.toBeInTheDocument();
102 | });
103 | });
104 |
--------------------------------------------------------------------------------
/src/components/Modal/Modal.tsx:
--------------------------------------------------------------------------------
1 | import React, { useEffect, useRef } from 'react';
2 | import { createPortal } from 'react-dom';
3 |
4 | import { useClickOutside } from '../../hooks/useClickOutside';
5 | import { cn } from '../../utils/cn';
6 |
7 | export interface ModalProps {
8 | isOpen: boolean;
9 | onClose: () => void;
10 | children: React.ReactNode;
11 | title?: string;
12 | size?: 'sm' | 'md' | 'lg' | 'xl' | 'full';
13 | className?: string;
14 | closeOnClickOutside?: boolean;
15 | closeOnEsc?: boolean;
16 | }
17 |
18 | export const Modal: React.FC = ({
19 | isOpen,
20 | onClose,
21 | children,
22 | title,
23 | size = 'md',
24 | className,
25 | closeOnClickOutside = true,
26 | closeOnEsc = true,
27 | }) => {
28 | const modalRef = useRef(null);
29 |
30 | useClickOutside(modalRef, () => {
31 | if (closeOnClickOutside) {
32 | onClose();
33 | }
34 | });
35 |
36 | useEffect(() => {
37 | const handleEsc = (event: KeyboardEvent) => {
38 | if (closeOnEsc && event.key === 'Escape') {
39 | onClose();
40 | }
41 | };
42 |
43 | if (isOpen) {
44 | document.addEventListener('keydown', handleEsc);
45 | document.body.style.overflow = 'hidden';
46 | }
47 |
48 | return () => {
49 | document.removeEventListener('keydown', handleEsc);
50 | document.body.style.overflow = 'unset';
51 | };
52 | }, [isOpen, closeOnEsc, onClose]);
53 |
54 | if (!isOpen) return null;
55 |
56 | const sizeClasses = {
57 | sm: 'max-w-sm',
58 | md: 'max-w-md',
59 | lg: 'max-w-lg',
60 | xl: 'max-w-xl',
61 | full: 'max-w-full m-4',
62 | };
63 |
64 | return createPortal(
65 |
71 | {/* Backdrop overlay */}
72 |
79 |
80 | {/* Modal content */}
81 |
94 | {title && (
95 |
96 |
97 | {title}
98 |
99 |
127 |
128 | )}
129 |
{children}
130 |
131 |
,
132 | document.body
133 | );
134 | };
135 |
--------------------------------------------------------------------------------
/src/components/Drawer/Drawer.tsx:
--------------------------------------------------------------------------------
1 | import React, { useEffect, useRef } from 'react';
2 | import { createPortal } from 'react-dom';
3 |
4 | import { useClickOutside } from '../../hooks/useClickOutside';
5 | import { cn } from '../../utils/cn';
6 |
7 | export interface DrawerProps {
8 | isOpen: boolean;
9 | onClose: () => void;
10 | children: React.ReactNode;
11 | position?: 'left' | 'right' | 'top' | 'bottom';
12 | size?: 'sm' | 'md' | 'lg' | 'xl' | 'full';
13 | className?: string;
14 | closeOnClickOutside?: boolean;
15 | closeOnEsc?: boolean;
16 | overlay?: boolean;
17 | title: string;
18 | }
19 |
20 | export const Drawer: React.FC = ({
21 | isOpen,
22 | onClose,
23 | children,
24 | position = 'right',
25 | size = 'md',
26 | className,
27 | closeOnClickOutside = true,
28 | closeOnEsc = true,
29 | overlay = true,
30 | title,
31 | }) => {
32 | const drawerRef = useRef(null);
33 |
34 | useClickOutside(drawerRef, () => {
35 | if (closeOnClickOutside) {
36 | onClose();
37 | }
38 | });
39 |
40 | useEffect(() => {
41 | const handleEsc = (event: KeyboardEvent) => {
42 | if (closeOnEsc && event.key === 'Escape') {
43 | onClose();
44 | }
45 | };
46 |
47 | if (isOpen) {
48 | document.addEventListener('keydown', handleEsc);
49 | document.body.style.overflow = 'hidden';
50 | }
51 |
52 | return () => {
53 | document.removeEventListener('keydown', handleEsc);
54 | document.body.style.overflow = 'unset';
55 | };
56 | }, [isOpen, closeOnEsc, onClose]);
57 |
58 | if (!isOpen) return null;
59 |
60 | const sizeClasses = {
61 | sm: position === 'left' || position === 'right' ? 'w-64' : 'h-64',
62 | md: position === 'left' || position === 'right' ? 'w-80' : 'h-80',
63 | lg: position === 'left' || position === 'right' ? 'w-96' : 'h-96',
64 | xl: position === 'left' || position === 'right' ? 'w-[32rem]' : 'h-[32rem]',
65 | full: position === 'left' || position === 'right' ? 'w-screen' : 'h-screen',
66 | };
67 |
68 | const positionClasses = {
69 | left: 'left-0 top-0 h-full transform -translate-x-full',
70 | right: 'right-0 top-0 h-full transform translate-x-full',
71 | top: 'top-0 left-0 w-full transform -translate-y-full',
72 | bottom: 'bottom-0 left-0 w-full transform translate-y-full',
73 | };
74 |
75 | return createPortal(
76 |
77 | {overlay && (
78 |
82 | )}
83 |
96 | {/* Header with title and close button */}
97 |
98 |
{title}
99 |
127 |
128 |
129 | {/* Drawer content */}
130 |
{children}
131 |
132 |
,
133 | document.body
134 | );
135 | };
136 |
--------------------------------------------------------------------------------
/src/components/Table/Table.tsx:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 |
3 | import { cn } from '../../utils/cn';
4 |
5 | interface TableProps extends React.TableHTMLAttributes {
6 | stickyHeader?: boolean;
7 | striped?: boolean;
8 | hoverable?: boolean;
9 | compact?: boolean;
10 | bordered?: boolean;
11 | children: React.ReactNode;
12 | }
13 |
14 | interface TableHeaderProps extends React.HTMLAttributes {
15 | sticky?: boolean;
16 | children: React.ReactNode;
17 | }
18 |
19 | interface TableRowProps extends React.HTMLAttributes {
20 | children: React.ReactNode;
21 | 'data-selected'?: boolean;
22 | }
23 |
24 | interface TableHeadProps extends React.ThHTMLAttributes {
25 | children: React.ReactNode;
26 | }
27 |
28 | interface TableCellProps extends React.TdHTMLAttributes {
29 | align?: 'left' | 'center' | 'right';
30 | children: React.ReactNode;
31 | }
32 |
33 | interface TableCaptionProps extends React.HTMLAttributes {
34 | className?: string;
35 | children?: React.ReactNode;
36 | }
37 |
38 | interface TableFooterProps extends React.HTMLAttributes {
39 | children: React.ReactNode;
40 | }
41 |
42 | export const Table = React.forwardRef(
43 | ({ className, striped, compact, bordered, children, ...props }, ref) => {
44 | return (
45 |
60 | );
61 | }
62 | );
63 |
64 | Table.displayName = 'Table';
65 |
66 | export const TableHead = React.forwardRef(
67 | ({ className, sticky, children, ...props }, ref) => {
68 | return (
69 |
78 | {children}
79 |
80 | );
81 | }
82 | );
83 |
84 | TableHead.displayName = 'TableHead';
85 |
86 | export const TableBody = React.forwardRef<
87 | HTMLTableSectionElement,
88 | React.HTMLAttributes
89 | >(({ className, children, ...props }, ref) => (
90 |
95 | {children}
96 |
97 | ));
98 |
99 | TableBody.displayName = 'TableBody';
100 |
101 | export const TableRow = React.forwardRef(
102 | ({ className, children, ...props }, ref) => (
103 |
113 | {children}
114 |
115 | )
116 | );
117 |
118 | TableRow.displayName = 'TableRow';
119 |
120 | export const TableHeadCell = React.forwardRef(
121 | ({ className, children, ...props }, ref) => (
122 |
131 | {children}
132 | |
133 | )
134 | );
135 |
136 | TableHeadCell.displayName = 'TableHeadCell';
137 |
138 | export const TableCell = React.forwardRef(
139 | ({ className, align = 'left', children, ...props }, ref) => (
140 |
151 | {children}
152 | |
153 | )
154 | );
155 |
156 | TableCell.displayName = 'TableCell';
157 |
158 | export const TableFooter = React.forwardRef(
159 | ({ className, children, ...props }, ref) => (
160 |
165 | {children}
166 |
167 | )
168 | );
169 |
170 | TableFooter.displayName = 'TableFooter';
171 |
172 | export const TableCaption = React.forwardRef(
173 | ({ className, children, ...props }, ref) => (
174 |
179 | {children}
180 |
181 | )
182 | );
183 |
184 | TableCaption.displayName = 'TableCaption';
185 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # @cisseui/react-components
2 |
3 | A modern React component library featuring Table, Modal, and Drawer components. Built with TypeScript and styled with Tailwind CSS.
4 |
5 | ## 📚 Documentation
6 |
7 | ### Table des matières
8 |
9 | 1. [Installation](#-installation)
10 | 2. [Quick Start](#-quick-start)
11 | 3. [Components](#-components)
12 | - [Modal Component](#modal-component)
13 | - [Drawer Component](#drawer-component)
14 | - [Table Component](#table-component)
15 | 4. [Features](#-features)
16 | 5. [Customization](#-customization)
17 | 6. [Props](#-props)
18 | - [Table Props](#table)
19 | - [TableHead Props](#tablehead)
20 | - [TableHeadCell Props](#tableheadcell)
21 | - [TableCell Props](#tablecell)
22 | 7. [License](#-license)
23 |
24 | ## 📦 Installation
25 |
26 | ```bash
27 | npm install @cisseui/react-components
28 | # or
29 | yarn add @cisseui/react-components
30 | # or
31 | pnpm add @cisseui/react-components
32 | ```
33 |
34 | ## 🚀 Quick Start
35 |
36 | ```tsx
37 | import { Modal, Drawer, Table } from '@cisseui/react-components';
38 | ```
39 |
40 | ## 🛠️ Components
41 |
42 | ### Modal Component
43 |
44 | A flexible modal dialog component with customizable content, animations, and backdrop.
45 |
46 | ```tsx
47 | import { Modal } from '@cisseui/react-components';
48 |
49 | function App() {
50 | const [isOpen, setIsOpen] = useState(false);
51 |
52 | return (
53 | <>
54 |
55 |
56 | setIsOpen(false)}
59 | title="Example Modal"
60 | >
61 |
62 |
Modal Content
63 |
This is an example modal dialog
64 |
65 |
66 | >
67 | );
68 | }
69 | ```
70 |
71 | ### Drawer Component
72 |
73 | A sliding drawer component that can appear from any edge of the screen.
74 |
75 | ```tsx
76 | import { Drawer } from '@cisseui/react-components';
77 |
78 | function App() {
79 | const [isOpen, setIsOpen] = useState(false);
80 |
81 | return (
82 | <>
83 |
84 |
85 | setIsOpen(false)}
88 | title="Example Drawer"
89 | position="right"
90 | >
91 |
92 |
Drawer Content
93 |
This is an example drawer
94 |
95 |
96 | >
97 | );
98 | }
99 | ```
100 |
101 | ### Table Component
102 |
103 | A modern and flexible table component with support for custom styling, dark mode, and responsive design.
104 |
105 | ```tsx
106 | import {
107 | Table,
108 | TableHead,
109 | TableBody,
110 | TableRow,
111 | TableCell,
112 | TableHeadCell,
113 | } from '@cisseui/react-components';
114 |
115 | function App() {
116 | const data = [
117 | { id: 1, name: 'John Doe', email: 'john@example.com', role: 'Admin' },
118 | { id: 2, name: 'Jane Smith', email: 'jane@example.com', role: 'User' },
119 | { id: 3, name: 'Bob Johnson', email: 'bob@example.com', role: 'User' },
120 | ];
121 |
122 | return (
123 |
124 |
125 |
126 | ID
127 | Name
128 | Email
129 | Role
130 |
131 |
132 |
133 | {data.map((row) => (
134 |
135 | {row.id}
136 | {row.name}
137 | {row.email}
138 | {row.role}
139 |
140 | ))}
141 |
142 |
143 | );
144 | }
145 | ```
146 |
147 | #### Props
148 |
149 | ##### Table
150 | | Prop | Type | Default | Description |
151 | |------|------|---------|-------------|
152 | | className | string | - | Additional CSS classes |
153 | | children | ReactNode | - | Table content |
154 |
155 | ##### TableHead
156 | | Prop | Type | Default | Description |
157 | |------|------|---------|-------------|
158 | | className | string | - | Additional CSS classes |
159 | | children | ReactNode | - | Header content |
160 |
161 | ##### TableHeadCell
162 | | Prop | Type | Default | Description |
163 | |------|------|---------|-------------|
164 | | className | string | - | Additional CSS classes |
165 | | children | ReactNode | - | Cell content |
166 |
167 | ##### TableCell
168 | | Prop | Type | Default | Description |
169 | |------|------|---------|-------------|
170 | | className | string | - | Additional CSS classes |
171 | | children | ReactNode | - | Cell content |
172 |
173 | ## ✨ Features
174 |
175 | - 🎨 Modern design with Tailwind CSS
176 | - 🌙 Dark mode support
177 | - 📱 Responsive and mobile-friendly
178 | - ♿ Accessible (ARIA compliant)
179 | - 🔒 TypeScript support
180 | - 🎯 Zero-dependency (except for React and Tailwind)
181 | - 🚀 Tree-shakeable
182 | - 📦 Small bundle size
183 |
184 | ## 🎨 Customization
185 |
186 | All components can be customized using:
187 |
188 | 1. **Tailwind Classes**: Use the `className` prop to extend or override default styles
189 | 2. **Theme**: Components automatically adapt to your Tailwind theme configuration
190 | 3. **Props**: Each component has specific props for customization
191 |
192 | ## 🔧 Props
193 |
194 | ### Modal
195 |
196 | | Prop | Type | Default | Description |
197 | |------|------|---------|-------------|
198 | | isOpen | boolean | false | Controls the visibility of the modal |
199 | | onClose | () => void | - | Callback when modal is closed |
200 | | title | string | - | Modal title |
201 | | children | ReactNode | - | Modal content |
202 | | size | 'sm' \| 'md' \| 'lg' \| 'xl' | 'md' | Modal size |
203 |
204 | ### Drawer
205 |
206 | | Prop | Type | Default | Description |
207 | |------|------|---------|-------------|
208 | | isOpen | boolean | false | Controls the visibility of the drawer |
209 | | onClose | () => void | - | Callback when drawer is closed |
210 | | title | string | - | Drawer title |
211 | | children | ReactNode | - | Drawer content |
212 | | position | 'left' \| 'right' \| 'top' \| 'bottom' | 'right' | Drawer position |
213 | | size | 'sm' \| 'md' \| 'lg' \| 'xl' | 'md' | Drawer size |
214 |
215 | ## 📄 License
216 |
217 | This project is licensed under the MIT License - see the [LICENSE](./LICENSE) file for details.
218 |
--------------------------------------------------------------------------------
/example/package-lock.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "react-ui-components-example",
3 | "version": "0.0.0",
4 | "lockfileVersion": 3,
5 | "requires": true,
6 | "packages": {
7 | "": {
8 | "name": "react-ui-components-example",
9 | "version": "0.0.0",
10 | "dependencies": {
11 | "@cisseui/react-components": "file:..",
12 | "clsx": "^2.0.0",
13 | "react": "^18.0.0",
14 | "react-dom": "^18.0.0",
15 | "tailwind-merge": "^2.0.0"
16 | },
17 | "devDependencies": {
18 | "@types/react": "^18.0.0",
19 | "@types/react-dom": "^18.0.0",
20 | "@vitejs/plugin-react": "^4.0.0",
21 | "autoprefixer": "^10.4.20",
22 | "postcss": "^8.5.1",
23 | "tailwindcss": "^3.4.17",
24 | "typescript": "^5.0.0",
25 | "vite": "^6.2.4"
26 | }
27 | },
28 | "..": {
29 | "name": "@cisseui/react-components",
30 | "version": "1.1.1",
31 | "license": "MIT",
32 | "devDependencies": {
33 | "@babel/core": "^7.22.0",
34 | "@babel/preset-env": "^7.22.0",
35 | "@babel/preset-react": "^7.22.0",
36 | "@babel/preset-typescript": "^7.22.0",
37 | "@rollup/plugin-commonjs": "^25.0.0",
38 | "@rollup/plugin-node-resolve": "^15.0.0",
39 | "@rollup/plugin-typescript": "^11.0.0",
40 | "@testing-library/jest-dom": "^5.16.5",
41 | "@testing-library/react": "^14.0.0",
42 | "@types/jest": "^29.5.0",
43 | "@types/react": "^18.0.0",
44 | "@types/react-dom": "^18.0.0",
45 | "@typescript-eslint/eslint-plugin": "^8.23.0",
46 | "@typescript-eslint/parser": "^8.23.0",
47 | "babel-jest": "^29.5.0",
48 | "eslint": "^8.0.0",
49 | "eslint-plugin-react": "^7.37.4",
50 | "eslint-plugin-react-hooks": "^5.1.0",
51 | "jest": "^29.5.0",
52 | "jest-environment-jsdom": "^29.5.0",
53 | "prettier": "^3.4.2",
54 | "rollup": "^4.34.5",
55 | "ts-jest": "^29.1.0",
56 | "typescript": "^5.0.0"
57 | },
58 | "engines": {
59 | "node": ">=16",
60 | "pnpm": ">=8"
61 | },
62 | "peerDependencies": {
63 | "react": "^18.0.0",
64 | "react-dom": "^18.0.0"
65 | }
66 | },
67 | "node_modules/@alloc/quick-lru": {
68 | "version": "5.2.0",
69 | "resolved": "https://registry.npmjs.org/@alloc/quick-lru/-/quick-lru-5.2.0.tgz",
70 | "integrity": "sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==",
71 | "dev": true,
72 | "license": "MIT",
73 | "engines": {
74 | "node": ">=10"
75 | },
76 | "funding": {
77 | "url": "https://github.com/sponsors/sindresorhus"
78 | }
79 | },
80 | "node_modules/@ampproject/remapping": {
81 | "version": "2.3.0",
82 | "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz",
83 | "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==",
84 | "dev": true,
85 | "license": "Apache-2.0",
86 | "dependencies": {
87 | "@jridgewell/gen-mapping": "^0.3.5",
88 | "@jridgewell/trace-mapping": "^0.3.24"
89 | },
90 | "engines": {
91 | "node": ">=6.0.0"
92 | }
93 | },
94 | "node_modules/@babel/code-frame": {
95 | "version": "7.26.2",
96 | "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.26.2.tgz",
97 | "integrity": "sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==",
98 | "dev": true,
99 | "license": "MIT",
100 | "dependencies": {
101 | "@babel/helper-validator-identifier": "^7.25.9",
102 | "js-tokens": "^4.0.0",
103 | "picocolors": "^1.0.0"
104 | },
105 | "engines": {
106 | "node": ">=6.9.0"
107 | }
108 | },
109 | "node_modules/@babel/compat-data": {
110 | "version": "7.26.8",
111 | "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.26.8.tgz",
112 | "integrity": "sha512-oH5UPLMWR3L2wEFLnFJ1TZXqHufiTKAiLfqw5zkhS4dKXLJ10yVztfil/twG8EDTA4F/tvVNw9nOl4ZMslB8rQ==",
113 | "dev": true,
114 | "license": "MIT",
115 | "engines": {
116 | "node": ">=6.9.0"
117 | }
118 | },
119 | "node_modules/@babel/core": {
120 | "version": "7.26.8",
121 | "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.26.8.tgz",
122 | "integrity": "sha512-l+lkXCHS6tQEc5oUpK28xBOZ6+HwaH7YwoYQbLFiYb4nS2/l1tKnZEtEWkD0GuiYdvArf9qBS0XlQGXzPMsNqQ==",
123 | "dev": true,
124 | "license": "MIT",
125 | "dependencies": {
126 | "@ampproject/remapping": "^2.2.0",
127 | "@babel/code-frame": "^7.26.2",
128 | "@babel/generator": "^7.26.8",
129 | "@babel/helper-compilation-targets": "^7.26.5",
130 | "@babel/helper-module-transforms": "^7.26.0",
131 | "@babel/helpers": "^7.26.7",
132 | "@babel/parser": "^7.26.8",
133 | "@babel/template": "^7.26.8",
134 | "@babel/traverse": "^7.26.8",
135 | "@babel/types": "^7.26.8",
136 | "@types/gensync": "^1.0.0",
137 | "convert-source-map": "^2.0.0",
138 | "debug": "^4.1.0",
139 | "gensync": "^1.0.0-beta.2",
140 | "json5": "^2.2.3",
141 | "semver": "^6.3.1"
142 | },
143 | "engines": {
144 | "node": ">=6.9.0"
145 | },
146 | "funding": {
147 | "type": "opencollective",
148 | "url": "https://opencollective.com/babel"
149 | }
150 | },
151 | "node_modules/@babel/generator": {
152 | "version": "7.26.8",
153 | "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.26.8.tgz",
154 | "integrity": "sha512-ef383X5++iZHWAXX0SXQR6ZyQhw/0KtTkrTz61WXRhFM6dhpHulO/RJz79L8S6ugZHJkOOkUrUdxgdF2YiPFnA==",
155 | "dev": true,
156 | "license": "MIT",
157 | "dependencies": {
158 | "@babel/parser": "^7.26.8",
159 | "@babel/types": "^7.26.8",
160 | "@jridgewell/gen-mapping": "^0.3.5",
161 | "@jridgewell/trace-mapping": "^0.3.25",
162 | "jsesc": "^3.0.2"
163 | },
164 | "engines": {
165 | "node": ">=6.9.0"
166 | }
167 | },
168 | "node_modules/@babel/helper-compilation-targets": {
169 | "version": "7.26.5",
170 | "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.26.5.tgz",
171 | "integrity": "sha512-IXuyn5EkouFJscIDuFF5EsiSolseme1s0CZB+QxVugqJLYmKdxI1VfIBOst0SUu4rnk2Z7kqTwmoO1lp3HIfnA==",
172 | "dev": true,
173 | "license": "MIT",
174 | "dependencies": {
175 | "@babel/compat-data": "^7.26.5",
176 | "@babel/helper-validator-option": "^7.25.9",
177 | "browserslist": "^4.24.0",
178 | "lru-cache": "^5.1.1",
179 | "semver": "^6.3.1"
180 | },
181 | "engines": {
182 | "node": ">=6.9.0"
183 | }
184 | },
185 | "node_modules/@babel/helper-module-imports": {
186 | "version": "7.25.9",
187 | "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.25.9.tgz",
188 | "integrity": "sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw==",
189 | "dev": true,
190 | "license": "MIT",
191 | "dependencies": {
192 | "@babel/traverse": "^7.25.9",
193 | "@babel/types": "^7.25.9"
194 | },
195 | "engines": {
196 | "node": ">=6.9.0"
197 | }
198 | },
199 | "node_modules/@babel/helper-module-transforms": {
200 | "version": "7.26.0",
201 | "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.26.0.tgz",
202 | "integrity": "sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw==",
203 | "dev": true,
204 | "license": "MIT",
205 | "dependencies": {
206 | "@babel/helper-module-imports": "^7.25.9",
207 | "@babel/helper-validator-identifier": "^7.25.9",
208 | "@babel/traverse": "^7.25.9"
209 | },
210 | "engines": {
211 | "node": ">=6.9.0"
212 | },
213 | "peerDependencies": {
214 | "@babel/core": "^7.0.0"
215 | }
216 | },
217 | "node_modules/@babel/helper-plugin-utils": {
218 | "version": "7.26.5",
219 | "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.26.5.tgz",
220 | "integrity": "sha512-RS+jZcRdZdRFzMyr+wcsaqOmld1/EqTghfaBGQQd/WnRdzdlvSZ//kF7U8VQTxf1ynZ4cjUcYgjVGx13ewNPMg==",
221 | "dev": true,
222 | "license": "MIT",
223 | "engines": {
224 | "node": ">=6.9.0"
225 | }
226 | },
227 | "node_modules/@babel/helper-string-parser": {
228 | "version": "7.25.9",
229 | "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz",
230 | "integrity": "sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==",
231 | "dev": true,
232 | "license": "MIT",
233 | "engines": {
234 | "node": ">=6.9.0"
235 | }
236 | },
237 | "node_modules/@babel/helper-validator-identifier": {
238 | "version": "7.25.9",
239 | "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz",
240 | "integrity": "sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==",
241 | "dev": true,
242 | "license": "MIT",
243 | "engines": {
244 | "node": ">=6.9.0"
245 | }
246 | },
247 | "node_modules/@babel/helper-validator-option": {
248 | "version": "7.25.9",
249 | "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.25.9.tgz",
250 | "integrity": "sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw==",
251 | "dev": true,
252 | "license": "MIT",
253 | "engines": {
254 | "node": ">=6.9.0"
255 | }
256 | },
257 | "node_modules/@babel/helpers": {
258 | "version": "7.26.7",
259 | "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.26.7.tgz",
260 | "integrity": "sha512-8NHiL98vsi0mbPQmYAGWwfcFaOy4j2HY49fXJCfuDcdE7fMIsH9a7GdaeXpIBsbT7307WU8KCMp5pUVDNL4f9A==",
261 | "dev": true,
262 | "license": "MIT",
263 | "dependencies": {
264 | "@babel/template": "^7.25.9",
265 | "@babel/types": "^7.26.7"
266 | },
267 | "engines": {
268 | "node": ">=6.9.0"
269 | }
270 | },
271 | "node_modules/@babel/parser": {
272 | "version": "7.26.8",
273 | "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.26.8.tgz",
274 | "integrity": "sha512-TZIQ25pkSoaKEYYaHbbxkfL36GNsQ6iFiBbeuzAkLnXayKR1yP1zFe+NxuZWWsUyvt8icPU9CCq0sgWGXR1GEw==",
275 | "dev": true,
276 | "license": "MIT",
277 | "dependencies": {
278 | "@babel/types": "^7.26.8"
279 | },
280 | "bin": {
281 | "parser": "bin/babel-parser.js"
282 | },
283 | "engines": {
284 | "node": ">=6.0.0"
285 | }
286 | },
287 | "node_modules/@babel/plugin-transform-react-jsx-self": {
288 | "version": "7.25.9",
289 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.25.9.tgz",
290 | "integrity": "sha512-y8quW6p0WHkEhmErnfe58r7x0A70uKphQm8Sp8cV7tjNQwK56sNVK0M73LK3WuYmsuyrftut4xAkjjgU0twaMg==",
291 | "dev": true,
292 | "license": "MIT",
293 | "dependencies": {
294 | "@babel/helper-plugin-utils": "^7.25.9"
295 | },
296 | "engines": {
297 | "node": ">=6.9.0"
298 | },
299 | "peerDependencies": {
300 | "@babel/core": "^7.0.0-0"
301 | }
302 | },
303 | "node_modules/@babel/plugin-transform-react-jsx-source": {
304 | "version": "7.25.9",
305 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.25.9.tgz",
306 | "integrity": "sha512-+iqjT8xmXhhYv4/uiYd8FNQsraMFZIfxVSqxxVSZP0WbbSAWvBXAul0m/zu+7Vv4O/3WtApy9pmaTMiumEZgfg==",
307 | "dev": true,
308 | "license": "MIT",
309 | "dependencies": {
310 | "@babel/helper-plugin-utils": "^7.25.9"
311 | },
312 | "engines": {
313 | "node": ">=6.9.0"
314 | },
315 | "peerDependencies": {
316 | "@babel/core": "^7.0.0-0"
317 | }
318 | },
319 | "node_modules/@babel/template": {
320 | "version": "7.26.8",
321 | "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.26.8.tgz",
322 | "integrity": "sha512-iNKaX3ZebKIsCvJ+0jd6embf+Aulaa3vNBqZ41kM7iTWjx5qzWKXGHiJUW3+nTpQ18SG11hdF8OAzKrpXkb96Q==",
323 | "dev": true,
324 | "license": "MIT",
325 | "dependencies": {
326 | "@babel/code-frame": "^7.26.2",
327 | "@babel/parser": "^7.26.8",
328 | "@babel/types": "^7.26.8"
329 | },
330 | "engines": {
331 | "node": ">=6.9.0"
332 | }
333 | },
334 | "node_modules/@babel/traverse": {
335 | "version": "7.26.8",
336 | "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.26.8.tgz",
337 | "integrity": "sha512-nic9tRkjYH0oB2dzr/JoGIm+4Q6SuYeLEiIiZDwBscRMYFJ+tMAz98fuel9ZnbXViA2I0HVSSRRK8DW5fjXStA==",
338 | "dev": true,
339 | "license": "MIT",
340 | "dependencies": {
341 | "@babel/code-frame": "^7.26.2",
342 | "@babel/generator": "^7.26.8",
343 | "@babel/parser": "^7.26.8",
344 | "@babel/template": "^7.26.8",
345 | "@babel/types": "^7.26.8",
346 | "debug": "^4.3.1",
347 | "globals": "^11.1.0"
348 | },
349 | "engines": {
350 | "node": ">=6.9.0"
351 | }
352 | },
353 | "node_modules/@babel/types": {
354 | "version": "7.26.8",
355 | "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.26.8.tgz",
356 | "integrity": "sha512-eUuWapzEGWFEpHFxgEaBG8e3n6S8L3MSu0oda755rOfabWPnh0Our1AozNFVUxGFIhbKgd1ksprsoDGMinTOTA==",
357 | "dev": true,
358 | "license": "MIT",
359 | "dependencies": {
360 | "@babel/helper-string-parser": "^7.25.9",
361 | "@babel/helper-validator-identifier": "^7.25.9"
362 | },
363 | "engines": {
364 | "node": ">=6.9.0"
365 | }
366 | },
367 | "node_modules/@cisseui/react-components": {
368 | "resolved": "..",
369 | "link": true
370 | },
371 | "node_modules/@esbuild/aix-ppc64": {
372 | "version": "0.25.2",
373 | "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.2.tgz",
374 | "integrity": "sha512-wCIboOL2yXZym2cgm6mlA742s9QeJ8DjGVaL39dLN4rRwrOgOyYSnOaFPhKZGLb2ngj4EyfAFjsNJwPXZvseag==",
375 | "cpu": [
376 | "ppc64"
377 | ],
378 | "dev": true,
379 | "license": "MIT",
380 | "optional": true,
381 | "os": [
382 | "aix"
383 | ],
384 | "engines": {
385 | "node": ">=18"
386 | }
387 | },
388 | "node_modules/@esbuild/android-arm": {
389 | "version": "0.25.2",
390 | "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.2.tgz",
391 | "integrity": "sha512-NQhH7jFstVY5x8CKbcfa166GoV0EFkaPkCKBQkdPJFvo5u+nGXLEH/ooniLb3QI8Fk58YAx7nsPLozUWfCBOJA==",
392 | "cpu": [
393 | "arm"
394 | ],
395 | "dev": true,
396 | "license": "MIT",
397 | "optional": true,
398 | "os": [
399 | "android"
400 | ],
401 | "engines": {
402 | "node": ">=18"
403 | }
404 | },
405 | "node_modules/@esbuild/android-arm64": {
406 | "version": "0.25.2",
407 | "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.2.tgz",
408 | "integrity": "sha512-5ZAX5xOmTligeBaeNEPnPaeEuah53Id2tX4c2CVP3JaROTH+j4fnfHCkr1PjXMd78hMst+TlkfKcW/DlTq0i4w==",
409 | "cpu": [
410 | "arm64"
411 | ],
412 | "dev": true,
413 | "license": "MIT",
414 | "optional": true,
415 | "os": [
416 | "android"
417 | ],
418 | "engines": {
419 | "node": ">=18"
420 | }
421 | },
422 | "node_modules/@esbuild/android-x64": {
423 | "version": "0.25.2",
424 | "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.2.tgz",
425 | "integrity": "sha512-Ffcx+nnma8Sge4jzddPHCZVRvIfQ0kMsUsCMcJRHkGJ1cDmhe4SsrYIjLUKn1xpHZybmOqCWwB0zQvsjdEHtkg==",
426 | "cpu": [
427 | "x64"
428 | ],
429 | "dev": true,
430 | "license": "MIT",
431 | "optional": true,
432 | "os": [
433 | "android"
434 | ],
435 | "engines": {
436 | "node": ">=18"
437 | }
438 | },
439 | "node_modules/@esbuild/darwin-arm64": {
440 | "version": "0.25.2",
441 | "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.2.tgz",
442 | "integrity": "sha512-MpM6LUVTXAzOvN4KbjzU/q5smzryuoNjlriAIx+06RpecwCkL9JpenNzpKd2YMzLJFOdPqBpuub6eVRP5IgiSA==",
443 | "cpu": [
444 | "arm64"
445 | ],
446 | "dev": true,
447 | "license": "MIT",
448 | "optional": true,
449 | "os": [
450 | "darwin"
451 | ],
452 | "engines": {
453 | "node": ">=18"
454 | }
455 | },
456 | "node_modules/@esbuild/darwin-x64": {
457 | "version": "0.25.2",
458 | "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.2.tgz",
459 | "integrity": "sha512-5eRPrTX7wFyuWe8FqEFPG2cU0+butQQVNcT4sVipqjLYQjjh8a8+vUTfgBKM88ObB85ahsnTwF7PSIt6PG+QkA==",
460 | "cpu": [
461 | "x64"
462 | ],
463 | "dev": true,
464 | "license": "MIT",
465 | "optional": true,
466 | "os": [
467 | "darwin"
468 | ],
469 | "engines": {
470 | "node": ">=18"
471 | }
472 | },
473 | "node_modules/@esbuild/freebsd-arm64": {
474 | "version": "0.25.2",
475 | "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.2.tgz",
476 | "integrity": "sha512-mLwm4vXKiQ2UTSX4+ImyiPdiHjiZhIaE9QvC7sw0tZ6HoNMjYAqQpGyui5VRIi5sGd+uWq940gdCbY3VLvsO1w==",
477 | "cpu": [
478 | "arm64"
479 | ],
480 | "dev": true,
481 | "license": "MIT",
482 | "optional": true,
483 | "os": [
484 | "freebsd"
485 | ],
486 | "engines": {
487 | "node": ">=18"
488 | }
489 | },
490 | "node_modules/@esbuild/freebsd-x64": {
491 | "version": "0.25.2",
492 | "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.2.tgz",
493 | "integrity": "sha512-6qyyn6TjayJSwGpm8J9QYYGQcRgc90nmfdUb0O7pp1s4lTY+9D0H9O02v5JqGApUyiHOtkz6+1hZNvNtEhbwRQ==",
494 | "cpu": [
495 | "x64"
496 | ],
497 | "dev": true,
498 | "license": "MIT",
499 | "optional": true,
500 | "os": [
501 | "freebsd"
502 | ],
503 | "engines": {
504 | "node": ">=18"
505 | }
506 | },
507 | "node_modules/@esbuild/linux-arm": {
508 | "version": "0.25.2",
509 | "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.2.tgz",
510 | "integrity": "sha512-UHBRgJcmjJv5oeQF8EpTRZs/1knq6loLxTsjc3nxO9eXAPDLcWW55flrMVc97qFPbmZP31ta1AZVUKQzKTzb0g==",
511 | "cpu": [
512 | "arm"
513 | ],
514 | "dev": true,
515 | "license": "MIT",
516 | "optional": true,
517 | "os": [
518 | "linux"
519 | ],
520 | "engines": {
521 | "node": ">=18"
522 | }
523 | },
524 | "node_modules/@esbuild/linux-arm64": {
525 | "version": "0.25.2",
526 | "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.2.tgz",
527 | "integrity": "sha512-gq/sjLsOyMT19I8obBISvhoYiZIAaGF8JpeXu1u8yPv8BE5HlWYobmlsfijFIZ9hIVGYkbdFhEqC0NvM4kNO0g==",
528 | "cpu": [
529 | "arm64"
530 | ],
531 | "dev": true,
532 | "license": "MIT",
533 | "optional": true,
534 | "os": [
535 | "linux"
536 | ],
537 | "engines": {
538 | "node": ">=18"
539 | }
540 | },
541 | "node_modules/@esbuild/linux-ia32": {
542 | "version": "0.25.2",
543 | "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.2.tgz",
544 | "integrity": "sha512-bBYCv9obgW2cBP+2ZWfjYTU+f5cxRoGGQ5SeDbYdFCAZpYWrfjjfYwvUpP8MlKbP0nwZ5gyOU/0aUzZ5HWPuvQ==",
545 | "cpu": [
546 | "ia32"
547 | ],
548 | "dev": true,
549 | "license": "MIT",
550 | "optional": true,
551 | "os": [
552 | "linux"
553 | ],
554 | "engines": {
555 | "node": ">=18"
556 | }
557 | },
558 | "node_modules/@esbuild/linux-loong64": {
559 | "version": "0.25.2",
560 | "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.2.tgz",
561 | "integrity": "sha512-SHNGiKtvnU2dBlM5D8CXRFdd+6etgZ9dXfaPCeJtz+37PIUlixvlIhI23L5khKXs3DIzAn9V8v+qb1TRKrgT5w==",
562 | "cpu": [
563 | "loong64"
564 | ],
565 | "dev": true,
566 | "license": "MIT",
567 | "optional": true,
568 | "os": [
569 | "linux"
570 | ],
571 | "engines": {
572 | "node": ">=18"
573 | }
574 | },
575 | "node_modules/@esbuild/linux-mips64el": {
576 | "version": "0.25.2",
577 | "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.2.tgz",
578 | "integrity": "sha512-hDDRlzE6rPeoj+5fsADqdUZl1OzqDYow4TB4Y/3PlKBD0ph1e6uPHzIQcv2Z65u2K0kpeByIyAjCmjn1hJgG0Q==",
579 | "cpu": [
580 | "mips64el"
581 | ],
582 | "dev": true,
583 | "license": "MIT",
584 | "optional": true,
585 | "os": [
586 | "linux"
587 | ],
588 | "engines": {
589 | "node": ">=18"
590 | }
591 | },
592 | "node_modules/@esbuild/linux-ppc64": {
593 | "version": "0.25.2",
594 | "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.2.tgz",
595 | "integrity": "sha512-tsHu2RRSWzipmUi9UBDEzc0nLc4HtpZEI5Ba+Omms5456x5WaNuiG3u7xh5AO6sipnJ9r4cRWQB2tUjPyIkc6g==",
596 | "cpu": [
597 | "ppc64"
598 | ],
599 | "dev": true,
600 | "license": "MIT",
601 | "optional": true,
602 | "os": [
603 | "linux"
604 | ],
605 | "engines": {
606 | "node": ">=18"
607 | }
608 | },
609 | "node_modules/@esbuild/linux-riscv64": {
610 | "version": "0.25.2",
611 | "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.2.tgz",
612 | "integrity": "sha512-k4LtpgV7NJQOml/10uPU0s4SAXGnowi5qBSjaLWMojNCUICNu7TshqHLAEbkBdAszL5TabfvQ48kK84hyFzjnw==",
613 | "cpu": [
614 | "riscv64"
615 | ],
616 | "dev": true,
617 | "license": "MIT",
618 | "optional": true,
619 | "os": [
620 | "linux"
621 | ],
622 | "engines": {
623 | "node": ">=18"
624 | }
625 | },
626 | "node_modules/@esbuild/linux-s390x": {
627 | "version": "0.25.2",
628 | "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.2.tgz",
629 | "integrity": "sha512-GRa4IshOdvKY7M/rDpRR3gkiTNp34M0eLTaC1a08gNrh4u488aPhuZOCpkF6+2wl3zAN7L7XIpOFBhnaE3/Q8Q==",
630 | "cpu": [
631 | "s390x"
632 | ],
633 | "dev": true,
634 | "license": "MIT",
635 | "optional": true,
636 | "os": [
637 | "linux"
638 | ],
639 | "engines": {
640 | "node": ">=18"
641 | }
642 | },
643 | "node_modules/@esbuild/linux-x64": {
644 | "version": "0.25.2",
645 | "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.2.tgz",
646 | "integrity": "sha512-QInHERlqpTTZ4FRB0fROQWXcYRD64lAoiegezDunLpalZMjcUcld3YzZmVJ2H/Cp0wJRZ8Xtjtj0cEHhYc/uUg==",
647 | "cpu": [
648 | "x64"
649 | ],
650 | "dev": true,
651 | "license": "MIT",
652 | "optional": true,
653 | "os": [
654 | "linux"
655 | ],
656 | "engines": {
657 | "node": ">=18"
658 | }
659 | },
660 | "node_modules/@esbuild/netbsd-arm64": {
661 | "version": "0.25.2",
662 | "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.2.tgz",
663 | "integrity": "sha512-talAIBoY5M8vHc6EeI2WW9d/CkiO9MQJ0IOWX8hrLhxGbro/vBXJvaQXefW2cP0z0nQVTdQ/eNyGFV1GSKrxfw==",
664 | "cpu": [
665 | "arm64"
666 | ],
667 | "dev": true,
668 | "license": "MIT",
669 | "optional": true,
670 | "os": [
671 | "netbsd"
672 | ],
673 | "engines": {
674 | "node": ">=18"
675 | }
676 | },
677 | "node_modules/@esbuild/netbsd-x64": {
678 | "version": "0.25.2",
679 | "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.2.tgz",
680 | "integrity": "sha512-voZT9Z+tpOxrvfKFyfDYPc4DO4rk06qamv1a/fkuzHpiVBMOhpjK+vBmWM8J1eiB3OLSMFYNaOaBNLXGChf5tg==",
681 | "cpu": [
682 | "x64"
683 | ],
684 | "dev": true,
685 | "license": "MIT",
686 | "optional": true,
687 | "os": [
688 | "netbsd"
689 | ],
690 | "engines": {
691 | "node": ">=18"
692 | }
693 | },
694 | "node_modules/@esbuild/openbsd-arm64": {
695 | "version": "0.25.2",
696 | "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.2.tgz",
697 | "integrity": "sha512-dcXYOC6NXOqcykeDlwId9kB6OkPUxOEqU+rkrYVqJbK2hagWOMrsTGsMr8+rW02M+d5Op5NNlgMmjzecaRf7Tg==",
698 | "cpu": [
699 | "arm64"
700 | ],
701 | "dev": true,
702 | "license": "MIT",
703 | "optional": true,
704 | "os": [
705 | "openbsd"
706 | ],
707 | "engines": {
708 | "node": ">=18"
709 | }
710 | },
711 | "node_modules/@esbuild/openbsd-x64": {
712 | "version": "0.25.2",
713 | "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.2.tgz",
714 | "integrity": "sha512-t/TkWwahkH0Tsgoq1Ju7QfgGhArkGLkF1uYz8nQS/PPFlXbP5YgRpqQR3ARRiC2iXoLTWFxc6DJMSK10dVXluw==",
715 | "cpu": [
716 | "x64"
717 | ],
718 | "dev": true,
719 | "license": "MIT",
720 | "optional": true,
721 | "os": [
722 | "openbsd"
723 | ],
724 | "engines": {
725 | "node": ">=18"
726 | }
727 | },
728 | "node_modules/@esbuild/sunos-x64": {
729 | "version": "0.25.2",
730 | "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.2.tgz",
731 | "integrity": "sha512-cfZH1co2+imVdWCjd+D1gf9NjkchVhhdpgb1q5y6Hcv9TP6Zi9ZG/beI3ig8TvwT9lH9dlxLq5MQBBgwuj4xvA==",
732 | "cpu": [
733 | "x64"
734 | ],
735 | "dev": true,
736 | "license": "MIT",
737 | "optional": true,
738 | "os": [
739 | "sunos"
740 | ],
741 | "engines": {
742 | "node": ">=18"
743 | }
744 | },
745 | "node_modules/@esbuild/win32-arm64": {
746 | "version": "0.25.2",
747 | "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.2.tgz",
748 | "integrity": "sha512-7Loyjh+D/Nx/sOTzV8vfbB3GJuHdOQyrOryFdZvPHLf42Tk9ivBU5Aedi7iyX+x6rbn2Mh68T4qq1SDqJBQO5Q==",
749 | "cpu": [
750 | "arm64"
751 | ],
752 | "dev": true,
753 | "license": "MIT",
754 | "optional": true,
755 | "os": [
756 | "win32"
757 | ],
758 | "engines": {
759 | "node": ">=18"
760 | }
761 | },
762 | "node_modules/@esbuild/win32-ia32": {
763 | "version": "0.25.2",
764 | "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.2.tgz",
765 | "integrity": "sha512-WRJgsz9un0nqZJ4MfhabxaD9Ft8KioqU3JMinOTvobbX6MOSUigSBlogP8QB3uxpJDsFS6yN+3FDBdqE5lg9kg==",
766 | "cpu": [
767 | "ia32"
768 | ],
769 | "dev": true,
770 | "license": "MIT",
771 | "optional": true,
772 | "os": [
773 | "win32"
774 | ],
775 | "engines": {
776 | "node": ">=18"
777 | }
778 | },
779 | "node_modules/@esbuild/win32-x64": {
780 | "version": "0.25.2",
781 | "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.2.tgz",
782 | "integrity": "sha512-kM3HKb16VIXZyIeVrM1ygYmZBKybX8N4p754bw390wGO3Tf2j4L2/WYL+4suWujpgf6GBYs3jv7TyUivdd05JA==",
783 | "cpu": [
784 | "x64"
785 | ],
786 | "dev": true,
787 | "license": "MIT",
788 | "optional": true,
789 | "os": [
790 | "win32"
791 | ],
792 | "engines": {
793 | "node": ">=18"
794 | }
795 | },
796 | "node_modules/@isaacs/cliui": {
797 | "version": "8.0.2",
798 | "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz",
799 | "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==",
800 | "dev": true,
801 | "license": "ISC",
802 | "dependencies": {
803 | "string-width": "^5.1.2",
804 | "string-width-cjs": "npm:string-width@^4.2.0",
805 | "strip-ansi": "^7.0.1",
806 | "strip-ansi-cjs": "npm:strip-ansi@^6.0.1",
807 | "wrap-ansi": "^8.1.0",
808 | "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0"
809 | },
810 | "engines": {
811 | "node": ">=12"
812 | }
813 | },
814 | "node_modules/@jridgewell/gen-mapping": {
815 | "version": "0.3.8",
816 | "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.8.tgz",
817 | "integrity": "sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==",
818 | "dev": true,
819 | "license": "MIT",
820 | "dependencies": {
821 | "@jridgewell/set-array": "^1.2.1",
822 | "@jridgewell/sourcemap-codec": "^1.4.10",
823 | "@jridgewell/trace-mapping": "^0.3.24"
824 | },
825 | "engines": {
826 | "node": ">=6.0.0"
827 | }
828 | },
829 | "node_modules/@jridgewell/resolve-uri": {
830 | "version": "3.1.2",
831 | "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz",
832 | "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==",
833 | "dev": true,
834 | "license": "MIT",
835 | "engines": {
836 | "node": ">=6.0.0"
837 | }
838 | },
839 | "node_modules/@jridgewell/set-array": {
840 | "version": "1.2.1",
841 | "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz",
842 | "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==",
843 | "dev": true,
844 | "license": "MIT",
845 | "engines": {
846 | "node": ">=6.0.0"
847 | }
848 | },
849 | "node_modules/@jridgewell/sourcemap-codec": {
850 | "version": "1.5.0",
851 | "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz",
852 | "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==",
853 | "dev": true,
854 | "license": "MIT"
855 | },
856 | "node_modules/@jridgewell/trace-mapping": {
857 | "version": "0.3.25",
858 | "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz",
859 | "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==",
860 | "dev": true,
861 | "license": "MIT",
862 | "dependencies": {
863 | "@jridgewell/resolve-uri": "^3.1.0",
864 | "@jridgewell/sourcemap-codec": "^1.4.14"
865 | }
866 | },
867 | "node_modules/@nodelib/fs.scandir": {
868 | "version": "2.1.5",
869 | "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
870 | "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==",
871 | "dev": true,
872 | "license": "MIT",
873 | "dependencies": {
874 | "@nodelib/fs.stat": "2.0.5",
875 | "run-parallel": "^1.1.9"
876 | },
877 | "engines": {
878 | "node": ">= 8"
879 | }
880 | },
881 | "node_modules/@nodelib/fs.stat": {
882 | "version": "2.0.5",
883 | "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz",
884 | "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==",
885 | "dev": true,
886 | "license": "MIT",
887 | "engines": {
888 | "node": ">= 8"
889 | }
890 | },
891 | "node_modules/@nodelib/fs.walk": {
892 | "version": "1.2.8",
893 | "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz",
894 | "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==",
895 | "dev": true,
896 | "license": "MIT",
897 | "dependencies": {
898 | "@nodelib/fs.scandir": "2.1.5",
899 | "fastq": "^1.6.0"
900 | },
901 | "engines": {
902 | "node": ">= 8"
903 | }
904 | },
905 | "node_modules/@pkgjs/parseargs": {
906 | "version": "0.11.0",
907 | "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz",
908 | "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==",
909 | "dev": true,
910 | "license": "MIT",
911 | "optional": true,
912 | "engines": {
913 | "node": ">=14"
914 | }
915 | },
916 | "node_modules/@rollup/rollup-android-arm-eabi": {
917 | "version": "4.39.0",
918 | "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.39.0.tgz",
919 | "integrity": "sha512-lGVys55Qb00Wvh8DMAocp5kIcaNzEFTmGhfFd88LfaogYTRKrdxgtlO5H6S49v2Nd8R2C6wLOal0qv6/kCkOwA==",
920 | "cpu": [
921 | "arm"
922 | ],
923 | "dev": true,
924 | "license": "MIT",
925 | "optional": true,
926 | "os": [
927 | "android"
928 | ]
929 | },
930 | "node_modules/@rollup/rollup-android-arm64": {
931 | "version": "4.39.0",
932 | "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.39.0.tgz",
933 | "integrity": "sha512-It9+M1zE31KWfqh/0cJLrrsCPiF72PoJjIChLX+rEcujVRCb4NLQ5QzFkzIZW8Kn8FTbvGQBY5TkKBau3S8cCQ==",
934 | "cpu": [
935 | "arm64"
936 | ],
937 | "dev": true,
938 | "license": "MIT",
939 | "optional": true,
940 | "os": [
941 | "android"
942 | ]
943 | },
944 | "node_modules/@rollup/rollup-darwin-arm64": {
945 | "version": "4.39.0",
946 | "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.39.0.tgz",
947 | "integrity": "sha512-lXQnhpFDOKDXiGxsU9/l8UEGGM65comrQuZ+lDcGUx+9YQ9dKpF3rSEGepyeR5AHZ0b5RgiligsBhWZfSSQh8Q==",
948 | "cpu": [
949 | "arm64"
950 | ],
951 | "dev": true,
952 | "license": "MIT",
953 | "optional": true,
954 | "os": [
955 | "darwin"
956 | ]
957 | },
958 | "node_modules/@rollup/rollup-darwin-x64": {
959 | "version": "4.39.0",
960 | "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.39.0.tgz",
961 | "integrity": "sha512-mKXpNZLvtEbgu6WCkNij7CGycdw9cJi2k9v0noMb++Vab12GZjFgUXD69ilAbBh034Zwn95c2PNSz9xM7KYEAQ==",
962 | "cpu": [
963 | "x64"
964 | ],
965 | "dev": true,
966 | "license": "MIT",
967 | "optional": true,
968 | "os": [
969 | "darwin"
970 | ]
971 | },
972 | "node_modules/@rollup/rollup-freebsd-arm64": {
973 | "version": "4.39.0",
974 | "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.39.0.tgz",
975 | "integrity": "sha512-jivRRlh2Lod/KvDZx2zUR+I4iBfHcu2V/BA2vasUtdtTN2Uk3jfcZczLa81ESHZHPHy4ih3T/W5rPFZ/hX7RtQ==",
976 | "cpu": [
977 | "arm64"
978 | ],
979 | "dev": true,
980 | "license": "MIT",
981 | "optional": true,
982 | "os": [
983 | "freebsd"
984 | ]
985 | },
986 | "node_modules/@rollup/rollup-freebsd-x64": {
987 | "version": "4.39.0",
988 | "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.39.0.tgz",
989 | "integrity": "sha512-8RXIWvYIRK9nO+bhVz8DwLBepcptw633gv/QT4015CpJ0Ht8punmoHU/DuEd3iw9Hr8UwUV+t+VNNuZIWYeY7Q==",
990 | "cpu": [
991 | "x64"
992 | ],
993 | "dev": true,
994 | "license": "MIT",
995 | "optional": true,
996 | "os": [
997 | "freebsd"
998 | ]
999 | },
1000 | "node_modules/@rollup/rollup-linux-arm-gnueabihf": {
1001 | "version": "4.39.0",
1002 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.39.0.tgz",
1003 | "integrity": "sha512-mz5POx5Zu58f2xAG5RaRRhp3IZDK7zXGk5sdEDj4o96HeaXhlUwmLFzNlc4hCQi5sGdR12VDgEUqVSHer0lI9g==",
1004 | "cpu": [
1005 | "arm"
1006 | ],
1007 | "dev": true,
1008 | "license": "MIT",
1009 | "optional": true,
1010 | "os": [
1011 | "linux"
1012 | ]
1013 | },
1014 | "node_modules/@rollup/rollup-linux-arm-musleabihf": {
1015 | "version": "4.39.0",
1016 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.39.0.tgz",
1017 | "integrity": "sha512-+YDwhM6gUAyakl0CD+bMFpdmwIoRDzZYaTWV3SDRBGkMU/VpIBYXXEvkEcTagw/7VVkL2vA29zU4UVy1mP0/Yw==",
1018 | "cpu": [
1019 | "arm"
1020 | ],
1021 | "dev": true,
1022 | "license": "MIT",
1023 | "optional": true,
1024 | "os": [
1025 | "linux"
1026 | ]
1027 | },
1028 | "node_modules/@rollup/rollup-linux-arm64-gnu": {
1029 | "version": "4.39.0",
1030 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.39.0.tgz",
1031 | "integrity": "sha512-EKf7iF7aK36eEChvlgxGnk7pdJfzfQbNvGV/+l98iiMwU23MwvmV0Ty3pJ0p5WQfm3JRHOytSIqD9LB7Bq7xdQ==",
1032 | "cpu": [
1033 | "arm64"
1034 | ],
1035 | "dev": true,
1036 | "license": "MIT",
1037 | "optional": true,
1038 | "os": [
1039 | "linux"
1040 | ]
1041 | },
1042 | "node_modules/@rollup/rollup-linux-arm64-musl": {
1043 | "version": "4.39.0",
1044 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.39.0.tgz",
1045 | "integrity": "sha512-vYanR6MtqC7Z2SNr8gzVnzUul09Wi1kZqJaek3KcIlI/wq5Xtq4ZPIZ0Mr/st/sv/NnaPwy/D4yXg5x0B3aUUA==",
1046 | "cpu": [
1047 | "arm64"
1048 | ],
1049 | "dev": true,
1050 | "license": "MIT",
1051 | "optional": true,
1052 | "os": [
1053 | "linux"
1054 | ]
1055 | },
1056 | "node_modules/@rollup/rollup-linux-loongarch64-gnu": {
1057 | "version": "4.39.0",
1058 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.39.0.tgz",
1059 | "integrity": "sha512-NMRUT40+h0FBa5fb+cpxtZoGAggRem16ocVKIv5gDB5uLDgBIwrIsXlGqYbLwW8YyO3WVTk1FkFDjMETYlDqiw==",
1060 | "cpu": [
1061 | "loong64"
1062 | ],
1063 | "dev": true,
1064 | "license": "MIT",
1065 | "optional": true,
1066 | "os": [
1067 | "linux"
1068 | ]
1069 | },
1070 | "node_modules/@rollup/rollup-linux-powerpc64le-gnu": {
1071 | "version": "4.39.0",
1072 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.39.0.tgz",
1073 | "integrity": "sha512-0pCNnmxgduJ3YRt+D+kJ6Ai/r+TaePu9ZLENl+ZDV/CdVczXl95CbIiwwswu4L+K7uOIGf6tMo2vm8uadRaICQ==",
1074 | "cpu": [
1075 | "ppc64"
1076 | ],
1077 | "dev": true,
1078 | "license": "MIT",
1079 | "optional": true,
1080 | "os": [
1081 | "linux"
1082 | ]
1083 | },
1084 | "node_modules/@rollup/rollup-linux-riscv64-gnu": {
1085 | "version": "4.39.0",
1086 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.39.0.tgz",
1087 | "integrity": "sha512-t7j5Zhr7S4bBtksT73bO6c3Qa2AV/HqiGlj9+KB3gNF5upcVkx+HLgxTm8DK4OkzsOYqbdqbLKwvGMhylJCPhQ==",
1088 | "cpu": [
1089 | "riscv64"
1090 | ],
1091 | "dev": true,
1092 | "license": "MIT",
1093 | "optional": true,
1094 | "os": [
1095 | "linux"
1096 | ]
1097 | },
1098 | "node_modules/@rollup/rollup-linux-riscv64-musl": {
1099 | "version": "4.39.0",
1100 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.39.0.tgz",
1101 | "integrity": "sha512-m6cwI86IvQ7M93MQ2RF5SP8tUjD39Y7rjb1qjHgYh28uAPVU8+k/xYWvxRO3/tBN2pZkSMa5RjnPuUIbrwVxeA==",
1102 | "cpu": [
1103 | "riscv64"
1104 | ],
1105 | "dev": true,
1106 | "license": "MIT",
1107 | "optional": true,
1108 | "os": [
1109 | "linux"
1110 | ]
1111 | },
1112 | "node_modules/@rollup/rollup-linux-s390x-gnu": {
1113 | "version": "4.39.0",
1114 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.39.0.tgz",
1115 | "integrity": "sha512-iRDJd2ebMunnk2rsSBYlsptCyuINvxUfGwOUldjv5M4tpa93K8tFMeYGpNk2+Nxl+OBJnBzy2/JCscGeO507kA==",
1116 | "cpu": [
1117 | "s390x"
1118 | ],
1119 | "dev": true,
1120 | "license": "MIT",
1121 | "optional": true,
1122 | "os": [
1123 | "linux"
1124 | ]
1125 | },
1126 | "node_modules/@rollup/rollup-linux-x64-gnu": {
1127 | "version": "4.39.0",
1128 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.39.0.tgz",
1129 | "integrity": "sha512-t9jqYw27R6Lx0XKfEFe5vUeEJ5pF3SGIM6gTfONSMb7DuG6z6wfj2yjcoZxHg129veTqU7+wOhY6GX8wmf90dA==",
1130 | "cpu": [
1131 | "x64"
1132 | ],
1133 | "dev": true,
1134 | "license": "MIT",
1135 | "optional": true,
1136 | "os": [
1137 | "linux"
1138 | ]
1139 | },
1140 | "node_modules/@rollup/rollup-linux-x64-musl": {
1141 | "version": "4.39.0",
1142 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.39.0.tgz",
1143 | "integrity": "sha512-ThFdkrFDP55AIsIZDKSBWEt/JcWlCzydbZHinZ0F/r1h83qbGeenCt/G/wG2O0reuENDD2tawfAj2s8VK7Bugg==",
1144 | "cpu": [
1145 | "x64"
1146 | ],
1147 | "dev": true,
1148 | "license": "MIT",
1149 | "optional": true,
1150 | "os": [
1151 | "linux"
1152 | ]
1153 | },
1154 | "node_modules/@rollup/rollup-win32-arm64-msvc": {
1155 | "version": "4.39.0",
1156 | "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.39.0.tgz",
1157 | "integrity": "sha512-jDrLm6yUtbOg2TYB3sBF3acUnAwsIksEYjLeHL+TJv9jg+TmTwdyjnDex27jqEMakNKf3RwwPahDIt7QXCSqRQ==",
1158 | "cpu": [
1159 | "arm64"
1160 | ],
1161 | "dev": true,
1162 | "license": "MIT",
1163 | "optional": true,
1164 | "os": [
1165 | "win32"
1166 | ]
1167 | },
1168 | "node_modules/@rollup/rollup-win32-ia32-msvc": {
1169 | "version": "4.39.0",
1170 | "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.39.0.tgz",
1171 | "integrity": "sha512-6w9uMuza+LbLCVoNKL5FSLE7yvYkq9laSd09bwS0tMjkwXrmib/4KmoJcrKhLWHvw19mwU+33ndC69T7weNNjQ==",
1172 | "cpu": [
1173 | "ia32"
1174 | ],
1175 | "dev": true,
1176 | "license": "MIT",
1177 | "optional": true,
1178 | "os": [
1179 | "win32"
1180 | ]
1181 | },
1182 | "node_modules/@rollup/rollup-win32-x64-msvc": {
1183 | "version": "4.39.0",
1184 | "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.39.0.tgz",
1185 | "integrity": "sha512-yAkUOkIKZlK5dl7u6dg897doBgLXmUHhIINM2c+sND3DZwnrdQkkSiDh7N75Ll4mM4dxSkYfXqU9fW3lLkMFug==",
1186 | "cpu": [
1187 | "x64"
1188 | ],
1189 | "dev": true,
1190 | "license": "MIT",
1191 | "optional": true,
1192 | "os": [
1193 | "win32"
1194 | ]
1195 | },
1196 | "node_modules/@types/babel__core": {
1197 | "version": "7.20.5",
1198 | "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz",
1199 | "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==",
1200 | "dev": true,
1201 | "license": "MIT",
1202 | "dependencies": {
1203 | "@babel/parser": "^7.20.7",
1204 | "@babel/types": "^7.20.7",
1205 | "@types/babel__generator": "*",
1206 | "@types/babel__template": "*",
1207 | "@types/babel__traverse": "*"
1208 | }
1209 | },
1210 | "node_modules/@types/babel__generator": {
1211 | "version": "7.6.8",
1212 | "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.8.tgz",
1213 | "integrity": "sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==",
1214 | "dev": true,
1215 | "license": "MIT",
1216 | "dependencies": {
1217 | "@babel/types": "^7.0.0"
1218 | }
1219 | },
1220 | "node_modules/@types/babel__template": {
1221 | "version": "7.4.4",
1222 | "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz",
1223 | "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==",
1224 | "dev": true,
1225 | "license": "MIT",
1226 | "dependencies": {
1227 | "@babel/parser": "^7.1.0",
1228 | "@babel/types": "^7.0.0"
1229 | }
1230 | },
1231 | "node_modules/@types/babel__traverse": {
1232 | "version": "7.20.6",
1233 | "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.6.tgz",
1234 | "integrity": "sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg==",
1235 | "dev": true,
1236 | "license": "MIT",
1237 | "dependencies": {
1238 | "@babel/types": "^7.20.7"
1239 | }
1240 | },
1241 | "node_modules/@types/estree": {
1242 | "version": "1.0.7",
1243 | "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.7.tgz",
1244 | "integrity": "sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==",
1245 | "dev": true,
1246 | "license": "MIT"
1247 | },
1248 | "node_modules/@types/gensync": {
1249 | "version": "1.0.4",
1250 | "resolved": "https://registry.npmjs.org/@types/gensync/-/gensync-1.0.4.tgz",
1251 | "integrity": "sha512-C3YYeRQWp2fmq9OryX+FoDy8nXS6scQ7dPptD8LnFDAUNcKWJjXQKDNJD3HVm+kOUsXhTOkpi69vI4EuAr95bA==",
1252 | "dev": true,
1253 | "license": "MIT"
1254 | },
1255 | "node_modules/@types/prop-types": {
1256 | "version": "15.7.14",
1257 | "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.14.tgz",
1258 | "integrity": "sha512-gNMvNH49DJ7OJYv+KAKn0Xp45p8PLl6zo2YnvDIbTd4J6MER2BmWN49TG7n9LvkyihINxeKW8+3bfS2yDC9dzQ==",
1259 | "dev": true,
1260 | "license": "MIT"
1261 | },
1262 | "node_modules/@types/react": {
1263 | "version": "18.3.18",
1264 | "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.18.tgz",
1265 | "integrity": "sha512-t4yC+vtgnkYjNSKlFx1jkAhH8LgTo2N/7Qvi83kdEaUtMDiwpbLAktKDaAMlRcJ5eSxZkH74eEGt1ky31d7kfQ==",
1266 | "dev": true,
1267 | "license": "MIT",
1268 | "dependencies": {
1269 | "@types/prop-types": "*",
1270 | "csstype": "^3.0.2"
1271 | }
1272 | },
1273 | "node_modules/@types/react-dom": {
1274 | "version": "18.3.5",
1275 | "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.3.5.tgz",
1276 | "integrity": "sha512-P4t6saawp+b/dFrUr2cvkVsfvPguwsxtH6dNIYRllMsefqFzkZk5UIjzyDOv5g1dXIPdG4Sp1yCR4Z6RCUsG/Q==",
1277 | "dev": true,
1278 | "license": "MIT",
1279 | "peerDependencies": {
1280 | "@types/react": "^18.0.0"
1281 | }
1282 | },
1283 | "node_modules/@vitejs/plugin-react": {
1284 | "version": "4.3.4",
1285 | "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-4.3.4.tgz",
1286 | "integrity": "sha512-SCCPBJtYLdE8PX/7ZQAs1QAZ8Jqwih+0VBLum1EGqmCCQal+MIUqLCzj3ZUy8ufbC0cAM4LRlSTm7IQJwWT4ug==",
1287 | "dev": true,
1288 | "license": "MIT",
1289 | "dependencies": {
1290 | "@babel/core": "^7.26.0",
1291 | "@babel/plugin-transform-react-jsx-self": "^7.25.9",
1292 | "@babel/plugin-transform-react-jsx-source": "^7.25.9",
1293 | "@types/babel__core": "^7.20.5",
1294 | "react-refresh": "^0.14.2"
1295 | },
1296 | "engines": {
1297 | "node": "^14.18.0 || >=16.0.0"
1298 | },
1299 | "peerDependencies": {
1300 | "vite": "^4.2.0 || ^5.0.0 || ^6.0.0"
1301 | }
1302 | },
1303 | "node_modules/ansi-regex": {
1304 | "version": "6.1.0",
1305 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz",
1306 | "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==",
1307 | "dev": true,
1308 | "license": "MIT",
1309 | "engines": {
1310 | "node": ">=12"
1311 | },
1312 | "funding": {
1313 | "url": "https://github.com/chalk/ansi-regex?sponsor=1"
1314 | }
1315 | },
1316 | "node_modules/ansi-styles": {
1317 | "version": "6.2.1",
1318 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz",
1319 | "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==",
1320 | "dev": true,
1321 | "license": "MIT",
1322 | "engines": {
1323 | "node": ">=12"
1324 | },
1325 | "funding": {
1326 | "url": "https://github.com/chalk/ansi-styles?sponsor=1"
1327 | }
1328 | },
1329 | "node_modules/any-promise": {
1330 | "version": "1.3.0",
1331 | "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz",
1332 | "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==",
1333 | "dev": true,
1334 | "license": "MIT"
1335 | },
1336 | "node_modules/anymatch": {
1337 | "version": "3.1.3",
1338 | "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz",
1339 | "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==",
1340 | "dev": true,
1341 | "license": "ISC",
1342 | "dependencies": {
1343 | "normalize-path": "^3.0.0",
1344 | "picomatch": "^2.0.4"
1345 | },
1346 | "engines": {
1347 | "node": ">= 8"
1348 | }
1349 | },
1350 | "node_modules/arg": {
1351 | "version": "5.0.2",
1352 | "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz",
1353 | "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==",
1354 | "dev": true,
1355 | "license": "MIT"
1356 | },
1357 | "node_modules/autoprefixer": {
1358 | "version": "10.4.20",
1359 | "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.20.tgz",
1360 | "integrity": "sha512-XY25y5xSv/wEoqzDyXXME4AFfkZI0P23z6Fs3YgymDnKJkCGOnkL0iTxCa85UTqaSgfcqyf3UA6+c7wUvx/16g==",
1361 | "dev": true,
1362 | "funding": [
1363 | {
1364 | "type": "opencollective",
1365 | "url": "https://opencollective.com/postcss/"
1366 | },
1367 | {
1368 | "type": "tidelift",
1369 | "url": "https://tidelift.com/funding/github/npm/autoprefixer"
1370 | },
1371 | {
1372 | "type": "github",
1373 | "url": "https://github.com/sponsors/ai"
1374 | }
1375 | ],
1376 | "license": "MIT",
1377 | "dependencies": {
1378 | "browserslist": "^4.23.3",
1379 | "caniuse-lite": "^1.0.30001646",
1380 | "fraction.js": "^4.3.7",
1381 | "normalize-range": "^0.1.2",
1382 | "picocolors": "^1.0.1",
1383 | "postcss-value-parser": "^4.2.0"
1384 | },
1385 | "bin": {
1386 | "autoprefixer": "bin/autoprefixer"
1387 | },
1388 | "engines": {
1389 | "node": "^10 || ^12 || >=14"
1390 | },
1391 | "peerDependencies": {
1392 | "postcss": "^8.1.0"
1393 | }
1394 | },
1395 | "node_modules/balanced-match": {
1396 | "version": "1.0.2",
1397 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
1398 | "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
1399 | "dev": true,
1400 | "license": "MIT"
1401 | },
1402 | "node_modules/binary-extensions": {
1403 | "version": "2.3.0",
1404 | "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz",
1405 | "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==",
1406 | "dev": true,
1407 | "license": "MIT",
1408 | "engines": {
1409 | "node": ">=8"
1410 | },
1411 | "funding": {
1412 | "url": "https://github.com/sponsors/sindresorhus"
1413 | }
1414 | },
1415 | "node_modules/brace-expansion": {
1416 | "version": "2.0.1",
1417 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
1418 | "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
1419 | "dev": true,
1420 | "license": "MIT",
1421 | "dependencies": {
1422 | "balanced-match": "^1.0.0"
1423 | }
1424 | },
1425 | "node_modules/braces": {
1426 | "version": "3.0.3",
1427 | "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz",
1428 | "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==",
1429 | "dev": true,
1430 | "license": "MIT",
1431 | "dependencies": {
1432 | "fill-range": "^7.1.1"
1433 | },
1434 | "engines": {
1435 | "node": ">=8"
1436 | }
1437 | },
1438 | "node_modules/browserslist": {
1439 | "version": "4.24.4",
1440 | "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.4.tgz",
1441 | "integrity": "sha512-KDi1Ny1gSePi1vm0q4oxSF8b4DR44GF4BbmS2YdhPLOEqd8pDviZOGH/GsmRwoWJ2+5Lr085X7naowMwKHDG1A==",
1442 | "dev": true,
1443 | "funding": [
1444 | {
1445 | "type": "opencollective",
1446 | "url": "https://opencollective.com/browserslist"
1447 | },
1448 | {
1449 | "type": "tidelift",
1450 | "url": "https://tidelift.com/funding/github/npm/browserslist"
1451 | },
1452 | {
1453 | "type": "github",
1454 | "url": "https://github.com/sponsors/ai"
1455 | }
1456 | ],
1457 | "license": "MIT",
1458 | "dependencies": {
1459 | "caniuse-lite": "^1.0.30001688",
1460 | "electron-to-chromium": "^1.5.73",
1461 | "node-releases": "^2.0.19",
1462 | "update-browserslist-db": "^1.1.1"
1463 | },
1464 | "bin": {
1465 | "browserslist": "cli.js"
1466 | },
1467 | "engines": {
1468 | "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7"
1469 | }
1470 | },
1471 | "node_modules/camelcase-css": {
1472 | "version": "2.0.1",
1473 | "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz",
1474 | "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==",
1475 | "dev": true,
1476 | "license": "MIT",
1477 | "engines": {
1478 | "node": ">= 6"
1479 | }
1480 | },
1481 | "node_modules/caniuse-lite": {
1482 | "version": "1.0.30001698",
1483 | "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001698.tgz",
1484 | "integrity": "sha512-xJ3km2oiG/MbNU8G6zIq6XRZ6HtAOVXsbOrP/blGazi52kc5Yy7b6sDA5O+FbROzRrV7BSTllLHuNvmawYUJjw==",
1485 | "dev": true,
1486 | "funding": [
1487 | {
1488 | "type": "opencollective",
1489 | "url": "https://opencollective.com/browserslist"
1490 | },
1491 | {
1492 | "type": "tidelift",
1493 | "url": "https://tidelift.com/funding/github/npm/caniuse-lite"
1494 | },
1495 | {
1496 | "type": "github",
1497 | "url": "https://github.com/sponsors/ai"
1498 | }
1499 | ],
1500 | "license": "CC-BY-4.0"
1501 | },
1502 | "node_modules/chokidar": {
1503 | "version": "3.6.0",
1504 | "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz",
1505 | "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==",
1506 | "dev": true,
1507 | "license": "MIT",
1508 | "dependencies": {
1509 | "anymatch": "~3.1.2",
1510 | "braces": "~3.0.2",
1511 | "glob-parent": "~5.1.2",
1512 | "is-binary-path": "~2.1.0",
1513 | "is-glob": "~4.0.1",
1514 | "normalize-path": "~3.0.0",
1515 | "readdirp": "~3.6.0"
1516 | },
1517 | "engines": {
1518 | "node": ">= 8.10.0"
1519 | },
1520 | "funding": {
1521 | "url": "https://paulmillr.com/funding/"
1522 | },
1523 | "optionalDependencies": {
1524 | "fsevents": "~2.3.2"
1525 | }
1526 | },
1527 | "node_modules/chokidar/node_modules/glob-parent": {
1528 | "version": "5.1.2",
1529 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
1530 | "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
1531 | "dev": true,
1532 | "license": "ISC",
1533 | "dependencies": {
1534 | "is-glob": "^4.0.1"
1535 | },
1536 | "engines": {
1537 | "node": ">= 6"
1538 | }
1539 | },
1540 | "node_modules/clsx": {
1541 | "version": "2.1.1",
1542 | "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz",
1543 | "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==",
1544 | "license": "MIT",
1545 | "engines": {
1546 | "node": ">=6"
1547 | }
1548 | },
1549 | "node_modules/color-convert": {
1550 | "version": "2.0.1",
1551 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
1552 | "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
1553 | "dev": true,
1554 | "license": "MIT",
1555 | "dependencies": {
1556 | "color-name": "~1.1.4"
1557 | },
1558 | "engines": {
1559 | "node": ">=7.0.0"
1560 | }
1561 | },
1562 | "node_modules/color-name": {
1563 | "version": "1.1.4",
1564 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
1565 | "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
1566 | "dev": true,
1567 | "license": "MIT"
1568 | },
1569 | "node_modules/commander": {
1570 | "version": "4.1.1",
1571 | "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz",
1572 | "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==",
1573 | "dev": true,
1574 | "license": "MIT",
1575 | "engines": {
1576 | "node": ">= 6"
1577 | }
1578 | },
1579 | "node_modules/convert-source-map": {
1580 | "version": "2.0.0",
1581 | "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz",
1582 | "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==",
1583 | "dev": true,
1584 | "license": "MIT"
1585 | },
1586 | "node_modules/cross-spawn": {
1587 | "version": "7.0.6",
1588 | "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz",
1589 | "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==",
1590 | "dev": true,
1591 | "license": "MIT",
1592 | "dependencies": {
1593 | "path-key": "^3.1.0",
1594 | "shebang-command": "^2.0.0",
1595 | "which": "^2.0.1"
1596 | },
1597 | "engines": {
1598 | "node": ">= 8"
1599 | }
1600 | },
1601 | "node_modules/cssesc": {
1602 | "version": "3.0.0",
1603 | "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz",
1604 | "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==",
1605 | "dev": true,
1606 | "license": "MIT",
1607 | "bin": {
1608 | "cssesc": "bin/cssesc"
1609 | },
1610 | "engines": {
1611 | "node": ">=4"
1612 | }
1613 | },
1614 | "node_modules/csstype": {
1615 | "version": "3.1.3",
1616 | "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz",
1617 | "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==",
1618 | "dev": true,
1619 | "license": "MIT"
1620 | },
1621 | "node_modules/debug": {
1622 | "version": "4.4.0",
1623 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz",
1624 | "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==",
1625 | "dev": true,
1626 | "license": "MIT",
1627 | "dependencies": {
1628 | "ms": "^2.1.3"
1629 | },
1630 | "engines": {
1631 | "node": ">=6.0"
1632 | },
1633 | "peerDependenciesMeta": {
1634 | "supports-color": {
1635 | "optional": true
1636 | }
1637 | }
1638 | },
1639 | "node_modules/didyoumean": {
1640 | "version": "1.2.2",
1641 | "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz",
1642 | "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==",
1643 | "dev": true,
1644 | "license": "Apache-2.0"
1645 | },
1646 | "node_modules/dlv": {
1647 | "version": "1.1.3",
1648 | "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz",
1649 | "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==",
1650 | "dev": true,
1651 | "license": "MIT"
1652 | },
1653 | "node_modules/eastasianwidth": {
1654 | "version": "0.2.0",
1655 | "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz",
1656 | "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==",
1657 | "dev": true,
1658 | "license": "MIT"
1659 | },
1660 | "node_modules/electron-to-chromium": {
1661 | "version": "1.5.96",
1662 | "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.96.tgz",
1663 | "integrity": "sha512-8AJUW6dh75Fm/ny8+kZKJzI1pgoE8bKLZlzDU2W1ENd+DXKJrx7I7l9hb8UWR4ojlnb5OlixMt00QWiYJoVw1w==",
1664 | "dev": true,
1665 | "license": "ISC"
1666 | },
1667 | "node_modules/emoji-regex": {
1668 | "version": "9.2.2",
1669 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz",
1670 | "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==",
1671 | "dev": true,
1672 | "license": "MIT"
1673 | },
1674 | "node_modules/esbuild": {
1675 | "version": "0.25.2",
1676 | "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.2.tgz",
1677 | "integrity": "sha512-16854zccKPnC+toMywC+uKNeYSv+/eXkevRAfwRD/G9Cleq66m8XFIrigkbvauLLlCfDL45Q2cWegSg53gGBnQ==",
1678 | "dev": true,
1679 | "hasInstallScript": true,
1680 | "license": "MIT",
1681 | "bin": {
1682 | "esbuild": "bin/esbuild"
1683 | },
1684 | "engines": {
1685 | "node": ">=18"
1686 | },
1687 | "optionalDependencies": {
1688 | "@esbuild/aix-ppc64": "0.25.2",
1689 | "@esbuild/android-arm": "0.25.2",
1690 | "@esbuild/android-arm64": "0.25.2",
1691 | "@esbuild/android-x64": "0.25.2",
1692 | "@esbuild/darwin-arm64": "0.25.2",
1693 | "@esbuild/darwin-x64": "0.25.2",
1694 | "@esbuild/freebsd-arm64": "0.25.2",
1695 | "@esbuild/freebsd-x64": "0.25.2",
1696 | "@esbuild/linux-arm": "0.25.2",
1697 | "@esbuild/linux-arm64": "0.25.2",
1698 | "@esbuild/linux-ia32": "0.25.2",
1699 | "@esbuild/linux-loong64": "0.25.2",
1700 | "@esbuild/linux-mips64el": "0.25.2",
1701 | "@esbuild/linux-ppc64": "0.25.2",
1702 | "@esbuild/linux-riscv64": "0.25.2",
1703 | "@esbuild/linux-s390x": "0.25.2",
1704 | "@esbuild/linux-x64": "0.25.2",
1705 | "@esbuild/netbsd-arm64": "0.25.2",
1706 | "@esbuild/netbsd-x64": "0.25.2",
1707 | "@esbuild/openbsd-arm64": "0.25.2",
1708 | "@esbuild/openbsd-x64": "0.25.2",
1709 | "@esbuild/sunos-x64": "0.25.2",
1710 | "@esbuild/win32-arm64": "0.25.2",
1711 | "@esbuild/win32-ia32": "0.25.2",
1712 | "@esbuild/win32-x64": "0.25.2"
1713 | }
1714 | },
1715 | "node_modules/escalade": {
1716 | "version": "3.2.0",
1717 | "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz",
1718 | "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==",
1719 | "dev": true,
1720 | "license": "MIT",
1721 | "engines": {
1722 | "node": ">=6"
1723 | }
1724 | },
1725 | "node_modules/fast-glob": {
1726 | "version": "3.3.3",
1727 | "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz",
1728 | "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==",
1729 | "dev": true,
1730 | "license": "MIT",
1731 | "dependencies": {
1732 | "@nodelib/fs.stat": "^2.0.2",
1733 | "@nodelib/fs.walk": "^1.2.3",
1734 | "glob-parent": "^5.1.2",
1735 | "merge2": "^1.3.0",
1736 | "micromatch": "^4.0.8"
1737 | },
1738 | "engines": {
1739 | "node": ">=8.6.0"
1740 | }
1741 | },
1742 | "node_modules/fast-glob/node_modules/glob-parent": {
1743 | "version": "5.1.2",
1744 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
1745 | "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
1746 | "dev": true,
1747 | "license": "ISC",
1748 | "dependencies": {
1749 | "is-glob": "^4.0.1"
1750 | },
1751 | "engines": {
1752 | "node": ">= 6"
1753 | }
1754 | },
1755 | "node_modules/fastq": {
1756 | "version": "1.19.0",
1757 | "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.19.0.tgz",
1758 | "integrity": "sha512-7SFSRCNjBQIZH/xZR3iy5iQYR8aGBE0h3VG6/cwlbrpdciNYBMotQav8c1XI3HjHH+NikUpP53nPdlZSdWmFzA==",
1759 | "dev": true,
1760 | "license": "ISC",
1761 | "dependencies": {
1762 | "reusify": "^1.0.4"
1763 | }
1764 | },
1765 | "node_modules/fill-range": {
1766 | "version": "7.1.1",
1767 | "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz",
1768 | "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==",
1769 | "dev": true,
1770 | "license": "MIT",
1771 | "dependencies": {
1772 | "to-regex-range": "^5.0.1"
1773 | },
1774 | "engines": {
1775 | "node": ">=8"
1776 | }
1777 | },
1778 | "node_modules/foreground-child": {
1779 | "version": "3.3.0",
1780 | "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.0.tgz",
1781 | "integrity": "sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==",
1782 | "dev": true,
1783 | "license": "ISC",
1784 | "dependencies": {
1785 | "cross-spawn": "^7.0.0",
1786 | "signal-exit": "^4.0.1"
1787 | },
1788 | "engines": {
1789 | "node": ">=14"
1790 | },
1791 | "funding": {
1792 | "url": "https://github.com/sponsors/isaacs"
1793 | }
1794 | },
1795 | "node_modules/fraction.js": {
1796 | "version": "4.3.7",
1797 | "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.7.tgz",
1798 | "integrity": "sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==",
1799 | "dev": true,
1800 | "license": "MIT",
1801 | "engines": {
1802 | "node": "*"
1803 | },
1804 | "funding": {
1805 | "type": "patreon",
1806 | "url": "https://github.com/sponsors/rawify"
1807 | }
1808 | },
1809 | "node_modules/fsevents": {
1810 | "version": "2.3.3",
1811 | "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz",
1812 | "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==",
1813 | "dev": true,
1814 | "hasInstallScript": true,
1815 | "license": "MIT",
1816 | "optional": true,
1817 | "os": [
1818 | "darwin"
1819 | ],
1820 | "engines": {
1821 | "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
1822 | }
1823 | },
1824 | "node_modules/function-bind": {
1825 | "version": "1.1.2",
1826 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
1827 | "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==",
1828 | "dev": true,
1829 | "license": "MIT",
1830 | "funding": {
1831 | "url": "https://github.com/sponsors/ljharb"
1832 | }
1833 | },
1834 | "node_modules/gensync": {
1835 | "version": "1.0.0-beta.2",
1836 | "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz",
1837 | "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==",
1838 | "dev": true,
1839 | "license": "MIT",
1840 | "engines": {
1841 | "node": ">=6.9.0"
1842 | }
1843 | },
1844 | "node_modules/glob": {
1845 | "version": "10.4.5",
1846 | "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz",
1847 | "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==",
1848 | "dev": true,
1849 | "license": "ISC",
1850 | "dependencies": {
1851 | "foreground-child": "^3.1.0",
1852 | "jackspeak": "^3.1.2",
1853 | "minimatch": "^9.0.4",
1854 | "minipass": "^7.1.2",
1855 | "package-json-from-dist": "^1.0.0",
1856 | "path-scurry": "^1.11.1"
1857 | },
1858 | "bin": {
1859 | "glob": "dist/esm/bin.mjs"
1860 | },
1861 | "funding": {
1862 | "url": "https://github.com/sponsors/isaacs"
1863 | }
1864 | },
1865 | "node_modules/glob-parent": {
1866 | "version": "6.0.2",
1867 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz",
1868 | "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==",
1869 | "dev": true,
1870 | "license": "ISC",
1871 | "dependencies": {
1872 | "is-glob": "^4.0.3"
1873 | },
1874 | "engines": {
1875 | "node": ">=10.13.0"
1876 | }
1877 | },
1878 | "node_modules/globals": {
1879 | "version": "11.12.0",
1880 | "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz",
1881 | "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==",
1882 | "dev": true,
1883 | "license": "MIT",
1884 | "engines": {
1885 | "node": ">=4"
1886 | }
1887 | },
1888 | "node_modules/hasown": {
1889 | "version": "2.0.2",
1890 | "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz",
1891 | "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==",
1892 | "dev": true,
1893 | "license": "MIT",
1894 | "dependencies": {
1895 | "function-bind": "^1.1.2"
1896 | },
1897 | "engines": {
1898 | "node": ">= 0.4"
1899 | }
1900 | },
1901 | "node_modules/is-binary-path": {
1902 | "version": "2.1.0",
1903 | "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
1904 | "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
1905 | "dev": true,
1906 | "license": "MIT",
1907 | "dependencies": {
1908 | "binary-extensions": "^2.0.0"
1909 | },
1910 | "engines": {
1911 | "node": ">=8"
1912 | }
1913 | },
1914 | "node_modules/is-core-module": {
1915 | "version": "2.16.1",
1916 | "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz",
1917 | "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==",
1918 | "dev": true,
1919 | "license": "MIT",
1920 | "dependencies": {
1921 | "hasown": "^2.0.2"
1922 | },
1923 | "engines": {
1924 | "node": ">= 0.4"
1925 | },
1926 | "funding": {
1927 | "url": "https://github.com/sponsors/ljharb"
1928 | }
1929 | },
1930 | "node_modules/is-extglob": {
1931 | "version": "2.1.1",
1932 | "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
1933 | "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
1934 | "dev": true,
1935 | "license": "MIT",
1936 | "engines": {
1937 | "node": ">=0.10.0"
1938 | }
1939 | },
1940 | "node_modules/is-fullwidth-code-point": {
1941 | "version": "3.0.0",
1942 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
1943 | "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
1944 | "dev": true,
1945 | "license": "MIT",
1946 | "engines": {
1947 | "node": ">=8"
1948 | }
1949 | },
1950 | "node_modules/is-glob": {
1951 | "version": "4.0.3",
1952 | "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
1953 | "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
1954 | "dev": true,
1955 | "license": "MIT",
1956 | "dependencies": {
1957 | "is-extglob": "^2.1.1"
1958 | },
1959 | "engines": {
1960 | "node": ">=0.10.0"
1961 | }
1962 | },
1963 | "node_modules/is-number": {
1964 | "version": "7.0.0",
1965 | "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
1966 | "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
1967 | "dev": true,
1968 | "license": "MIT",
1969 | "engines": {
1970 | "node": ">=0.12.0"
1971 | }
1972 | },
1973 | "node_modules/isexe": {
1974 | "version": "2.0.0",
1975 | "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
1976 | "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",
1977 | "dev": true,
1978 | "license": "ISC"
1979 | },
1980 | "node_modules/jackspeak": {
1981 | "version": "3.4.3",
1982 | "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz",
1983 | "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==",
1984 | "dev": true,
1985 | "license": "BlueOak-1.0.0",
1986 | "dependencies": {
1987 | "@isaacs/cliui": "^8.0.2"
1988 | },
1989 | "funding": {
1990 | "url": "https://github.com/sponsors/isaacs"
1991 | },
1992 | "optionalDependencies": {
1993 | "@pkgjs/parseargs": "^0.11.0"
1994 | }
1995 | },
1996 | "node_modules/jiti": {
1997 | "version": "1.21.7",
1998 | "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.7.tgz",
1999 | "integrity": "sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A==",
2000 | "dev": true,
2001 | "license": "MIT",
2002 | "bin": {
2003 | "jiti": "bin/jiti.js"
2004 | }
2005 | },
2006 | "node_modules/js-tokens": {
2007 | "version": "4.0.0",
2008 | "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
2009 | "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
2010 | "license": "MIT"
2011 | },
2012 | "node_modules/jsesc": {
2013 | "version": "3.1.0",
2014 | "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz",
2015 | "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==",
2016 | "dev": true,
2017 | "license": "MIT",
2018 | "bin": {
2019 | "jsesc": "bin/jsesc"
2020 | },
2021 | "engines": {
2022 | "node": ">=6"
2023 | }
2024 | },
2025 | "node_modules/json5": {
2026 | "version": "2.2.3",
2027 | "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz",
2028 | "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==",
2029 | "dev": true,
2030 | "license": "MIT",
2031 | "bin": {
2032 | "json5": "lib/cli.js"
2033 | },
2034 | "engines": {
2035 | "node": ">=6"
2036 | }
2037 | },
2038 | "node_modules/lilconfig": {
2039 | "version": "3.1.3",
2040 | "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.3.tgz",
2041 | "integrity": "sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==",
2042 | "dev": true,
2043 | "license": "MIT",
2044 | "engines": {
2045 | "node": ">=14"
2046 | },
2047 | "funding": {
2048 | "url": "https://github.com/sponsors/antonk52"
2049 | }
2050 | },
2051 | "node_modules/lines-and-columns": {
2052 | "version": "1.2.4",
2053 | "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz",
2054 | "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==",
2055 | "dev": true,
2056 | "license": "MIT"
2057 | },
2058 | "node_modules/loose-envify": {
2059 | "version": "1.4.0",
2060 | "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz",
2061 | "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==",
2062 | "license": "MIT",
2063 | "dependencies": {
2064 | "js-tokens": "^3.0.0 || ^4.0.0"
2065 | },
2066 | "bin": {
2067 | "loose-envify": "cli.js"
2068 | }
2069 | },
2070 | "node_modules/lru-cache": {
2071 | "version": "5.1.1",
2072 | "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz",
2073 | "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==",
2074 | "dev": true,
2075 | "license": "ISC",
2076 | "dependencies": {
2077 | "yallist": "^3.0.2"
2078 | }
2079 | },
2080 | "node_modules/merge2": {
2081 | "version": "1.4.1",
2082 | "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz",
2083 | "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==",
2084 | "dev": true,
2085 | "license": "MIT",
2086 | "engines": {
2087 | "node": ">= 8"
2088 | }
2089 | },
2090 | "node_modules/micromatch": {
2091 | "version": "4.0.8",
2092 | "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz",
2093 | "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==",
2094 | "dev": true,
2095 | "license": "MIT",
2096 | "dependencies": {
2097 | "braces": "^3.0.3",
2098 | "picomatch": "^2.3.1"
2099 | },
2100 | "engines": {
2101 | "node": ">=8.6"
2102 | }
2103 | },
2104 | "node_modules/minimatch": {
2105 | "version": "9.0.5",
2106 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz",
2107 | "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==",
2108 | "dev": true,
2109 | "license": "ISC",
2110 | "dependencies": {
2111 | "brace-expansion": "^2.0.1"
2112 | },
2113 | "engines": {
2114 | "node": ">=16 || 14 >=14.17"
2115 | },
2116 | "funding": {
2117 | "url": "https://github.com/sponsors/isaacs"
2118 | }
2119 | },
2120 | "node_modules/minipass": {
2121 | "version": "7.1.2",
2122 | "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz",
2123 | "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==",
2124 | "dev": true,
2125 | "license": "ISC",
2126 | "engines": {
2127 | "node": ">=16 || 14 >=14.17"
2128 | }
2129 | },
2130 | "node_modules/ms": {
2131 | "version": "2.1.3",
2132 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
2133 | "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
2134 | "dev": true,
2135 | "license": "MIT"
2136 | },
2137 | "node_modules/mz": {
2138 | "version": "2.7.0",
2139 | "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz",
2140 | "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==",
2141 | "dev": true,
2142 | "license": "MIT",
2143 | "dependencies": {
2144 | "any-promise": "^1.0.0",
2145 | "object-assign": "^4.0.1",
2146 | "thenify-all": "^1.0.0"
2147 | }
2148 | },
2149 | "node_modules/nanoid": {
2150 | "version": "3.3.8",
2151 | "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.8.tgz",
2152 | "integrity": "sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==",
2153 | "dev": true,
2154 | "funding": [
2155 | {
2156 | "type": "github",
2157 | "url": "https://github.com/sponsors/ai"
2158 | }
2159 | ],
2160 | "license": "MIT",
2161 | "bin": {
2162 | "nanoid": "bin/nanoid.cjs"
2163 | },
2164 | "engines": {
2165 | "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
2166 | }
2167 | },
2168 | "node_modules/node-releases": {
2169 | "version": "2.0.19",
2170 | "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.19.tgz",
2171 | "integrity": "sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==",
2172 | "dev": true,
2173 | "license": "MIT"
2174 | },
2175 | "node_modules/normalize-path": {
2176 | "version": "3.0.0",
2177 | "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
2178 | "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
2179 | "dev": true,
2180 | "license": "MIT",
2181 | "engines": {
2182 | "node": ">=0.10.0"
2183 | }
2184 | },
2185 | "node_modules/normalize-range": {
2186 | "version": "0.1.2",
2187 | "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz",
2188 | "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==",
2189 | "dev": true,
2190 | "license": "MIT",
2191 | "engines": {
2192 | "node": ">=0.10.0"
2193 | }
2194 | },
2195 | "node_modules/object-assign": {
2196 | "version": "4.1.1",
2197 | "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
2198 | "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==",
2199 | "dev": true,
2200 | "license": "MIT",
2201 | "engines": {
2202 | "node": ">=0.10.0"
2203 | }
2204 | },
2205 | "node_modules/object-hash": {
2206 | "version": "3.0.0",
2207 | "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz",
2208 | "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==",
2209 | "dev": true,
2210 | "license": "MIT",
2211 | "engines": {
2212 | "node": ">= 6"
2213 | }
2214 | },
2215 | "node_modules/package-json-from-dist": {
2216 | "version": "1.0.1",
2217 | "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz",
2218 | "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==",
2219 | "dev": true,
2220 | "license": "BlueOak-1.0.0"
2221 | },
2222 | "node_modules/path-key": {
2223 | "version": "3.1.1",
2224 | "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
2225 | "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
2226 | "dev": true,
2227 | "license": "MIT",
2228 | "engines": {
2229 | "node": ">=8"
2230 | }
2231 | },
2232 | "node_modules/path-parse": {
2233 | "version": "1.0.7",
2234 | "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
2235 | "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
2236 | "dev": true,
2237 | "license": "MIT"
2238 | },
2239 | "node_modules/path-scurry": {
2240 | "version": "1.11.1",
2241 | "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz",
2242 | "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==",
2243 | "dev": true,
2244 | "license": "BlueOak-1.0.0",
2245 | "dependencies": {
2246 | "lru-cache": "^10.2.0",
2247 | "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0"
2248 | },
2249 | "engines": {
2250 | "node": ">=16 || 14 >=14.18"
2251 | },
2252 | "funding": {
2253 | "url": "https://github.com/sponsors/isaacs"
2254 | }
2255 | },
2256 | "node_modules/path-scurry/node_modules/lru-cache": {
2257 | "version": "10.4.3",
2258 | "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz",
2259 | "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==",
2260 | "dev": true,
2261 | "license": "ISC"
2262 | },
2263 | "node_modules/picocolors": {
2264 | "version": "1.1.1",
2265 | "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz",
2266 | "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==",
2267 | "dev": true,
2268 | "license": "ISC"
2269 | },
2270 | "node_modules/picomatch": {
2271 | "version": "2.3.1",
2272 | "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
2273 | "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
2274 | "dev": true,
2275 | "license": "MIT",
2276 | "engines": {
2277 | "node": ">=8.6"
2278 | },
2279 | "funding": {
2280 | "url": "https://github.com/sponsors/jonschlinkert"
2281 | }
2282 | },
2283 | "node_modules/pify": {
2284 | "version": "2.3.0",
2285 | "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
2286 | "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==",
2287 | "dev": true,
2288 | "license": "MIT",
2289 | "engines": {
2290 | "node": ">=0.10.0"
2291 | }
2292 | },
2293 | "node_modules/pirates": {
2294 | "version": "4.0.6",
2295 | "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz",
2296 | "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==",
2297 | "dev": true,
2298 | "license": "MIT",
2299 | "engines": {
2300 | "node": ">= 6"
2301 | }
2302 | },
2303 | "node_modules/postcss": {
2304 | "version": "8.5.3",
2305 | "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.3.tgz",
2306 | "integrity": "sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==",
2307 | "dev": true,
2308 | "funding": [
2309 | {
2310 | "type": "opencollective",
2311 | "url": "https://opencollective.com/postcss/"
2312 | },
2313 | {
2314 | "type": "tidelift",
2315 | "url": "https://tidelift.com/funding/github/npm/postcss"
2316 | },
2317 | {
2318 | "type": "github",
2319 | "url": "https://github.com/sponsors/ai"
2320 | }
2321 | ],
2322 | "license": "MIT",
2323 | "dependencies": {
2324 | "nanoid": "^3.3.8",
2325 | "picocolors": "^1.1.1",
2326 | "source-map-js": "^1.2.1"
2327 | },
2328 | "engines": {
2329 | "node": "^10 || ^12 || >=14"
2330 | }
2331 | },
2332 | "node_modules/postcss-import": {
2333 | "version": "15.1.0",
2334 | "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-15.1.0.tgz",
2335 | "integrity": "sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==",
2336 | "dev": true,
2337 | "license": "MIT",
2338 | "dependencies": {
2339 | "postcss-value-parser": "^4.0.0",
2340 | "read-cache": "^1.0.0",
2341 | "resolve": "^1.1.7"
2342 | },
2343 | "engines": {
2344 | "node": ">=14.0.0"
2345 | },
2346 | "peerDependencies": {
2347 | "postcss": "^8.0.0"
2348 | }
2349 | },
2350 | "node_modules/postcss-js": {
2351 | "version": "4.0.1",
2352 | "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-4.0.1.tgz",
2353 | "integrity": "sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==",
2354 | "dev": true,
2355 | "license": "MIT",
2356 | "dependencies": {
2357 | "camelcase-css": "^2.0.1"
2358 | },
2359 | "engines": {
2360 | "node": "^12 || ^14 || >= 16"
2361 | },
2362 | "funding": {
2363 | "type": "opencollective",
2364 | "url": "https://opencollective.com/postcss/"
2365 | },
2366 | "peerDependencies": {
2367 | "postcss": "^8.4.21"
2368 | }
2369 | },
2370 | "node_modules/postcss-load-config": {
2371 | "version": "4.0.2",
2372 | "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-4.0.2.tgz",
2373 | "integrity": "sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==",
2374 | "dev": true,
2375 | "funding": [
2376 | {
2377 | "type": "opencollective",
2378 | "url": "https://opencollective.com/postcss/"
2379 | },
2380 | {
2381 | "type": "github",
2382 | "url": "https://github.com/sponsors/ai"
2383 | }
2384 | ],
2385 | "license": "MIT",
2386 | "dependencies": {
2387 | "lilconfig": "^3.0.0",
2388 | "yaml": "^2.3.4"
2389 | },
2390 | "engines": {
2391 | "node": ">= 14"
2392 | },
2393 | "peerDependencies": {
2394 | "postcss": ">=8.0.9",
2395 | "ts-node": ">=9.0.0"
2396 | },
2397 | "peerDependenciesMeta": {
2398 | "postcss": {
2399 | "optional": true
2400 | },
2401 | "ts-node": {
2402 | "optional": true
2403 | }
2404 | }
2405 | },
2406 | "node_modules/postcss-nested": {
2407 | "version": "6.2.0",
2408 | "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-6.2.0.tgz",
2409 | "integrity": "sha512-HQbt28KulC5AJzG+cZtj9kvKB93CFCdLvog1WFLf1D+xmMvPGlBstkpTEZfK5+AN9hfJocyBFCNiqyS48bpgzQ==",
2410 | "dev": true,
2411 | "funding": [
2412 | {
2413 | "type": "opencollective",
2414 | "url": "https://opencollective.com/postcss/"
2415 | },
2416 | {
2417 | "type": "github",
2418 | "url": "https://github.com/sponsors/ai"
2419 | }
2420 | ],
2421 | "license": "MIT",
2422 | "dependencies": {
2423 | "postcss-selector-parser": "^6.1.1"
2424 | },
2425 | "engines": {
2426 | "node": ">=12.0"
2427 | },
2428 | "peerDependencies": {
2429 | "postcss": "^8.2.14"
2430 | }
2431 | },
2432 | "node_modules/postcss-selector-parser": {
2433 | "version": "6.1.2",
2434 | "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz",
2435 | "integrity": "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==",
2436 | "dev": true,
2437 | "license": "MIT",
2438 | "dependencies": {
2439 | "cssesc": "^3.0.0",
2440 | "util-deprecate": "^1.0.2"
2441 | },
2442 | "engines": {
2443 | "node": ">=4"
2444 | }
2445 | },
2446 | "node_modules/postcss-value-parser": {
2447 | "version": "4.2.0",
2448 | "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz",
2449 | "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==",
2450 | "dev": true,
2451 | "license": "MIT"
2452 | },
2453 | "node_modules/queue-microtask": {
2454 | "version": "1.2.3",
2455 | "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
2456 | "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==",
2457 | "dev": true,
2458 | "funding": [
2459 | {
2460 | "type": "github",
2461 | "url": "https://github.com/sponsors/feross"
2462 | },
2463 | {
2464 | "type": "patreon",
2465 | "url": "https://www.patreon.com/feross"
2466 | },
2467 | {
2468 | "type": "consulting",
2469 | "url": "https://feross.org/support"
2470 | }
2471 | ],
2472 | "license": "MIT"
2473 | },
2474 | "node_modules/react": {
2475 | "version": "18.3.1",
2476 | "resolved": "https://registry.npmjs.org/react/-/react-18.3.1.tgz",
2477 | "integrity": "sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==",
2478 | "license": "MIT",
2479 | "dependencies": {
2480 | "loose-envify": "^1.1.0"
2481 | },
2482 | "engines": {
2483 | "node": ">=0.10.0"
2484 | }
2485 | },
2486 | "node_modules/react-dom": {
2487 | "version": "18.3.1",
2488 | "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz",
2489 | "integrity": "sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==",
2490 | "license": "MIT",
2491 | "dependencies": {
2492 | "loose-envify": "^1.1.0",
2493 | "scheduler": "^0.23.2"
2494 | },
2495 | "peerDependencies": {
2496 | "react": "^18.3.1"
2497 | }
2498 | },
2499 | "node_modules/react-refresh": {
2500 | "version": "0.14.2",
2501 | "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.2.tgz",
2502 | "integrity": "sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA==",
2503 | "dev": true,
2504 | "license": "MIT",
2505 | "engines": {
2506 | "node": ">=0.10.0"
2507 | }
2508 | },
2509 | "node_modules/read-cache": {
2510 | "version": "1.0.0",
2511 | "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz",
2512 | "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==",
2513 | "dev": true,
2514 | "license": "MIT",
2515 | "dependencies": {
2516 | "pify": "^2.3.0"
2517 | }
2518 | },
2519 | "node_modules/readdirp": {
2520 | "version": "3.6.0",
2521 | "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
2522 | "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
2523 | "dev": true,
2524 | "license": "MIT",
2525 | "dependencies": {
2526 | "picomatch": "^2.2.1"
2527 | },
2528 | "engines": {
2529 | "node": ">=8.10.0"
2530 | }
2531 | },
2532 | "node_modules/resolve": {
2533 | "version": "1.22.10",
2534 | "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz",
2535 | "integrity": "sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==",
2536 | "dev": true,
2537 | "license": "MIT",
2538 | "dependencies": {
2539 | "is-core-module": "^2.16.0",
2540 | "path-parse": "^1.0.7",
2541 | "supports-preserve-symlinks-flag": "^1.0.0"
2542 | },
2543 | "bin": {
2544 | "resolve": "bin/resolve"
2545 | },
2546 | "engines": {
2547 | "node": ">= 0.4"
2548 | },
2549 | "funding": {
2550 | "url": "https://github.com/sponsors/ljharb"
2551 | }
2552 | },
2553 | "node_modules/reusify": {
2554 | "version": "1.0.4",
2555 | "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz",
2556 | "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==",
2557 | "dev": true,
2558 | "license": "MIT",
2559 | "engines": {
2560 | "iojs": ">=1.0.0",
2561 | "node": ">=0.10.0"
2562 | }
2563 | },
2564 | "node_modules/rollup": {
2565 | "version": "4.39.0",
2566 | "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.39.0.tgz",
2567 | "integrity": "sha512-thI8kNc02yNvnmJp8dr3fNWJ9tCONDhp6TV35X6HkKGGs9E6q7YWCHbe5vKiTa7TAiNcFEmXKj3X/pG2b3ci0g==",
2568 | "dev": true,
2569 | "license": "MIT",
2570 | "dependencies": {
2571 | "@types/estree": "1.0.7"
2572 | },
2573 | "bin": {
2574 | "rollup": "dist/bin/rollup"
2575 | },
2576 | "engines": {
2577 | "node": ">=18.0.0",
2578 | "npm": ">=8.0.0"
2579 | },
2580 | "optionalDependencies": {
2581 | "@rollup/rollup-android-arm-eabi": "4.39.0",
2582 | "@rollup/rollup-android-arm64": "4.39.0",
2583 | "@rollup/rollup-darwin-arm64": "4.39.0",
2584 | "@rollup/rollup-darwin-x64": "4.39.0",
2585 | "@rollup/rollup-freebsd-arm64": "4.39.0",
2586 | "@rollup/rollup-freebsd-x64": "4.39.0",
2587 | "@rollup/rollup-linux-arm-gnueabihf": "4.39.0",
2588 | "@rollup/rollup-linux-arm-musleabihf": "4.39.0",
2589 | "@rollup/rollup-linux-arm64-gnu": "4.39.0",
2590 | "@rollup/rollup-linux-arm64-musl": "4.39.0",
2591 | "@rollup/rollup-linux-loongarch64-gnu": "4.39.0",
2592 | "@rollup/rollup-linux-powerpc64le-gnu": "4.39.0",
2593 | "@rollup/rollup-linux-riscv64-gnu": "4.39.0",
2594 | "@rollup/rollup-linux-riscv64-musl": "4.39.0",
2595 | "@rollup/rollup-linux-s390x-gnu": "4.39.0",
2596 | "@rollup/rollup-linux-x64-gnu": "4.39.0",
2597 | "@rollup/rollup-linux-x64-musl": "4.39.0",
2598 | "@rollup/rollup-win32-arm64-msvc": "4.39.0",
2599 | "@rollup/rollup-win32-ia32-msvc": "4.39.0",
2600 | "@rollup/rollup-win32-x64-msvc": "4.39.0",
2601 | "fsevents": "~2.3.2"
2602 | }
2603 | },
2604 | "node_modules/run-parallel": {
2605 | "version": "1.2.0",
2606 | "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz",
2607 | "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==",
2608 | "dev": true,
2609 | "funding": [
2610 | {
2611 | "type": "github",
2612 | "url": "https://github.com/sponsors/feross"
2613 | },
2614 | {
2615 | "type": "patreon",
2616 | "url": "https://www.patreon.com/feross"
2617 | },
2618 | {
2619 | "type": "consulting",
2620 | "url": "https://feross.org/support"
2621 | }
2622 | ],
2623 | "license": "MIT",
2624 | "dependencies": {
2625 | "queue-microtask": "^1.2.2"
2626 | }
2627 | },
2628 | "node_modules/scheduler": {
2629 | "version": "0.23.2",
2630 | "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.2.tgz",
2631 | "integrity": "sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==",
2632 | "license": "MIT",
2633 | "dependencies": {
2634 | "loose-envify": "^1.1.0"
2635 | }
2636 | },
2637 | "node_modules/semver": {
2638 | "version": "6.3.1",
2639 | "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
2640 | "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
2641 | "dev": true,
2642 | "license": "ISC",
2643 | "bin": {
2644 | "semver": "bin/semver.js"
2645 | }
2646 | },
2647 | "node_modules/shebang-command": {
2648 | "version": "2.0.0",
2649 | "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
2650 | "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
2651 | "dev": true,
2652 | "license": "MIT",
2653 | "dependencies": {
2654 | "shebang-regex": "^3.0.0"
2655 | },
2656 | "engines": {
2657 | "node": ">=8"
2658 | }
2659 | },
2660 | "node_modules/shebang-regex": {
2661 | "version": "3.0.0",
2662 | "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
2663 | "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
2664 | "dev": true,
2665 | "license": "MIT",
2666 | "engines": {
2667 | "node": ">=8"
2668 | }
2669 | },
2670 | "node_modules/signal-exit": {
2671 | "version": "4.1.0",
2672 | "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz",
2673 | "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==",
2674 | "dev": true,
2675 | "license": "ISC",
2676 | "engines": {
2677 | "node": ">=14"
2678 | },
2679 | "funding": {
2680 | "url": "https://github.com/sponsors/isaacs"
2681 | }
2682 | },
2683 | "node_modules/source-map-js": {
2684 | "version": "1.2.1",
2685 | "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz",
2686 | "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==",
2687 | "dev": true,
2688 | "license": "BSD-3-Clause",
2689 | "engines": {
2690 | "node": ">=0.10.0"
2691 | }
2692 | },
2693 | "node_modules/string-width": {
2694 | "version": "5.1.2",
2695 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz",
2696 | "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==",
2697 | "dev": true,
2698 | "license": "MIT",
2699 | "dependencies": {
2700 | "eastasianwidth": "^0.2.0",
2701 | "emoji-regex": "^9.2.2",
2702 | "strip-ansi": "^7.0.1"
2703 | },
2704 | "engines": {
2705 | "node": ">=12"
2706 | },
2707 | "funding": {
2708 | "url": "https://github.com/sponsors/sindresorhus"
2709 | }
2710 | },
2711 | "node_modules/string-width-cjs": {
2712 | "name": "string-width",
2713 | "version": "4.2.3",
2714 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
2715 | "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
2716 | "dev": true,
2717 | "license": "MIT",
2718 | "dependencies": {
2719 | "emoji-regex": "^8.0.0",
2720 | "is-fullwidth-code-point": "^3.0.0",
2721 | "strip-ansi": "^6.0.1"
2722 | },
2723 | "engines": {
2724 | "node": ">=8"
2725 | }
2726 | },
2727 | "node_modules/string-width-cjs/node_modules/ansi-regex": {
2728 | "version": "5.0.1",
2729 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
2730 | "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
2731 | "dev": true,
2732 | "license": "MIT",
2733 | "engines": {
2734 | "node": ">=8"
2735 | }
2736 | },
2737 | "node_modules/string-width-cjs/node_modules/emoji-regex": {
2738 | "version": "8.0.0",
2739 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
2740 | "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
2741 | "dev": true,
2742 | "license": "MIT"
2743 | },
2744 | "node_modules/string-width-cjs/node_modules/strip-ansi": {
2745 | "version": "6.0.1",
2746 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
2747 | "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
2748 | "dev": true,
2749 | "license": "MIT",
2750 | "dependencies": {
2751 | "ansi-regex": "^5.0.1"
2752 | },
2753 | "engines": {
2754 | "node": ">=8"
2755 | }
2756 | },
2757 | "node_modules/strip-ansi": {
2758 | "version": "7.1.0",
2759 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz",
2760 | "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==",
2761 | "dev": true,
2762 | "license": "MIT",
2763 | "dependencies": {
2764 | "ansi-regex": "^6.0.1"
2765 | },
2766 | "engines": {
2767 | "node": ">=12"
2768 | },
2769 | "funding": {
2770 | "url": "https://github.com/chalk/strip-ansi?sponsor=1"
2771 | }
2772 | },
2773 | "node_modules/strip-ansi-cjs": {
2774 | "name": "strip-ansi",
2775 | "version": "6.0.1",
2776 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
2777 | "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
2778 | "dev": true,
2779 | "license": "MIT",
2780 | "dependencies": {
2781 | "ansi-regex": "^5.0.1"
2782 | },
2783 | "engines": {
2784 | "node": ">=8"
2785 | }
2786 | },
2787 | "node_modules/strip-ansi-cjs/node_modules/ansi-regex": {
2788 | "version": "5.0.1",
2789 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
2790 | "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
2791 | "dev": true,
2792 | "license": "MIT",
2793 | "engines": {
2794 | "node": ">=8"
2795 | }
2796 | },
2797 | "node_modules/sucrase": {
2798 | "version": "3.35.0",
2799 | "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.35.0.tgz",
2800 | "integrity": "sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==",
2801 | "dev": true,
2802 | "license": "MIT",
2803 | "dependencies": {
2804 | "@jridgewell/gen-mapping": "^0.3.2",
2805 | "commander": "^4.0.0",
2806 | "glob": "^10.3.10",
2807 | "lines-and-columns": "^1.1.6",
2808 | "mz": "^2.7.0",
2809 | "pirates": "^4.0.1",
2810 | "ts-interface-checker": "^0.1.9"
2811 | },
2812 | "bin": {
2813 | "sucrase": "bin/sucrase",
2814 | "sucrase-node": "bin/sucrase-node"
2815 | },
2816 | "engines": {
2817 | "node": ">=16 || 14 >=14.17"
2818 | }
2819 | },
2820 | "node_modules/supports-preserve-symlinks-flag": {
2821 | "version": "1.0.0",
2822 | "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
2823 | "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==",
2824 | "dev": true,
2825 | "license": "MIT",
2826 | "engines": {
2827 | "node": ">= 0.4"
2828 | },
2829 | "funding": {
2830 | "url": "https://github.com/sponsors/ljharb"
2831 | }
2832 | },
2833 | "node_modules/tailwind-merge": {
2834 | "version": "2.6.0",
2835 | "resolved": "https://registry.npmjs.org/tailwind-merge/-/tailwind-merge-2.6.0.tgz",
2836 | "integrity": "sha512-P+Vu1qXfzediirmHOC3xKGAYeZtPcV9g76X+xg2FD4tYgR71ewMA35Y3sCz3zhiN/dwefRpJX0yBcgwi1fXNQA==",
2837 | "license": "MIT",
2838 | "funding": {
2839 | "type": "github",
2840 | "url": "https://github.com/sponsors/dcastil"
2841 | }
2842 | },
2843 | "node_modules/tailwindcss": {
2844 | "version": "3.4.17",
2845 | "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.17.tgz",
2846 | "integrity": "sha512-w33E2aCvSDP0tW9RZuNXadXlkHXqFzSkQew/aIa2i/Sj8fThxwovwlXHSPXTbAHwEIhBFXAedUhP2tueAKP8Og==",
2847 | "dev": true,
2848 | "license": "MIT",
2849 | "dependencies": {
2850 | "@alloc/quick-lru": "^5.2.0",
2851 | "arg": "^5.0.2",
2852 | "chokidar": "^3.6.0",
2853 | "didyoumean": "^1.2.2",
2854 | "dlv": "^1.1.3",
2855 | "fast-glob": "^3.3.2",
2856 | "glob-parent": "^6.0.2",
2857 | "is-glob": "^4.0.3",
2858 | "jiti": "^1.21.6",
2859 | "lilconfig": "^3.1.3",
2860 | "micromatch": "^4.0.8",
2861 | "normalize-path": "^3.0.0",
2862 | "object-hash": "^3.0.0",
2863 | "picocolors": "^1.1.1",
2864 | "postcss": "^8.4.47",
2865 | "postcss-import": "^15.1.0",
2866 | "postcss-js": "^4.0.1",
2867 | "postcss-load-config": "^4.0.2",
2868 | "postcss-nested": "^6.2.0",
2869 | "postcss-selector-parser": "^6.1.2",
2870 | "resolve": "^1.22.8",
2871 | "sucrase": "^3.35.0"
2872 | },
2873 | "bin": {
2874 | "tailwind": "lib/cli.js",
2875 | "tailwindcss": "lib/cli.js"
2876 | },
2877 | "engines": {
2878 | "node": ">=14.0.0"
2879 | }
2880 | },
2881 | "node_modules/thenify": {
2882 | "version": "3.3.1",
2883 | "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz",
2884 | "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==",
2885 | "dev": true,
2886 | "license": "MIT",
2887 | "dependencies": {
2888 | "any-promise": "^1.0.0"
2889 | }
2890 | },
2891 | "node_modules/thenify-all": {
2892 | "version": "1.6.0",
2893 | "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz",
2894 | "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==",
2895 | "dev": true,
2896 | "license": "MIT",
2897 | "dependencies": {
2898 | "thenify": ">= 3.1.0 < 4"
2899 | },
2900 | "engines": {
2901 | "node": ">=0.8"
2902 | }
2903 | },
2904 | "node_modules/to-regex-range": {
2905 | "version": "5.0.1",
2906 | "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
2907 | "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
2908 | "dev": true,
2909 | "license": "MIT",
2910 | "dependencies": {
2911 | "is-number": "^7.0.0"
2912 | },
2913 | "engines": {
2914 | "node": ">=8.0"
2915 | }
2916 | },
2917 | "node_modules/ts-interface-checker": {
2918 | "version": "0.1.13",
2919 | "resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz",
2920 | "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==",
2921 | "dev": true,
2922 | "license": "Apache-2.0"
2923 | },
2924 | "node_modules/typescript": {
2925 | "version": "5.7.3",
2926 | "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.7.3.tgz",
2927 | "integrity": "sha512-84MVSjMEHP+FQRPy3pX9sTVV/INIex71s9TL2Gm5FG/WG1SqXeKyZ0k7/blY/4FdOzI12CBy1vGc4og/eus0fw==",
2928 | "dev": true,
2929 | "license": "Apache-2.0",
2930 | "bin": {
2931 | "tsc": "bin/tsc",
2932 | "tsserver": "bin/tsserver"
2933 | },
2934 | "engines": {
2935 | "node": ">=14.17"
2936 | }
2937 | },
2938 | "node_modules/update-browserslist-db": {
2939 | "version": "1.1.2",
2940 | "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.2.tgz",
2941 | "integrity": "sha512-PPypAm5qvlD7XMZC3BujecnaOxwhrtoFR+Dqkk5Aa/6DssiH0ibKoketaj9w8LP7Bont1rYeoV5plxD7RTEPRg==",
2942 | "dev": true,
2943 | "funding": [
2944 | {
2945 | "type": "opencollective",
2946 | "url": "https://opencollective.com/browserslist"
2947 | },
2948 | {
2949 | "type": "tidelift",
2950 | "url": "https://tidelift.com/funding/github/npm/browserslist"
2951 | },
2952 | {
2953 | "type": "github",
2954 | "url": "https://github.com/sponsors/ai"
2955 | }
2956 | ],
2957 | "license": "MIT",
2958 | "dependencies": {
2959 | "escalade": "^3.2.0",
2960 | "picocolors": "^1.1.1"
2961 | },
2962 | "bin": {
2963 | "update-browserslist-db": "cli.js"
2964 | },
2965 | "peerDependencies": {
2966 | "browserslist": ">= 4.21.0"
2967 | }
2968 | },
2969 | "node_modules/util-deprecate": {
2970 | "version": "1.0.2",
2971 | "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
2972 | "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==",
2973 | "dev": true,
2974 | "license": "MIT"
2975 | },
2976 | "node_modules/vite": {
2977 | "version": "6.2.4",
2978 | "resolved": "https://registry.npmjs.org/vite/-/vite-6.2.4.tgz",
2979 | "integrity": "sha512-veHMSew8CcRzhL5o8ONjy8gkfmFJAd5Ac16oxBUjlwgX3Gq2Wqr+qNC3TjPIpy7TPV/KporLga5GT9HqdrCizw==",
2980 | "dev": true,
2981 | "license": "MIT",
2982 | "dependencies": {
2983 | "esbuild": "^0.25.0",
2984 | "postcss": "^8.5.3",
2985 | "rollup": "^4.30.1"
2986 | },
2987 | "bin": {
2988 | "vite": "bin/vite.js"
2989 | },
2990 | "engines": {
2991 | "node": "^18.0.0 || ^20.0.0 || >=22.0.0"
2992 | },
2993 | "funding": {
2994 | "url": "https://github.com/vitejs/vite?sponsor=1"
2995 | },
2996 | "optionalDependencies": {
2997 | "fsevents": "~2.3.3"
2998 | },
2999 | "peerDependencies": {
3000 | "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0",
3001 | "jiti": ">=1.21.0",
3002 | "less": "*",
3003 | "lightningcss": "^1.21.0",
3004 | "sass": "*",
3005 | "sass-embedded": "*",
3006 | "stylus": "*",
3007 | "sugarss": "*",
3008 | "terser": "^5.16.0",
3009 | "tsx": "^4.8.1",
3010 | "yaml": "^2.4.2"
3011 | },
3012 | "peerDependenciesMeta": {
3013 | "@types/node": {
3014 | "optional": true
3015 | },
3016 | "jiti": {
3017 | "optional": true
3018 | },
3019 | "less": {
3020 | "optional": true
3021 | },
3022 | "lightningcss": {
3023 | "optional": true
3024 | },
3025 | "sass": {
3026 | "optional": true
3027 | },
3028 | "sass-embedded": {
3029 | "optional": true
3030 | },
3031 | "stylus": {
3032 | "optional": true
3033 | },
3034 | "sugarss": {
3035 | "optional": true
3036 | },
3037 | "terser": {
3038 | "optional": true
3039 | },
3040 | "tsx": {
3041 | "optional": true
3042 | },
3043 | "yaml": {
3044 | "optional": true
3045 | }
3046 | }
3047 | },
3048 | "node_modules/which": {
3049 | "version": "2.0.2",
3050 | "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
3051 | "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
3052 | "dev": true,
3053 | "license": "ISC",
3054 | "dependencies": {
3055 | "isexe": "^2.0.0"
3056 | },
3057 | "bin": {
3058 | "node-which": "bin/node-which"
3059 | },
3060 | "engines": {
3061 | "node": ">= 8"
3062 | }
3063 | },
3064 | "node_modules/wrap-ansi": {
3065 | "version": "8.1.0",
3066 | "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz",
3067 | "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==",
3068 | "dev": true,
3069 | "license": "MIT",
3070 | "dependencies": {
3071 | "ansi-styles": "^6.1.0",
3072 | "string-width": "^5.0.1",
3073 | "strip-ansi": "^7.0.1"
3074 | },
3075 | "engines": {
3076 | "node": ">=12"
3077 | },
3078 | "funding": {
3079 | "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
3080 | }
3081 | },
3082 | "node_modules/wrap-ansi-cjs": {
3083 | "name": "wrap-ansi",
3084 | "version": "7.0.0",
3085 | "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
3086 | "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
3087 | "dev": true,
3088 | "license": "MIT",
3089 | "dependencies": {
3090 | "ansi-styles": "^4.0.0",
3091 | "string-width": "^4.1.0",
3092 | "strip-ansi": "^6.0.0"
3093 | },
3094 | "engines": {
3095 | "node": ">=10"
3096 | },
3097 | "funding": {
3098 | "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
3099 | }
3100 | },
3101 | "node_modules/wrap-ansi-cjs/node_modules/ansi-regex": {
3102 | "version": "5.0.1",
3103 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
3104 | "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
3105 | "dev": true,
3106 | "license": "MIT",
3107 | "engines": {
3108 | "node": ">=8"
3109 | }
3110 | },
3111 | "node_modules/wrap-ansi-cjs/node_modules/ansi-styles": {
3112 | "version": "4.3.0",
3113 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
3114 | "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
3115 | "dev": true,
3116 | "license": "MIT",
3117 | "dependencies": {
3118 | "color-convert": "^2.0.1"
3119 | },
3120 | "engines": {
3121 | "node": ">=8"
3122 | },
3123 | "funding": {
3124 | "url": "https://github.com/chalk/ansi-styles?sponsor=1"
3125 | }
3126 | },
3127 | "node_modules/wrap-ansi-cjs/node_modules/emoji-regex": {
3128 | "version": "8.0.0",
3129 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
3130 | "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
3131 | "dev": true,
3132 | "license": "MIT"
3133 | },
3134 | "node_modules/wrap-ansi-cjs/node_modules/string-width": {
3135 | "version": "4.2.3",
3136 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
3137 | "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
3138 | "dev": true,
3139 | "license": "MIT",
3140 | "dependencies": {
3141 | "emoji-regex": "^8.0.0",
3142 | "is-fullwidth-code-point": "^3.0.0",
3143 | "strip-ansi": "^6.0.1"
3144 | },
3145 | "engines": {
3146 | "node": ">=8"
3147 | }
3148 | },
3149 | "node_modules/wrap-ansi-cjs/node_modules/strip-ansi": {
3150 | "version": "6.0.1",
3151 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
3152 | "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
3153 | "dev": true,
3154 | "license": "MIT",
3155 | "dependencies": {
3156 | "ansi-regex": "^5.0.1"
3157 | },
3158 | "engines": {
3159 | "node": ">=8"
3160 | }
3161 | },
3162 | "node_modules/yallist": {
3163 | "version": "3.1.1",
3164 | "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
3165 | "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==",
3166 | "dev": true,
3167 | "license": "ISC"
3168 | },
3169 | "node_modules/yaml": {
3170 | "version": "2.7.0",
3171 | "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.7.0.tgz",
3172 | "integrity": "sha512-+hSoy/QHluxmC9kCIJyL/uyFmLmc+e5CFR5Wa+bpIhIj85LVb9ZH2nVnqrHoSvKogwODv0ClqZkmiSSaIH5LTA==",
3173 | "dev": true,
3174 | "license": "ISC",
3175 | "bin": {
3176 | "yaml": "bin.mjs"
3177 | },
3178 | "engines": {
3179 | "node": ">= 14"
3180 | }
3181 | }
3182 | }
3183 | }
3184 |
--------------------------------------------------------------------------------