diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index cfe4ae49b..b0463097c 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -24,9 +24,9 @@ jobs: node-version: 20 registry-url: https://registry.npmjs.org - name: install react - run: npm i react + run: npm i react --legacy-peer-deps - name: install dependencies - run: npm ci + run: npm ci --legacy-peer-deps - name: lint checks run: npm run lint - name: unit tests diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index a132102d2..63402ed64 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -20,9 +20,9 @@ jobs: node-version: 20 registry-url: https://registry.npmjs.org - name: install react - run: npm i react + run: npm i react --legacy-peer-deps - name: install dependencies - run: npm ci + run: npm ci --legacy-peer-deps - name: build run: npm run build - name: release diff --git a/.gitignore b/.gitignore index fc740099e..919bbdb15 100644 --- a/.gitignore +++ b/.gitignore @@ -4,4 +4,5 @@ dist storybook-static package-lock.json .vscode -yarn.lock \ No newline at end of file +yarn.lock +*storybook.log diff --git a/.prettierrc.json b/.prettierrc.json index 34d9b0533..ec80cef10 100644 --- a/.prettierrc.json +++ b/.prettierrc.json @@ -6,5 +6,7 @@ "semi": true, "printWidth": 100, "jsxSingleQuote": false, - "endOfLine": "auto" + "endOfLine": "auto", + "plugins": ["prettier-plugin-tailwindcss"], + "tailwindFunctions": ["clsx", "cx", "twmerge", "tremorTwMerge"] } diff --git a/.storybook/main.js b/.storybook/main.js deleted file mode 100644 index 9e0d81790..000000000 --- a/.storybook/main.js +++ /dev/null @@ -1,64 +0,0 @@ -var path = require("path"); - -module.exports = { - stories: ["../src/**/*.stories.@(js|jsx|ts|tsx)"], - - addons: [ - "@storybook/addon-links", - "@storybook/addon-essentials", - "@storybook/addon-interactions", - "@storybook/addon-styling-webpack", - "@storybook/addon-themes", - "@storybook/addon-a11y", - "storybook-source-link", - { - name: "@storybook/addon-styling-webpack", - options: { - rules: [ - { - test: /\.css$/, - sideEffects: true, - use: [ - require.resolve("style-loader"), - { - loader: require.resolve("css-loader"), - options: { - importLoaders: 1, - }, - }, - { - loader: require.resolve("postcss-loader"), - options: { - implementation: require.resolve("postcss"), - }, - }, - ], - }, - ], - }, - }, - "@storybook/addon-webpack5-compiler-babel", - "@chromatic-com/storybook", - ], - - framework: { - name: "@storybook/react-webpack5", - options: {}, - }, - - features: { - previewMdx2: true, - }, - - webpackFinal: async (config) => { - config.resolve.modules = [...(config.resolve.modules || []), path.resolve(__dirname, "../src")]; - - return config; - }, - - docs: {}, - - typescript: { - reactDocgen: "react-docgen-typescript", - }, -}; diff --git a/.storybook/main.ts b/.storybook/main.ts new file mode 100644 index 000000000..f9e31eaf4 --- /dev/null +++ b/.storybook/main.ts @@ -0,0 +1,20 @@ +import type { StorybookConfig } from "@storybook/react-vite"; + +const config: StorybookConfig = { + stories: ["../src/**/*.mdx", "../src/**/*.stories.@(js|jsx|mjs|ts|tsx)"], + addons: [ + { + name: "@storybook/addon-essentials", + }, + "@storybook/addon-interactions", + "@storybook/addon-themes", + ], + framework: { + name: "@storybook/react-vite", + options: { + strictMode: true, + }, + }, +}; + +export default config; diff --git a/.storybook/manager.js b/.storybook/manager.js deleted file mode 100644 index 18d20f308..000000000 --- a/.storybook/manager.js +++ /dev/null @@ -1,7 +0,0 @@ -import { addons } from "@storybook/manager-api"; -import { themes } from "@storybook/theming"; -import tremorTheme from "./tremorTheme"; - -addons.setConfig({ - theme: tremorTheme, -}); diff --git a/.storybook/manager.tsx b/.storybook/manager.tsx new file mode 100644 index 000000000..e250391f3 --- /dev/null +++ b/.storybook/manager.tsx @@ -0,0 +1,9 @@ +import "../assets/fonts/stylesheet.css"; + + +import { addons } from "@storybook/manager-api"; + +addons.setConfig({ + panelPosition: "bottom", + initialActive: "canvas", +}); \ No newline at end of file diff --git a/.storybook/preview.js b/.storybook/preview.js deleted file mode 100644 index a0e871d6c..000000000 --- a/.storybook/preview.js +++ /dev/null @@ -1,36 +0,0 @@ -import "../src/styles.css"; -import { withThemeByDataAttribute } from "@storybook/addon-themes"; - -export const parameters = { - controls: { - matchers: { - color: /(background|color)$/i, - date: /Date$/, - }, - }, - backgrounds: { - default: "light", - values: [ - { - name: "light", - value: "#ffffff", - }, - { - name: "dark", - value: "#0f172a", - }, - ], - }, -}; - -export const decorators = [ - withThemeByDataAttribute({ - themes: { - light: "light", - dark: "dark", - }, - defaultTheme: "light", - attributeName: "data-mode", - }), -]; -export const tags = ["autodocs"]; diff --git a/.storybook/preview.ts b/.storybook/preview.ts new file mode 100644 index 000000000..7239ff8ab --- /dev/null +++ b/.storybook/preview.ts @@ -0,0 +1,21 @@ +import "../assets/fonts/stylesheet.css"; +import "../src/styles.css"; + +import type { Preview } from "@storybook/react"; + +const preview = { + parameters: { + // docs: { + // theme, + // }, + backgrounds: { + values: [ + { name: 'Dark', value: '#030712' }, + { name: 'Light', value: '#fff' }, + ], + default: 'Light', + }, + }, +} satisfies Preview; + +export default preview; diff --git a/.storybook/theme.ts b/.storybook/theme.ts new file mode 100644 index 000000000..1ee5af131 --- /dev/null +++ b/.storybook/theme.ts @@ -0,0 +1,25 @@ +import { create } from "@storybook/theming"; + +export default create({ + base: "light", + fontBase: "var(--font-geist-sans)", + fontCode: "var(--font-geist-mono)", + // appContentBg: "#161618", + // appBg: "#161618", + // barBg: "#161618", + // inputBg: "#232326", + // buttonBg: "#232326", + // booleanBg: "#232326", + // appBorderColor: "#1C1C1F", + // inputBorder: "#383A43", + // buttonBorder: "#383A43", + // textColor: "#ECEEF0", + // colorSecondary: "#1e3a8a", + // colorPrimary: "#3b82f6", + // barTextColor: "#ECEEF0", + // barHoverColor: "#3E63DD", + // barSelectedColor: "#3E63DD", + // inputTextColor: "#ECEEF0", + // textMutedColor: "#CCCED3", + // textInverseColor: "#161618", +}); diff --git a/.storybook/tremorTheme.js b/.storybook/tremorTheme.js deleted file mode 100644 index 730a3489b..000000000 --- a/.storybook/tremorTheme.js +++ /dev/null @@ -1,21 +0,0 @@ -import { create } from "@storybook/theming/create"; - -export default create({ - base: "light", - brandTitle: "Tremor Storybook", - brandUrl: "https://storybook.tremor.so", - // brandImage: 'images/tremor-logo.svg', - brandTarget: "_self", - // - colorSecondary: "#3b82f6", - - // UI - appBg: "#ffffff", - appContentBg: "#ffffff", - // appBorderColor: '#585C6D', - appBorderRadius: 0, - // - barTextColor: "#9E9E9E", - barSelectedColor: "#3b82f6", - barBg: "#ffffff", -}); diff --git a/assets/fonts/GeistMonoVariable.ttf b/assets/fonts/GeistMonoVariable.ttf new file mode 100644 index 000000000..252788ea1 Binary files /dev/null and b/assets/fonts/GeistMonoVariable.ttf differ diff --git a/assets/fonts/GeistVariable.ttf b/assets/fonts/GeistVariable.ttf new file mode 100644 index 000000000..3bf823076 Binary files /dev/null and b/assets/fonts/GeistVariable.ttf differ diff --git a/assets/fonts/stylesheet.css b/assets/fonts/stylesheet.css new file mode 100644 index 000000000..898fcf766 --- /dev/null +++ b/assets/fonts/stylesheet.css @@ -0,0 +1,23 @@ +@font-face { + font-family: "Geist Sans"; + src: url("./GeistVariable.ttf") format("truetype"); + font-weight: 100 900; + font-style: normal; +} + +@font-face { + font-family: "Geist Mono"; + src: url("./GeistMonoVariable.ttf") format("truetype"); + font-weight: 100 900; + font-style: normal; +} + +:root { + --font-geist-sans: "Geist Sans"; + --font-geist-mono: "Geist Mono"; +} + +/* @theme { + --font-geist-sans: "Geist Sans"; + --font-geist-mono: "Geist Mono"; +} */ diff --git a/package.json b/package.json index 955df9e55..e0db26a68 100644 --- a/package.json +++ b/package.json @@ -9,9 +9,9 @@ "prettier": "prettier --write \"{src,types,tests,example/src}/**/*.{js,ts,jsx,tsx}\"", "tests": "jest", "fix-lint": "eslint . --ext .ts --ext .tsx --fix", - "build-storybook": "storybook build", "semantic-release": "semantic-release", - "storybook": "storybook dev -p 6006" + "storybook": "storybook dev -p 6006", + "build-storybook": "storybook build" }, "repository": { "type": "git", @@ -25,20 +25,18 @@ "homepage": "https://github.com/tremorlabs/tremor#readme", "dependencies": { "@floating-ui/react": "^0.19.2", - "@headlessui/react": "1.7.19", - "@headlessui/tailwindcss": "^0.2.1", + "@headlessui/react": "2.2.0", "date-fns": "^3.6.0", "react-day-picker": "^8.10.1", - "react-transition-state": "^2.1.2", - "recharts": "^2.13.3", - "tailwind-merge": "^2.5.2" + "recharts": "^2.15.0", + "tailwind-merge": "^2.5.5", + "tailwind-variants": "^0.3.0" }, "devDependencies": { "@babel/core": "^7.25.2", "@babel/preset-env": "^7.25.4", "@babel/preset-react": "^7.24.7", "@babel/preset-typescript": "^7.24.7", - "@chromatic-com/storybook": "^1.9.0", "@mdx-js/react": "^2.3.0", "@rollup/plugin-commonjs": "^21.1.0", "@rollup/plugin-node-resolve": "^13.3.0", @@ -47,28 +45,25 @@ "@semantic-release/commit-analyzer": "^13.0.0", "@semantic-release/github": "github:semantic-release/github", "@semantic-release/npm": "github:semantic-release/npm", - "@storybook/addon-a11y": "^8.3.3", - "@storybook/addon-actions": "^8.3.3", - "@storybook/addon-essentials": "^8.3.3", - "@storybook/addon-interactions": "^8.3.3", - "@storybook/addon-links": "^8.3.3", - "@storybook/addon-styling-webpack": "^1.0.0", - "@storybook/addon-themes": "^8.3.3", - "@storybook/addon-webpack5-compiler-babel": "^3.0.3", - "@storybook/manager-api": "^8.3.3", - "@storybook/mdx2-csf": "^1.1.0", - "@storybook/react": "^8.3.3", - "@storybook/react-webpack5": "^8.3.3", - "@storybook/test": "^8.3.3", - "@storybook/theming": "^8.3.3", + "@storybook/addon-essentials": "^8.4.7", + "@storybook/addon-interactions": "^8.4.7", + "@storybook/addon-themes": "^8.4.7", + "@storybook/blocks": "^8.4.7", + "@storybook/manager-api": "^8.4.7", + "@storybook/react": "^8.4.7", + "@storybook/react-vite": "^8.4.7", + "@storybook/test": "^8.4.7", + "@storybook/theming": "^8.4.7", "@tailwindcss/forms": "^0.5.9", - "@testing-library/react": "^14.3.1", + "@tailwindcss/postcss": "4.0.0-beta.5", + "@testing-library/react": "^16.1.0", "@types/jest": "^29.5.13", "@types/node": "^22.6.1", - "@types/react": "^18.3.9", + "@types/react": "^19.0.1", + "@types/react-dom": "^19.0.0", "@typescript-eslint/eslint-plugin": "^8.7.0", "@typescript-eslint/parser": "^8.7.0", - "autoprefixer": "^10.4.20", + "@vitejs/plugin-react": "^4.3.4", "babel-jest": "^27.5.1", "babel-loader": "^8.4.1", "conventional-changelog-conventionalcommits": "^5.0.0", @@ -78,16 +73,17 @@ "eslint-plugin-prettier": "^5.2.1", "eslint-plugin-react": "^7.36.1", "eslint-plugin-react-hooks": "^4.6.2", - "html-webpack-plugin": "^5.6.0", + "eslint-plugin-storybook": "^0.11.1", "identity-obj-proxy": "^3.0.0", "jest": "^29.7.0", "jest-environment-jsdom": "^29.7.0", "postcss": "^8.4.47", "postcss-loader": "^7.3.4", - "prettier": "3.3.3", + "prettier": "3.4.2", + "prettier-plugin-tailwindcss": "^0.6.9", "prop-types": "^15.8.1", - "react": "^18.3.1", - "react-dom": "^18.3.1", + "react": "^19.0.0", + "react-dom": "^19.0.0", "resize-observer-polyfill": "^1.5.1", "rollup": "^2.79.1", "rollup-plugin-dts": "^4.2.3", @@ -96,18 +92,22 @@ "rollup-plugin-preserve-directives": "^0.1.1", "rollup-plugin-typescript-paths": "^1.5.0", "semantic-release": "^24.1.1", - "storybook": "^8.3.3", - "storybook-source-link": "^4.0.1", + "storybook": "^8.4.7", "style-loader": "^3.3.4", - "tailwindcss": "^3.4.13", + "tailwindcss": "4.0.0-beta.6", "tslib": "^2.7.0", "typescript": "^4.9.5", - "webpack": "^5.94.0" + "vite": "^6.0.3" }, "peerDependencies": { "react": "^18.0.0", "react-dom": ">=16.6.0" }, + "pnpm": { + "overrides": { + "react-is": "^19.0.0" + } + }, "main": "dist/index.cjs", "module": "dist/index.js", "files": [ @@ -145,5 +145,10 @@ "@semantic-release/npm", "@semantic-release/github" ] + }, + "eslintConfig": { + "extends": [ + "plugin:storybook/recommended" + ] } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index eb65e635c..65926cc6b 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -4,34 +4,34 @@ settings: autoInstallPeers: true excludeLinksFromLockfile: false +overrides: + react-is: ^19.0.0 + importers: .: dependencies: '@floating-ui/react': specifier: ^0.19.2 - version: 0.19.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 0.19.2(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@headlessui/react': - specifier: 1.7.19 - version: 1.7.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@headlessui/tailwindcss': - specifier: ^0.2.1 - version: 0.2.1(tailwindcss@3.4.13) + specifier: 2.2.0 + version: 2.2.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) date-fns: specifier: ^3.6.0 version: 3.6.0 react-day-picker: specifier: ^8.10.1 - version: 8.10.1(date-fns@3.6.0)(react@18.3.1) - react-transition-state: - specifier: ^2.1.2 - version: 2.1.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 8.10.1(date-fns@3.6.0)(react@19.0.0) recharts: - specifier: ^2.13.3 - version: 2.13.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + specifier: ^2.15.0 + version: 2.15.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) tailwind-merge: - specifier: ^2.5.2 - version: 2.5.2 + specifier: ^2.5.5 + version: 2.5.5 + tailwind-variants: + specifier: ^0.3.0 + version: 0.3.0(tailwindcss@4.0.0-beta.6) devDependencies: '@babel/core': specifier: ^7.25.2 @@ -45,12 +45,9 @@ importers: '@babel/preset-typescript': specifier: ^7.24.7 version: 7.24.7(@babel/core@7.25.2) - '@chromatic-com/storybook': - specifier: ^1.9.0 - version: 1.9.0(react@18.3.1) '@mdx-js/react': specifier: ^2.3.0 - version: 2.3.0(react@18.3.1) + version: 2.3.0(react@19.0.0) '@rollup/plugin-commonjs': specifier: ^21.1.0 version: 21.1.0(rollup@2.79.1) @@ -72,54 +69,42 @@ importers: '@semantic-release/npm': specifier: github:semantic-release/npm version: https://codeload.github.com/semantic-release/npm/tar.gz/df347f287b51a6f772259259bd1461673dc7c2be(semantic-release@24.1.1(typescript@4.9.5)) - '@storybook/addon-a11y': - specifier: ^8.3.3 - version: 8.3.3(storybook@8.3.3) - '@storybook/addon-actions': - specifier: ^8.3.3 - version: 8.3.3(storybook@8.3.3) '@storybook/addon-essentials': - specifier: ^8.3.3 - version: 8.3.3(storybook@8.3.3)(webpack-sources@3.2.3) + specifier: ^8.4.7 + version: 8.4.7(@types/react@19.0.1)(storybook@8.4.7(prettier@3.4.2)) '@storybook/addon-interactions': - specifier: ^8.3.3 - version: 8.3.3(storybook@8.3.3) - '@storybook/addon-links': - specifier: ^8.3.3 - version: 8.3.3(react@18.3.1)(storybook@8.3.3) - '@storybook/addon-styling-webpack': - specifier: ^1.0.0 - version: 1.0.0(storybook@8.3.3)(webpack@5.94.0(esbuild@0.23.1)) + specifier: ^8.4.7 + version: 8.4.7(storybook@8.4.7(prettier@3.4.2)) '@storybook/addon-themes': - specifier: ^8.3.3 - version: 8.3.3(storybook@8.3.3) - '@storybook/addon-webpack5-compiler-babel': - specifier: ^3.0.3 - version: 3.0.3(webpack@5.94.0(esbuild@0.23.1)) + specifier: ^8.4.7 + version: 8.4.7(storybook@8.4.7(prettier@3.4.2)) + '@storybook/blocks': + specifier: ^8.4.7 + version: 8.4.7(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(storybook@8.4.7(prettier@3.4.2)) '@storybook/manager-api': - specifier: ^8.3.3 - version: 8.3.3(storybook@8.3.3) - '@storybook/mdx2-csf': - specifier: ^1.1.0 - version: 1.1.0 + specifier: ^8.4.7 + version: 8.4.7(storybook@8.4.7(prettier@3.4.2)) '@storybook/react': - specifier: ^8.3.3 - version: 8.3.3(@storybook/test@8.3.3(storybook@8.3.3))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.3.3)(typescript@4.9.5) - '@storybook/react-webpack5': - specifier: ^8.3.3 - version: 8.3.3(@storybook/test@8.3.3(storybook@8.3.3))(esbuild@0.23.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.3.3)(typescript@4.9.5) + specifier: ^8.4.7 + version: 8.4.7(@storybook/test@8.4.7(storybook@8.4.7(prettier@3.4.2)))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(storybook@8.4.7(prettier@3.4.2))(typescript@4.9.5) + '@storybook/react-vite': + specifier: ^8.4.7 + version: 8.4.7(@storybook/test@8.4.7(storybook@8.4.7(prettier@3.4.2)))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(rollup@2.79.1)(storybook@8.4.7(prettier@3.4.2))(typescript@4.9.5)(vite@6.0.3(@types/node@22.6.1)(jiti@2.4.1)(lightningcss@1.28.2)(terser@5.37.0)) '@storybook/test': - specifier: ^8.3.3 - version: 8.3.3(storybook@8.3.3) + specifier: ^8.4.7 + version: 8.4.7(storybook@8.4.7(prettier@3.4.2)) '@storybook/theming': - specifier: ^8.3.3 - version: 8.3.3(storybook@8.3.3) + specifier: ^8.4.7 + version: 8.4.7(storybook@8.4.7(prettier@3.4.2)) '@tailwindcss/forms': specifier: ^0.5.9 - version: 0.5.9(tailwindcss@3.4.13) + version: 0.5.9(tailwindcss@4.0.0-beta.6) + '@tailwindcss/postcss': + specifier: 4.0.0-beta.5 + version: 4.0.0-beta.5 '@testing-library/react': - specifier: ^14.3.1 - version: 14.3.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + specifier: ^16.1.0 + version: 16.1.0(@testing-library/dom@10.4.0)(@types/react-dom@19.0.2(@types/react@19.0.1))(@types/react@19.0.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@types/jest': specifier: ^29.5.13 version: 29.5.13 @@ -127,29 +112,32 @@ importers: specifier: ^22.6.1 version: 22.6.1 '@types/react': - specifier: ^18.3.9 - version: 18.3.9 + specifier: ^19.0.1 + version: 19.0.1 + '@types/react-dom': + specifier: ^19.0.0 + version: 19.0.2(@types/react@19.0.1) '@typescript-eslint/eslint-plugin': specifier: ^8.7.0 version: 8.7.0(@typescript-eslint/parser@8.7.0(eslint@8.57.1)(typescript@4.9.5))(eslint@8.57.1)(typescript@4.9.5) '@typescript-eslint/parser': specifier: ^8.7.0 version: 8.7.0(eslint@8.57.1)(typescript@4.9.5) - autoprefixer: - specifier: ^10.4.20 - version: 10.4.20(postcss@8.4.47) + '@vitejs/plugin-react': + specifier: ^4.3.4 + version: 4.3.4(vite@6.0.3(@types/node@22.6.1)(jiti@2.4.1)(lightningcss@1.28.2)(terser@5.37.0)) babel-jest: specifier: ^27.5.1 version: 27.5.1(@babel/core@7.25.2) babel-loader: specifier: ^8.4.1 - version: 8.4.1(@babel/core@7.25.2)(webpack@5.94.0(esbuild@0.23.1)) + version: 8.4.1(@babel/core@7.25.2)(webpack@5.97.1(esbuild@0.24.0)) conventional-changelog-conventionalcommits: specifier: ^5.0.0 version: 5.0.0 css-loader: specifier: ^6.11.0 - version: 6.11.0(webpack@5.94.0(esbuild@0.23.1)) + version: 6.11.0(webpack@5.97.1(esbuild@0.24.0)) eslint: specifier: ^8.57.1 version: 8.57.1 @@ -158,16 +146,16 @@ importers: version: 9.1.0(eslint@8.57.1) eslint-plugin-prettier: specifier: ^5.2.1 - version: 5.2.1(@types/eslint@8.40.2)(eslint-config-prettier@9.1.0(eslint@8.57.1))(eslint@8.57.1)(prettier@3.3.3) + version: 5.2.1(@types/eslint@9.6.1)(eslint-config-prettier@9.1.0(eslint@8.57.1))(eslint@8.57.1)(prettier@3.4.2) eslint-plugin-react: specifier: ^7.36.1 version: 7.36.1(eslint@8.57.1) eslint-plugin-react-hooks: specifier: ^4.6.2 version: 4.6.2(eslint@8.57.1) - html-webpack-plugin: - specifier: ^5.6.0 - version: 5.6.0(webpack@5.94.0(esbuild@0.23.1)) + eslint-plugin-storybook: + specifier: ^0.11.1 + version: 0.11.1(eslint@8.57.1)(typescript@4.9.5) identity-obj-proxy: specifier: ^3.0.0 version: 3.0.0 @@ -182,19 +170,22 @@ importers: version: 8.4.47 postcss-loader: specifier: ^7.3.4 - version: 7.3.4(postcss@8.4.47)(typescript@4.9.5)(webpack@5.94.0(esbuild@0.23.1)) + version: 7.3.4(postcss@8.4.47)(typescript@4.9.5)(webpack@5.97.1(esbuild@0.24.0)) prettier: - specifier: 3.3.3 - version: 3.3.3 + specifier: 3.4.2 + version: 3.4.2 + prettier-plugin-tailwindcss: + specifier: ^0.6.9 + version: 0.6.9(prettier@3.4.2) prop-types: specifier: ^15.8.1 version: 15.8.1 react: - specifier: ^18.3.1 - version: 18.3.1 + specifier: ^19.0.0 + version: 19.0.0 react-dom: - specifier: ^18.3.1 - version: 18.3.1(react@18.3.1) + specifier: ^19.0.0 + version: 19.0.0(react@19.0.0) resize-observer-polyfill: specifier: ^1.5.1 version: 1.5.1 @@ -220,31 +211,28 @@ importers: specifier: ^24.1.1 version: 24.1.1(typescript@4.9.5) storybook: - specifier: ^8.3.3 - version: 8.3.3 - storybook-source-link: - specifier: ^4.0.1 - version: 4.0.1(@storybook/addons@7.4.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + specifier: ^8.4.7 + version: 8.4.7(prettier@3.4.2) style-loader: specifier: ^3.3.4 - version: 3.3.4(webpack@5.94.0(esbuild@0.23.1)) + version: 3.3.4(webpack@5.97.1(esbuild@0.24.0)) tailwindcss: - specifier: ^3.4.13 - version: 3.4.13 + specifier: 4.0.0-beta.6 + version: 4.0.0-beta.6 tslib: specifier: ^2.7.0 version: 2.7.0 typescript: specifier: ^4.9.5 version: 4.9.5 - webpack: - specifier: ^5.94.0 - version: 5.94.0(esbuild@0.23.1) + vite: + specifier: ^6.0.3 + version: 6.0.3(@types/node@22.6.1)(jiti@2.4.1)(lightningcss@1.28.2)(terser@5.37.0) packages: - '@adobe/css-tools@4.4.0': - resolution: {integrity: sha512-Ff9+ksdQQB3rMncgqDK78uLznstjyfIf2Arnh22pW8kBpLs6rpKDwgnZT46hin5Hl1WzazzK64DOrhSwYpS7bQ==} + '@adobe/css-tools@4.4.1': + resolution: {integrity: sha512-12WGKBQzjUAI4ayyF4IAtfw2QR/IDoqk6jTddXDhtYTJF9ASmoE1zst7cVtP0aL/F1jUJL5r+JxKXKEgHNbEUQ==} '@alloc/quick-lru@5.2.0': resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==} @@ -258,18 +246,34 @@ packages: resolution: {integrity: sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==} engines: {node: '>=6.9.0'} + '@babel/code-frame@7.26.2': + resolution: {integrity: sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==} + engines: {node: '>=6.9.0'} + '@babel/compat-data@7.25.4': resolution: {integrity: sha512-+LGRog6RAsCJrrrg/IO6LGmpphNe5DiK30dGjCoxxeGv49B10/3XYGxPsAwrDlMFcFEvdAUavDT8r9k/hSyQqQ==} engines: {node: '>=6.9.0'} + '@babel/compat-data@7.26.3': + resolution: {integrity: sha512-nHIxvKPniQXpmQLb0vhY3VaFb3S0YrTAwpOWJZh1wn3oJPjJk9Asva204PsBdmAE8vpzfHudT8DB0scYvy9q0g==} + engines: {node: '>=6.9.0'} + '@babel/core@7.25.2': resolution: {integrity: sha512-BBt3opiCOxUr9euZ5/ro/Xv8/V7yJ5bjYMqG/C1YAo8MIKAnumZalCN+msbci3Pigy4lIQfPUpfMM27HMGaYEA==} engines: {node: '>=6.9.0'} + '@babel/core@7.26.0': + resolution: {integrity: sha512-i1SLeK+DzNnQ3LL/CswPCa/E5u4lh1k6IAEphON8F+cXt0t9euTshDru0q7/IqMa1PMPz5RnHuHscF8/ZJsStg==} + engines: {node: '>=6.9.0'} + '@babel/generator@7.25.6': resolution: {integrity: sha512-VPC82gr1seXOpkjAAKoLhP50vx4vGNlF4msF64dSFq1P8RfB+QAuJWGHPXXPc8QyfVWwwB/TNNU4+ayZmHNbZw==} engines: {node: '>=6.9.0'} + '@babel/generator@7.26.3': + resolution: {integrity: sha512-6FF/urZvD0sTeO7k6/B15pMLC4CHUv1426lzr3N01aHJTl046uCAh9LXW/fzeXXjPNCJ6iABW5XaWOsIZB93aQ==} + engines: {node: '>=6.9.0'} + '@babel/helper-annotate-as-pure@7.24.7': resolution: {integrity: sha512-BaDeOonYvhdKw+JoMVkAixAAJzG2jVPIwWoKBPdYuY9b452e2rPuI9QPYh3KpofZ3pW2akOmwZLOiOsHMiqRAg==} engines: {node: '>=6.9.0'} @@ -282,6 +286,10 @@ packages: resolution: {integrity: sha512-U2U5LsSaZ7TAt3cfaymQ8WHh0pxvdHoEk6HVpaexxixjyEquMh0L0YNJNM6CTGKMXV1iksi0iZkGw4AcFkPaaw==} engines: {node: '>=6.9.0'} + '@babel/helper-compilation-targets@7.25.9': + resolution: {integrity: sha512-j9Db8Suy6yV/VHa4qzrj9yZfZxhLWQdVnRlXxmKLYlhWUVB1sB2G5sxuWYXk/whHD9iW76PmNzxZ4UCnTQTVEQ==} + engines: {node: '>=6.9.0'} + '@babel/helper-create-class-features-plugin@7.25.4': resolution: {integrity: sha512-ro/bFs3/84MDgDmMwbcHgDa8/E6J3QKNTk4xJJnVeFtGE+tL0K26E3pNxhYz2b67fJpt7Aphw5XcploKXuCvCQ==} engines: {node: '>=6.9.0'} @@ -307,12 +315,22 @@ packages: resolution: {integrity: sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA==} engines: {node: '>=6.9.0'} + '@babel/helper-module-imports@7.25.9': + resolution: {integrity: sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw==} + engines: {node: '>=6.9.0'} + '@babel/helper-module-transforms@7.25.2': resolution: {integrity: sha512-BjyRAbix6j/wv83ftcVJmBt72QtHI56C7JXZoG2xATiLpmoC7dpd8WnkikExHDVPpi/3qCmO6WY1EaXOluiecQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 + '@babel/helper-module-transforms@7.26.0': + resolution: {integrity: sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + '@babel/helper-optimise-call-expression@7.24.7': resolution: {integrity: sha512-jKiTsW2xmWwxT1ixIdfXUZp+P5yURx2suzLZr5Hi64rURpDYdMW0pv+Uf17EYk2Rd428Lx4tLsnjGJzYKDM/6A==} engines: {node: '>=6.9.0'} @@ -321,6 +339,10 @@ packages: resolution: {integrity: sha512-FFWx5142D8h2Mgr/iPVGH5G7w6jDn4jUSpZTyDnQO0Yn7Ks2Kuz6Pci8H6MPCoUJegd/UZQ3tAvfLCxQSnWWwg==} engines: {node: '>=6.9.0'} + '@babel/helper-plugin-utils@7.25.9': + resolution: {integrity: sha512-kSMlyUVdWe25rEsRGviIgOWnoT/nfABVWlqt9N19/dIPWViAOW2s9wznP5tURbs/IDuNk4gPy3YdYRgH3uxhBw==} + engines: {node: '>=6.9.0'} + '@babel/helper-remap-async-to-generator@7.25.0': resolution: {integrity: sha512-NhavI2eWEIz/H9dbrG0TuOicDhNexze43i5z7lEqwYm0WEZVTwnPpA0EafUTP7+6/W79HWIP2cTe3Z5NiSTVpw==} engines: {node: '>=6.9.0'} @@ -345,14 +367,26 @@ packages: resolution: {integrity: sha512-pO9KhhRcuUyGnJWwyEgnRJTSIZHiT+vMD0kPeD+so0l7mxkMT19g3pjY9GTnHySck/hDzq+dtW/4VgnMkippsQ==} engines: {node: '>=6.9.0'} + '@babel/helper-string-parser@7.25.9': + resolution: {integrity: sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==} + engines: {node: '>=6.9.0'} + '@babel/helper-validator-identifier@7.24.7': resolution: {integrity: sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==} engines: {node: '>=6.9.0'} + '@babel/helper-validator-identifier@7.25.9': + resolution: {integrity: sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==} + engines: {node: '>=6.9.0'} + '@babel/helper-validator-option@7.24.8': resolution: {integrity: sha512-xb8t9tD1MHLungh/AIoWYN+gVHaB9kwlu8gffXGSt3FFEIT7RjS+xWbc2vUD1UTZdIpKj/ab3rdqJ7ufngyi2Q==} engines: {node: '>=6.9.0'} + '@babel/helper-validator-option@7.25.9': + resolution: {integrity: sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw==} + engines: {node: '>=6.9.0'} + '@babel/helper-wrap-function@7.25.0': resolution: {integrity: sha512-s6Q1ebqutSiZnEjaofc/UKDyC4SbzV5n5SrA2Gq8UawLycr3i04f1dX4OzoQVnexm6aOCh37SQNYlJ/8Ku+PMQ==} engines: {node: '>=6.9.0'} @@ -361,6 +395,10 @@ packages: resolution: {integrity: sha512-Xg0tn4HcfTijTwfDwYlvVCl43V6h4KyVVX2aEm4qdO/PC6L2YvzLHFdmxhoeSA3eslcE6+ZVXHgWwopXYLNq4Q==} engines: {node: '>=6.9.0'} + '@babel/helpers@7.26.0': + resolution: {integrity: sha512-tbhNuIxNcVb21pInl3ZSjksLCvgdZy9KwJ8brv993QtIVKJBBkYXz4q4ZbAv31GdnC+R90np23L5FbEBlthAEw==} + engines: {node: '>=6.9.0'} + '@babel/highlight@7.24.7': resolution: {integrity: sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==} engines: {node: '>=6.9.0'} @@ -370,6 +408,11 @@ packages: engines: {node: '>=6.0.0'} hasBin: true + '@babel/parser@7.26.3': + resolution: {integrity: sha512-WJ/CvmY8Mea8iDXo6a7RK2wbmJITT5fN3BEkRuFlxVyNx8jOKIIhmC4fSkTcPcf8JyavbBwIe6OpiCOBXt/IcA==} + engines: {node: '>=6.0.0'} + hasBin: true + '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.25.3': resolution: {integrity: sha512-wUrcsxZg6rqBXG05HG1FPYgsP6EvwF4WpBbxIpWIIYnH8wG0gzx3yZY3dtEHas4sTAOGkbTsc9EGPxwff8lRoA==} engines: {node: '>=6.9.0'} @@ -759,6 +802,18 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-react-jsx-self@7.25.9': + resolution: {integrity: sha512-y8quW6p0WHkEhmErnfe58r7x0A70uKphQm8Sp8cV7tjNQwK56sNVK0M73LK3WuYmsuyrftut4xAkjjgU0twaMg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-react-jsx-source@7.25.9': + resolution: {integrity: sha512-+iqjT8xmXhhYv4/uiYd8FNQsraMFZIfxVSqxxVSZP0WbbSAWvBXAul0m/zu+7Vv4O/3WtApy9pmaTMiumEZgfg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-react-jsx@7.25.2': resolution: {integrity: sha512-KQsqEAVBpU82NM/B/N9j9WOdphom1SZH3R+2V7INrQUH+V9EBFwZsEJl8eBIVeQE62FxJCc70jzEZwqU7RcVqA==} engines: {node: '>=6.9.0'} @@ -873,177 +928,181 @@ packages: resolution: {integrity: sha512-VBj9MYyDb9tuLq7yzqjgzt6Q+IBQLrGZfdjOekyEirZPHxXWoTSGUTMrpsfi58Up73d13NfYLv8HT9vmznjzhQ==} engines: {node: '>=6.9.0'} + '@babel/runtime@7.26.0': + resolution: {integrity: sha512-FDSOghenHTiToteC/QRlv2q3DhPZ/oOXTBoirfWNx1Cx3TMVcGWQtMMmQcSvb/JjpNeGzx8Pq/b4fKEJuWm1sw==} + engines: {node: '>=6.9.0'} + '@babel/template@7.25.0': resolution: {integrity: sha512-aOOgh1/5XzKvg1jvVz7AVrx2piJ2XBi227DHmbY6y+bM9H2FlN+IfecYu4Xl0cNiiVejlsCri89LUsbj8vJD9Q==} engines: {node: '>=6.9.0'} + '@babel/template@7.25.9': + resolution: {integrity: sha512-9DGttpmPvIxBb/2uwpVo3dqJ+O6RooAFOS+lB+xDqoE2PVCE8nfoHMdZLpfCQRLwvohzXISPZcgxt80xLfsuwg==} + engines: {node: '>=6.9.0'} + '@babel/traverse@7.25.6': resolution: {integrity: sha512-9Vrcx5ZW6UwK5tvqsj0nGpp/XzqthkT0dqIc9g1AdtygFToNtTF67XzYS//dm+SAK9cp3B9R4ZO/46p63SCjlQ==} engines: {node: '>=6.9.0'} + '@babel/traverse@7.26.4': + resolution: {integrity: sha512-fH+b7Y4p3yqvApJALCPJcwb0/XaOSgtK4pzV6WVjPR5GLFQBRI7pfoX2V2iM48NXvX07NUxxm1Vw98YjqTcU5w==} + engines: {node: '>=6.9.0'} + '@babel/types@7.25.6': resolution: {integrity: sha512-/l42B1qxpG6RdfYf343Uw1vmDjeNhneUXtzhojE7pDgfpEypmRhI6j1kr17XCVv4Cgl9HdAiQY2x0GwKm7rWCw==} engines: {node: '>=6.9.0'} - '@base2/pretty-print-object@1.0.1': - resolution: {integrity: sha512-4iri8i1AqYHJE2DstZYkyEprg6Pq6sKx3xn5FpySk9sNhH7qN2LLlHJCfDTZRILNwQNPD7mATWM0TBui7uC1pA==} + '@babel/types@7.26.3': + resolution: {integrity: sha512-vN5p+1kl59GVKMvTHt55NzzmYVxprfJD+ql7U9NFIfKCBkYE55LYtS+WtPlaYOyzydrKI8Nezd+aZextrd+FMA==} + engines: {node: '>=6.9.0'} '@bcoe/v8-coverage@0.2.3': resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} - '@chromatic-com/storybook@1.9.0': - resolution: {integrity: sha512-vYQ+TcfktEE3GHnLZXHCzXF/sN9dw+KivH8a5cmPyd9YtQs7fZtHrEgsIjWpYycXiweKMo1Lm1RZsjxk8DH3rA==} - engines: {node: '>=16.0.0', yarn: '>=1.22.18'} - '@colors/colors@1.5.0': resolution: {integrity: sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==} engines: {node: '>=0.1.90'} - '@emotion/use-insertion-effect-with-fallbacks@1.1.0': - resolution: {integrity: sha512-+wBOcIV5snwGgI2ya3u99D7/FJquOIniQT1IKyDsBmEgwvpxMNeS65Oib7OnE2d2aY+3BU4OiH+0Wchf8yk3Hw==} - peerDependencies: - react: '>=16.8.0' - - '@esbuild/aix-ppc64@0.23.1': - resolution: {integrity: sha512-6VhYk1diRqrhBAqpJEdjASR/+WVRtfjpqKuNw11cLiaWpAT/Uu+nokB+UJnevzy/P9C/ty6AOe0dwueMrGh/iQ==} + '@esbuild/aix-ppc64@0.24.0': + resolution: {integrity: sha512-WtKdFM7ls47zkKHFVzMz8opM7LkcsIp9amDUBIAWirg70RM71WRSjdILPsY5Uv1D42ZpUfaPILDlfactHgsRkw==} engines: {node: '>=18'} cpu: [ppc64] os: [aix] - '@esbuild/android-arm64@0.23.1': - resolution: {integrity: sha512-xw50ipykXcLstLeWH7WRdQuysJqejuAGPd30vd1i5zSyKK3WE+ijzHmLKxdiCMtH1pHz78rOg0BKSYOSB/2Khw==} + '@esbuild/android-arm64@0.24.0': + resolution: {integrity: sha512-Vsm497xFM7tTIPYK9bNTYJyF/lsP590Qc1WxJdlB6ljCbdZKU9SY8i7+Iin4kyhV/KV5J2rOKsBQbB77Ab7L/w==} engines: {node: '>=18'} cpu: [arm64] os: [android] - '@esbuild/android-arm@0.23.1': - resolution: {integrity: sha512-uz6/tEy2IFm9RYOyvKl88zdzZfwEfKZmnX9Cj1BHjeSGNuGLuMD1kR8y5bteYmwqKm1tj8m4cb/aKEorr6fHWQ==} + '@esbuild/android-arm@0.24.0': + resolution: {integrity: sha512-arAtTPo76fJ/ICkXWetLCc9EwEHKaeya4vMrReVlEIUCAUncH7M4bhMQ+M9Vf+FFOZJdTNMXNBrWwW+OXWpSew==} engines: {node: '>=18'} cpu: [arm] os: [android] - '@esbuild/android-x64@0.23.1': - resolution: {integrity: sha512-nlN9B69St9BwUoB+jkyU090bru8L0NA3yFvAd7k8dNsVH8bi9a8cUAUSEcEEgTp2z3dbEDGJGfP6VUnkQnlReg==} + '@esbuild/android-x64@0.24.0': + resolution: {integrity: sha512-t8GrvnFkiIY7pa7mMgJd7p8p8qqYIz1NYiAoKc75Zyv73L3DZW++oYMSHPRarcotTKuSs6m3hTOa5CKHaS02TQ==} engines: {node: '>=18'} cpu: [x64] os: [android] - '@esbuild/darwin-arm64@0.23.1': - resolution: {integrity: sha512-YsS2e3Wtgnw7Wq53XXBLcV6JhRsEq8hkfg91ESVadIrzr9wO6jJDMZnCQbHm1Guc5t/CdDiFSSfWP58FNuvT3Q==} + '@esbuild/darwin-arm64@0.24.0': + resolution: {integrity: sha512-CKyDpRbK1hXwv79soeTJNHb5EiG6ct3efd/FTPdzOWdbZZfGhpbcqIpiD0+vwmpu0wTIL97ZRPZu8vUt46nBSw==} engines: {node: '>=18'} cpu: [arm64] os: [darwin] - '@esbuild/darwin-x64@0.23.1': - resolution: {integrity: sha512-aClqdgTDVPSEGgoCS8QDG37Gu8yc9lTHNAQlsztQ6ENetKEO//b8y31MMu2ZaPbn4kVsIABzVLXYLhCGekGDqw==} + '@esbuild/darwin-x64@0.24.0': + resolution: {integrity: sha512-rgtz6flkVkh58od4PwTRqxbKH9cOjaXCMZgWD905JOzjFKW+7EiUObfd/Kav+A6Gyud6WZk9w+xu6QLytdi2OA==} engines: {node: '>=18'} cpu: [x64] os: [darwin] - '@esbuild/freebsd-arm64@0.23.1': - resolution: {integrity: sha512-h1k6yS8/pN/NHlMl5+v4XPfikhJulk4G+tKGFIOwURBSFzE8bixw1ebjluLOjfwtLqY0kewfjLSrO6tN2MgIhA==} + '@esbuild/freebsd-arm64@0.24.0': + resolution: {integrity: sha512-6Mtdq5nHggwfDNLAHkPlyLBpE5L6hwsuXZX8XNmHno9JuL2+bg2BX5tRkwjyfn6sKbxZTq68suOjgWqCicvPXA==} engines: {node: '>=18'} cpu: [arm64] os: [freebsd] - '@esbuild/freebsd-x64@0.23.1': - resolution: {integrity: sha512-lK1eJeyk1ZX8UklqFd/3A60UuZ/6UVfGT2LuGo3Wp4/z7eRTRYY+0xOu2kpClP+vMTi9wKOfXi2vjUpO1Ro76g==} + '@esbuild/freebsd-x64@0.24.0': + resolution: {integrity: sha512-D3H+xh3/zphoX8ck4S2RxKR6gHlHDXXzOf6f/9dbFt/NRBDIE33+cVa49Kil4WUjxMGW0ZIYBYtaGCa2+OsQwQ==} engines: {node: '>=18'} cpu: [x64] os: [freebsd] - '@esbuild/linux-arm64@0.23.1': - resolution: {integrity: sha512-/93bf2yxencYDnItMYV/v116zff6UyTjo4EtEQjUBeGiVpMmffDNUyD9UN2zV+V3LRV3/on4xdZ26NKzn6754g==} + '@esbuild/linux-arm64@0.24.0': + resolution: {integrity: sha512-TDijPXTOeE3eaMkRYpcy3LarIg13dS9wWHRdwYRnzlwlA370rNdZqbcp0WTyyV/k2zSxfko52+C7jU5F9Tfj1g==} engines: {node: '>=18'} cpu: [arm64] os: [linux] - '@esbuild/linux-arm@0.23.1': - resolution: {integrity: sha512-CXXkzgn+dXAPs3WBwE+Kvnrf4WECwBdfjfeYHpMeVxWE0EceB6vhWGShs6wi0IYEqMSIzdOF1XjQ/Mkm5d7ZdQ==} + '@esbuild/linux-arm@0.24.0': + resolution: {integrity: sha512-gJKIi2IjRo5G6Glxb8d3DzYXlxdEj2NlkixPsqePSZMhLudqPhtZ4BUrpIuTjJYXxvF9njql+vRjB2oaC9XpBw==} engines: {node: '>=18'} cpu: [arm] os: [linux] - '@esbuild/linux-ia32@0.23.1': - resolution: {integrity: sha512-VTN4EuOHwXEkXzX5nTvVY4s7E/Krz7COC8xkftbbKRYAl96vPiUssGkeMELQMOnLOJ8k3BY1+ZY52tttZnHcXQ==} + '@esbuild/linux-ia32@0.24.0': + resolution: {integrity: sha512-K40ip1LAcA0byL05TbCQ4yJ4swvnbzHscRmUilrmP9Am7//0UjPreh4lpYzvThT2Quw66MhjG//20mrufm40mA==} engines: {node: '>=18'} cpu: [ia32] os: [linux] - '@esbuild/linux-loong64@0.23.1': - resolution: {integrity: sha512-Vx09LzEoBa5zDnieH8LSMRToj7ir/Jeq0Gu6qJ/1GcBq9GkfoEAoXvLiW1U9J1qE/Y/Oyaq33w5p2ZWrNNHNEw==} + '@esbuild/linux-loong64@0.24.0': + resolution: {integrity: sha512-0mswrYP/9ai+CU0BzBfPMZ8RVm3RGAN/lmOMgW4aFUSOQBjA31UP8Mr6DDhWSuMwj7jaWOT0p0WoZ6jeHhrD7g==} engines: {node: '>=18'} cpu: [loong64] os: [linux] - '@esbuild/linux-mips64el@0.23.1': - resolution: {integrity: sha512-nrFzzMQ7W4WRLNUOU5dlWAqa6yVeI0P78WKGUo7lg2HShq/yx+UYkeNSE0SSfSure0SqgnsxPvmAUu/vu0E+3Q==} + '@esbuild/linux-mips64el@0.24.0': + resolution: {integrity: sha512-hIKvXm0/3w/5+RDtCJeXqMZGkI2s4oMUGj3/jM0QzhgIASWrGO5/RlzAzm5nNh/awHE0A19h/CvHQe6FaBNrRA==} engines: {node: '>=18'} cpu: [mips64el] os: [linux] - '@esbuild/linux-ppc64@0.23.1': - resolution: {integrity: sha512-dKN8fgVqd0vUIjxuJI6P/9SSSe/mB9rvA98CSH2sJnlZ/OCZWO1DJvxj8jvKTfYUdGfcq2dDxoKaC6bHuTlgcw==} + '@esbuild/linux-ppc64@0.24.0': + resolution: {integrity: sha512-HcZh5BNq0aC52UoocJxaKORfFODWXZxtBaaZNuN3PUX3MoDsChsZqopzi5UupRhPHSEHotoiptqikjN/B77mYQ==} engines: {node: '>=18'} cpu: [ppc64] os: [linux] - '@esbuild/linux-riscv64@0.23.1': - resolution: {integrity: sha512-5AV4Pzp80fhHL83JM6LoA6pTQVWgB1HovMBsLQ9OZWLDqVY8MVobBXNSmAJi//Csh6tcY7e7Lny2Hg1tElMjIA==} + '@esbuild/linux-riscv64@0.24.0': + resolution: {integrity: sha512-bEh7dMn/h3QxeR2KTy1DUszQjUrIHPZKyO6aN1X4BCnhfYhuQqedHaa5MxSQA/06j3GpiIlFGSsy1c7Gf9padw==} engines: {node: '>=18'} cpu: [riscv64] os: [linux] - '@esbuild/linux-s390x@0.23.1': - resolution: {integrity: sha512-9ygs73tuFCe6f6m/Tb+9LtYxWR4c9yg7zjt2cYkjDbDpV/xVn+68cQxMXCjUpYwEkze2RcU/rMnfIXNRFmSoDw==} + '@esbuild/linux-s390x@0.24.0': + resolution: {integrity: sha512-ZcQ6+qRkw1UcZGPyrCiHHkmBaj9SiCD8Oqd556HldP+QlpUIe2Wgn3ehQGVoPOvZvtHm8HPx+bH20c9pvbkX3g==} engines: {node: '>=18'} cpu: [s390x] os: [linux] - '@esbuild/linux-x64@0.23.1': - resolution: {integrity: sha512-EV6+ovTsEXCPAp58g2dD68LxoP/wK5pRvgy0J/HxPGB009omFPv3Yet0HiaqvrIrgPTBuC6wCH1LTOY91EO5hQ==} + '@esbuild/linux-x64@0.24.0': + resolution: {integrity: sha512-vbutsFqQ+foy3wSSbmjBXXIJ6PL3scghJoM8zCL142cGaZKAdCZHyf+Bpu/MmX9zT9Q0zFBVKb36Ma5Fzfa8xA==} engines: {node: '>=18'} cpu: [x64] os: [linux] - '@esbuild/netbsd-x64@0.23.1': - resolution: {integrity: sha512-aevEkCNu7KlPRpYLjwmdcuNz6bDFiE7Z8XC4CPqExjTvrHugh28QzUXVOZtiYghciKUacNktqxdpymplil1beA==} + '@esbuild/netbsd-x64@0.24.0': + resolution: {integrity: sha512-hjQ0R/ulkO8fCYFsG0FZoH+pWgTTDreqpqY7UnQntnaKv95uP5iW3+dChxnx7C3trQQU40S+OgWhUVwCjVFLvg==} engines: {node: '>=18'} cpu: [x64] os: [netbsd] - '@esbuild/openbsd-arm64@0.23.1': - resolution: {integrity: sha512-3x37szhLexNA4bXhLrCC/LImN/YtWis6WXr1VESlfVtVeoFJBRINPJ3f0a/6LV8zpikqoUg4hyXw0sFBt5Cr+Q==} + '@esbuild/openbsd-arm64@0.24.0': + resolution: {integrity: sha512-MD9uzzkPQbYehwcN583yx3Tu5M8EIoTD+tUgKF982WYL9Pf5rKy9ltgD0eUgs8pvKnmizxjXZyLt0z6DC3rRXg==} engines: {node: '>=18'} cpu: [arm64] os: [openbsd] - '@esbuild/openbsd-x64@0.23.1': - resolution: {integrity: sha512-aY2gMmKmPhxfU+0EdnN+XNtGbjfQgwZj43k8G3fyrDM/UdZww6xrWxmDkuz2eCZchqVeABjV5BpildOrUbBTqA==} + '@esbuild/openbsd-x64@0.24.0': + resolution: {integrity: sha512-4ir0aY1NGUhIC1hdoCzr1+5b43mw99uNwVzhIq1OY3QcEwPDO3B7WNXBzaKY5Nsf1+N11i1eOfFcq+D/gOS15Q==} engines: {node: '>=18'} cpu: [x64] os: [openbsd] - '@esbuild/sunos-x64@0.23.1': - resolution: {integrity: sha512-RBRT2gqEl0IKQABT4XTj78tpk9v7ehp+mazn2HbUeZl1YMdaGAQqhapjGTCe7uw7y0frDi4gS0uHzhvpFuI1sA==} + '@esbuild/sunos-x64@0.24.0': + resolution: {integrity: sha512-jVzdzsbM5xrotH+W5f1s+JtUy1UWgjU0Cf4wMvffTB8m6wP5/kx0KiaLHlbJO+dMgtxKV8RQ/JvtlFcdZ1zCPA==} engines: {node: '>=18'} cpu: [x64] os: [sunos] - '@esbuild/win32-arm64@0.23.1': - resolution: {integrity: sha512-4O+gPR5rEBe2FpKOVyiJ7wNDPA8nGzDuJ6gN4okSA1gEOYZ67N8JPk58tkWtdtPeLz7lBnY6I5L3jdsr3S+A6A==} + '@esbuild/win32-arm64@0.24.0': + resolution: {integrity: sha512-iKc8GAslzRpBytO2/aN3d2yb2z8XTVfNV0PjGlCxKo5SgWmNXx82I/Q3aG1tFfS+A2igVCY97TJ8tnYwpUWLCA==} engines: {node: '>=18'} cpu: [arm64] os: [win32] - '@esbuild/win32-ia32@0.23.1': - resolution: {integrity: sha512-BcaL0Vn6QwCwre3Y717nVHZbAa4UBEigzFm6VdsVdT/MbZ38xoj1X9HPkZhbmaBGUD1W8vxAfffbDe8bA6AKnQ==} + '@esbuild/win32-ia32@0.24.0': + resolution: {integrity: sha512-vQW36KZolfIudCcTnaTpmLQ24Ha1RjygBo39/aLkM2kmjkWmZGEJ5Gn9l5/7tzXA42QGIoWbICfg6KLLkIw6yw==} engines: {node: '>=18'} cpu: [ia32] os: [win32] - '@esbuild/win32-x64@0.23.1': - resolution: {integrity: sha512-BHpFFeslkWrXWyUPnbKm+xYYVYruCinGcftSBaa8zoF9hZO4BcSCFUvHVTtzpIY6YzUnYtuEhZ+C9iEXjxnasg==} + '@esbuild/win32-x64@0.24.0': + resolution: {integrity: sha512-7IAFPrjSQIJrGsK6flwg7NFmwBoSTyF3rl7If0hNUFQU4ilTsEPL6GuMuU9BfIWVVGuRnuIidkSMC+c0Otu8IA==} engines: {node: '>=18'} cpu: [x64] os: [win32] @@ -1078,27 +1137,33 @@ packages: react: '>=16.8.0' react-dom: '>=16.8.0' + '@floating-ui/react-dom@2.1.2': + resolution: {integrity: sha512-06okr5cgPzMNBy+Ycse2A6udMi4bqwW/zgBF/rwjcNqWkyr82Mcg8b0vjX8OJpZFy/FKjJmw6wV7t44kK6kW7A==} + peerDependencies: + react: '>=16.8.0' + react-dom: '>=16.8.0' + '@floating-ui/react@0.19.2': resolution: {integrity: sha512-JyNk4A0Ezirq8FlXECvRtQOX/iBe5Ize0W/pLkrZjfHW9GUV7Xnq6zm6fyZuQzaHHqEnVizmvlA96e1/CkZv+w==} peerDependencies: react: '>=16.8.0' react-dom: '>=16.8.0' + '@floating-ui/react@0.26.28': + resolution: {integrity: sha512-yORQuuAtVpiRjpMhdc0wJj06b9JFjrYF4qp96j++v2NBpbi6SEGF7donUJ3TMieerQ6qVkAv1tgr7L4r5roTqw==} + peerDependencies: + react: '>=16.8.0' + react-dom: '>=16.8.0' + '@floating-ui/utils@0.2.8': resolution: {integrity: sha512-kym7SodPp8/wloecOpcmSnWJsK7M0E5Wg8UcFA+uO4B9s5d0ywXOEro/8HM9x0rW+TljRzul/14UYz3TleT3ig==} - '@headlessui/react@1.7.19': - resolution: {integrity: sha512-Ll+8q3OlMJfJbAKM/+/Y2q6PPYbryqNTXDbryx7SXLIDamkF6iQFbriYHga0dY44PvDhvvBWCx1Xj4U5+G4hOw==} - engines: {node: '>=10'} - peerDependencies: - react: ^16 || ^17 || ^18 - react-dom: ^16 || ^17 || ^18 - - '@headlessui/tailwindcss@0.2.1': - resolution: {integrity: sha512-2+5+NZ+RzMyrVeCZOxdbvkUSssSxGvcUxphkIfSVLpRiKsj+/63T2TOL9dBYMXVfj/CGr6hMxSRInzXv6YY7sA==} + '@headlessui/react@2.2.0': + resolution: {integrity: sha512-RzCEg+LXsuI7mHiSomsu/gBJSjpupm6A1qIZ5sWjd7JhARNlMiSA4kKfJpCKwU9tE+zMRterhhrP74PvfJrpXQ==} engines: {node: '>=10'} peerDependencies: - tailwindcss: ^3.0 + react: ^18 || ^19 || ^19.0.0-rc + react-dom: ^18 || ^19 || ^19.0.0-rc '@humanwhocodes/config-array@0.13.0': resolution: {integrity: sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==} @@ -1113,10 +1178,6 @@ packages: resolution: {integrity: sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==} deprecated: Use @eslint/object-schema instead - '@isaacs/cliui@8.0.2': - resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} - engines: {node: '>=12'} - '@istanbuljs/load-nyc-config@1.1.0': resolution: {integrity: sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==} engines: {node: '>=8'} @@ -1199,6 +1260,15 @@ packages: resolution: {integrity: sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + '@joshwooding/vite-plugin-react-docgen-typescript@0.4.2': + resolution: {integrity: sha512-feQ+ntr+8hbVudnsTUapiMN9q8T90XA1d5jn9QzY09sNoj4iD9wi0PY1vsBFTda4ZjEaxRK9S81oarR2nj7TFQ==} + peerDependencies: + typescript: '>= 4.3.x' + vite: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 + peerDependenciesMeta: + typescript: + optional: true + '@jridgewell/gen-mapping@0.3.5': resolution: {integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==} engines: {node: '>=6.0.0'} @@ -1225,8 +1295,8 @@ packages: peerDependencies: react: '>=16' - '@mdx-js/react@3.0.1': - resolution: {integrity: sha512-9ZrPIU4MGf6et1m1ov3zKf+q9+deetI51zprKB1D/z3NOb+rUxxtEl3mCjW5wTGh6VhRdwPueh1oRzi6ezkA8A==} + '@mdx-js/react@3.1.0': + resolution: {integrity: sha512-QjHtSaoameoalGnKDT3FoIl4+9RwyTmo9ZJGBdLOks/YOiWHoRDI3PUwEzOE7kEmGcV3AFcp9K6dYu9rEuKLAQ==} peerDependencies: '@types/react': '>=16' react: '>=16' @@ -1291,10 +1361,6 @@ packages: '@octokit/types@13.5.1': resolution: {integrity: sha512-F41lGiWBKPIWPBgjSvaDXTTQptBujnozENAK3S//nj7xsFdYdirImKlBB/hTjr+Vii68SM+8jG3UJWRa6DMuDA==} - '@pkgjs/parseargs@0.11.0': - resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} - engines: {node: '>=14'} - '@pkgr/core@0.1.1': resolution: {integrity: sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA==} engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} @@ -1311,6 +1377,37 @@ packages: resolution: {integrity: sha512-c83qWb22rNRuB0UaVCI0uRPNRr8Z0FWnEIvT47jiHAmOIUHbBOg5XvV7pM5x+rKn9HRpjxquDbXYSXr3fAKFcw==} engines: {node: '>=12'} + '@react-aria/focus@3.19.0': + resolution: {integrity: sha512-hPF9EXoUQeQl1Y21/rbV2H4FdUR2v+4/I0/vB+8U3bT1CJ+1AFj1hc/rqx2DqEwDlEwOHN+E4+mRahQmlybq0A==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + + '@react-aria/interactions@3.22.5': + resolution: {integrity: sha512-kMwiAD9E0TQp+XNnOs13yVJghiy8ET8L0cbkeuTgNI96sOAp/63EJ1FSrDf17iD8sdjt41LafwX/dKXW9nCcLQ==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + + '@react-aria/ssr@3.9.7': + resolution: {integrity: sha512-GQygZaGlmYjmYM+tiNBA5C6acmiDWF52Nqd40bBp0Znk4M4hP+LTmI0lpI1BuKMw45T8RIhrAsICIfKwZvi2Gg==} + engines: {node: '>= 12'} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + + '@react-aria/utils@3.26.0': + resolution: {integrity: sha512-LkZouGSjjQ0rEqo4XJosS4L3YC/zzQkfRM3KoqK6fUOmUJ9t0jQ09WjiF+uOoG9u+p30AVg3TrZRUWmoTS+koQ==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + + '@react-stately/utils@3.10.5': + resolution: {integrity: sha512-iMQSGcpaecghDIh3mZEpZfoFH3ExBwTtuBEcvZ2XnGzCgQjeYXcMdIUwAfVQLXFTdHUHGF6Gu6/dFrYsCzySBQ==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + + '@react-types/shared@3.26.0': + resolution: {integrity: sha512-6FuPqvhmjjlpEDLTiYx29IJCbCNWPlsyO+ZUmCUXzhUv2ttShOXfw8CmeHWHftT/b2KweAWuzqSlfeXPR76jpw==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + '@rollup/plugin-commonjs@21.1.0': resolution: {integrity: sha512-6ZtHx3VHIp2ReNNDxHjuUml6ur+WcQ28N1yHgCQwsbNkQg2suhxGMDQGJOn/KuDxKtd1xuZP5xSTwBA4GQ8hbA==} engines: {node: '>= 8.0.0'} @@ -1349,6 +1446,110 @@ packages: peerDependencies: rollup: ^1.20.0||^2.0.0 + '@rollup/pluginutils@5.1.3': + resolution: {integrity: sha512-Pnsb6f32CD2W3uCaLZIzDmeFyQ2b8UWMFI7xtwUezpcGBDVDW6y9XgAWIlARiGAo6eNF5FK5aQTr0LFyNyqq5A==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true + + '@rollup/rollup-android-arm-eabi@4.28.1': + resolution: {integrity: sha512-2aZp8AES04KI2dy3Ss6/MDjXbwBzj+i0GqKtWXgw2/Ma6E4jJvujryO6gJAghIRVz7Vwr9Gtl/8na3nDUKpraQ==} + cpu: [arm] + os: [android] + + '@rollup/rollup-android-arm64@4.28.1': + resolution: {integrity: sha512-EbkK285O+1YMrg57xVA+Dp0tDBRB93/BZKph9XhMjezf6F4TpYjaUSuPt5J0fZXlSag0LmZAsTmdGGqPp4pQFA==} + cpu: [arm64] + os: [android] + + '@rollup/rollup-darwin-arm64@4.28.1': + resolution: {integrity: sha512-prduvrMKU6NzMq6nxzQw445zXgaDBbMQvmKSJaxpaZ5R1QDM8w+eGxo6Y/jhT/cLoCvnZI42oEqf9KQNYz1fqQ==} + cpu: [arm64] + os: [darwin] + + '@rollup/rollup-darwin-x64@4.28.1': + resolution: {integrity: sha512-WsvbOunsUk0wccO/TV4o7IKgloJ942hVFK1CLatwv6TJspcCZb9umQkPdvB7FihmdxgaKR5JyxDjWpCOp4uZlQ==} + cpu: [x64] + os: [darwin] + + '@rollup/rollup-freebsd-arm64@4.28.1': + resolution: {integrity: sha512-HTDPdY1caUcU4qK23FeeGxCdJF64cKkqajU0iBnTVxS8F7H/7BewvYoG+va1KPSL63kQ1PGNyiwKOfReavzvNA==} + cpu: [arm64] + os: [freebsd] + + '@rollup/rollup-freebsd-x64@4.28.1': + resolution: {integrity: sha512-m/uYasxkUevcFTeRSM9TeLyPe2QDuqtjkeoTpP9SW0XxUWfcYrGDMkO/m2tTw+4NMAF9P2fU3Mw4ahNvo7QmsQ==} + cpu: [x64] + os: [freebsd] + + '@rollup/rollup-linux-arm-gnueabihf@4.28.1': + resolution: {integrity: sha512-QAg11ZIt6mcmzpNE6JZBpKfJaKkqTm1A9+y9O+frdZJEuhQxiugM05gnCWiANHj4RmbgeVJpTdmKRmH/a+0QbA==} + cpu: [arm] + os: [linux] + + '@rollup/rollup-linux-arm-musleabihf@4.28.1': + resolution: {integrity: sha512-dRP9PEBfolq1dmMcFqbEPSd9VlRuVWEGSmbxVEfiq2cs2jlZAl0YNxFzAQS2OrQmsLBLAATDMb3Z6MFv5vOcXg==} + cpu: [arm] + os: [linux] + + '@rollup/rollup-linux-arm64-gnu@4.28.1': + resolution: {integrity: sha512-uGr8khxO+CKT4XU8ZUH1TTEUtlktK6Kgtv0+6bIFSeiSlnGJHG1tSFSjm41uQ9sAO/5ULx9mWOz70jYLyv1QkA==} + cpu: [arm64] + os: [linux] + + '@rollup/rollup-linux-arm64-musl@4.28.1': + resolution: {integrity: sha512-QF54q8MYGAqMLrX2t7tNpi01nvq5RI59UBNx+3+37zoKX5KViPo/gk2QLhsuqok05sSCRluj0D00LzCwBikb0A==} + cpu: [arm64] + os: [linux] + + '@rollup/rollup-linux-loongarch64-gnu@4.28.1': + resolution: {integrity: sha512-vPul4uodvWvLhRco2w0GcyZcdyBfpfDRgNKU+p35AWEbJ/HPs1tOUrkSueVbBS0RQHAf/A+nNtDpvw95PeVKOA==} + cpu: [loong64] + os: [linux] + + '@rollup/rollup-linux-powerpc64le-gnu@4.28.1': + resolution: {integrity: sha512-pTnTdBuC2+pt1Rmm2SV7JWRqzhYpEILML4PKODqLz+C7Ou2apEV52h19CR7es+u04KlqplggmN9sqZlekg3R1A==} + cpu: [ppc64] + os: [linux] + + '@rollup/rollup-linux-riscv64-gnu@4.28.1': + resolution: {integrity: sha512-vWXy1Nfg7TPBSuAncfInmAI/WZDd5vOklyLJDdIRKABcZWojNDY0NJwruY2AcnCLnRJKSaBgf/GiJfauu8cQZA==} + cpu: [riscv64] + os: [linux] + + '@rollup/rollup-linux-s390x-gnu@4.28.1': + resolution: {integrity: sha512-/yqC2Y53oZjb0yz8PVuGOQQNOTwxcizudunl/tFs1aLvObTclTwZ0JhXF2XcPT/zuaymemCDSuuUPXJJyqeDOg==} + cpu: [s390x] + os: [linux] + + '@rollup/rollup-linux-x64-gnu@4.28.1': + resolution: {integrity: sha512-fzgeABz7rrAlKYB0y2kSEiURrI0691CSL0+KXwKwhxvj92VULEDQLpBYLHpF49MSiPG4sq5CK3qHMnb9tlCjBw==} + cpu: [x64] + os: [linux] + + '@rollup/rollup-linux-x64-musl@4.28.1': + resolution: {integrity: sha512-xQTDVzSGiMlSshpJCtudbWyRfLaNiVPXt1WgdWTwWz9n0U12cI2ZVtWe/Jgwyv/6wjL7b66uu61Vg0POWVfz4g==} + cpu: [x64] + os: [linux] + + '@rollup/rollup-win32-arm64-msvc@4.28.1': + resolution: {integrity: sha512-wSXmDRVupJstFP7elGMgv+2HqXelQhuNf+IS4V+nUpNVi/GUiBgDmfwD0UGN3pcAnWsgKG3I52wMOBnk1VHr/A==} + cpu: [arm64] + os: [win32] + + '@rollup/rollup-win32-ia32-msvc@4.28.1': + resolution: {integrity: sha512-ZkyTJ/9vkgrE/Rk9vhMXhf8l9D+eAhbAVbsGsXKy2ohmJaWg0LPQLnIxRdRp/bKyr8tXuPlXhIoGlEB5XpJnGA==} + cpu: [ia32] + os: [win32] + + '@rollup/rollup-win32-x64-msvc@4.28.1': + resolution: {integrity: sha512-ZvK2jBafvttJjoIdKm/Q/Bh7IJ1Ose9IBOwpOXcOvW3ikGTQGmKDgxTC6oCAzW6PynbkKP8+um1du81XJHZ0JA==} + cpu: [x64] + os: [win32] + '@sec-ant/readable-stream@0.4.1': resolution: {integrity: sha512-831qok9r2t8AlxLko40y2ebgSDhenenCatLVeW/uBtnHPyhHOvG0C7TvfgecV+wHzIm5KUICgzmVpWS+IMEAeg==} @@ -1415,245 +1616,154 @@ packages: '@sinonjs/fake-timers@10.3.0': resolution: {integrity: sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==} - '@storybook/addon-a11y@8.3.3': - resolution: {integrity: sha512-TiCbNfKJOBD2b8mMqHOii8ntdt0V4+ifAgzmGku+F1hdf2EhEw1nL6CHpvnx/GBXoGeK4mrPJIKKoPNp+zz0dw==} - peerDependencies: - storybook: ^8.3.3 - - '@storybook/addon-actions@8.3.3': - resolution: {integrity: sha512-cbpksmld7iADwDGXgojZ4r8LGI3YA3NP68duAHg2n1dtnx1oUaFK5wd6dbNuz7GdjyhIOIy3OKU1dAuylYNGOQ==} - peerDependencies: - storybook: ^8.3.3 - - '@storybook/addon-backgrounds@8.3.3': - resolution: {integrity: sha512-aX0OIrtjIB7UgSaiv20SFkfC1iWwJIGMPsPSJ5ZPhXIIOWIEBtSujh8YXwjDEXSC4DOHalmeT4bitRRe5KrVKA==} - peerDependencies: - storybook: ^8.3.3 - - '@storybook/addon-controls@8.3.3': - resolution: {integrity: sha512-78xRtVpY7eX/Lti00JLgwYCBRB6ZcvzY3SWk0uQjEqcTnQGoQkVg2L7oWFDlDoA1LBY18P5ei2vu8MYT9GXU4g==} - peerDependencies: - storybook: ^8.3.3 - - '@storybook/addon-docs@8.3.3': - resolution: {integrity: sha512-REUandqq1RnMNOhsocRwx5q2fdlBAYPTDFlKASYfEn4Ln5NgbQRGxOAWl7yXAAFzbDmUDU7K20hkauecF0tyMw==} + '@storybook/addon-actions@8.4.7': + resolution: {integrity: sha512-mjtD5JxcPuW74T6h7nqMxWTvDneFtokg88p6kQ5OnC1M259iAXb//yiSZgu/quunMHPCXSiqn4FNOSgASTSbsA==} peerDependencies: - storybook: ^8.3.3 + storybook: ^8.4.7 - '@storybook/addon-essentials@8.3.3': - resolution: {integrity: sha512-E/uXoUYcg8ulG3lVbsEKb4v5hnMeGkq9YJqiZYKgVK7iRFa6p4HeVB1wU1adnm7RgjWvh+p0vQRo4KL2CTNXqw==} + '@storybook/addon-backgrounds@8.4.7': + resolution: {integrity: sha512-I4/aErqtFiazcoWyKafOAm3bLpxTj6eQuH/woSbk1Yx+EzN+Dbrgx1Updy8//bsNtKkcrXETITreqHC+a57DHQ==} peerDependencies: - storybook: ^8.3.3 + storybook: ^8.4.7 - '@storybook/addon-highlight@8.3.3': - resolution: {integrity: sha512-MB084xJM66rLU+iFFk34kjLUiAWzDiy6Kz4uZRa1CnNqEK0sdI8HaoQGgOxTIa2xgJor05/8/mlYlMkP/0INsQ==} + '@storybook/addon-controls@8.4.7': + resolution: {integrity: sha512-377uo5IsJgXLnQLJixa47+11V+7Wn9KcDEw+96aGCBCfLbWNH8S08tJHHnSu+jXg9zoqCAC23MetntVp6LetHA==} peerDependencies: - storybook: ^8.3.3 + storybook: ^8.4.7 - '@storybook/addon-interactions@8.3.3': - resolution: {integrity: sha512-3w5tpCGYdF33wF44xEhTS3Zmcwd6nITtwy5q+PJvHCJAm3fpjzL3xrjtlHKDvXNwYacJPRCbWKn2QwtxZIdN0g==} + '@storybook/addon-docs@8.4.7': + resolution: {integrity: sha512-NwWaiTDT5puCBSUOVuf6ME7Zsbwz7Y79WF5tMZBx/sLQ60vpmJVQsap6NSjvK1Ravhc21EsIXqemAcBjAWu80w==} peerDependencies: - storybook: ^8.3.3 + storybook: ^8.4.7 - '@storybook/addon-links@8.3.3': - resolution: {integrity: sha512-rz4KEbzr1ca4zZEZwbOnhKiaEsokCl1KkngxT/C1YIkpW908j/kg2nnIb5MrtlAW1nirXguAR74t6CGntvdU9w==} + '@storybook/addon-essentials@8.4.7': + resolution: {integrity: sha512-+BtZHCBrYtQKILtejKxh0CDRGIgTl9PumfBOKRaihYb4FX1IjSAxoV/oo/IfEjlkF5f87vouShWsRa8EUauFDw==} peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta - storybook: ^8.3.3 - peerDependenciesMeta: - react: - optional: true + storybook: ^8.4.7 - '@storybook/addon-measure@8.3.3': - resolution: {integrity: sha512-R20Z83gnxDRrocES344dw1Of/zDhe3XHSM6TLq80UQTJ9PhnMI+wYHQlK9DsdP3KiRkI+pQA6GCOp0s2ZRy5dg==} + '@storybook/addon-highlight@8.4.7': + resolution: {integrity: sha512-whQIDBd3PfVwcUCrRXvCUHWClXe9mQ7XkTPCdPo4B/tZ6Z9c6zD8JUHT76ddyHivixFLowMnA8PxMU6kCMAiNw==} peerDependencies: - storybook: ^8.3.3 + storybook: ^8.4.7 - '@storybook/addon-outline@8.3.3': - resolution: {integrity: sha512-OwqYfieNuqSqWNtUZLu3UmsfQNnwA2UaSMBZyeC2Dte9Jd59PPYggcWmH+b0S6OTbYXWNAUK5U6WdK+X9Ypzdw==} + '@storybook/addon-interactions@8.4.7': + resolution: {integrity: sha512-fnufT3ym8ht3HHUIRVXAH47iOJW/QOb0VSM+j269gDuvyDcY03D1civCu1v+eZLGaXPKJ8vtjr0L8zKQ/4P0JQ==} peerDependencies: - storybook: ^8.3.3 + storybook: ^8.4.7 - '@storybook/addon-styling-webpack@1.0.0': - resolution: {integrity: sha512-jo1kzn7pi+NA+LZxrWoRvW6w7dXIKY/BjTG80XX2uU92lIKT+X1k/9vYk/0KPVK3Bsf4tO6ToAuqIRyOk7MHtg==} + '@storybook/addon-measure@8.4.7': + resolution: {integrity: sha512-QfvqYWDSI5F68mKvafEmZic3SMiK7zZM8VA0kTXx55hF/+vx61Mm0HccApUT96xCXIgmwQwDvn9gS4TkX81Dmw==} peerDependencies: - webpack: ^5.0.0 + storybook: ^8.4.7 - '@storybook/addon-themes@8.3.3': - resolution: {integrity: sha512-TNXBKVFjRVy8MWNV0e4+6i52vpK/kseJGcCrTi1qKxkhztwWJx8p6gH/WtaPZykxnnn++CTyYz4Xt1on23CetQ==} + '@storybook/addon-outline@8.4.7': + resolution: {integrity: sha512-6LYRqUZxSodmAIl8icr585Oi8pmzbZ90aloZJIpve+dBAzo7ydYrSQxxoQEVltXbKf3VeVcrs64ouAYqjisMYA==} peerDependencies: - storybook: ^8.3.3 + storybook: ^8.4.7 - '@storybook/addon-toolbars@8.3.3': - resolution: {integrity: sha512-4WyiVqDm4hlJdENIVQg9pLNLdfhnNKa+haerYYSzTVjzYrUx0X6Bxafshq+sud6aRtSYU14abwP56lfW8hgTlA==} + '@storybook/addon-themes@8.4.7': + resolution: {integrity: sha512-MZa3eWTz0b3BQvF71WqLqvEYzDtbMhQx1IIluWBMMGzJ4sWBzLX85LoNMUlHsNd4EhEmAZ1xQQFIJpDWTBx0nQ==} peerDependencies: - storybook: ^8.3.3 + storybook: ^8.4.7 - '@storybook/addon-viewport@8.3.3': - resolution: {integrity: sha512-2S+UpbKAL+z1ppzUCkixjaem2UDMkfmm/kyJ1wm3A/ofGLYi4fjMSKNRckk+7NdolXGQJjBo0RcaotUTxFIFwQ==} + '@storybook/addon-toolbars@8.4.7': + resolution: {integrity: sha512-OSfdv5UZs+NdGB+nZmbafGUWimiweJ/56gShlw8Neo/4jOJl1R3rnRqqY7MYx8E4GwoX+i3GF5C3iWFNQqlDcw==} peerDependencies: - storybook: ^8.3.3 + storybook: ^8.4.7 - '@storybook/addon-webpack5-compiler-babel@3.0.3': - resolution: {integrity: sha512-rVQTTw+oxJltbVKaejIWSHwVKOBJs3au21f/pYXhV0aiNgNhxEa3vr79t/j0j8ox8uJtzM8XYOb7FlkvGfHlwQ==} - engines: {node: '>=18'} - - '@storybook/addons@7.4.6': - resolution: {integrity: sha512-c+4awrtwNlJayFdgLkEXa5H2Gj+KNlxuN+Z5oDAdZBLqXI8g0gn7eYO2F/eCSIDWdd/+zcU2uq57XPFKc8veHQ==} + '@storybook/addon-viewport@8.4.7': + resolution: {integrity: sha512-hvczh/jjuXXcOogih09a663sRDDSATXwbE866al1DXgbDFraYD/LxX/QDb38W9hdjU9+Qhx8VFIcNWoMQns5HQ==} peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + storybook: ^8.4.7 - '@storybook/blocks@8.3.3': - resolution: {integrity: sha512-8Vsvxqstop3xfbsx3Dn1nEjyxvQUcOYd8vpxyp2YumxYO8FlXIRuYL6HAkYbcX8JexsKvCZYxor52D2vUGIKZg==} + '@storybook/blocks@8.4.7': + resolution: {integrity: sha512-+QH7+JwXXXIyP3fRCxz/7E2VZepAanXJM7G8nbR3wWsqWgrRp4Wra6MvybxAYCxU7aNfJX5c+RW84SNikFpcIA==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta - storybook: ^8.3.3 + storybook: ^8.4.7 peerDependenciesMeta: react: optional: true react-dom: optional: true - '@storybook/builder-webpack5@8.3.3': - resolution: {integrity: sha512-4zBvHZoKjm+ZgZ6CpGEFlgGMfoSbHiKdwFLG+t/hV6zKDN/tmBC65KCjZ6pq/RUukvDJyfFLOiOZpc8JyTVFZw==} + '@storybook/builder-vite@8.4.7': + resolution: {integrity: sha512-LovyXG5VM0w7CovI/k56ZZyWCveQFVDl0m7WwetpmMh2mmFJ+uPQ35BBsgTvTfc8RHi+9Q3F58qP1MQSByXi9g==} peerDependencies: - storybook: ^8.3.3 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true + storybook: ^8.4.7 + vite: ^4.0.0 || ^5.0.0 || ^6.0.0 - '@storybook/channels@7.4.6': - resolution: {integrity: sha512-yPv/sfo2c18fM3fvG0i1xse63vG8l33Al/OU0k/dtovltPu001/HVa1QgBgsb/QrEfZtvGjGhmtdVeYb39fv3A==} - - '@storybook/channels@7.6.20': - resolution: {integrity: sha512-4hkgPSH6bJclB2OvLnkZOGZW1WptJs09mhQ6j6qLjgBZzL/ZdD6priWSd7iXrmPiN5TzUobkG4P4Dp7FjkiO7A==} - - '@storybook/client-logger@7.4.6': - resolution: {integrity: sha512-XDw31ZziU//86PKuMRnmc+L/G0VopaGKENQOGEpvAXCU9IZASwGKlKAtcyosjrpi+ZiUXlMgUXCpXM7x3b1Ehw==} - - '@storybook/client-logger@7.6.20': - resolution: {integrity: sha512-NwG0VIJQCmKrSaN5GBDFyQgTAHLNishUPLW1NrzqTDNAhfZUoef64rPQlinbopa0H4OXmlB+QxbQIb3ubeXmSQ==} - - '@storybook/components@8.3.3': - resolution: {integrity: sha512-i2JYtesFGkdu+Hwuj+o9fLuO3yo+LPT1/8o5xBVYtEqsgDtEAyuRUWjSz8d8NPtzloGPOv5kvR6MokWDfbeMfw==} + '@storybook/components@8.4.7': + resolution: {integrity: sha512-uyJIcoyeMWKAvjrG9tJBUCKxr2WZk+PomgrgrUwejkIfXMO76i6jw9BwLa0NZjYdlthDv30r9FfbYZyeNPmF0g==} peerDependencies: - storybook: ^8.3.3 + storybook: ^8.2.0 || ^8.3.0-0 || ^8.4.0-0 || ^8.5.0-0 || ^8.6.0-0 - '@storybook/core-events@7.4.6': - resolution: {integrity: sha512-r5vrE+32lwrJh1NGFr1a0mWjvxo7q8FXYShylcwRWpacmL5NTtLkrXOoJSeGvJ4yKNYkvxQFtOPId4lzDxa32w==} - - '@storybook/core-events@7.6.20': - resolution: {integrity: sha512-tlVDuVbDiNkvPDFAu+0ou3xBBYbx9zUURQz4G9fAq0ScgBOs/bpzcRrFb4mLpemUViBAd47tfZKdH4MAX45KVQ==} - - '@storybook/core-webpack@8.3.3': - resolution: {integrity: sha512-GKEpGGe8gzf+2BCZ4PeUb5JBcLPF3TS5fRrm8Zp5+iOc8Y51xfys2ifL3KqqZR0KLig9LcLlKMnFlSXPb4a7Cw==} + '@storybook/core@8.4.7': + resolution: {integrity: sha512-7Z8Z0A+1YnhrrSXoKKwFFI4gnsLbWzr8fnDCU6+6HlDukFYh8GHRcZ9zKfqmy6U3hw2h8H5DrHsxWfyaYUUOoA==} peerDependencies: - storybook: ^8.3.3 - - '@storybook/core@8.3.3': - resolution: {integrity: sha512-pmf2bP3fzh45e56gqOuBT8sDX05hGdUKIZ/hcI84d5xmd6MeHiPW8th2v946wCHcxHzxib2/UU9vQUh+mB4VNw==} + prettier: ^2 || ^3 + peerDependenciesMeta: + prettier: + optional: true - '@storybook/csf-plugin@8.3.3': - resolution: {integrity: sha512-7AD7ojpXr3THqpTcEI4K7oKUfSwt1hummgL/cASuQvEPOwAZCVZl2gpGtKxcXhtJXTkn3GMCAvlYMoe7O/1YWw==} + '@storybook/csf-plugin@8.4.7': + resolution: {integrity: sha512-Fgogplu4HImgC+AYDcdGm1rmL6OR1rVdNX1Be9C/NEXwOCpbbBwi0BxTf/2ZxHRk9fCeaPEcOdP5S8QHfltc1g==} peerDependencies: - storybook: ^8.3.3 + storybook: ^8.4.7 - '@storybook/csf@0.1.11': - resolution: {integrity: sha512-dHYFQH3mA+EtnCkHXzicbLgsvzYjcDJ1JWsogbItZogkPHgSJM/Wr71uMkcvw8v9mmCyP4NpXJuu6bPoVsOnzg==} + '@storybook/csf@0.1.12': + resolution: {integrity: sha512-9/exVhabisyIVL0VxTCxo01Tdm8wefIXKXfltAPTSr8cbLn5JAxGQ6QV3mjdecLGEOucfoVhAKtJfVHxEK1iqw==} '@storybook/global@5.0.0': resolution: {integrity: sha512-FcOqPAXACP0I3oJ/ws6/rrPT9WGhu915Cg8D02a9YxLo0DE9zI+a9A5gRGvmQ09fiWPukqI8ZAEoQEdWUKMQdQ==} - '@storybook/icons@1.2.12': - resolution: {integrity: sha512-UxgyK5W3/UV4VrI3dl6ajGfHM4aOqMAkFLWe2KibeQudLf6NJpDrDMSHwZj+3iKC4jFU7dkKbbtH2h/al4sW3Q==} + '@storybook/icons@1.3.0': + resolution: {integrity: sha512-Nz/UzeYQdUZUhacrPyfkiiysSjydyjgg/p0P9HxB4p/WaJUUjMAcaoaLgy3EXx61zZJ3iD36WPuDkZs5QYrA0A==} engines: {node: '>=14.0.0'} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - - '@storybook/instrumenter@8.3.3': - resolution: {integrity: sha512-ZiODB9EwCQkl4PBxGJjBHXRTLxcNs68ZZvR+xeMr0eMFzzlJG+trXoX5kK95oA4BFhGN+3uM0Zl3MoRjBtJTNA==} - peerDependencies: - storybook: ^8.3.3 - - '@storybook/manager-api@7.4.6': - resolution: {integrity: sha512-inrm3DIbCp8wjXSN/wK6e6i2ysQ/IEmtC7IN0OJ7vdrp+USCooPT448SQTUmVctUGCFmOU3fxXByq8g77oIi7w==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - - '@storybook/manager-api@8.3.3': - resolution: {integrity: sha512-Na4U+McOeVUJAR6qzJfQ6y2Qt0kUgEDUriNoAn+curpoKPTmIaZ79RAXBzIqBl31VyQKknKpZbozoRGf861YaQ==} - peerDependencies: - storybook: ^8.3.3 - - '@storybook/mdx2-csf@1.1.0': - resolution: {integrity: sha512-TXJJd5RAKakWx4BtpwvSNdgTDkKM6RkXU8GK34S/LhidQ5Pjz3wcnqb0TxEkfhK/ztbP8nKHqXFwLfa2CYkvQw==} - - '@storybook/node-logger@8.3.3': - resolution: {integrity: sha512-gk0v63VgyxV6CqVLoSc4TuB8docsNcnSftRoZuxCTPhX++d8gZvpSSgRoCB6p2k9DE9yVE3eQER6uGUgopXhMg==} - peerDependencies: - storybook: ^8.3.3 - - '@storybook/preset-react-webpack@8.3.3': - resolution: {integrity: sha512-uvGtGQ2BDzmHCDl0jCvoAzbD7AWPf9nU7zQsgvpCgs7BiHQVXq40ZU+aFhU74K/WLvdArMOoyZPU70dJGzvdKg==} - engines: {node: '>=18.0.0'} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta - storybook: ^8.3.3 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - '@storybook/preview-api@7.4.6': - resolution: {integrity: sha512-byUS/Opt3ytWD4cWz3sNEKw5Yks8MkQgRN+GDSyIomaEAQkLAM0rchPC0MYjwCeUSecV7IIQweNX5RbV4a34BA==} - - '@storybook/preview-api@7.6.20': - resolution: {integrity: sha512-3ic2m9LDZEPwZk02wIhNc3n3rNvbi7VDKn52hDXfAxnL5EYm7yDICAkaWcVaTfblru2zn0EDJt7ROpthscTW5w==} + '@storybook/instrumenter@8.4.7': + resolution: {integrity: sha512-k6NSD3jaRCCHAFtqXZ7tw8jAzD/yTEWXGya+REgZqq5RCkmJ+9S4Ytp/6OhQMPtPFX23gAuJJzTQVLcCr+gjRg==} + peerDependencies: + storybook: ^8.4.7 - '@storybook/preview-api@8.3.3': - resolution: {integrity: sha512-GP2QlaF3BBQGAyo248N7549YkTQjCentsc1hUvqPnFWU4xfjkejbnFk8yLaIw0VbYbL7jfd7npBtjZ+6AnphMQ==} + '@storybook/manager-api@8.4.7': + resolution: {integrity: sha512-ELqemTviCxAsZ5tqUz39sDmQkvhVAvAgiplYy9Uf15kO0SP2+HKsCMzlrm2ue2FfkUNyqbDayCPPCB0Cdn/mpQ==} peerDependencies: - storybook: ^8.3.3 + storybook: ^8.2.0 || ^8.3.0-0 || ^8.4.0-0 || ^8.5.0-0 || ^8.6.0-0 - '@storybook/react-docgen-typescript-plugin@1.0.6--canary.9.0c3f3b7.0': - resolution: {integrity: sha512-KUqXC3oa9JuQ0kZJLBhVdS4lOneKTOopnNBK4tUAgoxWQ3u/IjzdueZjFr7gyBrXMoU6duutk3RQR9u8ZpYJ4Q==} + '@storybook/preview-api@8.4.7': + resolution: {integrity: sha512-0QVQwHw+OyZGHAJEXo6Knx+6/4er7n2rTDE5RYJ9F2E2Lg42E19pfdLlq2Jhoods2Xrclo3wj6GWR//Ahi39Eg==} peerDependencies: - typescript: '>= 4.x' - webpack: '>= 4' + storybook: ^8.2.0 || ^8.3.0-0 || ^8.4.0-0 || ^8.5.0-0 || ^8.6.0-0 - '@storybook/react-dom-shim@8.3.3': - resolution: {integrity: sha512-0dPC9K7+K5+X/bt3GwYmh+pCpisUyKVjWsI+PkzqGnWqaXFakzFakjswowIAIO1rf7wYZR591x3ehUAyL2bJiQ==} + '@storybook/react-dom-shim@8.4.7': + resolution: {integrity: sha512-6bkG2jvKTmWrmVzCgwpTxwIugd7Lu+2btsLAqhQSzDyIj2/uhMNp8xIMr/NBDtLgq3nomt9gefNa9xxLwk/OMg==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta - storybook: ^8.3.3 + storybook: ^8.4.7 - '@storybook/react-webpack5@8.3.3': - resolution: {integrity: sha512-ikD48XvgmP/kegnjJ9+RoiKGF9IdVjOc1MFUnnIU1TNLwCsqkwf5jGcOvFTAzK8Phu/ykwUBWT41UqBptkrHEQ==} + '@storybook/react-vite@8.4.7': + resolution: {integrity: sha512-iiY9iLdMXhDnilCEVxU6vQsN72pW3miaf0WSenOZRyZv3HdbpgOxI0qapOS0KCyRUnX9vTlmrSPTMchY4cAeOg==} engines: {node: '>=18.0.0'} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta - storybook: ^8.3.3 - typescript: '>= 4.2.x' - peerDependenciesMeta: - typescript: - optional: true + storybook: ^8.4.7 + vite: ^4.0.0 || ^5.0.0 || ^6.0.0 - '@storybook/react@8.3.3': - resolution: {integrity: sha512-fHOW/mNqI+sZWttGOE32Q+rAIbN7/Oib091cmE8usOM0z0vPNpywUBtqC2cCQH39vp19bhTsQaSsTcoBSweAHw==} + '@storybook/react@8.4.7': + resolution: {integrity: sha512-nQ0/7i2DkaCb7dy0NaT95llRVNYWQiPIVuhNfjr1mVhEP7XD090p0g7eqUmsx8vfdHh2BzWEo6CoBFRd3+EXxw==} engines: {node: '>=18.0.0'} peerDependencies: - '@storybook/test': 8.3.3 + '@storybook/test': 8.4.7 react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta - storybook: ^8.3.3 + storybook: ^8.4.7 typescript: '>= 4.2.x' peerDependenciesMeta: '@storybook/test': @@ -1661,75 +1771,140 @@ packages: typescript: optional: true - '@storybook/router@7.4.6': - resolution: {integrity: sha512-Vl1esrHkcHxDKqc+HY7+6JQpBPW3zYvGk0cQ2rxVMhWdLZTAz1hss9DqzN9tFnPyfn0a1Q77EpMySkUrvWKKNQ==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - - '@storybook/test@8.3.3': - resolution: {integrity: sha512-uZ8nMIovfI2ry989K2+cYAeEVD/3dpjj2+Rbmy7DiZWWVhFALfmqaTRkzZfShLmlH0TFv+rfcBPihGccBtw0FQ==} + '@storybook/test@8.4.7': + resolution: {integrity: sha512-AhvJsu5zl3uG40itSQVuSy5WByp3UVhS6xAnme4FWRwgSxhvZjATJ3AZkkHWOYjnnk+P2/sbz/XuPli1FVCWoQ==} peerDependencies: - storybook: ^8.3.3 + storybook: ^8.4.7 - '@storybook/theming@7.4.6': - resolution: {integrity: sha512-HW77iJ9ptCMqhoBOYFjRQw7VBap+38fkJGHP5KylEJCyYCgIAm2dEcQmtWpMVYFssSGcb6djfbtAMhYU4TL4Iw==} + '@storybook/theming@8.4.7': + resolution: {integrity: sha512-99rgLEjf7iwfSEmdqlHkSG3AyLcK0sfExcr0jnc6rLiAkBhzuIsvcHjjUwkR210SOCgXqBPW0ZA6uhnuyppHLw==} peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - - '@storybook/theming@8.3.3': - resolution: {integrity: sha512-gWJKetI6XJQgkrvvry4ez10+jLaGNCQKi5ygRPM9N+qrjA3BB8F2LCuFUTBuisa4l64TILDNjfwP/YTWV5+u5A==} - peerDependencies: - storybook: ^8.3.3 + storybook: ^8.2.0 || ^8.3.0-0 || ^8.4.0-0 || ^8.5.0-0 || ^8.6.0-0 - '@storybook/types@7.4.6': - resolution: {integrity: sha512-6QLXtMVsFZFpzPkdGWsu/iuc8na9dnS67AMOBKm5qCLPwtUJOYkwhMdFRSSeJthLRpzV7JLAL8Kwvl7MFP3QSw==} - - '@storybook/types@7.6.20': - resolution: {integrity: sha512-GncdY3x0LpbhmUAAJwXYtJDUQEwfF175gsjH0/fxPkxPoV7Sef9TM41jQLJW/5+6TnZoCZP/+aJZTJtq3ni23Q==} + '@swc/helpers@0.5.15': + resolution: {integrity: sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g==} '@tailwindcss/forms@0.5.9': resolution: {integrity: sha512-tM4XVr2+UVTxXJzey9Twx48c1gcxFStqn1pQz0tRsX8o3DvxhN5oY5pvyAbUx7VTaZxpej4Zzvc6h+1RJBzpIg==} peerDependencies: tailwindcss: '>=3.0.0 || >= 3.0.0-alpha.1 || >= 4.0.0-alpha.20' - '@tanstack/react-virtual@3.10.8': - resolution: {integrity: sha512-VbzbVGSsZlQktyLrP5nxE+vE1ZR+U0NFAWPbJLoG2+DKPwd2D7dVICTVIIaYlJqX1ZCEnYDbaOpmMwbsyhBoIA==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + '@tailwindcss/node@4.0.0-beta.5': + resolution: {integrity: sha512-29Ym+rT27zmWMbqcQUdbA9h1J+6k6EcV9nSfswModSWkeJAhrY8Sqzt7uU7hOtI7ETXjy22bSSHPjt/0+cjBdg==} - '@tanstack/virtual-core@3.10.8': - resolution: {integrity: sha512-PBu00mtt95jbKFi6Llk9aik8bnR3tR/oQP1o3TSi+iG//+Q2RTIzCEgKkHG8BB86kxMNW6O8wku+Lmi+QFR6jA==} + '@tailwindcss/oxide-android-arm64@4.0.0-beta.5': + resolution: {integrity: sha512-1eBq4Jo9R4CMHkrJuuHNrwBEkuSg37D/9OxsxcxvC372r8GdQ9fpy3cwYoVtqX6fG/Wg32P/n0t58QiQIlhkzg==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [android] - '@testing-library/dom@10.4.0': - resolution: {integrity: sha512-pemlzrSESWbdAloYml3bAJMEfNh1Z7EduzqPKprCH5S341frlpYnUEW0H72dLxa6IsYr+mPno20GiSm+h9dEdQ==} - engines: {node: '>=18'} + '@tailwindcss/oxide-darwin-arm64@4.0.0-beta.5': + resolution: {integrity: sha512-mUjChnLgul9DeKNsWNVuIykwYhKNOp8Suu4qob3T5d8joVYvt+zYM8fpQulAJDH5OzbKYoekkzquJDA6plNxEA==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [darwin] - '@testing-library/dom@9.3.4': - resolution: {integrity: sha512-FlS4ZWlp97iiNWig0Muq8p+3rVDjRiYE+YKGbAqXOu9nwJFFOdL00kFpz42M+4huzYi86vAK1sOOfyOG45muIQ==} - engines: {node: '>=14'} + '@tailwindcss/oxide-darwin-x64@4.0.0-beta.5': + resolution: {integrity: sha512-zLD9Z6B7olFOQUVn/3wZY5IL+6x294n7N+BA1cwwZtnxZNyp3o/26KGDP8mM1TcdbXHb5DOj4OX08wwbffzJrA==} + engines: {node: '>= 10'} + cpu: [x64] + os: [darwin] - '@testing-library/jest-dom@6.5.0': - resolution: {integrity: sha512-xGGHpBXYSHUUr6XsKBfs85TWlYKpTc37cSBBVrXcib2MkHLboWlkClhWF37JKlDb9KEq3dHs+f2xR7XJEWGBxA==} - engines: {node: '>=14', npm: '>=6', yarn: '>=1'} + '@tailwindcss/oxide-freebsd-x64@4.0.0-beta.5': + resolution: {integrity: sha512-FsjvHqsf/AXuEZVNA4TQlLZmanP9qjaqedjCyXv19JwfdxlEuFcGHwx6f1zATuiQnQ1DnYeoJLfjv88N59UvZQ==} + engines: {node: '>= 10'} + cpu: [x64] + os: [freebsd] - '@testing-library/react@14.3.1': - resolution: {integrity: sha512-H99XjUhWQw0lTgyMN05W3xQG1Nh4lq574D8keFf1dDoNTJgp66VbJozRaczoF+wsiaPJNt/TcnfpLGufGxSrZQ==} - engines: {node: '>=14'} - peerDependencies: - react: ^18.0.0 - react-dom: ^18.0.0 + '@tailwindcss/oxide-linux-arm-gnueabihf@4.0.0-beta.5': + resolution: {integrity: sha512-qvtbk+AdBjd2TvwJ+nuYRHeNDnlP20QIsfnVIENiU1oRTjiWvejPwRlN7bPWn0IR41GG8NEkdhM9L6vHSzaqbw==} + engines: {node: '>= 10'} + cpu: [arm] + os: [linux] - '@testing-library/user-event@14.5.2': - resolution: {integrity: sha512-YAh82Wh4TIrxYLmfGcixwD18oIjyC1pFQC2Y01F2lzV2HTMiYrI0nze0FD0ocB//CKS/7jIUgae+adPqxK5yCQ==} - engines: {node: '>=12', npm: '>=6'} - peerDependencies: - '@testing-library/dom': '>=7.21.4' + '@tailwindcss/oxide-linux-arm64-gnu@4.0.0-beta.5': + resolution: {integrity: sha512-kcz1OP9Bocq/1wPCldBYDCsll0VLUzUTWZfmg3vh7yKGbtBqL3NrJqmq8jT7FdctgcMnrJ3x3pBchKt/n6OkeQ==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] - '@tootallnate/once@2.0.0': - resolution: {integrity: sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==} + '@tailwindcss/oxide-linux-arm64-musl@4.0.0-beta.5': + resolution: {integrity: sha512-wzA1w/aJBfMFplEg6vVtMwuC4AOi8wyJPwhToxZuk3uq6sgm74prMbnWPhocJK8AwySJHOWDEj4ncXrRkMPPLg==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + + '@tailwindcss/oxide-linux-x64-gnu@4.0.0-beta.5': + resolution: {integrity: sha512-nrk9HDW31TDpsr8Iiu0DRtMyr9Rniq/8IWqLV2NeS0EhsmpEi+Ll6PbbuZdPRLA+TCK7pWstqcTC/trxp7LGOQ==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + + '@tailwindcss/oxide-linux-x64-musl@4.0.0-beta.5': + resolution: {integrity: sha512-ETzuMsqiPwY1kt2i1ROTkL9zSJXCvT2Y4onIWKwKPVnEpezVouxXN9guIKoet6KkvDJgZoVtpbO6izgUqpNVwg==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + + '@tailwindcss/oxide-win32-arm64-msvc@4.0.0-beta.5': + resolution: {integrity: sha512-Mstca4eNIMwMr5JvjYaE7C/MmGyQeYVxYRMGCNGbW9UDzxRNNVrg9Z4YgXZ2NdnjyhQF7N6BysPMhfQjv0Czng==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [win32] + + '@tailwindcss/oxide-win32-x64-msvc@4.0.0-beta.5': + resolution: {integrity: sha512-q3B9DmTMsHpaxg1w0ZxcIL7F3Em8s42SlwDBgnWWPnc6bZMG/gpN6EEL6mWfnvNyyD2LuYLjwG/D0VDuccQdIA==} + engines: {node: '>= 10'} + cpu: [x64] + os: [win32] + + '@tailwindcss/oxide@4.0.0-beta.5': + resolution: {integrity: sha512-m5Vc6UdnFWh1lca5XfcJhkD7peMYE5bHeqFo3Jse+q5bd/ahJqGdIdRp72XtIjhpMztNS/hu0xRzabW/Jo+U9w==} + engines: {node: '>= 10'} + + '@tailwindcss/postcss@4.0.0-beta.5': + resolution: {integrity: sha512-OBTWnizmr+Nkf1a5C/qZuIMt9SsFdj8OMOX0i1st9a3FOxhFOIcifNiyHY6x7OnCZsY7dKuH51ZrfZ8u17hEVA==} + + '@tanstack/react-virtual@3.10.8': + resolution: {integrity: sha512-VbzbVGSsZlQktyLrP5nxE+vE1ZR+U0NFAWPbJLoG2+DKPwd2D7dVICTVIIaYlJqX1ZCEnYDbaOpmMwbsyhBoIA==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + + '@tanstack/virtual-core@3.10.8': + resolution: {integrity: sha512-PBu00mtt95jbKFi6Llk9aik8bnR3tR/oQP1o3TSi+iG//+Q2RTIzCEgKkHG8BB86kxMNW6O8wku+Lmi+QFR6jA==} + + '@testing-library/dom@10.4.0': + resolution: {integrity: sha512-pemlzrSESWbdAloYml3bAJMEfNh1Z7EduzqPKprCH5S341frlpYnUEW0H72dLxa6IsYr+mPno20GiSm+h9dEdQ==} + engines: {node: '>=18'} + + '@testing-library/jest-dom@6.5.0': + resolution: {integrity: sha512-xGGHpBXYSHUUr6XsKBfs85TWlYKpTc37cSBBVrXcib2MkHLboWlkClhWF37JKlDb9KEq3dHs+f2xR7XJEWGBxA==} + engines: {node: '>=14', npm: '>=6', yarn: '>=1'} + + '@testing-library/react@16.1.0': + resolution: {integrity: sha512-Q2ToPvg0KsVL0ohND9A3zLJWcOXXcO8IDu3fj11KhNt0UlCWyFyvnCIBkd12tidB2lkiVRG8VFqdhcqhqnAQtg==} + engines: {node: '>=18'} + peerDependencies: + '@testing-library/dom': ^10.0.0 + '@types/react': ^18.0.0 || ^19.0.0 + '@types/react-dom': ^18.0.0 || ^19.0.0 + react: ^18.0.0 || ^19.0.0 + react-dom: ^18.0.0 || ^19.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@testing-library/user-event@14.5.2': + resolution: {integrity: sha512-YAh82Wh4TIrxYLmfGcixwD18oIjyC1pFQC2Y01F2lzV2HTMiYrI0nze0FD0ocB//CKS/7jIUgae+adPqxK5yCQ==} + engines: {node: '>=12', npm: '>=6'} + peerDependencies: + '@testing-library/dom': '>=7.21.4' + + '@tootallnate/once@2.0.0': + resolution: {integrity: sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==} engines: {node: '>= 10'} '@trysound/sax@0.2.0': @@ -1751,12 +1926,6 @@ packages: '@types/babel__traverse@7.20.6': resolution: {integrity: sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg==} - '@types/body-parser@1.19.5': - resolution: {integrity: sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==} - - '@types/connect@3.4.38': - resolution: {integrity: sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==} - '@types/d3-array@3.2.1': resolution: {integrity: sha512-Y2Jn2idRrLzUfAKV2LyRImR+y4oa2AntrgID95SHJxuMUrkNXmanDSed71sRNZysveJVt1hLLemQZIady0FpEg==} @@ -1778,8 +1947,8 @@ packages: '@types/d3-shape@3.1.6': resolution: {integrity: sha512-5KKk5aKGu2I+O6SONMYSNflgiP0WfZIQvVUMan50wHsLG1G94JlxEVnCpQARfTtzytuY0p/9PXXZb3I7giofIA==} - '@types/d3-time@3.0.3': - resolution: {integrity: sha512-2p6olUZ4w3s+07q3Tm2dbiMZy5pCDfYwtLXXHUnVzXgQlZ/OyPtUz6OL382BkOuGlLXqfT+wqv8Fw2v8/0geBw==} + '@types/d3-time@3.0.4': + resolution: {integrity: sha512-yuzZug1nkAAaBlBBikKZTgzCeA+k1uy4ZFwWANOfKw5z5LRhV0gNA7gNkKm7HoK+HRN0wX3EkxGk0fpbWhmB7g==} '@types/d3-timer@3.0.2': resolution: {integrity: sha512-Ps3T8E8dZDam6fUyNiMkekK3XUsaUEik+idO9/YjPtfj2qruF8tFBXS7XhtE4iIXBLxhmLjP3SXpLhVf21I9Lw==} @@ -1787,39 +1956,21 @@ packages: '@types/doctrine@0.0.9': resolution: {integrity: sha512-eOIHzCUSH7SMfonMG1LsC2f8vxBFtho6NGBznK41R84YzPuvSBzrhEps33IsQiOW9+VL6NQ9DbjQJznk/S4uRA==} - '@types/escodegen@0.0.6': - resolution: {integrity: sha512-AjwI4MvWx3HAOaZqYsjKWyEObT9lcVV0Y0V8nXo6cXzN8ZiMxVhf6F3d/UNvXVGKrEzL/Dluc5p+y9GkzlTWig==} + '@types/eslint-scope@3.7.7': + resolution: {integrity: sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==} - '@types/eslint@8.40.2': - resolution: {integrity: sha512-PRVjQ4Eh9z9pmmtaq8nTjZjQwKFk7YIHIud3lRoKRBgUQjgjRmoGxxGEPXQkF+lH7QkHJRNr5F4aBgYCW0lqpQ==} + '@types/eslint@9.6.1': + resolution: {integrity: sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==} '@types/estree@0.0.39': resolution: {integrity: sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==} - '@types/estree@0.0.51': - resolution: {integrity: sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==} - '@types/estree@1.0.6': resolution: {integrity: sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==} - '@types/express-serve-static-core@4.19.5': - resolution: {integrity: sha512-y6W03tvrACO72aijJ5uF02FRq5cgDR9lUxddQ8vyF+GvmjJQqbzDcJngEjURc+ZsG31VI3hODNZJ2URj86pzmg==} - - '@types/express@4.17.21': - resolution: {integrity: sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==} - '@types/graceful-fs@4.1.9': resolution: {integrity: sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==} - '@types/hast@3.0.4': - resolution: {integrity: sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==} - - '@types/html-minifier-terser@6.1.0': - resolution: {integrity: sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg==} - - '@types/http-errors@2.0.4': - resolution: {integrity: sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==} - '@types/istanbul-lib-coverage@2.0.6': resolution: {integrity: sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==} @@ -1838,42 +1989,29 @@ packages: '@types/json-schema@7.0.15': resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} - '@types/lodash@4.17.9': - resolution: {integrity: sha512-w9iWudx1XWOHW5lQRS9iKpK/XuRhnN+0T7HvdCCd802FYkT1AMTnxndJHGrNJwRoRHkslGr4S29tjm1cT7x/7w==} - '@types/mdx@2.0.13': resolution: {integrity: sha512-+OWZQfAYyio6YkJb3HLxDrvnx6SWWDbC0zVPfBRzUk0/nqoDyf6dNxQi3eArPe8rJ473nobTMQ/8Zk+LxJ+Yuw==} - '@types/mime@1.3.5': - resolution: {integrity: sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==} - '@types/node@22.6.1': resolution: {integrity: sha512-V48tCfcKb/e6cVUigLAaJDAILdMP0fUW6BidkPK4GpGjXcfbnoHasCZDwz3N3yVt5we2RHm4XTQCpv0KJz9zqw==} '@types/normalize-package-data@2.4.4': resolution: {integrity: sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==} - '@types/parse-json@4.0.2': - resolution: {integrity: sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==} - '@types/prop-types@15.7.13': resolution: {integrity: sha512-hCZTSvwbzWGvhqxp/RqVqwU999pBf2vp7hzIjiYOsl8wqOmUxkQ6ddw1cV3l8811+kdUFus/q4d1Y3E3SyEifA==} - '@types/qs@6.9.16': - resolution: {integrity: sha512-7i+zxXdPD0T4cKDuxCUXJ4wHcsJLwENa6Z3dCu8cfCK743OGy5Nu1RmAGqDPsoTDINVEcdXKRvR/zre+P2Ku1A==} - - '@types/qs@6.9.17': - resolution: {integrity: sha512-rX4/bPcfmvxHDv0XjfJELTTr+iB+tn032nPILqHm5wbthUUUuVtNGGqzhya9XUxjTP8Fpr0qYgSZZKxGY++svQ==} - - '@types/range-parser@1.2.7': - resolution: {integrity: sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==} - - '@types/react-dom@18.3.0': - resolution: {integrity: sha512-EhwApuTmMBmXuFOikhQLIBUn6uFg81SwLMOAUgodJF14SOBOCMdU04gDoYi0WOJJHD144TL32z4yDqCW3dnkQg==} + '@types/react-dom@19.0.2': + resolution: {integrity: sha512-c1s+7TKFaDRRxr1TxccIX2u7sfCnc3RxkVyBIUA2lCpyqCF+QoAwQ/CBg7bsMdVwP120HEH143VQezKtef5nCg==} + peerDependencies: + '@types/react': ^19.0.0 '@types/react@18.3.9': resolution: {integrity: sha512-+BpAVyTpJkNWWSSnaLBk6ePpHLOGJKnEQNbINNovPWzvEUyAe3e+/d494QdEh71RekM/qV7lw6jzf1HGrJyAtQ==} + '@types/react@19.0.1': + resolution: {integrity: sha512-YW6614BDhqbpR5KtUYzTA+zlA7nayzJRA9ljz9CQoxthR0sDisYZLuvSMsil36t4EH/uAt8T52Xb4sVw17G+SQ==} + '@types/resolve@1.17.1': resolution: {integrity: sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==} @@ -1883,21 +2021,12 @@ packages: '@types/semver@7.5.8': resolution: {integrity: sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==} - '@types/send@0.17.4': - resolution: {integrity: sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==} - - '@types/serve-static@1.15.7': - resolution: {integrity: sha512-W8Ym+h8nhuRwaKPaDw34QUkwsGi6Rc4yYqvKFo5rm2FUEhCFbzVWrxXUxuKK8TASjWsysJY0nsmNCGhCOIsrOw==} - '@types/stack-utils@2.0.3': resolution: {integrity: sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==} '@types/tough-cookie@4.0.5': resolution: {integrity: sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA==} - '@types/unist@3.0.3': - resolution: {integrity: sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==} - '@types/uuid@9.0.8': resolution: {integrity: sha512-jg+97EGIcY9AGHJJRaaPVgetKDsrTgbRjQ5Msgjh/DQKEFl0DtyRr/VCOyD1T2R1MNeWPK/u7JoGhlDZnKBAfA==} @@ -1931,6 +2060,10 @@ packages: typescript: optional: true + '@typescript-eslint/scope-manager@8.17.0': + resolution: {integrity: sha512-/ewp4XjvnxaREtqsZjF4Mfn078RD/9GmiEAtTeLQ7yFdKnqwTOgRMSvFz4et9U5RiJQ15WTGXPLj89zGusvxBg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@typescript-eslint/scope-manager@8.7.0': resolution: {integrity: sha512-87rC0k3ZlDOuz82zzXRtQ7Akv3GKhHs0ti4YcbAJtaomllXoSO8hi7Ix3ccEvCd824dy9aIX+j3d2UMAfCtVpg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -1944,10 +2077,23 @@ packages: typescript: optional: true + '@typescript-eslint/types@8.17.0': + resolution: {integrity: sha512-gY2TVzeve3z6crqh2Ic7Cr+CAv6pfb0Egee7J5UAVWCpVvDI/F71wNfolIim4FE6hT15EbpZFVUj9j5i38jYXA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@typescript-eslint/types@8.7.0': resolution: {integrity: sha512-LLt4BLHFwSfASHSF2K29SZ+ZCsbQOM+LuarPjRUuHm+Qd09hSe3GCeaQbcCr+Mik+0QFRmep/FyZBO6fJ64U3w==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@typescript-eslint/typescript-estree@8.17.0': + resolution: {integrity: sha512-JqkOopc1nRKZpX+opvKqnM3XUlM7LpFMD0lYxTqOTKQfCWAmxw45e3qlOCsEqEB2yuacujivudOFpCnqkBDNMw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + '@typescript-eslint/typescript-estree@8.7.0': resolution: {integrity: sha512-MC8nmcGHsmfAKxwnluTQpNqceniT8SteVwd2voYlmiSWGOtjvGXdPl17dYu2797GVscK30Z04WRM28CrKS9WOg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -1957,12 +2103,26 @@ packages: typescript: optional: true + '@typescript-eslint/utils@8.17.0': + resolution: {integrity: sha512-bQC8BnEkxqG8HBGKwG9wXlZqg37RKSMY7v/X8VEWD8JG2JuTHuNK0VFvMPMUKQcbk6B+tf05k+4AShAEtCtJ/w==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + '@typescript-eslint/utils@8.7.0': resolution: {integrity: sha512-ZbdUdwsl2X/s3CiyAu3gOlfQzpbuG3nTWKPoIvAu1pu5r8viiJvv2NPN2AqArL35NCYtw/lrPPfM4gxrMLNLPw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 + '@typescript-eslint/visitor-keys@8.17.0': + resolution: {integrity: sha512-1Hm7THLpO6ww5QU6H/Qp+AusUUl+z/CAm3cNZZ0jQvon9yicgO7Rwd+/WWRpMKLYV6p2UvdbR27c86rzCPpreg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@typescript-eslint/visitor-keys@8.7.0': resolution: {integrity: sha512-b1tx0orFCCh/THWPQa2ZwWzvOeyzzp36vkJYOpVg0u8UVOIsfVrnuC9FqAw9gRKn+rG2VmWQ/zDJZzkxUnj/XQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -1970,14 +2130,20 @@ packages: '@ungap/structured-clone@1.2.0': resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==} + '@vitejs/plugin-react@4.3.4': + resolution: {integrity: sha512-SCCPBJtYLdE8PX/7ZQAs1QAZ8Jqwih+0VBLum1EGqmCCQal+MIUqLCzj3ZUy8ufbC0cAM4LRlSTm7IQJwWT4ug==} + engines: {node: ^14.18.0 || >=16.0.0} + peerDependencies: + vite: ^4.2.0 || ^5.0.0 || ^6.0.0 + '@vitest/expect@2.0.5': resolution: {integrity: sha512-yHZtwuP7JZivj65Gxoi8upUN2OzHTi3zVfjwdpu2WrvCZPLwsJ2Ey5ILIPccoW23dd/zQBlJ4/dhi7DWNyXCpA==} '@vitest/pretty-format@2.0.5': resolution: {integrity: sha512-h8k+1oWHfwTkyTkb9egzwNMfJAEx4veaPSnMeKbVSjp4euqGSbQlm5+6VHwTr7u4FJslVVsUG5nopCaAYdOmSQ==} - '@vitest/pretty-format@2.1.1': - resolution: {integrity: sha512-SjxPFOtuINDUW8/UkElJYQSFtnWX7tMksSGW0vfjxMneFqxVr8YJ979QpMbDW7g+BIiq88RAGDjf7en6rvLPPQ==} + '@vitest/pretty-format@2.1.8': + resolution: {integrity: sha512-9HiSZ9zpqNLKlbIDRWOnAWqgcA7xu+8YxXSekhr0Ykab7PAYFkhkwoqVArPOtJhPmYeE2YHgKZlj3CP36z2AJQ==} '@vitest/spy@2.0.5': resolution: {integrity: sha512-c/jdthAhvJdpfVuaexSrnawxZz6pywlTPe84LUB2m/4t3rl2fTo9NFGBG4oWgaD+FTgDDV8hJ/nibT7IfH3JfA==} @@ -1985,53 +2151,53 @@ packages: '@vitest/utils@2.0.5': resolution: {integrity: sha512-d8HKbqIcya+GR67mkZbrzhS5kKhtp8dQLcmRZLGTscGVg7yImT82cIrhtn2L8+VujWcy6KZweApgNmPsTAO/UQ==} - '@vitest/utils@2.1.1': - resolution: {integrity: sha512-Y6Q9TsI+qJ2CC0ZKj6VBb+T8UPz593N113nnUykqwANqhgf3QkZeHFlusgKLTqrnVHbj/XDKZcDHol+dxVT+rQ==} + '@vitest/utils@2.1.8': + resolution: {integrity: sha512-dwSoui6djdwbfFmIgbIjX2ZhIoG7Ex/+xpxyiEgIGzjliY8xGkcpITKTlp6B4MgtGkF2ilvm97cPM96XZaAgcA==} - '@webassemblyjs/ast@1.12.1': - resolution: {integrity: sha512-EKfMUOPRRUTy5UII4qJDGPpqfwjOmZ5jeGFwid9mnoqIFK+e0vqoi1qH56JpmZSzEL53jKnNzScdmftJyG5xWg==} + '@webassemblyjs/ast@1.14.1': + resolution: {integrity: sha512-nuBEDgQfm1ccRp/8bCQrx1frohyufl4JlbMMZ4P1wpeOfDhF6FQkxZJ1b/e+PLwr6X1Nhw6OLme5usuBWYBvuQ==} - '@webassemblyjs/floating-point-hex-parser@1.11.6': - resolution: {integrity: sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==} + '@webassemblyjs/floating-point-hex-parser@1.13.2': + resolution: {integrity: sha512-6oXyTOzbKxGH4steLbLNOu71Oj+C8Lg34n6CqRvqfS2O71BxY6ByfMDRhBytzknj9yGUPVJ1qIKhRlAwO1AovA==} - '@webassemblyjs/helper-api-error@1.11.6': - resolution: {integrity: sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==} + '@webassemblyjs/helper-api-error@1.13.2': + resolution: {integrity: sha512-U56GMYxy4ZQCbDZd6JuvvNV/WFildOjsaWD3Tzzvmw/mas3cXzRJPMjP83JqEsgSbyrmaGjBfDtV7KDXV9UzFQ==} - '@webassemblyjs/helper-buffer@1.12.1': - resolution: {integrity: sha512-nzJwQw99DNDKr9BVCOZcLuJJUlqkJh+kVzVl6Fmq/tI5ZtEyWT1KZMyOXltXLZJmDtvLCDgwsyrkohEtopTXCw==} + '@webassemblyjs/helper-buffer@1.14.1': + resolution: {integrity: sha512-jyH7wtcHiKssDtFPRB+iQdxlDf96m0E39yb0k5uJVhFGleZFoNw1c4aeIcVUPPbXUVJ94wwnMOAqUHyzoEPVMA==} - '@webassemblyjs/helper-numbers@1.11.6': - resolution: {integrity: sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==} + '@webassemblyjs/helper-numbers@1.13.2': + resolution: {integrity: sha512-FE8aCmS5Q6eQYcV3gI35O4J789wlQA+7JrqTTpJqn5emA4U2hvwJmvFRC0HODS+3Ye6WioDklgd6scJ3+PLnEA==} - '@webassemblyjs/helper-wasm-bytecode@1.11.6': - resolution: {integrity: sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==} + '@webassemblyjs/helper-wasm-bytecode@1.13.2': + resolution: {integrity: sha512-3QbLKy93F0EAIXLh0ogEVR6rOubA9AoZ+WRYhNbFyuB70j3dRdwH9g+qXhLAO0kiYGlg3TxDV+I4rQTr/YNXkA==} - '@webassemblyjs/helper-wasm-section@1.12.1': - resolution: {integrity: sha512-Jif4vfB6FJlUlSbgEMHUyk1j234GTNG9dBJ4XJdOySoj518Xj0oGsNi59cUQF4RRMS9ouBUxDDdyBVfPTypa5g==} + '@webassemblyjs/helper-wasm-section@1.14.1': + resolution: {integrity: sha512-ds5mXEqTJ6oxRoqjhWDU83OgzAYjwsCV8Lo/N+oRsNDmx/ZDpqalmrtgOMkHwxsG0iI//3BwWAErYRHtgn0dZw==} - '@webassemblyjs/ieee754@1.11.6': - resolution: {integrity: sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==} + '@webassemblyjs/ieee754@1.13.2': + resolution: {integrity: sha512-4LtOzh58S/5lX4ITKxnAK2USuNEvpdVV9AlgGQb8rJDHaLeHciwG4zlGr0j/SNWlr7x3vO1lDEsuePvtcDNCkw==} - '@webassemblyjs/leb128@1.11.6': - resolution: {integrity: sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==} + '@webassemblyjs/leb128@1.13.2': + resolution: {integrity: sha512-Lde1oNoIdzVzdkNEAWZ1dZ5orIbff80YPdHx20mrHwHrVNNTjNr8E3xz9BdpcGqRQbAEa+fkrCb+fRFTl/6sQw==} - '@webassemblyjs/utf8@1.11.6': - resolution: {integrity: sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==} + '@webassemblyjs/utf8@1.13.2': + resolution: {integrity: sha512-3NQWGjKTASY1xV5m7Hr0iPeXD9+RDobLll3T9d2AO+g3my8xy5peVyjSag4I50mR1bBSN/Ct12lo+R9tJk0NZQ==} - '@webassemblyjs/wasm-edit@1.12.1': - resolution: {integrity: sha512-1DuwbVvADvS5mGnXbE+c9NfA8QRcZ6iKquqjjmR10k6o+zzsRVesil54DKexiowcFCPdr/Q0qaMgB01+SQ1u6g==} + '@webassemblyjs/wasm-edit@1.14.1': + resolution: {integrity: sha512-RNJUIQH/J8iA/1NzlE4N7KtyZNHi3w7at7hDjvRNm5rcUXa00z1vRz3glZoULfJ5mpvYhLybmVcwcjGrC1pRrQ==} - '@webassemblyjs/wasm-gen@1.12.1': - resolution: {integrity: sha512-TDq4Ojh9fcohAw6OIMXqiIcTq5KUXTGRkVxbSo1hQnSy6lAM5GSdfwWeSxpAo0YzgsgF182E/U0mDNhuA0tW7w==} + '@webassemblyjs/wasm-gen@1.14.1': + resolution: {integrity: sha512-AmomSIjP8ZbfGQhumkNvgC33AY7qtMCXnN6bL2u2Js4gVCg8fp735aEiMSBbDR7UQIj90n4wKAFUSEd0QN2Ukg==} - '@webassemblyjs/wasm-opt@1.12.1': - resolution: {integrity: sha512-Jg99j/2gG2iaz3hijw857AVYekZe2SAskcqlWIZXjji5WStnOpVoat3gQfT/Q5tb2djnCjBtMocY/Su1GfxPBg==} + '@webassemblyjs/wasm-opt@1.14.1': + resolution: {integrity: sha512-PTcKLUNvBqnY2U6E5bdOQcSM+oVP/PmrDY9NzowJjislEjwP/C4an2303MCVS2Mg9d3AJpIGdUFIQQWbPds0Sw==} - '@webassemblyjs/wasm-parser@1.12.1': - resolution: {integrity: sha512-xikIi7c2FHXysxXe3COrVUPSheuBtpcfhbpFj4gmu7KRLYOzANztwUU0IbsqvMqzuNK2+glRGWCEqZo1WCLyAQ==} + '@webassemblyjs/wasm-parser@1.14.1': + resolution: {integrity: sha512-JLBl+KZ0R5qB7mCnud/yyX08jWFw5MsoalJ1pQ4EdFlgj9VdXKGuENGsiCIjegI1W7p91rUlcB/LB5yRJKNTcQ==} - '@webassemblyjs/wast-printer@1.12.1': - resolution: {integrity: sha512-+X4WAlOisVWQMikjbcvY2e0rwPsKQ9F688lksZhBcPycBBuii3O7m8FACbDMWDojpAqvjIncrG8J0XHKyQfVeA==} + '@webassemblyjs/wast-printer@1.14.1': + resolution: {integrity: sha512-kPSSXE6De1XOR820C90RIo2ogvZG+c3KiHzqUoO/F34Y2shGzesfqv7o57xrxovZJH/MetF5UjroJ/R/3isoiw==} '@xtuc/ieee754@1.2.0': resolution: {integrity: sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==} @@ -2043,38 +2209,25 @@ packages: resolution: {integrity: sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==} deprecated: Use your platform's native atob() and btoa() methods instead - accepts@1.3.8: - resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==} - engines: {node: '>= 0.6'} - acorn-globals@7.0.1: resolution: {integrity: sha512-umOSDSDrfHbTNPuNpC2NSnnA3LUrqpevPb4T9jRx4MagXNS0rs+gwiTcAvqCRmsD6utzsrzNt+ebm00SNWiC3Q==} - acorn-import-attributes@1.9.5: - resolution: {integrity: sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ==} - peerDependencies: - acorn: ^8 - acorn-jsx@5.3.2: resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} peerDependencies: acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 - acorn-walk@7.2.0: - resolution: {integrity: sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==} - engines: {node: '>=0.4.0'} - acorn-walk@8.3.4: resolution: {integrity: sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==} engines: {node: '>=0.4.0'} - acorn@7.4.1: - resolution: {integrity: sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==} + acorn@8.12.1: + resolution: {integrity: sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==} engines: {node: '>=0.4.0'} hasBin: true - acorn@8.12.1: - resolution: {integrity: sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==} + acorn@8.14.0: + resolution: {integrity: sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==} engines: {node: '>=0.4.0'} hasBin: true @@ -2122,19 +2275,10 @@ packages: resolution: {integrity: sha512-GdYO7a61mR0fOlAsvC9/rIHf7L96sBc6dEWzeOu+KAea5bZyQRPIpojrVoI4AXGJS/ycu/fBTdLrUkA4ODrvjw==} engines: {node: '>=18'} - ansi-html-community@0.0.8: - resolution: {integrity: sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==} - engines: {'0': node >= 0.8.0} - hasBin: true - ansi-regex@5.0.1: resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} engines: {node: '>=8'} - ansi-regex@6.1.0: - resolution: {integrity: sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==} - engines: {node: '>=12'} - ansi-styles@3.2.1: resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} engines: {node: '>=4'} @@ -2147,10 +2291,6 @@ packages: resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} engines: {node: '>=10'} - ansi-styles@6.2.1: - resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} - engines: {node: '>=12'} - any-promise@1.3.0: resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} @@ -2158,9 +2298,6 @@ packages: resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} engines: {node: '>= 8'} - arg@5.0.2: - resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==} - argparse@1.0.10: resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} @@ -2180,17 +2317,10 @@ packages: aria-query@5.3.0: resolution: {integrity: sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==} - aria-query@5.3.2: - resolution: {integrity: sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==} - engines: {node: '>= 0.4'} - array-buffer-byte-length@1.0.1: resolution: {integrity: sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==} engines: {node: '>= 0.4'} - array-flatten@1.1.1: - resolution: {integrity: sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==} - array-ify@1.0.0: resolution: {integrity: sha512-c5AMf34bKdvPhQ7tBGhqkgKNUzMr4WUs+WDtC2ZUGOUncbxKMTvqxYctiseW3+L4bA8ec+GcZ6/A/FW4m8ukng==} @@ -2229,21 +2359,10 @@ packages: asynckit@0.4.0: resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} - autoprefixer@10.4.20: - resolution: {integrity: sha512-XY25y5xSv/wEoqzDyXXME4AFfkZI0P23z6Fs3YgymDnKJkCGOnkL0iTxCa85UTqaSgfcqyf3UA6+c7wUvx/16g==} - engines: {node: ^10 || ^12 || >=14} - hasBin: true - peerDependencies: - postcss: ^8.1.0 - available-typed-arrays@1.0.7: resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==} engines: {node: '>= 0.4'} - axe-core@4.10.0: - resolution: {integrity: sha512-Mr2ZakwQ7XUAjp7pAwQWRhhK8mQQ6JAaNWSjmjxil0R8BPioMtQsTLOolGYkji1rcL++3dCqZA3zWqpT+9Ew6g==} - engines: {node: '>=4'} - babel-jest@27.5.1: resolution: {integrity: sha512-cdQ5dXjGRd0IBRATiQ4mZGlGlRE8kJpjPOixdNRdT+m3UcNqmYWN6rK6nvtXYfY3D76cb8s/O1Ss8ea24PIwcg==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} @@ -2263,13 +2382,6 @@ packages: '@babel/core': ^7.0.0 webpack: '>=2' - babel-loader@9.2.1: - resolution: {integrity: sha512-fqe8naHt46e0yIdkjUZYqddSXfej3AHajX+CSO5X7oy0EmPc6o5Xh+RClNoHjnieWz9AW4kZxW9yyFMhVB1QLA==} - engines: {node: '>= 14.15.0'} - peerDependencies: - '@babel/core': ^7.12.0 - webpack: '>=5' - babel-plugin-istanbul@6.1.1: resolution: {integrity: sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==} engines: {node: '>=8'} @@ -2327,14 +2439,6 @@ packages: big.js@5.2.2: resolution: {integrity: sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==} - binary-extensions@2.3.0: - resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} - engines: {node: '>=8'} - - body-parser@1.20.3: - resolution: {integrity: sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==} - engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} - boolbase@1.0.0: resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} @@ -2359,6 +2463,11 @@ packages: engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true + browserslist@4.24.2: + resolution: {integrity: sha512-ZIc+Q62revdMcqC6aChtW4jz3My3klmCO1fEmINZY/8J3EpBg5/A/D0AKmBveUh6pgoeycoMkVMko84tuYS+Gg==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + bser@2.1.1: resolution: {integrity: sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==} @@ -2369,10 +2478,6 @@ packages: resolution: {integrity: sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==} engines: {node: '>=6'} - bytes@3.1.2: - resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} - engines: {node: '>= 0.8'} - call-bind@1.0.7: resolution: {integrity: sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==} engines: {node: '>= 0.4'} @@ -2381,13 +2486,6 @@ packages: resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} engines: {node: '>=6'} - camel-case@4.1.2: - resolution: {integrity: sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==} - - camelcase-css@2.0.1: - resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==} - engines: {node: '>= 6'} - camelcase@5.3.1: resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==} engines: {node: '>=6'} @@ -2402,12 +2500,11 @@ packages: caniuse-lite@1.0.30001663: resolution: {integrity: sha512-o9C3X27GLKbLeTYZ6HBOLU1tsAcBZsLis28wrVzddShCS16RujjHp9GDHKZqrB3meE0YjhawvMFsGb/igqiPzA==} - case-sensitive-paths-webpack-plugin@2.4.0: - resolution: {integrity: sha512-roIFONhcxog0JSSWbvVAh3OocukmSgpqOH6YpMkCvav/ySIV3JKg4Dc8vYtQjYi/UxpNE36r/9v+VqTQqgkYmw==} - engines: {node: '>=4'} + caniuse-lite@1.0.30001687: + resolution: {integrity: sha512-0S/FDhf4ZiqrTUiQ39dKeUjYRjkv7lOZU1Dgif2rIqrTzX/1wV2hfKu9TOm1IHkdSijfLswxTFzl/cvir+SLSQ==} - chai@5.1.1: - resolution: {integrity: sha512-pT1ZgP8rPNqUgieVaEY+ryQr6Q4HXNg8Ei9UnLUrjN4IA7dvQC5JB+/kxVcPNDHyBcc/26CXPkbNzq3qwrOEKA==} + chai@5.1.2: + resolution: {integrity: sha512-aGtmf24DW6MLHHG5gCx4zaI3uBq3KRtxeVs0DjFH6Z0rDNbsvTxFASFvdj79pxjxZ8/5u3PIiN3IwEIQkiiuPw==} engines: {node: '>=12'} chalk@2.4.2: @@ -2434,22 +2531,6 @@ packages: resolution: {integrity: sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==} engines: {node: '>= 16'} - chokidar@3.6.0: - resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} - engines: {node: '>= 8.10.0'} - - chromatic@11.10.4: - resolution: {integrity: sha512-nfgDpW5gQ4FtgV1lZXXfqLjONKDCh2K4vwI3dbZrtU1ObOL9THyAzpIdnK9LRcNSeisDLX+XFCryfMg1Ql2U2g==} - hasBin: true - peerDependencies: - '@chromatic-com/cypress': ^0.*.* || ^1.0.0 - '@chromatic-com/playwright': ^0.*.* || ^1.0.0 - peerDependenciesMeta: - '@chromatic-com/cypress': - optional: true - '@chromatic-com/playwright': - optional: true - chrome-trace-event@1.0.4: resolution: {integrity: sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==} engines: {node: '>=6.0'} @@ -2461,10 +2542,6 @@ packages: cjs-module-lexer@1.4.1: resolution: {integrity: sha512-cuSVIHi9/9E/+821Qjdvngor+xpnlwnuwIyZOaLmHBVdXL+gP+I6QQB9VkO7RI77YIcTV+S1W9AreJ5eN63JBA==} - clean-css@5.3.3: - resolution: {integrity: sha512-D5J+kHaVb/wKSFcyyV75uCn8fiY4sV38XJoe4CUyGQ+mOU/fMVYUdH1hJC+CJQ5uY3EnW27SbJYS4X8BiLrAFg==} - engines: {node: '>= 10.0'} - clean-stack@5.2.0: resolution: {integrity: sha512-TyUIUJgdFnCISzG5zu3291TAsE77ddchd0bepon1VVQrKLGKFED4iXFEDQ24mIPdPBbyE16PK3F8MYE1CmcBEQ==} engines: {node: '>=14.16'} @@ -2478,9 +2555,6 @@ packages: resolution: {integrity: sha512-+W/5efTR7y5HRD7gACw9yQjqMVvEMLBHmboM/kPWam+H+Hmyrgjh6YncVKK122YZkXrLudzTuAukUw9FnMf7IQ==} engines: {node: 10.* || >= 12.*} - client-only@0.0.1: - resolution: {integrity: sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==} - cliui@7.0.4: resolution: {integrity: sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==} @@ -2515,9 +2589,6 @@ packages: colord@2.9.3: resolution: {integrity: sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==} - colorette@2.0.20: - resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==} - combined-stream@1.0.8: resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} engines: {node: '>= 0.8'} @@ -2525,21 +2596,10 @@ packages: commander@2.20.3: resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} - commander@4.1.1: - resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} - engines: {node: '>= 6'} - commander@7.2.0: resolution: {integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==} engines: {node: '>= 10'} - commander@8.3.0: - resolution: {integrity: sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==} - engines: {node: '>= 12'} - - common-path-prefix@3.0.0: - resolution: {integrity: sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w==} - commondir@1.0.1: resolution: {integrity: sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==} @@ -2555,17 +2615,6 @@ packages: config-chain@1.1.13: resolution: {integrity: sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==} - constants-browserify@1.0.0: - resolution: {integrity: sha512-xFxOwqIzR/e1k1gLiWEophSCMqXcwVHIH7akf7b/vxcUeGunlj3hvZaaqxwHsTgn+IndtkQJgSztIDWeumWJDQ==} - - content-disposition@0.5.4: - resolution: {integrity: sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==} - engines: {node: '>= 0.6'} - - content-type@1.0.5: - resolution: {integrity: sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==} - engines: {node: '>= 0.6'} - conventional-changelog-angular@8.0.0: resolution: {integrity: sha512-CLf+zr6St0wIxos4bmaKHRXWAcsCXrJU6F4VdNDrGRK3B8LDLKoX3zuMV5GhtbGkVR/LohZ6MT6im43vZLSjmA==} engines: {node: '>=18'} @@ -2598,23 +2647,12 @@ packages: convert-source-map@2.0.0: resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} - cookie-signature@1.0.6: - resolution: {integrity: sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==} - - cookie@0.6.0: - resolution: {integrity: sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==} - engines: {node: '>= 0.6'} - core-js-compat@3.38.1: resolution: {integrity: sha512-JRH6gfXxGmrzF3tZ57lFx97YARxCXPaMzPo6jELZhv88pBH5VXpQ+y0znKGlFnzuaihqhLbefxSJxWJMPtfDzw==} core-util-is@1.0.3: resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} - cosmiconfig@7.1.0: - resolution: {integrity: sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==} - engines: {node: '>=10'} - cosmiconfig@8.3.6: resolution: {integrity: sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==} engines: {node: '>=14'} @@ -2781,14 +2819,6 @@ packages: date-fns@3.6.0: resolution: {integrity: sha512-fRHTG8g/Gif+kSh50gaGEdToemgfj74aRX3swtiouboip5JDLAyDE9F11nHMIcvOaXeOC6D7SpNhi7uFyB7Uww==} - debug@2.6.9: - resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - debug@4.3.7: resolution: {integrity: sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==} engines: {node: '>=6.0'} @@ -2804,9 +2834,6 @@ packages: decimal.js@10.4.3: resolution: {integrity: sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==} - dedent@0.7.0: - resolution: {integrity: sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==} - dedent@1.5.3: resolution: {integrity: sha512-NHQtfOOW68WD8lgypbLA5oT+Bt0xXJhiYvoR6SmmNXZfpzOGXwdKWmcwG8N7PwVVWV3eF/68nmD9BaJSsTBhyQ==} peerDependencies: @@ -2850,25 +2877,19 @@ packages: resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} engines: {node: '>=0.4.0'} - depd@2.0.0: - resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} - engines: {node: '>= 0.8'} - dequal@2.0.3: resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} engines: {node: '>=6'} - destroy@1.2.0: - resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==} - engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} + detect-libc@1.0.3: + resolution: {integrity: sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==} + engines: {node: '>=0.10'} + hasBin: true detect-newline@3.1.0: resolution: {integrity: sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==} engines: {node: '>=8'} - didyoumean@1.2.2: - resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==} - diff-sequences@29.6.3: resolution: {integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -2877,9 +2898,6 @@ packages: resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} engines: {node: '>=8'} - dlv@1.1.3: - resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==} - doctrine@2.1.0: resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==} engines: {node: '>=0.10.0'} @@ -2894,9 +2912,6 @@ packages: dom-accessibility-api@0.6.3: resolution: {integrity: sha512-7ZgogeTnjuHbo+ct10G9Ffp0mif17idi0IyWNVA/wcwcm7NPOD/WEHVP3n7n3MhXqxoIYm8d6MuZohYWIZ4T3w==} - dom-converter@0.2.0: - resolution: {integrity: sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==} - dom-helpers@5.2.1: resolution: {integrity: sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==} @@ -2918,9 +2933,6 @@ packages: domutils@2.8.0: resolution: {integrity: sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==} - dot-case@3.0.4: - resolution: {integrity: sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==} - dot-prop@5.3.0: resolution: {integrity: sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==} engines: {node: '>=8'} @@ -2928,15 +2940,12 @@ packages: duplexer2@0.1.4: resolution: {integrity: sha512-asLFVfWWtJ90ZyOUHMqk7/S2w2guQKxUI2itj3d92ADHhxUSbCMGi1f1cBcJ7xM1To+pE/Khbwo1yuNbMEPKeA==} - eastasianwidth@0.2.0: - resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} - - ee-first@1.1.1: - resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} - electron-to-chromium@1.5.28: resolution: {integrity: sha512-VufdJl+rzaKZoYVUijN13QcXVF5dWPZANeFTLNy+OSpHdDL5ynXTF35+60RSBbaQYB1ae723lQXHCrf4pyLsMw==} + electron-to-chromium@1.5.71: + resolution: {integrity: sha512-dB68l59BI75W1BUGVTAEJy45CEVuEGy9qPVVQ8pnHyHMn36PLPPoE1mjLH+lo9rKulO3HC2OhbACI/8tCqJBcA==} + emittery@0.13.1: resolution: {integrity: sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==} engines: {node: '>=12'} @@ -2944,9 +2953,6 @@ packages: emoji-regex@8.0.0: resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} - emoji-regex@9.2.2: - resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} - emojilib@2.4.0: resolution: {integrity: sha512-5U0rVMU5Y2n2+ykNLQqMoqklN9ICBT/KsvC1Gz6vqHbz2AXXGkG+Pm5rMWk/8Vjrr/mY9985Hi8DYzn1F09Nyw==} @@ -2954,17 +2960,6 @@ packages: resolution: {integrity: sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==} engines: {node: '>= 4'} - encodeurl@1.0.2: - resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==} - engines: {node: '>= 0.8'} - - encodeurl@2.0.0: - resolution: {integrity: sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==} - engines: {node: '>= 0.8'} - - endent@2.1.0: - resolution: {integrity: sha512-r8VyPX7XL8U01Xgnb1CjZ3XV+z90cXIJ9JPE/R9SEC9vpw2P6CfsRPJmp20DppC5N7ZAMCmjYkJIa744Iyg96w==} - enhanced-resolve@5.17.1: resolution: {integrity: sha512-LMHl3dXhTcfv8gM4kEzIUeTQ+7fpdA0l2tUf34BddXPkz2A5xJ5L/Pchd5BL6rdccM9QGvu0sWZzK1Z1t4wwyg==} engines: {node: '>=10.13.0'} @@ -3033,8 +3028,8 @@ packages: peerDependencies: esbuild: '>=0.12 <1' - esbuild@0.23.1: - resolution: {integrity: sha512-VVNz/9Sa0bs5SELtn3f7qhJCDPCF5oMEl5cO9/SSinpE9hbPVvxbd572HH5AKiP7WD8INO53GgfDDhRjkylHEg==} + esbuild@0.24.0: + resolution: {integrity: sha512-FuLPevChGDshgSicjisSooU0cemp/sGXR841D5LHMB7mTVOmsEHcAxaH3irL53+8YDIeVNQEySh4DaYU/iuPqQ==} engines: {node: '>=18'} hasBin: true @@ -3042,9 +3037,6 @@ packages: resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} engines: {node: '>=6'} - escape-html@1.0.3: - resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==} - escape-string-regexp@1.0.5: resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} engines: {node: '>=0.8.0'} @@ -3098,6 +3090,12 @@ packages: peerDependencies: eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7 + eslint-plugin-storybook@0.11.1: + resolution: {integrity: sha512-yGKpAYkBm/Q2hZg476vRUAvd9lAccjjSvzU5nYy3BSQbKTPy7uopx7JEpwk2vSuw4weTMZzWF64z9/gp/K5RCg==} + engines: {node: '>= 18'} + peerDependencies: + eslint: '>=6' + eslint-scope@5.1.1: resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} engines: {node: '>=8.0.0'} @@ -3110,6 +3108,10 @@ packages: resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + eslint-visitor-keys@4.2.0: + resolution: {integrity: sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + eslint@8.57.1: resolution: {integrity: sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -3156,10 +3158,6 @@ packages: resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} engines: {node: '>=0.10.0'} - etag@1.8.1: - resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==} - engines: {node: '>= 0.6'} - eventemitter3@4.0.7: resolution: {integrity: sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==} @@ -3187,10 +3185,6 @@ packages: resolution: {integrity: sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - express@4.21.0: - resolution: {integrity: sha512-VqcNGcj/Id5ZT1LZ/cfihi3ttTn+NJmkli2eZADigjq29qTlWi/hAQ43t/VLPq8+UX06FCEx3ByOYet6ZFblng==} - engines: {node: '>= 0.10.0'} - fast-deep-equal@3.1.3: resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} @@ -3205,17 +3199,14 @@ packages: resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==} engines: {node: '>=8.6.0'} - fast-json-parse@1.0.3: - resolution: {integrity: sha512-FRWsaZRWEJ1ESVNbDWmsAlqDk96gPQezzLghafp5J4GUKjbCz3OkAHuZs5TuPEtkbVQERysLp9xv6c24fBm8Aw==} - fast-json-stable-stringify@2.1.0: resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} fast-levenshtein@2.0.6: resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} - fast-uri@3.0.1: - resolution: {integrity: sha512-MWipKbbYiYI0UC7cl8m/i/IWTqfC8YXsqjzybjddLsFjStroQzsHXkc73JutMvBiXmOvapk+axIl79ig5t55Bw==} + fast-uri@3.0.3: + resolution: {integrity: sha512-aLrHthzCjH5He4Z2H9YZ+v6Ujb9ocRuW6ZzkJQOrTxleEijANq4v1TsaPaVG1PZcuurEzrLcWRyYBYXD5cEiaw==} fastq@1.17.1: resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==} @@ -3235,29 +3226,14 @@ packages: resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} engines: {node: ^10.12.0 || >=12.0.0} - file-system-cache@2.3.0: - resolution: {integrity: sha512-l4DMNdsIPsVnKrgEXbJwDJsA5mB8rGwHYERMgqQx/xAUtChPJMre1bXBzDEqqVbWv9AIbFezXMxeEkZDSrXUOQ==} - - filesize@10.1.6: - resolution: {integrity: sha512-sJslQKU2uM33qH5nqewAwVB2QgR6w1aMNsYUp3aN5rMRyXEwJGmZvaWzeJFNTOXWlHQyBFCWrdj3fV/fsTOX8w==} - engines: {node: '>= 10.4.0'} - fill-range@7.1.1: resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} engines: {node: '>=8'} - finalhandler@1.3.1: - resolution: {integrity: sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==} - engines: {node: '>= 0.8'} - find-cache-dir@3.3.2: resolution: {integrity: sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==} engines: {node: '>=8'} - find-cache-dir@4.0.0: - resolution: {integrity: sha512-9ZonPT4ZAK4a+1pUPVPZJapbi7O5qbbJPdYw/NOQWZZbVLdDTYM3A4R9z/DpAM08IDaFGsvPgiGZ82WEwUDWjg==} - engines: {node: '>=14.16'} - find-up-simple@1.0.0: resolution: {integrity: sha512-q7Us7kcjj2VMePAa02hDAF6d+MzsdsAWEwYyOpwUtlerRBkOEPBCRZrAV4XfcSN8fHAgaD0hP7miwoay6DCprw==} engines: {node: '>=18'} @@ -3274,10 +3250,6 @@ packages: resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} engines: {node: '>=10'} - find-up@6.3.0: - resolution: {integrity: sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - find-versions@6.0.0: resolution: {integrity: sha512-2kCCtc+JvcZ86IGAz3Z2Y0A1baIz9fL31pH/0S1IqZr9Iwnjq8izfPtrCyQKO6TLMPELLsQMre7VDqeIKCsHkA==} engines: {node: '>=18'} @@ -3292,50 +3264,17 @@ packages: for-each@0.3.3: resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==} - foreground-child@3.3.0: - resolution: {integrity: sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==} - engines: {node: '>=14'} - - fork-ts-checker-webpack-plugin@8.0.0: - resolution: {integrity: sha512-mX3qW3idpueT2klaQXBzrIM/pHw+T0B/V9KHEvNrqijTq9NFnMZU6oreVxDYcf33P8a5cW+67PjodNHthGnNVg==} - engines: {node: '>=12.13.0', yarn: '>=1.0.0'} - peerDependencies: - typescript: '>3.6.0' - webpack: ^5.11.0 - form-data@4.0.0: resolution: {integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==} engines: {node: '>= 6'} - forwarded@0.2.0: - resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==} - engines: {node: '>= 0.6'} - - fraction.js@4.3.7: - resolution: {integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==} - - fresh@0.5.2: - resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==} - engines: {node: '>= 0.6'} - from2@2.3.0: resolution: {integrity: sha512-OMcX/4IC/uqEPVgGeyfN22LJk6AZrMkRZHxcHBMBvHScDGgwTm2GT2Wkgtocyd3JfZffjj2kYUDXXII0Fk9W0g==} - fs-extra@10.1.0: - resolution: {integrity: sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==} - engines: {node: '>=12'} - - fs-extra@11.1.1: - resolution: {integrity: sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ==} - engines: {node: '>=14.14'} - fs-extra@11.2.0: resolution: {integrity: sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==} engines: {node: '>=14.14'} - fs-monkey@1.0.6: - resolution: {integrity: sha512-b1FMfwetIKymC0eioW7mTywihSQE4oLzQn1dB6rZB5fx/3NpNEdAWeCSMB+60/AeT0TCXsxzAlcYVEFCTAksWg==} - fs.realpath@1.0.0: resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} @@ -3369,9 +3308,6 @@ packages: resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} engines: {node: 6.* || 8.* || >= 10.*} - get-func-name@2.0.2: - resolution: {integrity: sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==} - get-intrinsic@1.2.4: resolution: {integrity: sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==} engines: {node: '>= 0.4'} @@ -3403,9 +3339,6 @@ packages: git-log-parser@1.2.1: resolution: {integrity: sha512-PI+sPDvHXNPl5WNOErAK05s3j0lgwUzMN6o8cyQrDaKfT3qd7TmNJKeXX+SknI5I0QhG5fVPAEwSY4tRGDtYoQ==} - github-slugger@2.0.0: - resolution: {integrity: sha512-IaOQ9puYtjrkq7Y0Ygl9KDZnrf/aiUJYUpVf89y8kyaxbRG7Y1SrX/jaumrv81vc61+kiMempujsM3Yw7w5qcw==} - glob-parent@5.1.2: resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} engines: {node: '>= 6'} @@ -3417,10 +3350,6 @@ packages: glob-to-regexp@0.4.1: resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==} - glob@10.4.5: - resolution: {integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==} - hasBin: true - glob@7.2.3: resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} deprecated: Glob versions prior to v9 are no longer supported @@ -3491,19 +3420,6 @@ packages: resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} engines: {node: '>= 0.4'} - hast-util-heading-rank@3.0.0: - resolution: {integrity: sha512-EJKb8oMUXVHcWZTDepnr+WNbfnXKFNf9duMesmr4S8SXTJBJ9M4Yok08pu9vxdJwdlGRhVumk9mEhkEvKGifwA==} - - hast-util-is-element@3.0.0: - resolution: {integrity: sha512-Val9mnv2IWpLbNPqc/pUem+a7Ipj2aHacCwgNfTiK0vJKl0LF+4Ba4+v1oPHFpf3bLYmreq0/l3Gud9S5OH42g==} - - hast-util-to-string@3.0.0: - resolution: {integrity: sha512-OGkAxX1Ua3cbcW6EJ5pT/tslVb90uViVkcJ4ZZIMW/R33DX/AkcJcRrPebPwJkHYwlDHXz4aIwvAAaAdtrACFA==} - - he@1.2.0: - resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==} - hasBin: true - highlight.js@10.7.3: resolution: {integrity: sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A==} @@ -3523,40 +3439,9 @@ packages: resolution: {integrity: sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==} engines: {node: '>=12'} - html-entities@2.5.2: - resolution: {integrity: sha512-K//PSRMQk4FZ78Kyau+mZurHn3FH0Vwr+H36eE0rPbeYkRRi9YxceYPhuN60UwWorxyKHhqoAJl2OFKa4BVtaA==} - html-escaper@2.0.2: resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} - html-minifier-terser@6.1.0: - resolution: {integrity: sha512-YXxSlJBZTP7RS3tWnQw74ooKa6L9b9i9QYXY21eUEvhZ3u9XLfv6OnFsQq6RxkhHygsaUMvYsZRV5rU/OVNZxw==} - engines: {node: '>=12'} - hasBin: true - - html-tags@3.3.1: - resolution: {integrity: sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ==} - engines: {node: '>=8'} - - html-webpack-plugin@5.6.0: - resolution: {integrity: sha512-iwaY4wzbe48AfKLZ/Cc8k0L+FKG6oSNRaZ8x5A/T/IVDGyXcbHncM9TdDa93wn0FsSm82FhTKW7f3vS61thXAw==} - engines: {node: '>=10.13.0'} - peerDependencies: - '@rspack/core': 0.x || 1.x - webpack: ^5.20.0 - peerDependenciesMeta: - '@rspack/core': - optional: true - webpack: - optional: true - - htmlparser2@6.1.0: - resolution: {integrity: sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==} - - http-errors@2.0.0: - resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==} - engines: {node: '>= 0.8'} - http-proxy-agent@5.0.0: resolution: {integrity: sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==} engines: {node: '>= 6'} @@ -3585,10 +3470,6 @@ packages: resolution: {integrity: sha512-/1/GPCpDUCCYwlERiYjxoczfP0zfvZMU/OWgQPMya9AbAE24vseigFdhAMObpc8Q4lc/kjutPfUddDYyAmejnA==} engines: {node: '>=18.18.0'} - iconv-lite@0.4.24: - resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} - engines: {node: '>=0.10.0'} - iconv-lite@0.6.3: resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} engines: {node: '>=0.10.0'} @@ -3672,14 +3553,6 @@ packages: resolution: {integrity: sha512-2dYz766i9HprMBasCMvHMuazJ7u4WzhJwo5kb3iPSiW/iRYV6uPari3zHoqZlnuaR7V1bEiNMxikhp37rdBXbw==} engines: {node: '>=12'} - ipaddr.js@1.9.1: - resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==} - engines: {node: '>= 0.10'} - - is-absolute-url@4.0.1: - resolution: {integrity: sha512-/51/TKE88Lmm7Gc4/8btclNXWS+g50wXhYJq8HWIBAGUBnoAdRu1aXeh364t/O7wXDAcTJDP8PNuNKWUDWie+A==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - is-arguments@1.1.1: resolution: {integrity: sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==} engines: {node: '>= 0.4'} @@ -3698,10 +3571,6 @@ packages: is-bigint@1.0.4: resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==} - is-binary-path@2.1.0: - resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} - engines: {node: '>=8'} - is-boolean-object@1.1.2: resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==} engines: {node: '>= 0.4'} @@ -3785,10 +3654,6 @@ packages: resolution: {integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==} engines: {node: '>=12'} - is-plain-object@5.0.0: - resolution: {integrity: sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==} - engines: {node: '>=0.10.0'} - is-potential-custom-element-name@1.0.1: resolution: {integrity: sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==} @@ -3893,9 +3758,6 @@ packages: iterator.prototype@1.1.2: resolution: {integrity: sha512-DR33HMMr8EzwuRL8Y9D3u2BMj8+RqSE850jfGu59kS7tbmPLzGkZmVSfyCFSDxuZiEY6Rzt3T2NA/qU+NwVj1w==} - jackspeak@3.4.3: - resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==} - java-properties@1.0.2: resolution: {integrity: sha512-qjdpeo2yKlYTH7nFdK0vbZWuTCesk4o63v5iVOlhMQPfuIZQfW/HI35SjfhA+4qpg36rnFSvUK5b1m+ckIblQQ==} engines: {node: '>= 0.6.0'} @@ -4062,6 +3924,10 @@ packages: resolution: {integrity: sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w==} hasBin: true + jiti@2.4.1: + resolution: {integrity: sha512-yPBThwecp1wS9DmoA4x4KR2h3QoslacnDR8ypuFM962kI4/456Iy1oHx2RAgh4jfZNdn0bctsdadceiBUgpU1g==} + hasBin: true + js-tokens@4.0.0: resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} @@ -4095,6 +3961,11 @@ packages: engines: {node: '>=4'} hasBin: true + jsesc@3.0.2: + resolution: {integrity: sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==} + engines: {node: '>=6'} + hasBin: true + json-buffer@3.0.1: resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} @@ -4140,14 +4011,74 @@ packages: resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} engines: {node: '>= 0.8.0'} + lightningcss-darwin-arm64@1.28.2: + resolution: {integrity: sha512-/8cPSqZiusHSS+WQz0W4NuaqFjquys1x+NsdN/XOHb+idGHJSoJ7SoQTVl3DZuAgtPZwFZgRfb/vd1oi8uX6+g==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [darwin] + + lightningcss-darwin-x64@1.28.2: + resolution: {integrity: sha512-R7sFrXlgKjvoEG8umpVt/yutjxOL0z8KWf0bfPT3cYMOW4470xu5qSHpFdIOpRWwl3FKNMUdbKtMUjYt0h2j4g==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [darwin] + + lightningcss-freebsd-x64@1.28.2: + resolution: {integrity: sha512-l2qrCT+x7crAY+lMIxtgvV10R8VurzHAoUZJaVFSlHrN8kRLTvEg9ObojIDIexqWJQvJcVVV3vfzsEynpiuvgA==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [freebsd] + + lightningcss-linux-arm-gnueabihf@1.28.2: + resolution: {integrity: sha512-DKMzpICBEKnL53X14rF7hFDu8KKALUJtcKdFUCW5YOlGSiwRSgVoRjM97wUm/E0NMPkzrTi/rxfvt7ruNK8meg==} + engines: {node: '>= 12.0.0'} + cpu: [arm] + os: [linux] + + lightningcss-linux-arm64-gnu@1.28.2: + resolution: {integrity: sha512-nhfjYkfymWZSxdtTNMWyhFk2ImUm0X7NAgJWFwnsYPOfmtWQEapzG/DXZTfEfMjSzERNUNJoQjPAbdqgB+sjiw==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [linux] + + lightningcss-linux-arm64-musl@1.28.2: + resolution: {integrity: sha512-1SPG1ZTNnphWvAv8RVOymlZ8BDtAg69Hbo7n4QxARvkFVCJAt0cgjAw1Fox0WEhf4PwnyoOBaVH0Z5YNgzt4dA==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [linux] + + lightningcss-linux-x64-gnu@1.28.2: + resolution: {integrity: sha512-ZhQy0FcO//INWUdo/iEdbefntTdpPVQ0XJwwtdbBuMQe+uxqZoytm9M+iqR9O5noWFaxK+nbS2iR/I80Q2Ofpg==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [linux] + + lightningcss-linux-x64-musl@1.28.2: + resolution: {integrity: sha512-alb/j1NMrgQmSFyzTbN1/pvMPM+gdDw7YBuQ5VSgcFDypN3Ah0BzC2dTZbzwzaMdUVDszX6zH5MzjfVN1oGuww==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [linux] + + lightningcss-win32-arm64-msvc@1.28.2: + resolution: {integrity: sha512-WnwcjcBeAt0jGdjlgbT9ANf30pF0C/QMb1XnLnH272DQU8QXh+kmpi24R55wmWBwaTtNAETZ+m35ohyeMiNt+g==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [win32] + + lightningcss-win32-x64-msvc@1.28.2: + resolution: {integrity: sha512-3piBifyT3avz22o6mDKywQC/OisH2yDK+caHWkiMsF82i3m5wDBadyCjlCQ5VNgzYkxrWZgiaxHDdd5uxsi0/A==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [win32] + + lightningcss@1.28.2: + resolution: {integrity: sha512-ePLRrbt3fgjXI5VFZOLbvkLD5ZRuxGKm+wJ3ujCqBtL3NanDHPo/5zicR5uEKAPiIjBYF99BM4K4okvMznjkVA==} + engines: {node: '>= 12.0.0'} + lilconfig@2.1.0: resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==} engines: {node: '>=10'} - lilconfig@3.1.2: - resolution: {integrity: sha512-eop+wDAvpItUys0FWkHIKeC9ybYrTGbU41U5K7+bttZZeohvnY7M9dZ5kB21GNWiFT2q1OoPTvncPCgSOVO5ow==} - engines: {node: '>=14'} - lines-and-columns@1.2.4: resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} @@ -4179,10 +4110,6 @@ packages: resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} engines: {node: '>=10'} - locate-path@7.2.0: - resolution: {integrity: sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - lodash-es@4.17.21: resolution: {integrity: sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==} @@ -4223,11 +4150,8 @@ packages: resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} hasBin: true - loupe@3.1.1: - resolution: {integrity: sha512-edNu/8D5MKVfGVFRhFf8aAxiTM6Wumfz5XsaatSxlD3w4R1d/WEKUTydCdPGbl9K7QG/Ca3GnDV2sIKIpXRQcw==} - - lower-case@2.0.2: - resolution: {integrity: sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==} + loupe@3.1.2: + resolution: {integrity: sha512-23I4pFZHmAemUnz8WZXbYRSKYj801VDaNv9ETuMh7IrMc7VuVVSo+Z9iLE3ni30+U48iDWfi30d3twAXBYmnCg==} lru-cache@10.4.3: resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} @@ -4246,6 +4170,10 @@ packages: resolution: {integrity: sha512-hX9XH3ziStPoPhJxLq1syWuZMxbDvGNbVchfrdCtanC7D13888bMFow61x8axrx+GfHLtVeAx2kxL7tTGRl+Ow==} engines: {node: '>=12'} + magic-string@0.27.0: + resolution: {integrity: sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA==} + engines: {node: '>=12'} + magic-string@0.30.11: resolution: {integrity: sha512-+Wri9p0QHMy+545hKww7YAu5NyzF8iomPL/RQazugQ9+Ez4Ic3mERMd8ZTX5rfK944j+560ZJi8iAwgak1Ac7A==} @@ -4263,12 +4191,6 @@ packages: map-or-similar@1.5.0: resolution: {integrity: sha512-0aF7ZmVon1igznGI4VS30yugpduQW3y3GkcgGJOp7d8x8QrizhigUxjI/m2UojsXXto+jLAH3KSz+xOJTiORjg==} - markdown-to-jsx@7.5.0: - resolution: {integrity: sha512-RrBNcMHiFPcz/iqIj0n3wclzHXjwS7mzjBNWecKKVhNTIxQepIix6Il/wZCn2Cg5Y1ow2Qi84+eJrryFRWBEWw==} - engines: {node: '>= 10'} - peerDependencies: - react: '>= 0.14.0' - marked-terminal@7.1.0: resolution: {integrity: sha512-+pvwa14KZL74MVXjYdPR3nSInhGhNvPce/3mqLVZT2oUvt654sL1XImFuLZ1pkA866IYZ3ikDTOFUIC7XzpZZg==} engines: {node: '>=16.0.0'} @@ -4283,14 +4205,6 @@ packages: mdn-data@2.0.14: resolution: {integrity: sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==} - media-typer@0.3.0: - resolution: {integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==} - engines: {node: '>= 0.6'} - - memfs@3.5.3: - resolution: {integrity: sha512-UERzLsxzllchadvbPs5aolHh65ISpKpM+ccLbOJ8/vvpBKmAWf+la7dXFy7Mr0ySHbdHrFv5kGFCUHHe6GFEmw==} - engines: {node: '>= 4.0.0'} - memoizerific@1.11.3: resolution: {integrity: sha512-/EuHYwAPdLtXwAwSZkh/Gutery6pD2KYd44oQLhAvQp/50mpyduZh8Q7PYHXTCJ+wuXxt7oij2LXyIJOOYFPog==} @@ -4298,9 +4212,6 @@ packages: resolution: {integrity: sha512-pxQJQzB6djGPXh08dacEloMFopsOqGVRKFPYvPOt9XDZ1HasbgDZA74CJGreSU4G3Ak7EFJGoiH2auq+yXISgA==} engines: {node: '>=18'} - merge-descriptors@1.0.3: - resolution: {integrity: sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==} - merge-stream@2.0.0: resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} @@ -4308,10 +4219,6 @@ packages: resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} engines: {node: '>= 8'} - methods@1.1.2: - resolution: {integrity: sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==} - engines: {node: '>= 0.6'} - micromatch@4.0.8: resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} engines: {node: '>=8.6'} @@ -4324,11 +4231,6 @@ packages: resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} engines: {node: '>= 0.6'} - mime@1.6.0: - resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==} - engines: {node: '>=4'} - hasBin: true - mime@4.0.4: resolution: {integrity: sha512-v8yqInVjhXyqP6+Kw4fV3ZzeMRqEW6FotRsKXjRS5VMTNIuXsdRoAvklpoRgSqXm6o9VNH4/C0mgedko9DdLsQ==} engines: {node: '>=16'} @@ -4360,13 +4262,6 @@ packages: minimist@1.2.8: resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} - minipass@7.1.2: - resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} - engines: {node: '>=16 || 14 >=14.17'} - - ms@2.0.0: - resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} - ms@2.1.3: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} @@ -4381,22 +4276,12 @@ packages: natural-compare@1.4.0: resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} - negotiator@0.6.3: - resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==} - engines: {node: '>= 0.6'} - neo-async@2.6.2: resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} nerf-dart@1.0.0: resolution: {integrity: sha512-EZSPZB70jiVsivaBLYDCyntd5eH8NTSMOn3rB+HxwdmKThGELLdYv8qVIMWvZEFy9w8ZZpW9h9OB32l1rGtj7g==} - no-case@3.0.4: - resolution: {integrity: sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==} - - node-abort-controller@3.1.1: - resolution: {integrity: sha512-AGK2yQKIjRuqnc6VkX2Xj5d+QW8xZ87pa1UK6yA6ouUyuxfHuMP6umE5QK7UmTeOAymo+Zx1Fxiuw9rVx8taHQ==} - node-emoji@2.1.3: resolution: {integrity: sha512-E2WEOVsgs7O16zsURJ/eH8BqhF029wGpEOnv7Urwdo2wmQanOACwJQh0devF9D9RhoZru0+9JXIS0dBXIAz+lA==} engines: {node: '>=18'} @@ -4415,10 +4300,6 @@ packages: resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} engines: {node: '>=0.10.0'} - normalize-range@0.1.2: - resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==} - engines: {node: '>=0.10.0'} - normalize-url@6.1.0: resolution: {integrity: sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==} engines: {node: '>=10'} @@ -4523,10 +4404,6 @@ packages: resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} engines: {node: '>=0.10.0'} - object-hash@3.0.0: - resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==} - engines: {node: '>= 6'} - object-inspect@1.13.2: resolution: {integrity: sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==} engines: {node: '>= 0.4'} @@ -4555,13 +4432,6 @@ packages: resolution: {integrity: sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ==} engines: {node: '>= 0.4'} - objectorarray@1.0.5: - resolution: {integrity: sha512-eJJDYkhJFFbBBAxeh8xW+weHlkI28n2ZdQV/J/DNfWfSKlGEf2xcfAbZTv3riEXHAhL9SVOTs2pRmXiSTf78xg==} - - on-finished@2.4.1: - resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==} - engines: {node: '>= 0.8'} - once@1.4.0: resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} @@ -4609,10 +4479,6 @@ packages: resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} engines: {node: '>=10'} - p-limit@4.0.0: - resolution: {integrity: sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - p-locate@2.0.0: resolution: {integrity: sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==} engines: {node: '>=4'} @@ -4625,10 +4491,6 @@ packages: resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} engines: {node: '>=10'} - p-locate@6.0.0: - resolution: {integrity: sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - p-map@7.0.2: resolution: {integrity: sha512-z4cYYMMdKHzw4O5UkWJImbZynVIo0lSGTXc7bzB1e/rrDqkgGUNysK/o4bTr+0+xKvvLoTyGqYC4Fgljy9qe1Q==} engines: {node: '>=18'} @@ -4653,12 +4515,6 @@ packages: resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} engines: {node: '>=6'} - package-json-from-dist@1.0.0: - resolution: {integrity: sha512-dATvCeZN/8wQsGywez1mzHtTlP22H8OEfPrVMLNr4/eGa+ijtLn/6M5f0dY8UKNrC2O9UCU6SSoG3qRKnt7STw==} - - param-case@3.0.4: - resolution: {integrity: sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==} - parent-module@1.0.1: resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} engines: {node: '>=6'} @@ -4691,16 +4547,6 @@ packages: parse5@7.1.2: resolution: {integrity: sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==} - parseurl@1.3.3: - resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==} - engines: {node: '>= 0.8'} - - pascal-case@3.1.2: - resolution: {integrity: sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==} - - path-browserify@1.0.1: - resolution: {integrity: sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==} - path-exists@3.0.0: resolution: {integrity: sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==} engines: {node: '>=4'} @@ -4709,10 +4555,6 @@ packages: resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} engines: {node: '>=8'} - path-exists@5.0.0: - resolution: {integrity: sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - path-is-absolute@1.0.1: resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} engines: {node: '>=0.10.0'} @@ -4728,13 +4570,6 @@ packages: path-parse@1.0.7: resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} - path-scurry@1.11.1: - resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} - engines: {node: '>=16 || 14 >=14.18'} - - path-to-regexp@0.1.10: - resolution: {integrity: sha512-7lf7qcQidTku0Gu3YDPc8DJ1q7OOucfa/BSsIwjuh56VU7katFvuM8hULfkwB3Fns/rsVF7PwPKVw1sl5KQS9w==} - path-type@4.0.0: resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} engines: {node: '>=8'} @@ -4750,13 +4585,16 @@ packages: picocolors@1.1.0: resolution: {integrity: sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw==} + picocolors@1.1.1: + resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} + picomatch@2.3.1: resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} engines: {node: '>=8.6'} - pify@2.3.0: - resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} - engines: {node: '>=0.10.0'} + picomatch@4.0.2: + resolution: {integrity: sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==} + engines: {node: '>=12'} pify@3.0.0: resolution: {integrity: sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==} @@ -4778,10 +4616,6 @@ packages: resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} engines: {node: '>=8'} - pkg-dir@7.0.0: - resolution: {integrity: sha512-Ie9z/WINcxxLp27BKOCHGde4ITq9UklYKDzVo1nhk5sqGEXU3FpkwP5GM2voTGJkGd9B3Otl+Q4uwSOeSUtOBA==} - engines: {node: '>=14.16'} - polished@4.3.1: resolution: {integrity: sha512-OBatVyC/N7SCW/FaDHrSd+vn0o5cS855TOmYi4OkdWUMSJCET/xip//ch8xGUvtr3i44X9LVyWwQlRMTN3pwSA==} engines: {node: '>=10'} @@ -4831,18 +4665,6 @@ packages: peerDependencies: postcss: ^8.2.15 - postcss-import@15.1.0: - resolution: {integrity: sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==} - engines: {node: '>=14.0.0'} - peerDependencies: - postcss: ^8.0.0 - - postcss-js@4.0.1: - resolution: {integrity: sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==} - engines: {node: ^12 || ^14 || >= 16} - peerDependencies: - postcss: ^8.4.21 - postcss-load-config@3.1.4: resolution: {integrity: sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==} engines: {node: '>= 10'} @@ -4855,18 +4677,6 @@ packages: ts-node: optional: true - postcss-load-config@4.0.2: - resolution: {integrity: sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==} - engines: {node: '>= 14'} - peerDependencies: - postcss: '>=8.0.9' - ts-node: '>=9.0.0' - peerDependenciesMeta: - postcss: - optional: true - ts-node: - optional: true - postcss-loader@7.3.4: resolution: {integrity: sha512-iW5WTTBSC5BfsBJ9daFMPVrLT36MrNiC6fqOZTTaHjBNX6Pfd5p+hSBqe/fEeNd7pc13QiAyGt7VdGMw4eRC4A==} engines: {node: '>= 14.15.0'} @@ -4939,12 +4749,6 @@ packages: peerDependencies: postcss: ^8.0.0 - postcss-nested@6.2.0: - resolution: {integrity: sha512-HQbt28KulC5AJzG+cZtj9kvKB93CFCdLvog1WFLf1D+xmMvPGlBstkpTEZfK5+AN9hfJocyBFCNiqyS48bpgzQ==} - engines: {node: '>=12.0'} - peerDependencies: - postcss: ^8.2.14 - postcss-normalize-charset@5.1.0: resolution: {integrity: sha512-mSgUJ+pd/ldRGVx26p2wz9dNZ7ji6Pn8VWBajMXFf8jk7vUoSrZ2lt/wZR7DtlZYKesmZI680qjr2CeFF2fbUg==} engines: {node: ^10 || ^12 || >=14.0} @@ -5040,6 +4844,10 @@ packages: resolution: {integrity: sha512-56rxCq7G/XfB4EkXq9Egn5GCqugWvDFjafDOThIdMBsI15iqPqR5r15TfSr1YPYeEI19YeaXMCbY6u88Y76GLQ==} engines: {node: ^10 || ^12 || >=14} + postcss@8.4.49: + resolution: {integrity: sha512-OCVPnIObs4N29kxTjzLfUryOkvZEq+pf8jTF0lg8E7uETuWHA+v7j3c/xJmiqpX450191LlmZfUKkXxkTry7nA==} + engines: {node: ^10 || ^12 || >=14} + prelude-ls@1.2.1: resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} engines: {node: '>= 0.8.0'} @@ -5048,14 +4856,66 @@ packages: resolution: {integrity: sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==} engines: {node: '>=6.0.0'} - prettier@3.3.3: - resolution: {integrity: sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew==} + prettier-plugin-tailwindcss@0.6.9: + resolution: {integrity: sha512-r0i3uhaZAXYP0At5xGfJH876W3HHGHDp+LCRUJrs57PBeQ6mYHMwr25KH8NPX44F2yGTvdnH7OqCshlQx183Eg==} + engines: {node: '>=14.21.3'} + peerDependencies: + '@ianvs/prettier-plugin-sort-imports': '*' + '@prettier/plugin-pug': '*' + '@shopify/prettier-plugin-liquid': '*' + '@trivago/prettier-plugin-sort-imports': '*' + '@zackad/prettier-plugin-twig-melody': '*' + prettier: ^3.0 + prettier-plugin-astro: '*' + prettier-plugin-css-order: '*' + prettier-plugin-import-sort: '*' + prettier-plugin-jsdoc: '*' + prettier-plugin-marko: '*' + prettier-plugin-multiline-arrays: '*' + prettier-plugin-organize-attributes: '*' + prettier-plugin-organize-imports: '*' + prettier-plugin-sort-imports: '*' + prettier-plugin-style-order: '*' + prettier-plugin-svelte: '*' + peerDependenciesMeta: + '@ianvs/prettier-plugin-sort-imports': + optional: true + '@prettier/plugin-pug': + optional: true + '@shopify/prettier-plugin-liquid': + optional: true + '@trivago/prettier-plugin-sort-imports': + optional: true + '@zackad/prettier-plugin-twig-melody': + optional: true + prettier-plugin-astro: + optional: true + prettier-plugin-css-order: + optional: true + prettier-plugin-import-sort: + optional: true + prettier-plugin-jsdoc: + optional: true + prettier-plugin-marko: + optional: true + prettier-plugin-multiline-arrays: + optional: true + prettier-plugin-organize-attributes: + optional: true + prettier-plugin-organize-imports: + optional: true + prettier-plugin-sort-imports: + optional: true + prettier-plugin-style-order: + optional: true + prettier-plugin-svelte: + optional: true + + prettier@3.4.2: + resolution: {integrity: sha512-e9MewbtFo+Fevyuxn/4rrcDAaq0IYxPGLvObpQjiZBMAzB9IGmzlnG9RZy3FFas+eBMu2vA0CszMeduow5dIuQ==} engines: {node: '>=14'} hasBin: true - pretty-error@4.0.0: - resolution: {integrity: sha512-AoJ5YMAcXKYxKhuJGdcvse+Voc6v1RgnsR3nWcYU7q4t6z0Q6T86sv5Zq8VIRbOWWFpvdGE83LtdSMNd+6Y0xw==} - pretty-format@27.5.1: resolution: {integrity: sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} @@ -5089,16 +4949,9 @@ packages: proto-list@1.2.4: resolution: {integrity: sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==} - proxy-addr@2.0.7: - resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==} - engines: {node: '>= 0.10'} - psl@1.9.0: resolution: {integrity: sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==} - punycode@1.4.1: - resolution: {integrity: sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==} - punycode@2.3.1: resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} engines: {node: '>=6'} @@ -5114,46 +4967,19 @@ packages: (For a CapTP with native promises, see @endo/eventual-send and @endo/captp) - qs@6.13.0: - resolution: {integrity: sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==} - engines: {node: '>=0.6'} - querystringify@2.2.0: resolution: {integrity: sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==} queue-microtask@1.2.3: resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} - ramda@0.29.0: - resolution: {integrity: sha512-BBea6L67bYLtdbOqfp8f58fPMqEwx0doL+pAi8TZyp2YWz8R9G8z9x75CZI8W+ftqhFHCpEX2cRnUUXK130iKA==} - randombytes@2.1.0: resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} - range-parser@1.2.1: - resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==} - engines: {node: '>= 0.6'} - - raw-body@2.5.2: - resolution: {integrity: sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==} - engines: {node: '>= 0.8'} - rc@1.2.8: resolution: {integrity: sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==} hasBin: true - react-colorful@5.6.1: - resolution: {integrity: sha512-1exovf0uGTGyq5mXQT0zgQ80uvj2PCwvF8zY1RN9/vbJVSjSo3fsB/4L3ObbF7u70NduSiK4xu4Y6q1MHoUGEw==} - peerDependencies: - react: '>=16.8.0' - react-dom: '>=16.8.0' - - react-confetti@6.1.0: - resolution: {integrity: sha512-7Ypx4vz0+g8ECVxr88W9zhcQpbeujJAVqL14ZnXJ3I23mOI9/oBVTQ3dkJhUmB0D6XOtCZEM6N0Gm9PMngkORw==} - engines: {node: '>=10.18'} - peerDependencies: - react: ^16.3.0 || ^17.0.1 || ^18.0.0 - react-day-picker@8.10.1: resolution: {integrity: sha512-TMx7fNbhLk15eqcMt+7Z7S2KF7mfTId/XJDjKE8f+IUcFn0l08/kI4FiYTL/0yuOLmEcbR4Fwe3GJf/NiiMnPA==} peerDependencies: @@ -5165,8 +4991,8 @@ packages: peerDependencies: typescript: '>= 4.3.x' - react-docgen@7.0.3: - resolution: {integrity: sha512-i8aF1nyKInZnANZ4uZrH49qn1paRgBZ7wZiCNBMnenlPzEv0mRl+ShpTVEI6wZNl8sSc79xZkivtgLKQArcanQ==} + react-docgen@7.1.0: + resolution: {integrity: sha512-APPU8HB2uZnpl6Vt/+0AFoVYgSRtfiP6FLrZgPPTDmqSb2R4qZRbgd0A3VzIFxDt5e+Fozjx79WjLWnF69DK8g==} engines: {node: '>=16.14.0'} react-dom@18.3.1: @@ -5174,31 +5000,20 @@ packages: peerDependencies: react: ^18.3.1 - react-element-to-jsx-string@15.0.0: - resolution: {integrity: sha512-UDg4lXB6BzlobN60P8fHWVPX3Kyw8ORrTeBtClmIlGdkOOE+GYQSFvmEU5iLLpwp/6v42DINwNcwOhOLfQ//FQ==} - peerDependencies: - react: ^0.14.8 || ^15.0.1 || ^16.0.0 || ^17.0.1 || ^18.0.0 - react-dom: ^0.14.8 || ^15.0.1 || ^16.0.0 || ^17.0.1 || ^18.0.0 - - react-error-boundary@4.0.13: - resolution: {integrity: sha512-b6PwbdSv8XeOSYvjt8LpgpKrZ0yGdtZokYwkwV2wlcZbxgopHX/hgPl5VgpnoVOWd868n1hktM8Qm4b+02MiLQ==} + react-dom@19.0.0: + resolution: {integrity: sha512-4GV5sHFG0e/0AD4X+ySy6UJd3jVl1iNsNHdpad0qhABJ11twS3TTBnseqsKurKcsNqCEFeGL3uLpVChpIO3QfQ==} peerDependencies: - react: '>=16.13.1' - - react-is@16.13.1: - resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} + react: ^19.0.0 - react-is@17.0.2: - resolution: {integrity: sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==} + react-is@19.0.0: + resolution: {integrity: sha512-H91OHcwjZsbq3ClIDHMzBShc1rotbfACdWENsmEf0IFvZ3FgGPtdHMcsv45bQ1hAbgdfiA8SnxTKfDS+x/8m2g==} - react-is@18.1.0: - resolution: {integrity: sha512-Fl7FuabXsJnV5Q1qIOQwx/sagGF18kogb4gpfcG4gjLBWO0WDiiz1ko/ExayuxE7InyQkBLkxRFG5oxY6Uu3Kg==} - - react-is@18.3.1: - resolution: {integrity: sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==} + react-refresh@0.14.2: + resolution: {integrity: sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA==} + engines: {node: '>=0.10.0'} - react-smooth@4.0.1: - resolution: {integrity: sha512-OE4hm7XqR0jNOq3Qmk9mFLyd6p2+j6bvbPJ7qlB7+oo0eNcL2l7WQzG6MBnT3EXY6xzkLMUBec3AfewJdA0J8w==} + react-smooth@4.0.3: + resolution: {integrity: sha512-PyxIrra8WZWrMRFcCiJsZ+JqFaxEINAt+v/w++wQKQlmO99Eh3+JTLeKApdTsLX2roBdWYXqPsaS8sO4UmdzIg==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 @@ -5209,18 +5024,13 @@ packages: react: '>=16.6.0' react-dom: '>=16.6.0' - react-transition-state@2.1.2: - resolution: {integrity: sha512-RkDYBkj1V1ZqBA5AwQPrMt2Uagwsx6b//GVJdRDhs/t0o66w2nhQiyHyFGQEI60mgtbaIdLm8yhBRCvhA+FxEg==} - peerDependencies: - react: '>=16.8.0' - react-dom: '>=16.8.0' - react@18.3.1: resolution: {integrity: sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==} engines: {node: '>=0.10.0'} - read-cache@1.0.0: - resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==} + react@19.0.0: + resolution: {integrity: sha512-V8AVnmPIICiWpGfm6GLzCR/W5FXLchHop40W4nXBmdlEceh16rCN8O8LNWm5bh5XUX91fh7KpA+W0TgMKmgTpQ==} + engines: {node: '>=0.10.0'} read-package-up@11.0.0: resolution: {integrity: sha512-MbgfoNPANMdb4oRBNg5eqLbB2t2r+o5Ua1pNt8BqGp4I0FJZhuVSOj3PaBPni4azWuSzEdNn2evevzVmEk1ohQ==} @@ -5233,10 +5043,6 @@ packages: readable-stream@2.3.8: resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==} - readdirp@3.6.0: - resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} - engines: {node: '>=8.10.0'} - recast@0.23.9: resolution: {integrity: sha512-Hx/BGIbwj+Des3+xy5uAtAbdCyqK9y9wbBcDFDYanLS9JnMqf7OeF87HQwUimE87OEc72mr6tkKUKMBBL+hF9Q==} engines: {node: '>= 4'} @@ -5244,12 +5050,12 @@ packages: recharts-scale@0.4.5: resolution: {integrity: sha512-kivNFO+0OcUNu7jQquLXAxz1FIwZj8nrj+YkOKc5694NbjCvcT6aSZiIzNzd2Kul4o4rTto8QVR9lMNtxD4G1w==} - recharts@2.13.3: - resolution: {integrity: sha512-YDZ9dOfK9t3ycwxgKbrnDlRC4BHdjlY73fet3a0C1+qGMjXVZe6+VXmpOIIhzkje5MMEL8AN4hLIe4AMskBzlA==} + recharts@2.15.0: + resolution: {integrity: sha512-cIvMxDfpAmqAmVgc4yb7pgm/O1tmmkl/CjrvXuW+62/+7jj/iF9Ykm+hb/UJt42TREHMyd3gb+pkgoa2MxgDIw==} engines: {node: '>=14'} peerDependencies: - react: ^16.0.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.0.0 || ^17.0.0 || ^18.0.0 + react: ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + react-dom: ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 redent@3.0.0: resolution: {integrity: sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==} @@ -5288,19 +5094,6 @@ packages: resolution: {integrity: sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==} hasBin: true - rehype-external-links@3.0.0: - resolution: {integrity: sha512-yp+e5N9V3C6bwBeAC4n796kc86M4gJCdlVhiMTxIrJG5UHDMh+PJANf9heqORJbt1nrCbDwIlAZKjANIaVBbvw==} - - rehype-slug@6.0.0: - resolution: {integrity: sha512-lWyvf/jwu+oS5+hL5eClVd3hNdmwM1kAC0BUvEGD19pajQMIzcNUd/k9GsfQ+FfECvX+JE+e9/btsKH0EjJT6A==} - - relateurl@0.2.7: - resolution: {integrity: sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==} - engines: {node: '>= 0.10'} - - renderkid@3.0.0: - resolution: {integrity: sha512-q/7VIQA8lmM1hF+jn+sFSPWGlMkSAeNYcPLmDQx2zzuiDfaLrOmumR8iaUKlenFgh0XRPIUeSPlH3A+AW3Z5pg==} - require-directory@2.1.1: resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} engines: {node: '>=0.10.0'} @@ -5384,6 +5177,11 @@ packages: engines: {node: '>=10.0.0'} hasBin: true + rollup@4.28.1: + resolution: {integrity: sha512-61fXYl/qNVinKmGSTHAZ6Yy8I3YIJC/r2m9feHo6SwVAVcLT5MPwOUFe7EuURA/4m0NR8lXG4BBXuo/IZEsjMg==} + engines: {node: '>=18.0.0', npm: '>=8.0.0'} + hasBin: true + run-parallel@1.2.0: resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} @@ -5414,6 +5212,9 @@ packages: scheduler@0.23.2: resolution: {integrity: sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==} + scheduler@0.25.0: + resolution: {integrity: sha512-xFVuu11jh+xcO7JOAGJNOXld8/TcEHK/4CituBUeUb5hqxJLj9YuemAEuvm9gQ/+pgXYfbQuqAkiYu+u7YEsNA==} + schema-utils@2.7.1: resolution: {integrity: sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==} engines: {node: '>= 8.9.0'} @@ -5422,9 +5223,9 @@ packages: resolution: {integrity: sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==} engines: {node: '>= 10.13.0'} - schema-utils@4.2.0: - resolution: {integrity: sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==} - engines: {node: '>= 12.13.0'} + schema-utils@4.3.0: + resolution: {integrity: sha512-Gf9qqc58SpCA/xdziiHz35F4GNIWYWZrEshUc/G/r5BnLph6xpKuLeoJoQuj5WfBIx/eQLf+hmVPYHaxJu7V2g==} + engines: {node: '>= 10.13.0'} semantic-release@24.1.1: resolution: {integrity: sha512-4Ax2GxD411jUe9IdhOjMLuN+6wAj+aKjvOGngByrpD/iKL+UKN/2puQglhyI4gxNyy9XzEBMzBwbqpnEwbXGEg==} @@ -5448,17 +5249,9 @@ packages: engines: {node: '>=10'} hasBin: true - send@0.19.0: - resolution: {integrity: sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==} - engines: {node: '>= 0.8.0'} - serialize-javascript@6.0.2: resolution: {integrity: sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==} - serve-static@1.16.2: - resolution: {integrity: sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==} - engines: {node: '>= 0.8.0'} - set-function-length@1.2.2: resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==} engines: {node: '>= 0.4'} @@ -5467,9 +5260,6 @@ packages: resolution: {integrity: sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==} engines: {node: '>= 0.4'} - setprototypeof@1.2.0: - resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} - shebang-command@2.0.0: resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} engines: {node: '>=8'} @@ -5529,9 +5319,6 @@ packages: resolution: {integrity: sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==} deprecated: Please use @jridgewell/sourcemap-codec instead - space-separated-tokens@2.0.2: - resolution: {integrity: sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==} - spawn-error-forwarder@1.0.0: resolution: {integrity: sha512-gRjMgK5uFjbCvdibeGJuy3I5OYz6VLoVdsOJdA6wV0WlfQVLFueoqMxwwYD9RODdgb6oUIvlRlsyFSiQkMKu0g==} @@ -5561,33 +5348,19 @@ packages: resolution: {integrity: sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==} engines: {node: '>=10'} - statuses@2.0.1: - resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==} - engines: {node: '>= 0.8'} - stop-iteration-iterator@1.0.0: resolution: {integrity: sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ==} engines: {node: '>= 0.4'} - store2@2.14.3: - resolution: {integrity: sha512-4QcZ+yx7nzEFiV4BMLnr/pRa5HYzNITX2ri0Zh6sT9EyQHbBHacC6YigllUPU9X3D0f/22QCgfokpKs52YRrUg==} - - storybook-source-link@4.0.1: - resolution: {integrity: sha512-eafQgCxZ5/0ZIumT/3W/LVhFgl3Z/OeBxRkmOKkLJx9F1gpZmwNhT04IvgcSScc810ovKK1IdZ1pogkefi1s/A==} + storybook@8.4.7: + resolution: {integrity: sha512-RP/nMJxiWyFc8EVMH5gp20ID032Wvk+Yr3lmKidoegto5Iy+2dVQnUoElZb2zpbVXNHWakGuAkfI0dY1Hfp/vw==} + hasBin: true peerDependencies: - '@storybook/addons': '*' - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + prettier: ^2 || ^3 peerDependenciesMeta: - react: - optional: true - react-dom: + prettier: optional: true - storybook@8.3.3: - resolution: {integrity: sha512-FG2KAVQN54T9R6voudiEftehtkXtLO+YVGP2gBPfacEdDQjY++ld7kTbHzpTT/bpCDx7Yq3dqOegLm9arVJfYw==} - hasBin: true - stream-combiner2@1.1.1: resolution: {integrity: sha512-3PnJbYgS56AeWgtKF5jtJRT6uFJe56Z0Hc5Ngg/6sI6rIt8iiMBTa9cvdyFfpMQjaVHr8dusbNeFGIIonxOvKw==} @@ -5602,10 +5375,6 @@ packages: resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} engines: {node: '>=8'} - string-width@5.1.2: - resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} - engines: {node: '>=12'} - string.prototype.matchall@4.0.11: resolution: {integrity: sha512-NUdh0aDavY2og7IbBPenWqR9exH+E26Sv8e0/eTe1tltDGZL+GtBkDAnnyBtmekfK6/Dq3MkcGtzXFEd1LQrtg==} engines: {node: '>= 0.4'} @@ -5631,10 +5400,6 @@ packages: resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} engines: {node: '>=8'} - strip-ansi@7.1.0: - resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} - engines: {node: '>=12'} - strip-bom@3.0.0: resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} engines: {node: '>=4'} @@ -5686,11 +5451,6 @@ packages: peerDependencies: postcss: ^8.2.15 - sucrase@3.35.0: - resolution: {integrity: sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==} - engines: {node: '>=16 || 14 >=14.17'} - hasBin: true - super-regex@1.0.0: resolution: {integrity: sha512-CY8u7DtbvucKuquCmOFEKhr9Besln7n9uN8eFbwcoGYWXOMW07u2o8njWaiXt11ylS3qoGF55pILjRmPlbodyg==} engines: {node: '>=18'} @@ -5723,9 +5483,6 @@ packages: symbol-tree@3.2.4: resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==} - synchronous-promise@2.0.17: - resolution: {integrity: sha512-AsS729u2RHUfEra9xJrE39peJcc2stq2+poBXX8bcM08Y6g9j/i/PUzwNQqkaJde7Ntg1TO7bSREbR5sdosQ+g==} - synckit@0.9.1: resolution: {integrity: sha512-7gr8p9TQP6RAHusBOSLs46F4564ZrjV8xFmw5zCmgmhGUcw2hxsShhJ6CEiHQMgPDwAQ1fWHPM0ypc4RMAig4A==} engines: {node: ^14.18.0 || >=16.0.0} @@ -5733,21 +5490,25 @@ packages: tabbable@6.2.0: resolution: {integrity: sha512-Cat63mxsVJlzYvN51JmVXIgNoUokrIaT2zLclCXjRd8boZ0004U4KCs/sToJ75C6sdlByWxpYnb5Boif1VSFew==} - tailwind-merge@2.5.2: - resolution: {integrity: sha512-kjEBm+pvD+6eAwzJL2Bi+02/9LFLal1Gs61+QB7HvTfQQ0aXwC5LGT8PEt1gS0CWKktKe6ysPTAy3cBC5MeiIg==} + tailwind-merge@2.5.5: + resolution: {integrity: sha512-0LXunzzAZzo0tEPxV3I297ffKZPlKDrjj7NXphC8V5ak9yHC5zRmxnOe2m/Rd/7ivsOMJe3JZ2JVocoDdQTRBA==} - tailwindcss@3.4.13: - resolution: {integrity: sha512-KqjHOJKogOUt5Bs752ykCeiwvi0fKVkr5oqsFNt/8px/tA8scFPIlkygsf6jXrfCqGHz7VflA6+yytWuM+XhFw==} - engines: {node: '>=14.0.0'} - hasBin: true + tailwind-variants@0.3.0: + resolution: {integrity: sha512-ho2k5kn+LB1fT5XdNS3Clb96zieWxbStE9wNLK7D0AV64kdZMaYzAKo0fWl6fXLPY99ffF9oBJnIj5escEl/8A==} + engines: {node: '>=16.x', pnpm: '>=7.x'} + peerDependencies: + tailwindcss: '*' + + tailwindcss@4.0.0-beta.5: + resolution: {integrity: sha512-59zeDyaVE5z1iQnhk5cGeBJvb6Z/Iym4qSFzPddiotWbnqWcIqj0kRgZH8OyR4VZU+solTRQaWRgfDZ8PQ+p8A==} + + tailwindcss@4.0.0-beta.6: + resolution: {integrity: sha512-eCCuMk3H65w4J/QWkjxfeWoBSKbCD3E6Uj2LA6Xkkl4eMa1MXuwVpIU1RXcLIp+BVsXGEZMP7i7uJig7KxfAXQ==} tapable@2.2.1: resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} engines: {node: '>=6'} - telejson@7.2.0: - resolution: {integrity: sha512-1QTEcJkJEhc8OnStBx/ILRu5J2p0GjvWsBx56bmZRqnrkdBMUe+nX92jxV+p3dB4CP6PZCdJMQJwCggkNBMzkQ==} - temp-dir@3.0.0: resolution: {integrity: sha512-nHc6S/bwIilKHNRgK/3jlhDoIHcp45YgyiwcAk46Tr0LfEqGBVpmiAyuiuxeVE44m3mXnEeVhaipLOEWmH+Njw==} engines: {node: '>=14.16'} @@ -5756,8 +5517,8 @@ packages: resolution: {integrity: sha512-7jDLIdD2Zp0bDe5r3D2qtkd1QOCacylBuL7oa4udvN6v2pqr4+LcCr67C8DR1zkpaZ8XosF5m1yQSabKAW6f2g==} engines: {node: '>=14.16'} - terser-webpack-plugin@5.3.10: - resolution: {integrity: sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w==} + terser-webpack-plugin@5.3.11: + resolution: {integrity: sha512-RVCsMfuD0+cTt3EwX8hSl2Ks56EbFHWmhluwcqoPKtBnfjiT6olaq7PRIRfhyU8nnC2MrnDrBLfrD/RGE+cVXQ==} engines: {node: '>= 10.13.0'} peerDependencies: '@swc/core': '*' @@ -5777,6 +5538,11 @@ packages: engines: {node: '>=10'} hasBin: true + terser@5.37.0: + resolution: {integrity: sha512-B8wRRkmre4ERucLM/uXx4MOV5cbnOlVAqUst+1+iLKPI0dOgFO28f84ptoQt9HEI537PMzfYa/d+GEPKTRXmYA==} + engines: {node: '>=10'} + hasBin: true + test-exclude@6.0.0: resolution: {integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==} engines: {node: '>=8'} @@ -5820,10 +5586,6 @@ packages: resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} engines: {node: '>=8.0'} - toidentifier@1.0.1: - resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==} - engines: {node: '>=0.6'} - tough-cookie@4.1.4: resolution: {integrity: sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag==} engines: {node: '>=6'} @@ -5846,9 +5608,6 @@ packages: resolution: {integrity: sha512-q5W7tVM71e2xjHZTlgfTDoPF/SmqKG5hddq9SzR49CH2hayqRKJtQ4mtRlSxKaJlR/+9rEM+mnBHf7I2/BQcpQ==} engines: {node: '>=6.10'} - ts-interface-checker@0.1.13: - resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} - tsconfig-paths@4.2.0: resolution: {integrity: sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg==} engines: {node: '>=6'} @@ -5856,8 +5615,8 @@ packages: tslib@2.7.0: resolution: {integrity: sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==} - tween-functions@1.2.0: - resolution: {integrity: sha512-PZBtLYcCLtEcjL14Fzb1gSxPBeL7nWvGhO5ZFPGqziCcr8uvHp0NDmdjBchp6KHL+tExcg0m3NISmKxhU394dA==} + tslib@2.8.1: + resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} type-check@0.4.0: resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} @@ -5887,10 +5646,6 @@ packages: resolution: {integrity: sha512-yOGpmOAL7CkKe/91I5O3gPICmJNLJ1G4zFYVAsRHg7M64biSnPtRj0WNQt++bRkjYOqjWXrhnUw1utzmVErAdg==} engines: {node: '>=16'} - type-is@1.6.18: - resolution: {integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==} - engines: {node: '>= 0.6'} - typed-array-buffer@1.0.2: resolution: {integrity: sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==} engines: {node: '>= 0.4'} @@ -5958,15 +5713,6 @@ packages: resolution: {integrity: sha512-VGXBUVwxKMBUznyffQweQABPRRW1vHZAbadFZud4pLFAqRGvv/96vafgjWFqzourzr8YonlQiPgH0YCJfawoGQ==} engines: {node: '>=12'} - unist-util-is@6.0.0: - resolution: {integrity: sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==} - - unist-util-visit-parents@6.0.1: - resolution: {integrity: sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==} - - unist-util-visit@5.0.0: - resolution: {integrity: sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==} - universal-user-agent@7.0.2: resolution: {integrity: sha512-0JCqzSKnStlRRQfCdowvqy3cy0Dvtlb8xecj/H8JFZuCze4rwjPZQOgvFvn0Ws/usCHQFGpyr+pB9adaGwXn4Q==} @@ -5978,18 +5724,9 @@ packages: resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} engines: {node: '>= 10.0.0'} - unpipe@1.0.0: - resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} - engines: {node: '>= 0.8'} - - unplugin@1.14.1: - resolution: {integrity: sha512-lBlHbfSFPToDYp9pjXlUEFVxYLaue9f9T1HC+4OHlmj+HnMDdz9oZY+erXfoCe/5V/7gKUSY2jpXPb9S7f0f/w==} + unplugin@1.16.0: + resolution: {integrity: sha512-5liCNPuJW8dqh3+DM6uNM2EI3MLLpCKp/KY+9pB5M2S2SR2qvvDHhKgBOaTWEbZTAws3CXfB0rKTIolWKL05VQ==} engines: {node: '>=14.0.0'} - peerDependencies: - webpack-sources: ^3 - peerDependenciesMeta: - webpack-sources: - optional: true update-browserslist-db@1.1.0: resolution: {integrity: sha512-EdRAaAyk2cUE1wOf2DkEhzxqOQvFOoRJFNS6NeyJ01Gp2beMRpBAINjM2iDXE3KCuKhwnvHIQCJm6ThL2Z+HzQ==} @@ -5997,6 +5734,12 @@ packages: peerDependencies: browserslist: '>= 4.21.0' + update-browserslist-db@1.1.1: + resolution: {integrity: sha512-R8UzCaa9Az+38REPiJ1tXlImTJXlVfgHZsglwBD/k6nj76ctsH1E3q4doGrukiLQd3sGQYu56r5+lo5r94l29A==} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' + uri-js@4.4.1: resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} @@ -6007,23 +5750,12 @@ packages: url-parse@1.5.10: resolution: {integrity: sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==} - url@0.11.4: - resolution: {integrity: sha512-oCwdVC7mTuWiPyjLUz/COz5TLk6wgp0RCsN+wHZ2Ekneac9w8uuV0njcbbie2ME+Vs+d6duwmYuR3HgQXs1fOg==} - engines: {node: '>= 0.4'} - util-deprecate@1.0.2: resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} util@0.12.5: resolution: {integrity: sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==} - utila@0.4.0: - resolution: {integrity: sha512-Z0DbgELS9/L/75wZbro8xAnT50pBVFQZ+hUEueGDU5FN51YSCYM+jdxsfCiHjwNP/4LCDD0i/graKpeBnOXKRA==} - - utils-merge@1.0.1: - resolution: {integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==} - engines: {node: '>= 0.4.0'} - uuid@9.0.1: resolution: {integrity: sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==} hasBin: true @@ -6035,13 +5767,49 @@ packages: validate-npm-package-license@3.0.4: resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} - vary@1.1.2: - resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} - engines: {node: '>= 0.8'} - victory-vendor@36.9.2: resolution: {integrity: sha512-PnpQQMuxlwYdocC8fIJqVXvkeViHYzotI+NJrCuav0ZYFoq912ZHBk3mCeuj+5/VpodOjPe1z0Fk2ihgzlXqjQ==} + vite@6.0.3: + resolution: {integrity: sha512-Cmuo5P0ENTN6HxLSo6IHsjCLn/81Vgrp81oaiFFMRa8gGDj5xEjIcEpf2ZymZtZR8oU0P2JX5WuUp/rlXcHkAw==} + engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} + hasBin: true + peerDependencies: + '@types/node': ^18.0.0 || ^20.0.0 || >=22.0.0 + jiti: '>=1.21.0' + less: '*' + lightningcss: ^1.21.0 + sass: '*' + sass-embedded: '*' + stylus: '*' + sugarss: '*' + terser: ^5.16.0 + tsx: ^4.8.1 + yaml: ^2.4.2 + peerDependenciesMeta: + '@types/node': + optional: true + jiti: + optional: true + less: + optional: true + lightningcss: + optional: true + sass: + optional: true + sass-embedded: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + tsx: + optional: true + yaml: + optional: true + w3c-xmlserializer@4.0.0: resolution: {integrity: sha512-d+BFHzbiCx6zGfz0HyQ6Rg69w9k19nviJspaj4yNscGjrHu94sVP+aRm75yEbCh+r2/yR+7q6hux9LVtbuTGBw==} engines: {node: '>=14'} @@ -6057,18 +5825,6 @@ packages: resolution: {integrity: sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==} engines: {node: '>=12'} - webpack-dev-middleware@6.1.3: - resolution: {integrity: sha512-A4ChP0Qj8oGociTs6UdlRUGANIGrCDL3y+pmQMc+dSsraXHCatFpmMey4mYELA+juqwUqwQsUgJJISXl1KWmiw==} - engines: {node: '>= 14.15.0'} - peerDependencies: - webpack: ^5.0.0 - peerDependenciesMeta: - webpack: - optional: true - - webpack-hot-middleware@2.26.1: - resolution: {integrity: sha512-khZGfAeJx6I8K9zKohEWWYN6KDlVw2DHownoe+6Vtwj1LP9WFgegXnVMSkZ/dBEBtXFwrkkydsaPFlB7f8wU2A==} - webpack-sources@3.2.3: resolution: {integrity: sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==} engines: {node: '>=10.13.0'} @@ -6076,8 +5832,8 @@ packages: webpack-virtual-modules@0.6.2: resolution: {integrity: sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ==} - webpack@5.94.0: - resolution: {integrity: sha512-KcsGn50VT+06JH/iunZJedYGUJS5FGjow8wb9c0v5n1Om8O1g4L6LjtfxwlXIATopoQu+vOXXa7gYisWxCoPyg==} + webpack@5.97.1: + resolution: {integrity: sha512-EksG6gFY3L1eFMROS/7Wzgrii5mBAFe4rIr3r2BTfo7bcc+DWwFZ4OJ/miOuHJO/A85HwyI4eQ0F6IKXesO7Fg==} engines: {node: '>=10.13.0'} hasBin: true peerDependencies: @@ -6129,10 +5885,6 @@ packages: resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} engines: {node: '>=10'} - wrap-ansi@8.1.0: - resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} - engines: {node: '>=12'} - wrappy@1.0.2: resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} @@ -6177,11 +5929,6 @@ packages: resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} engines: {node: '>= 6'} - yaml@2.5.1: - resolution: {integrity: sha512-bLQOjaX/ADgQ20isPJRvF0iRUHIxVhYvr53Of7wGcWlO2jvtUlH5m87DsmulFVxRpNLOnI4tB6p/oh8D7kpn9Q==} - engines: {node: '>= 14'} - hasBin: true - yargs-parser@20.2.9: resolution: {integrity: sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==} engines: {node: '>=10'} @@ -6202,17 +5949,13 @@ packages: resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} engines: {node: '>=10'} - yocto-queue@1.1.1: - resolution: {integrity: sha512-b4JR1PFR10y1mKjhHY9LaGo6tmrgjit7hxVIeAmyMw3jegXR4dhYqLaQF5zMXZxY7tLpMyJeLjr1C4rLmkVe8g==} - engines: {node: '>=12.20'} - yoctocolors@2.1.1: resolution: {integrity: sha512-GQHQqAopRhwU8Kt1DDM8NjibDXHC8eoh1erhGAJPEyveY9qqVeXvVikNKrDz69sHowPMorbPUrH/mx8c50eiBQ==} engines: {node: '>=18'} snapshots: - '@adobe/css-tools@4.4.0': {} + '@adobe/css-tools@4.4.1': {} '@alloc/quick-lru@5.2.0': {} @@ -6226,8 +5969,16 @@ snapshots: '@babel/highlight': 7.24.7 picocolors: 1.1.0 + '@babel/code-frame@7.26.2': + dependencies: + '@babel/helper-validator-identifier': 7.25.9 + js-tokens: 4.0.0 + picocolors: 1.1.1 + '@babel/compat-data@7.25.4': {} + '@babel/compat-data@7.26.3': {} + '@babel/core@7.25.2': dependencies: '@ampproject/remapping': 2.3.0 @@ -6248,13 +5999,41 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/generator@7.25.6': + '@babel/core@7.26.0': + dependencies: + '@ampproject/remapping': 2.3.0 + '@babel/code-frame': 7.26.2 + '@babel/generator': 7.26.3 + '@babel/helper-compilation-targets': 7.25.9 + '@babel/helper-module-transforms': 7.26.0(@babel/core@7.26.0) + '@babel/helpers': 7.26.0 + '@babel/parser': 7.26.3 + '@babel/template': 7.25.9 + '@babel/traverse': 7.26.4 + '@babel/types': 7.26.3 + convert-source-map: 2.0.0 + debug: 4.3.7 + gensync: 1.0.0-beta.2 + json5: 2.2.3 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + '@babel/generator@7.25.6': dependencies: '@babel/types': 7.25.6 '@jridgewell/gen-mapping': 0.3.5 '@jridgewell/trace-mapping': 0.3.25 jsesc: 2.5.2 + '@babel/generator@7.26.3': + dependencies: + '@babel/parser': 7.26.3 + '@babel/types': 7.26.3 + '@jridgewell/gen-mapping': 0.3.5 + '@jridgewell/trace-mapping': 0.3.25 + jsesc: 3.0.2 + '@babel/helper-annotate-as-pure@7.24.7': dependencies: '@babel/types': 7.25.6 @@ -6274,6 +6053,14 @@ snapshots: lru-cache: 5.1.1 semver: 6.3.1 + '@babel/helper-compilation-targets@7.25.9': + dependencies: + '@babel/compat-data': 7.26.3 + '@babel/helper-validator-option': 7.25.9 + browserslist: 4.24.2 + lru-cache: 5.1.1 + semver: 6.3.1 + '@babel/helper-create-class-features-plugin@7.25.4(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 @@ -6319,6 +6106,13 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/helper-module-imports@7.25.9': + dependencies: + '@babel/traverse': 7.26.4 + '@babel/types': 7.26.3 + transitivePeerDependencies: + - supports-color + '@babel/helper-module-transforms@7.25.2(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 @@ -6329,12 +6123,23 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/helper-module-transforms@7.26.0(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-module-imports': 7.25.9 + '@babel/helper-validator-identifier': 7.25.9 + '@babel/traverse': 7.26.4 + transitivePeerDependencies: + - supports-color + '@babel/helper-optimise-call-expression@7.24.7': dependencies: '@babel/types': 7.25.6 '@babel/helper-plugin-utils@7.24.8': {} + '@babel/helper-plugin-utils@7.25.9': {} + '@babel/helper-remap-async-to-generator@7.25.0(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 @@ -6369,10 +6174,16 @@ snapshots: '@babel/helper-string-parser@7.24.8': {} + '@babel/helper-string-parser@7.25.9': {} + '@babel/helper-validator-identifier@7.24.7': {} + '@babel/helper-validator-identifier@7.25.9': {} + '@babel/helper-validator-option@7.24.8': {} + '@babel/helper-validator-option@7.25.9': {} + '@babel/helper-wrap-function@7.25.0': dependencies: '@babel/template': 7.25.0 @@ -6386,6 +6197,11 @@ snapshots: '@babel/template': 7.25.0 '@babel/types': 7.25.6 + '@babel/helpers@7.26.0': + dependencies: + '@babel/template': 7.25.9 + '@babel/types': 7.26.3 + '@babel/highlight@7.24.7': dependencies: '@babel/helper-validator-identifier': 7.24.7 @@ -6397,6 +6213,10 @@ snapshots: dependencies: '@babel/types': 7.25.6 + '@babel/parser@7.26.3': + dependencies: + '@babel/types': 7.26.3 + '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.25.3(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 @@ -6821,6 +6641,16 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/plugin-transform-react-jsx-self@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + + '@babel/plugin-transform-react-jsx-source@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/plugin-transform-react-jsx@7.25.2(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 @@ -7036,12 +6866,22 @@ snapshots: dependencies: regenerator-runtime: 0.14.1 + '@babel/runtime@7.26.0': + dependencies: + regenerator-runtime: 0.14.1 + '@babel/template@7.25.0': dependencies: '@babel/code-frame': 7.24.7 '@babel/parser': 7.25.6 '@babel/types': 7.25.6 + '@babel/template@7.25.9': + dependencies: + '@babel/code-frame': 7.26.2 + '@babel/parser': 7.26.3 + '@babel/types': 7.26.3 + '@babel/traverse@7.25.6': dependencies: '@babel/code-frame': 7.24.7 @@ -7054,105 +6894,104 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/traverse@7.26.4': + dependencies: + '@babel/code-frame': 7.26.2 + '@babel/generator': 7.26.3 + '@babel/parser': 7.26.3 + '@babel/template': 7.25.9 + '@babel/types': 7.26.3 + debug: 4.3.7 + globals: 11.12.0 + transitivePeerDependencies: + - supports-color + '@babel/types@7.25.6': dependencies: '@babel/helper-string-parser': 7.24.8 '@babel/helper-validator-identifier': 7.24.7 to-fast-properties: 2.0.0 - '@base2/pretty-print-object@1.0.1': {} + '@babel/types@7.26.3': + dependencies: + '@babel/helper-string-parser': 7.25.9 + '@babel/helper-validator-identifier': 7.25.9 '@bcoe/v8-coverage@0.2.3': {} - '@chromatic-com/storybook@1.9.0(react@18.3.1)': - dependencies: - chromatic: 11.10.4 - filesize: 10.1.6 - jsonfile: 6.1.0 - react-confetti: 6.1.0(react@18.3.1) - strip-ansi: 7.1.0 - transitivePeerDependencies: - - '@chromatic-com/cypress' - - '@chromatic-com/playwright' - - react - '@colors/colors@1.5.0': optional: true - '@emotion/use-insertion-effect-with-fallbacks@1.1.0(react@18.3.1)': - dependencies: - react: 18.3.1 - - '@esbuild/aix-ppc64@0.23.1': + '@esbuild/aix-ppc64@0.24.0': optional: true - '@esbuild/android-arm64@0.23.1': + '@esbuild/android-arm64@0.24.0': optional: true - '@esbuild/android-arm@0.23.1': + '@esbuild/android-arm@0.24.0': optional: true - '@esbuild/android-x64@0.23.1': + '@esbuild/android-x64@0.24.0': optional: true - '@esbuild/darwin-arm64@0.23.1': + '@esbuild/darwin-arm64@0.24.0': optional: true - '@esbuild/darwin-x64@0.23.1': + '@esbuild/darwin-x64@0.24.0': optional: true - '@esbuild/freebsd-arm64@0.23.1': + '@esbuild/freebsd-arm64@0.24.0': optional: true - '@esbuild/freebsd-x64@0.23.1': + '@esbuild/freebsd-x64@0.24.0': optional: true - '@esbuild/linux-arm64@0.23.1': + '@esbuild/linux-arm64@0.24.0': optional: true - '@esbuild/linux-arm@0.23.1': + '@esbuild/linux-arm@0.24.0': optional: true - '@esbuild/linux-ia32@0.23.1': + '@esbuild/linux-ia32@0.24.0': optional: true - '@esbuild/linux-loong64@0.23.1': + '@esbuild/linux-loong64@0.24.0': optional: true - '@esbuild/linux-mips64el@0.23.1': + '@esbuild/linux-mips64el@0.24.0': optional: true - '@esbuild/linux-ppc64@0.23.1': + '@esbuild/linux-ppc64@0.24.0': optional: true - '@esbuild/linux-riscv64@0.23.1': + '@esbuild/linux-riscv64@0.24.0': optional: true - '@esbuild/linux-s390x@0.23.1': + '@esbuild/linux-s390x@0.24.0': optional: true - '@esbuild/linux-x64@0.23.1': + '@esbuild/linux-x64@0.24.0': optional: true - '@esbuild/netbsd-x64@0.23.1': + '@esbuild/netbsd-x64@0.24.0': optional: true - '@esbuild/openbsd-arm64@0.23.1': + '@esbuild/openbsd-arm64@0.24.0': optional: true - '@esbuild/openbsd-x64@0.23.1': + '@esbuild/openbsd-x64@0.24.0': optional: true - '@esbuild/sunos-x64@0.23.1': + '@esbuild/sunos-x64@0.24.0': optional: true - '@esbuild/win32-arm64@0.23.1': + '@esbuild/win32-arm64@0.24.0': optional: true - '@esbuild/win32-ia32@0.23.1': + '@esbuild/win32-ia32@0.24.0': optional: true - '@esbuild/win32-x64@0.23.1': + '@esbuild/win32-x64@0.24.0': optional: true '@eslint-community/eslint-utils@4.4.0(eslint@8.57.1)': @@ -7187,32 +7026,44 @@ snapshots: '@floating-ui/core': 1.6.8 '@floating-ui/utils': 0.2.8 - '@floating-ui/react-dom@1.3.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@floating-ui/react-dom@1.3.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': dependencies: '@floating-ui/dom': 1.6.11 - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) - '@floating-ui/react@0.19.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@floating-ui/react-dom@2.1.2(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': dependencies: - '@floating-ui/react-dom': 1.3.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@floating-ui/dom': 1.6.11 + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) + + '@floating-ui/react@0.19.2(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': + dependencies: + '@floating-ui/react-dom': 1.3.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) aria-hidden: 1.2.4 - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) tabbable: 6.2.0 - '@floating-ui/utils@0.2.8': {} - - '@headlessui/react@1.7.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@floating-ui/react@0.26.28(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': dependencies: - '@tanstack/react-virtual': 3.10.8(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - client-only: 0.0.1 - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) + '@floating-ui/react-dom': 2.1.2(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@floating-ui/utils': 0.2.8 + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) + tabbable: 6.2.0 - '@headlessui/tailwindcss@0.2.1(tailwindcss@3.4.13)': + '@floating-ui/utils@0.2.8': {} + + '@headlessui/react@2.2.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': dependencies: - tailwindcss: 3.4.13 + '@floating-ui/react': 0.26.28(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@react-aria/focus': 3.19.0(react@19.0.0) + '@react-aria/interactions': 3.22.5(react@19.0.0) + '@tanstack/react-virtual': 3.10.8(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) '@humanwhocodes/config-array@0.13.0': dependencies: @@ -7226,15 +7077,6 @@ snapshots: '@humanwhocodes/object-schema@2.0.3': {} - '@isaacs/cliui@8.0.2': - dependencies: - string-width: 5.1.2 - string-width-cjs: string-width@4.2.3 - strip-ansi: 7.1.0 - strip-ansi-cjs: strip-ansi@6.0.1 - wrap-ansi: 8.1.0 - wrap-ansi-cjs: wrap-ansi@7.0.0 - '@istanbuljs/load-nyc-config@1.1.0': dependencies: camelcase: 5.3.1 @@ -7435,6 +7277,14 @@ snapshots: '@types/yargs': 17.0.33 chalk: 4.1.2 + '@joshwooding/vite-plugin-react-docgen-typescript@0.4.2(typescript@4.9.5)(vite@6.0.3(@types/node@22.6.1)(jiti@2.4.1)(lightningcss@1.28.2)(terser@5.37.0))': + dependencies: + magic-string: 0.27.0 + react-docgen-typescript: 2.2.2(typescript@4.9.5) + vite: 6.0.3(@types/node@22.6.1)(jiti@2.4.1)(lightningcss@1.28.2)(terser@5.37.0) + optionalDependencies: + typescript: 4.9.5 + '@jridgewell/gen-mapping@0.3.5': dependencies: '@jridgewell/set-array': 1.2.1 @@ -7457,16 +7307,16 @@ snapshots: '@jridgewell/resolve-uri': 3.1.2 '@jridgewell/sourcemap-codec': 1.5.0 - '@mdx-js/react@2.3.0(react@18.3.1)': + '@mdx-js/react@2.3.0(react@19.0.0)': dependencies: '@types/mdx': 2.0.13 '@types/react': 18.3.9 - react: 18.3.1 + react: 19.0.0 - '@mdx-js/react@3.0.1(@types/react@18.3.9)(react@18.3.1)': + '@mdx-js/react@3.1.0(@types/react@19.0.1)(react@18.3.1)': dependencies: '@types/mdx': 2.0.13 - '@types/react': 18.3.9 + '@types/react': 19.0.1 react: 18.3.1 '@nodelib/fs.scandir@2.1.5': @@ -7539,9 +7389,6 @@ snapshots: dependencies: '@octokit/openapi-types': 22.2.0 - '@pkgjs/parseargs@0.11.0': - optional: true - '@pkgr/core@0.1.1': {} '@pnpm/config.env-replace@1.1.0': {} @@ -7556,6 +7403,46 @@ snapshots: '@pnpm/network.ca-file': 1.0.2 config-chain: 1.1.13 + '@react-aria/focus@3.19.0(react@19.0.0)': + dependencies: + '@react-aria/interactions': 3.22.5(react@19.0.0) + '@react-aria/utils': 3.26.0(react@19.0.0) + '@react-types/shared': 3.26.0(react@19.0.0) + '@swc/helpers': 0.5.15 + clsx: 2.1.1 + react: 19.0.0 + + '@react-aria/interactions@3.22.5(react@19.0.0)': + dependencies: + '@react-aria/ssr': 3.9.7(react@19.0.0) + '@react-aria/utils': 3.26.0(react@19.0.0) + '@react-types/shared': 3.26.0(react@19.0.0) + '@swc/helpers': 0.5.15 + react: 19.0.0 + + '@react-aria/ssr@3.9.7(react@19.0.0)': + dependencies: + '@swc/helpers': 0.5.15 + react: 19.0.0 + + '@react-aria/utils@3.26.0(react@19.0.0)': + dependencies: + '@react-aria/ssr': 3.9.7(react@19.0.0) + '@react-stately/utils': 3.10.5(react@19.0.0) + '@react-types/shared': 3.26.0(react@19.0.0) + '@swc/helpers': 0.5.15 + clsx: 2.1.1 + react: 19.0.0 + + '@react-stately/utils@3.10.5(react@19.0.0)': + dependencies: + '@swc/helpers': 0.5.15 + react: 19.0.0 + + '@react-types/shared@3.26.0(react@19.0.0)': + dependencies: + react: 19.0.0 + '@rollup/plugin-commonjs@21.1.0(rollup@2.79.1)': dependencies: '@rollup/pluginutils': 3.1.0(rollup@2.79.1) @@ -7601,6 +7488,71 @@ snapshots: picomatch: 2.3.1 rollup: 2.79.1 + '@rollup/pluginutils@5.1.3(rollup@2.79.1)': + dependencies: + '@types/estree': 1.0.6 + estree-walker: 2.0.2 + picomatch: 4.0.2 + optionalDependencies: + rollup: 2.79.1 + + '@rollup/rollup-android-arm-eabi@4.28.1': + optional: true + + '@rollup/rollup-android-arm64@4.28.1': + optional: true + + '@rollup/rollup-darwin-arm64@4.28.1': + optional: true + + '@rollup/rollup-darwin-x64@4.28.1': + optional: true + + '@rollup/rollup-freebsd-arm64@4.28.1': + optional: true + + '@rollup/rollup-freebsd-x64@4.28.1': + optional: true + + '@rollup/rollup-linux-arm-gnueabihf@4.28.1': + optional: true + + '@rollup/rollup-linux-arm-musleabihf@4.28.1': + optional: true + + '@rollup/rollup-linux-arm64-gnu@4.28.1': + optional: true + + '@rollup/rollup-linux-arm64-musl@4.28.1': + optional: true + + '@rollup/rollup-linux-loongarch64-gnu@4.28.1': + optional: true + + '@rollup/rollup-linux-powerpc64le-gnu@4.28.1': + optional: true + + '@rollup/rollup-linux-riscv64-gnu@4.28.1': + optional: true + + '@rollup/rollup-linux-s390x-gnu@4.28.1': + optional: true + + '@rollup/rollup-linux-x64-gnu@4.28.1': + optional: true + + '@rollup/rollup-linux-x64-musl@4.28.1': + optional: true + + '@rollup/rollup-win32-arm64-msvc@4.28.1': + optional: true + + '@rollup/rollup-win32-ia32-msvc@4.28.1': + optional: true + + '@rollup/rollup-win32-x64-msvc@4.28.1': + optional: true + '@sec-ant/readable-stream@0.4.1': {} '@semantic-release/commit-analyzer@13.0.0(semantic-release@24.1.1(typescript@4.9.5))': @@ -7729,515 +7681,325 @@ snapshots: dependencies: '@sinonjs/commons': 3.0.1 - '@storybook/addon-a11y@8.3.3(storybook@8.3.3)': - dependencies: - '@storybook/addon-highlight': 8.3.3(storybook@8.3.3) - axe-core: 4.10.0 - storybook: 8.3.3 - - '@storybook/addon-actions@8.3.3(storybook@8.3.3)': + '@storybook/addon-actions@8.4.7(storybook@8.4.7(prettier@3.4.2))': dependencies: '@storybook/global': 5.0.0 '@types/uuid': 9.0.8 dequal: 2.0.3 polished: 4.3.1 - storybook: 8.3.3 + storybook: 8.4.7(prettier@3.4.2) uuid: 9.0.1 - '@storybook/addon-backgrounds@8.3.3(storybook@8.3.3)': + '@storybook/addon-backgrounds@8.4.7(storybook@8.4.7(prettier@3.4.2))': dependencies: '@storybook/global': 5.0.0 memoizerific: 1.11.3 - storybook: 8.3.3 + storybook: 8.4.7(prettier@3.4.2) ts-dedent: 2.2.0 - '@storybook/addon-controls@8.3.3(storybook@8.3.3)': + '@storybook/addon-controls@8.4.7(storybook@8.4.7(prettier@3.4.2))': dependencies: '@storybook/global': 5.0.0 dequal: 2.0.3 - lodash: 4.17.21 - storybook: 8.3.3 + storybook: 8.4.7(prettier@3.4.2) ts-dedent: 2.2.0 - '@storybook/addon-docs@8.3.3(storybook@8.3.3)(webpack-sources@3.2.3)': + '@storybook/addon-docs@8.4.7(@types/react@19.0.1)(storybook@8.4.7(prettier@3.4.2))': dependencies: - '@mdx-js/react': 3.0.1(@types/react@18.3.9)(react@18.3.1) - '@storybook/blocks': 8.3.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.3.3) - '@storybook/csf-plugin': 8.3.3(storybook@8.3.3)(webpack-sources@3.2.3) - '@storybook/global': 5.0.0 - '@storybook/react-dom-shim': 8.3.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.3.3) - '@types/react': 18.3.9 - fs-extra: 11.2.0 + '@mdx-js/react': 3.1.0(@types/react@19.0.1)(react@18.3.1) + '@storybook/blocks': 8.4.7(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.4.7(prettier@3.4.2)) + '@storybook/csf-plugin': 8.4.7(storybook@8.4.7(prettier@3.4.2)) + '@storybook/react-dom-shim': 8.4.7(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.4.7(prettier@3.4.2)) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - rehype-external-links: 3.0.0 - rehype-slug: 6.0.0 - storybook: 8.3.3 + storybook: 8.4.7(prettier@3.4.2) ts-dedent: 2.2.0 transitivePeerDependencies: - - webpack-sources - - '@storybook/addon-essentials@8.3.3(storybook@8.3.3)(webpack-sources@3.2.3)': - dependencies: - '@storybook/addon-actions': 8.3.3(storybook@8.3.3) - '@storybook/addon-backgrounds': 8.3.3(storybook@8.3.3) - '@storybook/addon-controls': 8.3.3(storybook@8.3.3) - '@storybook/addon-docs': 8.3.3(storybook@8.3.3)(webpack-sources@3.2.3) - '@storybook/addon-highlight': 8.3.3(storybook@8.3.3) - '@storybook/addon-measure': 8.3.3(storybook@8.3.3) - '@storybook/addon-outline': 8.3.3(storybook@8.3.3) - '@storybook/addon-toolbars': 8.3.3(storybook@8.3.3) - '@storybook/addon-viewport': 8.3.3(storybook@8.3.3) - storybook: 8.3.3 + - '@types/react' + + '@storybook/addon-essentials@8.4.7(@types/react@19.0.1)(storybook@8.4.7(prettier@3.4.2))': + dependencies: + '@storybook/addon-actions': 8.4.7(storybook@8.4.7(prettier@3.4.2)) + '@storybook/addon-backgrounds': 8.4.7(storybook@8.4.7(prettier@3.4.2)) + '@storybook/addon-controls': 8.4.7(storybook@8.4.7(prettier@3.4.2)) + '@storybook/addon-docs': 8.4.7(@types/react@19.0.1)(storybook@8.4.7(prettier@3.4.2)) + '@storybook/addon-highlight': 8.4.7(storybook@8.4.7(prettier@3.4.2)) + '@storybook/addon-measure': 8.4.7(storybook@8.4.7(prettier@3.4.2)) + '@storybook/addon-outline': 8.4.7(storybook@8.4.7(prettier@3.4.2)) + '@storybook/addon-toolbars': 8.4.7(storybook@8.4.7(prettier@3.4.2)) + '@storybook/addon-viewport': 8.4.7(storybook@8.4.7(prettier@3.4.2)) + storybook: 8.4.7(prettier@3.4.2) ts-dedent: 2.2.0 transitivePeerDependencies: - - webpack-sources + - '@types/react' - '@storybook/addon-highlight@8.3.3(storybook@8.3.3)': + '@storybook/addon-highlight@8.4.7(storybook@8.4.7(prettier@3.4.2))': dependencies: '@storybook/global': 5.0.0 - storybook: 8.3.3 + storybook: 8.4.7(prettier@3.4.2) - '@storybook/addon-interactions@8.3.3(storybook@8.3.3)': + '@storybook/addon-interactions@8.4.7(storybook@8.4.7(prettier@3.4.2))': dependencies: '@storybook/global': 5.0.0 - '@storybook/instrumenter': 8.3.3(storybook@8.3.3) - '@storybook/test': 8.3.3(storybook@8.3.3) + '@storybook/instrumenter': 8.4.7(storybook@8.4.7(prettier@3.4.2)) + '@storybook/test': 8.4.7(storybook@8.4.7(prettier@3.4.2)) polished: 4.3.1 - storybook: 8.3.3 + storybook: 8.4.7(prettier@3.4.2) ts-dedent: 2.2.0 - '@storybook/addon-links@8.3.3(react@18.3.1)(storybook@8.3.3)': - dependencies: - '@storybook/csf': 0.1.11 - '@storybook/global': 5.0.0 - storybook: 8.3.3 - ts-dedent: 2.2.0 - optionalDependencies: - react: 18.3.1 - - '@storybook/addon-measure@8.3.3(storybook@8.3.3)': + '@storybook/addon-measure@8.4.7(storybook@8.4.7(prettier@3.4.2))': dependencies: '@storybook/global': 5.0.0 - storybook: 8.3.3 + storybook: 8.4.7(prettier@3.4.2) tiny-invariant: 1.3.3 - '@storybook/addon-outline@8.3.3(storybook@8.3.3)': + '@storybook/addon-outline@8.4.7(storybook@8.4.7(prettier@3.4.2))': dependencies: '@storybook/global': 5.0.0 - storybook: 8.3.3 + storybook: 8.4.7(prettier@3.4.2) ts-dedent: 2.2.0 - '@storybook/addon-styling-webpack@1.0.0(storybook@8.3.3)(webpack@5.94.0(esbuild@0.23.1))': + '@storybook/addon-themes@8.4.7(storybook@8.4.7(prettier@3.4.2))': dependencies: - '@storybook/node-logger': 8.3.3(storybook@8.3.3) - webpack: 5.94.0(esbuild@0.23.1) - transitivePeerDependencies: - - storybook - - '@storybook/addon-themes@8.3.3(storybook@8.3.3)': - dependencies: - storybook: 8.3.3 + storybook: 8.4.7(prettier@3.4.2) ts-dedent: 2.2.0 - '@storybook/addon-toolbars@8.3.3(storybook@8.3.3)': + '@storybook/addon-toolbars@8.4.7(storybook@8.4.7(prettier@3.4.2))': dependencies: - storybook: 8.3.3 + storybook: 8.4.7(prettier@3.4.2) - '@storybook/addon-viewport@8.3.3(storybook@8.3.3)': + '@storybook/addon-viewport@8.4.7(storybook@8.4.7(prettier@3.4.2))': dependencies: memoizerific: 1.11.3 - storybook: 8.3.3 + storybook: 8.4.7(prettier@3.4.2) - '@storybook/addon-webpack5-compiler-babel@3.0.3(webpack@5.94.0(esbuild@0.23.1))': + '@storybook/blocks@8.4.7(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.4.7(prettier@3.4.2))': dependencies: - '@babel/core': 7.25.2 - babel-loader: 9.2.1(@babel/core@7.25.2)(webpack@5.94.0(esbuild@0.23.1)) - transitivePeerDependencies: - - supports-color - - webpack - - '@storybook/addons@7.4.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': - dependencies: - '@storybook/manager-api': 7.4.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@storybook/preview-api': 7.4.6 - '@storybook/types': 7.4.6 - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - - '@storybook/blocks@8.3.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.3.3)': - dependencies: - '@storybook/csf': 0.1.11 - '@storybook/global': 5.0.0 - '@storybook/icons': 1.2.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@types/lodash': 4.17.9 - color-convert: 2.0.1 - dequal: 2.0.3 - lodash: 4.17.21 - markdown-to-jsx: 7.5.0(react@18.3.1) - memoizerific: 1.11.3 - polished: 4.3.1 - react-colorful: 5.6.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - storybook: 8.3.3 - telejson: 7.2.0 + '@storybook/csf': 0.1.12 + '@storybook/icons': 1.3.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + storybook: 8.4.7(prettier@3.4.2) ts-dedent: 2.2.0 - util-deprecate: 1.0.2 optionalDependencies: react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - '@storybook/builder-webpack5@8.3.3(esbuild@0.23.1)(storybook@8.3.3)(typescript@4.9.5)': + '@storybook/blocks@8.4.7(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(storybook@8.4.7(prettier@3.4.2))': dependencies: - '@storybook/core-webpack': 8.3.3(storybook@8.3.3) - '@types/node': 22.6.1 - '@types/semver': 7.5.8 - browser-assert: 1.2.1 - case-sensitive-paths-webpack-plugin: 2.4.0 - cjs-module-lexer: 1.4.1 - constants-browserify: 1.0.0 - css-loader: 6.11.0(webpack@5.94.0(esbuild@0.23.1)) - es-module-lexer: 1.5.4 - express: 4.21.0 - fork-ts-checker-webpack-plugin: 8.0.0(typescript@4.9.5)(webpack@5.94.0(esbuild@0.23.1)) - fs-extra: 11.2.0 - html-webpack-plugin: 5.6.0(webpack@5.94.0(esbuild@0.23.1)) - magic-string: 0.30.11 - path-browserify: 1.0.1 - process: 0.11.10 - semver: 7.6.3 - storybook: 8.3.3 - style-loader: 3.3.4(webpack@5.94.0(esbuild@0.23.1)) - terser-webpack-plugin: 5.3.10(esbuild@0.23.1)(webpack@5.94.0(esbuild@0.23.1)) + '@storybook/csf': 0.1.12 + '@storybook/icons': 1.3.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + storybook: 8.4.7(prettier@3.4.2) ts-dedent: 2.2.0 - url: 0.11.4 - util: 0.12.5 - util-deprecate: 1.0.2 - webpack: 5.94.0(esbuild@0.23.1) - webpack-dev-middleware: 6.1.3(webpack@5.94.0(esbuild@0.23.1)) - webpack-hot-middleware: 2.26.1 - webpack-virtual-modules: 0.6.2 optionalDependencies: - typescript: 4.9.5 - transitivePeerDependencies: - - '@rspack/core' - - '@swc/core' - - esbuild - - supports-color - - uglify-js - - webpack-cli - - '@storybook/channels@7.4.6': - dependencies: - '@storybook/client-logger': 7.4.6 - '@storybook/core-events': 7.4.6 - '@storybook/global': 5.0.0 - qs: 6.13.0 - telejson: 7.2.0 - tiny-invariant: 1.3.3 - - '@storybook/channels@7.6.20': - dependencies: - '@storybook/client-logger': 7.6.20 - '@storybook/core-events': 7.6.20 - '@storybook/global': 5.0.0 - qs: 6.13.0 - telejson: 7.2.0 - tiny-invariant: 1.3.3 - - '@storybook/client-logger@7.4.6': - dependencies: - '@storybook/global': 5.0.0 - - '@storybook/client-logger@7.6.20': - dependencies: - '@storybook/global': 5.0.0 - - '@storybook/components@8.3.3(storybook@8.3.3)': - dependencies: - storybook: 8.3.3 - - '@storybook/core-events@7.4.6': - dependencies: - ts-dedent: 2.2.0 + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) - '@storybook/core-events@7.6.20': + '@storybook/builder-vite@8.4.7(storybook@8.4.7(prettier@3.4.2))(vite@6.0.3(@types/node@22.6.1)(jiti@2.4.1)(lightningcss@1.28.2)(terser@5.37.0))': dependencies: + '@storybook/csf-plugin': 8.4.7(storybook@8.4.7(prettier@3.4.2)) + browser-assert: 1.2.1 + storybook: 8.4.7(prettier@3.4.2) ts-dedent: 2.2.0 + vite: 6.0.3(@types/node@22.6.1)(jiti@2.4.1)(lightningcss@1.28.2)(terser@5.37.0) - '@storybook/core-webpack@8.3.3(storybook@8.3.3)': + '@storybook/components@8.4.7(storybook@8.4.7(prettier@3.4.2))': dependencies: - '@types/node': 22.6.1 - storybook: 8.3.3 - ts-dedent: 2.2.0 + storybook: 8.4.7(prettier@3.4.2) - '@storybook/core@8.3.3': + '@storybook/core@8.4.7(prettier@3.4.2)': dependencies: - '@storybook/csf': 0.1.11 - '@types/express': 4.17.21 + '@storybook/csf': 0.1.12 better-opn: 3.0.2 browser-assert: 1.2.1 - esbuild: 0.23.1 - esbuild-register: 3.6.0(esbuild@0.23.1) - express: 4.21.0 + esbuild: 0.24.0 + esbuild-register: 3.6.0(esbuild@0.24.0) jsdoc-type-pratt-parser: 4.1.0 process: 0.11.10 recast: 0.23.9 semver: 7.6.3 util: 0.12.5 ws: 8.18.0 + optionalDependencies: + prettier: 3.4.2 transitivePeerDependencies: - bufferutil - supports-color - utf-8-validate - '@storybook/csf-plugin@8.3.3(storybook@8.3.3)(webpack-sources@3.2.3)': + '@storybook/csf-plugin@8.4.7(storybook@8.4.7(prettier@3.4.2))': dependencies: - storybook: 8.3.3 - unplugin: 1.14.1(webpack-sources@3.2.3) - transitivePeerDependencies: - - webpack-sources + storybook: 8.4.7(prettier@3.4.2) + unplugin: 1.16.0 - '@storybook/csf@0.1.11': + '@storybook/csf@0.1.12': dependencies: type-fest: 2.19.0 '@storybook/global@5.0.0': {} - '@storybook/icons@1.2.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@storybook/icons@1.3.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - '@storybook/instrumenter@8.3.3(storybook@8.3.3)': + '@storybook/icons@1.3.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': dependencies: - '@storybook/global': 5.0.0 - '@vitest/utils': 2.1.1 - storybook: 8.3.3 - util: 0.12.5 + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) - '@storybook/manager-api@7.4.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@storybook/instrumenter@8.4.7(storybook@8.4.7(prettier@3.4.2))': dependencies: - '@storybook/channels': 7.4.6 - '@storybook/client-logger': 7.4.6 - '@storybook/core-events': 7.4.6 - '@storybook/csf': 0.1.11 '@storybook/global': 5.0.0 - '@storybook/router': 7.4.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@storybook/theming': 7.4.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@storybook/types': 7.4.6 - dequal: 2.0.3 - lodash: 4.17.21 - memoizerific: 1.11.3 - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - semver: 7.6.3 - store2: 2.14.3 - telejson: 7.2.0 - ts-dedent: 2.2.0 + '@vitest/utils': 2.1.8 + storybook: 8.4.7(prettier@3.4.2) - '@storybook/manager-api@8.3.3(storybook@8.3.3)': + '@storybook/manager-api@8.4.7(storybook@8.4.7(prettier@3.4.2))': dependencies: - storybook: 8.3.3 - - '@storybook/mdx2-csf@1.1.0': {} + storybook: 8.4.7(prettier@3.4.2) - '@storybook/node-logger@8.3.3(storybook@8.3.3)': + '@storybook/preview-api@8.4.7(storybook@8.4.7(prettier@3.4.2))': dependencies: - storybook: 8.3.3 + storybook: 8.4.7(prettier@3.4.2) - '@storybook/preset-react-webpack@8.3.3(@storybook/test@8.3.3(storybook@8.3.3))(esbuild@0.23.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.3.3)(typescript@4.9.5)': + '@storybook/react-dom-shim@8.4.7(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.4.7(prettier@3.4.2))': dependencies: - '@storybook/core-webpack': 8.3.3(storybook@8.3.3) - '@storybook/react': 8.3.3(@storybook/test@8.3.3(storybook@8.3.3))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.3.3)(typescript@4.9.5) - '@storybook/react-docgen-typescript-plugin': 1.0.6--canary.9.0c3f3b7.0(typescript@4.9.5)(webpack@5.94.0(esbuild@0.23.1)) - '@types/node': 22.6.1 - '@types/semver': 7.5.8 - find-up: 5.0.0 - fs-extra: 11.2.0 - magic-string: 0.30.11 react: 18.3.1 - react-docgen: 7.0.3 react-dom: 18.3.1(react@18.3.1) - resolve: 1.22.8 - semver: 7.6.3 - storybook: 8.3.3 - tsconfig-paths: 4.2.0 - webpack: 5.94.0(esbuild@0.23.1) - optionalDependencies: - typescript: 4.9.5 - transitivePeerDependencies: - - '@storybook/test' - - '@swc/core' - - esbuild - - supports-color - - uglify-js - - webpack-cli - - '@storybook/preview-api@7.4.6': - dependencies: - '@storybook/channels': 7.4.6 - '@storybook/client-logger': 7.4.6 - '@storybook/core-events': 7.4.6 - '@storybook/csf': 0.1.11 - '@storybook/global': 5.0.0 - '@storybook/types': 7.4.6 - '@types/qs': 6.9.17 - dequal: 2.0.3 - lodash: 4.17.21 - memoizerific: 1.11.3 - qs: 6.13.0 - synchronous-promise: 2.0.17 - ts-dedent: 2.2.0 - util-deprecate: 1.0.2 - - '@storybook/preview-api@7.6.20': - dependencies: - '@storybook/channels': 7.6.20 - '@storybook/client-logger': 7.6.20 - '@storybook/core-events': 7.6.20 - '@storybook/csf': 0.1.11 - '@storybook/global': 5.0.0 - '@storybook/types': 7.6.20 - '@types/qs': 6.9.16 - dequal: 2.0.3 - lodash: 4.17.21 - memoizerific: 1.11.3 - qs: 6.13.0 - synchronous-promise: 2.0.17 - ts-dedent: 2.2.0 - util-deprecate: 1.0.2 - - '@storybook/preview-api@8.3.3(storybook@8.3.3)': - dependencies: - storybook: 8.3.3 - - '@storybook/react-docgen-typescript-plugin@1.0.6--canary.9.0c3f3b7.0(typescript@4.9.5)(webpack@5.94.0(esbuild@0.23.1))': - dependencies: - debug: 4.3.7 - endent: 2.1.0 - find-cache-dir: 3.3.2 - flat-cache: 3.2.0 - micromatch: 4.0.8 - react-docgen-typescript: 2.2.2(typescript@4.9.5) - tslib: 2.7.0 - typescript: 4.9.5 - webpack: 5.94.0(esbuild@0.23.1) - transitivePeerDependencies: - - supports-color + storybook: 8.4.7(prettier@3.4.2) - '@storybook/react-dom-shim@8.3.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.3.3)': + '@storybook/react-dom-shim@8.4.7(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(storybook@8.4.7(prettier@3.4.2))': dependencies: - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - storybook: 8.3.3 + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) + storybook: 8.4.7(prettier@3.4.2) - '@storybook/react-webpack5@8.3.3(@storybook/test@8.3.3(storybook@8.3.3))(esbuild@0.23.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.3.3)(typescript@4.9.5)': + '@storybook/react-vite@8.4.7(@storybook/test@8.4.7(storybook@8.4.7(prettier@3.4.2)))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(rollup@2.79.1)(storybook@8.4.7(prettier@3.4.2))(typescript@4.9.5)(vite@6.0.3(@types/node@22.6.1)(jiti@2.4.1)(lightningcss@1.28.2)(terser@5.37.0))': dependencies: - '@storybook/builder-webpack5': 8.3.3(esbuild@0.23.1)(storybook@8.3.3)(typescript@4.9.5) - '@storybook/preset-react-webpack': 8.3.3(@storybook/test@8.3.3(storybook@8.3.3))(esbuild@0.23.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.3.3)(typescript@4.9.5) - '@storybook/react': 8.3.3(@storybook/test@8.3.3(storybook@8.3.3))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.3.3)(typescript@4.9.5) - '@types/node': 22.6.1 - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - storybook: 8.3.3 - optionalDependencies: - typescript: 4.9.5 + '@joshwooding/vite-plugin-react-docgen-typescript': 0.4.2(typescript@4.9.5)(vite@6.0.3(@types/node@22.6.1)(jiti@2.4.1)(lightningcss@1.28.2)(terser@5.37.0)) + '@rollup/pluginutils': 5.1.3(rollup@2.79.1) + '@storybook/builder-vite': 8.4.7(storybook@8.4.7(prettier@3.4.2))(vite@6.0.3(@types/node@22.6.1)(jiti@2.4.1)(lightningcss@1.28.2)(terser@5.37.0)) + '@storybook/react': 8.4.7(@storybook/test@8.4.7(storybook@8.4.7(prettier@3.4.2)))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(storybook@8.4.7(prettier@3.4.2))(typescript@4.9.5) + find-up: 5.0.0 + magic-string: 0.30.11 + react: 19.0.0 + react-docgen: 7.1.0 + react-dom: 19.0.0(react@19.0.0) + resolve: 1.22.8 + storybook: 8.4.7(prettier@3.4.2) + tsconfig-paths: 4.2.0 + vite: 6.0.3(@types/node@22.6.1)(jiti@2.4.1)(lightningcss@1.28.2)(terser@5.37.0) transitivePeerDependencies: - - '@rspack/core' - '@storybook/test' - - '@swc/core' - - esbuild + - rollup - supports-color - - uglify-js - - webpack-cli + - typescript - '@storybook/react@8.3.3(@storybook/test@8.3.3(storybook@8.3.3))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.3.3)(typescript@4.9.5)': + '@storybook/react@8.4.7(@storybook/test@8.4.7(storybook@8.4.7(prettier@3.4.2)))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(storybook@8.4.7(prettier@3.4.2))(typescript@4.9.5)': dependencies: - '@storybook/components': 8.3.3(storybook@8.3.3) + '@storybook/components': 8.4.7(storybook@8.4.7(prettier@3.4.2)) '@storybook/global': 5.0.0 - '@storybook/manager-api': 8.3.3(storybook@8.3.3) - '@storybook/preview-api': 8.3.3(storybook@8.3.3) - '@storybook/react-dom-shim': 8.3.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.3.3) - '@storybook/theming': 8.3.3(storybook@8.3.3) - '@types/escodegen': 0.0.6 - '@types/estree': 0.0.51 - '@types/node': 22.6.1 - acorn: 7.4.1 - acorn-jsx: 5.3.2(acorn@7.4.1) - acorn-walk: 7.2.0 - escodegen: 2.1.0 - html-tags: 3.3.1 - prop-types: 15.8.1 - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - react-element-to-jsx-string: 15.0.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - semver: 7.6.3 - storybook: 8.3.3 - ts-dedent: 2.2.0 - type-fest: 2.19.0 - util-deprecate: 1.0.2 + '@storybook/manager-api': 8.4.7(storybook@8.4.7(prettier@3.4.2)) + '@storybook/preview-api': 8.4.7(storybook@8.4.7(prettier@3.4.2)) + '@storybook/react-dom-shim': 8.4.7(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(storybook@8.4.7(prettier@3.4.2)) + '@storybook/theming': 8.4.7(storybook@8.4.7(prettier@3.4.2)) + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) + storybook: 8.4.7(prettier@3.4.2) optionalDependencies: - '@storybook/test': 8.3.3(storybook@8.3.3) + '@storybook/test': 8.4.7(storybook@8.4.7(prettier@3.4.2)) typescript: 4.9.5 - '@storybook/router@7.4.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': - dependencies: - '@storybook/client-logger': 7.4.6 - memoizerific: 1.11.3 - qs: 6.13.0 - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - - '@storybook/test@8.3.3(storybook@8.3.3)': + '@storybook/test@8.4.7(storybook@8.4.7(prettier@3.4.2))': dependencies: - '@storybook/csf': 0.1.11 + '@storybook/csf': 0.1.12 '@storybook/global': 5.0.0 - '@storybook/instrumenter': 8.3.3(storybook@8.3.3) + '@storybook/instrumenter': 8.4.7(storybook@8.4.7(prettier@3.4.2)) '@testing-library/dom': 10.4.0 '@testing-library/jest-dom': 6.5.0 '@testing-library/user-event': 14.5.2(@testing-library/dom@10.4.0) '@vitest/expect': 2.0.5 '@vitest/spy': 2.0.5 - storybook: 8.3.3 - util: 0.12.5 + storybook: 8.4.7(prettier@3.4.2) - '@storybook/theming@7.4.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@storybook/theming@8.4.7(storybook@8.4.7(prettier@3.4.2))': dependencies: - '@emotion/use-insertion-effect-with-fallbacks': 1.1.0(react@18.3.1) - '@storybook/client-logger': 7.4.6 - '@storybook/global': 5.0.0 - memoizerific: 1.11.3 - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) + storybook: 8.4.7(prettier@3.4.2) - '@storybook/theming@8.3.3(storybook@8.3.3)': + '@swc/helpers@0.5.15': dependencies: - storybook: 8.3.3 + tslib: 2.8.1 - '@storybook/types@7.4.6': + '@tailwindcss/forms@0.5.9(tailwindcss@4.0.0-beta.6)': dependencies: - '@storybook/channels': 7.4.6 - '@types/babel__core': 7.20.5 - '@types/express': 4.17.21 - file-system-cache: 2.3.0 + mini-svg-data-uri: 1.4.4 + tailwindcss: 4.0.0-beta.6 - '@storybook/types@7.6.20': + '@tailwindcss/node@4.0.0-beta.5': dependencies: - '@storybook/channels': 7.6.20 - '@types/babel__core': 7.20.5 - '@types/express': 4.17.21 - file-system-cache: 2.3.0 + enhanced-resolve: 5.17.1 + jiti: 2.4.1 + tailwindcss: 4.0.0-beta.5 + + '@tailwindcss/oxide-android-arm64@4.0.0-beta.5': + optional: true + + '@tailwindcss/oxide-darwin-arm64@4.0.0-beta.5': + optional: true + + '@tailwindcss/oxide-darwin-x64@4.0.0-beta.5': + optional: true + + '@tailwindcss/oxide-freebsd-x64@4.0.0-beta.5': + optional: true + + '@tailwindcss/oxide-linux-arm-gnueabihf@4.0.0-beta.5': + optional: true + + '@tailwindcss/oxide-linux-arm64-gnu@4.0.0-beta.5': + optional: true + + '@tailwindcss/oxide-linux-arm64-musl@4.0.0-beta.5': + optional: true + + '@tailwindcss/oxide-linux-x64-gnu@4.0.0-beta.5': + optional: true + + '@tailwindcss/oxide-linux-x64-musl@4.0.0-beta.5': + optional: true + + '@tailwindcss/oxide-win32-arm64-msvc@4.0.0-beta.5': + optional: true - '@tailwindcss/forms@0.5.9(tailwindcss@3.4.13)': + '@tailwindcss/oxide-win32-x64-msvc@4.0.0-beta.5': + optional: true + + '@tailwindcss/oxide@4.0.0-beta.5': + optionalDependencies: + '@tailwindcss/oxide-android-arm64': 4.0.0-beta.5 + '@tailwindcss/oxide-darwin-arm64': 4.0.0-beta.5 + '@tailwindcss/oxide-darwin-x64': 4.0.0-beta.5 + '@tailwindcss/oxide-freebsd-x64': 4.0.0-beta.5 + '@tailwindcss/oxide-linux-arm-gnueabihf': 4.0.0-beta.5 + '@tailwindcss/oxide-linux-arm64-gnu': 4.0.0-beta.5 + '@tailwindcss/oxide-linux-arm64-musl': 4.0.0-beta.5 + '@tailwindcss/oxide-linux-x64-gnu': 4.0.0-beta.5 + '@tailwindcss/oxide-linux-x64-musl': 4.0.0-beta.5 + '@tailwindcss/oxide-win32-arm64-msvc': 4.0.0-beta.5 + '@tailwindcss/oxide-win32-x64-msvc': 4.0.0-beta.5 + + '@tailwindcss/postcss@4.0.0-beta.5': dependencies: - mini-svg-data-uri: 1.4.4 - tailwindcss: 3.4.13 + '@alloc/quick-lru': 5.2.0 + '@tailwindcss/node': 4.0.0-beta.5 + '@tailwindcss/oxide': 4.0.0-beta.5 + lightningcss: 1.28.2 + postcss: 8.4.49 + tailwindcss: 4.0.0-beta.5 - '@tanstack/react-virtual@3.10.8(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@tanstack/react-virtual@3.10.8(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': dependencies: '@tanstack/virtual-core': 3.10.8 - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) '@tanstack/virtual-core@3.10.8': {} @@ -8252,34 +8014,25 @@ snapshots: lz-string: 1.5.0 pretty-format: 27.5.1 - '@testing-library/dom@9.3.4': - dependencies: - '@babel/code-frame': 7.24.7 - '@babel/runtime': 7.25.6 - '@types/aria-query': 5.0.4 - aria-query: 5.1.3 - chalk: 4.1.2 - dom-accessibility-api: 0.5.16 - lz-string: 1.5.0 - pretty-format: 27.5.1 - '@testing-library/jest-dom@6.5.0': dependencies: - '@adobe/css-tools': 4.4.0 - aria-query: 5.3.2 + '@adobe/css-tools': 4.4.1 + aria-query: 5.1.3 chalk: 3.0.0 css.escape: 1.5.1 dom-accessibility-api: 0.6.3 lodash: 4.17.21 redent: 3.0.0 - '@testing-library/react@14.3.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@testing-library/react@16.1.0(@testing-library/dom@10.4.0)(@types/react-dom@19.0.2(@types/react@19.0.1))(@types/react@19.0.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': dependencies: - '@babel/runtime': 7.25.6 - '@testing-library/dom': 9.3.4 - '@types/react-dom': 18.3.0 - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) + '@babel/runtime': 7.26.0 + '@testing-library/dom': 10.4.0 + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) + optionalDependencies: + '@types/react': 19.0.1 + '@types/react-dom': 19.0.2(@types/react@19.0.1) '@testing-library/user-event@14.5.2(@testing-library/dom@10.4.0)': dependencies: @@ -8312,15 +8065,6 @@ snapshots: dependencies: '@babel/types': 7.25.6 - '@types/body-parser@1.19.5': - dependencies: - '@types/connect': 3.4.38 - '@types/node': 22.6.1 - - '@types/connect@3.4.38': - dependencies: - '@types/node': 22.6.1 - '@types/d3-array@3.2.1': {} '@types/d3-color@3.1.3': {} @@ -8335,58 +8079,36 @@ snapshots: '@types/d3-scale@4.0.8': dependencies: - '@types/d3-time': 3.0.3 + '@types/d3-time': 3.0.4 '@types/d3-shape@3.1.6': dependencies: '@types/d3-path': 3.1.0 - '@types/d3-time@3.0.3': {} + '@types/d3-time@3.0.4': {} '@types/d3-timer@3.0.2': {} '@types/doctrine@0.0.9': {} - '@types/escodegen@0.0.6': {} + '@types/eslint-scope@3.7.7': + dependencies: + '@types/eslint': 9.6.1 + '@types/estree': 1.0.6 - '@types/eslint@8.40.2': + '@types/eslint@9.6.1': dependencies: '@types/estree': 1.0.6 '@types/json-schema': 7.0.15 - optional: true '@types/estree@0.0.39': {} - '@types/estree@0.0.51': {} - '@types/estree@1.0.6': {} - '@types/express-serve-static-core@4.19.5': - dependencies: - '@types/node': 22.6.1 - '@types/qs': 6.9.16 - '@types/range-parser': 1.2.7 - '@types/send': 0.17.4 - - '@types/express@4.17.21': - dependencies: - '@types/body-parser': 1.19.5 - '@types/express-serve-static-core': 4.19.5 - '@types/qs': 6.9.16 - '@types/serve-static': 1.15.7 - '@types/graceful-fs@4.1.9': dependencies: '@types/node': 22.6.1 - '@types/hast@3.0.4': - dependencies: - '@types/unist': 3.0.3 - - '@types/html-minifier-terser@6.1.0': {} - - '@types/http-errors@2.0.4': {} - '@types/istanbul-lib-coverage@2.0.6': {} '@types/istanbul-lib-report@3.0.3': @@ -8410,37 +8132,29 @@ snapshots: '@types/json-schema@7.0.15': {} - '@types/lodash@4.17.9': {} - '@types/mdx@2.0.13': {} - '@types/mime@1.3.5': {} - '@types/node@22.6.1': dependencies: undici-types: 6.19.8 '@types/normalize-package-data@2.4.4': {} - '@types/parse-json@4.0.2': {} - '@types/prop-types@15.7.13': {} - '@types/qs@6.9.16': {} - - '@types/qs@6.9.17': {} - - '@types/range-parser@1.2.7': {} - - '@types/react-dom@18.3.0': + '@types/react-dom@19.0.2(@types/react@19.0.1)': dependencies: - '@types/react': 18.3.9 + '@types/react': 19.0.1 '@types/react@18.3.9': dependencies: '@types/prop-types': 15.7.13 csstype: 3.1.3 + '@types/react@19.0.1': + dependencies: + csstype: 3.1.3 + '@types/resolve@1.17.1': dependencies: '@types/node': 22.6.1 @@ -8449,23 +8163,10 @@ snapshots: '@types/semver@7.5.8': {} - '@types/send@0.17.4': - dependencies: - '@types/mime': 1.3.5 - '@types/node': 22.6.1 - - '@types/serve-static@1.15.7': - dependencies: - '@types/http-errors': 2.0.4 - '@types/node': 22.6.1 - '@types/send': 0.17.4 - '@types/stack-utils@2.0.3': {} '@types/tough-cookie@4.0.5': {} - '@types/unist@3.0.3': {} - '@types/uuid@9.0.8': {} '@types/yargs-parser@21.0.3': {} @@ -8509,6 +8210,11 @@ snapshots: transitivePeerDependencies: - supports-color + '@typescript-eslint/scope-manager@8.17.0': + dependencies: + '@typescript-eslint/types': 8.17.0 + '@typescript-eslint/visitor-keys': 8.17.0 + '@typescript-eslint/scope-manager@8.7.0': dependencies: '@typescript-eslint/types': 8.7.0 @@ -8526,8 +8232,25 @@ snapshots: - eslint - supports-color + '@typescript-eslint/types@8.17.0': {} + '@typescript-eslint/types@8.7.0': {} + '@typescript-eslint/typescript-estree@8.17.0(typescript@4.9.5)': + dependencies: + '@typescript-eslint/types': 8.17.0 + '@typescript-eslint/visitor-keys': 8.17.0 + debug: 4.3.7 + fast-glob: 3.3.2 + is-glob: 4.0.3 + minimatch: 9.0.5 + semver: 7.6.3 + ts-api-utils: 1.3.0(typescript@4.9.5) + optionalDependencies: + typescript: 4.9.5 + transitivePeerDependencies: + - supports-color + '@typescript-eslint/typescript-estree@8.7.0(typescript@4.9.5)': dependencies: '@typescript-eslint/types': 8.7.0 @@ -8543,6 +8266,18 @@ snapshots: transitivePeerDependencies: - supports-color + '@typescript-eslint/utils@8.17.0(eslint@8.57.1)(typescript@4.9.5)': + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.1) + '@typescript-eslint/scope-manager': 8.17.0 + '@typescript-eslint/types': 8.17.0 + '@typescript-eslint/typescript-estree': 8.17.0(typescript@4.9.5) + eslint: 8.57.1 + optionalDependencies: + typescript: 4.9.5 + transitivePeerDependencies: + - supports-color + '@typescript-eslint/utils@8.7.0(eslint@8.57.1)(typescript@4.9.5)': dependencies: '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.1) @@ -8554,6 +8289,11 @@ snapshots: - supports-color - typescript + '@typescript-eslint/visitor-keys@8.17.0': + dependencies: + '@typescript-eslint/types': 8.17.0 + eslint-visitor-keys: 4.2.0 + '@typescript-eslint/visitor-keys@8.7.0': dependencies: '@typescript-eslint/types': 8.7.0 @@ -8561,18 +8301,29 @@ snapshots: '@ungap/structured-clone@1.2.0': {} + '@vitejs/plugin-react@4.3.4(vite@6.0.3(@types/node@22.6.1)(jiti@2.4.1)(lightningcss@1.28.2)(terser@5.37.0))': + dependencies: + '@babel/core': 7.26.0 + '@babel/plugin-transform-react-jsx-self': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-react-jsx-source': 7.25.9(@babel/core@7.26.0) + '@types/babel__core': 7.20.5 + react-refresh: 0.14.2 + vite: 6.0.3(@types/node@22.6.1)(jiti@2.4.1)(lightningcss@1.28.2)(terser@5.37.0) + transitivePeerDependencies: + - supports-color + '@vitest/expect@2.0.5': dependencies: '@vitest/spy': 2.0.5 '@vitest/utils': 2.0.5 - chai: 5.1.1 + chai: 5.1.2 tinyrainbow: 1.2.0 '@vitest/pretty-format@2.0.5': dependencies: tinyrainbow: 1.2.0 - '@vitest/pretty-format@2.1.1': + '@vitest/pretty-format@2.1.8': dependencies: tinyrainbow: 1.2.0 @@ -8584,89 +8335,89 @@ snapshots: dependencies: '@vitest/pretty-format': 2.0.5 estree-walker: 3.0.3 - loupe: 3.1.1 + loupe: 3.1.2 tinyrainbow: 1.2.0 - '@vitest/utils@2.1.1': + '@vitest/utils@2.1.8': dependencies: - '@vitest/pretty-format': 2.1.1 - loupe: 3.1.1 + '@vitest/pretty-format': 2.1.8 + loupe: 3.1.2 tinyrainbow: 1.2.0 - '@webassemblyjs/ast@1.12.1': + '@webassemblyjs/ast@1.14.1': dependencies: - '@webassemblyjs/helper-numbers': 1.11.6 - '@webassemblyjs/helper-wasm-bytecode': 1.11.6 + '@webassemblyjs/helper-numbers': 1.13.2 + '@webassemblyjs/helper-wasm-bytecode': 1.13.2 - '@webassemblyjs/floating-point-hex-parser@1.11.6': {} + '@webassemblyjs/floating-point-hex-parser@1.13.2': {} - '@webassemblyjs/helper-api-error@1.11.6': {} + '@webassemblyjs/helper-api-error@1.13.2': {} - '@webassemblyjs/helper-buffer@1.12.1': {} + '@webassemblyjs/helper-buffer@1.14.1': {} - '@webassemblyjs/helper-numbers@1.11.6': + '@webassemblyjs/helper-numbers@1.13.2': dependencies: - '@webassemblyjs/floating-point-hex-parser': 1.11.6 - '@webassemblyjs/helper-api-error': 1.11.6 + '@webassemblyjs/floating-point-hex-parser': 1.13.2 + '@webassemblyjs/helper-api-error': 1.13.2 '@xtuc/long': 4.2.2 - '@webassemblyjs/helper-wasm-bytecode@1.11.6': {} + '@webassemblyjs/helper-wasm-bytecode@1.13.2': {} - '@webassemblyjs/helper-wasm-section@1.12.1': + '@webassemblyjs/helper-wasm-section@1.14.1': dependencies: - '@webassemblyjs/ast': 1.12.1 - '@webassemblyjs/helper-buffer': 1.12.1 - '@webassemblyjs/helper-wasm-bytecode': 1.11.6 - '@webassemblyjs/wasm-gen': 1.12.1 + '@webassemblyjs/ast': 1.14.1 + '@webassemblyjs/helper-buffer': 1.14.1 + '@webassemblyjs/helper-wasm-bytecode': 1.13.2 + '@webassemblyjs/wasm-gen': 1.14.1 - '@webassemblyjs/ieee754@1.11.6': + '@webassemblyjs/ieee754@1.13.2': dependencies: '@xtuc/ieee754': 1.2.0 - '@webassemblyjs/leb128@1.11.6': + '@webassemblyjs/leb128@1.13.2': dependencies: '@xtuc/long': 4.2.2 - '@webassemblyjs/utf8@1.11.6': {} + '@webassemblyjs/utf8@1.13.2': {} - '@webassemblyjs/wasm-edit@1.12.1': + '@webassemblyjs/wasm-edit@1.14.1': dependencies: - '@webassemblyjs/ast': 1.12.1 - '@webassemblyjs/helper-buffer': 1.12.1 - '@webassemblyjs/helper-wasm-bytecode': 1.11.6 - '@webassemblyjs/helper-wasm-section': 1.12.1 - '@webassemblyjs/wasm-gen': 1.12.1 - '@webassemblyjs/wasm-opt': 1.12.1 - '@webassemblyjs/wasm-parser': 1.12.1 - '@webassemblyjs/wast-printer': 1.12.1 + '@webassemblyjs/ast': 1.14.1 + '@webassemblyjs/helper-buffer': 1.14.1 + '@webassemblyjs/helper-wasm-bytecode': 1.13.2 + '@webassemblyjs/helper-wasm-section': 1.14.1 + '@webassemblyjs/wasm-gen': 1.14.1 + '@webassemblyjs/wasm-opt': 1.14.1 + '@webassemblyjs/wasm-parser': 1.14.1 + '@webassemblyjs/wast-printer': 1.14.1 - '@webassemblyjs/wasm-gen@1.12.1': + '@webassemblyjs/wasm-gen@1.14.1': dependencies: - '@webassemblyjs/ast': 1.12.1 - '@webassemblyjs/helper-wasm-bytecode': 1.11.6 - '@webassemblyjs/ieee754': 1.11.6 - '@webassemblyjs/leb128': 1.11.6 - '@webassemblyjs/utf8': 1.11.6 + '@webassemblyjs/ast': 1.14.1 + '@webassemblyjs/helper-wasm-bytecode': 1.13.2 + '@webassemblyjs/ieee754': 1.13.2 + '@webassemblyjs/leb128': 1.13.2 + '@webassemblyjs/utf8': 1.13.2 - '@webassemblyjs/wasm-opt@1.12.1': + '@webassemblyjs/wasm-opt@1.14.1': dependencies: - '@webassemblyjs/ast': 1.12.1 - '@webassemblyjs/helper-buffer': 1.12.1 - '@webassemblyjs/wasm-gen': 1.12.1 - '@webassemblyjs/wasm-parser': 1.12.1 + '@webassemblyjs/ast': 1.14.1 + '@webassemblyjs/helper-buffer': 1.14.1 + '@webassemblyjs/wasm-gen': 1.14.1 + '@webassemblyjs/wasm-parser': 1.14.1 - '@webassemblyjs/wasm-parser@1.12.1': + '@webassemblyjs/wasm-parser@1.14.1': dependencies: - '@webassemblyjs/ast': 1.12.1 - '@webassemblyjs/helper-api-error': 1.11.6 - '@webassemblyjs/helper-wasm-bytecode': 1.11.6 - '@webassemblyjs/ieee754': 1.11.6 - '@webassemblyjs/leb128': 1.11.6 - '@webassemblyjs/utf8': 1.11.6 + '@webassemblyjs/ast': 1.14.1 + '@webassemblyjs/helper-api-error': 1.13.2 + '@webassemblyjs/helper-wasm-bytecode': 1.13.2 + '@webassemblyjs/ieee754': 1.13.2 + '@webassemblyjs/leb128': 1.13.2 + '@webassemblyjs/utf8': 1.13.2 - '@webassemblyjs/wast-printer@1.12.1': + '@webassemblyjs/wast-printer@1.14.1': dependencies: - '@webassemblyjs/ast': 1.12.1 + '@webassemblyjs/ast': 1.14.1 '@xtuc/long': 4.2.2 '@xtuc/ieee754@1.2.0': {} @@ -8675,38 +8426,23 @@ snapshots: abab@2.0.6: {} - accepts@1.3.8: - dependencies: - mime-types: 2.1.35 - negotiator: 0.6.3 - acorn-globals@7.0.1: dependencies: acorn: 8.12.1 acorn-walk: 8.3.4 - acorn-import-attributes@1.9.5(acorn@8.12.1): - dependencies: - acorn: 8.12.1 - - acorn-jsx@5.3.2(acorn@7.4.1): - dependencies: - acorn: 7.4.1 - acorn-jsx@5.3.2(acorn@8.12.1): dependencies: acorn: 8.12.1 - acorn-walk@7.2.0: {} - acorn-walk@8.3.4: dependencies: acorn: 8.12.1 - acorn@7.4.1: {} - acorn@8.12.1: {} + acorn@8.14.0: {} + agent-base@6.0.2: dependencies: debug: 4.3.7 @@ -8747,7 +8483,7 @@ snapshots: ajv@8.17.1: dependencies: fast-deep-equal: 3.1.3 - fast-uri: 3.0.1 + fast-uri: 3.0.3 json-schema-traverse: 1.0.0 require-from-string: 2.0.2 @@ -8759,12 +8495,8 @@ snapshots: dependencies: environment: 1.1.0 - ansi-html-community@0.0.8: {} - ansi-regex@5.0.1: {} - ansi-regex@6.1.0: {} - ansi-styles@3.2.1: dependencies: color-convert: 1.9.3 @@ -8775,8 +8507,6 @@ snapshots: ansi-styles@5.2.0: {} - ansi-styles@6.2.1: {} - any-promise@1.3.0: {} anymatch@3.1.3: @@ -8784,8 +8514,6 @@ snapshots: normalize-path: 3.0.0 picomatch: 2.3.1 - arg@5.0.2: {} - argparse@1.0.10: dependencies: sprintf-js: 1.0.3 @@ -8806,15 +8534,11 @@ snapshots: dependencies: dequal: 2.0.3 - aria-query@5.3.2: {} - array-buffer-byte-length@1.0.1: dependencies: call-bind: 1.0.7 is-array-buffer: 3.0.4 - array-flatten@1.1.1: {} - array-ify@1.0.0: {} array-includes@3.1.8: @@ -8872,26 +8596,14 @@ snapshots: ast-types@0.16.1: dependencies: - tslib: 2.7.0 + tslib: 2.8.1 asynckit@0.4.0: {} - autoprefixer@10.4.20(postcss@8.4.47): - dependencies: - browserslist: 4.23.3 - caniuse-lite: 1.0.30001663 - fraction.js: 4.3.7 - normalize-range: 0.1.2 - picocolors: 1.1.0 - postcss: 8.4.47 - postcss-value-parser: 4.2.0 - available-typed-arrays@1.0.7: dependencies: possible-typed-array-names: 1.0.0 - axe-core@4.10.0: {} - babel-jest@27.5.1(@babel/core@7.25.2): dependencies: '@babel/core': 7.25.2 @@ -8919,21 +8631,14 @@ snapshots: transitivePeerDependencies: - supports-color - babel-loader@8.4.1(@babel/core@7.25.2)(webpack@5.94.0(esbuild@0.23.1)): + babel-loader@8.4.1(@babel/core@7.25.2)(webpack@5.97.1(esbuild@0.24.0)): dependencies: '@babel/core': 7.25.2 find-cache-dir: 3.3.2 loader-utils: 2.0.4 make-dir: 3.1.0 schema-utils: 2.7.1 - webpack: 5.94.0(esbuild@0.23.1) - - babel-loader@9.2.1(@babel/core@7.25.2)(webpack@5.94.0(esbuild@0.23.1)): - dependencies: - '@babel/core': 7.25.2 - find-cache-dir: 4.0.0 - schema-utils: 4.2.0 - webpack: 5.94.0(esbuild@0.23.1) + webpack: 5.97.1(esbuild@0.24.0) babel-plugin-istanbul@6.1.1: dependencies: @@ -9024,25 +8729,6 @@ snapshots: big.js@5.2.2: {} - binary-extensions@2.3.0: {} - - body-parser@1.20.3: - dependencies: - bytes: 3.1.2 - content-type: 1.0.5 - debug: 2.6.9 - depd: 2.0.0 - destroy: 1.2.0 - http-errors: 2.0.0 - iconv-lite: 0.4.24 - on-finished: 2.4.1 - qs: 6.13.0 - raw-body: 2.5.2 - type-is: 1.6.18 - unpipe: 1.0.0 - transitivePeerDependencies: - - supports-color - boolbase@1.0.0: {} bottleneck@2.19.5: {} @@ -9069,6 +8755,13 @@ snapshots: node-releases: 2.0.18 update-browserslist-db: 1.1.0(browserslist@4.23.3) + browserslist@4.24.2: + dependencies: + caniuse-lite: 1.0.30001687 + electron-to-chromium: 1.5.71 + node-releases: 2.0.18 + update-browserslist-db: 1.1.1(browserslist@4.24.2) + bser@2.1.1: dependencies: node-int64: 0.4.0 @@ -9077,8 +8770,6 @@ snapshots: builtin-modules@3.3.0: {} - bytes@3.1.2: {} - call-bind@1.0.7: dependencies: es-define-property: 1.0.0 @@ -9089,13 +8780,6 @@ snapshots: callsites@3.1.0: {} - camel-case@4.1.2: - dependencies: - pascal-case: 3.1.2 - tslib: 2.7.0 - - camelcase-css@2.0.1: {} - camelcase@5.3.1: {} camelcase@6.3.0: {} @@ -9109,14 +8793,14 @@ snapshots: caniuse-lite@1.0.30001663: {} - case-sensitive-paths-webpack-plugin@2.4.0: {} + caniuse-lite@1.0.30001687: {} - chai@5.1.1: + chai@5.1.2: dependencies: assertion-error: 2.0.1 check-error: 2.1.1 deep-eql: 5.0.2 - loupe: 3.1.1 + loupe: 3.1.2 pathval: 2.0.0 chalk@2.4.2: @@ -9141,30 +8825,12 @@ snapshots: check-error@2.1.1: {} - chokidar@3.6.0: - dependencies: - anymatch: 3.1.3 - braces: 3.0.3 - glob-parent: 5.1.2 - is-binary-path: 2.1.0 - is-glob: 4.0.3 - normalize-path: 3.0.0 - readdirp: 3.6.0 - optionalDependencies: - fsevents: 2.3.3 - - chromatic@11.10.4: {} - chrome-trace-event@1.0.4: {} ci-info@3.9.0: {} cjs-module-lexer@1.4.1: {} - clean-css@5.3.3: - dependencies: - source-map: 0.6.1 - clean-stack@5.2.0: dependencies: escape-string-regexp: 5.0.0 @@ -9184,8 +8850,6 @@ snapshots: optionalDependencies: '@colors/colors': 1.5.0 - client-only@0.0.1: {} - cliui@7.0.4: dependencies: string-width: 4.2.3 @@ -9218,22 +8882,14 @@ snapshots: colord@2.9.3: {} - colorette@2.0.20: {} - combined-stream@1.0.8: dependencies: delayed-stream: 1.0.0 commander@2.20.3: {} - commander@4.1.1: {} - commander@7.2.0: {} - commander@8.3.0: {} - - common-path-prefix@3.0.0: {} - commondir@1.0.1: {} compare-func@2.0.0: @@ -9252,14 +8908,6 @@ snapshots: ini: 1.3.8 proto-list: 1.2.4 - constants-browserify@1.0.0: {} - - content-disposition@0.5.4: - dependencies: - safe-buffer: 5.2.1 - - content-type@1.0.5: {} - conventional-changelog-angular@8.0.0: dependencies: compare-func: 2.0.0 @@ -9290,24 +8938,12 @@ snapshots: convert-source-map@2.0.0: {} - cookie-signature@1.0.6: {} - - cookie@0.6.0: {} - core-js-compat@3.38.1: dependencies: browserslist: 4.23.3 core-util-is@1.0.3: {} - cosmiconfig@7.1.0: - dependencies: - '@types/parse-json': 4.0.2 - import-fresh: 3.3.0 - parse-json: 5.2.0 - path-type: 4.0.0 - yaml: 1.10.2 - cosmiconfig@8.3.6(typescript@4.9.5): dependencies: import-fresh: 3.3.0 @@ -9355,7 +8991,7 @@ snapshots: dependencies: postcss: 8.4.47 - css-loader@6.11.0(webpack@5.94.0(esbuild@0.23.1)): + css-loader@6.11.0(webpack@5.97.1(esbuild@0.24.0)): dependencies: icss-utils: 5.1.0(postcss@8.4.47) postcss: 8.4.47 @@ -9366,7 +9002,7 @@ snapshots: postcss-value-parser: 4.2.0 semver: 7.6.3 optionalDependencies: - webpack: 5.94.0(esbuild@0.23.1) + webpack: 5.97.1(esbuild@0.24.0) css-select@4.3.0: dependencies: @@ -9509,10 +9145,6 @@ snapshots: date-fns@3.6.0: {} - debug@2.6.9: - dependencies: - ms: 2.0.0 - debug@4.3.7: dependencies: ms: 2.1.3 @@ -9521,8 +9153,6 @@ snapshots: decimal.js@10.4.3: {} - dedent@0.7.0: {} - dedent@1.5.3: {} deep-eql@5.0.2: {} @@ -9570,24 +9200,18 @@ snapshots: delayed-stream@1.0.0: {} - depd@2.0.0: {} - dequal@2.0.3: {} - destroy@1.2.0: {} + detect-libc@1.0.3: {} detect-newline@3.1.0: {} - didyoumean@1.2.2: {} - diff-sequences@29.6.3: {} dir-glob@3.0.1: dependencies: path-type: 4.0.0 - dlv@1.1.3: {} - doctrine@2.1.0: dependencies: esutils: 2.0.3 @@ -9600,13 +9224,9 @@ snapshots: dom-accessibility-api@0.6.3: {} - dom-converter@0.2.0: - dependencies: - utila: 0.4.0 - dom-helpers@5.2.1: dependencies: - '@babel/runtime': 7.25.6 + '@babel/runtime': 7.26.0 csstype: 3.1.3 dom-serializer@1.4.1: @@ -9631,11 +9251,6 @@ snapshots: domelementtype: 2.3.0 domhandler: 4.3.1 - dot-case@3.0.4: - dependencies: - no-case: 3.0.4 - tslib: 2.7.0 - dot-prop@5.3.0: dependencies: is-obj: 2.0.0 @@ -9644,32 +9259,18 @@ snapshots: dependencies: readable-stream: 2.3.8 - eastasianwidth@0.2.0: {} - - ee-first@1.1.1: {} - electron-to-chromium@1.5.28: {} + electron-to-chromium@1.5.71: {} + emittery@0.13.1: {} emoji-regex@8.0.0: {} - emoji-regex@9.2.2: {} - emojilib@2.4.0: {} emojis-list@3.0.0: {} - encodeurl@1.0.2: {} - - encodeurl@2.0.0: {} - - endent@2.1.0: - dependencies: - dedent: 0.7.0 - fast-json-parse: 1.0.3 - objectorarray: 1.0.5 - enhanced-resolve@5.17.1: dependencies: graceful-fs: 4.2.11 @@ -9798,44 +9399,42 @@ snapshots: is-date-object: 1.0.5 is-symbol: 1.0.4 - esbuild-register@3.6.0(esbuild@0.23.1): + esbuild-register@3.6.0(esbuild@0.24.0): dependencies: debug: 4.3.7 - esbuild: 0.23.1 + esbuild: 0.24.0 transitivePeerDependencies: - supports-color - esbuild@0.23.1: + esbuild@0.24.0: optionalDependencies: - '@esbuild/aix-ppc64': 0.23.1 - '@esbuild/android-arm': 0.23.1 - '@esbuild/android-arm64': 0.23.1 - '@esbuild/android-x64': 0.23.1 - '@esbuild/darwin-arm64': 0.23.1 - '@esbuild/darwin-x64': 0.23.1 - '@esbuild/freebsd-arm64': 0.23.1 - '@esbuild/freebsd-x64': 0.23.1 - '@esbuild/linux-arm': 0.23.1 - '@esbuild/linux-arm64': 0.23.1 - '@esbuild/linux-ia32': 0.23.1 - '@esbuild/linux-loong64': 0.23.1 - '@esbuild/linux-mips64el': 0.23.1 - '@esbuild/linux-ppc64': 0.23.1 - '@esbuild/linux-riscv64': 0.23.1 - '@esbuild/linux-s390x': 0.23.1 - '@esbuild/linux-x64': 0.23.1 - '@esbuild/netbsd-x64': 0.23.1 - '@esbuild/openbsd-arm64': 0.23.1 - '@esbuild/openbsd-x64': 0.23.1 - '@esbuild/sunos-x64': 0.23.1 - '@esbuild/win32-arm64': 0.23.1 - '@esbuild/win32-ia32': 0.23.1 - '@esbuild/win32-x64': 0.23.1 + '@esbuild/aix-ppc64': 0.24.0 + '@esbuild/android-arm': 0.24.0 + '@esbuild/android-arm64': 0.24.0 + '@esbuild/android-x64': 0.24.0 + '@esbuild/darwin-arm64': 0.24.0 + '@esbuild/darwin-x64': 0.24.0 + '@esbuild/freebsd-arm64': 0.24.0 + '@esbuild/freebsd-x64': 0.24.0 + '@esbuild/linux-arm': 0.24.0 + '@esbuild/linux-arm64': 0.24.0 + '@esbuild/linux-ia32': 0.24.0 + '@esbuild/linux-loong64': 0.24.0 + '@esbuild/linux-mips64el': 0.24.0 + '@esbuild/linux-ppc64': 0.24.0 + '@esbuild/linux-riscv64': 0.24.0 + '@esbuild/linux-s390x': 0.24.0 + '@esbuild/linux-x64': 0.24.0 + '@esbuild/netbsd-x64': 0.24.0 + '@esbuild/openbsd-arm64': 0.24.0 + '@esbuild/openbsd-x64': 0.24.0 + '@esbuild/sunos-x64': 0.24.0 + '@esbuild/win32-arm64': 0.24.0 + '@esbuild/win32-ia32': 0.24.0 + '@esbuild/win32-x64': 0.24.0 escalade@3.2.0: {} - escape-html@1.0.3: {} - escape-string-regexp@1.0.5: {} escape-string-regexp@2.0.0: {} @@ -9856,14 +9455,14 @@ snapshots: dependencies: eslint: 8.57.1 - eslint-plugin-prettier@5.2.1(@types/eslint@8.40.2)(eslint-config-prettier@9.1.0(eslint@8.57.1))(eslint@8.57.1)(prettier@3.3.3): + eslint-plugin-prettier@5.2.1(@types/eslint@9.6.1)(eslint-config-prettier@9.1.0(eslint@8.57.1))(eslint@8.57.1)(prettier@3.4.2): dependencies: eslint: 8.57.1 - prettier: 3.3.3 + prettier: 3.4.2 prettier-linter-helpers: 1.0.0 synckit: 0.9.1 optionalDependencies: - '@types/eslint': 8.40.2 + '@types/eslint': 9.6.1 eslint-config-prettier: 9.1.0(eslint@8.57.1) eslint-plugin-react-hooks@4.6.2(eslint@8.57.1): @@ -9892,6 +9491,16 @@ snapshots: string.prototype.matchall: 4.0.11 string.prototype.repeat: 1.0.0 + eslint-plugin-storybook@0.11.1(eslint@8.57.1)(typescript@4.9.5): + dependencies: + '@storybook/csf': 0.1.12 + '@typescript-eslint/utils': 8.17.0(eslint@8.57.1)(typescript@4.9.5) + eslint: 8.57.1 + ts-dedent: 2.2.0 + transitivePeerDependencies: + - supports-color + - typescript + eslint-scope@5.1.1: dependencies: esrecurse: 4.3.0 @@ -9904,6 +9513,8 @@ snapshots: eslint-visitor-keys@3.4.3: {} + eslint-visitor-keys@4.2.0: {} + eslint@8.57.1: dependencies: '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.1) @@ -9979,8 +9590,6 @@ snapshots: esutils@2.0.3: {} - etag@1.8.1: {} - eventemitter3@4.0.7: {} events@3.3.0: {} @@ -10034,42 +9643,6 @@ snapshots: jest-message-util: 29.7.0 jest-util: 29.7.0 - express@4.21.0: - dependencies: - accepts: 1.3.8 - array-flatten: 1.1.1 - body-parser: 1.20.3 - content-disposition: 0.5.4 - content-type: 1.0.5 - cookie: 0.6.0 - cookie-signature: 1.0.6 - debug: 2.6.9 - depd: 2.0.0 - encodeurl: 2.0.0 - escape-html: 1.0.3 - etag: 1.8.1 - finalhandler: 1.3.1 - fresh: 0.5.2 - http-errors: 2.0.0 - merge-descriptors: 1.0.3 - methods: 1.1.2 - on-finished: 2.4.1 - parseurl: 1.3.3 - path-to-regexp: 0.1.10 - proxy-addr: 2.0.7 - qs: 6.13.0 - range-parser: 1.2.1 - safe-buffer: 5.2.1 - send: 0.19.0 - serve-static: 1.16.2 - setprototypeof: 1.2.0 - statuses: 2.0.1 - type-is: 1.6.18 - utils-merge: 1.0.1 - vary: 1.1.2 - transitivePeerDependencies: - - supports-color - fast-deep-equal@3.1.3: {} fast-diff@1.3.0: {} @@ -10084,13 +9657,11 @@ snapshots: merge2: 1.4.1 micromatch: 4.0.8 - fast-json-parse@1.0.3: {} - fast-json-stable-stringify@2.1.0: {} fast-levenshtein@2.0.6: {} - fast-uri@3.0.1: {} + fast-uri@3.0.3: {} fastq@1.17.1: dependencies: @@ -10112,40 +9683,16 @@ snapshots: dependencies: flat-cache: 3.2.0 - file-system-cache@2.3.0: - dependencies: - fs-extra: 11.1.1 - ramda: 0.29.0 - - filesize@10.1.6: {} - fill-range@7.1.1: dependencies: to-regex-range: 5.0.1 - finalhandler@1.3.1: - dependencies: - debug: 2.6.9 - encodeurl: 2.0.0 - escape-html: 1.0.3 - on-finished: 2.4.1 - parseurl: 1.3.3 - statuses: 2.0.1 - unpipe: 1.0.0 - transitivePeerDependencies: - - supports-color - find-cache-dir@3.3.2: dependencies: commondir: 1.0.1 make-dir: 3.1.0 pkg-dir: 4.2.0 - find-cache-dir@4.0.0: - dependencies: - common-path-prefix: 3.0.0 - pkg-dir: 7.0.0 - find-up-simple@1.0.0: {} find-up@2.1.0: @@ -10162,11 +9709,6 @@ snapshots: locate-path: 6.0.0 path-exists: 4.0.0 - find-up@6.3.0: - dependencies: - locate-path: 7.2.0 - path-exists: 5.0.0 - find-versions@6.0.0: dependencies: semver-regex: 4.0.5 @@ -10184,65 +9726,23 @@ snapshots: dependencies: is-callable: 1.2.7 - foreground-child@3.3.0: - dependencies: - cross-spawn: 7.0.3 - signal-exit: 4.1.0 - - fork-ts-checker-webpack-plugin@8.0.0(typescript@4.9.5)(webpack@5.94.0(esbuild@0.23.1)): - dependencies: - '@babel/code-frame': 7.24.7 - chalk: 4.1.2 - chokidar: 3.6.0 - cosmiconfig: 7.1.0 - deepmerge: 4.3.1 - fs-extra: 10.1.0 - memfs: 3.5.3 - minimatch: 3.1.2 - node-abort-controller: 3.1.1 - schema-utils: 3.3.0 - semver: 7.6.3 - tapable: 2.2.1 - typescript: 4.9.5 - webpack: 5.94.0(esbuild@0.23.1) - form-data@4.0.0: dependencies: asynckit: 0.4.0 combined-stream: 1.0.8 mime-types: 2.1.35 - forwarded@0.2.0: {} - - fraction.js@4.3.7: {} - - fresh@0.5.2: {} - from2@2.3.0: dependencies: inherits: 2.0.4 readable-stream: 2.3.8 - fs-extra@10.1.0: - dependencies: - graceful-fs: 4.2.11 - jsonfile: 6.1.0 - universalify: 2.0.1 - - fs-extra@11.1.1: - dependencies: - graceful-fs: 4.2.11 - jsonfile: 6.1.0 - universalify: 2.0.1 - fs-extra@11.2.0: dependencies: graceful-fs: 4.2.11 jsonfile: 6.1.0 universalify: 2.0.1 - fs-monkey@1.0.6: {} - fs.realpath@1.0.0: {} fsevents@2.3.3: @@ -10269,8 +9769,6 @@ snapshots: get-caller-file@2.0.5: {} - get-func-name@2.0.2: {} - get-intrinsic@1.2.4: dependencies: es-errors: 1.3.0 @@ -10307,8 +9805,6 @@ snapshots: through2: 2.0.5 traverse: 0.6.8 - github-slugger@2.0.0: {} - glob-parent@5.1.2: dependencies: is-glob: 4.0.3 @@ -10319,15 +9815,6 @@ snapshots: glob-to-regexp@0.4.1: {} - glob@10.4.5: - dependencies: - foreground-child: 3.3.0 - jackspeak: 3.4.3 - minimatch: 9.0.5 - minipass: 7.1.2 - package-json-from-dist: 1.0.0 - path-scurry: 1.11.1 - glob@7.2.3: dependencies: fs.realpath: 1.0.0 @@ -10400,20 +9887,6 @@ snapshots: dependencies: function-bind: 1.1.2 - hast-util-heading-rank@3.0.0: - dependencies: - '@types/hast': 3.0.4 - - hast-util-is-element@3.0.0: - dependencies: - '@types/hast': 3.0.4 - - hast-util-to-string@3.0.0: - dependencies: - '@types/hast': 3.0.4 - - he@1.2.0: {} - highlight.js@10.7.3: {} hook-std@3.0.0: {} @@ -10430,47 +9903,8 @@ snapshots: dependencies: whatwg-encoding: 2.0.0 - html-entities@2.5.2: {} - html-escaper@2.0.2: {} - html-minifier-terser@6.1.0: - dependencies: - camel-case: 4.1.2 - clean-css: 5.3.3 - commander: 8.3.0 - he: 1.2.0 - param-case: 3.0.4 - relateurl: 0.2.7 - terser: 5.33.0 - - html-tags@3.3.1: {} - - html-webpack-plugin@5.6.0(webpack@5.94.0(esbuild@0.23.1)): - dependencies: - '@types/html-minifier-terser': 6.1.0 - html-minifier-terser: 6.1.0 - lodash: 4.17.21 - pretty-error: 4.0.0 - tapable: 2.2.1 - optionalDependencies: - webpack: 5.94.0(esbuild@0.23.1) - - htmlparser2@6.1.0: - dependencies: - domelementtype: 2.3.0 - domhandler: 4.3.1 - domutils: 2.8.0 - entities: 2.2.0 - - http-errors@2.0.0: - dependencies: - depd: 2.0.0 - inherits: 2.0.4 - setprototypeof: 1.2.0 - statuses: 2.0.1 - toidentifier: 1.0.1 - http-proxy-agent@5.0.0: dependencies: '@tootallnate/once': 2.0.0 @@ -10506,10 +9940,6 @@ snapshots: human-signals@8.0.0: {} - iconv-lite@0.4.24: - dependencies: - safer-buffer: 2.1.2 - iconv-lite@0.6.3: dependencies: safer-buffer: 2.1.2 @@ -10583,10 +10013,6 @@ snapshots: from2: 2.3.0 p-is-promise: 3.0.0 - ipaddr.js@1.9.1: {} - - is-absolute-url@4.0.1: {} - is-arguments@1.1.1: dependencies: call-bind: 1.0.7 @@ -10607,10 +10033,6 @@ snapshots: dependencies: has-bigints: 1.0.2 - is-binary-path@2.1.0: - dependencies: - binary-extensions: 2.3.0 - is-boolean-object@1.1.2: dependencies: call-bind: 1.0.7 @@ -10672,8 +10094,6 @@ snapshots: is-plain-obj@4.1.0: {} - is-plain-object@5.0.0: {} - is-potential-custom-element-name@1.0.1: {} is-reference@1.2.1: @@ -10789,13 +10209,7 @@ snapshots: get-intrinsic: 1.2.4 has-symbols: 1.0.3 reflect.getprototypeof: 1.0.6 - set-function-name: 2.0.2 - - jackspeak@3.4.3: - dependencies: - '@isaacs/cliui': 8.0.2 - optionalDependencies: - '@pkgjs/parseargs': 0.11.0 + set-function-name: 2.0.2 java-properties@1.0.2: {} @@ -11163,6 +10577,8 @@ snapshots: jiti@1.21.6: {} + jiti@2.4.1: {} + js-tokens@4.0.0: {} js-yaml@3.14.1: @@ -11213,6 +10629,8 @@ snapshots: jsesc@2.5.2: {} + jsesc@3.0.2: {} + json-buffer@3.0.1: {} json-parse-better-errors@1.0.2: {} @@ -11253,9 +10671,52 @@ snapshots: prelude-ls: 1.2.1 type-check: 0.4.0 - lilconfig@2.1.0: {} + lightningcss-darwin-arm64@1.28.2: + optional: true + + lightningcss-darwin-x64@1.28.2: + optional: true + + lightningcss-freebsd-x64@1.28.2: + optional: true + + lightningcss-linux-arm-gnueabihf@1.28.2: + optional: true + + lightningcss-linux-arm64-gnu@1.28.2: + optional: true + + lightningcss-linux-arm64-musl@1.28.2: + optional: true + + lightningcss-linux-x64-gnu@1.28.2: + optional: true + + lightningcss-linux-x64-musl@1.28.2: + optional: true + + lightningcss-win32-arm64-msvc@1.28.2: + optional: true + + lightningcss-win32-x64-msvc@1.28.2: + optional: true + + lightningcss@1.28.2: + dependencies: + detect-libc: 1.0.3 + optionalDependencies: + lightningcss-darwin-arm64: 1.28.2 + lightningcss-darwin-x64: 1.28.2 + lightningcss-freebsd-x64: 1.28.2 + lightningcss-linux-arm-gnueabihf: 1.28.2 + lightningcss-linux-arm64-gnu: 1.28.2 + lightningcss-linux-arm64-musl: 1.28.2 + lightningcss-linux-x64-gnu: 1.28.2 + lightningcss-linux-x64-musl: 1.28.2 + lightningcss-win32-arm64-msvc: 1.28.2 + lightningcss-win32-x64-msvc: 1.28.2 - lilconfig@3.1.2: {} + lilconfig@2.1.0: {} lines-and-columns@1.2.4: {} @@ -11289,10 +10750,6 @@ snapshots: dependencies: p-locate: 5.0.0 - locate-path@7.2.0: - dependencies: - p-locate: 6.0.0 - lodash-es@4.17.21: {} lodash.camelcase@4.3.0: {} @@ -11321,13 +10778,7 @@ snapshots: dependencies: js-tokens: 4.0.0 - loupe@3.1.1: - dependencies: - get-func-name: 2.0.2 - - lower-case@2.0.2: - dependencies: - tslib: 2.7.0 + loupe@3.1.2: {} lru-cache@10.4.3: {} @@ -11345,6 +10796,10 @@ snapshots: dependencies: sourcemap-codec: 1.4.8 + magic-string@0.27.0: + dependencies: + '@jridgewell/sourcemap-codec': 1.5.0 + magic-string@0.30.11: dependencies: '@jridgewell/sourcemap-codec': 1.5.0 @@ -11363,10 +10818,6 @@ snapshots: map-or-similar@1.5.0: {} - markdown-to-jsx@7.5.0(react@18.3.1): - dependencies: - react: 18.3.1 - marked-terminal@7.1.0(marked@12.0.2): dependencies: ansi-escapes: 7.0.0 @@ -11381,26 +10832,16 @@ snapshots: mdn-data@2.0.14: {} - media-typer@0.3.0: {} - - memfs@3.5.3: - dependencies: - fs-monkey: 1.0.6 - memoizerific@1.11.3: dependencies: map-or-similar: 1.5.0 meow@13.2.0: {} - merge-descriptors@1.0.3: {} - merge-stream@2.0.0: {} merge2@1.4.1: {} - methods@1.1.2: {} - micromatch@4.0.8: dependencies: braces: 3.0.3 @@ -11412,8 +10853,6 @@ snapshots: dependencies: mime-db: 1.52.0 - mime@1.6.0: {} - mime@4.0.4: {} mimic-fn@2.1.0: {} @@ -11434,10 +10873,6 @@ snapshots: minimist@1.2.8: {} - minipass@7.1.2: {} - - ms@2.0.0: {} - ms@2.1.3: {} mz@2.7.0: @@ -11450,19 +10885,10 @@ snapshots: natural-compare@1.4.0: {} - negotiator@0.6.3: {} - neo-async@2.6.2: {} nerf-dart@1.0.0: {} - no-case@3.0.4: - dependencies: - lower-case: 2.0.2 - tslib: 2.7.0 - - node-abort-controller@3.1.1: {} - node-emoji@2.1.3: dependencies: '@sindresorhus/is': 4.6.0 @@ -11482,8 +10908,6 @@ snapshots: normalize-path@3.0.0: {} - normalize-range@0.1.2: {} - normalize-url@6.1.0: {} normalize-url@8.0.1: {} @@ -11511,8 +10935,6 @@ snapshots: object-assign@4.1.1: {} - object-hash@3.0.0: {} - object-inspect@1.13.2: {} object-is@1.1.6: @@ -11548,12 +10970,6 @@ snapshots: define-properties: 1.2.1 es-object-atoms: 1.0.0 - objectorarray@1.0.5: {} - - on-finished@2.4.1: - dependencies: - ee-first: 1.1.1 - once@1.4.0: dependencies: wrappy: 1.0.2 @@ -11603,10 +11019,6 @@ snapshots: dependencies: yocto-queue: 0.1.0 - p-limit@4.0.0: - dependencies: - yocto-queue: 1.1.1 - p-locate@2.0.0: dependencies: p-limit: 1.3.0 @@ -11619,10 +11031,6 @@ snapshots: dependencies: p-limit: 3.1.0 - p-locate@6.0.0: - dependencies: - p-limit: 4.0.0 - p-map@7.0.2: {} p-queue@6.6.2: @@ -11640,13 +11048,6 @@ snapshots: p-try@2.2.0: {} - package-json-from-dist@1.0.0: {} - - param-case@3.0.4: - dependencies: - dot-case: 3.0.4 - tslib: 2.7.0 - parent-module@1.0.1: dependencies: callsites: 3.1.0 @@ -11683,21 +11084,10 @@ snapshots: dependencies: entities: 4.5.0 - parseurl@1.3.3: {} - - pascal-case@3.1.2: - dependencies: - no-case: 3.0.4 - tslib: 2.7.0 - - path-browserify@1.0.1: {} - path-exists@3.0.0: {} path-exists@4.0.0: {} - path-exists@5.0.0: {} - path-is-absolute@1.0.1: {} path-key@3.1.1: {} @@ -11706,13 +11096,6 @@ snapshots: path-parse@1.0.7: {} - path-scurry@1.11.1: - dependencies: - lru-cache: 10.4.3 - minipass: 7.1.2 - - path-to-regexp@0.1.10: {} - path-type@4.0.0: {} path-type@5.0.0: {} @@ -11721,9 +11104,11 @@ snapshots: picocolors@1.1.0: {} + picocolors@1.1.1: {} + picomatch@2.3.1: {} - pify@2.3.0: {} + picomatch@4.0.2: {} pify@3.0.0: {} @@ -11740,10 +11125,6 @@ snapshots: dependencies: find-up: 4.1.0 - pkg-dir@7.0.0: - dependencies: - find-up: 6.3.0 - polished@4.3.1: dependencies: '@babel/runtime': 7.25.6 @@ -11786,18 +11167,6 @@ snapshots: dependencies: postcss: 8.4.47 - postcss-import@15.1.0(postcss@8.4.47): - dependencies: - postcss: 8.4.47 - postcss-value-parser: 4.2.0 - read-cache: 1.0.0 - resolve: 1.22.8 - - postcss-js@4.0.1(postcss@8.4.47): - dependencies: - camelcase-css: 2.0.1 - postcss: 8.4.47 - postcss-load-config@3.1.4(postcss@8.4.47): dependencies: lilconfig: 2.1.0 @@ -11805,20 +11174,13 @@ snapshots: optionalDependencies: postcss: 8.4.47 - postcss-load-config@4.0.2(postcss@8.4.47): - dependencies: - lilconfig: 3.1.2 - yaml: 2.5.1 - optionalDependencies: - postcss: 8.4.47 - - postcss-loader@7.3.4(postcss@8.4.47)(typescript@4.9.5)(webpack@5.94.0(esbuild@0.23.1)): + postcss-loader@7.3.4(postcss@8.4.47)(typescript@4.9.5)(webpack@5.97.1(esbuild@0.24.0)): dependencies: cosmiconfig: 8.3.6(typescript@4.9.5) jiti: 1.21.6 postcss: 8.4.47 semver: 7.6.3 - webpack: 5.94.0(esbuild@0.23.1) + webpack: 5.97.1(esbuild@0.24.0) transitivePeerDependencies: - typescript @@ -11893,11 +11255,6 @@ snapshots: postcss-modules-values: 4.0.0(postcss@8.4.47) string-hash: 1.1.3 - postcss-nested@6.2.0(postcss@8.4.47): - dependencies: - postcss: 8.4.47 - postcss-selector-parser: 6.1.2 - postcss-normalize-charset@5.1.0(postcss@8.4.47): dependencies: postcss: 8.4.47 @@ -11985,30 +11342,35 @@ snapshots: picocolors: 1.1.0 source-map-js: 1.2.1 + postcss@8.4.49: + dependencies: + nanoid: 3.3.7 + picocolors: 1.1.1 + source-map-js: 1.2.1 + prelude-ls@1.2.1: {} prettier-linter-helpers@1.0.0: dependencies: fast-diff: 1.3.0 - prettier@3.3.3: {} - - pretty-error@4.0.0: + prettier-plugin-tailwindcss@0.6.9(prettier@3.4.2): dependencies: - lodash: 4.17.21 - renderkid: 3.0.0 + prettier: 3.4.2 + + prettier@3.4.2: {} pretty-format@27.5.1: dependencies: ansi-regex: 5.0.1 ansi-styles: 5.2.0 - react-is: 17.0.2 + react-is: 19.0.0 pretty-format@29.7.0: dependencies: '@jest/schemas': 29.6.3 ansi-styles: 5.2.0 - react-is: 18.3.1 + react-is: 19.0.0 pretty-ms@9.1.0: dependencies: @@ -12029,48 +11391,26 @@ snapshots: dependencies: loose-envify: 1.4.0 object-assign: 4.1.1 - react-is: 16.13.1 + react-is: 19.0.0 proto-list@1.2.4: {} - proxy-addr@2.0.7: - dependencies: - forwarded: 0.2.0 - ipaddr.js: 1.9.1 - psl@1.9.0: {} - punycode@1.4.1: {} - punycode@2.3.1: {} pure-rand@6.1.0: {} q@1.5.1: {} - qs@6.13.0: - dependencies: - side-channel: 1.0.6 - querystringify@2.2.0: {} queue-microtask@1.2.3: {} - ramda@0.29.0: {} - randombytes@2.1.0: dependencies: safe-buffer: 5.2.1 - range-parser@1.2.1: {} - - raw-body@2.5.2: - dependencies: - bytes: 3.1.2 - http-errors: 2.0.0 - iconv-lite: 0.4.24 - unpipe: 1.0.0 - rc@1.2.8: dependencies: deep-extend: 0.6.0 @@ -12078,26 +11418,16 @@ snapshots: minimist: 1.2.8 strip-json-comments: 2.0.1 - react-colorful@5.6.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1): - dependencies: - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - - react-confetti@6.1.0(react@18.3.1): - dependencies: - react: 18.3.1 - tween-functions: 1.2.0 - - react-day-picker@8.10.1(date-fns@3.6.0)(react@18.3.1): + react-day-picker@8.10.1(date-fns@3.6.0)(react@19.0.0): dependencies: date-fns: 3.6.0 - react: 18.3.1 + react: 19.0.0 react-docgen-typescript@2.2.2(typescript@4.9.5): dependencies: typescript: 4.9.5 - react-docgen@7.0.3: + react-docgen@7.1.0: dependencies: '@babel/core': 7.25.2 '@babel/traverse': 7.25.6 @@ -12118,56 +11448,37 @@ snapshots: react: 18.3.1 scheduler: 0.23.2 - react-element-to-jsx-string@15.0.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1): - dependencies: - '@base2/pretty-print-object': 1.0.1 - is-plain-object: 5.0.0 - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - react-is: 18.1.0 - - react-error-boundary@4.0.13(react@18.3.1): + react-dom@19.0.0(react@19.0.0): dependencies: - '@babel/runtime': 7.25.6 - react: 18.3.1 - - react-is@16.13.1: {} + react: 19.0.0 + scheduler: 0.25.0 - react-is@17.0.2: {} + react-is@19.0.0: {} - react-is@18.1.0: {} + react-refresh@0.14.2: {} - react-is@18.3.1: {} - - react-smooth@4.0.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + react-smooth@4.0.3(react-dom@19.0.0(react@19.0.0))(react@19.0.0): dependencies: fast-equals: 5.0.1 prop-types: 15.8.1 - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - react-transition-group: 4.4.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) + react-transition-group: 4.4.5(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - react-transition-group@4.4.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + react-transition-group@4.4.5(react-dom@19.0.0(react@19.0.0))(react@19.0.0): dependencies: - '@babel/runtime': 7.25.6 + '@babel/runtime': 7.26.0 dom-helpers: 5.2.1 loose-envify: 1.4.0 prop-types: 15.8.1 - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - - react-transition-state@2.1.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1): - dependencies: - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) react@18.3.1: dependencies: loose-envify: 1.4.0 - read-cache@1.0.0: - dependencies: - pify: 2.3.0 + react@19.0.0: {} read-package-up@11.0.0: dependencies: @@ -12193,31 +11504,27 @@ snapshots: string_decoder: 1.1.1 util-deprecate: 1.0.2 - readdirp@3.6.0: - dependencies: - picomatch: 2.3.1 - recast@0.23.9: dependencies: ast-types: 0.16.1 esprima: 4.0.1 source-map: 0.6.1 tiny-invariant: 1.3.3 - tslib: 2.7.0 + tslib: 2.8.1 recharts-scale@0.4.5: dependencies: decimal.js-light: 2.5.1 - recharts@2.13.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + recharts@2.15.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0): dependencies: clsx: 2.1.1 eventemitter3: 4.0.7 lodash: 4.17.21 - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - react-is: 18.3.1 - react-smooth: 4.0.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) + react-is: 19.0.0 + react-smooth: 4.0.3(react-dom@19.0.0(react@19.0.0))(react@19.0.0) recharts-scale: 0.4.5 tiny-invariant: 1.3.3 victory-vendor: 36.9.2 @@ -12273,33 +11580,6 @@ snapshots: dependencies: jsesc: 0.5.0 - rehype-external-links@3.0.0: - dependencies: - '@types/hast': 3.0.4 - '@ungap/structured-clone': 1.2.0 - hast-util-is-element: 3.0.0 - is-absolute-url: 4.0.1 - space-separated-tokens: 2.0.2 - unist-util-visit: 5.0.0 - - rehype-slug@6.0.0: - dependencies: - '@types/hast': 3.0.4 - github-slugger: 2.0.0 - hast-util-heading-rank: 3.0.0 - hast-util-to-string: 3.0.0 - unist-util-visit: 5.0.0 - - relateurl@0.2.7: {} - - renderkid@3.0.0: - dependencies: - css-select: 4.3.0 - dom-converter: 0.2.0 - htmlparser2: 6.1.0 - lodash: 4.17.21 - strip-ansi: 6.0.1 - require-directory@2.1.1: {} require-from-string@2.0.2: {} @@ -12384,6 +11664,31 @@ snapshots: optionalDependencies: fsevents: 2.3.3 + rollup@4.28.1: + dependencies: + '@types/estree': 1.0.6 + optionalDependencies: + '@rollup/rollup-android-arm-eabi': 4.28.1 + '@rollup/rollup-android-arm64': 4.28.1 + '@rollup/rollup-darwin-arm64': 4.28.1 + '@rollup/rollup-darwin-x64': 4.28.1 + '@rollup/rollup-freebsd-arm64': 4.28.1 + '@rollup/rollup-freebsd-x64': 4.28.1 + '@rollup/rollup-linux-arm-gnueabihf': 4.28.1 + '@rollup/rollup-linux-arm-musleabihf': 4.28.1 + '@rollup/rollup-linux-arm64-gnu': 4.28.1 + '@rollup/rollup-linux-arm64-musl': 4.28.1 + '@rollup/rollup-linux-loongarch64-gnu': 4.28.1 + '@rollup/rollup-linux-powerpc64le-gnu': 4.28.1 + '@rollup/rollup-linux-riscv64-gnu': 4.28.1 + '@rollup/rollup-linux-s390x-gnu': 4.28.1 + '@rollup/rollup-linux-x64-gnu': 4.28.1 + '@rollup/rollup-linux-x64-musl': 4.28.1 + '@rollup/rollup-win32-arm64-msvc': 4.28.1 + '@rollup/rollup-win32-ia32-msvc': 4.28.1 + '@rollup/rollup-win32-x64-msvc': 4.28.1 + fsevents: 2.3.3 + run-parallel@1.2.0: dependencies: queue-microtask: 1.2.3 @@ -12417,6 +11722,8 @@ snapshots: dependencies: loose-envify: 1.4.0 + scheduler@0.25.0: {} + schema-utils@2.7.1: dependencies: '@types/json-schema': 7.0.15 @@ -12429,7 +11736,7 @@ snapshots: ajv: 6.12.6 ajv-keywords: 3.5.2(ajv@6.12.6) - schema-utils@4.2.0: + schema-utils@4.3.0: dependencies: '@types/json-schema': 7.0.15 ajv: 8.17.1 @@ -12481,37 +11788,10 @@ snapshots: semver@7.6.3: {} - send@0.19.0: - dependencies: - debug: 2.6.9 - depd: 2.0.0 - destroy: 1.2.0 - encodeurl: 1.0.2 - escape-html: 1.0.3 - etag: 1.8.1 - fresh: 0.5.2 - http-errors: 2.0.0 - mime: 1.6.0 - ms: 2.1.3 - on-finished: 2.4.1 - range-parser: 1.2.1 - statuses: 2.0.1 - transitivePeerDependencies: - - supports-color - serialize-javascript@6.0.2: dependencies: randombytes: 2.1.0 - serve-static@1.16.2: - dependencies: - encodeurl: 2.0.0 - escape-html: 1.0.3 - parseurl: 1.3.3 - send: 0.19.0 - transitivePeerDependencies: - - supports-color - set-function-length@1.2.2: dependencies: define-data-property: 1.1.4 @@ -12528,8 +11808,6 @@ snapshots: functions-have-names: 1.2.3 has-property-descriptors: 1.0.2 - setprototypeof@1.2.0: {} - shebang-command@2.0.0: dependencies: shebang-regex: 3.0.0 @@ -12581,8 +11859,6 @@ snapshots: sourcemap-codec@1.4.8: {} - space-separated-tokens@2.0.2: {} - spawn-error-forwarder@1.0.0: {} spdx-correct@3.2.0: @@ -12611,27 +11887,15 @@ snapshots: dependencies: escape-string-regexp: 2.0.0 - statuses@2.0.1: {} - stop-iteration-iterator@1.0.0: dependencies: internal-slot: 1.0.7 - store2@2.14.3: {} - - storybook-source-link@4.0.1(@storybook/addons@7.4.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + storybook@8.4.7(prettier@3.4.2): dependencies: - '@storybook/addons': 7.4.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@storybook/preview-api': 7.6.20 - '@types/react': 18.3.9 - react-error-boundary: 4.0.13(react@18.3.1) + '@storybook/core': 8.4.7(prettier@3.4.2) optionalDependencies: - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - - storybook@8.3.3: - dependencies: - '@storybook/core': 8.3.3 + prettier: 3.4.2 transitivePeerDependencies: - bufferutil - supports-color @@ -12655,12 +11919,6 @@ snapshots: is-fullwidth-code-point: 3.0.0 strip-ansi: 6.0.1 - string-width@5.1.2: - dependencies: - eastasianwidth: 0.2.0 - emoji-regex: 9.2.2 - strip-ansi: 7.1.0 - string.prototype.matchall@4.0.11: dependencies: call-bind: 1.0.7 @@ -12708,10 +11966,6 @@ snapshots: dependencies: ansi-regex: 5.0.1 - strip-ansi@7.1.0: - dependencies: - ansi-regex: 6.1.0 - strip-bom@3.0.0: {} strip-bom@4.0.0: {} @@ -12736,9 +11990,9 @@ snapshots: style-inject@0.3.0: {} - style-loader@3.3.4(webpack@5.94.0(esbuild@0.23.1)): + style-loader@3.3.4(webpack@5.97.1(esbuild@0.24.0)): dependencies: - webpack: 5.94.0(esbuild@0.23.1) + webpack: 5.97.1(esbuild@0.24.0) stylehacks@5.1.1(postcss@8.4.47): dependencies: @@ -12746,16 +12000,6 @@ snapshots: postcss: 8.4.47 postcss-selector-parser: 6.1.2 - sucrase@3.35.0: - dependencies: - '@jridgewell/gen-mapping': 0.3.5 - commander: 4.1.1 - glob: 10.4.5 - lines-and-columns: 1.2.4 - mz: 2.7.0 - pirates: 4.0.6 - ts-interface-checker: 0.1.13 - super-regex@1.0.0: dependencies: function-timeout: 1.0.2 @@ -12787,13 +12031,11 @@ snapshots: css-select: 4.3.0 css-tree: 1.1.3 csso: 4.2.0 - picocolors: 1.1.0 + picocolors: 1.1.1 stable: 0.1.8 symbol-tree@3.2.4: {} - synchronous-promise@2.0.17: {} - synckit@0.9.1: dependencies: '@pkgr/core': 0.1.1 @@ -12801,40 +12043,18 @@ snapshots: tabbable@6.2.0: {} - tailwind-merge@2.5.2: {} + tailwind-merge@2.5.5: {} - tailwindcss@3.4.13: + tailwind-variants@0.3.0(tailwindcss@4.0.0-beta.6): dependencies: - '@alloc/quick-lru': 5.2.0 - arg: 5.0.2 - chokidar: 3.6.0 - didyoumean: 1.2.2 - dlv: 1.1.3 - fast-glob: 3.3.2 - glob-parent: 6.0.2 - is-glob: 4.0.3 - jiti: 1.21.6 - lilconfig: 2.1.0 - micromatch: 4.0.8 - normalize-path: 3.0.0 - object-hash: 3.0.0 - picocolors: 1.1.0 - postcss: 8.4.47 - postcss-import: 15.1.0(postcss@8.4.47) - postcss-js: 4.0.1(postcss@8.4.47) - postcss-load-config: 4.0.2(postcss@8.4.47) - postcss-nested: 6.2.0(postcss@8.4.47) - postcss-selector-parser: 6.1.2 - resolve: 1.22.8 - sucrase: 3.35.0 - transitivePeerDependencies: - - ts-node + tailwind-merge: 2.5.5 + tailwindcss: 4.0.0-beta.6 - tapable@2.2.1: {} + tailwindcss@4.0.0-beta.5: {} - telejson@7.2.0: - dependencies: - memoizerific: 1.11.3 + tailwindcss@4.0.0-beta.6: {} + + tapable@2.2.1: {} temp-dir@3.0.0: {} @@ -12845,16 +12065,16 @@ snapshots: type-fest: 2.19.0 unique-string: 3.0.0 - terser-webpack-plugin@5.3.10(esbuild@0.23.1)(webpack@5.94.0(esbuild@0.23.1)): + terser-webpack-plugin@5.3.11(esbuild@0.24.0)(webpack@5.97.1(esbuild@0.24.0)): dependencies: '@jridgewell/trace-mapping': 0.3.25 jest-worker: 27.5.1 - schema-utils: 3.3.0 + schema-utils: 4.3.0 serialize-javascript: 6.0.2 - terser: 5.33.0 - webpack: 5.94.0(esbuild@0.23.1) + terser: 5.37.0 + webpack: 5.97.1(esbuild@0.24.0) optionalDependencies: - esbuild: 0.23.1 + esbuild: 0.24.0 terser@5.33.0: dependencies: @@ -12863,6 +12083,13 @@ snapshots: commander: 2.20.3 source-map-support: 0.5.21 + terser@5.37.0: + dependencies: + '@jridgewell/source-map': 0.3.6 + acorn: 8.14.0 + commander: 2.20.3 + source-map-support: 0.5.21 + test-exclude@6.0.0: dependencies: '@istanbuljs/schema': 0.1.3 @@ -12902,8 +12129,6 @@ snapshots: dependencies: is-number: 7.0.0 - toidentifier@1.0.1: {} - tough-cookie@4.1.4: dependencies: psl: 1.9.0 @@ -12923,8 +12148,6 @@ snapshots: ts-dedent@2.2.0: {} - ts-interface-checker@0.1.13: {} - tsconfig-paths@4.2.0: dependencies: json5: 2.2.3 @@ -12933,7 +12156,7 @@ snapshots: tslib@2.7.0: {} - tween-functions@1.2.0: {} + tslib@2.8.1: {} type-check@0.4.0: dependencies: @@ -12951,11 +12174,6 @@ snapshots: type-fest@4.26.1: {} - type-is@1.6.18: - dependencies: - media-typer: 0.3.0 - mime-types: 2.1.35 - typed-array-buffer@1.0.2: dependencies: call-bind: 1.0.7 @@ -13027,35 +12245,16 @@ snapshots: dependencies: crypto-random-string: 4.0.0 - unist-util-is@6.0.0: - dependencies: - '@types/unist': 3.0.3 - - unist-util-visit-parents@6.0.1: - dependencies: - '@types/unist': 3.0.3 - unist-util-is: 6.0.0 - - unist-util-visit@5.0.0: - dependencies: - '@types/unist': 3.0.3 - unist-util-is: 6.0.0 - unist-util-visit-parents: 6.0.1 - universal-user-agent@7.0.2: {} universalify@0.2.0: {} universalify@2.0.1: {} - unpipe@1.0.0: {} - - unplugin@1.14.1(webpack-sources@3.2.3): + unplugin@1.16.0: dependencies: - acorn: 8.12.1 + acorn: 8.14.0 webpack-virtual-modules: 0.6.2 - optionalDependencies: - webpack-sources: 3.2.3 update-browserslist-db@1.1.0(browserslist@4.23.3): dependencies: @@ -13063,6 +12262,12 @@ snapshots: escalade: 3.2.0 picocolors: 1.1.0 + update-browserslist-db@1.1.1(browserslist@4.24.2): + dependencies: + browserslist: 4.24.2 + escalade: 3.2.0 + picocolors: 1.1.1 + uri-js@4.4.1: dependencies: punycode: 2.3.1 @@ -13074,11 +12279,6 @@ snapshots: querystringify: 2.2.0 requires-port: 1.0.0 - url@0.11.4: - dependencies: - punycode: 1.4.1 - qs: 6.13.0 - util-deprecate@1.0.2: {} util@0.12.5: @@ -13089,10 +12289,6 @@ snapshots: is-typed-array: 1.1.13 which-typed-array: 1.1.15 - utila@0.4.0: {} - - utils-merge@1.0.1: {} - uuid@9.0.1: {} v8-to-istanbul@9.3.0: @@ -13106,8 +12302,6 @@ snapshots: spdx-correct: 3.2.0 spdx-expression-parse: 3.0.1 - vary@1.1.2: {} - victory-vendor@36.9.2: dependencies: '@types/d3-array': 3.2.1 @@ -13115,7 +12309,7 @@ snapshots: '@types/d3-interpolate': 3.0.4 '@types/d3-scale': 4.0.8 '@types/d3-shape': 3.1.6 - '@types/d3-time': 3.0.3 + '@types/d3-time': 3.0.4 '@types/d3-timer': 3.0.2 d3-array: 3.2.4 d3-ease: 3.0.1 @@ -13125,6 +12319,18 @@ snapshots: d3-time: 3.1.0 d3-timer: 3.0.1 + vite@6.0.3(@types/node@22.6.1)(jiti@2.4.1)(lightningcss@1.28.2)(terser@5.37.0): + dependencies: + esbuild: 0.24.0 + postcss: 8.4.49 + rollup: 4.28.1 + optionalDependencies: + '@types/node': 22.6.1 + fsevents: 2.3.3 + jiti: 2.4.1 + lightningcss: 1.28.2 + terser: 5.37.0 + w3c-xmlserializer@4.0.0: dependencies: xml-name-validator: 4.0.0 @@ -13140,35 +12346,19 @@ snapshots: webidl-conversions@7.0.0: {} - webpack-dev-middleware@6.1.3(webpack@5.94.0(esbuild@0.23.1)): - dependencies: - colorette: 2.0.20 - memfs: 3.5.3 - mime-types: 2.1.35 - range-parser: 1.2.1 - schema-utils: 4.2.0 - optionalDependencies: - webpack: 5.94.0(esbuild@0.23.1) - - webpack-hot-middleware@2.26.1: - dependencies: - ansi-html-community: 0.0.8 - html-entities: 2.5.2 - strip-ansi: 6.0.1 - webpack-sources@3.2.3: {} webpack-virtual-modules@0.6.2: {} - webpack@5.94.0(esbuild@0.23.1): + webpack@5.97.1(esbuild@0.24.0): dependencies: + '@types/eslint-scope': 3.7.7 '@types/estree': 1.0.6 - '@webassemblyjs/ast': 1.12.1 - '@webassemblyjs/wasm-edit': 1.12.1 - '@webassemblyjs/wasm-parser': 1.12.1 - acorn: 8.12.1 - acorn-import-attributes: 1.9.5(acorn@8.12.1) - browserslist: 4.23.3 + '@webassemblyjs/ast': 1.14.1 + '@webassemblyjs/wasm-edit': 1.14.1 + '@webassemblyjs/wasm-parser': 1.14.1 + acorn: 8.14.0 + browserslist: 4.24.2 chrome-trace-event: 1.0.4 enhanced-resolve: 5.17.1 es-module-lexer: 1.5.4 @@ -13182,7 +12372,7 @@ snapshots: neo-async: 2.6.2 schema-utils: 3.3.0 tapable: 2.2.1 - terser-webpack-plugin: 5.3.10(esbuild@0.23.1)(webpack@5.94.0(esbuild@0.23.1)) + terser-webpack-plugin: 5.3.11(esbuild@0.24.0)(webpack@5.97.1(esbuild@0.24.0)) watchpack: 2.4.2 webpack-sources: 3.2.3 transitivePeerDependencies: @@ -13253,12 +12443,6 @@ snapshots: string-width: 4.2.3 strip-ansi: 6.0.1 - wrap-ansi@8.1.0: - dependencies: - ansi-styles: 6.2.1 - string-width: 5.1.2 - strip-ansi: 7.1.0 - wrappy@1.0.2: {} write-file-atomic@3.0.3: @@ -13287,8 +12471,6 @@ snapshots: yaml@1.10.2: {} - yaml@2.5.1: {} - yargs-parser@20.2.9: {} yargs-parser@21.1.1: {} @@ -13315,6 +12497,4 @@ snapshots: yocto-queue@0.1.0: {} - yocto-queue@1.1.1: {} - yoctocolors@2.1.1: {} diff --git a/postcss.config.js b/postcss.config.js index 63ef4c6bc..430726e45 100644 --- a/postcss.config.js +++ b/postcss.config.js @@ -1,7 +1,6 @@ /* eslint-disable no-undef */ module.exports = { plugins: { - tailwindcss: {}, - autoprefixer: {}, + "@tailwindcss/postcss": {}, }, }; diff --git a/rollup.config.js b/rollup.config.js index 427b4be9a..f0962dcc3 100644 --- a/rollup.config.js +++ b/rollup.config.js @@ -42,7 +42,7 @@ export default [ terser(), typescript({ tsconfig: "./tsconfig.json", - exclude: ["**/stories/**", "**/tests/**", "./styles.css"], + exclude: ["**/stories/**", "**/tests/**", "./tremor.css"], }), typescriptPaths(), ], diff --git a/src/components/chart-elements/AreaChart/AreaChart.tsx b/src/components/chart-elements/AreaChart/AreaChart.tsx index 33c3919fa..0b581d1d0 100644 --- a/src/components/chart-elements/AreaChart/AreaChart.tsx +++ b/src/components/chart-elements/AreaChart/AreaChart.tsx @@ -2,16 +2,16 @@ import React, { Fragment, useState } from "react"; import { Area, - AreaChart as ReChartsAreaChart, CartesianGrid, Dot, + Label, Legend, Line, + AreaChart as ReChartsAreaChart, ResponsiveContainer, Tooltip, XAxis, YAxis, - Label, } from "recharts"; import { AxisDomain } from "recharts/types/util/types"; @@ -26,16 +26,16 @@ import { } from "../common/utils"; import { - BaseColors, - colorPalette, defaultValueFormatter, - getColorClassNames, + fillColors, + strokeColors, + textColors, themeColorRange, tremorTwMerge, } from "lib"; -import { CurveType } from "../../../lib/inputTypes"; +import { Color, CurveType } from "../../../lib/inputTypes"; -export interface AreaChartProps extends BaseChartProps { +interface AreaChartProps extends BaseChartProps { stack?: boolean; curveType?: CurveType; connectNulls?: boolean; @@ -61,7 +61,7 @@ const AreaChart = React.forwardRef((props, ref) yAxisWidth = 56, intervalType = "equidistantPreserveStart", showAnimation = false, - animationDuration = 900, + animationDuration = 600, showTooltip = true, showLegend = true, showGridLines = true, @@ -140,7 +140,7 @@ const AreaChart = React.forwardRef((props, ref) setActiveDot(undefined); } return ( -
+
{data?.length ? ( ((props, ref) > {showGridLines ? ( @@ -183,27 +176,20 @@ const AreaChart = React.forwardRef((props, ref) ticks={startEndOnly ? [data[0][index], data[data.length - 1][index]] : undefined} fill="" stroke="" - className={tremorTwMerge( - // common - "text-tremor-label", - // light - "fill-tremor-content", - // dark - "dark:fill-dark-tremor-content", - )} + className={tremorTwMerge("text-tremor-label fill-tremor-content-default")} interval={startEndOnly ? "preserveStartEnd" : intervalType} tickLine={false} axisLine={false} minTickGap={tickGap} angle={rotateLabelX?.angle} dy={rotateLabelX?.verticalShift} - height={rotateLabelX?.xAxisHeight} + height={rotateLabelX?.xAxisHeight || 30} > {xAxisLabel && ( @@ -219,14 +205,7 @@ const AreaChart = React.forwardRef((props, ref) tick={{ transform: "translate(-3, 0)" }} fill="" stroke="" - className={tremorTwMerge( - // common - "text-tremor-label", - // light - "fill-tremor-content", - // dark - "dark:fill-dark-tremor-content", - )} + className={tremorTwMerge("text-tremor-label fill-tremor-content-default")} tickFormatter={valueFormatter} allowDecimals={allowDecimals} > @@ -236,7 +215,7 @@ const AreaChart = React.forwardRef((props, ref) style={{ textAnchor: "middle" }} angle={-90} offset={-15} - className="fill-tremor-content-emphasis text-tremor-default font-medium dark:fill-dark-tremor-content-emphasis" + className="fill-tremor-content-emphasis text-tremor-default font-medium" > {yAxisLabel} @@ -253,7 +232,7 @@ const AreaChart = React.forwardRef((props, ref) ({ ...payloadItem, - color: categoryColors.get(payloadItem.dataKey) ?? BaseColors.Gray, + color: categoryColors.get(payloadItem.dataKey) ?? "gray", }))} active={active} label={label} @@ -292,16 +271,13 @@ const AreaChart = React.forwardRef((props, ref) /> ) : null} {categories.map((category) => { - const gradientId = (categoryColors.get(category) ?? BaseColors.Gray).replace("#", ""); + const gradientId = (categoryColors.get(category) ?? "gray").replace("#", ""); return ( {showGradient ? ( ((props, ref) ) : ( ((props, ref) ); })} {categories.map((category) => { - const gradientId = (categoryColors.get(category) ?? BaseColors.Gray).replace("#", ""); + const gradientId = (categoryColors.get(category) ?? "gray").replace("#", ""); + const color = categoryColors.get(category) as Color; return ( { @@ -360,12 +331,9 @@ const AreaChart = React.forwardRef((props, ref) return ( ((props, ref) strokeLinejoin={strokeLinejoin} strokeWidth={strokeWidth} className={tremorTwMerge( - "stroke-tremor-background dark:stroke-dark-tremor-background", + "stroke-tremor-background-default", onValueChange ? "cursor-pointer" : "", - getColorClassNames( - categoryColors.get(dataKey) ?? BaseColors.Gray, - colorPalette.text, - ).fillColor, + color ? fillColors[categoryColors.get(dataKey) as Color] : "gray", )} /> ); @@ -470,4 +435,4 @@ const AreaChart = React.forwardRef((props, ref) AreaChart.displayName = "AreaChart"; -export default AreaChart; +export { AreaChart, type AreaChartProps }; diff --git a/src/components/chart-elements/AreaChart/index.ts b/src/components/chart-elements/AreaChart/index.ts index 92d8c8347..3009d5af5 100644 --- a/src/components/chart-elements/AreaChart/index.ts +++ b/src/components/chart-elements/AreaChart/index.ts @@ -1,2 +1,2 @@ -export { default as AreaChart } from "./AreaChart"; +export { AreaChart } from "./AreaChart"; export type { AreaChartProps } from "./AreaChart"; diff --git a/src/components/chart-elements/BarChart/BarChart.tsx b/src/components/chart-elements/BarChart/BarChart.tsx index 6aa86f79c..a44fa2b61 100644 --- a/src/components/chart-elements/BarChart/BarChart.tsx +++ b/src/components/chart-elements/BarChart/BarChart.tsx @@ -1,17 +1,16 @@ "use client"; -import { colorPalette, getColorClassNames, tremorTwMerge } from "lib"; import React, { useState } from "react"; import { Bar, - BarChart as ReChartsBarChart, CartesianGrid, + Label, Legend, + BarChart as ReChartsBarChart, ResponsiveContainer, Tooltip, XAxis, YAxis, - Label, } from "recharts"; import BaseChartProps from "../common/BaseChartProps"; @@ -20,7 +19,14 @@ import ChartTooltip from "../common/ChartTooltip"; import NoData from "../common/NoData"; import { constructCategoryColors, deepEqual, getYAxisDomain } from "../common/utils"; -import { BaseColors, defaultValueFormatter, themeColorRange } from "lib"; +import { + BaseColors, + Color, + defaultValueFormatter, + fillColors, + themeColorRange, + tremorTwMerge, +} from "lib"; import { AxisDomain } from "recharts/types/util/types"; const renderShape = ( @@ -57,7 +63,7 @@ const renderShape = ( ); }; -export interface BarChartProps extends BaseChartProps { +interface BarChartProps extends BaseChartProps { layout?: "vertical" | "horizontal"; stack?: boolean; relative?: boolean; @@ -75,7 +81,7 @@ const BarChart = React.forwardRef((props, ref) => stack = false, relative = false, startEndOnly = false, - animationDuration = 900, + animationDuration = 600, showAnimation = false, showXAxis = true, showYAxis = true, @@ -145,7 +151,7 @@ const BarChart = React.forwardRef((props, ref) => } const yAxisDomain = getYAxisDomain(autoMinValue, minValue, maxValue); return ( -
+
{data?.length ? ( ((props, ref) => > {showGridLines ? ( @@ -194,26 +193,19 @@ const BarChart = React.forwardRef((props, ref) => ticks={startEndOnly ? [data[0][index], data[data.length - 1][index]] : undefined} fill="" stroke="" - className={tremorTwMerge( - // common - "mt-4 text-tremor-label", - // light - "fill-tremor-content", - // dark - "dark:fill-dark-tremor-content", - )} + className={tremorTwMerge("text-tremor-label fill-tremor-content-default mt-4")} tickLine={false} axisLine={false} angle={rotateLabelX?.angle} dy={rotateLabelX?.verticalShift} - height={rotateLabelX?.xAxisHeight} + height={rotateLabelX?.xAxisHeight || 30} minTickGap={tickGap} > {xAxisLabel && ( @@ -227,14 +219,7 @@ const BarChart = React.forwardRef((props, ref) => domain={yAxisDomain as AxisDomain} fill="" stroke="" - className={tremorTwMerge( - // common - "text-tremor-label", - // light - "fill-tremor-content", - // dark - "dark:fill-dark-tremor-content", - )} + className={tremorTwMerge("text-tremor-label fill-tremor-content-default")} tickLine={false} axisLine={false} tickFormatter={valueFormatter} @@ -248,7 +233,7 @@ const BarChart = React.forwardRef((props, ref) => @@ -266,14 +251,7 @@ const BarChart = React.forwardRef((props, ref) => tick={{ transform: "translate(-3, 0)" }} fill="" stroke="" - className={tremorTwMerge( - // common - "text-tremor-label", - // light - "fill-tremor-content", - // dark - "dark:fill-dark-tremor-content", - )} + className={tremorTwMerge("text-tremor-label fill-tremor-content-default")} tickFormatter={ relative ? (value: number) => `${(value * 100).toString()} %` : valueFormatter } @@ -285,7 +263,7 @@ const BarChart = React.forwardRef((props, ref) => style={{ textAnchor: "middle" }} angle={-90} offset={-15} - className="fill-tremor-content-emphasis text-tremor-default font-medium dark:fill-dark-tremor-content-emphasis" + className="fill-tremor-content-emphasis text-tremor-default font-medium" > {yAxisLabel} @@ -304,14 +282,7 @@ const BarChart = React.forwardRef((props, ref) => tick={{ transform: "translate(0, 6)" }} fill="" stroke="" - className={tremorTwMerge( - // common - "text-tremor-label", - // light - "fill-tremor-content", - // dark - "dark:fill-dark-tremor-content", - )} + className={tremorTwMerge("text-tremor-label fill-tremor-content-default")} > {yAxisLabel && ( @@ -375,27 +346,27 @@ const BarChart = React.forwardRef((props, ref) => } /> ) : null} - {categories.map((category) => ( - renderShape(props, activeBar, activeLegend, layout)} - onClick={onBarClick} - /> - ))} + {categories.map((category) => { + const color = categoryColors.get(category) as Color; + return ( + renderShape(props, activeBar, activeLegend, layout)} + onClick={onBarClick} + /> + ); + })} ) : ( @@ -407,4 +378,4 @@ const BarChart = React.forwardRef((props, ref) => BarChart.displayName = "BarChart"; -export default BarChart; +export { BarChart, type BarChartProps }; diff --git a/src/components/chart-elements/BarChart/index.ts b/src/components/chart-elements/BarChart/index.ts index 4802cb346..285f0f7a8 100644 --- a/src/components/chart-elements/BarChart/index.ts +++ b/src/components/chart-elements/BarChart/index.ts @@ -1,2 +1,2 @@ -export { default as BarChart } from "./BarChart"; +export { BarChart } from "./BarChart"; export type { BarChartProps } from "./BarChart"; diff --git a/src/components/chart-elements/DonutChart/DonutChart.tsx b/src/components/chart-elements/DonutChart/DonutChart.tsx index a3e0de11b..2f65a4e7f 100644 --- a/src/components/chart-elements/DonutChart/DonutChart.tsx +++ b/src/components/chart-elements/DonutChart/DonutChart.tsx @@ -1,5 +1,5 @@ "use client"; -import { BaseColors, defaultValueFormatter, themeColorRange, tremorTwMerge } from "lib"; +import { defaultValueFormatter, themeColorRange, tremorTwMerge } from "lib"; import React, { useEffect } from "react"; import { Pie, @@ -15,13 +15,13 @@ import NoData from "../common/NoData"; import { DonutChartTooltip } from "./DonutChartTooltip"; import { parseData, parseLabelInput } from "./inputParser"; -import type { EventProps } from "components/chart-elements/common"; import { CustomTooltipProps } from "components/chart-elements/common/CustomTooltipProps"; +import { EventProps } from "../common"; import type BaseAnimationTimingProps from "../common/BaseAnimationTimingProps"; type DonutChartVariant = "donut" | "pie"; -export interface DonutChartProps extends BaseAnimationTimingProps { +interface DonutChartProps extends BaseAnimationTimingProps { data: any[]; category?: string; index?: string; @@ -83,7 +83,7 @@ const DonutChart = React.forwardRef((props, ref valueFormatter = defaultValueFormatter, label, showLabel = true, - animationDuration = 900, + animationDuration = 600, showAnimation = false, showTooltip = true, noDataText, @@ -125,7 +125,7 @@ const DonutChart = React.forwardRef((props, ref }, [activeIndex]); return ( -
+
{data?.length ? ( ((props, ref > {showLabel && isDonut ? ( ((props, ref ) : null} ((props, ref ({ ...payloadItem, - color: payload?.[0]?.payload?.color ?? BaseColors.Gray, + color: payload?.[0]?.payload?.color ?? ("brand" as Color), }))} active={active} label={payload?.[0]?.name} @@ -229,4 +224,4 @@ const DonutChart = React.forwardRef((props, ref DonutChart.displayName = "DonutChart"; -export default DonutChart; +export { DonutChart, type DonutChartProps }; diff --git a/src/components/chart-elements/DonutChart/DonutChartTooltip.tsx b/src/components/chart-elements/DonutChart/DonutChartTooltip.tsx index fea2f45ed..30138df8c 100644 --- a/src/components/chart-elements/DonutChart/DonutChartTooltip.tsx +++ b/src/components/chart-elements/DonutChart/DonutChartTooltip.tsx @@ -1,5 +1,5 @@ -import React from "react"; import { tremorTwMerge, ValueFormatter } from "lib"; +import React from "react"; import { ChartTooltipFrame, ChartTooltipRow } from "components/chart-elements/common/ChartTooltip"; diff --git a/src/components/chart-elements/DonutChart/index.ts b/src/components/chart-elements/DonutChart/index.ts index 16c105077..93e73d389 100644 --- a/src/components/chart-elements/DonutChart/index.ts +++ b/src/components/chart-elements/DonutChart/index.ts @@ -1,2 +1,2 @@ -export { default as DonutChart } from "./DonutChart"; +export { DonutChart } from "./DonutChart"; export type { DonutChartProps } from "./DonutChart"; diff --git a/src/components/chart-elements/DonutChart/inputParser.ts b/src/components/chart-elements/DonutChart/inputParser.ts index 71ff39384..083d63250 100644 --- a/src/components/chart-elements/DonutChart/inputParser.ts +++ b/src/components/chart-elements/DonutChart/inputParser.ts @@ -1,15 +1,13 @@ -import { BaseColors, colorPalette, getColorClassNames, sumNumericArray } from "lib"; +import { fillColors, sumNumericArray } from "lib"; import { Color, ValueFormatter } from "../../../lib/inputTypes"; export const parseData = (data: any[], colors: (Color | string)[]) => data.map((dataPoint: any, idx: number) => { - const baseColor = idx < colors.length ? colors[idx] : BaseColors.Gray; + const baseColor = idx < colors.length ? colors[idx] : "gray"; return { ...dataPoint, - // explicitly adding color key if not present for tooltip coloring color: baseColor, - className: getColorClassNames(baseColor ?? BaseColors.Gray, colorPalette.background) - .fillColor, + className: fillColors[baseColor as Color] ?? ("gray" as Color), fill: "", }; }); diff --git a/src/components/chart-elements/FunnelChart/FunnelChart.tsx b/src/components/chart-elements/FunnelChart/FunnelChart.tsx index 3186cd104..cf1e1e443 100644 --- a/src/components/chart-elements/FunnelChart/FunnelChart.tsx +++ b/src/components/chart-elements/FunnelChart/FunnelChart.tsx @@ -1,17 +1,11 @@ +import { ArrowRightIcon } from "assets"; +import { Color, defaultValueFormatter, textColors, tremorTwMerge } from "lib"; import React from "react"; -import { ChartTooltipFrame, ChartTooltipRow } from "../common/ChartTooltip"; -import { - BaseColors, - Color, - FunnelVariantType, - colorPalette, - defaultValueFormatter, - getColorClassNames, - tremorTwMerge, -} from "lib"; import { CustomTooltipProps, EventProps } from "../common"; +import { ChartTooltipFrame, ChartTooltipRow } from "../common/ChartTooltip"; import NoData from "../common/NoData"; -import { ArrowRightIcon } from "assets"; + +type FunnelVariantType = "base" | "center"; type FormattedDataT = DataT & { normalizedValue: number; @@ -50,7 +44,7 @@ const GLOBAL_PADDING = 10; const HALF_PADDING = GLOBAL_PADDING / 2; const Y_AXIS_LABELS = ["100%", "75%", "50%", "25%", "0%"]; -export interface FunnelChartProps extends React.HTMLAttributes { +interface FunnelChartProps extends React.HTMLAttributes { data: DataT[]; evolutionGradient?: boolean; gradient?: boolean; @@ -88,7 +82,7 @@ const FunnelChartPrimitive = React.forwardRef( valueFormatter = defaultValueFormatter, className, calculateFrom = "first", - color, + color = "brand", variant = "base", showGridLines = true, showYAxis = calculateFrom === "previous" ? false : true, @@ -105,6 +99,7 @@ const FunnelChartPrimitive = React.forwardRef( barGap = "20%", ...other } = props; + const funnelId = React.useId(); const DEFAULT_X_AXIS_HEIGHT = showXAxis && xAxisLabel ? 25 : 15; const CustomTooltip = customTooltip; @@ -282,9 +277,9 @@ const FunnelChartPrimitive = React.forwardRef( dataKey: closestBar.name, name: closestBar.name, value: closestBar.value, - color: color ?? BaseColors.Blue, + color: color ?? "brand", className: tremorTwMerge( - getColorClassNames(color ?? BaseColors.Blue, colorPalette.text).textColor, + textColors[color as Color], hasOnValueChange ? "cursor-pointer" : "cursor-default", ), fill: "", @@ -295,17 +290,13 @@ const FunnelChartPrimitive = React.forwardRef( }; return ( -
+
{data?.length ? ( <> { const fakeTouch = { clientX: e.clientX, @@ -332,14 +323,7 @@ const FunnelChartPrimitive = React.forwardRef( x2={width - HALF_PADDING} y2={(index * realHeight) / 4 + HALF_PADDING} stroke="currentColor" - className={tremorTwMerge( - // common - "stroke-1", - // light - "stroke-tremor-border", - // dark - "dark:stroke-dark-tremor-border", - )} + className={tremorTwMerge("stroke-tremor-border-default stroke-1")} /> ) : null} ( textAnchor="end" fill="" stroke="" - className={tremorTwMerge( - // base - "text-tremor-label", - // light - "fill-tremor-content", - // dark - "dark:fill-dark-tremor-content", - )} + className={tremorTwMerge("text-tremor-label fill-tremor-content-default")} > {label} @@ -374,6 +351,7 @@ const FunnelChartPrimitive = React.forwardRef( "z-0", tooltip.index === index ? "text-[#d1d5db]/15" : "text-transparent", )} + id={`${funnelId}-${item.name.replace(/[^a-zA-Z0-9]/g, "")}`} /> {/* Draw gradient bar to fill space */} @@ -396,10 +374,11 @@ const FunnelChartPrimitive = React.forwardRef( : 0)) / (isVariantCenter ? 2 : 1) } - fill={`url(#base-gradient)`} + fill={`url(#${funnelId}-gradient)`} className={tremorTwMerge( !activeBar || activeBar.index === index ? "" : "opacity-30", )} + id={`${funnelId}-${item.name.replace(/[^a-zA-Z0-9]/g, "")}`} /> ) : null} @@ -414,7 +393,7 @@ const FunnelChartPrimitive = React.forwardRef( height={item.barHeight} fill="currentColor" className={tremorTwMerge( - getColorClassNames(color ?? BaseColors.Blue, colorPalette.text).textColor, + textColors[color as Color], !activeBar || activeBar.index === index ? "" : "opacity-30", hasOnValueChange ? "cursor-pointer" : "cursor-default", )} @@ -428,10 +407,11 @@ const FunnelChartPrimitive = React.forwardRef( y={realHeight / 2 + item.barHeight / 2 + HALF_PADDING} width={barWidth} height={(realHeight - item.barHeight) / 2} - fill={`url(#base-gradient-revert)`} + fill={`url(#${funnelId}-gradient-revert)`} className={tremorTwMerge( !activeBar || activeBar.index === index ? "" : "opacity-30", )} + id={`${funnelId}-${item.name.replace(/[^a-zA-Z0-9]/g, "")}`} /> ) : null} @@ -457,12 +437,7 @@ const FunnelChartPrimitive = React.forwardRef( >
@@ -494,7 +469,7 @@ const FunnelChartPrimitive = React.forwardRef( realHeight / 2 - item.barHeight / 2 + HALF_PADDING } `} - fill={`url(#base-gradient)`} + fill={`url(#${funnelId}-gradient)`} className={tremorTwMerge( "z-10", !activeBar || activeBar.index === index ? "" : "opacity-30", @@ -515,7 +490,7 @@ const FunnelChartPrimitive = React.forwardRef( realHeight / 2 - item.nextBarHeight / 4 + HALF_PADDING } `} - fill={`url(#base-gradient-revert)`} + fill={`url(#${funnelId}-gradient-revert)`} className={tremorTwMerge( "z-10", !activeBar || activeBar.index === index ? "" : "opacity-30", @@ -538,7 +513,7 @@ const FunnelChartPrimitive = React.forwardRef( realHeight + HALF_PADDING } `} - fill={`url(#base-gradient)`} + fill={`url(#${funnelId}-gradient)`} className={tremorTwMerge( "z-10", !activeBar || activeBar.index === index ? "" : "opacity-30", @@ -583,14 +558,7 @@ const FunnelChartPrimitive = React.forwardRef( width={12} height={rotateLabelX?.xAxisHeight || DEFAULT_X_AXIS_HEIGHT} > -
+
@@ -598,27 +566,23 @@ const FunnelChartPrimitive = React.forwardRef( ))} @@ -631,12 +595,7 @@ const FunnelChartPrimitive = React.forwardRef( fill="" stroke="" className={tremorTwMerge( - // base - "text-tremor-default cursor-default font-medium", - // light - "fill-tremor-content-emphasis", - // dark - "dark:fill-dark-tremor-content-emphasis", + "text-tremor-default fill-tremor-content-emphasis cursor-default font-medium", )} > {xAxisLabel} @@ -652,12 +611,7 @@ const FunnelChartPrimitive = React.forwardRef( fill="" stroke="" className={tremorTwMerge( - // base - "text-tremor-default cursor-default font-medium", - // light - "fill-tremor-content-emphasis", - // dark - "dark:fill-dark-tremor-content-emphasis", + "text-tremor-default fill-tremor-content-emphasis cursor-default font-medium", )} > {yAxisLabel} @@ -668,7 +622,7 @@ const FunnelChartPrimitive = React.forwardRef(
( ) : (
-

+

{tooltip?.data?.name}

-
+
{tooltip.data ? ( ) : null}
@@ -759,4 +699,4 @@ const FunnelChart = ({ data, ...props }: FunnelChartProps) => { ); }; -export default FunnelChart; +export { FunnelChart, type FunnelChartProps }; diff --git a/src/components/chart-elements/FunnelChart/index.ts b/src/components/chart-elements/FunnelChart/index.ts index 9c448d787..8393c5849 100644 --- a/src/components/chart-elements/FunnelChart/index.ts +++ b/src/components/chart-elements/FunnelChart/index.ts @@ -1,2 +1,2 @@ -export { default as FunnelChart } from "./FunnelChart"; +export { FunnelChart } from "./FunnelChart"; export type { FunnelChartProps } from "./FunnelChart"; diff --git a/src/components/chart-elements/LineChart/LineChart.tsx b/src/components/chart-elements/LineChart/LineChart.tsx index d3c0f7cd5..bd6238111 100644 --- a/src/components/chart-elements/LineChart/LineChart.tsx +++ b/src/components/chart-elements/LineChart/LineChart.tsx @@ -3,6 +3,7 @@ import React, { Fragment, useState } from "react"; import { CartesianGrid, Dot, + Label, Legend, Line, LineChart as ReChartsLineChart, @@ -10,7 +11,6 @@ import { Tooltip, XAxis, YAxis, - Label, } from "recharts"; import { AxisDomain } from "recharts/types/util/types"; @@ -25,16 +25,15 @@ import { } from "../common/utils"; import { - BaseColors, - colorPalette, defaultValueFormatter, - getColorClassNames, + fillColors, + strokeColors, themeColorRange, tremorTwMerge, } from "lib"; -import { CurveType } from "../../../lib/inputTypes"; +import { Color, CurveType } from "../../../lib/inputTypes"; -export interface LineChartProps extends BaseChartProps { +interface LineChartProps extends BaseChartProps { curveType?: CurveType; connectNulls?: boolean; } @@ -56,7 +55,7 @@ const LineChart = React.forwardRef((props, ref) showYAxis = true, yAxisWidth = 56, intervalType = "equidistantPreserveStart", - animationDuration = 900, + animationDuration = 600, showAnimation = false, showTooltip = true, showLegend = true, @@ -134,7 +133,7 @@ const LineChart = React.forwardRef((props, ref) } return ( -
+
{data?.length ? ( ((props, ref) > {showGridLines ? ( @@ -178,26 +170,19 @@ const LineChart = React.forwardRef((props, ref) ticks={startEndOnly ? [data[0][index], data[data.length - 1][index]] : undefined} fill="" stroke="" - className={tremorTwMerge( - // common - "text-tremor-label", - // light - "fill-tremor-content", - // dark - "dark:fill-dark-tremor-content", - )} + className={tremorTwMerge("text-tremor-label fill-tremor-content-default")} tickLine={false} axisLine={false} minTickGap={tickGap} angle={rotateLabelX?.angle} dy={rotateLabelX?.verticalShift} - height={rotateLabelX?.xAxisHeight} + height={rotateLabelX?.xAxisHeight || 30} > {xAxisLabel && ( @@ -213,14 +198,7 @@ const LineChart = React.forwardRef((props, ref) tick={{ transform: "translate(-3, 0)" }} fill="" stroke="" - className={tremorTwMerge( - // common - "text-tremor-label", - // light - "fill-tremor-content", - // dark - "dark:fill-dark-tremor-content", - )} + className={tremorTwMerge("text-tremor-label fill-tremor-content-default")} tickFormatter={valueFormatter} allowDecimals={allowDecimals} > @@ -230,7 +208,7 @@ const LineChart = React.forwardRef((props, ref) style={{ textAnchor: "middle" }} angle={-90} offset={-15} - className="fill-tremor-content-emphasis text-tremor-default font-medium dark:fill-dark-tremor-content-emphasis" + className="fill-tremor-content-emphasis text-tremor-default font-medium" > {yAxisLabel} @@ -247,7 +225,7 @@ const LineChart = React.forwardRef((props, ref) ({ ...payloadItem, - color: categoryColors.get(payloadItem.dataKey) ?? BaseColors.Gray, + color: categoryColors.get(payloadItem.dataKey) ?? "gray", }))} active={active} label={label} @@ -286,94 +264,86 @@ const LineChart = React.forwardRef((props, ref) } /> ) : null} - {categories.map((category) => ( - { - const { cx, cy, stroke, strokeLinecap, strokeLinejoin, strokeWidth, dataKey } = - props; - return ( - onDotClick(props, event)} - /> - ); - }} - dot={(props: any) => { - const { - stroke, - strokeLinecap, - strokeLinejoin, - strokeWidth, - cx, - cy, - dataKey, - index, - } = props; - - if ( - (hasOnlyOneValueForThisKey(data, category) && - !(activeDot || (activeLegend && activeLegend !== category))) || - (activeDot?.index === index && activeDot?.dataKey === category) - ) { + {categories.map((category) => { + const color = categoryColors.get(category) as Color; + return ( + { + const { cx, cy, stroke, strokeLinecap, strokeLinejoin, strokeWidth, dataKey } = + props; return ( onDotClick(props, event)} /> ); - } - return ; - }} - key={category} - name={category} - type={curveType} - dataKey={category} - stroke="" - strokeWidth={2} - strokeLinejoin="round" - strokeLinecap="round" - isAnimationActive={showAnimation} - animationDuration={animationDuration} - connectNulls={connectNulls} - /> - ))} + }} + dot={(props: any) => { + const { + stroke, + strokeLinecap, + strokeLinejoin, + strokeWidth, + cx, + cy, + dataKey, + index, + } = props; + + if ( + (hasOnlyOneValueForThisKey(data, category) && + !(activeDot || (activeLegend && activeLegend !== category))) || + (activeDot?.index === index && activeDot?.dataKey === category) + ) { + return ( + + ); + } + return ; + }} + key={category} + name={category} + type={curveType} + dataKey={category} + stroke="" + strokeWidth={2} + strokeLinejoin="round" + strokeLinecap="round" + isAnimationActive={showAnimation} + animationDuration={animationDuration} + connectNulls={connectNulls} + /> + ); + })} {onValueChange ? categories.map((category) => ( ((props, ref) LineChart.displayName = "LineChart"; -export default LineChart; +export { LineChart, type LineChartProps }; diff --git a/src/components/chart-elements/LineChart/index.ts b/src/components/chart-elements/LineChart/index.ts index 89a8587b8..1a8a41e56 100644 --- a/src/components/chart-elements/LineChart/index.ts +++ b/src/components/chart-elements/LineChart/index.ts @@ -1,2 +1,2 @@ -export { default as LineChart } from "./LineChart"; +export { LineChart } from "./LineChart"; export type { LineChartProps } from "./LineChart"; diff --git a/src/components/chart-elements/ScatterChart/ScatterChart.tsx b/src/components/chart-elements/ScatterChart/ScatterChart.tsx index 99b17afe3..f10c014ca 100644 --- a/src/components/chart-elements/ScatterChart/ScatterChart.tsx +++ b/src/components/chart-elements/ScatterChart/ScatterChart.tsx @@ -3,21 +3,21 @@ import React, { useState } from "react"; import { CartesianGrid, Dot, + Label, Legend, + ScatterChart as ReChartsScatterChart, ResponsiveContainer, Scatter, - ScatterChart as ReChartsScatterChart, Tooltip, XAxis, YAxis, ZAxis, - Label, } from "recharts"; import { AxisDomain } from "recharts/types/util/types"; -import type { EventProps } from "components/chart-elements/common"; import ChartLegend from "components/chart-elements/common/ChartLegend"; import ScatterChartTooltip from "components/chart-elements/ScatterChart/ScatterChartTooltip"; + import BaseAnimationTimingProps from "../common/BaseAnimationTimingProps"; import NoData from "../common/NoData"; import { @@ -28,15 +28,16 @@ import { } from "../common/utils"; import { CustomTooltipProps } from "components/chart-elements/common/CustomTooltipProps"; + import { - BaseColors, - colorPalette, defaultValueFormatter, - getColorClassNames, + fillColors, + strokeColors, themeColorRange, tremorTwMerge, } from "lib"; -import { Color, ValueFormatter, IntervalType } from "../../../lib/inputTypes"; +import { Color, IntervalType, ValueFormatter } from "../../../lib/inputTypes"; +import { EventProps } from "../common"; export type ScatterChartValueFormatter = { x?: ValueFormatter; @@ -44,9 +45,7 @@ export type ScatterChartValueFormatter = { size?: ValueFormatter; }; -export interface ScatterChartProps - extends BaseAnimationTimingProps, - React.HTMLAttributes { +interface ScatterChartProps extends BaseAnimationTimingProps, React.HTMLAttributes { data: any[]; x: string; y: string; @@ -124,7 +123,7 @@ const ScatterChart = React.forwardRef((props, showYAxis = true, yAxisWidth = 56, intervalType = "equidistantPreserveStart", - animationDuration = 900, + animationDuration = 600, showAnimation = false, showTooltip = true, showLegend = true, @@ -194,7 +193,7 @@ const ScatterChart = React.forwardRef((props, const yAxisDomain = getYAxisDomain(autoMinYValue, minYValue, maxYValue); return ( -
+
{data?.length ? ( ((props, > {showGridLines ? ( @@ -239,14 +231,7 @@ const ScatterChart = React.forwardRef((props, name={x} fill="" stroke="" - className={tremorTwMerge( - // common - "text-tremor-label", - // light - "fill-tremor-content", - // dark - "dark:fill-dark-tremor-content", - )} + className={tremorTwMerge("text-tremor-label fill-tremor-content-default")} tickLine={false} tickFormatter={valueFormatter.x} axisLine={false} @@ -255,13 +240,13 @@ const ScatterChart = React.forwardRef((props, allowDataOverflow={true} angle={rotateLabelX?.angle} dy={rotateLabelX?.verticalShift} - height={rotateLabelX?.xAxisHeight} + height={rotateLabelX?.xAxisHeight || 30} > {xAxisLabel && ( @@ -282,14 +267,7 @@ const ScatterChart = React.forwardRef((props, tickFormatter={valueFormatter.y} fill="" stroke="" - className={tremorTwMerge( - // common - "text-tremor-label", - // light - "fill-tremor-content", - // dark - "dark:fill-dark-tremor-content", - )} + className={tremorTwMerge("text-tremor-label fill-tremor-content-default")} allowDecimals={allowDecimals} allowDataOverflow={true} > @@ -299,7 +277,7 @@ const ScatterChart = React.forwardRef((props, style={{ textAnchor: "middle" }} angle={-90} offset={-15} - className="fill-tremor-content-emphasis text-tremor-default font-medium dark:fill-dark-tremor-content-emphasis" + className="fill-tremor-content-emphasis text-tremor-default font-medium" > {yAxisLabel} @@ -318,7 +296,7 @@ const ScatterChart = React.forwardRef((props, ({ ...payloadItem, - color: categoryColors.get(color) ?? BaseColors.Gray, + color: categoryColors.get(color) ?? "gray", }))} active={active} label={color} @@ -345,15 +323,9 @@ const ScatterChart = React.forwardRef((props, return ( ((props, ScatterChart.displayName = "ScatterChart"; -export default ScatterChart; +export { ScatterChart, type ScatterChartProps }; diff --git a/src/components/chart-elements/ScatterChart/ScatterChartTooltip.tsx b/src/components/chart-elements/ScatterChart/ScatterChartTooltip.tsx index 925d3db8b..03c0e4561 100644 --- a/src/components/chart-elements/ScatterChart/ScatterChartTooltip.tsx +++ b/src/components/chart-elements/ScatterChart/ScatterChartTooltip.tsx @@ -1,24 +1,13 @@ import React from "react"; import { ScatterChartValueFormatter } from "components/chart-elements/ScatterChart/ScatterChart"; -import { - BaseColors, - getColorClassNames, - Color, - defaultValueFormatter, - tremorTwMerge, - colorPalette, -} from "lib"; + +import { bgColors, Color, defaultValueFormatter, tremorTwMerge } from "lib"; export const ChartTooltipFrame = ({ children }: { children: React.ReactNode }) => (
{children} @@ -33,27 +22,13 @@ export interface ChartTooltipRowProps { export const ChartTooltipRow = ({ value, name }: ChartTooltipRowProps) => (
-

+

{name}

{value} @@ -85,45 +60,24 @@ const ScatterChartTooltip = ({

-

- {label} -

+

{label}

-
+
{payload.map(({ value, name }: { value: number; name: string }, idx: number) => { const valueFormatterKey = Object.keys(axis).find((key) => axis[key] === name) ?? ""; const valueFormatterFn = diff --git a/src/components/chart-elements/ScatterChart/index.tsx b/src/components/chart-elements/ScatterChart/index.tsx index 538f51039..036b2efed 100644 --- a/src/components/chart-elements/ScatterChart/index.tsx +++ b/src/components/chart-elements/ScatterChart/index.tsx @@ -1,2 +1,2 @@ -export { default as ScatterChart } from "./ScatterChart"; +export { ScatterChart } from "./ScatterChart"; export type { ScatterChartProps } from "./ScatterChart"; diff --git a/src/components/chart-elements/common/ChartTooltip.tsx b/src/components/chart-elements/common/ChartTooltip.tsx index 4596d70f9..5632e3028 100644 --- a/src/components/chart-elements/common/ChartTooltip.tsx +++ b/src/components/chart-elements/common/ChartTooltip.tsx @@ -1,22 +1,10 @@ +import { Color, ValueFormatter, bgColors, tremorTwMerge } from "lib"; import React from "react"; -import { - BaseColors, - getColorClassNames, - tremorTwMerge, - Color, - ValueFormatter, - colorPalette, -} from "lib"; export const ChartTooltipFrame = ({ children }: { children: React.ReactNode }) => (
{children} @@ -34,36 +22,17 @@ export const ChartTooltipRow = ({ value, name, color }: ChartTooltipRowProps) =>
-

+

{name}

{value} @@ -91,35 +60,17 @@ const ChartTooltip = ({ return ( -

-

- {label} -

+
+

{label}

-
+
{filteredPayload.map(({ value, name }: { value: number; name: string }, idx: number) => ( ))}
diff --git a/src/components/chart-elements/common/NoData.tsx b/src/components/chart-elements/common/NoData.tsx index 595337b65..44342e396 100644 --- a/src/components/chart-elements/common/NoData.tsx +++ b/src/components/chart-elements/common/NoData.tsx @@ -9,23 +9,11 @@ const NoData = ({ className, noDataText = "No data" }: NoDataProps) => { return (
-

+

{noDataText}

diff --git a/src/components/chart-elements/common/utils.ts b/src/components/chart-elements/common/utils.ts index ef4695898..b1b0a282f 100644 --- a/src/components/chart-elements/common/utils.ts +++ b/src/components/chart-elements/common/utils.ts @@ -51,30 +51,6 @@ export function deepEqual(obj1: any, obj2: any) { return true; } -// export function deepEqual(obj1: unknown, obj2: unknown): boolean { -// if (obj1 === obj2) return true; - -// if (typeof obj1 !== "object" || typeof obj2 !== "object" || obj1 === null || obj2 === null) -// return false; - -// if (Object.prototype.toString.call(obj1) !== Object.prototype.toString.call(obj2)) return false; - -// const keys1 = Object.keys(obj1); -// const keys2 = new Set(Object.keys(obj2)); - -// if (keys1.length !== keys2.size) return false; - -// for (const key of keys1) { -// if ( -// !keys2.has(key) || -// !deepEqual((obj1 as Record)[key], (obj2 as Record)[key]) -// ) -// return false; -// } - -// return true; -// } - export function hasOnlyOneValueForThisKey(array: any[], keyToCheck: string) { const val = []; diff --git a/src/components/chart-elements/index.ts b/src/components/chart-elements/index.ts index 2632d2800..282869a93 100644 --- a/src/components/chart-elements/index.ts +++ b/src/components/chart-elements/index.ts @@ -1,8 +1,8 @@ export * from "./AreaChart"; export * from "./BarChart"; -export { EventProps } from "./common/BaseChartProps"; -export { CustomTooltipProps } from "./common/CustomTooltipProps"; +export type { EventProps } from "./common/BaseChartProps"; +export type { CustomTooltipProps } from "./common/CustomTooltipProps"; export * from "./DonutChart"; +export * from "./FunnelChart"; export * from "./LineChart"; export * from "./ScatterChart"; -export * from "./FunnelChart"; diff --git a/src/components/icon-elements/Badge/Badge.tsx b/src/components/icon-elements/Badge/Badge.tsx deleted file mode 100644 index bd0e1e52e..000000000 --- a/src/components/icon-elements/Badge/Badge.tsx +++ /dev/null @@ -1,83 +0,0 @@ -"use client"; -import React from "react"; -import Tooltip, { useTooltip } from "components/util-elements/Tooltip/Tooltip"; -import { - Color, - getColorClassNames, - makeClassName, - mergeRefs, - Size, - Sizes, - tremorTwMerge, - colorPalette, -} from "lib"; -import { badgeProportions, iconSizes } from "./styles"; - -const makeBadgeClassName = makeClassName("Badge"); - -export interface BadgeProps extends React.HTMLAttributes { - color?: Color; - size?: Size; - icon?: React.ElementType; - tooltip?: string; -} - -const Badge = React.forwardRef((props, ref) => { - const { color, icon, size = Sizes.SM, tooltip, className, children, ...other } = props; - - const Icon = icon ? icon : null; - - const { tooltipProps, getReferenceProps } = useTooltip(); - - return ( - - - {Icon ? ( - - ) : null} - - {children} - - - ); -}); - -Badge.displayName = "Badge"; - -export default Badge; diff --git a/src/components/icon-elements/Badge/index.ts b/src/components/icon-elements/Badge/index.ts deleted file mode 100644 index 7a1b96baf..000000000 --- a/src/components/icon-elements/Badge/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -export { default as Badge } from "./Badge"; -export type { BadgeProps } from "./Badge"; diff --git a/src/components/icon-elements/Badge/styles.ts b/src/components/icon-elements/Badge/styles.ts deleted file mode 100644 index 36b5d5840..000000000 --- a/src/components/icon-elements/Badge/styles.ts +++ /dev/null @@ -1,61 +0,0 @@ -export type BadgeProportionTypes = { - paddingX: string; - paddingY: string; - fontSize: string; -}; - -export const badgeProportions: { [char: string]: BadgeProportionTypes } = { - xs: { - paddingX: "px-2", - paddingY: "py-0.5", - fontSize: "text-xs", - }, - sm: { - paddingX: "px-2.5", - paddingY: "py-0.5", - fontSize: "text-sm", - }, - md: { - paddingX: "px-3", - paddingY: "py-0.5", - fontSize: "text-md", - }, - lg: { - paddingX: "px-3.5", - paddingY: "py-0.5", - fontSize: "text-lg", - }, - xl: { - paddingX: "px-4", - paddingY: "py-1", - fontSize: "text-xl", - }, -}; - -export const iconSizes: { - [size: string]: { - height: string; - width: string; - }; -} = { - xs: { - height: "h-4", - width: "w-4", - }, - sm: { - height: "h-4", - width: "w-4", - }, - md: { - height: "h-4", - width: "w-4", - }, - lg: { - height: "h-5", - width: "w-5", - }, - xl: { - height: "h-6", - width: "w-6", - }, -}; diff --git a/src/components/icon-elements/BadgeDelta/BadgeDelta.tsx b/src/components/icon-elements/BadgeDelta/BadgeDelta.tsx deleted file mode 100644 index af1fec726..000000000 --- a/src/components/icon-elements/BadgeDelta/BadgeDelta.tsx +++ /dev/null @@ -1,89 +0,0 @@ -"use client"; -import React from "react"; -import Tooltip, { useTooltip } from "components/util-elements/Tooltip/Tooltip"; -import { - DeltaType, - DeltaTypes, - makeClassName, - mapInputsToDeltaType, - mergeRefs, - Size, - Sizes, - tremorTwMerge, -} from "lib"; -import { - badgeProportionsIconOnly, - badgeProportionsWithText, - colors, - deltaIcons, - iconSizes, -} from "./styles"; - -const makeBadgeDeltaClassName = makeClassName("BadgeDelta"); - -export interface BadgeDeltaProps extends React.HTMLAttributes { - deltaType?: DeltaType; - isIncreasePositive?: boolean; - size?: Size; - tooltip?: string; -} - -const BadgeDelta = React.forwardRef((props, ref) => { - const { - deltaType = DeltaTypes.Increase, - isIncreasePositive = true, - size = Sizes.SM, - tooltip, - children, - className, - ...other - } = props; - - const Icon = deltaIcons[deltaType]; - const mappedDeltaType = mapInputsToDeltaType(deltaType, isIncreasePositive); - const badgeProportions = children ? badgeProportionsWithText : badgeProportionsIconOnly; - const { tooltipProps, getReferenceProps } = useTooltip(); - - return ( - - - - {children ? ( - - {children} - - ) : null} - - ); -}); - -BadgeDelta.displayName = "BadgeDelta"; - -export default BadgeDelta; diff --git a/src/components/icon-elements/BadgeDelta/index.ts b/src/components/icon-elements/BadgeDelta/index.ts deleted file mode 100644 index 5b0cc86ad..000000000 --- a/src/components/icon-elements/BadgeDelta/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -export { default as BadgeDelta } from "./BadgeDelta"; -export type { BadgeDeltaProps } from "./BadgeDelta"; diff --git a/src/components/icon-elements/BadgeDelta/styles.ts b/src/components/icon-elements/BadgeDelta/styles.ts deleted file mode 100644 index 426405a11..000000000 --- a/src/components/icon-elements/BadgeDelta/styles.ts +++ /dev/null @@ -1,145 +0,0 @@ -import { BaseColors, DeltaTypes, getColorClassNames, colorPalette } from "lib"; - -import { - ArrowDownIcon, - ArrowDownRightIcon, - ArrowRightIcon, - ArrowUpIcon, - ArrowUpRightIcon, -} from "assets"; - -export type BadgeProportionTypes = { - paddingX: string; - paddingY: string; - fontSize: string; -}; - -export const badgeProportionsIconOnly: { - [char: string]: BadgeProportionTypes; -} = { - xs: { - paddingX: "px-2", - paddingY: "py-0.5", - fontSize: "text-xs", - }, - sm: { - paddingX: "px-2.5", - paddingY: "py-1", - fontSize: "text-sm", - }, - md: { - paddingX: "px-3", - paddingY: "py-1.5", - fontSize: "text-md", - }, - lg: { - paddingX: "px-3.5", - paddingY: "py-1.5", - fontSize: "text-lg", - }, - xl: { - paddingX: "px-3.5", - paddingY: "py-1.5", - fontSize: "text-xl", - }, -}; - -export const badgeProportionsWithText: { - [char: string]: BadgeProportionTypes; -} = { - xs: { - paddingX: "px-2", - paddingY: "py-0.5", - fontSize: "text-xs", - }, - sm: { - paddingX: "px-2.5", - paddingY: "py-0.5", - fontSize: "text-sm", - }, - md: { - paddingX: "px-3", - paddingY: "py-0.5", - fontSize: "text-md", - }, - lg: { - paddingX: "px-3.5", - paddingY: "py-0.5", - fontSize: "text-lg", - }, - xl: { - paddingX: "px-4", - paddingY: "py-1", - fontSize: "text-xl", - }, -}; - -export const iconSizes: { - [size: string]: { - height: string; - width: string; - }; -} = { - xs: { - height: "h-4", - width: "w-4", - }, - sm: { - height: "h-4", - width: "w-4", - }, - md: { - height: "h-4", - width: "w-4", - }, - lg: { - height: "h-5", - width: "w-5", - }, - xl: { - height: "h-6", - width: "w-6", - }, -}; - -export type ColorTypes = { - bgColor: string; - textColor: string; - ringColor: string; -}; - -export const colors: { [key: string]: ColorTypes } = { - [DeltaTypes.Increase]: { - bgColor: getColorClassNames(BaseColors.Emerald, colorPalette.background).bgColor, - textColor: getColorClassNames(BaseColors.Emerald, colorPalette.iconText).textColor, - ringColor: getColorClassNames(BaseColors.Emerald, colorPalette.iconRing).ringColor, - }, - [DeltaTypes.ModerateIncrease]: { - bgColor: getColorClassNames(BaseColors.Emerald, colorPalette.background).bgColor, - textColor: getColorClassNames(BaseColors.Emerald, colorPalette.iconText).textColor, - ringColor: getColorClassNames(BaseColors.Emerald, colorPalette.iconRing).ringColor, - }, - [DeltaTypes.Decrease]: { - bgColor: getColorClassNames(BaseColors.Red, colorPalette.background).bgColor, - textColor: getColorClassNames(BaseColors.Red, colorPalette.iconText).textColor, - ringColor: getColorClassNames(BaseColors.Red, colorPalette.iconRing).ringColor, - }, - [DeltaTypes.ModerateDecrease]: { - bgColor: getColorClassNames(BaseColors.Red, colorPalette.background).bgColor, - textColor: getColorClassNames(BaseColors.Red, colorPalette.iconText).textColor, - ringColor: getColorClassNames(BaseColors.Red, colorPalette.iconRing).ringColor, - }, - [DeltaTypes.Unchanged]: { - bgColor: getColorClassNames(BaseColors.Orange, colorPalette.background).bgColor, - textColor: getColorClassNames(BaseColors.Orange, colorPalette.iconText).textColor, - ringColor: getColorClassNames(BaseColors.Orange, colorPalette.iconRing).ringColor, - }, -}; - -export const deltaIcons: { [key: string]: React.ElementType } = { - [DeltaTypes.Increase]: ArrowUpIcon, - [DeltaTypes.ModerateIncrease]: ArrowUpRightIcon, - [DeltaTypes.Decrease]: ArrowDownIcon, - [DeltaTypes.ModerateDecrease]: ArrowDownRightIcon, - [DeltaTypes.Unchanged]: ArrowRightIcon, -}; diff --git a/src/components/icon-elements/Icon/Icon.tsx b/src/components/icon-elements/Icon/Icon.tsx deleted file mode 100644 index f2cf17cc9..000000000 --- a/src/components/icon-elements/Icon/Icon.tsx +++ /dev/null @@ -1,78 +0,0 @@ -"use client"; -import React from "react"; - -import Tooltip, { useTooltip } from "components/util-elements/Tooltip/Tooltip"; -import { makeClassName, mergeRefs, Sizes, tremorTwMerge } from "lib"; -import { Color, IconVariant, Size } from "../../../lib"; -import { getIconColors, iconSizes, shape, wrapperProportions } from "./styles"; - -const makeIconClassName = makeClassName("Icon"); - -export const IconVariants: { [key: string]: IconVariant } = { - Simple: "simple", - Light: "light", - Shadow: "shadow", - Solid: "solid", - Outlined: "outlined", -}; - -export interface IconProps extends React.HTMLAttributes { - icon: React.ElementType; - variant?: IconVariant; - tooltip?: string; - size?: Size; - color?: Color; -} - -const Icon = React.forwardRef((props, ref) => { - const { - icon, - variant = IconVariants.Simple, - tooltip, - size = Sizes.SM, - color, - className, - ...other - } = props; - const Icon = icon; - const iconColorStyles = getIconColors(variant, color); - - const { tooltipProps, getReferenceProps } = useTooltip(); - - return ( - - - - - ); -}); - -Icon.displayName = "Icon"; - -export default Icon; diff --git a/src/components/icon-elements/Icon/index.ts b/src/components/icon-elements/Icon/index.ts deleted file mode 100644 index 74325024c..000000000 --- a/src/components/icon-elements/Icon/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -export { default as Icon } from "./Icon"; -export type { IconProps } from "./Icon"; diff --git a/src/components/icon-elements/Icon/styles.ts b/src/components/icon-elements/Icon/styles.ts deleted file mode 100644 index 43b6019f6..000000000 --- a/src/components/icon-elements/Icon/styles.ts +++ /dev/null @@ -1,171 +0,0 @@ -import { getColorClassNames, tremorTwMerge, colorPalette, Color, IconVariant } from "lib"; - -export type WrapperProportionTypes = { - paddingX: string; - paddingY: string; -}; - -export const wrapperProportions: { [size: string]: WrapperProportionTypes } = { - xs: { - paddingX: "px-1.5", - paddingY: "py-1.5", - }, - sm: { - paddingX: "px-1.5", - paddingY: "py-1.5", - }, - md: { - paddingX: "px-2", - paddingY: "py-2", - }, - lg: { - paddingX: "px-2", - paddingY: "py-2", - }, - xl: { - paddingX: "px-2.5", - paddingY: "py-2.5", - }, -}; - -export const iconSizes: { - [size: string]: { - height: string; - width: string; - }; -} = { - xs: { - height: "h-3", - width: "w-3", - }, - sm: { - height: "h-5", - width: "w-5", - }, - md: { - height: "h-5", - width: "w-5", - }, - lg: { - height: "h-7", - width: "w-7", - }, - xl: { - height: "h-9", - width: "w-9", - }, -}; - -export type ShapeTypes = { - rounded: string; - border: string; - ring: string; - shadow: string; -}; - -export const shape: { [style: string]: ShapeTypes } = { - simple: { - rounded: "", - border: "", - ring: "", - shadow: "", - }, - light: { - rounded: "rounded-tremor-default", - border: "", - ring: "", - shadow: "", - }, - shadow: { - rounded: "rounded-tremor-default", - border: "border", - ring: "", - shadow: "shadow-tremor-card dark:shadow-dark-tremor-card", - }, - solid: { - rounded: "rounded-tremor-default", - border: "border-2", - ring: "ring-1", - shadow: "", - }, - outlined: { - rounded: "rounded-tremor-default", - border: "border", - ring: "ring-2", - shadow: "", - }, -}; - -export const getIconColors = (variant: IconVariant, color?: Color) => { - switch (variant) { - case "simple": - return { - textColor: color - ? getColorClassNames(color, colorPalette.text).textColor - : "text-tremor-brand dark:text-dark-tremor-brand", - bgColor: "", - borderColor: "", - ringColor: "", - }; - case "light": - return { - textColor: color - ? getColorClassNames(color, colorPalette.text).textColor - : "text-tremor-brand dark:text-dark-tremor-brand", - bgColor: color - ? tremorTwMerge( - getColorClassNames(color, colorPalette.background).bgColor, - "bg-opacity-20", - ) - : "bg-tremor-brand-muted dark:bg-dark-tremor-brand-muted", - borderColor: "", - ringColor: "", - }; - case "shadow": - return { - textColor: color - ? getColorClassNames(color, colorPalette.text).textColor - : "text-tremor-brand dark:text-dark-tremor-brand", - bgColor: color - ? tremorTwMerge( - getColorClassNames(color, colorPalette.background).bgColor, - "bg-opacity-20", - ) - : "bg-tremor-background dark:bg-dark-tremor-background", - borderColor: "border-tremor-border dark:border-dark-tremor-border", - ringColor: "", - }; - case "solid": - return { - textColor: color - ? getColorClassNames(color, colorPalette.text).textColor - : "text-tremor-brand-inverted dark:text-dark-tremor-brand-inverted", - bgColor: color - ? tremorTwMerge( - getColorClassNames(color, colorPalette.background).bgColor, - "bg-opacity-20", - ) - : "bg-tremor-brand dark:bg-dark-tremor-brand", - borderColor: "border-tremor-brand-inverted dark:border-dark-tremor-brand-inverted", - ringColor: "ring-tremor-ring dark:ring-dark-tremor-ring", - }; - case "outlined": - return { - textColor: color - ? getColorClassNames(color, colorPalette.text).textColor - : "text-tremor-brand dark:text-dark-tremor-brand", - bgColor: color - ? tremorTwMerge( - getColorClassNames(color, colorPalette.background).bgColor, - "bg-opacity-20", - ) - : "bg-tremor-background dark:bg-dark-tremor-background", - borderColor: color - ? getColorClassNames(color, colorPalette.ring).borderColor - : "border-tremor-brand-subtle dark:border-dark-tremor-brand-subtle", - ringColor: color - ? tremorTwMerge(getColorClassNames(color, colorPalette.ring).ringColor, "ring-opacity-40") - : "ring-tremor-brand-muted dark:ring-dark-tremor-brand-muted", - }; - } -}; diff --git a/src/components/icon-elements/index.ts b/src/components/icon-elements/index.ts deleted file mode 100644 index b6e0e54f0..000000000 --- a/src/components/icon-elements/index.ts +++ /dev/null @@ -1,3 +0,0 @@ -export * from "./Badge"; -export * from "./BadgeDelta"; -export * from "./Icon"; diff --git a/src/components/index.ts b/src/components/index.ts index c0342ea97..6ba7a99c8 100644 --- a/src/components/index.ts +++ b/src/components/index.ts @@ -1,5 +1,4 @@ export * from "./chart-elements"; -export * from "./icon-elements"; export * from "./input-elements"; export * from "./layout-elements"; export * from "./list-elements"; diff --git a/src/components/input-elements/BaseInput.tsx b/src/components/input-elements/BaseInput.tsx index f7ec0bf28..50091cbe3 100644 --- a/src/components/input-elements/BaseInput.tsx +++ b/src/components/input-elements/BaseInput.tsx @@ -1,8 +1,8 @@ "use client"; -import React, { ReactNode, useCallback, useRef, useState } from "react"; import { ExclamationFilledIcon, EyeIcon, EyeOffIcon } from "assets"; import { getSelectButtonColors, hasValue } from "components/input-elements/selectUtils"; import { mergeRefs, tremorTwMerge } from "lib"; +import React, { ReactNode, useCallback, useRef, useState } from "react"; export interface BaseInputProps extends React.InputHTMLAttributes { type?: "text" | "password" | "email" | "url" | "number" | "search" | "tel"; @@ -14,7 +14,6 @@ export interface BaseInputProps extends React.InputHTMLAttributes void; - makeInputClassName: (className: string) => string; pattern?: string; } @@ -29,7 +28,6 @@ const BaseInput = React.forwardRef((props, ref errorMessage, disabled = false, stepper, - makeInputClassName, className, onChange, onValueChange, @@ -58,9 +56,7 @@ const BaseInput = React.forwardRef((props, ref const node = inputRef.current; if (node) { node.addEventListener("focus", handleFocus); - node.addEventListener("blur", handleBlur); - - // Autofocus logic + node.addEventListener("blur-sm", handleBlur); if (autoFocus) { node.focus(); } @@ -69,7 +65,7 @@ const BaseInput = React.forwardRef((props, ref return () => { if (node) { node.removeEventListener("focus", handleFocus); - node.removeEventListener("blur", handleBlur); + node.removeEventListener("blur-sm", handleBlur); } }; }, [autoFocus]); @@ -78,36 +74,16 @@ const BaseInput = React.forwardRef((props, ref <>
{Icon ? ( ) : null} @@ -117,19 +93,12 @@ const BaseInput = React.forwardRef((props, ref value={value} type={isPasswordVisible ? "text" : type} className={tremorTwMerge( - makeInputClassName("input"), - // common - "w-full bg-transparent focus:outline-none focus:ring-0 border-none text-tremor-default rounded-tremor-default transition duration-100 py-2", - // light - "text-tremor-content-emphasis", - // dark - "dark:text-dark-tremor-content-emphasis", - "[appearance:textfield] [&::-webkit-outer-spin-button]:appearance-none [&::-webkit-inner-spin-button]:appearance-none", + "text-tremor-default rounded-tremor-default text-tremor-content-emphasis w-full [appearance:textfield] border-none bg-transparent py-2 transition duration-100 focus:ring-0 focus:outline-none [&::-webkit-inner-spin-button]:appearance-none [&::-webkit-outer-spin-button]:appearance-none", type === "password" ? (error ? "pr-16" : "pr-12") : error ? "pr-8" : "pr-3", Icon ? "pl-10" : "pl-3", disabled - ? "placeholder:text-tremor-content-subtle dark:placeholder:text-dark-tremor-content-subtle" - : "placeholder:text-tremor-content dark:placeholder:text-dark-tremor-content", + ? "placeholder:text-tremor-content-subtle" + : "placeholder:text-tremor-content-default", )} placeholder={placeholder} disabled={disabled} @@ -144,8 +113,7 @@ const BaseInput = React.forwardRef((props, ref {type === "password" && !disabled ? (
{error && errorMessage ? ( -

- {errorMessage} -

+

{errorMessage}

) : null} ); diff --git a/src/components/input-elements/Button/Button.tsx b/src/components/input-elements/Button/Button.tsx index 37f512ed7..346e99a4a 100644 --- a/src/components/input-elements/Button/Button.tsx +++ b/src/components/input-elements/Button/Button.tsx @@ -1,15 +1,445 @@ "use client"; -import Tooltip, { useTooltip } from "components/util-elements/Tooltip/Tooltip"; -import React, { useEffect } from "react"; -import { useTransition, type TransitionStatus } from "react-transition-state"; -import { HorizontalPositions, makeClassName, mergeRefs, Sizes, tremorTwMerge } from "lib"; +import React from "react"; import { LoadingSpinner } from "assets"; -import { ButtonVariant, Color, HorizontalPosition, Size } from "../../../lib"; -import { getButtonColors, getButtonProportions, iconSizes } from "./styles"; +import { tremorTwMerge } from "lib"; +import { tv, VariantProps } from "tailwind-variants"; -const makeButtonClassName = makeClassName("Button"); +type HorizontalPosition = "left" | "right"; + +const HorizontalPositions: { [key: string]: HorizontalPosition } = { + Left: "left", + Right: "right", +}; + +const iconSizes = { + xs: "h-4 w-4", + sm: "h-4 w-4", + md: "h-4 w-4", + lg: "h-5 w-5", + xl: "h-6 w-6", +}; + +const buttonStyles = tv({ + base: "group disabled:cursor-not-allowed rounded-tremor-default disabled:opacity-50 inline-flex shrink-0 items-center justify-center font-medium outline-0 outline-offset-2 outline-blue-500 dark:outline-blue-500 transition", + variants: { + variant: { + primary: "", + secondary: "border", + light: "", + }, + size: { + xs: "px-2.5 py-1.5 text-xs", + sm: "px-4 py-2 text-sm", + md: "px-4 py-2 text-md", + lg: "px-4 py-2.5 text-lg", + xl: "px-4 py-3 text-xl", + }, + color: { + brand: "", + slate: "", + gray: "", + zinc: "", + neutral: "", + stone: "", + red: "", + orange: "", + amber: "", + yellow: "", + lime: "", + green: "", + emerald: "", + teal: "", + cyan: "", + sky: "", + blue: "", + indigo: "", + violet: "", + purple: "", + fuchsia: "", + pink: "", + rose: "", + }, + }, + compoundVariants: [ + // Primary Variants + { + variant: "primary", + color: "brand", + className: + "text-tremor-brand-inverted bg-tremor-brand-default hover:bg-tremor-brand-emphasis", + }, + { + variant: "primary", + color: "slate", + className: "bg-slate-500 hover:bg-slate-600 text-white", + }, + { + variant: "primary", + color: "gray", + className: "bg-gray-500 hover:bg-gray-600 text-white", + }, + { + variant: "primary", + color: "zinc", + className: "bg-zinc-500 hover:bg-zinc-600 text-white", + }, + { + variant: "primary", + color: "neutral", + className: "bg-neutral-500 hover:bg-neutral-600 text-white", + }, + { + variant: "primary", + color: "stone", + className: "bg-stone-500 hover:bg-stone-600 text-white", + }, + { + variant: "primary", + color: "red", + className: "bg-red-500 hover:bg-red-600 text-white", + }, + { + variant: "primary", + color: "orange", + className: "bg-orange-500 hover:bg-orange-600 text-white", + }, + { + variant: "primary", + color: "amber", + className: "bg-amber-500 hover:bg-amber-600 text-white", + }, + { + variant: "primary", + color: "yellow", + className: "bg-yellow-500 hover:bg-yellow-600 text-white", + }, + { + variant: "primary", + color: "lime", + className: "bg-lime-500 hover:bg-lime-600 text-white", + }, + { + variant: "primary", + color: "green", + className: "bg-green-500 hover:bg-green-600 text-white", + }, + { + variant: "primary", + color: "emerald", + className: "bg-emerald-500 hover:bg-emerald-600 text-white", + }, + { + variant: "primary", + color: "teal", + className: "bg-teal-500 hover:bg-teal-600 text-white", + }, + { + variant: "primary", + color: "cyan", + className: "bg-cyan-500 hover:bg-cyan-600 text-white", + }, + { + variant: "primary", + color: "sky", + className: "bg-sky-500 hover:bg-sky-600 text-white", + }, + { + variant: "primary", + color: "blue", + className: "bg-blue-500 hover:bg-blue-600 text-white", + }, + { + variant: "primary", + color: "indigo", + className: "bg-indigo-500 hover:bg-indigo-600 text-white", + }, + { + variant: "primary", + color: "violet", + className: "bg-violet-500 hover:bg-violet-600 text-white", + }, + { + variant: "primary", + color: "purple", + className: "bg-purple-500 hover:bg-purple-600 text-white", + }, + { + variant: "primary", + color: "fuchsia", + className: "bg-fuchsia-500 hover:bg-fuchsia-600 text-white", + }, + { + variant: "primary", + color: "pink", + className: "bg-pink-500 hover:bg-pink-600 text-white", + }, + { + variant: "primary", + color: "rose", + className: "bg-rose-500 hover:bg-rose-600 text-white", + }, + // Secondary Variants + { + variant: "secondary", + color: "brand", + className: + "border-tremor-brand-default text-tremor-brand-default hover:text-tremor-brand-emphasis bg-transparent hover:bg-tremor-brand-faint", + }, + { + variant: "secondary", + color: "slate", + className: "border-slate-600 text-slate-500 hover:bg-slate-50 dark:hover:bg-slate-500/15", + }, + { + variant: "secondary", + color: "gray", + className: "border-gray-600 text-gray-500 hover:bg-gray-50 dark:hover:bg-gray-500/15", + }, + { + variant: "secondary", + color: "zinc", + className: "border-zinc-600 text-zinc-500 hover:bg-zinc-50 dark:hover:bg-zinc-500/15", + }, + { + variant: "secondary", + color: "neutral", + className: + "border-neutral-600 text-neutral-500 hover:bg-neutral-50 dark:hover:bg-neutral-500/15", + }, + { + variant: "secondary", + color: "stone", + className: "border-stone-600 text-stone-500 hover:bg-stone-50 dark:hover:bg-stone-500/15", + }, + { + variant: "secondary", + color: "red", + className: "border-red-600 text-red-500 hover:bg-red-50 dark:hover:bg-red-500/15", + }, + { + variant: "secondary", + color: "orange", + className: "border-orange-600 text-orange-500 hover:bg-orange-50 dark:hover:bg-orange-500/15", + }, + { + variant: "secondary", + color: "amber", + className: "border-amber-600 text-amber-500 hover:bg-amber-50 dark:hover:bg-amber-500/15", + }, + { + variant: "secondary", + color: "yellow", + className: "border-yellow-600 text-yellow-500 hover:bg-yellow-50 dark:hover:bg-yellow-500/15", + }, + { + variant: "secondary", + color: "lime", + className: "border-lime-600 text-lime-500 hover:bg-lime-50 dark:hover:bg-lime-500/15", + }, + { + variant: "secondary", + color: "green", + className: "border-green-600 text-green-500 hover:bg-green-50 dark:hover:bg-green-500/15", + }, + { + variant: "secondary", + color: "emerald", + className: + "border-emerald-600 text-emerald-500 hover:bg-emerald-50 dark:hover:bg-emerald-500/15", + }, + { + variant: "secondary", + color: "teal", + className: "border-teal-600 text-teal-500 hover:bg-teal-50 dark:hover:bg-teal-500/15", + }, + { + variant: "secondary", + color: "cyan", + className: "border-cyan-600 text-cyan-500 hover:bg-cyan-50 dark:hover:bg-cyan-500/15", + }, + { + variant: "secondary", + color: "sky", + className: "border-sky-600 text-sky-500 hover:bg-sky-50 dark:hover:bg-sky-500/15", + }, + { + variant: "secondary", + color: "blue", + className: "border-blue-600 text-blue-500 hover:bg-blue-50 dark:hover:bg-blue-500/15", + }, + { + variant: "secondary", + color: "indigo", + className: "border-indigo-600 text-indigo-500 hover:bg-indigo-50 dark:hover:bg-indigo-500/15", + }, + { + variant: "secondary", + color: "violet", + className: "border-violet-600 text-violet-500 hover:bg-violet-50 dark:hover:bg-violet-500/15", + }, + { + variant: "secondary", + color: "purple", + className: "border-purple-600 text-purple-500 hover:bg-purple-50 dark:hover:bg-purple-500/15", + }, + { + variant: "secondary", + color: "fuchsia", + className: + "border-fuchsia-600 text-fuchsia-500 hover:bg-fuchsia-50 dark:hover:bg-fuchsia-500/15", + }, + { + variant: "secondary", + color: "pink", + className: "border-pink-600 text-pink-500 hover:bg-pink-50 dark:hover:bg-pink-500/15", + }, + { + variant: "secondary", + color: "rose", + className: "border-rose-600 text-rose-500 hover:bg-rose-50 dark:hover:bg-rose-500/15", + }, + // Light Variants + { + variant: "light", + color: "brand", + className: "text-tremor-brand-default hover:text-tremor-brand-emphasis", + }, + { + variant: "light", + color: "slate", + className: "text-slate-500 hover:bg-slate-50 dark:hover:bg-slate-500/15", + }, + { + variant: "light", + color: "gray", + className: "text-gray-500 hover:bg-gray-50 dark:hover:bg-gray-500/15", + }, + { + variant: "light", + color: "zinc", + className: "text-zinc-500 hover:bg-zinc-50 dark:hover:bg-zinc-500/15", + }, + { + variant: "light", + color: "neutral", + className: "text-neutral-500 hover:bg-neutral-50 dark:hover:bg-neutral-500/15", + }, + { + variant: "light", + color: "stone", + className: "text-stone-500 hover:bg-stone-50 dark:hover:bg-stone-500/15", + }, + { + variant: "light", + color: "red", + className: "text-red-500 hover:bg-red-50 dark:hover:bg-red-500/15", + }, + { + variant: "light", + color: "orange", + className: "text-orange-500 hover:bg-orange-50 dark:hover:bg-orange-500/15", + }, + { + variant: "light", + color: "amber", + className: "text-amber-500 hover:bg-amber-50 dark:hover:bg-amber-500/15", + }, + { + variant: "light", + color: "yellow", + className: "text-yellow-500 hover:bg-yellow-50 dark:hover:bg-yellow-500/15", + }, + { + variant: "light", + color: "lime", + className: "text-lime-500 hover:bg-lime-50 dark:hover:bg-lime-500/15", + }, + { + variant: "light", + color: "green", + className: "text-green-500 hover:bg-green-50 dark:hover:bg-green-500/15", + }, + { + variant: "light", + color: "emerald", + className: "text-emerald-500 hover:bg-emerald-50 dark:hover:bg-emerald-500/15", + }, + { + variant: "light", + color: "teal", + className: "text-teal-500 hover:bg-teal-50 dark:hover:bg-teal-500/15", + }, + { + variant: "light", + color: "cyan", + className: "text-cyan-500 hover:bg-cyan-50 dark:hover:bg-cyan-500/15", + }, + { + variant: "light", + color: "sky", + className: "text-sky-500 hover:bg-sky-50 dark:hover:bg-sky-500/15", + }, + { + variant: "light", + color: "blue", + className: "text-blue-500 hover:bg-blue-50 dark:hover:bg-blue-500/15", + }, + { + variant: "light", + color: "indigo", + className: "text-indigo-500 hover:bg-indigo-50 dark:hover:bg-indigo-500/15", + }, + { + variant: "light", + color: "violet", + className: "text-violet-500 hover:bg-violet-50 dark:hover:bg-violet-500/15", + }, + { + variant: "light", + color: "purple", + className: "text-purple-500 hover:bg-purple-50 dark:hover:bg-purple-500/15", + }, + { + variant: "light", + color: "violet", + className: "text-violet-500 hover:bg-violet-50 dark:hover:bg-violet-500/15", + }, + { + variant: "light", + color: "fuchsia", + className: "text-fuchsia-500 hover:bg-fuchsia-50 dark:hover:bg-fuchsia-500/15", + }, + { + variant: "light", + color: "pink", + className: "text-pink-500 hover:bg-pink-50 dark:hover:bg-pink-500/15", + }, + { + variant: "light", + color: "rose", + className: "text-rose-500 hover:bg-rose-50 dark:hover:bg-rose-500/15", + }, + ], + defaultVariants: { + variant: "primary", + color: "brand", + size: "sm", + }, +}); + +type ButtonProps = Omit< + React.ComponentPropsWithoutRef<"button">, + keyof VariantProps +> & + VariantProps & { + icon?: React.ElementType; + iconPosition?: HorizontalPosition; + disabled?: boolean; + loading?: boolean; + loadingText?: string; + }; export interface ButtonIconOrSpinnerProps { loading: boolean; @@ -17,7 +447,6 @@ export interface ButtonIconOrSpinnerProps { iconPosition: string; Icon: React.ElementType | undefined; needMargin: boolean; - transitionStatus: TransitionStatus; } export const ButtonIconOrSpinner = ({ @@ -26,7 +455,6 @@ export const ButtonIconOrSpinner = ({ iconPosition, Icon, needMargin, - transitionStatus, }: ButtonIconOrSpinnerProps) => { Icon = Icon!; @@ -36,153 +464,74 @@ export const ButtonIconOrSpinner = ({ ? tremorTwMerge("-ml-1", "mr-1.5") : tremorTwMerge("-mr-1", "ml-1.5"); - const defaultSpinnerSize = tremorTwMerge("w-0 h-0"); - const spinnerSize: { [key: string]: any } = { - default: defaultSpinnerSize, - entering: defaultSpinnerSize, - entered: iconSize, - exiting: iconSize, - exited: defaultSpinnerSize, - }; - return loading ? ( ) : ( - + ); }; -export interface ButtonProps extends React.ButtonHTMLAttributes { - icon?: React.ElementType; - iconPosition?: HorizontalPosition; - size?: Size; - color?: Color; - variant?: ButtonVariant; - disabled?: boolean; - loading?: boolean; - loadingText?: string; - tooltip?: string; -} - -const Button = React.forwardRef((props, ref) => { - const { - icon, - iconPosition = HorizontalPositions.Left, - size = Sizes.SM, - color, - variant = "primary", - disabled, - loading = false, - loadingText, - children, - tooltip, - className, - ...other - } = props; - - const Icon = icon; - - const isDisabled = loading || disabled; - const showButtonIconOrSpinner = Icon !== undefined || loading; - const showLoadingText = loading && loadingText; - const needIconMargin = children || showLoadingText ? true : false; - - const iconSize = tremorTwMerge(iconSizes[size].height, iconSizes[size].width); - const buttonShapeStyles = - variant !== "light" - ? tremorTwMerge( - // common - "rounded-tremor-default border", - // light - "shadow-tremor-input", - // dark - "dark:shadow-dark-tremor-input", - ) - : ""; - const buttonColorStyles = getButtonColors(variant, color); - const buttonProportionStyles = getButtonProportions(variant)[size]; - const delay = 300; - const { tooltipProps, getReferenceProps } = useTooltip(delay); +const Button = React.forwardRef( + ( + { + icon: Icon, + iconPosition = HorizontalPositions.Left, + variant, + color, + size = "sm", + disabled, + loading = false, + loadingText, + children, + className, + ...other + }, + ref, + ) => { + const isDisabled = loading || disabled; + const showButtonIconOrSpinner = Icon !== undefined || loading; + const showLoadingText = loading && loadingText; + const needIconMargin = children || showLoadingText ? true : false; - const [transitionState, toggleTransition] = useTransition({ timeout: 50 }); - - useEffect(() => { - toggleTransition(loading); - }, [loading]); - - return ( - // eslint-disable-next-line react/button-has-type - - ); -}); + return ( + // eslint-disable-next-line react/button-has-type + + ); + }, +); Button.displayName = "Button"; -export default Button; +export { Button, type ButtonProps }; diff --git a/src/components/input-elements/Button/index.ts b/src/components/input-elements/Button/index.ts index fdec70a12..1c3bdccf4 100644 --- a/src/components/input-elements/Button/index.ts +++ b/src/components/input-elements/Button/index.ts @@ -1,2 +1,2 @@ -export { default as Button } from "./Button"; +export { Button } from "./Button"; export type { ButtonProps } from "./Button"; diff --git a/src/components/input-elements/Button/styles.ts b/src/components/input-elements/Button/styles.ts deleted file mode 100644 index eec702d24..000000000 --- a/src/components/input-elements/Button/styles.ts +++ /dev/null @@ -1,145 +0,0 @@ -import { getColorClassNames, tremorTwMerge, ButtonVariant, Color, colorPalette } from "lib"; - -export const iconSizes: { - [size: string]: { - height: string; - width: string; - }; -} = { - xs: { - height: "h-4", - width: "w-4", - }, - sm: { - height: "h-5", - width: "w-5", - }, - md: { - height: "h-5", - width: "w-5", - }, - lg: { - height: "h-6", - width: "w-6", - }, - xl: { - height: "h-6", - width: "w-6", - }, -}; - -export const getButtonProportions = (variant: ButtonVariant) => { - if (!(variant === "light")) { - return { - xs: { - paddingX: "px-2.5", - paddingY: "py-1.5", - fontSize: "text-xs", - }, - sm: { - paddingX: "px-4", - paddingY: "py-2", - fontSize: "text-sm", - }, - md: { - paddingX: "px-4", - paddingY: "py-2", - fontSize: "text-md", - }, - lg: { - paddingX: "px-4", - paddingY: "py-2.5", - fontSize: "text-lg", - }, - xl: { - paddingX: "px-4", - paddingY: "py-3", - fontSize: "text-xl", - }, - }; - } - return { - xs: { - paddingX: "", - paddingY: "", - fontSize: "text-xs", - }, - sm: { - paddingX: "", - paddingY: "", - fontSize: "text-sm", - }, - md: { - paddingX: "", - paddingY: "", - fontSize: "text-md", - }, - lg: { - paddingX: "", - paddingY: "", - fontSize: "text-lg", - }, - xl: { - paddingX: "", - paddingY: "", - fontSize: "text-xl", - }, - }; -}; - -export const getButtonColors = (variant: ButtonVariant, color?: Color) => { - switch (variant) { - case "primary": - return { - textColor: color - ? getColorClassNames("white").textColor - : "text-tremor-brand-inverted dark:text-dark-tremor-brand-inverted", - hoverTextColor: color - ? getColorClassNames("white").textColor - : "text-tremor-brand-inverted dark:text-dark-tremor-brand-inverted", - bgColor: color - ? getColorClassNames(color, colorPalette.background).bgColor - : "bg-tremor-brand dark:bg-dark-tremor-brand", - hoverBgColor: color - ? getColorClassNames(color, colorPalette.darkBackground).hoverBgColor - : "hover:bg-tremor-brand-emphasis dark:hover:bg-dark-tremor-brand-emphasis", - borderColor: color - ? getColorClassNames(color, colorPalette.border).borderColor - : "border-tremor-brand dark:border-dark-tremor-brand", - hoverBorderColor: color - ? getColorClassNames(color, colorPalette.darkBorder).hoverBorderColor - : "hover:border-tremor-brand-emphasis dark:hover:border-dark-tremor-brand-emphasis", - }; - case "secondary": - return { - textColor: color - ? getColorClassNames(color, colorPalette.text).textColor - : "text-tremor-brand dark:text-dark-tremor-brand", - hoverTextColor: color - ? getColorClassNames(color, colorPalette.text).textColor - : "hover:text-tremor-brand-emphasis dark:hover:text-dark-tremor-brand-emphasis", - bgColor: getColorClassNames("transparent").bgColor, - hoverBgColor: color - ? tremorTwMerge( - getColorClassNames(color, colorPalette.background).hoverBgColor, - "hover:bg-opacity-20 dark:hover:bg-opacity-20", - ) - : "hover:bg-tremor-brand-faint dark:hover:bg-dark-tremor-brand-faint", - borderColor: color - ? getColorClassNames(color, colorPalette.border).borderColor - : "border-tremor-brand dark:border-dark-tremor-brand", - }; - case "light": - return { - textColor: color - ? getColorClassNames(color, colorPalette.text).textColor - : "text-tremor-brand dark:text-dark-tremor-brand", - hoverTextColor: color - ? getColorClassNames(color, colorPalette.darkText).hoverTextColor - : "hover:text-tremor-brand-emphasis dark:hover:text-dark-tremor-brand-emphasis", - bgColor: getColorClassNames("transparent").bgColor, - borderColor: "", - hoverBorderColor: "", - }; - } -}; diff --git a/src/components/input-elements/Calendar/Calendar.tsx b/src/components/input-elements/Calendar/Calendar.tsx index 1b4b2b087..8d05e66d8 100644 --- a/src/components/input-elements/Calendar/Calendar.tsx +++ b/src/components/input-elements/Calendar/Calendar.tsx @@ -14,7 +14,6 @@ import { DoubleArrowRightHeadIcon, } from "assets"; import { addYears, format } from "date-fns"; -import { Text } from "../../text-elements/Text"; import { NavButton } from "./NavButton"; function Calendar({ @@ -43,26 +42,23 @@ function Calendar({ months: "flex flex-col sm:flex-row space-y-4 sm:space-x-4 sm:space-y-0", month: "space-y-4", caption: "flex justify-center pt-2 relative items-center", - caption_label: - "text-tremor-default text-tremor-content-emphasis dark:text-dark-tremor-content-emphasis font-medium", + caption_label: "text-tremor-default text-tremor-content-emphasis font-medium", nav: "space-x-1 flex items-center", nav_button: - "flex items-center justify-center p-1 h-7 w-7 outline-none focus:ring-2 transition duration-100 border border-tremor-border dark:border-dark-tremor-border hover:bg-tremor-background-muted dark:hover:bg-dark-tremor-background-muted rounded-tremor-small focus:border-tremor-brand-subtle dark:focus:border-dark-tremor-brand-subtle focus:ring-tremor-brand-muted dark:focus:ring-dark-tremor-brand-muted text-tremor-content-subtle dark:text-dark-tremor-content-subtle hover:text-tremor-content dark:hover:text-dark-tremor-content", + "flex items-center justify-center p-1 h-7 w-7 outline-none focus:ring-2 transition duration-100 border border-tremor-border-default hover:bg-tremor-background-muted rounded-tremor-small focus:border-tremor-brand-subtle focus:ring-tremor-brand-muted text-tremor-content-subtle hover:text-tremor-content-default", nav_button_previous: "absolute left-1", nav_button_next: "absolute right-1", table: "w-full border-collapse space-y-1", head_row: "flex", - head_cell: - "w-9 font-normal text-center text-tremor-content-subtle dark:text-dark-tremor-content-subtle", + head_cell: "w-9 font-normal text-center text-tremor-content-subtle", row: "flex w-full mt-0.5", - cell: "text-center p-0 relative focus-within:relative text-tremor-default text-tremor-content-emphasis dark:text-dark-tremor-content-emphasis", - day: "h-9 w-9 p-0 hover:bg-tremor-background-subtle dark:hover:bg-dark-tremor-background-subtle outline-tremor-brand dark:outline-dark-tremor-brand rounded-tremor-default", + cell: "text-center p-0 relative focus-within:relative text-tremor-default text-tremor-content-emphasis ", + day: "h-9 w-9 p-0 hover:bg-tremor-background-subtle outline-tremor-brand rounded-tremor-default", day_today: "font-bold", day_selected: - "aria-selected:bg-tremor-background-emphasis aria-selected:text-tremor-content-inverted dark:aria-selected:bg-dark-tremor-background-emphasis dark:aria-selected:text-dark-tremor-content-inverted ", - day_disabled: - "text-tremor-content-subtle dark:text-dark-tremor-content-subtle disabled:hover:bg-transparent", - day_outside: "text-tremor-content-subtle dark:text-dark-tremor-content-subtle", + "aria-selected:bg-tremor-background-emphasis aria-selected:text-tremor-content-inverted", + day_disabled: "text-tremor-content-subtle disabled:hover:bg-transparent", + day_outside: "text-tremor-content-subtle ", ...classNames, }} components={{ @@ -72,7 +68,7 @@ function Calendar({ const { goToMonth, nextMonth, previousMonth, currentMonth } = useNavigation(); return ( -
+
{enableYearNavigation && ( ({ />
- + {format(props.displayMonth, "LLLL yyy", { locale })} - +
({ ); } -Calendar.displayName = "DateRangePicker"; +Calendar.displayName = "Calendar"; -export default Calendar; +export { Calendar }; diff --git a/src/components/input-elements/Calendar/NavButton.tsx b/src/components/input-elements/Calendar/NavButton.tsx index f62a6e956..b103d1320 100644 --- a/src/components/input-elements/Calendar/NavButton.tsx +++ b/src/components/input-elements/Calendar/NavButton.tsx @@ -1,4 +1,3 @@ -import { Icon as IconComponent } from "components/icon-elements"; import { tremorTwMerge } from "lib"; import React from "react"; @@ -7,17 +6,20 @@ interface NavButtonProps extends React.HTMLAttributes { icon: React.ElementType; } -export const NavButton = ({ onClick, icon, ...other }: NavButtonProps) => { +const NavButton = ({ onClick, icon, ...other }: NavButtonProps) => { const Icon = icon; return ( ); }; + +export { NavButton }; diff --git a/src/components/input-elements/Calendar/index.ts b/src/components/input-elements/Calendar/index.ts index eca04c49a..c61d9908b 100644 --- a/src/components/input-elements/Calendar/index.ts +++ b/src/components/input-elements/Calendar/index.ts @@ -1 +1 @@ -export { default as Calendar } from "./Calendar"; +export { Calendar } from "./Calendar"; diff --git a/src/components/input-elements/DatePicker/DatePicker.tsx b/src/components/input-elements/DatePicker/DatePicker.tsx index 19b4ef4bb..539e37098 100644 --- a/src/components/input-elements/DatePicker/DatePicker.tsx +++ b/src/components/input-elements/DatePicker/DatePicker.tsx @@ -1,15 +1,14 @@ "use client"; -import React, { useMemo } from "react"; import { tremorTwMerge } from "lib"; +import React, { useMemo } from "react"; import { DayPickerSingleProps } from "react-day-picker"; import { startOfMonth, startOfToday } from "date-fns"; import { enUS } from "date-fns/locale"; -import { Popover, Transition } from "@headlessui/react"; +import { Popover, PopoverButton, PopoverPanel, Transition } from "@headlessui/react"; import { CalendarIcon, XCircleIcon } from "assets"; import { Calendar } from "components/input-elements/Calendar"; -import { makeDatePickerClassName } from "components/input-elements/DatePicker/datePickerUtils"; import { useInternalState } from "hooks"; import { Color } from "../../../lib/inputTypes"; import { formatSelectedDates } from "../DateRangePicker/dateRangePickerUtils"; @@ -17,11 +16,11 @@ import { getSelectButtonColors, hasValue } from "../selectUtils"; const TODAY = startOfToday(); -export type Locale = typeof enUS; +type Locale = typeof enUS; -export type DatePickerValue = Date | undefined; +type DatePickerValue = Date | undefined; -export interface DatePickerProps +interface DatePickerProps extends Omit, "value" | "defaultValue"> { value?: Date; defaultValue?: Date; @@ -85,63 +84,42 @@ const DatePicker = React.forwardRef((props, ref ref={ref} as="div" className={tremorTwMerge( - "relative w-full min-w-[10rem] text-tremor-default", - "focus:ring-2 focus:ring-tremor-brand-muted dark:focus:ring-dark-tremor-brand-muted", + "text-tremor-default relative w-full min-w-[10rem]", + "focus:ring-tremor-brand-muted focus:ring-2", className, )} {...other} > - (selectedValue), disabled), )} > + {isClearEnabled && selectedValue ? ( ) : null} ((props, ref leaveFrom="opacity-100 translate-y-0" leaveTo="opacity-0 -translate-y-4" > - {({ close }) => ( @@ -178,7 +152,7 @@ const DatePicker = React.forwardRef((props, ref enableYearNavigation={enableYearNavigation} /> )} - + ); @@ -186,4 +160,4 @@ const DatePicker = React.forwardRef((props, ref DatePicker.displayName = "DatePicker"; -export default DatePicker; +export { DatePicker, type DatePickerProps, type DatePickerValue, type Locale }; diff --git a/src/components/input-elements/DatePicker/datePickerUtils.tsx b/src/components/input-elements/DatePicker/datePickerUtils.tsx deleted file mode 100644 index 3b38a4d90..000000000 --- a/src/components/input-elements/DatePicker/datePickerUtils.tsx +++ /dev/null @@ -1,3 +0,0 @@ -import { makeClassName } from "lib"; - -export const makeDatePickerClassName = makeClassName("DatePicker"); diff --git a/src/components/input-elements/DatePicker/index.ts b/src/components/input-elements/DatePicker/index.ts index 87d6c1b35..0ec999078 100644 --- a/src/components/input-elements/DatePicker/index.ts +++ b/src/components/input-elements/DatePicker/index.ts @@ -1,2 +1,2 @@ -export { default as DatePicker } from "./DatePicker"; +export { DatePicker } from "./DatePicker"; export type { DatePickerProps, DatePickerValue } from "./DatePicker"; diff --git a/src/components/input-elements/DateRangePicker/DateRangePicker.tsx b/src/components/input-elements/DateRangePicker/DateRangePicker.tsx index faebe0b33..9b608fd4d 100644 --- a/src/components/input-elements/DateRangePicker/DateRangePicker.tsx +++ b/src/components/input-elements/DateRangePicker/DateRangePicker.tsx @@ -1,10 +1,9 @@ "use client"; -import { Listbox, Popover, Transition } from "@headlessui/react"; import { CalendarIcon, XCircleIcon } from "assets"; import { startOfMonth, startOfToday } from "date-fns"; import { tremorTwMerge } from "lib"; -import React, { ReactElement, useMemo, useState } from "react"; +import React, { useMemo, useState } from "react"; import { DateRange, DayPickerRangeProps } from "react-day-picker"; import { constructValueToNameMapping, @@ -15,11 +14,19 @@ import { import { defaultOptions, formatSelectedDates, - makeDateRangePickerClassName, parseEndDate, parseStartDate, } from "./dateRangePickerUtils"; +import { + Listbox, + ListboxButton, + ListboxOptions, + Popover, + PopoverButton, + PopoverPanel, + Transition, +} from "@headlessui/react"; import { Calendar } from "components/input-elements/Calendar"; import { DateRangePickerItemProps } from "components/input-elements/DateRangePicker/DateRangePickerItem"; import { SelectItem } from "components/input-elements/Select"; @@ -29,11 +36,11 @@ import { Color } from "../../../lib/inputTypes"; const TODAY = startOfToday(); -export type Locale = typeof enUS; +type Locale = typeof enUS; -export type DateRangePickerValue = { from?: Date; to?: Date; selectValue?: string }; +type DateRangePickerValue = { from?: Date; to?: Date; selectValue?: string }; -export interface DateRangePickerProps +interface DateRangePickerProps extends Omit, "value" | "defaultValue"> { value?: DateRangePickerValue; defaultValue?: DateRangePickerValue; @@ -94,16 +101,15 @@ const DateRangePicker = React.forwardRef(( >(); if (children) { - React.Children.forEach( - children as ReactElement[], - (child: React.ReactElement) => { + React.Children.forEach(children, (child) => { + if (React.isValidElement(child)) { selectValues.set(child.props.value, { text: (getNodeText(child) ?? child.props.value) as string, from: child.props.from, to: child.props.to, }); - }, - ); + } + }); } else { defaultOptions.forEach((option) => { selectValues.set(option.value, { @@ -162,7 +168,7 @@ const DateRangePicker = React.forwardRef((
(( className={tremorTwMerge( "w-full", enableSelect ? "rounded-l-tremor-default" : "rounded-tremor-default", - isCalendarButtonFocused && - "ring-2 ring-tremor-brand-muted dark:ring-dark-tremor-brand-muted z-10", + isCalendarButtonFocused && "ring-tremor-brand-muted z-10 ring-2", )} >
- setIsCalendarButtonFocused(true)} onBlur={() => setIsCalendarButtonFocused(false)} disabled={disabled} className={tremorTwMerge( - // common - "w-full outline-none text-left whitespace-nowrap truncate focus:ring-2 transition duration-100 rounded-l-tremor-default flex flex-nowrap border pl-3 py-2", - // light - "rounded-l-tremor-default border-tremor-border text-tremor-content-emphasis focus:border-tremor-brand-subtle focus:ring-tremor-brand-muted", - // dark - "dark:border-dark-tremor-border dark:text-dark-tremor-content-emphasis dark:focus:border-dark-tremor-brand-subtle dark:focus:ring-dark-tremor-brand-muted", + "rounded-l-tremor-default border-tremor-border-default text-tremor-content-emphasis focus:border-tremor-brand-subtle focus:ring-tremor-brand-muted flex w-full flex-nowrap truncate border py-2 pl-3 text-left whitespace-nowrap transition duration-100 outline-none focus:ring-2", enableSelect ? "rounded-l-tremor-default" : "rounded-tremor-default", isClearEnabled ? "pr-8" : "pr-4", getSelectButtonColors(hasValue(selectedStartDate || selectedEndDate), disabled), )} > + {isClearEnabled && selectedStartDate ? ( ) : null}
(( leaveFrom="opacity-100 translate-y-0" leaveTo="opacity-0 -translate-y-4" > - @@ -270,26 +250,25 @@ const DateRangePicker = React.forwardRef(( enableYearNavigation={enableYearNavigation} classNames={{ day_range_middle: tremorTwMerge( - "!rounded-none aria-selected:!bg-tremor-background-subtle aria-selected:dark:!bg-dark-tremor-background-subtle aria-selected:!text-tremor-content aria-selected:dark:!bg-dark-tremor-background-subtle", + "aria-selected:bg-tremor-background-subtle! aria-selected:text-tremor-content-default! rounded-none!", ), day_range_start: - "rounded-r-none rounded-l-tremor-small aria-selected:text-tremor-brand-inverted dark:aria-selected:text-dark-tremor-brand-inverted", + "rounded-r-none rounded-l-tremor-small aria-selected:text-tremor-brand-inverted", day_range_end: - "rounded-l-none rounded-r-tremor-small aria-selected:text-tremor-brand-inverted dark:aria-selected:text-dark-tremor-brand-inverted", + "rounded-l-none rounded-r-tremor-small aria-selected:text-tremor-brand-inverted", }} weekStartsOn={weekStartsOn} {...props} /> - + {enableSelect && ( (( > {({ value }) => ( <> - setIsSelectButtonFocused(true)} onBlur={() => setIsSelectButtonFocused(false)} className={tremorTwMerge( - // common - "w-full outline-none text-left whitespace-nowrap truncate rounded-r-tremor-default transition duration-100 border px-4 py-2", - // light - "border-tremor-border text-tremor-content-emphasis focus:border-tremor-brand-subtle", - // dark - "dark:border-dark-tremor-border dark:text-dark-tremor-content-emphasis dark:focus:border-dark-tremor-brand-subtle", + "rounded-r-tremor-default border-tremor-border-default text-tremor-content-emphasis focus:border-tremor-brand-subtle w-full truncate border px-4 py-2 text-left whitespace-nowrap transition duration-100 outline-none", getSelectButtonColors(hasValue(value), disabled), )} > {value ? (valueToNameMapping.get(value) ?? selectPlaceholder) : selectPlaceholder} - + (( leaveFrom="opacity-100 translate-y-0" leaveTo="opacity-0 -translate-y-4" > - {children ?? @@ -337,7 +306,7 @@ const DateRangePicker = React.forwardRef(( {option.text} ))} - + )} @@ -349,4 +318,4 @@ const DateRangePicker = React.forwardRef(( DateRangePicker.displayName = "DateRangePicker"; -export default DateRangePicker; +export { DateRangePicker, type DateRangePickerProps, type DateRangePickerValue, type Locale }; diff --git a/src/components/input-elements/DateRangePicker/DateRangePickerItem.tsx b/src/components/input-elements/DateRangePicker/DateRangePickerItem.tsx index 1826b8ecb..c634c1dd5 100644 --- a/src/components/input-elements/DateRangePicker/DateRangePickerItem.tsx +++ b/src/components/input-elements/DateRangePicker/DateRangePickerItem.tsx @@ -3,13 +3,13 @@ import React from "react"; import { SelectItem } from "../Select"; -export interface DateRangePickerItemProps extends React.HTMLAttributes { +export interface DateRangePickerItemProps extends React.HTMLAttributes { value: string; from: Date; to?: Date; } -const DateRangePickerItem = React.forwardRef( +const DateRangePickerItem = React.forwardRef( (props, ref) => { const { value, className, children, ...other } = props; @@ -23,4 +23,4 @@ const DateRangePickerItem = React.forwardRef>; -export const makeDateRangePickerClassName = makeClassName("DateRangePicker"); - export const parseStartDate = ( startDate: Date | undefined, minDate: Date | undefined, diff --git a/src/components/input-elements/DateRangePicker/index.ts b/src/components/input-elements/DateRangePicker/index.ts index 331559f4c..1d8de4fae 100644 --- a/src/components/input-elements/DateRangePicker/index.ts +++ b/src/components/input-elements/DateRangePicker/index.ts @@ -1,4 +1,4 @@ -export { default as DateRangePicker } from "./DateRangePicker"; +export { DateRangePicker } from "./DateRangePicker"; export type { DateRangePickerProps, DateRangePickerValue } from "./DateRangePicker"; -export { default as DateRangePickerItem } from "./DateRangePickerItem"; +export { DateRangePickerItem } from "./DateRangePickerItem"; export type { DateRangePickerItemProps } from "./DateRangePickerItem"; diff --git a/src/components/input-elements/MultiSelect/MultiSelect.tsx b/src/components/input-elements/MultiSelect/MultiSelect.tsx index 28b7f66c2..4a042c3ef 100644 --- a/src/components/input-elements/MultiSelect/MultiSelect.tsx +++ b/src/components/input-elements/MultiSelect/MultiSelect.tsx @@ -1,16 +1,14 @@ "use client"; -import React, { isValidElement, useMemo, useRef, useState } from "react"; -import { SelectedValueContext } from "contexts"; -import { useInternalState } from "hooks"; +import { Listbox, ListboxButton, ListboxOptions, Transition } from "@headlessui/react"; import { ArrowDownHeadIcon, SearchIcon, XCircleIcon } from "assets"; -import { Listbox, Transition } from "@headlessui/react"; import XIcon from "assets/XIcon"; -import { makeClassName, tremorTwMerge } from "lib"; +import { SelectedValueContext } from "contexts"; +import { useInternalState } from "hooks"; +import { tremorTwMerge } from "lib"; +import React, { isValidElement, useMemo, useRef, useState } from "react"; import { getFilteredOptions, getSelectButtonColors } from "../selectUtils"; -const makeMultiSelectClassName = makeClassName("MultiSelect"); - -export interface MultiSelectProps extends React.HTMLAttributes { +interface MultiSelectProps extends React.HTMLAttributes { defaultValue?: string[]; name?: string; value?: string[]; @@ -77,18 +75,12 @@ const MultiSelect = React.forwardRef((props, }; return ( -
+
- {children ?? value} - + {children ?? value} + ); }); MultiSelectItem.displayName = "MultiSelectItem"; -export default MultiSelectItem; +export { MultiSelectItem, type MultiSelectItemProps }; diff --git a/src/components/input-elements/MultiSelect/index.ts b/src/components/input-elements/MultiSelect/index.ts index e4ea57b7f..08cfd8cad 100644 --- a/src/components/input-elements/MultiSelect/index.ts +++ b/src/components/input-elements/MultiSelect/index.ts @@ -1,4 +1,4 @@ -export { default as MultiSelect } from "./MultiSelect"; +export { MultiSelect } from "./MultiSelect"; export type { MultiSelectProps } from "./MultiSelect"; -export { default as MultiSelectItem } from "./MultiSelectItem"; +export { MultiSelectItem } from "./MultiSelectItem"; export type { MultiSelectItemProps } from "./MultiSelectItem"; diff --git a/src/components/input-elements/NumberInput/NumberInput.tsx b/src/components/input-elements/NumberInput/NumberInput.tsx index d56e3c10e..113f9d552 100644 --- a/src/components/input-elements/NumberInput/NumberInput.tsx +++ b/src/components/input-elements/NumberInput/NumberInput.tsx @@ -1,10 +1,10 @@ "use client"; import { MinusIcon, PlusIcon } from "assets"; -import { makeClassName, mergeRefs, tremorTwMerge } from "lib"; +import { mergeRefs, tremorTwMerge } from "lib"; import React, { useRef } from "react"; import BaseInput, { BaseInputProps } from "../BaseInput"; -export interface NumberInputProps +interface NumberInputProps extends Omit { step?: string | number; enableStepper?: boolean; @@ -12,11 +12,9 @@ export interface NumberInputProps onValueChange?: (value: number) => void; } -const baseArrowClasses = - "flex mx-auto text-tremor-content-subtle dark:text-dark-tremor-content-subtle"; +const baseArrowClasses = "flex mx-auto text-tremor-content-subtle"; -const enabledArrowClasses = - "cursor-pointer hover:text-tremor-content dark:hover:text-dark-tremor-content"; +const enabledArrowClasses = "cursor-pointer hover:text-tremor-content-default"; const NumberInput = React.forwardRef((props, ref) => { const { onSubmit, enableStepper = true, disabled, onValueChange, onChange, ...other } = props; @@ -44,7 +42,6 @@ const NumberInput = React.forwardRef((props, type="number" ref={mergeRefs([inputRef, ref])} disabled={disabled} - makeInputClassName={makeClassName("NumberInput")} onKeyDown={(e) => { if (e.key === "Enter" && !e.ctrlKey && !e.altKey && !e.shiftKey) { const value = inputRef.current?.value; @@ -91,14 +88,14 @@ const NumberInput = React.forwardRef((props, className={tremorTwMerge( !disabled && enabledArrowClasses, baseArrowClasses, - "group py-[10px] px-2.5 border-l border-tremor-border dark:border-dark-tremor-border", + "group border-tremor-border-default border-l px-2.5 py-[10px]", )} >
((props, className={tremorTwMerge( !disabled && enabledArrowClasses, baseArrowClasses, - "group py-[10px] px-2.5 border-l border-tremor-border dark:border-dark-tremor-border", + "group border-tremor-border-default border-l px-2.5 py-[10px]", )} >
@@ -138,4 +135,4 @@ const NumberInput = React.forwardRef((props, NumberInput.displayName = "NumberInput"; -export default NumberInput; +export { NumberInput, type NumberInputProps }; diff --git a/src/components/input-elements/NumberInput/index.ts b/src/components/input-elements/NumberInput/index.ts index cebb2e9a3..ca4f5b45d 100644 --- a/src/components/input-elements/NumberInput/index.ts +++ b/src/components/input-elements/NumberInput/index.ts @@ -1,2 +1,2 @@ -export { default as NumberInput } from "./NumberInput"; +export { NumberInput } from "./NumberInput"; export type { NumberInputProps } from "./NumberInput"; diff --git a/src/components/input-elements/SearchSelect/SearchSelect.tsx b/src/components/input-elements/SearchSelect/SearchSelect.tsx index faca05bf8..59f6dda0c 100644 --- a/src/components/input-elements/SearchSelect/SearchSelect.tsx +++ b/src/components/input-elements/SearchSelect/SearchSelect.tsx @@ -1,9 +1,16 @@ "use client"; -import React, { isValidElement, useMemo, useRef } from "react"; import { useInternalState } from "hooks"; -import { Combobox, Transition } from "@headlessui/react"; +import React, { isValidElement, useMemo, useRef } from "react"; + +import { + Combobox, + ComboboxButton, + ComboboxInput, + ComboboxOptions, + Transition, +} from "@headlessui/react"; import { ArrowDownHeadIcon, XCircleIcon } from "assets"; -import { makeClassName, tremorTwMerge } from "lib"; +import { tremorTwMerge } from "lib"; import { constructValueToNameMapping, getFilteredOptions, @@ -11,9 +18,7 @@ import { hasValue, } from "../selectUtils"; -const makeSearchSelectClassName = makeClassName("SearchSelect"); - -export interface SearchSelectProps extends React.HTMLAttributes { +interface SearchSelectProps extends React.HTMLAttributes { defaultValue?: string; name?: string; searchValue?: string; @@ -31,8 +36,6 @@ export interface SearchSelectProps extends React.HTMLAttributes((props, ref) => { const { defaultValue = "", @@ -80,18 +83,12 @@ const SearchSelect = React.forwardRef((prop }; return ( -
+
{ e.preventDefault(); @@ -114,15 +106,10 @@ const Select = React.forwardRef((props, ref) => { > {({ value }) => ( <> - ((props, ref) => { {Icon && ( )} - + {value ? (valueToNameMapping.get(value) ?? placeholder) : placeholder} - + {enableClear && selectedValue ? ( ) : null} ((props, ref) => { leaveFrom="opacity-100 translate-y-0" leaveTo="opacity-0 -translate-y-4" > - {children} - + )}
{error && errorMessage ? ( -

+

{errorMessage}

) : null} @@ -224,4 +182,4 @@ const Select = React.forwardRef((props, ref) => { Select.displayName = "Select"; -export default Select; +export { Select, type SelectProps }; diff --git a/src/components/input-elements/Select/SelectItem.tsx b/src/components/input-elements/Select/SelectItem.tsx index a331129dd..7dbf213b4 100644 --- a/src/components/input-elements/Select/SelectItem.tsx +++ b/src/components/input-elements/Select/SelectItem.tsx @@ -1,30 +1,22 @@ "use client"; +import { ListboxOption } from "@headlessui/react"; +import { tremorTwMerge } from "lib"; import React from "react"; -import { Listbox } from "@headlessui/react"; -import { makeClassName, tremorTwMerge } from "lib"; -const makeSelectItemClassName = makeClassName("SelectItem"); - -export interface SelectItemProps extends React.HTMLAttributes { +interface SelectItemProps extends React.HTMLAttributes { value: string; icon?: React.ElementType; } -const SelectItem = React.forwardRef((props, ref) => { +const SelectItem = React.forwardRef((props, ref) => { const { value, icon, className, children, ...other } = props; const Icon = icon; return ( - ((props, ref) {...other} > {Icon && ( - + )} - {children ?? value} - + {children ?? value} + ); }); SelectItem.displayName = "SelectItem"; -export default SelectItem; +export { SelectItem, type SelectItemProps }; diff --git a/src/components/input-elements/Select/index.ts b/src/components/input-elements/Select/index.ts index 8c0e47459..cadc38cee 100644 --- a/src/components/input-elements/Select/index.ts +++ b/src/components/input-elements/Select/index.ts @@ -1,4 +1,4 @@ -export { default as Select } from "./Select"; +export { Select } from "./Select"; export type { SelectProps } from "./Select"; -export { default as SelectItem } from "./SelectItem"; +export { SelectItem } from "./SelectItem"; export type { SelectItemProps } from "./SelectItem"; diff --git a/src/components/input-elements/Switch/Switch.tsx b/src/components/input-elements/Switch/Switch.tsx index fc69aae56..2923c40be 100644 --- a/src/components/input-elements/Switch/Switch.tsx +++ b/src/components/input-elements/Switch/Switch.tsx @@ -1,32 +1,12 @@ "use client"; import { Switch as HeadlessSwitch } from "@headlessui/react"; import { useInternalState } from "hooks"; -import { - Color, - makeClassName, - tremorTwMerge, - colorPalette, - getColorClassNames, - mergeRefs, -} from "lib"; -import Tooltip, { useTooltip } from "components/util-elements/Tooltip/Tooltip"; +import { Color, tremorTwMerge } from "lib"; import React, { useState } from "react"; +import { tv } from "tailwind-variants"; -const getSwitchColors = (color?: Color) => { - return { - bgColor: color - ? getColorClassNames(color, colorPalette.background).bgColor - : "bg-tremor-brand dark:bg-dark-tremor-brand", - ringColor: color - ? getColorClassNames(color, colorPalette.ring).ringColor - : "ring-tremor-brand-muted dark:ring-dark-tremor-brand-muted", - }; -}; - -const makeSwitchClassName = makeClassName("Switch"); - -export interface SwitchProps extends Omit, "onChange"> { +interface SwitchProps extends Omit, "onChange"> { checked?: boolean; defaultChecked?: boolean; onChange?: (value: boolean) => void; @@ -37,111 +17,122 @@ export interface SwitchProps extends Omit, disabled?: boolean; required?: boolean; id?: string; - tooltip?: string; } -const Switch = React.forwardRef((props, ref) => { - const { - checked, - defaultChecked = false, - onChange, - color, - name, - error, - errorMessage, - disabled, - required, - tooltip, - id, - ...other - } = props; - const switchColorStyles = getSwitchColors(color); +const switchColors: { [color in Color]: string } = { + brand: "bg-tremor-brand-default", + slate: "bg-slate-500", + gray: "bg-gray-500", + zinc: "bg-zinc-500", + neutral: "bg-neutral-500", + stone: "bg-stone-500", + red: "bg-red-500", + orange: "bg-orange-500", + amber: "bg-amber-500", + yellow: "bg-yellow-500", + lime: "bg-lime-500", + green: "bg-green-500", + emerald: "bg-emerald-500", + teal: "bg-teal-500", + cyan: "bg-cyan-500", + sky: "bg-sky-500", + blue: "bg-blue-500", + indigo: "bg-indigo-500", + violet: "bg-violet-500", + purple: "bg-purple-500", + fuchsia: "bg-fuchsia-500", + pink: "bg-pink-500", + rose: "bg-rose-500", +}; + +const badgeStyles = tv({ + variants: { + color: { ...switchColors }, + }, + defaultVariants: { + color: "brand", + }, +}); - const [isChecked, setIsChecked] = useInternalState(defaultChecked, checked); - const [isFocused, setIsFocused] = useState(false); - const delay = 300; - const { tooltipProps, getReferenceProps } = useTooltip(delay); +const Switch = React.forwardRef( + ( + { + checked, + defaultChecked = false, + onChange, + color = "brand", + name, + error, + errorMessage, + disabled, + required, + id, + ...other + }, + ref, + ) => { + const [isChecked, setIsChecked] = useInternalState(defaultChecked, checked); + const [isFocused, setIsFocused] = useState(false); - return ( -
- -
- { - e.preventDefault(); - }} - /> - { - setIsChecked(e); - onChange?.(e); - }} - disabled={disabled} - className={tremorTwMerge( - makeSwitchClassName("switch"), - "w-10 h-5 group relative inline-flex shrink-0 cursor-pointer items-center justify-center rounded-tremor-full", - "focus:outline-none", - disabled ? "cursor-not-allowed" : "", - )} - onFocus={() => setIsFocused(true)} - onBlur={() => setIsFocused(false)} - id={id} - > - - Switch {isChecked ? "on" : "off"} - -
- {error && errorMessage ? ( -

- {errorMessage} -

- ) : null} -
- ); -}); + ); + }, +); Switch.displayName = "Switch"; -export default Switch; +export { Switch, type SwitchProps }; diff --git a/src/components/input-elements/Switch/index.ts b/src/components/input-elements/Switch/index.ts index eaf14f132..ffb3ce237 100644 --- a/src/components/input-elements/Switch/index.ts +++ b/src/components/input-elements/Switch/index.ts @@ -1,2 +1,2 @@ -export { default as Switch } from "./Switch"; +export { Switch } from "./Switch"; export type { SwitchProps } from "./Switch"; diff --git a/src/components/input-elements/Tabs/Tab.tsx b/src/components/input-elements/Tabs/Tab.tsx index 30b1f3d2e..5485e630b 100644 --- a/src/components/input-elements/Tabs/Tab.tsx +++ b/src/components/input-elements/Tabs/Tab.tsx @@ -1,85 +1,224 @@ "use client"; + import { Tab as HeadlessTab } from "@headlessui/react"; -import { colorPalette, getColorClassNames, tremorTwMerge, makeClassName } from "lib"; +import { TabVariantContext } from "components/input-elements/Tabs/TabList"; +import { BaseColorContext } from "contexts"; +import { tremorTwMerge } from "lib"; import React, { useContext } from "react"; +import { tv, VariantProps } from "tailwind-variants"; -import { TabVariant, TabVariantContext } from "components/input-elements/Tabs/TabList"; -import { BaseColorContext } from "contexts"; -import { Color } from "../../../lib/inputTypes"; +const tabColors = { + brand: { + line: "hover:border-tremor-content-default hover:text-tremor-content-emphasis text-tremor-content-default data-selected:border-tremor-brand-default data-selected:text-tremor-brand-default", + solid: + "text-tremor-content-default data-selected:text-tremor-brand-default hover:text-tremor-content-emphasis", + }, + slate: { + line: "hover:border-slate-600 hover:text-slate-900 text-slate-600 data-selected:border-slate-700 data-selected:text-slate-900 dark:hover:border-slate-400 dark:hover:text-slate-200 dark:text-slate-400 dark:data-selected:border-slate-400 dark:data-selected:text-slate-200", + solid: + "text-slate-600 data-selected:text-slate-900 hover:text-slate-900 dark:text-slate-400 dark:data-selected:text-slate-200 dark:hover:text-slate-200", + }, + gray: { + line: "hover:border-gray-600 hover:text-gray-900 text-gray-600 data-selected:border-gray-700 data-selected:text-gray-900 dark:hover:border-gray-400 dark:hover:text-gray-200 dark:text-gray-400 dark:data-selected:border-gray-400 dark:data-selected:text-gray-200", + solid: + "text-gray-600 data-selected:text-gray-900 hover:text-gray-900 dark:text-gray-400 dark:data-selected:text-gray-200 dark:hover:text-gray-200", + }, + zinc: { + line: "hover:border-zinc-600 hover:text-zinc-900 text-zinc-600 data-selected:border-zinc-700 data-selected:text-zinc-900 dark:hover:border-zinc-400 dark:hover:text-zinc-200 dark:text-zinc-400 dark:data-selected:border-zinc-400 dark:data-selected:text-zinc-200", + solid: + "text-zinc-600 data-selected:text-zinc-900 hover:text-zinc-900 dark:text-zinc-400 dark:data-selected:text-zinc-200 dark:hover:text-zinc-200", + }, + neutral: { + line: "hover:border-neutral-600 hover:text-neutral-900 text-neutral-600 data-selected:border-neutral-700 data-selected:text-neutral-900 dark:hover:border-neutral-400 dark:hover:text-neutral-200 dark:text-neutral-400 dark:data-selected:border-neutral-400 dark:data-selected:text-neutral-200", + solid: + "text-neutral-600 data-selected:text-neutral-900 hover:text-neutral-900 dark:text-neutral-400 dark:data-selected:text-neutral-200 dark:hover:text-neutral-200", + }, + stone: { + line: "hover:border-stone-600 hover:text-stone-900 text-stone-600 data-selected:border-stone-700 data-selected:text-stone-900 dark:hover:border-stone-400 dark:hover:text-stone-200 dark:text-stone-400 dark:data-selected:border-stone-400 dark:data-selected:text-stone-200", + solid: + "text-stone-600 data-selected:text-stone-900 hover:text-stone-900 dark:text-stone-400 dark:data-selected:text-stone-200 dark:hover:text-stone-200", + }, + red: { + line: "hover:border-red-600 hover:text-red-700 text-red-600 data-selected:border-red-700 data-selected:text-red-700 dark:hover:border-red-400 dark:hover:text-red-400 dark:text-red-400 dark:data-selected:border-red-400 dark:data-selected:text-red-400", + solid: + "text-red-600 data-selected:text-red-700 hover:text-red-700 dark:text-red-400 dark:data-selected:text-red-400 dark:hover:text-red-400", + }, + orange: { + line: "hover:border-orange-600 hover:text-orange-700 text-orange-600 data-selected:border-orange-700 data-selected:text-orange-700 dark:hover:border-orange-400 dark:hover:text-orange-400 dark:text-orange-400 dark:data-selected:border-orange-400 dark:data-selected:text-orange-400", + solid: + "text-orange-600 data-selected:text-orange-700 hover:text-orange-700 dark:text-orange-400 dark:data-selected:text-orange-400 dark:hover:text-orange-400", + }, + amber: { + line: "hover:border-amber-600 hover:text-amber-700 text-amber-600 data-selected:border-amber-700 data-selected:text-amber-700 dark:hover:border-amber-400 dark:hover:text-amber-400 dark:text-amber-400 dark:data-selected:border-amber-400 dark:data-selected:text-amber-400", + solid: + "text-amber-600 data-selected:text-amber-700 hover:text-amber-700 dark:text-amber-400 dark:data-selected:text-amber-400 dark:hover:text-amber-400", + }, + yellow: { + line: "hover:border-yellow-600 hover:text-yellow-700 text-yellow-600 data-selected:border-yellow-700 data-selected:text-yellow-700 dark:hover:border-yellow-400 dark:hover:text-yellow-400 dark:text-yellow-400 dark:data-selected:border-yellow-400 dark:data-selected:text-yellow-400", + solid: + "text-yellow-600 data-selected:text-yellow-700 hover:text-yellow-700 dark:text-yellow-400 dark:data-selected:text-yellow-400 dark:hover:text-yellow-400", + }, + lime: { + line: "hover:border-lime-600 hover:text-lime-700 text-lime-600 data-selected:border-lime-700 data-selected:text-lime-700 dark:hover:border-lime-400 dark:hover:text-lime-400 dark:text-lime-400 dark:data-selected:border-lime-400 dark:data-selected:text-lime-400", + solid: + "text-lime-600 data-selected:text-lime-700 hover:text-lime-700 dark:text-lime-400 dark:data-selected:text-lime-400 dark:hover:text-lime-400", + }, + green: { + line: "hover:border-green-600 hover:text-green-700 text-green-600 data-selected:border-green-700 data-selected:text-green-700 dark:hover:border-green-400 dark:hover:text-green-400 dark:text-green-400 dark:data-selected:border-green-400 dark:data-selected:text-green-400", + solid: + "text-green-600 data-selected:text-green-700 hover:text-green-700 dark:text-green-400 dark:data-selected:text-green-400 dark:hover:text-green-400", + }, + emerald: { + line: "hover:border-emerald-600 hover:text-emerald-700 text-emerald-600 data-selected:border-emerald-700 data-selected:text-emerald-700 dark:hover:border-emerald-400 dark:hover:text-emerald-400 dark:text-emerald-400 dark:data-selected:border-emerald-400 dark:data-selected:text-emerald-400", + solid: + "text-emerald-600 data-selected:text-emerald-700 hover:text-emerald-700 dark:text-emerald-400 dark:data-selected:text-emerald-400 dark:hover:text-emerald-400", + }, + teal: { + line: "hover:border-teal-600 hover:text-teal-700 text-teal-600 data-selected:border-teal-700 data-selected:text-teal-700 dark:hover:border-teal-400 dark:hover:text-teal-400 dark:text-teal-400 dark:data-selected:border-teal-400 dark:data-selected:text-teal-400", + solid: + "text-teal-600 data-selected:text-teal-700 hover:text-teal-700 dark:text-teal-400 dark:data-selected:text-teal-400 dark:hover:text-teal-400", + }, + cyan: { + line: "hover:border-cyan-600 hover:text-cyan-700 text-cyan-600 data-selected:border-cyan-700 data-selected:text-cyan-700 dark:hover:border-cyan-400 dark:hover:text-cyan-400 dark:text-cyan-400 dark:data-selected:border-cyan-400 dark:data-selected:text-cyan-400", + solid: + "text-cyan-600 data-selected:text-cyan-700 hover:text-cyan-700 dark:text-cyan-400 dark:data-selected:text-cyan-400 dark:hover:text-cyan-400", + }, + sky: { + line: "hover:border-sky-600 hover:text-sky-700 text-sky-600 data-selected:border-sky-700 data-selected:text-sky-700 dark:hover:border-sky-400 dark:hover:text-sky-400 dark:text-sky-400 dark:data-selected:border-sky-400 dark:data-selected:text-sky-400", + solid: + "text-sky-600 data-selected:text-sky-700 hover:text-sky-700 dark:text-sky-400 dark:data-selected:text-sky-400 dark:hover:text-sky-400", + }, + blue: { + line: "hover:border-blue-600 hover:text-blue-700 text-blue-600 data-selected:border-blue-700 data-selected:text-blue-700 dark:hover:border-blue-400 dark:hover:text-blue-400 dark:text-blue-400 dark:data-selected:border-blue-400 dark:data-selected:text-blue-400", + solid: + "text-blue-600 data-selected:text-blue-700 hover:text-blue-700 dark:text-blue-400 dark:data-selected:text-blue-400 dark:hover:text-blue-400", + }, + indigo: { + line: "hover:border-indigo-600 hover:text-indigo-700 text-indigo-600 data-selected:border-indigo-700 data-selected:text-indigo-700 dark:hover:border-indigo-400 dark:hover:text-indigo-400 dark:text-indigo-400 dark:data-selected:border-indigo-400 dark:data-selected:text-indigo-400", + solid: + "text-indigo-600 data-selected:text-indigo-700 hover:text-indigo-700 dark:text-indigo-400 dark:data-selected:text-indigo-400 dark:hover:text-indigo-400", + }, + violet: { + line: "hover:border-violet-600 hover:text-violet-700 text-violet-600 data-selected:border-violet-700 data-selected:text-violet-700 dark:hover:border-violet-400 dark:hover:text-violet-400 dark:text-violet-400 dark:data-selected:border-violet-400 dark:data-selected:text-violet-400", + solid: + "text-violet-600 data-selected:text-violet-700 hover:text-violet-700 dark:text-violet-400 dark:data-selected:text-violet-400 dark:hover:text-violet-400", + }, + purple: { + line: "hover:border-purple-600 hover:text-purple-700 text-purple-600 data-selected:border-purple-700 data-selected:text-purple-700 dark:hover:border-purple-400 dark:hover:text-purple-400 dark:text-purple-400 dark:data-selected:border-purple-400 dark:data-selected:text-purple-400", + solid: + "text-purple-600 data-selected:text-purple-700 hover:text-purple-700 dark:text-purple-400 dark:data-selected:text-purple-400 dark:hover:text-purple-400", + }, + fuchsia: { + line: "hover:border-fuchsia-600 hover:text-fuchsia-700 text-fuchsia-600 data-selected:border-fuchsia-700 data-selected:text-fuchsia-700 dark:hover:border-fuchsia-400 dark:hover:text-fuchsia-400 dark:text-fuchsia-400 dark:data-selected:border-fuchsia-400 dark:data-selected:text-fuchsia-400", + solid: + "text-fuchsia-600 data-selected:text-fuchsia-700 hover:text-fuchsia-700 dark:text-fuchsia-400 dark:data-selected:text-fuchsia-400 dark:hover:text-fuchsia-400", + }, + pink: { + line: "hover:border-pink-600 hover:text-pink-700 text-pink-600 data-selected:border-pink-700 data-selected:text-pink-700 dark:hover:border-pink-400 dark:hover:text-pink-400 dark:text-pink-400 dark:data-selected:border-pink-400 dark:data-selected:text-pink-400", + solid: + "text-pink-600 data-selected:text-pink-700 hover:text-pink-700 dark:text-pink-400 dark:data-selected:text-pink-400 dark:hover:text-pink-400", + }, + rose: { + line: "hover:border-rose-600 hover:text-rose-700 text-rose-600 data-selected:border-rose-700 data-selected:text-rose-700 dark:hover:border-rose-400 dark:hover:text-rose-400 dark:text-rose-400 dark:data-selected:border-rose-400 dark:data-selected:text-rose-400", + solid: + "text-rose-600 data-selected:text-rose-700 hover:text-rose-700 dark:text-rose-400 dark:data-selected:text-rose-400 dark:hover:text-rose-400", + }, +} as const; -const makeTabClassName = makeClassName("Tab"); +type ColorType = keyof typeof tabColors; +type VariantType = keyof (typeof tabColors)[ColorType]; -function getVariantStyles(tabVariant: TabVariant, color?: Color) { - switch (tabVariant) { - case "line": - return tremorTwMerge( - // common - "ui-selected:border-b-2 hover:border-b-2 border-transparent transition duration-100 -mb-px px-2 py-2", - // light - "hover:border-tremor-content hover:text-tremor-content-emphasis text-tremor-content", - // dark - "ui-not-selected:dark:hover:border-dark-tremor-content-emphasis ui-not-selected:dark:hover:text-dark-tremor-content-emphasis ui-not-selected:dark:text-dark-tremor-content", - // brand - color - ? getColorClassNames(color, colorPalette.border).selectBorderColor - : [ - "ui-selected:border-tremor-brand ui-selected:text-tremor-brand", - "ui-selected:dark:border-dark-tremor-brand ui-selected:dark:text-dark-tremor-brand", - ], - ); - case "solid": - return tremorTwMerge( - // common - "border-transparent border rounded-tremor-small px-2.5 py-1", - // light - "ui-selected:border-tremor-border ui-selected:bg-tremor-background ui-selected:shadow-tremor-input ui-not-selected:hover:text-tremor-content-emphasis ui-selected:text-tremor-brand ui-not-selected:text-tremor-content", - // dark - "dark:ui-selected:border-dark-tremor-border dark:ui-selected:bg-dark-tremor-background dark:ui-selected:shadow-dark-tremor-input dark:ui-not-selected:hover:text-dark-tremor-content-emphasis dark:ui-selected:text-dark-tremor-brand dark:ui-not-selected:text-dark-tremor-content", - // brand - color - ? getColorClassNames(color, colorPalette.text).selectTextColor - : "text-tremor-content dark:text-dark-tremor-content", - ); - } -} +const tab = tv({ + base: "!text-tremor-default flex truncate whitespace-nowrap transition duration-100 outline-none data-focus-visible:ring-3", + variants: { + variant: { + line: "-mb-px border-transparent px-2 py-2 transition duration-100 hover:border-b-2 data-selected:border-b-2", + solid: + "rounded-tremor-small border border-transparent px-2.5 py-1 data-selected:border-tremor-border-default data-selected:bg-tremor-background-default data-selected:shadow-tremor-input", + }, + color: { + brand: "", + slate: "", + gray: "", + zinc: "", + neutral: "", + stone: "", + red: "", + orange: "", + amber: "", + yellow: "", + lime: "", + green: "", + emerald: "", + teal: "", + cyan: "", + sky: "", + blue: "", + indigo: "", + violet: "", + purple: "", + fuchsia: "", + pink: "", + rose: "", + }, + }, + compoundVariants: ( + Object.entries(tabColors) as [ColorType, (typeof tabColors)[ColorType]][] + ).flatMap(([colorName, variants]) => + (Object.entries(variants) as [VariantType, string][]).map(([variantName, className]) => ({ + color: colorName, + variant: variantName, + class: className, + })), + ), + defaultVariants: { + color: "brand", + variant: "line", + }, +}); -export interface TabProps extends React.ButtonHTMLAttributes { +const icon = tv({ + base: "h-5 w-5 shrink-0", + variants: { + hasChildren: { + true: "mr-2", + false: "", + }, + }, +}); + +type TabVariants = VariantProps; + +interface TabProps extends React.ButtonHTMLAttributes { icon?: React.ElementType; + color?: TabVariants["color"]; } -const Tab = React.forwardRef((props, ref) => { - const { icon, className, children, ...other } = props; +const Tab = React.forwardRef( + ({ icon: Icon, className, children, color: colorProp, ...other }, ref) => { + const variant = useContext(TabVariantContext); + const contextColor = useContext(BaseColorContext); + const color = colorProp || contextColor || "brand"; - const variant = useContext(TabVariantContext); - const color = useContext(BaseColorContext); - const Icon = icon; - return ( - - {Icon ? ( - - ) : null} - {children ? {children} : null} - - ); -}); + return ( + + {Icon ? : null} + {children ? {children} : null} + + ); + }, +); Tab.displayName = "Tab"; -export default Tab; +export { Tab, type TabProps }; diff --git a/src/components/input-elements/Tabs/TabGroup.tsx b/src/components/input-elements/Tabs/TabGroup.tsx index d8c663ef3..b177d638c 100644 --- a/src/components/input-elements/Tabs/TabGroup.tsx +++ b/src/components/input-elements/Tabs/TabGroup.tsx @@ -1,34 +1,32 @@ "use client"; -import { Tab } from "@headlessui/react"; -import { makeClassName, tremorTwMerge } from "lib"; +import { TabGroup as HeadlessUiTabGroup } from "@headlessui/react"; +import { tremorTwMerge } from "lib"; import React from "react"; -const makeTabGroupClassName = makeClassName("TabGroup"); - -export interface TabGroupProps extends React.HTMLAttributes { +interface TabGroupProps extends React.HTMLAttributes { defaultIndex?: number; index?: number; onIndexChange?: (index: number) => void; children: React.ReactElement[] | React.ReactElement; } -const TabGroup = React.forwardRef((props, ref) => { - const { defaultIndex, index, onIndexChange, children, className, ...other } = props; - return ( - - {children} - - ); -}); +const TabGroup = React.forwardRef( + ({ defaultIndex, index, onIndexChange, children, className, ...other }, ref) => { + return ( + + {children} + + ); + }, +); TabGroup.displayName = "TabGroup"; -export default TabGroup; +export { TabGroup, type TabGroupProps }; diff --git a/src/components/input-elements/Tabs/TabList.tsx b/src/components/input-elements/Tabs/TabList.tsx index 2e2987db6..1841e67ed 100644 --- a/src/components/input-elements/Tabs/TabList.tsx +++ b/src/components/input-elements/Tabs/TabList.tsx @@ -3,61 +3,46 @@ import React, { createContext } from "react"; import { BaseColorContext } from "contexts"; -import { Tab } from "@headlessui/react"; -import { makeClassName, tremorTwMerge, Color } from "lib"; +import { TabList as HeadlessUiTabList } from "@headlessui/react"; +import { Color, tremorTwMerge } from "lib"; -const makeTabListClassName = makeClassName("TabList"); +type TabVariant = "line" | "solid"; -export type TabVariant = "line" | "solid"; - -export const TabVariantContext = createContext("line"); +const TabVariantContext = createContext("line"); const variantStyles: { [key in TabVariant]: string } = { - line: tremorTwMerge( - // common - "flex border-b space-x-4", - // light - "border-tremor-border", - // dark - "dark:border-dark-tremor-border", - ), + line: tremorTwMerge("border-tremor-border-default flex space-x-4 border-b"), solid: tremorTwMerge( - // common - "inline-flex p-0.5 rounded-tremor-default space-x-1.5", - // light - "bg-tremor-background-subtle", - // dark - "dark:bg-dark-tremor-background-subtle", + "rounded-tremor-default bg-tremor-background-subtle inline-flex space-x-1.5 p-0.5", ), }; -export interface TabListProps extends React.HTMLAttributes { +interface TabListProps extends React.HTMLAttributes { color?: Color; variant?: TabVariant; children: React.ReactElement[] | React.ReactElement; } -const TabList = React.forwardRef((props, ref) => { - const { color, variant = "line", children, className, ...other } = props; - - return ( - - - {children} - - - ); -}); +const TabList = React.forwardRef( + ({ color, variant = "line", children, className, ...other }, ref) => { + return ( + + + {children} + + + ); + }, +); TabList.displayName = "TabList"; -export default TabList; +export { TabList, TabVariantContext, type TabListProps, type TabVariant }; diff --git a/src/components/input-elements/Tabs/TabPanel.tsx b/src/components/input-elements/Tabs/TabPanel.tsx index 6cd6647c1..0d129081b 100644 --- a/src/components/input-elements/Tabs/TabPanel.tsx +++ b/src/components/input-elements/Tabs/TabPanel.tsx @@ -1,29 +1,19 @@ "use client"; import { IndexContext, SelectedValueContext } from "contexts"; -import { makeClassName, tremorTwMerge } from "lib"; +import { tremorTwMerge } from "lib"; import React, { useContext } from "react"; -const makeTabPanelClassName = makeClassName("TabPanel"); - const TabPanel = React.forwardRef>( (props, ref) => { const { children, className, ...other } = props; - const { selectedValue: selectedIndex } = useContext(SelectedValueContext); const index = useContext(IndexContext); - const isSelected = selectedIndex === index; return ( - // Not using Tab.Panel because of https://github.com/tailwindlabs/headlessui/discussions/2366.
@@ -35,4 +25,4 @@ const TabPanel = React.forwardRef>( (props, ref) => { const { children, className, ...other } = props; return ( - + {({ selectedIndex }) => ( {React.Children.map(children, (child, index) => ( @@ -24,11 +17,11 @@ const TabPanels = React.forwardRef )} - + ); }, ); TabPanels.displayName = "TabPanels"; -export default TabPanels; +export { TabPanels }; diff --git a/src/components/input-elements/Tabs/index.ts b/src/components/input-elements/Tabs/index.ts index ced74550c..e918e240c 100644 --- a/src/components/input-elements/Tabs/index.ts +++ b/src/components/input-elements/Tabs/index.ts @@ -1,8 +1,8 @@ -export { default as Tab } from "./Tab"; +export { Tab } from "./Tab"; export type { TabProps } from "./Tab"; -export { default as TabGroup } from "./TabGroup"; +export { TabGroup } from "./TabGroup"; export type { TabGroupProps } from "./TabGroup"; -export { default as TabList } from "./TabList"; +export { TabList } from "./TabList"; export type { TabListProps } from "./TabList"; -export { default as TabPanel } from "./TabPanel"; -export { default as TabPanels } from "./TabPanels"; +export { TabPanel } from "./TabPanel"; +export { TabPanels } from "./TabPanels"; diff --git a/src/components/input-elements/TextInput/TextInput.tsx b/src/components/input-elements/TextInput/TextInput.tsx index 7c95858ef..696e10f7f 100644 --- a/src/components/input-elements/TextInput/TextInput.tsx +++ b/src/components/input-elements/TextInput/TextInput.tsx @@ -1,9 +1,8 @@ "use client"; import React from "react"; -import { makeClassName } from "lib"; import BaseInput, { BaseInputProps } from "../BaseInput"; -export type TextInputProps = Omit & { +type TextInputProps = Omit & { defaultValue?: string; value?: string; onValueChange?: (value: string) => void; @@ -13,13 +12,11 @@ export type TextInputProps = Omit((props, ref) => { const { type = "text", ...other } = props; - return ; + return ; }); TextInput.displayName = "TextInput"; -export default TextInput; +export { TextInput, type TextInputProps }; diff --git a/src/components/input-elements/TextInput/index.ts b/src/components/input-elements/TextInput/index.ts index 927640751..51860debd 100644 --- a/src/components/input-elements/TextInput/index.ts +++ b/src/components/input-elements/TextInput/index.ts @@ -1,2 +1,2 @@ -export { default as TextInput } from "./TextInput"; +export { TextInput } from "./TextInput"; export type { TextInputProps } from "./TextInput"; diff --git a/src/components/input-elements/Textarea/Textarea.tsx b/src/components/input-elements/Textarea/Textarea.tsx index 140572a0d..041d7a8d5 100644 --- a/src/components/input-elements/Textarea/Textarea.tsx +++ b/src/components/input-elements/Textarea/Textarea.tsx @@ -2,10 +2,10 @@ import { getSelectButtonColors, hasValue } from "components/input-elements/selectUtils"; import { useInternalState } from "hooks"; -import { makeClassName, mergeRefs, tremorTwMerge } from "lib"; +import { mergeRefs, tremorTwMerge } from "lib"; import React, { useEffect, useRef } from "react"; -export interface TextareaProps extends React.TextareaHTMLAttributes { +interface TextareaProps extends React.TextareaHTMLAttributes { defaultValue?: string | number; value?: string | number; error?: boolean; @@ -15,8 +15,6 @@ export interface TextareaProps extends React.TextareaHTMLAttributes void; } -const makeTextareaClassName = makeClassName("Textarea"); - const Textarea = React.forwardRef((props, ref) => { const { value, @@ -54,17 +52,12 @@ const Textarea = React.forwardRef((props, re placeholder={placeholder} disabled={disabled} className={tremorTwMerge( - makeTextareaClassName("Textarea"), - // common - "w-full flex items-center outline-none rounded-tremor-default px-3 py-2 text-tremor-default focus:ring-2 transition duration-100 border", - // light - "shadow-tremor-input focus:border-tremor-brand-subtle focus:ring-tremor-brand-muted", - // dark - "dark:shadow-dark-tremor-input focus:dark:border-dark-tremor-brand-subtle focus:dark:ring-dark-tremor-brand-muted", + "rounded-tremor-default text-tremor-default shadow-tremor-input focus:border-tremor-brand-subtle focus:ring-tremor-brand-muted flex w-full items-center border px-3 py-2 transition duration-100 outline-none focus:ring-2", + getSelectButtonColors(hasSelection, disabled, error), disabled - ? "placeholder:text-tremor-content-subtle dark:placeholder:text-dark-tremor-content-subtle" - : "placeholder:text-tremor-content dark:placeholder:text-dark-tremor-content", + ? "placeholder:text-tremor-content-subtle" + : "placeholder:text-tremor-content-default", className, )} data-testid="text-area" @@ -76,14 +69,7 @@ const Textarea = React.forwardRef((props, re {...other} /> {error && errorMessage ? ( -

- {errorMessage} -

+

{errorMessage}

) : null} ); @@ -91,4 +77,4 @@ const Textarea = React.forwardRef((props, re Textarea.displayName = "Textarea"; -export default Textarea; +export { Textarea, type TextareaProps }; diff --git a/src/components/input-elements/Textarea/index.ts b/src/components/input-elements/Textarea/index.ts index 934962fa7..477ec785d 100644 --- a/src/components/input-elements/Textarea/index.ts +++ b/src/components/input-elements/Textarea/index.ts @@ -1,2 +1,2 @@ -export { default as Textarea } from "./Textarea"; +export { Textarea } from "./Textarea"; export type { TextareaProps } from "./Textarea"; diff --git a/src/components/input-elements/selectUtils.ts b/src/components/input-elements/selectUtils.ts index 6f7bfeb7a..3937e6a75 100644 --- a/src/components/input-elements/selectUtils.ts +++ b/src/components/input-elements/selectUtils.ts @@ -1,57 +1,83 @@ import { tremorTwMerge } from "lib"; import React from "react"; -export interface SelectItemProps { +import { isValidElement, JSXElementConstructor } from "react"; + +interface SelectItemProps { value: string; children?: React.ReactNode; } -export const getNodeText = (node: React.ReactElement): string | React.ReactElement | undefined => { - if (["string", "number"].includes(typeof node)) return node; - if (node instanceof Array) return node.map(getNodeText).join(""); - if (typeof node === "object" && node) return getNodeText(node.props.children); +type ValidElement = React.ReactElement>; + +function isSelectItemElement(node: unknown): node is ValidElement { + if (!isValidElement(node)) return false; + const props = node.props as Partial; + return typeof props.value === "string"; +} + +const getNodeText = (node: unknown): string | undefined => { + if (typeof node === "string" || typeof node === "number") { + return String(node); + } + + if (Array.isArray(node)) { + return node.map(getNodeText).join(""); + } + + if (isValidElement<{ children?: React.ReactNode }>(node)) { + return getNodeText(node.props.children); + } + + return undefined; }; -export function constructValueToNameMapping(children: React.ReactElement[] | React.ReactElement) { +function constructValueToNameMapping(children: React.ReactNode): Map { const valueToNameMapping = new Map(); - React.Children.map(children, (child: React.ReactElement) => { - valueToNameMapping.set(child.props.value, (getNodeText(child) ?? child.props.value) as string); + + const validChildren = React.Children.toArray(children).filter((child): child is ValidElement => + isSelectItemElement(child), + ); + + validChildren.forEach((child) => { + const value = child.props.value; + const displayText = getNodeText(child) ?? value; + valueToNameMapping.set(value, String(displayText)); }); + return valueToNameMapping; } -export function getFilteredOptions( - searchQuery: string, - children: React.ReactElement[], -): React.ReactElement[] { - return React.Children.map(children, (child) => { - const optionText = (getNodeText(child) ?? child.props.value) as string; - if (optionText.toLowerCase().includes(searchQuery.toLowerCase())) return child; +function getFilteredOptions(searchQuery: string, children: React.ReactNode): ValidElement[] { + return React.Children.toArray(children).filter((child): child is ValidElement => { + if (!isSelectItemElement(child)) { + return false; + } + + const optionText = String(getNodeText(child) ?? child.props.value); + return optionText.toLowerCase().includes(searchQuery.toLowerCase()); }); } -export const getSelectButtonColors = ( - hasSelection: boolean, - isDisabled: boolean, - hasError = false, -) => { +const getSelectButtonColors = (hasSelection: boolean, isDisabled: boolean, hasError = false) => { return tremorTwMerge( - isDisabled - ? "bg-tremor-background-subtle dark:bg-dark-tremor-background-subtle" - : "bg-tremor-background dark:bg-dark-tremor-background", - !isDisabled && "hover:bg-tremor-background-muted dark:hover:bg-dark-tremor-background-muted", - hasSelection - ? "text-tremor-content-emphasis dark:text-dark-tremor-content-emphasis" - : "text-tremor-content dark:text-dark-tremor-content", - isDisabled && "text-tremor-content-subtle dark:text-dark-tremor-content-subtle", - hasError && - "text-red-500 placeholder:text-red-500 dark:text-red-500 dark:placeholder:text-red-500", - hasError - ? "border-red-500 dark:border-red-500" - : "border-tremor-border dark:border-dark-tremor-border", + isDisabled ? "bg-tremor-background-subtle" : "bg-tremor-background-default", + !isDisabled && "hover:bg-tremor-background-muted", + hasSelection ? "text-tremor-content-emphasis" : "text-tremor-content-default", + isDisabled && "text-tremor-content-subtle", + hasError && "text-red-500 placeholder:text-red-500", + hasError ? "border-red-500" : "border-tremor-border-default", ); }; -export function hasValue(value: T | null | undefined) { +function hasValue(value: T | null | undefined) { return value !== null && value !== undefined && value !== ""; } + +export { + constructValueToNameMapping, + getFilteredOptions, + getNodeText, + getSelectButtonColors, + hasValue, +}; diff --git a/src/components/layout-elements/Accordion/Accordion.tsx b/src/components/layout-elements/Accordion/Accordion.tsx index efbd453f3..41efed91a 100644 --- a/src/components/layout-elements/Accordion/Accordion.tsx +++ b/src/components/layout-elements/Accordion/Accordion.tsx @@ -1,11 +1,9 @@ "use client"; import { Disclosure } from "@headlessui/react"; import { RootStylesContext } from "contexts"; -import { makeClassName, tremorTwMerge } from "lib"; +import { tremorTwMerge } from "lib"; import React, { createContext, useContext } from "react"; -const makeAccordionClassName = makeClassName("Accordion"); - interface OpenContextValue { isOpen: boolean; } @@ -13,40 +11,34 @@ export const OpenContext = createContext({ isOpen: false, }); -export interface AccordionProps extends React.HTMLAttributes { +interface AccordionProps extends React.HTMLAttributes { defaultOpen?: boolean; } -const Accordion = React.forwardRef((props, ref) => { - const { defaultOpen = false, children, className, ...other } = props; - - const rootStyles = - useContext(RootStylesContext) ?? tremorTwMerge("rounded-tremor-default border"); - return ( - - {({ open }) => ( - {children} - )} - - ); -}); +const Accordion = React.forwardRef( + ({ defaultOpen = false, children, className, ...other }, ref) => { + const rootStyles = + useContext(RootStylesContext) ?? tremorTwMerge("rounded-tremor-default border"); + return ( + + {({ open }) => ( + {children} + )} + + ); + }, +); Accordion.displayName = "Accordion"; -export default Accordion; +export { Accordion, type AccordionProps }; diff --git a/src/components/layout-elements/Accordion/AccordionBody.tsx b/src/components/layout-elements/Accordion/AccordionBody.tsx index cd5b02707..504c99056 100644 --- a/src/components/layout-elements/Accordion/AccordionBody.tsx +++ b/src/components/layout-elements/Accordion/AccordionBody.tsx @@ -1,34 +1,26 @@ "use client"; +import { DisclosurePanel } from "@headlessui/react"; +import { tremorTwMerge } from "lib"; import React from "react"; -import { Disclosure } from "@headlessui/react"; -import { makeClassName, tremorTwMerge } from "lib"; - -const makeAccordionBodyClassName = makeClassName("AccordionBody"); const AccordionBody = React.forwardRef>( (props, ref) => { const { children, className, ...other } = props; return ( - {children} - + ); }, ); AccordionBody.displayName = "AccordionBody"; -export default AccordionBody; +export { AccordionBody }; diff --git a/src/components/layout-elements/Accordion/AccordionHeader.tsx b/src/components/layout-elements/Accordion/AccordionHeader.tsx index ed2c7814c..75166f443 100644 --- a/src/components/layout-elements/Accordion/AccordionHeader.tsx +++ b/src/components/layout-elements/Accordion/AccordionHeader.tsx @@ -1,62 +1,38 @@ "use client"; -import React, { useContext } from "react"; - -import { Disclosure } from "@headlessui/react"; +import { DisclosureButton } from "@headlessui/react"; import { ArrowUpHeadIcon } from "assets"; import { OpenContext } from "components/layout-elements/Accordion/Accordion"; -import { makeClassName, tremorTwMerge } from "lib"; - -const makeAccordionHeaderClassName = makeClassName("AccordionHeader"); +import { tremorTwMerge } from "lib"; +import React, { useContext } from "react"; const AccordionHeader = React.forwardRef< HTMLButtonElement, React.ButtonHTMLAttributes ->((props, ref) => { - const { children, className, ...other } = props; - +>(({ children, className, ...other }, ref) => { const { isOpen } = useContext(OpenContext); return ( - -
- {children} -
+
{children}
-
+ ); }); AccordionHeader.displayName = "AccordionHeader"; -export default AccordionHeader; +export { AccordionHeader }; diff --git a/src/components/layout-elements/Accordion/AccordionList.tsx b/src/components/layout-elements/Accordion/AccordionList.tsx index 0a7bed599..aabf6b1f2 100644 --- a/src/components/layout-elements/Accordion/AccordionList.tsx +++ b/src/components/layout-elements/Accordion/AccordionList.tsx @@ -3,60 +3,50 @@ import React from "react"; import { RootStylesContext } from "contexts"; -import { makeClassName, tremorTwMerge } from "lib"; - -const makeAccordionListClassName = makeClassName("AccordionList"); +import { tremorTwMerge } from "lib"; export interface AccordionListProps extends React.HTMLAttributes { children: React.ReactElement[] | React.ReactElement; } -const AccordionList = React.forwardRef((props, ref) => { - const { children, className, ...other } = props; - const numChildren = React.Children.count(children); - - return ( -
- {React.Children.map(children, (child, idx) => { - if (idx === 0) { - return ( - - {React.cloneElement(child)} - - ); - } - if (idx === numChildren - 1) { +const AccordionList = React.forwardRef( + ({ children, className, ...other }, ref) => { + const numChildren = React.Children.count(children); + + return ( +
+ {React.Children.map(children, (child, idx) => { + if (idx === 0) { + return ( + + {React.cloneElement(child)} + + ); + } + if (idx === numChildren - 1) { + return ( + + {React.cloneElement(child)} + + ); + } return ( - + {React.cloneElement(child)} ); - } - return ( - - {React.cloneElement(child)} - - ); - })} -
- ); -}); + })} +
+ ); + }, +); AccordionList.displayName = "AccordionList"; -export default AccordionList; +export { AccordionList }; diff --git a/src/components/layout-elements/Accordion/index.ts b/src/components/layout-elements/Accordion/index.ts index ed5cb11bb..651ccb50a 100644 --- a/src/components/layout-elements/Accordion/index.ts +++ b/src/components/layout-elements/Accordion/index.ts @@ -1,6 +1,6 @@ -export { default as Accordion } from "./Accordion"; +export { Accordion } from "./Accordion"; export type { AccordionProps } from "./Accordion"; -export { default as AccordionBody } from "./AccordionBody"; -export { default as AccordionHeader } from "./AccordionHeader"; -export { default as AccordionList } from "./AccordionList"; +export { AccordionBody } from "./AccordionBody"; +export { AccordionHeader } from "./AccordionHeader"; +export { AccordionList } from "./AccordionList"; export type { AccordionListProps } from "./AccordionList"; diff --git a/src/components/layout-elements/Card/Card.tsx b/src/components/layout-elements/Card/Card.tsx index aace6307c..f3f15635f 100644 --- a/src/components/layout-elements/Card/Card.tsx +++ b/src/components/layout-elements/Card/Card.tsx @@ -1,65 +1,79 @@ +import { Color, tremorTwMerge } from "lib"; import React from "react"; -import { - getColorClassNames, - makeClassName, - tremorTwMerge, - Color, - HorizontalPosition, - VerticalPosition, -} from "lib"; -import { HorizontalPositions, VerticalPositions } from "lib/constants"; -import { colorPalette } from "lib/theme"; -const makeCardClassName = makeClassName("Card"); +type HorizontalPosition = "left" | "right"; +type VerticalPosition = "top" | "bottom"; +type DecorationPosition = HorizontalPosition | VerticalPosition; -const parseDecorationAlignment = (decorationAlignment: string) => { +const POSITION_TO_BORDER_CLASS: Record = { + left: "border-l-4", + right: "border-r-4", + top: "border-t-4", + bottom: "border-b-4", +}; + +const isValidDecorationPosition = (value: string): value is DecorationPosition => { + return value in POSITION_TO_BORDER_CLASS; +}; + +const parseDecorationAlignment = (decorationAlignment: string): string => { if (!decorationAlignment) return ""; - switch (decorationAlignment) { - case HorizontalPositions.Left: - return "border-l-4"; - case VerticalPositions.Top: - return "border-t-4"; - case HorizontalPositions.Right: - return "border-r-4"; - case VerticalPositions.Bottom: - return "border-b-4"; - default: - return ""; - } + + return isValidDecorationPosition(decorationAlignment) + ? POSITION_TO_BORDER_CLASS[decorationAlignment] + : ""; +}; + +const borderColors: { [color in Color]: string } = { + brand: "border-tremor-brand-default", + slate: "border-slate-500", + gray: "border-gray-500", + zinc: "border-zinc-500", + neutral: "border-neutral-500", + stone: "border-stone-500", + red: "border-red-500", + orange: "border-orange-500", + amber: "border-amber-500", + yellow: "border-yellow-500", + lime: "border-lime-500", + green: "border-green-500", + emerald: "border-emerald-500", + teal: "border-teal-500", + cyan: "border-cyan-500", + sky: "border-sky-500", + blue: "border-blue-500", + indigo: "border-indigo-500", + violet: "border-violet-500", + purple: "border-purple-500", + fuchsia: "border-fuchsia-500", + pink: "border-pink-500", + rose: "border-rose-500", }; -export interface CardProps extends React.HTMLAttributes { - decoration?: HorizontalPosition | VerticalPosition | ""; +interface CardProps extends React.HTMLAttributes { + decoration?: DecorationPosition | ""; decorationColor?: Color; } -const Card = React.forwardRef((props, ref) => { - const { decoration = "", decorationColor, children, className, ...other } = props; - return ( -
- {children} -
- ); -}); +const Card = React.forwardRef( + ({ decoration = "", decorationColor = "brand", children, className, ...other }, ref) => { + return ( +
+ {children} +
+ ); + }, +); Card.displayName = "Card"; -export default Card; +export { Card, type CardProps }; diff --git a/src/components/layout-elements/Card/index.ts b/src/components/layout-elements/Card/index.ts index d26483de4..ec037e099 100644 --- a/src/components/layout-elements/Card/index.ts +++ b/src/components/layout-elements/Card/index.ts @@ -1,2 +1,2 @@ -export { default as Card } from "./Card"; +export { Card } from "./Card"; export type { CardProps } from "./Card"; diff --git a/src/components/layout-elements/Dialog/Dialog.tsx b/src/components/layout-elements/Dialog/Dialog.tsx index c1d0a6237..a0310407e 100644 --- a/src/components/layout-elements/Dialog/Dialog.tsx +++ b/src/components/layout-elements/Dialog/Dialog.tsx @@ -1,13 +1,11 @@ +import { DialogBackdrop, Dialog as HeadlessUiDialog, Transition } from "@headlessui/react"; +import { tremorTwMerge } from "lib"; import React from "react"; -import { Dialog as HeadlessuiDialog, Transition } from "@headlessui/react"; -import { makeClassName, tremorTwMerge } from "lib"; - -const makeDisplayClassName = makeClassName("dialog"); type Without = { [P in Exclude]?: never }; type XOR = T | U extends object ? (Without & U) | (Without & T) : T | U; -export type DialogProps = React.HTMLAttributes & { +type DialogProps = React.HTMLAttributes & { open: boolean; onClose: (val: boolean) => void; role?: "dialog" | "alertdialog"; @@ -16,36 +14,20 @@ export type DialogProps = React.HTMLAttributes & { const Dialog = React.forwardRef((props, ref) => { const { children, className, ...other } = props; return ( - - - -
-
-
+ + + +
{children}
-
+
); }); Dialog.displayName = "Dialog"; -export default Dialog; +export { Dialog, type DialogProps }; diff --git a/src/components/layout-elements/Dialog/DialogPanel.tsx b/src/components/layout-elements/Dialog/DialogPanel.tsx index 481da6ce8..9b05a463a 100644 --- a/src/components/layout-elements/Dialog/DialogPanel.tsx +++ b/src/components/layout-elements/Dialog/DialogPanel.tsx @@ -1,11 +1,9 @@ -import React from "react"; -import { Dialog as HeadlessuiDialog, Transition } from "@headlessui/react"; -import { makeClassName, tremorTwMerge } from "lib"; +import { DialogPanel as HeadlessuiDialogPanel, TransitionChild } from "@headlessui/react"; import { RootStylesContext } from "contexts"; +import { tremorTwMerge } from "lib"; +import React from "react"; -const makeDisplayClassName = makeClassName("dialog"); - -export type DialogPanelProps = React.HTMLAttributes; +type DialogPanelProps = React.HTMLAttributes; const DialogPanel = React.forwardRef((props, ref) => { const { children, className, ...other } = props; @@ -13,8 +11,7 @@ const DialogPanel = React.forwardRef((props, r React.useContext(RootStylesContext) ?? tremorTwMerge("rounded-tremor-default p-6"); return ( - ((props, r leaveFrom="opacity-100 scale-100" leaveTo="opacity-0 scale-95" > - {children} - - + + ); }); DialogPanel.displayName = "DialogPanel"; -export default DialogPanel; +export { DialogPanel, type DialogPanelProps }; diff --git a/src/components/layout-elements/Dialog/index.ts b/src/components/layout-elements/Dialog/index.ts index 945dcab0a..cb8cd43f1 100644 --- a/src/components/layout-elements/Dialog/index.ts +++ b/src/components/layout-elements/Dialog/index.ts @@ -1,2 +1,2 @@ -export { default as Dialog, type DialogProps } from "./Dialog"; -export { default as DialogPanel, type DialogPanelProps } from "./DialogPanel"; +export { Dialog, type DialogProps } from "./Dialog"; +export { DialogPanel, type DialogPanelProps } from "./DialogPanel"; diff --git a/src/components/layout-elements/Divider/Divider.tsx b/src/components/layout-elements/Divider/Divider.tsx index fef029f05..a9a69b44d 100644 --- a/src/components/layout-elements/Divider/Divider.tsx +++ b/src/components/layout-elements/Divider/Divider.tsx @@ -1,44 +1,25 @@ -import { makeClassName, tremorTwMerge } from "lib"; +import { tremorTwMerge } from "lib"; import React from "react"; -const makeDividerClassName = makeClassName("Divider"); - const Divider = React.forwardRef>( - (props, ref) => { - const { className, children, ...other } = props; + ({ className, children, ...other }, ref) => { return (
{children ? ( <> -
-
{children}
-
+
+
{children}
+
) : ( -
+
)}
); @@ -47,4 +28,4 @@ const Divider = React.forwardRef { - flexDirection?: FlexDirection; - justifyContent?: JustifyContent; - alignItems?: AlignItems; - children: React.ReactNode; -} - -const Flex = React.forwardRef((props, ref) => { - const { - flexDirection = "row", - justifyContent = "between", - alignItems = "center", - children, - className, - ...other - } = props; - - return ( -
- {children} -
- ); -}); - -Flex.displayName = "Flex"; - -export default Flex; diff --git a/src/components/layout-elements/Flex/index.ts b/src/components/layout-elements/Flex/index.ts deleted file mode 100644 index 4cd8021c0..000000000 --- a/src/components/layout-elements/Flex/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -export { default as Flex } from "./Flex"; -export type { FlexProps } from "./Flex"; diff --git a/src/components/layout-elements/Grid/Col.tsx b/src/components/layout-elements/Grid/Col.tsx deleted file mode 100644 index 55584c272..000000000 --- a/src/components/layout-elements/Grid/Col.tsx +++ /dev/null @@ -1,57 +0,0 @@ -import { tremorTwMerge } from "lib"; -import React from "react"; - -import { makeClassName } from "lib"; -import { colSpan, colSpanLg, colSpanMd, colSpanSm, GridClassesMapping } from "./styles"; - -const makeColClassName = makeClassName("Col"); - -export interface ColProps extends React.HTMLAttributes { - numColSpan?: number; - numColSpanSm?: number; - numColSpanMd?: number; - numColSpanLg?: number; -} - -const Col = React.forwardRef((props, ref) => { - const { - numColSpan = 1, - numColSpanSm, - numColSpanMd, - numColSpanLg, - children, - className, - ...other - } = props; - const getColSpan = ( - numColSpan: number | undefined, - colSpanMapping: GridClassesMapping, - ): string => { - if (!numColSpan) return ""; - if (!Object.keys(colSpanMapping).includes(String(numColSpan))) return ""; - return colSpanMapping[numColSpan]; - }; - - const getColSpanClassNames = () => { - const spanBase = getColSpan(numColSpan, colSpan); - const spanSm = getColSpan(numColSpanSm, colSpanSm); - const spanMd = getColSpan(numColSpanMd, colSpanMd); - const spanLg = getColSpan(numColSpanLg, colSpanLg); - - return tremorTwMerge(spanBase, spanSm, spanMd, spanLg); - }; - - return ( -
- {children} -
- ); -}); - -Col.displayName = "Col"; - -export default Col; diff --git a/src/components/layout-elements/Grid/Grid.tsx b/src/components/layout-elements/Grid/Grid.tsx deleted file mode 100644 index 400c41058..000000000 --- a/src/components/layout-elements/Grid/Grid.tsx +++ /dev/null @@ -1,46 +0,0 @@ -import { tremorTwMerge } from "lib"; -import React from "react"; - -import { makeClassName } from "lib"; -import { GridClassesMapping, gridCols, gridColsLg, gridColsMd, gridColsSm } from "./styles"; - -const makeGridClassName = makeClassName("Grid"); - -const getGridCols = (numCols: number | undefined, gridColsMapping: GridClassesMapping): string => { - if (!numCols) return ""; - if (!Object.keys(gridColsMapping).includes(String(numCols))) return ""; - return gridColsMapping[numCols]; -}; - -export interface GridProps extends React.HTMLAttributes { - numItems?: number; - numItemsSm?: number; - numItemsMd?: number; - numItemsLg?: number; - children: React.ReactNode; -} - -const Grid = React.forwardRef((props, ref) => { - const { numItems = 1, numItemsSm, numItemsMd, numItemsLg, children, className, ...other } = props; - - const colsBase = getGridCols(numItems, gridCols); - const colsSm = getGridCols(numItemsSm, gridColsSm); - const colsMd = getGridCols(numItemsMd, gridColsMd); - const colsLg = getGridCols(numItemsLg, gridColsLg); - - const colClassNames = tremorTwMerge(colsBase, colsSm, colsMd, colsLg); - - return ( -
- {children} -
- ); -}); - -Grid.displayName = "Grid"; - -export default Grid; diff --git a/src/components/layout-elements/Grid/index.ts b/src/components/layout-elements/Grid/index.ts deleted file mode 100644 index b7bb8e691..000000000 --- a/src/components/layout-elements/Grid/index.ts +++ /dev/null @@ -1,4 +0,0 @@ -export { default as Col } from "./Col"; -export type { ColProps } from "./Col"; -export { default as Grid } from "./Grid"; -export type { GridProps } from "./Grid"; diff --git a/src/components/layout-elements/Grid/styles.ts b/src/components/layout-elements/Grid/styles.ts deleted file mode 100644 index 02ca399f2..000000000 --- a/src/components/layout-elements/Grid/styles.ts +++ /dev/null @@ -1,131 +0,0 @@ -export type GridClassesMapping = { - [key: string]: string; -}; - -export const gridCols: GridClassesMapping = { - 0: "grid-cols-none", - 1: "grid-cols-1", - 2: "grid-cols-2", - 3: "grid-cols-3", - 4: "grid-cols-4", - 5: "grid-cols-5", - 6: "grid-cols-6", - 7: "grid-cols-7", - 8: "grid-cols-8", - 9: "grid-cols-9", - 10: "grid-cols-10", - 11: "grid-cols-11", - 12: "grid-cols-12", -}; - -export const gridColsSm: GridClassesMapping = { - 0: "sm:grid-cols-none", - 1: "sm:grid-cols-1", - 2: "sm:grid-cols-2", - 3: "sm:grid-cols-3", - 4: "sm:grid-cols-4", - 5: "sm:grid-cols-5", - 6: "sm:grid-cols-6", - 7: "sm:grid-cols-7", - 8: "sm:grid-cols-8", - 9: "sm:grid-cols-9", - 10: "sm:grid-cols-10", - 11: "sm:grid-cols-11", - 12: "sm:grid-cols-12", -}; - -export const gridColsMd: GridClassesMapping = { - 0: "md:grid-cols-none", - 1: "md:grid-cols-1", - 2: "md:grid-cols-2", - 3: "md:grid-cols-3", - 4: "md:grid-cols-4", - 5: "md:grid-cols-5", - 6: "md:grid-cols-6", - 7: "md:grid-cols-7", - 8: "md:grid-cols-8", - 9: "md:grid-cols-9", - 10: "md:grid-cols-10", - 11: "md:grid-cols-11", - 12: "md:grid-cols-12", -}; - -export const gridColsLg: GridClassesMapping = { - 0: "lg:grid-cols-none", - 1: "lg:grid-cols-1", - 2: "lg:grid-cols-2", - 3: "lg:grid-cols-3", - 4: "lg:grid-cols-4", - 5: "lg:grid-cols-5", - 6: "lg:grid-cols-6", - 7: "lg:grid-cols-7", - 8: "lg:grid-cols-8", - 9: "lg:grid-cols-9", - 10: "lg:grid-cols-10", - 11: "lg:grid-cols-11", - 12: "lg:grid-cols-12", -}; - -export const colSpan: GridClassesMapping = { - 1: "col-span-1", - 2: "col-span-2", - 3: "col-span-3", - 4: "col-span-4", - 5: "col-span-5", - 6: "col-span-6", - 7: "col-span-7", - 8: "col-span-8", - 9: "col-span-9", - 10: "col-span-10", - 11: "col-span-11", - 12: "col-span-12", - 13: "col-span-13", -}; - -export const colSpanSm: GridClassesMapping = { - 1: "sm:col-span-1", - 2: "sm:col-span-2", - 3: "sm:col-span-3", - 4: "sm:col-span-4", - 5: "sm:col-span-5", - 6: "sm:col-span-6", - 7: "sm:col-span-7", - 8: "sm:col-span-8", - 9: "sm:col-span-9", - 10: "sm:col-span-10", - 11: "sm:col-span-11", - 12: "sm:col-span-12", - 13: "sm:col-span-13", -}; - -export const colSpanMd: GridClassesMapping = { - 1: "md:col-span-1", - 2: "md:col-span-2", - 3: "md:col-span-3", - 4: "md:col-span-4", - 5: "md:col-span-5", - 6: "md:col-span-6", - 7: "md:col-span-7", - 8: "md:col-span-8", - 9: "md:col-span-9", - 10: "md:col-span-10", - 11: "md:col-span-11", - 12: "md:col-span-12", - 13: "md:col-span-13", -}; - -export const colSpanLg: GridClassesMapping = { - 1: "lg:col-span-1", - 2: "lg:col-span-2", - 3: "lg:col-span-3", - 4: "lg:col-span-4", - 5: "lg:col-span-5", - 6: "lg:col-span-6", - 7: "lg:col-span-7", - 8: "lg:col-span-8", - 9: "lg:col-span-9", - 10: "lg:col-span-10", - 11: "lg:col-span-11", - 12: "lg:col-span-12", - 13: "lg:col-span-13", -}; diff --git a/src/components/layout-elements/index.ts b/src/components/layout-elements/index.ts index c92f948a4..7161cf003 100644 --- a/src/components/layout-elements/index.ts +++ b/src/components/layout-elements/index.ts @@ -1,6 +1,4 @@ export * from "./Accordion"; export * from "./Card"; -export * from "./Divider"; -export * from "./Flex"; -export * from "./Grid"; export * from "./Dialog"; +export * from "./Divider"; diff --git a/src/components/list-elements/List/List.tsx b/src/components/list-elements/List/List.tsx index 5873bdeb6..3919c8c2b 100644 --- a/src/components/list-elements/List/List.tsx +++ b/src/components/list-elements/List/List.tsx @@ -1,24 +1,13 @@ import { tremorTwMerge } from "lib"; import React from "react"; -import { makeClassName } from "lib"; - -const makeListClassName = makeClassName("List"); - const List = React.forwardRef>( - (props, ref) => { - const { children, className, ...other } = props; + ({ children, className, ...other }, ref) => { return (
    >( - (props, ref) => { - const { children, className, ...other } = props; + ({ children, className, ...other }, ref) => { return ( <>
  • >( - (props, ref) => { - const { children, className, ...other } = props; - + ({ children, className, ...other }, ref) => { return ( -
    +
    {children} @@ -31,4 +19,4 @@ const Table = React.forwardRef ->((props, ref) => { - const { children, className, ...other } = props; +>(({ children, className, ...other }, ref) => { return ( <> {children} @@ -32,4 +20,4 @@ const TableBody = React.forwardRef< TableBody.displayName = "TableBody"; -export default TableBody; +export { TableBody }; diff --git a/src/components/list-elements/Table/TableCell.tsx b/src/components/list-elements/Table/TableCell.tsx index 4f8ac90dd..0f64cf64a 100644 --- a/src/components/list-elements/Table/TableCell.tsx +++ b/src/components/list-elements/Table/TableCell.tsx @@ -1,30 +1,21 @@ +import { tremorTwMerge } from "lib"; import React from "react"; -import { makeClassName, tremorTwMerge } from "lib"; - -const makeTableCellClassName = makeClassName("TableCell"); const TableCell = React.forwardRef< HTMLTableCellElement, React.TdHTMLAttributes ->((props, ref) => { - const { children, className, ...other } = props; +>(({ children, className, ...other }, ref) => { return ( - <> - - + ); }); TableCell.displayName = "TableCell"; -export default TableCell; +export { TableCell }; diff --git a/src/components/list-elements/Table/TableFoot.tsx b/src/components/list-elements/Table/TableFoot.tsx index 2882f4b7b..d538a7dbd 100644 --- a/src/components/list-elements/Table/TableFoot.tsx +++ b/src/components/list-elements/Table/TableFoot.tsx @@ -1,24 +1,15 @@ +import { tremorTwMerge } from "lib"; import React from "react"; -import { makeClassName, tremorTwMerge } from "lib"; - -const makeTableFootClassName = makeClassName("TableFoot"); const TableFoot = React.forwardRef< HTMLTableSectionElement, React.HTMLAttributes ->((props, ref) => { - const { children, className, ...other } = props; +>(({ children, className, ...other }, ref) => { return ( ->((props, ref) => { - const { children, className, ...other } = props; +>(({ children, className, ...other }, ref) => { return ( - <> - - + ); }); TableFooterCell.displayName = "TableFooterCell"; -export default TableFooterCell; +export { TableFooterCell }; diff --git a/src/components/list-elements/Table/TableHead.tsx b/src/components/list-elements/Table/TableHead.tsx index 24cbfff31..0ff7def25 100644 --- a/src/components/list-elements/Table/TableHead.tsx +++ b/src/components/list-elements/Table/TableHead.tsx @@ -1,27 +1,15 @@ +import { tremorTwMerge } from "lib"; import React from "react"; -import { makeClassName, tremorTwMerge } from "lib"; - -const makeTableHeadClassName = makeClassName("TableHead"); const TableHead = React.forwardRef< HTMLTableSectionElement, React.HTMLAttributes ->((props, ref) => { - const { children, className, ...other } = props; +>(({ children, className, ...other }, ref) => { return ( <> {children} @@ -32,4 +20,4 @@ const TableHead = React.forwardRef< TableHead.displayName = "TableHead"; -export default TableHead; +export { TableHead }; diff --git a/src/components/list-elements/Table/TableHeaderCell.tsx b/src/components/list-elements/Table/TableHeaderCell.tsx index 11836d524..5171cc0a7 100644 --- a/src/components/list-elements/Table/TableHeaderCell.tsx +++ b/src/components/list-elements/Table/TableHeaderCell.tsx @@ -1,35 +1,24 @@ +import { tremorTwMerge } from "lib"; import React from "react"; -import { makeClassName, tremorTwMerge } from "lib"; - -const makeTableHeaderCellClassName = makeClassName("TableHeaderCell"); const TableHeaderCell = React.forwardRef< HTMLTableCellElement, React.ThHTMLAttributes ->((props, ref) => { - const { children, className, ...other } = props; +>(({ children, className, ...other }, ref) => { return ( - <> - - + ); }); TableHeaderCell.displayName = "TableHeaderCell"; -export default TableHeaderCell; +export { TableHeaderCell }; diff --git a/src/components/list-elements/Table/TableRow.tsx b/src/components/list-elements/Table/TableRow.tsx index 802597add..8e023f22e 100644 --- a/src/components/list-elements/Table/TableRow.tsx +++ b/src/components/list-elements/Table/TableRow.tsx @@ -1,21 +1,16 @@ +import { tremorTwMerge } from "lib"; import React from "react"; -import { makeClassName, tremorTwMerge } from "lib"; - -const makeRowClassName = makeClassName("TableRow"); const TableRow = React.forwardRef>( - (props, ref) => { - const { children, className, ...other } = props; + ({ children, className, ...other }, ref) => { return ( - <> - - {children} - - + + {children} + ); }, ); TableRow.displayName = "TableRow"; -export default TableRow; +export { TableRow }; diff --git a/src/components/list-elements/Table/index.ts b/src/components/list-elements/Table/index.ts index b63bbe265..134da1ea5 100644 --- a/src/components/list-elements/Table/index.ts +++ b/src/components/list-elements/Table/index.ts @@ -1,8 +1,8 @@ -export { default as Table } from "./Table"; -export { default as TableBody } from "./TableBody"; -export { default as TableCell } from "./TableCell"; -export { default as TableFoot } from "./TableFoot"; -export { default as TableFooterCell } from "./TableFooterCell"; -export { default as TableHead } from "./TableHead"; -export { default as TableHeaderCell } from "./TableHeaderCell"; -export { default as TableRow } from "./TableRow"; +export { Table } from "./Table"; +export { TableBody } from "./TableBody"; +export { TableCell } from "./TableCell"; +export { TableFoot } from "./TableFoot"; +export { TableFooterCell } from "./TableFooterCell"; +export { TableHead } from "./TableHead"; +export { TableHeaderCell } from "./TableHeaderCell"; +export { TableRow } from "./TableRow"; diff --git a/src/components/package.json b/src/components/package.json new file mode 100644 index 000000000..db2496d0f --- /dev/null +++ b/src/components/package.json @@ -0,0 +1,12 @@ +{ + "name": "components", + "version": "1.0.0", + "description": "", + "main": "index.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "keywords": [], + "author": "", + "license": "ISC" +} diff --git a/src/components/spark-elements/SparkAreaChart/SparkAreaChart.tsx b/src/components/spark-elements/SparkAreaChart/SparkAreaChart.tsx index ebc3182f3..4d653f910 100644 --- a/src/components/spark-elements/SparkAreaChart/SparkAreaChart.tsx +++ b/src/components/spark-elements/SparkAreaChart/SparkAreaChart.tsx @@ -2,21 +2,21 @@ import React from "react"; import { Area, AreaChart as ReChartsAreaChart, ResponsiveContainer, XAxis, YAxis } from "recharts"; -import { BaseColors, colorPalette, getColorClassNames, themeColorRange, tremorTwMerge } from "lib"; -import { CurveType } from "../../../lib/inputTypes"; -import BaseSparkChartProps from "../common/BaseSparkChartProps"; -import { constructCategoryColors, getYAxisDomain } from "components/chart-elements/common/utils"; import NoData from "components/chart-elements/common/NoData"; +import { constructCategoryColors, getYAxisDomain } from "components/chart-elements/common/utils"; +import { strokeColors, textColors, themeColorRange, tremorTwMerge } from "lib"; import { AxisDomain } from "recharts/types/util/types"; +import { Color, CurveType } from "../../../lib/inputTypes"; +import BaseSparkChartProps from "../common/BaseSparkChartProps"; -export interface SparkAreaChartProps extends BaseSparkChartProps { +interface SparkAreaChartProps extends BaseSparkChartProps { stack?: boolean; curveType?: CurveType; connectNulls?: boolean; showGradient?: boolean; } -const AreaChart = React.forwardRef((props, ref) => { +const SparkAreaChart = React.forwardRef((props, ref) => { const { data = [], categories = [], @@ -24,7 +24,7 @@ const AreaChart = React.forwardRef((props, stack = false, colors = themeColorRange, showAnimation = false, - animationDuration = 900, + animationDuration = 600, showGradient = true, curveType = "linear", connectNulls = false, @@ -39,23 +39,19 @@ const AreaChart = React.forwardRef((props, const yAxisDomain = getYAxisDomain(autoMinValue, minValue, maxValue); return ( -
    +
    {data?.length ? ( {categories.map((category) => { + const color = categoryColors.get(category) as Color; return ( {showGradient ? ( ((props, ) : ( ((props, ); })} - {categories.map((category) => ( - - ))} + {categories.map((category) => { + const color = categoryColors.get(category) as Color; + return ( + + ); + })} ) : ( @@ -119,6 +108,6 @@ const AreaChart = React.forwardRef((props, ); }); -AreaChart.displayName = "AreaChart"; +SparkAreaChart.displayName = "SparkAreaChart"; -export default AreaChart; +export { SparkAreaChart, type SparkAreaChartProps }; diff --git a/src/components/spark-elements/SparkAreaChart/index.ts b/src/components/spark-elements/SparkAreaChart/index.ts index adf7015d5..668fe89d6 100644 --- a/src/components/spark-elements/SparkAreaChart/index.ts +++ b/src/components/spark-elements/SparkAreaChart/index.ts @@ -1,2 +1,2 @@ -export { default as SparkAreaChart } from "./SparkAreaChart"; +export { SparkAreaChart } from "./SparkAreaChart"; export type { SparkAreaChartProps } from "./SparkAreaChart"; diff --git a/src/components/spark-elements/SparkBarChart/SparkBarChart.tsx b/src/components/spark-elements/SparkBarChart/SparkBarChart.tsx index 4218fc324..fe199099a 100644 --- a/src/components/spark-elements/SparkBarChart/SparkBarChart.tsx +++ b/src/components/spark-elements/SparkBarChart/SparkBarChart.tsx @@ -1,16 +1,16 @@ "use client"; -import { colorPalette, getColorClassNames, tremorTwMerge } from "lib"; +import { Color, tremorTwMerge } from "lib"; import React from "react"; import { Bar, BarChart as ReChartsBarChart, ResponsiveContainer, XAxis, YAxis } from "recharts"; -import { BaseColors, themeColorRange } from "lib"; -import BaseSparkChartProps from "../common/BaseSparkChartProps"; -import { constructCategoryColors, getYAxisDomain } from "components/chart-elements/common/utils"; import NoData from "components/chart-elements/common/NoData"; +import { constructCategoryColors, getYAxisDomain } from "components/chart-elements/common/utils"; +import { fillColors, themeColorRange } from "lib"; import { AxisDomain } from "recharts/types/util/types"; +import BaseSparkChartProps from "../common/BaseSparkChartProps"; -export interface SparkBarChartProps extends BaseSparkChartProps { +interface SparkBarChartProps extends BaseSparkChartProps { stack?: boolean; relative?: boolean; } @@ -23,7 +23,7 @@ const SparkBarChart = React.forwardRef((prop colors = themeColorRange, stack = false, relative = false, - animationDuration = 900, + animationDuration = 600, showAnimation = false, noDataText, autoMinValue = false, @@ -36,7 +36,7 @@ const SparkBarChart = React.forwardRef((prop const yAxisDomain = getYAxisDomain(autoMinValue, minValue, maxValue); return ( -
    +
    {data?.length ? ( ((prop > - {categories.map((category) => ( - - ))} + {categories.map((category) => { + const color = categoryColors.get(category) as Color; + return ( + + ); + })} ) : ( @@ -75,4 +73,4 @@ const SparkBarChart = React.forwardRef((prop SparkBarChart.displayName = "SparkBarChart"; -export default SparkBarChart; +export { SparkBarChart, type SparkBarChartProps }; diff --git a/src/components/spark-elements/SparkBarChart/index.ts b/src/components/spark-elements/SparkBarChart/index.ts index ea3b365e8..cb957cca0 100644 --- a/src/components/spark-elements/SparkBarChart/index.ts +++ b/src/components/spark-elements/SparkBarChart/index.ts @@ -1,2 +1,2 @@ -export { default as SparkBarChart } from "./SparkBarChart"; +export { SparkBarChart } from "./SparkBarChart"; export type { SparkBarChartProps } from "./SparkBarChart"; diff --git a/src/components/spark-elements/SparkLineChart/SparkLineChart.tsx b/src/components/spark-elements/SparkLineChart/SparkLineChart.tsx index bb4fe9f89..b3e0d7ca2 100644 --- a/src/components/spark-elements/SparkLineChart/SparkLineChart.tsx +++ b/src/components/spark-elements/SparkLineChart/SparkLineChart.tsx @@ -2,14 +2,14 @@ import React from "react"; import { Line, LineChart as ReChartsLineChart, ResponsiveContainer, XAxis, YAxis } from "recharts"; -import { BaseColors, colorPalette, getColorClassNames, themeColorRange, tremorTwMerge } from "lib"; -import { CurveType } from "../../../lib/inputTypes"; -import BaseSparkChartProps from "../common/BaseSparkChartProps"; -import { constructCategoryColors, getYAxisDomain } from "components/chart-elements/common/utils"; import NoData from "components/chart-elements/common/NoData"; +import { constructCategoryColors, getYAxisDomain } from "components/chart-elements/common/utils"; +import { strokeColors, themeColorRange, tremorTwMerge } from "lib"; import { AxisDomain } from "recharts/types/util/types"; +import { Color, CurveType } from "../../../lib/inputTypes"; +import BaseSparkChartProps from "../common/BaseSparkChartProps"; -export interface SparkLineChartProps extends BaseSparkChartProps { +interface SparkLineChartProps extends BaseSparkChartProps { curveType?: CurveType; connectNulls?: boolean; } @@ -20,7 +20,7 @@ const SparkLineChart = React.forwardRef((pr categories = [], index, colors = themeColorRange, - animationDuration = 900, + animationDuration = 600, showAnimation = false, curveType = "linear", connectNulls = false, @@ -35,35 +35,32 @@ const SparkLineChart = React.forwardRef((pr const yAxisDomain = getYAxisDomain(autoMinValue, minValue, maxValue); return ( -
    +
    {data?.length ? ( - {categories.map((category) => ( - - ))} + {categories.map((category) => { + const color = categoryColors.get(category) as Color; + return ( + + ); + })} ) : ( @@ -75,4 +72,4 @@ const SparkLineChart = React.forwardRef((pr SparkLineChart.displayName = "SparkLineChart"; -export default SparkLineChart; +export { SparkLineChart, type SparkLineChartProps }; diff --git a/src/components/spark-elements/SparkLineChart/index.ts b/src/components/spark-elements/SparkLineChart/index.ts index 5e93d8e5c..658dbc4aa 100644 --- a/src/components/spark-elements/SparkLineChart/index.ts +++ b/src/components/spark-elements/SparkLineChart/index.ts @@ -1,2 +1,2 @@ -export { default as SparkLineChart } from "./SparkLineChart"; +export { SparkLineChart } from "./SparkLineChart"; export type { SparkLineChartProps } from "./SparkLineChart"; diff --git a/src/components/text-elements/Badge/Badge.tsx b/src/components/text-elements/Badge/Badge.tsx new file mode 100644 index 000000000..c2fedabc9 --- /dev/null +++ b/src/components/text-elements/Badge/Badge.tsx @@ -0,0 +1,115 @@ +"use client"; + +import { Color } from "lib"; +import React from "react"; +import { tv, type VariantProps } from "tailwind-variants"; + +const badgeColors: { [color in Color]: string } = { + brand: "bg-tremor-brand-faint text-tremor-brand-emphasis ring-tremor-brand-default/20", + + slate: + "ring-slate-300 dark:ring-slate-400/30 bg-slate-600/15 text-slate-700 dark:bg-white/5 dark:text-slate-400", + gray: "bg-gray-600/15 text-gray-700 ring-gray-300 dark:bg-white/5 dark:text-gray-400 dark:ring-gray-400/30", + + zinc: "bg-zinc-600/15 text-zinc-700 ring-zinc-300 dark:bg-white/5 dark:text-zinc-400 dark:ring-zinc-400/30", + + neutral: + "ring-neutral-300 dark:ring-neutral-400/30 bg-neutral-600/15 text-neutral-700 dark:bg-white/5 dark:text-neutral-400", + stone: + "ring-stone-300 dark:ring-stone-400/30 bg-stone-600/15 text-stone-700 dark:bg-white/5 dark:text-stone-400", + red: "bg-red-500/15 text-red-700 ring-red-300 dark:bg-red-500/10 dark:text-red-400 dark:ring-red-400/30", + + orange: + "ring-orange-300 dark:ring-orange-400/30 bg-orange-500/15 text-orange-700 dark:bg-orange-500/10 dark:text-orange-400", + amber: + "ring-amber-300 dark:ring-amber-400/30 bg-amber-400/20 text-amber-700 dark:bg-amber-400/10 dark:text-amber-400", + yellow: + "ring-yellow-300 dark:ring-yellow-400/30 bg-yellow-400/20 text-yellow-700 dark:bg-yellow-400/10 dark:text-yellow-400", + lime: "bg-lime-400/20 text-lime-700 ring-lime-300 dark:bg-lime-400/10 dark:text-lime-400 dark:ring-lime-400/30", + + green: + "ring-green-300 dark:ring-green-400/30 bg-green-500/15 text-green-700 dark:bg-green-500/10 dark:text-green-400", + emerald: + "ring-emerald-300 dark:ring-emerald-400/30 bg-emerald-500/15 text-emerald-700 dark:bg-emerald-500/10 dark:text-emerald-400", + teal: "bg-teal-500/15 text-teal-700 ring-teal-300 dark:bg-teal-500/10 dark:text-teal-400 dark:ring-teal-400/30", + + cyan: "bg-cyan-400/20 text-cyan-700 ring-cyan-300 dark:bg-cyan-400/10 dark:text-cyan-400 dark:ring-cyan-400/30", + + sky: "bg-sky-500/15 text-sky-700 ring-sky-300 dark:bg-sky-500/10 dark:text-sky-400 dark:ring-sky-400/30", + + blue: "bg-blue-500/15 text-blue-700 ring-blue-300 dark:bg-blue-500/10 dark:text-blue-400 dark:ring-blue-400/30", + + indigo: + "ring-indigo-300 dark:ring-indigo-400/30 bg-indigo-500/15 text-indigo-700 dark:text-indigo-400 dark:dark:bg-indigo-500/10", + violet: + "ring-violet-300 dark:ring-violet-400/30 bg-violet-500/15 text-violet-700 dark:text-violet-400 dark:dark:bg-violet-500/10", + purple: + "ring-purple-300 dark:ring-purple-400/30 bg-purple-500/15 text-purple-700 dark:text-purple-400 dark:dark:bg-purple-500/10", + fuchsia: + "ring-fuchsia-300 dark:ring-fuchsia-400/30 bg-fuchsia-400/15 text-fuchsia-700 dark:bg-fuchsia-400/10 dark:text-fuchsia-400", + pink: "bg-pink-400/15 text-pink-700 ring-pink-300 dark:bg-pink-400/10 dark:text-pink-400 dark:ring-pink-400/30", + + rose: "bg-rose-400/15 text-rose-700 ring-rose-300 dark:bg-rose-400/10 dark:text-rose-400 dark:ring-rose-400/30", +}; + +const badgeSizes = { + xs: "text-xs px-2 py-0.5", + sm: "text-sm px-2.5 py-0.5", + md: "text-base px-3 py-0.5", + lg: "text-lg px-3.5 py-0.5", + xl: "text-xl px-4 py-1", +}; + +const iconSizes = { + xs: "h-4 w-4", + sm: "h-4 w-4", + md: "h-4 w-4", + lg: "h-5 w-5", + xl: "h-6 w-6", +}; + +const badgeStyles = tv({ + base: "inline-flex w-max shrink-0 cursor-default items-center justify-center rounded-tremor-small ring-1 ring-inset whitespace-nowrap", + variants: { + color: { ...badgeColors }, + size: { ...badgeSizes }, + }, + defaultVariants: { + color: "brand", + size: "sm", + }, +}); + +type BadgeProps = Omit< + React.ComponentPropsWithoutRef<"span">, + keyof VariantProps +> & + VariantProps & { + icon?: React.ElementType; + }; + +const Badge = React.forwardRef( + ({ color, size = "sm", icon: Icon, className, children, ...props }, ref) => { + return ( + + {Icon && ( + + )} + {children} + + ); + }, +); + +Badge.displayName = "Badge"; + +export { Badge, type BadgeProps }; diff --git a/src/components/text-elements/Badge/index.ts b/src/components/text-elements/Badge/index.ts new file mode 100644 index 000000000..d172dc35c --- /dev/null +++ b/src/components/text-elements/Badge/index.ts @@ -0,0 +1,2 @@ +export { Badge } from "./Badge"; +export type { BadgeProps } from "./Badge"; diff --git a/src/components/text-elements/Bold/Bold.tsx b/src/components/text-elements/Bold/Bold.tsx deleted file mode 100644 index 377e8beae..000000000 --- a/src/components/text-elements/Bold/Bold.tsx +++ /dev/null @@ -1,15 +0,0 @@ -import { tremorTwMerge } from "lib"; -import React from "react"; - -const Bold = React.forwardRef>((props, ref) => { - const { children, className, ...other } = props; - return ( - - {children} - - ); -}); - -Bold.displayName = "Bold"; - -export default Bold; diff --git a/src/components/text-elements/Bold/index.ts b/src/components/text-elements/Bold/index.ts deleted file mode 100644 index 3ad208e46..000000000 --- a/src/components/text-elements/Bold/index.ts +++ /dev/null @@ -1 +0,0 @@ -export { default as Bold } from "./Bold"; diff --git a/src/components/text-elements/Callout/Callout.tsx b/src/components/text-elements/Callout/Callout.tsx index 4825e5e28..63d0de0e0 100644 --- a/src/components/text-elements/Callout/Callout.tsx +++ b/src/components/text-elements/Callout/Callout.tsx @@ -1,55 +1,124 @@ +import { Color, tremorTwMerge } from "lib"; import React from "react"; -import { getColorClassNames, makeClassName, tremorTwMerge, Color } from "lib"; -import { colorPalette } from "lib/theme"; +import { tv } from "tailwind-variants"; -const makeCalloutClassName = makeClassName("Callout"); +const calloutStyles = tv({ + base: "rounded-tremor-default text-tremor-default flex flex-col border-l-4 py-3 pr-3 pl-4", + variants: { + color: { + brand: ["bg-tremor-brand-faint border-tremor-brand-emphasis text-tremor-brand-emphasis"], + slate: [ + "bg-slate-50 border-slate-500 text-slate-600", + "dark:bg-slate-500/10 dark:border-slate-400 dark:text-slate-400", + ], + gray: [ + "bg-gray-50 border-gray-500 text-gray-600", + "dark:bg-gray-500/10 dark:border-gray-400 dark:text-gray-400", + ], + zinc: [ + "bg-zinc-50 border-zinc-500 text-zinc-600", + "dark:bg-zinc-500/10 dark:border-zinc-400 dark:text-zinc-400", + ], + neutral: [ + "bg-neutral-50 border-neutral-500 text-neutral-600", + "dark:bg-neutral-500/10 dark:border-neutral-400 dark:text-neutral-400", + ], + stone: [ + "bg-stone-50 border-stone-500 text-stone-600", + "dark:bg-stone-500/10 dark:border-stone-400 dark:text-stone-400", + ], + red: [ + "bg-red-50 border-red-500 text-red-600", + "dark:bg-red-500/10 dark:border-red-400 dark:text-red-400", + ], + orange: [ + "bg-orange-50 border-orange-500 text-orange-600", + "dark:bg-orange-500/10 dark:border-orange-400 dark:text-orange-400", + ], + amber: [ + "bg-amber-50 border-amber-500 text-amber-600", + "dark:bg-amber-500/10 dark:border-amber-400 dark:text-amber-400", + ], + yellow: [ + "bg-yellow-50 border-yellow-500 text-yellow-600", + "dark:bg-yellow-500/10 dark:border-yellow-400 dark:text-yellow-400", + ], + lime: [ + "bg-lime-50 border-lime-500 text-lime-600", + "dark:bg-lime-500/10 dark:border-lime-400 dark:text-lime-400", + ], + green: [ + "bg-green-50 border-green-500 text-green-600", + "dark:bg-green-500/10 dark:border-green-400 dark:text-green-400", + ], + emerald: [ + "bg-emerald-50 border-emerald-500 text-emerald-600", + "dark:bg-emerald-500/10 dark:border-emerald-400 dark:text-emerald-400", + ], + teal: [ + "bg-teal-50 border-teal-500 text-teal-600", + "dark:bg-teal-500/10 dark:border-teal-400 dark:text-teal-400", + ], + cyan: [ + "bg-cyan-50 border-cyan-500 text-cyan-600", + "dark:bg-cyan-500/10 dark:border-cyan-400 dark:text-cyan-400", + ], + sky: [ + "bg-sky-50 border-sky-500 text-sky-600", + "dark:bg-sky-500/10 dark:border-sky-400 dark:text-sky-400", + ], + blue: [ + "bg-blue-50 border-blue-500 text-blue-600", + "dark:bg-blue-500/10 dark:border-blue-400 dark:text-blue-400", + ], + indigo: [ + "bg-indigo-50 border-indigo-500 text-indigo-600", + "dark:bg-indigo-500/10 dark:border-indigo-400 dark:text-indigo-400", + ], + violet: [ + "bg-violet-50 border-violet-500 text-violet-600", + "dark:bg-violet-500/10 dark:border-violet-400 dark:text-violet-400", + ], + purple: [ + "bg-purple-50 border-purple-500 text-purple-600", + "dark:bg-purple-500/10 dark:border-purple-400 dark:text-purple-400", + ], + fuchsia: [ + "bg-fuchsia-50 border-fuchsia-500 text-fuchsia-600", + "dark:bg-fuchsia-500/10 dark:border-fuchsia-400 dark:text-fuchsia-400", + ], + pink: [ + "bg-pink-50 border-pink-500 text-pink-600", + "dark:bg-pink-500/10 dark:border-pink-400 dark:text-pink-400", + ], + rose: [ + "bg-rose-50 border-rose-500 text-rose-600", + "dark:bg-rose-500/10 dark:border-rose-400 dark:text-rose-400", + ], + }, + }, + defaultVariants: { + color: "brand", + }, +}); -export interface CalloutProps extends React.HTMLAttributes { +interface CalloutProps extends React.HTMLAttributes { title: string; icon?: React.ElementType; color?: Color; } const Callout = React.forwardRef((props, ref) => { - const { title, icon, color, className, children, ...other } = props; - const Icon = icon; + const { title, icon: Icon, color, className, children, ...other } = props; + return ( -
    -
    - {Icon ? ( - - ) : null} -

    {title}

    +
    +
    + {Icon && } +

    {title}

    {children}

    @@ -59,4 +128,4 @@ const Callout = React.forwardRef((props, ref) => { Callout.displayName = "Callout"; -export default Callout; +export { Callout, type CalloutProps }; diff --git a/src/components/text-elements/Callout/index.ts b/src/components/text-elements/Callout/index.ts index 8880eb860..cbb3dbd16 100644 --- a/src/components/text-elements/Callout/index.ts +++ b/src/components/text-elements/Callout/index.ts @@ -1,2 +1,2 @@ -export { default as Callout } from "./Callout"; +export { Callout } from "./Callout"; export type { CalloutProps } from "./Callout"; diff --git a/src/components/text-elements/Italic/Italic.tsx b/src/components/text-elements/Italic/Italic.tsx deleted file mode 100644 index 3e05551f6..000000000 --- a/src/components/text-elements/Italic/Italic.tsx +++ /dev/null @@ -1,15 +0,0 @@ -import { tremorTwMerge } from "lib"; -import React from "react"; - -const Italic = React.forwardRef>((props, ref) => { - const { children, className, ...other } = props; - return ( - - {children} - - ); -}); - -Italic.displayName = "Italic"; - -export default Italic; diff --git a/src/components/text-elements/Italic/index.ts b/src/components/text-elements/Italic/index.ts deleted file mode 100644 index 833e33144..000000000 --- a/src/components/text-elements/Italic/index.ts +++ /dev/null @@ -1 +0,0 @@ -export { default as Italic } from "./Italic"; diff --git a/src/components/text-elements/Legend/Legend.tsx b/src/components/text-elements/Legend/Legend.tsx index 6ace484df..ae9f036cd 100644 --- a/src/components/text-elements/Legend/Legend.tsx +++ b/src/components/text-elements/Legend/Legend.tsx @@ -1,10 +1,34 @@ -import React, { useEffect, useCallback } from "react"; +"use"; +import React, { useCallback, useEffect } from "react"; -import { getColorClassNames, makeClassName, themeColorRange, Color, tremorTwMerge } from "lib"; -import { colorPalette } from "lib/theme"; import { ChevronLeftFill, ChevronRightFill } from "assets"; +import { Color, themeColorRange, tremorTwMerge } from "lib"; -const makeLegendClassName = makeClassName("Legend"); +const textColors: { [color in Color]: string } = { + brand: "text-tremor-brand-default", + slate: "text-slate-500", + gray: "text-gray-500", + zinc: "text-zinc-500", + neutral: "text-neutral-500", + stone: "text-stone-500", + red: "text-red-500", + orange: "text-orange-500", + amber: "text-amber-500", + yellow: "text-yellow-500", + lime: "text-lime-500", + green: "text-green-500", + emerald: "text-emerald-500", + teal: "text-teal-500", + cyan: "text-cyan-500", + sky: "text-sky-500", + blue: "text-blue-500", + indigo: "text-indigo-500", + violet: "text-violet-500", + purple: "text-purple-500", + fuchsia: "text-fuchsia-500", + pink: "text-pink-500", + rose: "text-rose-500", +}; export interface LegendItemProps { name: string; @@ -18,16 +42,8 @@ const LegendItem = ({ name, color, onClick, activeLegend }: LegendItemProps) => return (
  • { e.stopPropagation(); @@ -36,8 +52,8 @@ const LegendItem = ({ name, color, onClick, activeLegend }: LegendItemProps) => >

    {name} @@ -97,18 +107,10 @@ const ScrollButton = ({ icon, onClick, disabled }: ScrollButtonProps) => { - - - - +

    {Object.values(InputSizes).map((size) => ( <> - - -
    ); }, }; @@ -73,11 +64,7 @@ const SizesTemplate: Story = { const SizesTemplateNoText: Story = { render: ({ ...args }) => { return ( - - - - - +
    {Object.values(InputSizes).map((size) => ( <> @@ -87,7 +74,7 @@ const SizesTemplateNoText: Story = { ))} - +
    ); }, }; @@ -95,24 +82,21 @@ const SizesTemplateNoText: Story = { const ColorsTemplate: Story = { render: ({ ...args }) => { return ( - +
    {Object.values(BaseColors).map((color) => ( <> - ))} - +
    ); }, }; @@ -121,7 +105,7 @@ function LoadingState({ ...args }) { const [loading, setLoading] = useState(false); function RenderButtons(args: any, loading: any) { return ( - <> +
    @@ -134,7 +118,7 @@ function LoadingState({ ...args }) { - +
    ); } @@ -143,13 +127,13 @@ function LoadingState({ ...args }) { -
    +
    {Object.values(InputSizes).map((size, index) => ( {RenderButtons(args, loading)} ))}
    With Loading Text -
    +
    {RenderButtons({ ...args, loadingText: "Loading" }, loading)}
    @@ -170,7 +154,6 @@ export const Sizes: Story = { ...SizesTemplate, args: { onClick: () => alert(2), - className: "max-w-fit", }, }; @@ -197,14 +180,6 @@ export const Disabled: Story = { }, }; -export const TooltipDisabled: Story = { - args: { - children: "Disabled", - tooltip: "Disabled", - disabled: true, - }, -}; - export const LoadingStates: Story = { ...LoadingStateTemplate, args: {}, diff --git a/src/stories/input-elements/DatePicker.stories.tsx b/src/stories/input-elements/DatePicker.stories.tsx index 70a764f6c..58ba6db9a 100644 --- a/src/stories/input-elements/DatePicker.stories.tsx +++ b/src/stories/input-elements/DatePicker.stories.tsx @@ -8,10 +8,6 @@ import { fr } from "date-fns/locale"; const meta: Meta = { title: "UI/Input/DatePicker", component: DatePicker, - parameters: { - sourceLink: - "https://github.com/tremorlabs/tremor/tree/main/src/components/input-elements/DatePicker", - }, }; export default meta; diff --git a/src/stories/input-elements/DateRangePicker.stories.tsx b/src/stories/input-elements/DateRangePicker.stories.tsx index a6463825a..f495df471 100644 --- a/src/stories/input-elements/DateRangePicker.stories.tsx +++ b/src/stories/input-elements/DateRangePicker.stories.tsx @@ -10,10 +10,6 @@ const meta: Meta = { title: "UI/Input/DateRangePicker", component: DateRangePicker, decorators: [(Story) => ], - parameters: { - sourceLink: - "https://github.com/tremorlabs/tremor/tree/main/src/components/input-elements/DateRangePicker", - }, }; export default meta; diff --git a/src/stories/input-elements/MultiSelect.stories.tsx b/src/stories/input-elements/MultiSelect.stories.tsx index 52c2169c2..ba2ce59f3 100644 --- a/src/stories/input-elements/MultiSelect.stories.tsx +++ b/src/stories/input-elements/MultiSelect.stories.tsx @@ -13,10 +13,6 @@ import { CalendarIcon } from "assets"; const meta: Meta = { title: "UI/Input/MultiSelect", component: MultiSelect, - parameters: { - sourceLink: - "https://github.com/tremorlabs/tremor/tree/main/src/components/input-elements/MultiSelect", - }, }; export default meta; diff --git a/src/stories/input-elements/NumberInput.stories.tsx b/src/stories/input-elements/NumberInput.stories.tsx index 845aa44cb..619d41e20 100644 --- a/src/stories/input-elements/NumberInput.stories.tsx +++ b/src/stories/input-elements/NumberInput.stories.tsx @@ -7,10 +7,6 @@ import { SimpleNumberInput, SimpleNumberInputControlled } from "./helpers/Simple const meta: Meta = { title: "UI/Input/NumberInput", component: NumberInput, - parameters: { - sourceLink: - "https://github.com/tremorlabs/tremor/tree/main/src/components/input-elements/NumberInput", - }, }; export default meta; diff --git a/src/stories/input-elements/SearchSelect.stories.tsx b/src/stories/input-elements/SearchSelect.stories.tsx index cdb2ec044..fea5f64c5 100644 --- a/src/stories/input-elements/SearchSelect.stories.tsx +++ b/src/stories/input-elements/SearchSelect.stories.tsx @@ -4,9 +4,9 @@ import { SearchSelect } from "components"; import { SimpleSearchSelect, SimpleSearchSelectControlled, - SimpleSearchSelectWithStaticAndDynamicChildren, SimpleSearchSelectForm, SimpleSearchSelectServerSideRendering, + SimpleSearchSelectWithStaticAndDynamicChildren, } from "./helpers/SimpleSearchSelect"; import { CalendarIcon } from "assets"; @@ -14,10 +14,6 @@ import { CalendarIcon } from "assets"; const meta: Meta = { title: "UI/Input/SearchSelect", component: SearchSelect, - parameters: { - sourceLink: - "https://github.com/tremorlabs/tremor/tree/main/src/components/input-elements/SearchSelect", - }, }; export default meta; diff --git a/src/stories/input-elements/Select.stories.tsx b/src/stories/input-elements/Select.stories.tsx index 46e8d5456..a20549179 100644 --- a/src/stories/input-elements/Select.stories.tsx +++ b/src/stories/input-elements/Select.stories.tsx @@ -13,10 +13,6 @@ import { CalendarIcon } from "assets"; const meta: Meta = { title: "UI/Input/Select", component: Select, - parameters: { - sourceLink: - "https://github.com/tremorlabs/tremor/tree/main/src/components/input-elements/Select", - }, }; export default meta; diff --git a/src/stories/input-elements/Switch.stories.tsx b/src/stories/input-elements/Switch.stories.tsx index 47f633d7b..7547f380d 100644 --- a/src/stories/input-elements/Switch.stories.tsx +++ b/src/stories/input-elements/Switch.stories.tsx @@ -1,13 +1,23 @@ import type { Meta, StoryObj } from "@storybook/react"; import { Switch } from "components"; -import { SimpleSwitch, SimpleIdSwitch } from "./helpers/SimpleSwitch"; +import { BaseColors } from "lib"; +import React from "react"; +import { SimpleIdSwitch, SimpleSwitch } from "./helpers/SimpleSwitch"; const meta: Meta = { title: "UI/Input/Switch", component: Switch, - parameters: { - sourceLink: - "https://github.com/tremorlabs/tremor/tree/main/src/components/input-elements/Switch", +}; + +const SwitchTemplateColors: Story = { + render: () => { + return ( +
    + {Object.values(BaseColors).map((color) => ( + + ))} +
    + ); }, }; @@ -36,19 +46,6 @@ export const CustomColor: Story = { }, }; -export const Tooltip: Story = { - args: { - tooltip: "Action disabled", - }, -}; - -export const TooltipDisabled: Story = { - args: { - tooltip: "Action disabled", - disabled: true, - }, -}; - export const Controlled: Story = { render: SimpleSwitch, }; @@ -73,3 +70,7 @@ export const Id: Story = { required: true, }, }; + +export const Colors: Story = { + ...SwitchTemplateColors, +}; diff --git a/src/stories/input-elements/Tabs.stories.tsx b/src/stories/input-elements/Tabs.stories.tsx index cf2685cf5..22a90d199 100644 --- a/src/stories/input-elements/Tabs.stories.tsx +++ b/src/stories/input-elements/Tabs.stories.tsx @@ -9,9 +9,6 @@ import { BaseColors, Color } from "lib"; const meta: Meta = { title: "UI/Input/Tabs", component: TabGroup, - parameters: { - sourceLink: "https://github.com/tremorlabs/tremor/tree/main/src/components/input-elements/Tabs", - }, }; export default meta; diff --git a/src/stories/input-elements/TextArea.stories.tsx b/src/stories/input-elements/TextArea.stories.tsx index a9ae62ffe..768cfafca 100644 --- a/src/stories/input-elements/TextArea.stories.tsx +++ b/src/stories/input-elements/TextArea.stories.tsx @@ -5,10 +5,6 @@ import React from "react"; const meta: Meta = { title: "UI/Input/Textarea", component: Textarea, - parameters: { - sourceLink: - "https://github.com/tremorlabs/tremor/tree/main/src/components/input-elements/Textarea", - }, }; export default meta; diff --git a/src/stories/input-elements/TextInput.stories.tsx b/src/stories/input-elements/TextInput.stories.tsx index 57bc7c1eb..a8926a37f 100644 --- a/src/stories/input-elements/TextInput.stories.tsx +++ b/src/stories/input-elements/TextInput.stories.tsx @@ -7,10 +7,6 @@ import { SimpleTextInput } from "./helpers/SimpleTextInput"; const meta: Meta = { title: "UI/Input/TextInput", component: TextInput, - parameters: { - sourceLink: - "https://github.com/tremorlabs/tremor/tree/main/src/components/input-elements/TextInput", - }, }; export default meta; diff --git a/src/stories/input-elements/helpers/SimpleMultiSelect.tsx b/src/stories/input-elements/helpers/SimpleMultiSelect.tsx index 5db12adfb..4a647210f 100644 --- a/src/stories/input-elements/helpers/SimpleMultiSelect.tsx +++ b/src/stories/input-elements/helpers/SimpleMultiSelect.tsx @@ -25,7 +25,7 @@ export const SimpleMultiSelectWithStaticAndDynamicChildren = (args: any) => { export const SimpleMultiSelectForm = (args: any) => { return (
    diff --git a/src/stories/input-elements/helpers/SimpleSearchSelect.tsx b/src/stories/input-elements/helpers/SimpleSearchSelect.tsx index de9f52420..e09b4625e 100644 --- a/src/stories/input-elements/helpers/SimpleSearchSelect.tsx +++ b/src/stories/input-elements/helpers/SimpleSearchSelect.tsx @@ -30,7 +30,7 @@ export const SimpleSearchSelectWithStaticAndDynamicChildren = (args: any) => { export const SimpleSearchSelectForm = (args: any) => { return ( diff --git a/src/stories/input-elements/helpers/SimpleSelect.tsx b/src/stories/input-elements/helpers/SimpleSelect.tsx index 4640f2b82..0adc7a499 100644 --- a/src/stories/input-elements/helpers/SimpleSelect.tsx +++ b/src/stories/input-elements/helpers/SimpleSelect.tsx @@ -80,7 +80,7 @@ export function SimpleSelectControlled() { export const SimpleSelectForm = (args: any) => { return ( diff --git a/src/stories/input-elements/helpers/SimpleSwitch.tsx b/src/stories/input-elements/helpers/SimpleSwitch.tsx index ce898b1cc..fb17b602a 100644 --- a/src/stories/input-elements/helpers/SimpleSwitch.tsx +++ b/src/stories/input-elements/helpers/SimpleSwitch.tsx @@ -16,7 +16,7 @@ export const SimpleSwitch = (args: any) => { -
    +
    @@ -43,11 +43,11 @@ export const SimpleIdSwitch = (args: any) => { }} onReset={() => setChecked(false)} > -
    +
    -
    +
    diff --git a/src/stories/layout-elements/Accordion.stories.tsx b/src/stories/layout-elements/Accordion.stories.tsx index 7fa0e7ea5..9431904c4 100644 --- a/src/stories/layout-elements/Accordion.stories.tsx +++ b/src/stories/layout-elements/Accordion.stories.tsx @@ -6,10 +6,6 @@ import { SimpleAccordion } from "./helpers/SimpleAccordion"; const meta: Meta = { title: "UI/Layout/Accordion", component: Accordion, - parameters: { - sourceLink: - "https://github.com/tremorlabs/tremor/tree/main/src/components/layout-elements/Accordion", - }, }; export default meta; diff --git a/src/stories/layout-elements/AccordionList.stories.tsx b/src/stories/layout-elements/AccordionList.stories.tsx index cd0070ff4..c81db92fd 100644 --- a/src/stories/layout-elements/AccordionList.stories.tsx +++ b/src/stories/layout-elements/AccordionList.stories.tsx @@ -8,10 +8,6 @@ import { SimpleAccordion, SimpleAccordionList } from "./helpers/SimpleAccordion" const meta: Meta = { title: "UI/Layout/AccordionList", component: AccordionList, - parameters: { - sourceLink: - "https://github.com/tremorlabs/tremor/tree/main/src/components/layout-elements/Accordion", - }, }; export default meta; diff --git a/src/stories/layout-elements/Card.stories.tsx b/src/stories/layout-elements/Card.stories.tsx index a1c881166..9404a2e5c 100644 --- a/src/stories/layout-elements/Card.stories.tsx +++ b/src/stories/layout-elements/Card.stories.tsx @@ -1,7 +1,7 @@ import React from "react"; -import { Card, Grid } from "components"; -import { BaseColors, HorizontalPosition, VerticalPosition } from "lib"; +import { Card } from "components"; +import { BaseColors } from "lib"; import { SimpleCard } from "./helpers/SimpleCard"; import type { Meta, StoryObj } from "@storybook/react"; @@ -9,10 +9,6 @@ import type { Meta, StoryObj } from "@storybook/react"; const meta: Meta = { title: "UI/Layout/Card", component: Card, - parameters: { - sourceLink: - "https://github.com/tremorlabs/tremor/tree/main/src/components/layout-elements/Card", - }, }; export default meta; @@ -24,28 +20,24 @@ export const Default: Story = { export const DecorationPosition: Story = { render: (args) => ( - +
    {["left", "top", "right", "bottom", "mistyped"].map((position) => ( - +

    {`Decoration ${position}`}

    ))} - +
    ), }; export const DecorationColors: Story = { render: (args) => ( - +
    {Object.values(BaseColors).map((color) => (

    {`Decoration Color: ${color}`}

    ))} - +
    ), }; diff --git a/src/stories/layout-elements/Dialog.stories.tsx b/src/stories/layout-elements/Dialog.stories.tsx index ec5ab7f74..d85b01da4 100644 --- a/src/stories/layout-elements/Dialog.stories.tsx +++ b/src/stories/layout-elements/Dialog.stories.tsx @@ -1,15 +1,34 @@ import type { Meta, StoryObj } from "@storybook/react"; -import { Dialog } from "components"; -import SimpleDialog from "./helpers/SimpleDialog"; +import { Dialog, DialogPanel, Button } from "components"; +import React from "react"; + +const SimpleDialog = () => { + const [isOpen, setIsOpen] = React.useState(false); + return ( + <> +
    + +
    + setIsOpen(val)} static={true}> + +

    Account Created Successfully

    + Your account has been created successfully. You can now login to your account. For more + information, please contact us. +
    + +
    +
    +
    + + ); +}; const meta: Meta = { title: "UI/Layout/Dialog", component: Dialog, - parameters: { - sourceLink: - "https://github.com/tremorlabs/tremor/tree/main/src/components/layout-elements/Dialog", - }, }; export default meta; diff --git a/src/stories/layout-elements/Divider.stories.tsx b/src/stories/layout-elements/Divider.stories.tsx index e7b1f7323..1d7b0e8e7 100644 --- a/src/stories/layout-elements/Divider.stories.tsx +++ b/src/stories/layout-elements/Divider.stories.tsx @@ -8,10 +8,6 @@ import { SimpleCard } from "stories/layout-elements/helpers/SimpleCard"; const meta: Meta = { title: "UI/Layout/Divider", component: Divider, - parameters: { - sourceLink: - "https://github.com/tremorlabs/tremor/tree/main/src/components/layout-elements/Divider", - }, }; export default meta; diff --git a/src/stories/layout-elements/Flex.stories.tsx b/src/stories/layout-elements/Flex.stories.tsx deleted file mode 100644 index 78db6097f..000000000 --- a/src/stories/layout-elements/Flex.stories.tsx +++ /dev/null @@ -1,96 +0,0 @@ -import React from "react"; - -import type { Meta, StoryObj } from "@storybook/react"; - -import { Card, Flex, Metric } from "components"; -import { SimpleCard } from "stories/layout-elements/helpers/SimpleCard"; -import { SimpleText } from "stories/layout-elements/helpers/SimpleText"; - -const meta: Meta = { - title: "UI/Layout/Flex", - component: Flex, - parameters: { - sourceLink: - "https://github.com/tremorlabs/tremor/tree/main/src/components/layout-elements/Flex", - }, -}; - -export default meta; -type Story = StoryObj; - -const MaxWidthSmTemplate: Story = { - render: ({ ...args }) => ( - -
    - -
    -
    - - $ 40,000 - - -
    -
    - ), -}; - -const WFullTemplate: Story = { - render: ({ ...args }) => ( - - - - $ 40,000 - - - - ), -}; - -export const Default: Story = { - ...MaxWidthSmTemplate, - args: {}, -}; - -export const JustifyEnd: Story = { - ...MaxWidthSmTemplate, - args: { - justifyContent: "end", - }, -}; - -export const JustifyStart: Story = { - ...MaxWidthSmTemplate, - args: { - justifyContent: "start", - }, -}; - -export const ItemsStart: Story = { - ...MaxWidthSmTemplate, - args: { - alignItems: "start", - }, -}; - -export const ItemsEnd: Story = { - ...MaxWidthSmTemplate, - args: { - alignItems: "end", - }, -}; - -export const ItemsStretch: Story = { - ...WFullTemplate, - args: { - alignItems: "stretch", - }, -}; - -export const SpaceX: Story = { - ...MaxWidthSmTemplate, - args: { - justifyContent: "start", - alignItems: "baseline", - className: "space-x-8", - }, -}; diff --git a/src/stories/layout-elements/Grid.stories.tsx b/src/stories/layout-elements/Grid.stories.tsx deleted file mode 100644 index fa5dde0f6..000000000 --- a/src/stories/layout-elements/Grid.stories.tsx +++ /dev/null @@ -1,37 +0,0 @@ -import React from "react"; - -import type { Meta, StoryObj } from "@storybook/react"; - -import { Card, Col, Grid, Metric } from "components"; -import { SimpleCard } from "./helpers/SimpleCard"; -import { SimpleText } from "./helpers/SimpleText"; - -const meta: Meta = { - title: "UI/Layout/Grid", - component: Grid, - parameters: { - sourceLink: - "https://github.com/tremorlabs/tremor/tree/main/src/components/layout-elements/Grid", - }, -}; - -export default meta; -type Story = StoryObj; - -export const ThreeItems: Story = { - render: ({ ...args }) => ( - -
  • - - - - - - - $ 40,000 - - - - ), - args: { numItemsMd: 3, className: "gap-x-2 gap-y-2" }, -}; diff --git a/src/stories/layout-elements/helpers/SimpleAccordion.tsx b/src/stories/layout-elements/helpers/SimpleAccordion.tsx index 1e0bbaa91..30496cb49 100644 --- a/src/stories/layout-elements/helpers/SimpleAccordion.tsx +++ b/src/stories/layout-elements/helpers/SimpleAccordion.tsx @@ -1,7 +1,9 @@ import React from "react"; import { ArrowRightIcon } from "assets"; -import { Accordion, AccordionBody, AccordionHeader, AccordionList, Callout } from "components"; +import { Accordion, AccordionList, Callout } from "components"; +import { AccordionBody } from "components/layout-elements/Accordion/AccordionBody"; +import { AccordionHeader } from "components/layout-elements/Accordion/AccordionHeader"; export const SimpleAccordion = (args: any) => ( diff --git a/src/stories/layout-elements/helpers/SimpleCard.tsx b/src/stories/layout-elements/helpers/SimpleCard.tsx index 2643f0b7f..aca7cbd20 100644 --- a/src/stories/layout-elements/helpers/SimpleCard.tsx +++ b/src/stories/layout-elements/helpers/SimpleCard.tsx @@ -1,13 +1,13 @@ import React from "react"; -import { BadgeDelta, Card, Flex, Metric, Text } from "components"; +import { Card } from "components"; export const SimpleCard = (args: any) => ( - - 23,000 - 19.14% - - Sample Text +

    23,000

    +

    + Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus tempor lorem non est congue + blandit. Praesent non lorem sodales, suscipit est sed, hendrerit dolor.{" "} +

    ); diff --git a/src/stories/layout-elements/helpers/SimpleDialog.tsx b/src/stories/layout-elements/helpers/SimpleDialog.tsx deleted file mode 100644 index e48349ac7..000000000 --- a/src/stories/layout-elements/helpers/SimpleDialog.tsx +++ /dev/null @@ -1,26 +0,0 @@ -import React, { useState } from "react"; -import { Dialog, DialogPanel, Button, Title } from "components"; - -const SimpleDialog = () => { - const [isOpen, setIsOpen] = useState(false); - return ( - <> -
    - -
    - setIsOpen(val)} static={true}> - - Account Created Successfully - Your account has been created successfully. You can now login to your account. For more - information, please contact us. -
    - -
    -
    -
    - - ); -}; -export default SimpleDialog; diff --git a/src/stories/layout-elements/helpers/SimpleText.tsx b/src/stories/layout-elements/helpers/SimpleText.tsx deleted file mode 100644 index ca1215ada..000000000 --- a/src/stories/layout-elements/helpers/SimpleText.tsx +++ /dev/null @@ -1,15 +0,0 @@ -import React from "react"; - -import { Text } from "components"; - -export const SimpleText = () => ( - - Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been - the industry's standard dummy text ever since the 900s, when an unknown printer took a - galley of type and scrambled it to make a type specimen book. It has survived not only five - centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It - was popularized in the 1960s with the release of Letraset sheets containing Lorem Ipsum - passages, and more recently with desktop publishing software like Aldus PageMaker including - versions of Lorem Ipsum. - -); diff --git a/src/stories/list-elements/List.stories.tsx b/src/stories/list-elements/List.stories.tsx index c89e38ea9..b92cb410a 100644 --- a/src/stories/list-elements/List.stories.tsx +++ b/src/stories/list-elements/List.stories.tsx @@ -6,9 +6,6 @@ import { List, ListItem } from "components"; const meta: Meta = { title: "UI/List/List", component: List, - parameters: { - sourceLink: "https://github.com/tremorlabs/tremor/tree/main/src/components/list-elements/List", - }, }; export default meta; diff --git a/src/stories/list-elements/Table.stories.tsx b/src/stories/list-elements/Table.stories.tsx index b0b1d448f..f08a7e778 100644 --- a/src/stories/list-elements/Table.stories.tsx +++ b/src/stories/list-elements/Table.stories.tsx @@ -1,17 +1,19 @@ import React from "react"; import type { Meta, StoryObj } from "@storybook/react"; -import { Table, TableBody, TableCell, TableHead, TableHeaderCell, TableRow } from "components"; - -import BadgeDelta from "components/icon-elements/BadgeDelta/BadgeDelta"; -import { DeltaType } from "lib"; +import { + Badge, + Table, + TableBody, + TableCell, + TableHead, + TableHeaderCell, + TableRow, +} from "components"; const meta: Meta = { title: "UI/List/Table", component: Table, - parameters: { - sourceLink: "https://github.com/tremorlabs/tremor/tree/main/src/components/list-elements/Table", - }, }; export default meta; @@ -24,7 +26,6 @@ const data = [ sales: "1.000.000", region: "Region A", status: "overperforming", - deltaType: "moderateIncrease", hours: 100, }, { @@ -33,7 +34,6 @@ const data = [ sales: "2.202.000", region: "Region B", status: "overperforming", - deltaType: "moderateIncrease", hours: 110, }, { @@ -42,7 +42,6 @@ const data = [ sales: "1.505.000", region: "Region C", status: "underperforming", - deltaType: "moderateDecrease", hours: 90, }, { @@ -51,7 +50,6 @@ const data = [ sales: "500000", region: "Region D", status: "overperforming", - deltaType: "moderateDecrease", hours: 92, }, { @@ -60,7 +58,6 @@ const data = [ sales: "600000", region: "Region E", status: "underperforming", - deltaType: "moderateDecrease", hours: 95, }, { @@ -69,7 +66,6 @@ const data = [ sales: "700000", region: "Region F", status: "overperforming", - deltaType: "moderateIncrease", hours: 98, }, { @@ -78,7 +74,6 @@ const data = [ sales: "800000", region: "Region G", status: "average", - deltaType: "unchanged", hours: 101, }, { @@ -87,7 +82,6 @@ const data = [ sales: "900000", region: "Region H", status: "overperforming", - deltaType: "moderateDecrease", hours: 104, }, { @@ -96,7 +90,6 @@ const data = [ sales: "1000000", region: "Region I", status: "underperforming", - deltaType: "moderateIncrease", hours: 107, }, { @@ -105,7 +98,6 @@ const data = [ sales: "1100000", region: "Region J", status: "average", - deltaType: "unchanged", hours: 110, }, { @@ -114,7 +106,6 @@ const data = [ sales: "1200000", region: "Region K", status: "underperforming", - deltaType: "moderateDecrease", hours: 113, }, { @@ -123,7 +114,6 @@ const data = [ sales: "1300000", region: "Region L", status: "overperforming", - deltaType: "moderateIncrease", hours: 116, }, { @@ -132,7 +122,6 @@ const data = [ sales: "1400000", region: "Region M", status: "underperforming", - deltaType: "moderateDecrease", hours: 119, }, ]; @@ -156,9 +145,7 @@ export const Default: Story = { {item.sales} {item.region} - - {item.status} - + {item.status} {item.hours} diff --git a/src/stories/spark-elements/SparkAreaChart.stories.tsx b/src/stories/spark-elements/SparkAreaChart.stories.tsx index bc6c4bcb6..f74a01704 100644 --- a/src/stories/spark-elements/SparkAreaChart.stories.tsx +++ b/src/stories/spark-elements/SparkAreaChart.stories.tsx @@ -2,13 +2,13 @@ import React from "react"; import type { Meta, StoryObj } from "@storybook/react"; +import { SparkAreaChart } from "components/spark-elements"; import { simpleBaseChartData as data, longBaseChartData, simpleBaseChartDataWithNulls, singleAndMultipleData, } from "../chart-elements/helpers/testData"; -import { SparkAreaChart } from "components/spark-elements"; import ExampleCard from "./helpers/ExampleCard"; import { smallVariantionDatas } from "./helpers/testData"; @@ -21,10 +21,6 @@ const meta: Meta = { data, colors: ["emerald", "rose"], }, - parameters: { - sourceLink: - "https://github.com/tremorlabs/tremor/tree/main/src/components/spark-elements/SparkAreaChart", - }, }; export default meta; @@ -42,12 +38,6 @@ export const OtherColors: Story = { args: { colors: ["rose", "purple"] }, }; -export const CustomColors: Story = { - args: { - colors: ["#32a852", "orange-600"], - }, -}; - export const NoGradient: Story = { args: { showGradient: false }, }; diff --git a/src/stories/spark-elements/SparkBarChart.stories.tsx b/src/stories/spark-elements/SparkBarChart.stories.tsx index 404e76b81..2eb4b6d2e 100644 --- a/src/stories/spark-elements/SparkBarChart.stories.tsx +++ b/src/stories/spark-elements/SparkBarChart.stories.tsx @@ -2,13 +2,13 @@ import React from "react"; import type { Meta, StoryObj } from "@storybook/react"; +import { SparkBarChart } from "components/spark-elements"; import { simpleBaseChartData as data, longBaseChartData, simpleBaseChartWithNegativeValues, singleAndMultipleData, } from "../chart-elements/helpers/testData"; -import { SparkBarChart } from "components/spark-elements"; import ExampleCard from "./helpers/ExampleCard"; import { smallVariantionDatas } from "./helpers/testData"; @@ -21,10 +21,6 @@ const meta: Meta = { data, colors: ["emerald", "rose"], }, - parameters: { - sourceLink: - "https://github.com/tremorlabs/tremor/tree/main/src/components/spark-elements/SparkBarChart", - }, }; export default meta; @@ -52,10 +48,6 @@ export const OtherColors: Story = { args: { colors: ["blue", "green"] }, }; -export const CustomColors: Story = { - args: { colors: ["#32a852", "orange-600"] }, -}; - export const ChangedCategoriesOrder: Story = { args: { categories: ["Successful Payments", "Sales"] }, }; diff --git a/src/stories/spark-elements/SparkLineChart.stories.tsx b/src/stories/spark-elements/SparkLineChart.stories.tsx index f151c0b7b..891312b1b 100644 --- a/src/stories/spark-elements/SparkLineChart.stories.tsx +++ b/src/stories/spark-elements/SparkLineChart.stories.tsx @@ -2,13 +2,13 @@ import React from "react"; import type { Meta, StoryObj } from "@storybook/react"; +import { SparkLineChart } from "components/spark-elements"; import { simpleBaseChartData as data, longBaseChartData, simpleBaseChartDataWithNulls, singleAndMultipleData, } from "../chart-elements/helpers/testData"; -import { SparkLineChart } from "components/spark-elements"; import ExampleCard from "./helpers/ExampleCard"; import { smallVariantionDatas } from "./helpers/testData"; @@ -21,10 +21,6 @@ const meta: Meta = { data, colors: ["emerald", "rose"], }, - parameters: { - sourceLink: - "https://github.com/tremorlabs/tremor/tree/main/src/components/spark-elements/SparkLineChart", - }, }; export default meta; @@ -36,12 +32,6 @@ export const OtherColors: Story = { args: { colors: ["rose", "purple"] }, }; -export const CustomColors: Story = { - args: { - colors: ["#32a852", "orange-600"], - }, -}; - export const ChangedCategoriesOrder: Story = { args: { categories: ["Successful Payments", "Sales"] }, }; diff --git a/src/stories/spark-elements/helpers/ExampleCard.tsx b/src/stories/spark-elements/helpers/ExampleCard.tsx index 791be6492..b720a9ed9 100644 --- a/src/stories/spark-elements/helpers/ExampleCard.tsx +++ b/src/stories/spark-elements/helpers/ExampleCard.tsx @@ -1,16 +1,16 @@ import React from "react"; -import { Card, Title } from "components"; +import { Card } from "components"; const ExampleCard = ({ children }: { children: React.ReactNode }) => ( - +
    - AAPL +

    AAPL

    Apple Inc.
    {children}
    - 196.26 +

    196.26

    +2.69%
    diff --git a/src/stories/text-elements/Callout.stories.tsx b/src/stories/text-elements/Callout.stories.tsx index 2b7b05eef..7058fcaac 100644 --- a/src/stories/text-elements/Callout.stories.tsx +++ b/src/stories/text-elements/Callout.stories.tsx @@ -9,10 +9,6 @@ import { BaseColors } from "lib/constants"; const meta: Meta = { title: "UI/Text/Callout", component: Callout, - parameters: { - sourceLink: - "https://github.com/tremorlabs/tremor/tree/main/src/components/text-elements/Callout", - }, }; export default meta; @@ -20,18 +16,13 @@ type Story = StoryObj; const CalloutTemplate: Story = { render: ({ ...args }) => ( - <> -
    - -
    -
    - {Object.values(BaseColors).map((color) => ( -
    - -
    - ))} -
    - +
    + {Object.values(BaseColors).map((color) => ( +
    + +
    + ))} +
    ), }; diff --git a/src/stories/text-elements/Legend.stories.tsx b/src/stories/text-elements/Legend.stories.tsx index e181eeedf..e7851ba67 100644 --- a/src/stories/text-elements/Legend.stories.tsx +++ b/src/stories/text-elements/Legend.stories.tsx @@ -14,19 +14,12 @@ const meta: Meta = { "Category D", ], }, - parameters: { - sourceLink: - "https://github.com/tremorlabs/tremor/tree/main/src/components/text-elements/Legend", - }, }; export default meta; type Story = StoryObj; function LegendComponent(args: any) { - // if (args.onClickLegendItem?.length === 0) { - // args.onClickLegendItem = undefined; - // } return ; } diff --git a/src/stories/text-elements/Metric.stories.tsx b/src/stories/text-elements/Metric.stories.tsx deleted file mode 100644 index 7a8eba802..000000000 --- a/src/stories/text-elements/Metric.stories.tsx +++ /dev/null @@ -1,33 +0,0 @@ -import React from "react"; - -import type { Meta, StoryObj } from "@storybook/react"; -import { Metric } from "components"; -import { BaseColors } from "lib/constants"; - -const meta: Meta = { - title: "UI/Text/Metric", - component: Metric, - parameters: { - sourceLink: - "https://github.com/tremorlabs/tremor/tree/main/src/components/text-elements/Metric", - }, -}; - -export default meta; -type Story = StoryObj; - -export const Default: Story = { - args: { children: "USD 80.000" }, -}; - -export const Colors: Story = { - render: (args) => ( - <> - - {Object.values(BaseColors).map((color) => ( - - ))} - - ), - args: { children: "USD 80.000" }, -}; diff --git a/src/stories/text-elements/Subtitle.stories.tsx b/src/stories/text-elements/Subtitle.stories.tsx deleted file mode 100644 index fd1afd150..000000000 --- a/src/stories/text-elements/Subtitle.stories.tsx +++ /dev/null @@ -1,31 +0,0 @@ -import type { Meta, StoryObj } from "@storybook/react"; - -import Subtitle from "components/text-elements/Subtitle/Subtitle"; - -const meta: Meta = { - title: "UI/Text/Subtitle", - component: Subtitle, - parameters: { - sourceLink: - "https://github.com/tremorlabs/tremor/tree/main/src/components/text-elements/Subtitle", - }, -}; - -export default meta; -type Story = StoryObj; - -export const Default: Story = { - args: { - children: - "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus tempor lorem non est congue blandit. Praesent non lorem sodales, suscipit est sed, hendrerit dolor.", - }, -}; - -export const Color: Story = { - args: { - children: - "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus tempor lorem non est congue blandit. Praesent non lorem sodales, suscipit est sed, hendrerit dolor.", - color: "green", - className: "text-left", - }, -}; diff --git a/src/stories/text-elements/Text.stories.tsx b/src/stories/text-elements/Text.stories.tsx deleted file mode 100644 index e78e4c71c..000000000 --- a/src/stories/text-elements/Text.stories.tsx +++ /dev/null @@ -1,46 +0,0 @@ -import type { Meta, StoryObj } from "@storybook/react"; - -import { Text } from "components"; - -const meta: Meta = { - title: "UI/Text/Text", - component: Text, - args: { - children: - "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus tempor lorem non est congue blandit. Praesent non lorem sodales, suscipit est sed, hendrerit dolor.", - }, - parameters: { - sourceLink: "https://github.com/tremorlabs/tremor/tree/main/src/components/text-elements/Text", - }, -}; - -export default meta; -type Story = StoryObj; - -export const Default: Story = { - args: {}, -}; - -export const TextCenter: Story = { - args: { - className: "text-center", - }, -}; - -export const TextRight: Story = { - args: { - className: "text-right", - }, -}; - -export const TextJustify: Story = { - args: { - className: "text-justify", - }, -}; - -export const Color: Story = { - args: { - color: "green", - }, -}; diff --git a/src/stories/text-elements/TextElements.stories.tsx b/src/stories/text-elements/TextElements.stories.tsx deleted file mode 100644 index f7edd86c8..000000000 --- a/src/stories/text-elements/TextElements.stories.tsx +++ /dev/null @@ -1,27 +0,0 @@ -import React from "react"; - -import type { Meta, StoryObj } from "@storybook/react"; - -import { Bold, Italic, Text, Title } from "components"; - -const meta: Meta = { - title: "UI/Text/TextElements", - component: Title, - parameters: { - sourceLink: "https://github.com/tremorlabs/tremor/tree/main/src/components/text-elements", - }, -}; - -export default meta; -type Story = StoryObj; - -export const Default: Story = { - render: () => ( - - Text with bold text and Italics Text and{" "} - - Bold italics text - - - ), -}; diff --git a/src/stories/text-elements/Title.stories.tsx b/src/stories/text-elements/Title.stories.tsx deleted file mode 100644 index a9c323c85..000000000 --- a/src/stories/text-elements/Title.stories.tsx +++ /dev/null @@ -1,29 +0,0 @@ -import React from "react"; - -import { Meta, StoryObj } from "@storybook/react"; - -import { Title } from "components"; - -const meta: Meta = { - title: "UI/Text/Title", - component: Title, - parameters: { - sourceLink: "https://github.com/tremorlabs/tremor/tree/main/src/components/text-elements/Title", - }, -}; - -export default meta; -type Story = StoryObj; - -export const Default: Story = { - render: (args) => Title, -}; - -export const Color: Story = { - render: (args) => Title, - args: { - color: "green", - className: "text-left", - children: null, - }, -}; diff --git a/src/stories/vis-elements/BarList.stories.tsx b/src/stories/vis-elements/BarList.stories.tsx index 057761575..a2c10b8e2 100644 --- a/src/stories/vis-elements/BarList.stories.tsx +++ b/src/stories/vis-elements/BarList.stories.tsx @@ -10,10 +10,6 @@ import { BaseColors } from "lib"; const meta: Meta = { title: "Visualizations/Vis/BarList", component: BarList, - parameters: { - sourceLink: - "https://github.com/tremorlabs/tremor/tree/main/src/components/vis-elements/BarList", - }, }; export default meta; diff --git a/src/stories/vis-elements/CategoryBar.stories.tsx b/src/stories/vis-elements/CategoryBar.stories.tsx index 8555319eb..476ddea34 100644 --- a/src/stories/vis-elements/CategoryBar.stories.tsx +++ b/src/stories/vis-elements/CategoryBar.stories.tsx @@ -1,16 +1,12 @@ import React from "react"; import type { Meta, StoryObj } from "@storybook/react"; -import CategoryBar from "components/vis-elements/CategoryBar/CategoryBar"; +import { CategoryBar } from "components"; const meta: Meta = { title: "Visualizations/Vis/CategoryBar", component: CategoryBar, render: (args) => , - parameters: { - sourceLink: - "https://github.com/tremorlabs/tremor/tree/main/src/components/vis-elements/CategoryBar", - }, }; export default meta; diff --git a/src/stories/vis-elements/DeltaBar.stories.tsx b/src/stories/vis-elements/DeltaBar.stories.tsx deleted file mode 100644 index ae6a81c27..000000000 --- a/src/stories/vis-elements/DeltaBar.stories.tsx +++ /dev/null @@ -1,41 +0,0 @@ -import React from "react"; - -import type { Meta, StoryObj } from "@storybook/react"; -import { DeltaBar } from "components"; - -const meta: Meta = { - title: "Visualizations/Vis/DeltaBar", - component: DeltaBar, - render: (args) => , - parameters: { - sourceLink: - "https://github.com/tremorlabs/tremor/tree/main/src/components/vis-elements/DeltaBar", - }, -}; - -export default meta; -type Story = StoryObj; - -export const Increase: Story = { - args: { - value: 30, - className: "mt-5", - tooltip: "30%", - }, -}; - -export const Decrease: Story = { - args: { - value: -50, - className: "mt-5", - tooltip: "-50%", - }, -}; - -export const IncreaseReversed: Story = { - args: { - value: 50, - isIncreasePositive: false, - className: "mt-5", - }, -}; diff --git a/src/stories/vis-elements/MarkerBar.stories.tsx b/src/stories/vis-elements/MarkerBar.stories.tsx index 940dcd374..e034442c2 100644 --- a/src/stories/vis-elements/MarkerBar.stories.tsx +++ b/src/stories/vis-elements/MarkerBar.stories.tsx @@ -1,17 +1,14 @@ import React from "react"; import type { Meta, StoryObj } from "@storybook/react"; -import MarkerBar from "components/vis-elements/MarkerBar/MarkerBar"; + +import { MarkerBar } from "components"; import { BaseColors } from "lib/constants"; const meta: Meta = { title: "Visualizations/Vis/MarkerBar", component: MarkerBar, render: (args) => , - parameters: { - sourceLink: - "https://github.com/tremorlabs/tremor/tree/main/src/components/vis-elements/MarkerBar", - }, }; export default meta; diff --git a/src/stories/vis-elements/ProgressBar.stories.tsx b/src/stories/vis-elements/ProgressBar.stories.tsx index 666fb9a33..ef5901b4e 100644 --- a/src/stories/vis-elements/ProgressBar.stories.tsx +++ b/src/stories/vis-elements/ProgressBar.stories.tsx @@ -10,10 +10,6 @@ const meta: Meta = { title: "Visualizations/Vis/ProgressBar", component: ProgressBar, render: (args) => , - parameters: { - sourceLink: - "https://github.com/tremorlabs/tremor/tree/main/src/components/vis-elements/ProgressBar", - }, }; export default meta; diff --git a/src/stories/vis-elements/ProgressCircle.stories.tsx b/src/stories/vis-elements/ProgressCircle.stories.tsx index d3f4fdf13..c2ceca122 100644 --- a/src/stories/vis-elements/ProgressCircle.stories.tsx +++ b/src/stories/vis-elements/ProgressCircle.stories.tsx @@ -8,10 +8,6 @@ const meta: Meta = { title: "Visualizations/Vis/ProgressCircle", component: ProgressCircle, render: (args) => , - parameters: { - sourceLink: - "https://github.com/tremorlabs/tremor/tree/main/src/components/vis-elements/ProgressCircle", - }, }; export default meta; @@ -73,7 +69,7 @@ export const withChildrenSpan: Story = { args: { value: 56, showAnimation: false, - children: 56.3, + children: 56.3, }, }; @@ -81,7 +77,7 @@ export const withChildrenAvatar: Story = { args: { value: 76, children: ( -
    +
    JD
    ), diff --git a/src/stories/vis-elements/Tracker.stories.tsx b/src/stories/vis-elements/Tracker.stories.tsx index c14a3d0de..6a5bb200f 100644 --- a/src/stories/vis-elements/Tracker.stories.tsx +++ b/src/stories/vis-elements/Tracker.stories.tsx @@ -104,10 +104,6 @@ const meta: Meta = { data: data, }, render: (args) => , - parameters: { - sourceLink: - "https://github.com/tremorlabs/tremor/tree/main/src/components/vis-elements/Tracker", - }, }; export default meta; @@ -130,18 +126,3 @@ export const MaxWidthXs: Story = { ), }; - -export const CustomColors: Story = { - args: { - data: [ - { color: "#32a852", tooltip: "Tracker Info" }, - { color: "#fcba03", tooltip: "Tracker Info" }, - { color: "orange-500", tooltip: "Tracker Info" }, - { color: "purple-100", tooltip: "Tracker Info" }, - { color: "purple-300", tooltip: "Tracker Info" }, - { color: "purple-500", tooltip: "Tracker Info" }, - { color: "purple-700", tooltip: "Tracker Info" }, - { color: "purple-900", tooltip: "Tracker Info" }, - ], - }, -}; diff --git a/src/styles.css b/src/styles.css index 21356562e..713b72786 100644 --- a/src/styles.css +++ b/src/styles.css @@ -1,5 +1,109 @@ -@tailwind base; -@tailwind components; -@tailwind utilities; +@import "tailwindcss"; -/* Do not any styles here. Use Tailwnd arbitrary properties */ +@theme { + /* Shadows */ + --shadow-tremor-input: var(--shadow-input); + --shadow-tremor-card: var(--shadow-card); + --shadow-tremor-dropdown: var(--shadow-dropdown); + + /* Border Radius */ + --radius-tremor-small: var(--radius-small); + --radius-tremor-default: var(--radius-default); + --radius-tremor-full: var(--radius-full); + + /* Typography Scale */ + --text-tremor-default: var(--text-default); + --text-tremor-default--line-height: var(--text-default--line-height); + --text-tremor-label: var(--text-label); + --text-tremor-label--line-height: var(--text-label--line-height); + + /* Colors */ + --color-tremor-brand-faint: var(--color-brand-faint); + --color-tremor-brand-muted: var(--color-brand-muted); + --color-tremor-brand-subtle: var(--color-brand-subtle); + --color-tremor-brand-default: var(--color-brand-default); + --color-tremor-brand-emphasis: var(--color-brand-emphasis); + --color-tremor-brand-inverted: var(--color-brand-inverted); + + --color-tremor-background-muted: var(--color-background-muted); + --color-tremor-background-subtle: var(--color-background-subtle); + --color-tremor-background-default: var(--color-background-default); + --color-tremor-background-emphasis: var(--color-background-emphasis); + + --color-tremor-border-default: var(--color-border-default); + --color-tremor-ring-default: var(--color-ring-default); + + --color-tremor-content-subtle: var(--color-content-subtle); + --color-tremor-content-default: var(--color-content-default); + --color-tremor-content-emphasis: var(--color-content-emphasis); + --color-tremor-content-strong: var(--color-content-strong); + --color-tremor-content-inverted: var(--color-content-inverted); +} + +@layer utilities { + :root { + /* Shadow Tokens */ + --shadow-input: 0 1px 2px 0 oklch(0 0 0 / 0.05); + --shadow-card: 0 1px 3px 0 oklch(0 0 0 / 0.1), 0 1px 2px -1px oklch(0 0 0 / 0.1); + --shadow-dropdown: 0 4px 6px -1px oklch(0 0 0 / 0.1), 0 2px 4px -2px oklch(0 0 0 / 0.1); + + /* Border Radius Tokens */ + --radius-small: 0.375rem; + --radius-default: 0.5rem; + --radius-full: 9999px; + + /* Typography Scale Tokens */ + --text-default: 0.875rem; + --text-default--line-height: 1.25rem; + --text-label: 0.75rem; + --text-label--line-height: 1rem; + + /* Light Colors Tokens */ + --color-brand-faint: var(--color-blue-50); + --color-brand-muted: var(--color-blue-200); + --color-brand-subtle: var(--color-blue-400); + --color-brand-default: var(--color-blue-500); + --color-brand-emphasis: var(--color-blue-700); + --color-brand-inverted: var(--color-white); + + --color-background-muted: var(--color-gray-50); + --color-background-subtle: var(--color-gray-100); + --color-background-default: var(--color-white); + --color-background-emphasis: var(--color-gray-700); + + --color-border-default: var(--color-gray-200); + --color-ring-default: var(--color-gray-200); + + --color-content-subtle: var(--color-gray-400); + --color-content-default: var(--color-gray-500); + --color-content-emphasis: var(--color-gray-700); + --color-content-strong: var(--color-gray-900); + --color-content-inverted: var(--color-white); + } + + @media (prefers-color-scheme: dark) { + :root { + /* Dark Colors Tokens */ + --color-brand-faint: #0b1229; + --color-brand-muted: var(--color-blue-950); + --color-brand-subtle: var(--color-blue-800); + --color-brand-default: var(--color-blue-500); + --color-brand-emphasis: var(--color-blue-400); + --color-brand-inverted: var(--color-blue-950); + + --color-background-muted: #131a2b; + --color-background-subtle: var(--color-gray-800); + --color-background-default: var(--color-gray-900); + --color-background-emphasis: var(--color-gray-300); + + --color-border-default: var(--color-gray-800); + --color-ring-default: var(--color-gray-800); + + --color-content-subtle: var(--color-gray-600); + --color-content-default: var(--color-gray-500); + --color-content-emphasis: var(--color-gray-200); + --color-content-strong: var(--color-gray-50); + --color-content-inverted: var(--color-gray-950); + } + } +} diff --git a/src/tests/chart-elements/AreaChart.test.tsx b/src/tests/chart-elements/AreaChart.test.tsx new file mode 100644 index 000000000..93996dfd6 --- /dev/null +++ b/src/tests/chart-elements/AreaChart.test.tsx @@ -0,0 +1,109 @@ +import { render } from "@testing-library/react"; +import { AreaChart } from "components"; + +import React from "react"; + +describe("AreaChart", () => { + beforeAll(() => { + global.ResizeObserver = class MockedResizeObserver { + observe = jest.fn(); + unobserve = jest.fn(); + disconnect = jest.fn(); + }; + const mockChildMethod = jest.fn(); + jest.spyOn(React, "useRef").mockReturnValue({ + current: { + childMethod: mockChildMethod, + }, + }); + }); + afterAll(() => { + jest.restoreAllMocks(); + }); + it("renders the chart with data", () => { + const ref = React.useRef(null); + const data = [ + { name: "A", value: 10 }, + { name: "B", value: 20 }, + { name: "C", value: 30 }, + ]; + const { container } = render( + , + ); + expect(container.getElementsByClassName("w-full h-80").length).toBe(1); + }); + + it("renders the chart without gradient", () => { + const ref = React.useRef(null); + const data = [ + { name: "A", value: 10 }, + { name: "B", value: 20 }, + { name: "C", value: 30 }, + ]; + const { container } = render( + , + ); + expect(container.getElementsByClassName("w-full h-80").length).toBe(1); + }); + + it("renders the chart with custom colors", () => { + const ref = React.useRef(null); + const data = [ + { name: "A", value: 10 }, + { name: "B", value: 20 }, + { name: "C", value: 30 }, + ]; + const { container } = render( + , + ); + expect(container.getElementsByClassName("w-full h-80").length).toBe(1); + }); + + it("renders the chart with custom curve type", () => { + const ref = React.useRef(null); + const data = [ + { name: "A", value: 10 }, + { name: "B", value: 20 }, + { name: "C", value: 30 }, + ]; + const { container } = render( + , + ); + expect(container.getElementsByClassName("w-full h-80").length).toBe(1); + }); + + it("renders the chart with connectNulls", () => { + const data = [ + { name: "A", value: 10 }, + { name: "B", value: null }, + { name: "C", value: 30 }, + ]; + const { container } = render( + , + ); + expect(container.getElementsByClassName("w-full h-80").length).toBe(1); + }); + + it("renders the chart with no data", () => { + const { getByText } = render(); + expect(getByText("No data")).toBeDefined(); + }); +}); diff --git a/src/tests/chart-elements/BarChart.test.tsx b/src/tests/chart-elements/BarChart.test.tsx new file mode 100644 index 000000000..a30ad033e --- /dev/null +++ b/src/tests/chart-elements/BarChart.test.tsx @@ -0,0 +1,37 @@ +import { render } from "@testing-library/react"; +import { BarChart } from "components"; +import React from "react"; + +describe("BarChart", () => { + beforeAll(() => { + global.ResizeObserver = class MockedResizeObserver { + observe = jest.fn(); + unobserve = jest.fn(); + disconnect = jest.fn(); + }; + const mockChildMethod = jest.fn(); + jest.spyOn(React, "useRef").mockReturnValue({ + current: { + childMethod: mockChildMethod, + }, + }); + }); + afterAll(() => { + jest.restoreAllMocks(); + }); + it("renders the chart with data", () => { + const data = [ + { name: "A", value: 10 }, + { name: "B", value: 20 }, + { name: "C", value: 30 }, + ]; + const ref = React.useRef(null); + render(); + }); + + it("renders the chart with no data", () => { + const ref = React.useRef(null); + const { getByText } = render(); + expect(getByText("No data")).toBeDefined(); + }); +}); diff --git a/src/tests/icon-elements/Badge.test.tsx b/src/tests/icon-elements/Badge.test.tsx index 8b8d510b4..fdffab78e 100644 --- a/src/tests/icon-elements/Badge.test.tsx +++ b/src/tests/icon-elements/Badge.test.tsx @@ -1,8 +1,7 @@ -/* eslint-disable no-undef */ import { render } from "@testing-library/react"; import React from "react"; -import Badge from "components/icon-elements/Badge/Badge"; +import { Badge } from "components"; describe("Badge", () => { test("renders the Badge component with default props", () => { diff --git a/src/tests/icon-elements/BadgeDelta.test.tsx b/src/tests/icon-elements/BadgeDelta.test.tsx deleted file mode 100644 index 51ca72b0c..000000000 --- a/src/tests/icon-elements/BadgeDelta.test.tsx +++ /dev/null @@ -1,11 +0,0 @@ -/* eslint-disable no-undef */ -import { render } from "@testing-library/react"; -import React from "react"; - -import BadgeDelta from "components/icon-elements/BadgeDelta/BadgeDelta"; - -describe("BadgeDelta", () => { - test("renders the BadgeDelta component with default props", () => { - render(); - }); -}); diff --git a/src/tests/icon-elements/Icon.test.tsx b/src/tests/icon-elements/Icon.test.tsx deleted file mode 100644 index c760f5577..000000000 --- a/src/tests/icon-elements/Icon.test.tsx +++ /dev/null @@ -1,13 +0,0 @@ -/* eslint-disable no-undef */ -import { render } from "@testing-library/react"; -import React from "react"; - -import ArrowUpIcon from "assets/ArrowUpIcon"; - -import Icon from "components/icon-elements/Icon/Icon"; - -describe("Icon", () => { - test("renders the Icon component with default props", () => { - render(); - }); -}); diff --git a/src/tests/input-elements/Button.test.tsx b/src/tests/input-elements/Button.test.tsx index 7bdb4c32a..df3514919 100644 --- a/src/tests/input-elements/Button.test.tsx +++ b/src/tests/input-elements/Button.test.tsx @@ -2,7 +2,7 @@ import { render } from "@testing-library/react"; import React from "react"; -import Button from "components/input-elements/Button/Button"; +import { Button } from "components"; describe("Button", () => { test("renders the Button component with default props", () => { diff --git a/src/tests/input-elements/DatePicker.test.tsx b/src/tests/input-elements/DatePicker.test.tsx index ee7fb6700..2ac31f7c4 100644 --- a/src/tests/input-elements/DatePicker.test.tsx +++ b/src/tests/input-elements/DatePicker.test.tsx @@ -1,8 +1,7 @@ import { render } from "@testing-library/react"; +import { DatePicker } from "components"; import React from "react"; -import DatePicker from "components/input-elements/DatePicker/DatePicker"; - describe("DatePicker", () => { test("renders the DatePicker component with default props", () => { render(); diff --git a/src/tests/input-elements/DateRangePicker.test.tsx b/src/tests/input-elements/DateRangePicker.test.tsx index 786fe14cd..18aa1f5d7 100644 --- a/src/tests/input-elements/DateRangePicker.test.tsx +++ b/src/tests/input-elements/DateRangePicker.test.tsx @@ -1,9 +1,7 @@ import { render } from "@testing-library/react"; +import { DateRangePicker, DateRangePickerItem } from "components"; import React from "react"; -import DateRangePicker from "components/input-elements/DateRangePicker/DateRangePicker"; -import DateRangePickerItem from "components/input-elements/DateRangePicker/DateRangePickerItem"; - describe("DateRangePicker", () => { test("renders the DateRangePicker component with default props", () => { render( diff --git a/src/tests/input-elements/MultiSelect.test.tsx b/src/tests/input-elements/MultiSelect.test.tsx index 7d6831b0c..fa851798d 100644 --- a/src/tests/input-elements/MultiSelect.test.tsx +++ b/src/tests/input-elements/MultiSelect.test.tsx @@ -1,8 +1,7 @@ import { fireEvent, render, screen } from "@testing-library/react"; import React from "react"; -import MultiSelect from "components/input-elements/MultiSelect/MultiSelect"; -import MultiSelectItem from "components/input-elements/MultiSelect/MultiSelectItem"; +import { MultiSelect, MultiSelectItem } from "components"; describe("MultiSelect", () => { test("renders the MultiSelect component with default props", () => { diff --git a/src/tests/input-elements/SearchSelect.test.tsx b/src/tests/input-elements/SearchSelect.test.tsx index 0ca61bc15..fe1cd2aa2 100644 --- a/src/tests/input-elements/SearchSelect.test.tsx +++ b/src/tests/input-elements/SearchSelect.test.tsx @@ -1,9 +1,7 @@ import { fireEvent, render, screen } from "@testing-library/react"; +import { SearchSelect, SearchSelectItem } from "components"; import React from "react"; -import SearchSelect from "components/input-elements/SearchSelect/SearchSelect"; -import SearchSelectItem from "components/input-elements/SearchSelect/SearchSelectItem"; - describe("SearchSelect", () => { test("renders the SearchSelect component with default props", () => { render( diff --git a/src/tests/input-elements/Select.test.tsx b/src/tests/input-elements/Select.test.tsx index 2e9750ce0..e9c9ba2fd 100644 --- a/src/tests/input-elements/Select.test.tsx +++ b/src/tests/input-elements/Select.test.tsx @@ -1,9 +1,7 @@ import { fireEvent, render, screen } from "@testing-library/react"; +import { Select, SelectItem } from "components"; import React from "react"; -import Select from "components/input-elements/Select/Select"; -import SelectItem from "components/input-elements/Select/SelectItem"; - describe("Select", () => { test("renders the Select component with default props", () => { render( diff --git a/src/tests/input-elements/Switch.text.tsx b/src/tests/input-elements/Switch.test.tsx similarity index 79% rename from src/tests/input-elements/Switch.text.tsx rename to src/tests/input-elements/Switch.test.tsx index 99e51ebad..6572e2aaf 100644 --- a/src/tests/input-elements/Switch.text.tsx +++ b/src/tests/input-elements/Switch.test.tsx @@ -2,7 +2,7 @@ import { render } from "@testing-library/react"; import React from "react"; -import Switch from "components/input-elements/Switch/Switch"; +import { Switch } from "components"; describe("Switch", () => { test("renders the Switch component with default props", () => { diff --git a/src/tests/input-elements/Tabs.test.tsx b/src/tests/input-elements/Tabs.test.tsx index 8cce78119..92ccf805a 100644 --- a/src/tests/input-elements/Tabs.test.tsx +++ b/src/tests/input-elements/Tabs.test.tsx @@ -1,12 +1,7 @@ import { render } from "@testing-library/react"; +import { Tab, TabGroup, TabList, TabPanel, TabPanels } from "components"; import React from "react"; -import Tab from "components/input-elements/Tabs/Tab"; -import TabGroup from "components/input-elements/Tabs/TabGroup"; -import TabList from "components/input-elements/Tabs/TabList"; -import TabPanel from "components/input-elements/Tabs/TabPanel"; -import TabPanels from "components/input-elements/Tabs/TabPanels"; - describe("SelectBox", () => { test("renders the SelectBox component with default props", () => { render( diff --git a/src/tests/layout-elements/Accordion.test.tsx b/src/tests/layout-elements/Accordion.test.tsx index 49ab42b0f..05dae3f6a 100644 --- a/src/tests/layout-elements/Accordion.test.tsx +++ b/src/tests/layout-elements/Accordion.test.tsx @@ -1,10 +1,9 @@ import { render } from "@testing-library/react"; +import { Accordion } from "components"; +import { AccordionBody } from "components/layout-elements/Accordion/AccordionBody"; +import { AccordionHeader } from "components/layout-elements/Accordion/AccordionHeader"; import React from "react"; -import Accordion from "components/layout-elements/Accordion/Accordion"; -import AccordionBody from "components/layout-elements/Accordion/AccordionBody"; -import AccordionHeader from "components/layout-elements/Accordion/AccordionHeader"; - describe("Accordion", () => { test("renders the Accordion component with default props", () => { render( diff --git a/src/tests/layout-elements/AccordionList.test.tsx b/src/tests/layout-elements/AccordionList.test.tsx index 2eb311d5c..23f2749eb 100644 --- a/src/tests/layout-elements/AccordionList.test.tsx +++ b/src/tests/layout-elements/AccordionList.test.tsx @@ -1,11 +1,9 @@ import { render } from "@testing-library/react"; +import { Accordion, AccordionList } from "components"; +import { AccordionBody } from "components/layout-elements/Accordion/AccordionBody"; +import { AccordionHeader } from "components/layout-elements/Accordion/AccordionHeader"; import React from "react"; -import Accordion from "components/layout-elements/Accordion/Accordion"; -import AccordionBody from "components/layout-elements/Accordion/AccordionBody"; -import AccordionHeader from "components/layout-elements/Accordion/AccordionHeader"; -import AccordionList from "components/layout-elements/Accordion/AccordionList"; - describe("AccordionList", () => { test("renders the AccordionList component with default props", () => { render( diff --git a/src/tests/layout-elements/Card.test.tsx b/src/tests/layout-elements/Card.test.tsx index f64419c6e..78d7c32a0 100644 --- a/src/tests/layout-elements/Card.test.tsx +++ b/src/tests/layout-elements/Card.test.tsx @@ -1,7 +1,7 @@ import { render } from "@testing-library/react"; import React from "react"; -import Card from "components/layout-elements/Card/Card"; +import { Card } from "components"; describe("Card", () => { test("renders the Card component with default props", () => { diff --git a/src/tests/layout-elements/Dialog.test.tsx b/src/tests/layout-elements/Dialog.test.tsx index 4058ed172..c2efd36d5 100644 --- a/src/tests/layout-elements/Dialog.test.tsx +++ b/src/tests/layout-elements/Dialog.test.tsx @@ -6,7 +6,7 @@ import { Dialog, DialogPanel } from "components"; describe("Dialog", () => { test("renders the Dialog component", async () => { const { findByText } = render( - {}}> + {}} static={true}> Test , ); diff --git a/src/tests/layout-elements/Divider.test.tsx b/src/tests/layout-elements/Divider.test.tsx index 51e5349de..f45fff1fa 100644 --- a/src/tests/layout-elements/Divider.test.tsx +++ b/src/tests/layout-elements/Divider.test.tsx @@ -1,7 +1,7 @@ import { render } from "@testing-library/react"; import React from "react"; -import Divider from "components/layout-elements/Divider/Divider"; +import { Divider } from "components"; describe("Divider", () => { test("renders the Divider component with default props", () => { diff --git a/src/tests/layout-elements/Flex.test.tsx b/src/tests/layout-elements/Flex.test.tsx deleted file mode 100644 index 51a059e0c..000000000 --- a/src/tests/layout-elements/Flex.test.tsx +++ /dev/null @@ -1,15 +0,0 @@ -import { render } from "@testing-library/react"; -import React from "react"; - -import Flex from "components/layout-elements/Flex/Flex"; - -describe("Flex", () => { - test("renders the Flex component with default props", () => { - render( - -
    Hello
    -
    World
    -
    , - ); - }); -}); diff --git a/src/tests/layout-elements/Grid.test.tsx b/src/tests/layout-elements/Grid.test.tsx deleted file mode 100644 index a9ba1375f..000000000 --- a/src/tests/layout-elements/Grid.test.tsx +++ /dev/null @@ -1,34 +0,0 @@ -import { render } from "@testing-library/react"; -import React from "react"; - -import Card from "components/layout-elements/Card/Card"; -import Col from "components/layout-elements/Grid/Col"; -import Grid from "components/layout-elements/Grid/Grid"; - -describe("Grid", () => { - test("renders the Grid component with default props", () => { - render( - -
    - -
    - - - -
    - -
    - -
    - - - -
    - - -
    - - , - ); - }); -}); diff --git a/src/tests/list-elements/List.test.tsx b/src/tests/list-elements/List.test.tsx index 34cd3f2eb..ac02c5464 100644 --- a/src/tests/list-elements/List.test.tsx +++ b/src/tests/list-elements/List.test.tsx @@ -1,9 +1,7 @@ import { render } from "@testing-library/react"; +import { List, ListItem } from "components"; import React from "react"; -import List from "components/list-elements/List/List"; -import ListItem from "components/list-elements/List/ListItem"; - describe("List", () => { test("renders the List component with default props", () => { render( diff --git a/src/tests/list-elements/Table.test.tsx b/src/tests/list-elements/Table.test.tsx index 28003de24..fadff1e7b 100644 --- a/src/tests/list-elements/Table.test.tsx +++ b/src/tests/list-elements/Table.test.tsx @@ -1,13 +1,7 @@ import { render } from "@testing-library/react"; +import { Table, TableBody, TableCell, TableHead, TableHeaderCell, TableRow } from "components"; import React from "react"; -import Table from "components/list-elements/Table/Table"; -import TableBody from "components/list-elements/Table/TableBody"; -import TableCell from "components/list-elements/Table/TableCell"; -import TableHead from "components/list-elements/Table/TableHead"; -import TableHeaderCell from "components/list-elements/Table/TableHeaderCell"; -import TableRow from "components/list-elements/Table/TableRow"; - describe("List", () => { test("renders the List component with default props", () => { render( diff --git a/src/tests/spark-elements/SparkAreaChart.test.tsx b/src/tests/spark-elements/SparkAreaChart.test.tsx new file mode 100644 index 000000000..eb4ac3b7e --- /dev/null +++ b/src/tests/spark-elements/SparkAreaChart.test.tsx @@ -0,0 +1,129 @@ +import { render } from "@testing-library/react"; + +import { SparkAreaChart } from "components"; +import React from "react"; + +describe("AreaChart", () => { + beforeAll(() => { + global.ResizeObserver = class MockedResizeObserver { + observe = jest.fn(); + unobserve = jest.fn(); + disconnect = jest.fn(); + }; + const mockChildMethod = jest.fn(); + jest.spyOn(React, "useRef").mockReturnValue({ + current: { + childMethod: mockChildMethod, + }, + }); + }); + afterAll(() => { + jest.restoreAllMocks(); + }); + it("renders the chart with data", () => { + const data = [ + { name: "A", value: 10 }, + { name: "B", value: 20 }, + { name: "C", value: 30 }, + ]; + const ref = React.useRef(null); + const { container } = render( + , + ); + expect(container.getElementsByClassName("w-28 h-12 test").length).toBe(1); + }); + + it("renders the chart without gradient", () => { + const data = [ + { name: "A", value: 10 }, + { name: "B", value: 20 }, + { name: "C", value: 30 }, + ]; + const ref = React.useRef(null); + const { container } = render( + , + ); + expect(container.getElementsByClassName("w-28 h-12 test").length).toBe(1); + }); + + it("renders the chart with custom colors", () => { + const data = [ + { name: "A", value: 10 }, + { name: "B", value: 20 }, + { name: "C", value: 30 }, + ]; + const ref = React.useRef(null); + const { container } = render( + , + ); + expect(container.getElementsByClassName("w-28 h-12 test").length).toBe(1); + }); + + it("renders the chart with custom curve type", () => { + const data = [ + { name: "A", value: 10 }, + { name: "B", value: 20 }, + { name: "C", value: 30 }, + ]; + const ref = React.useRef(null); + const { container } = render( + , + ); + expect(container.getElementsByClassName("w-28 h-12 test").length).toBe(1); + }); + + it("renders the chart with connectNulls", () => { + const data = [ + { name: "A", value: 10 }, + { name: "B", value: null }, + { name: "C", value: 30 }, + ]; + const ref = React.useRef(null); + const { container } = render( + , + ); + expect(container.getElementsByClassName("w-28 h-12 test").length).toBe(1); + }); + + it("renders the chart with no data", () => { + const ref = React.useRef(null); + const { getByText } = render( + , + ); + expect(getByText("No data")).toBeDefined(); + }); +}); diff --git a/src/tests/text-elements/Callout.test.tsx b/src/tests/text-elements/Callout.test.tsx index 49d047700..483a4aabd 100644 --- a/src/tests/text-elements/Callout.test.tsx +++ b/src/tests/text-elements/Callout.test.tsx @@ -1,7 +1,7 @@ import { render } from "@testing-library/react"; import React from "react"; -import Callout from "components/text-elements/Callout/Callout"; +import { Callout } from "components"; describe("Callout", () => { test("renders the Callout component with default props", () => { diff --git a/src/tests/text-elements/Legend.test.tsx b/src/tests/text-elements/Legend.test.tsx index 81b934872..a12537e2f 100644 --- a/src/tests/text-elements/Legend.test.tsx +++ b/src/tests/text-elements/Legend.test.tsx @@ -1,10 +1,28 @@ -import { render } from "@testing-library/react"; +import { fireEvent, render } from "@testing-library/react"; import React from "react"; -import Legend from "components/text-elements/Legend/Legend"; +import { Legend } from "components"; describe("Legend", () => { test("renders the Legend component with default props", () => { render(); }); + it("renders the correct legend items", () => { + const { getByText } = render( + , + ); + expect(getByText("Category A")).toBeDefined(); + expect(getByText("Category B")).toBeDefined(); + expect(getByText("Category C")).toBeDefined(); + expect(getByText("Category D")).toBeDefined(); + }); + it("clicks a category item", () => { + const { getByText } = render(); + fireEvent.click(getByText("Category A")); + }); + it("tests the keydown handler", () => { + render(); + const event = new KeyboardEvent("keydown", { key: "ArrowLeft" }); + document.dispatchEvent(event); + }); }); diff --git a/src/tests/text-elements/Metric.test.tsx b/src/tests/text-elements/Metric.test.tsx deleted file mode 100644 index 297d30e11..000000000 --- a/src/tests/text-elements/Metric.test.tsx +++ /dev/null @@ -1,10 +0,0 @@ -import { render } from "@testing-library/react"; -import React from "react"; - -import Metric from "components/text-elements/Metric/Metric"; - -describe("Metric", () => { - test("renders the Metric component with default props", () => { - render(USD 70,000.00); - }); -}); diff --git a/src/tests/text-elements/Subtitle.test.tsx b/src/tests/text-elements/Subtitle.test.tsx deleted file mode 100644 index c7be9ef33..000000000 --- a/src/tests/text-elements/Subtitle.test.tsx +++ /dev/null @@ -1,10 +0,0 @@ -import { render } from "@testing-library/react"; -import React from "react"; - -import Subtitle from "components/text-elements/Subtitle/Subtitle"; - -describe("Subtitle", () => { - test("renders the Subtitle component with default props", () => { - render(Subtitle); - }); -}); diff --git a/src/tests/text-elements/Text.test.tsx b/src/tests/text-elements/Text.test.tsx deleted file mode 100644 index 2f2682854..000000000 --- a/src/tests/text-elements/Text.test.tsx +++ /dev/null @@ -1,16 +0,0 @@ -import { render } from "@testing-library/react"; -import React from "react"; - -import Text from "components/text-elements/Text/Text"; - -describe("Text", () => { - test("renders the Text component with default props", () => { - render( - - Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has - been the industry's standard dummy text ever since the 900s, when an unknown printer - took a galley of type and scrambled it to make a type specimen book. - , - ); - }); -}); diff --git a/src/tests/text-elements/Title.test.tsx b/src/tests/text-elements/Title.test.tsx deleted file mode 100644 index 5708be6c0..000000000 --- a/src/tests/text-elements/Title.test.tsx +++ /dev/null @@ -1,10 +0,0 @@ -import { render } from "@testing-library/react"; -import React from "react"; - -import Title from "components/text-elements/Title/Title"; - -describe("Title", () => { - test("renders the Title component with default props", () => { - render(Subtitle); - }); -}); diff --git a/src/tests/vis-elements/BarList.test.tsx b/src/tests/vis-elements/BarList.test.tsx index d088d8d34..d50f3da59 100644 --- a/src/tests/vis-elements/BarList.test.tsx +++ b/src/tests/vis-elements/BarList.test.tsx @@ -1,9 +1,7 @@ -/* eslint-disable no-undef */ import { render } from "@testing-library/react"; +import { BarList } from "components"; import React from "react"; -import BarList from "components/vis-elements/BarList/BarList"; - describe("BarList", () => { test("renders the BarList component with default props", () => { render( diff --git a/src/tests/vis-elements/CategoryBar.test.tsx b/src/tests/vis-elements/CategoryBar.test.tsx index bebcc884a..2e0b63156 100644 --- a/src/tests/vis-elements/CategoryBar.test.tsx +++ b/src/tests/vis-elements/CategoryBar.test.tsx @@ -1,9 +1,8 @@ /* eslint-disable no-undef */ import { render } from "@testing-library/react"; +import { CategoryBar } from "components"; import React from "react"; -import CategoryBar from "components/vis-elements/CategoryBar/CategoryBar"; - describe("CategoryBar", () => { test("renders the CategoryBar component with default props", () => { render(); diff --git a/src/tests/vis-elements/DeltaBar.test.tsx b/src/tests/vis-elements/DeltaBar.test.tsx deleted file mode 100644 index acd97995c..000000000 --- a/src/tests/vis-elements/DeltaBar.test.tsx +++ /dev/null @@ -1,11 +0,0 @@ -/* eslint-disable no-undef */ -import { render } from "@testing-library/react"; -import React from "react"; - -import DeltaBar from "components/vis-elements/DeltaBar/DeltaBar"; - -describe("DeltaBar", () => { - test("renders the DeltaBar component with default props", () => { - render(); - }); -}); diff --git a/src/tests/vis-elements/MarkerBar.test.tsx b/src/tests/vis-elements/MarkerBar.test.tsx index 4b21a3c7e..c3c8bfbd1 100644 --- a/src/tests/vis-elements/MarkerBar.test.tsx +++ b/src/tests/vis-elements/MarkerBar.test.tsx @@ -1,9 +1,8 @@ /* eslint-disable no-undef */ import { render } from "@testing-library/react"; +import { MarkerBar } from "components"; import React from "react"; -import MarkerBar from "components/vis-elements/MarkerBar/MarkerBar"; - describe("MarkerBar", () => { test("renders the MarkerBar component with default props", () => { render(); diff --git a/src/tests/vis-elements/ProgressBar.test.tsx b/src/tests/vis-elements/ProgressBar.test.tsx index 799bc25ba..a07edf86d 100644 --- a/src/tests/vis-elements/ProgressBar.test.tsx +++ b/src/tests/vis-elements/ProgressBar.test.tsx @@ -1,9 +1,8 @@ /* eslint-disable no-undef */ import { render } from "@testing-library/react"; +import { ProgressBar } from "components"; import React from "react"; -import ProgressBar from "components/vis-elements/ProgressBar/ProgressBar"; - describe("ProgressBar", () => { test("renders the ProgressBar component with default props", () => { render(); diff --git a/src/tests/vis-elements/ProgressCircle.text.tsx b/src/tests/vis-elements/ProgressCircle.test.tsx similarity index 74% rename from src/tests/vis-elements/ProgressCircle.text.tsx rename to src/tests/vis-elements/ProgressCircle.test.tsx index 8ac0e2a18..6385726a2 100644 --- a/src/tests/vis-elements/ProgressCircle.text.tsx +++ b/src/tests/vis-elements/ProgressCircle.test.tsx @@ -1,7 +1,7 @@ import { render } from "@testing-library/react"; import React from "react"; -import ProgressCircle from "components/vis-elements/ProgressCircle/ProgressCircle"; +import { ProgressCircle } from "components"; describe("ProgressCircle", () => { test("renders the ProgressCircle component with default props", () => { diff --git a/src/tests/vis-elements/Tracker.test.tsx b/src/tests/vis-elements/Tracker.test.tsx index 56b43b095..628e1a4db 100644 --- a/src/tests/vis-elements/Tracker.test.tsx +++ b/src/tests/vis-elements/Tracker.test.tsx @@ -1,7 +1,7 @@ import { render } from "@testing-library/react"; import React from "react"; -import Tracker from "components/vis-elements/Tracker/Tracker"; +import { Tracker } from "components"; describe("Tracker", () => { test("renders the Tracker component with default props", () => { diff --git a/tailwind.config.js b/tailwind.config.js deleted file mode 100644 index b1d45791d..000000000 --- a/tailwind.config.js +++ /dev/null @@ -1,143 +0,0 @@ -/* eslint-disable @typescript-eslint/no-require-imports */ -// eslint-disable-next-line @typescript-eslint/no-var-requires, @typescript-eslint/no-require-imports -const colors = require("tailwindcss/colors"); - -module.exports = { - content: ["./src/**/*.{html,js,jsx,ts,tsx}"], - darkMode: ["class", '[data-mode="dark"]'], - theme: { - transparent: "transparent", - current: "currentColor", - extend: { - colors: { - // light mode - tremor: { - brand: { - faint: colors.blue[50], - muted: colors.blue[200], - subtle: colors.blue[400], - DEFAULT: colors.blue[500], - emphasis: colors.blue[700], - inverted: colors.white, - }, - background: { - muted: colors.gray[50], - subtle: colors.gray[100], - DEFAULT: colors.white, - emphasis: colors.gray[700], - }, - border: { - DEFAULT: colors.gray[200], - }, - ring: { - DEFAULT: colors.gray[200], - }, - content: { - subtle: colors.gray[400], - DEFAULT: colors.gray[500], - emphasis: colors.gray[700], - strong: colors.gray[900], - inverted: colors.white, - }, - }, - // dark mode - "dark-tremor": { - brand: { - faint: "#0B1229", - muted: colors.blue[950], - subtle: colors.blue[800], - DEFAULT: colors.blue[500], - emphasis: colors.blue[400], - inverted: colors.blue[950], - }, - background: { - muted: "#131A2B", - subtle: colors.gray[800], - DEFAULT: colors.gray[900], - emphasis: colors.gray[300], - }, - border: { - DEFAULT: colors.gray[800], - }, - ring: { - DEFAULT: colors.gray[800], - }, - content: { - subtle: colors.gray[600], - DEFAULT: colors.gray[500], - emphasis: colors.gray[200], - strong: colors.gray[50], - inverted: colors.gray[950], - }, - }, - }, - boxShadow: { - // light - "tremor-input": "0 1px 2px 0 rgb(0 0 0 / 0.05)", - "tremor-card": "0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1)", - "tremor-dropdown": "0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1)", - // dark - "dark-tremor-input": "0 1px 2px 0 rgb(0 0 0 / 0.05)", - "dark-tremor-card": "0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1)", - "dark-tremor-dropdown": "0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1)", - }, - borderRadius: { - "tremor-small": "0.375rem", - "tremor-default": "0.5rem", - "tremor-full": "9999px", - }, - fontSize: { - "tremor-label": ["0.75rem", { lineHeight: "1rem" }], - "tremor-default": ["0.875rem", { lineHeight: "1.25rem" }], - "tremor-title": ["1.125rem", { lineHeight: "1.75rem" }], - "tremor-metric": ["1.875rem", { lineHeight: "2.25rem" }], - }, - }, - }, - safelist: [ - { - pattern: - /^(bg-(?:slate|gray|zinc|neutral|stone|red|orange|amber|yellow|lime|green|emerald|teal|cyan|sky|blue|indigo|violet|purple|fuchsia|pink|rose)-(?:50|100|200|300|400|500|600|700|800|900|950))$/, - variants: ["hover", "ui-selected"], - }, - { - pattern: - /^(text-(?:slate|gray|zinc|neutral|stone|red|orange|amber|yellow|lime|green|emerald|teal|cyan|sky|blue|indigo|violet|purple|fuchsia|pink|rose)-(?:50|100|200|300|400|500|600|700|800|900|950))$/, - variants: ["hover", "ui-selected"], - }, - { - pattern: - /^(border-(?:slate|gray|zinc|neutral|stone|red|orange|amber|yellow|lime|green|emerald|teal|cyan|sky|blue|indigo|violet|purple|fuchsia|pink|rose)-(?:50|100|200|300|400|500|600|700|800|900|950))$/, - variants: ["hover", "ui-selected"], - }, - { - pattern: - /^(ring-(?:slate|gray|zinc|neutral|stone|red|orange|amber|yellow|lime|green|emerald|teal|cyan|sky|blue|indigo|violet|purple|fuchsia|pink|rose)-(?:50|100|200|300|400|500|600|700|800|900|950))$/, - }, - { - pattern: - /^(stroke-(?:slate|gray|zinc|neutral|stone|red|orange|amber|yellow|lime|green|emerald|teal|cyan|sky|blue|indigo|violet|purple|fuchsia|pink|rose)-(?:50|100|200|300|400|500|600|700|800|900|950))$/, - }, - { - pattern: - /^(fill-(?:slate|gray|zinc|neutral|stone|red|orange|amber|yellow|lime|green|emerald|teal|cyan|sky|blue|indigo|violet|purple|fuchsia|pink|rose)-(?:50|100|200|300|400|500|600|700|800|900|950))$/, - }, - - // custom colors charts - ...["[#32a852]", "[#fcba03]"].flatMap((customColor) => [ - `bg-${customColor}`, - `border-${customColor}`, - `hover:bg-${customColor}`, - `hover:border-${customColor}`, - `hover:text-${customColor}`, - `fill-${customColor}`, - `ring-${customColor}`, - `stroke-${customColor}`, - `text-${customColor}`, - `ui-selected:bg-${customColor}]`, - `ui-selected:border-${customColor}]`, - `ui-selected:text-${customColor}`, - ]), - ], - plugins: [require("@headlessui/tailwindcss")], -}; diff --git a/tsconfig.json b/tsconfig.json index b7b8915ca..e8300cdc5 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -16,5 +16,6 @@ "allowSyntheticDefaultImports": true, "emitDeclarationOnly": true }, - "include": ["**/*.tsx", "**/*.ts", "setupTests.js"] + "include": ["**/*.tsx", "**/*.ts", "setupTests.js"], + "exclude": ["node_modules"] } diff --git a/vite.config.ts b/vite.config.ts new file mode 100644 index 000000000..3ee78a963 --- /dev/null +++ b/vite.config.ts @@ -0,0 +1,19 @@ +import react from "@vitejs/plugin-react"; +import path from "path"; +import { defineConfig } from "vite"; + +// https://vitejs.dev/config/ +export default defineConfig({ + plugins: [react()], + resolve: { + alias: { + components: path.resolve(__dirname, "./src/components"), + lib: path.resolve(__dirname, "./src/lib"), + hooks: path.resolve(__dirname, "./src/hooks"), + contexts: path.resolve(__dirname, "./src/contexts"), + assets: path.resolve(__dirname, "./src/assets"), + stories: path.resolve(__dirname, "./src/stories"), + tests: path.resolve(__dirname, "./src/tests"), + }, + }, +});
    - {children} - + {children} +
    - {children} - + {children} +
    - {children} - + {children} +