diff --git a/.gitignore b/.gitignore index 9158efb..29ca443 100644 --- a/.gitignore +++ b/.gitignore @@ -28,3 +28,6 @@ pnpm-debug.log* # zed setting folder .zed/ + +*storybook.log +storybook-static diff --git a/.storybook/constants.ts b/.storybook/constants.ts deleted file mode 100644 index c6ffc6c..0000000 --- a/.storybook/constants.ts +++ /dev/null @@ -1,30 +0,0 @@ -export const CUSTOM_VIEW_PORTS = { - sm: { - name: "Small", - styles: { - width: "375px", - height: "800px", - }, - }, - md: { - name: "Medium", - styles: { - width: "768px", - height: "1024px", - }, - }, - lg: { - name: "Large", - styles: { - width: "1024px", - height: "1366px", - }, - }, - xl: { - name: "Extra Large", - styles: { - width: "1440px", - height: "900px", - }, - }, -}; diff --git a/.storybook/main.js b/.storybook/main.js deleted file mode 100644 index db00faa..0000000 --- a/.storybook/main.js +++ /dev/null @@ -1,18 +0,0 @@ -import tailwindcss from "@tailwindcss/vite"; - -export default { - stories: ["../src/**/*.stories.@(js|jsx|ts|tsx)"], - staticDirs: ["../public"], - framework: { - name: "@storybook-astro/framework", - }, - core: { - disableTelemetry: true, - enableCrashReports: false, - }, - async viteFinal(config) { - config.plugins = config.plugins || []; - config.plugins.push(tailwindcss()); - return config; - }, -}; diff --git a/.storybook/main.ts b/.storybook/main.ts new file mode 100644 index 0000000..cea952b --- /dev/null +++ b/.storybook/main.ts @@ -0,0 +1,20 @@ +import tailwindcss from "@tailwindcss/vite"; +import type { StorybookConfig } from "storybook-solidjs-vite"; + +const config: StorybookConfig = { + stories: ["../src/**/*.stories.@(js|jsx|mjs|ts|tsx)"], + addons: ["@storybook/addon-a11y", "@storybook/addon-docs"], + framework: "storybook-solidjs-vite", + viteFinal: async (config) => { + config.plugins ||= []; + config.plugins.push(tailwindcss()); + + return config; + }, + core: { + disableTelemetry: true, + disableWhatsNewNotifications: true, + enableCrashReports: false, + }, +}; +export default config; diff --git a/.storybook/preview.css b/.storybook/preview.css deleted file mode 100644 index f2762f8..0000000 --- a/.storybook/preview.css +++ /dev/null @@ -1 +0,0 @@ -@import "../src/app/styles/global.css"; diff --git a/.storybook/preview.js b/.storybook/preview.js deleted file mode 100644 index 62a4007..0000000 --- a/.storybook/preview.js +++ /dev/null @@ -1,22 +0,0 @@ -import "./preview.css"; -import { INITIAL_VIEWPORTS } from "storybook/viewport"; -import { CUSTOM_VIEW_PORTS } from "./constants.ts"; - -const preview = { - parameters: { - controls: { - matchers: { - color: /(background|color)$/i, - date: /Date$/i, - }, - }, - backgrounds: { - default: "darky", - values: [{ name: "darky", value: "#0b121a" }], - }, - viewport: { - options: { ...CUSTOM_VIEW_PORTS, ...INITIAL_VIEWPORTS }, - }, - }, -}; -export default preview; diff --git a/.storybook/preview.tsx b/.storybook/preview.tsx new file mode 100644 index 0000000..ab7c7a5 --- /dev/null +++ b/.storybook/preview.tsx @@ -0,0 +1,44 @@ +import type { Preview } from "storybook-solidjs-vite"; +import "../src/app/styles/global.css"; + +const preview: Preview = { + globalTypes: { + theme: { + name: "Theme", + description: "Global theme for components", + defaultValue: "light", + toolbar: { + icon: "mirror", + items: [ + { value: "light", title: "Light" }, + { value: "dark", title: "Dark" }, + ], + dynamicTitle: true, + }, + }, + }, + decorators: [ + (Story, context) => { + document.documentElement.dataset.theme = context.globals.theme ?? "light"; + + return ( +
+ +
+ ); + }, + ], + parameters: { + controls: { + matchers: { + color: /(background|color)$/i, + date: /Date$/i, + }, + }, + a11y: { + test: "todo", + }, + }, +}; + +export default preview; diff --git a/astro.config.mjs b/astro.config.mjs index 3b425bd..a0f9a4d 100644 --- a/astro.config.mjs +++ b/astro.config.mjs @@ -1,4 +1,5 @@ // @ts-check +import solid from "@astrojs/solid-js"; import tailwindcss from "@tailwindcss/vite"; import { defineConfig } from "astro/config"; @@ -20,4 +21,5 @@ export default defineConfig({ }, }, server: {}, + integrations: [solid({ devtools: true })], }); diff --git a/package.json b/package.json index 338702f..9ec6573 100644 --- a/package.json +++ b/package.json @@ -29,19 +29,25 @@ ] }, "dependencies": { + "@astrojs/solid-js": "^6.0.1", "@tailwindcss/vite": "^4.2.4", "@webtui/css": "^0.1.7", - "astro": "^6.2.1", + "astro": "^6.3.1", + "solid-js": "^1.9.13", "tailwindcss": "^4.2.4" }, "devDependencies": { "@astrojs/check": "^0.9.9", "@biomejs/biome": "2.4.13", - "@storybook-astro/framework": "^1.1.0", - "@storybook/builder-vite": "^10.3.6", + "@storybook/addon-a11y": "^10.4.1", + "@storybook/addon-docs": "^10.4.1", "husky": "^9.1.7", "lint-staged": "^16.4.0", - "storybook": "^10.3.6", - "typescript": "^6.0.3" + "sass": "^1.100.0", + "solid-devtools": "^0.34.5", + "storybook": "^10.4.1", + "storybook-solidjs-vite": "^10.0.13", + "typescript": "^6.0.3", + "vite-plugin-solid": "^2.11.12" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index a09b849..6a6d892 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -8,15 +8,21 @@ importers: .: dependencies: + '@astrojs/solid-js': + specifier: ^6.0.1 + version: 6.0.1(@testing-library/jest-dom@6.9.1)(@types/node@20.19.39)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.100.0)(solid-devtools@0.34.5(solid-js@1.9.13)(vite@7.3.3(@types/node@20.19.39)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.100.0)(yaml@2.8.4)))(solid-js@1.9.13)(yaml@2.8.4) '@tailwindcss/vite': specifier: ^4.2.4 - version: 4.2.4(vite@7.3.2(@types/node@20.19.39)(jiti@2.6.1)(lightningcss@1.32.0)(yaml@2.8.4)) + version: 4.2.4(vite@7.3.3(@types/node@20.19.39)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.100.0)(yaml@2.8.4)) '@webtui/css': specifier: ^0.1.7 version: 0.1.7 astro: - specifier: ^6.2.1 - version: 6.2.1(@types/node@20.19.39)(jiti@2.6.1)(lightningcss@1.32.0)(rollup@4.60.2)(typescript@6.0.3)(yaml@2.8.4) + specifier: ^6.3.1 + version: 6.3.1(@types/node@20.19.39)(jiti@2.6.1)(lightningcss@1.32.0)(rollup@4.60.3)(sass@1.100.0)(yaml@2.8.4) + solid-js: + specifier: ^1.9.13 + version: 1.9.13 tailwindcss: specifier: ^4.2.4 version: 4.2.4 @@ -27,24 +33,36 @@ importers: '@biomejs/biome': specifier: 2.4.13 version: 2.4.13 - '@storybook-astro/framework': - specifier: ^1.1.0 - version: 1.1.0(@vitejs/plugin-react@5.2.0(vite@7.3.2(@types/node@20.19.39)(jiti@2.6.1)(lightningcss@1.32.0)(yaml@2.8.4)))(astro@6.2.1(@types/node@20.19.39)(jiti@2.6.1)(lightningcss@1.32.0)(rollup@4.60.2)(typescript@6.0.3)(yaml@2.8.4))(storybook@10.3.6(@testing-library/dom@10.4.1)(prettier@3.8.3)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(vite@7.3.2(@types/node@20.19.39)(jiti@2.6.1)(lightningcss@1.32.0)(yaml@2.8.4)) - '@storybook/builder-vite': - specifier: ^10.3.6 - version: 10.3.6(esbuild@0.27.7)(rollup@4.60.2)(storybook@10.3.6(@testing-library/dom@10.4.1)(prettier@3.8.3)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(vite@7.3.2(@types/node@20.19.39)(jiti@2.6.1)(lightningcss@1.32.0)(yaml@2.8.4)) + '@storybook/addon-a11y': + specifier: ^10.4.1 + version: 10.4.1(storybook@10.4.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.10.0)(@testing-library/dom@10.4.1)(@types/react@19.2.15)(prettier@3.8.3)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)) + '@storybook/addon-docs': + specifier: ^10.4.1 + version: 10.4.1(@types/react@19.2.15)(esbuild@0.27.7)(rollup@4.60.3)(storybook@10.4.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.10.0)(@testing-library/dom@10.4.1)(@types/react@19.2.15)(prettier@3.8.3)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(vite@7.3.3(@types/node@20.19.39)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.100.0)(yaml@2.8.4)) husky: specifier: ^9.1.7 version: 9.1.7 lint-staged: specifier: ^16.4.0 version: 16.4.0 + sass: + specifier: ^1.100.0 + version: 1.100.0 + solid-devtools: + specifier: ^0.34.5 + version: 0.34.5(solid-js@1.9.13)(vite@7.3.3(@types/node@20.19.39)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.100.0)(yaml@2.8.4)) storybook: - specifier: ^10.3.6 - version: 10.3.6(@testing-library/dom@10.4.1)(prettier@3.8.3)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + specifier: ^10.4.1 + version: 10.4.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.10.0)(@testing-library/dom@10.4.1)(@types/react@19.2.15)(prettier@3.8.3)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + storybook-solidjs-vite: + specifier: ^10.0.13 + version: 10.0.13(@testing-library/jest-dom@6.9.1)(esbuild@0.27.7)(rollup@4.60.3)(solid-js@1.9.13)(storybook@10.4.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.10.0)(@testing-library/dom@10.4.1)(@types/react@19.2.15)(prettier@3.8.3)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(typescript@6.0.3)(vite@7.3.3(@types/node@20.19.39)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.100.0)(yaml@2.8.4)) typescript: specifier: ^6.0.3 version: 6.0.3 + vite-plugin-solid: + specifier: ^2.11.12 + version: 2.11.12(@testing-library/jest-dom@6.9.1)(solid-js@1.9.13)(vite@7.3.3(@types/node@20.19.39)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.100.0)(yaml@2.8.4)) packages: @@ -85,8 +103,18 @@ packages: resolution: {integrity: sha512-nksZQVjlferuWzhPsBpQ1JE5XuKAf1id1/9Hj4a9KG4+ofrlzxUUwX4YGQF/SuDiuiGKEnzopGOt38F3AnVWsQ==} engines: {node: '>=22.12.0'} - '@astrojs/telemetry@3.3.1': - resolution: {integrity: sha512-7fcIxXS9J4ls5tr8b3ww9rbAIz2+HrhNJYZdkAhhB4za/I5IZ/60g+Bs8q7zwG0tOIZfNB4JWhVJ1Qkl/OrNCw==} + '@astrojs/solid-js@6.0.1': + resolution: {integrity: sha512-6g2DEtznW2ithiaDY3qyCSdnyNBjpXfKR2qCnvxxdmZZlO+8AC85KkEX4BpnJrzVfy7ptx0/WYKuBRCFdheo8Q==} + engines: {node: '>=22.12.0'} + peerDependencies: + solid-devtools: ^0.30.1 + solid-js: ^1.8.5 + peerDependenciesMeta: + solid-devtools: + optional: true + + '@astrojs/telemetry@3.3.2': + resolution: {integrity: sha512-j8DNruA8ors99Al39RYZPJK4DC1bKkoNm93mAMuBhY9TCNC4R8n1q7ovFnJ5qhGh5Lsh7pa1gpQVpYpsJPeTHQ==} engines: {node: 18.20.8 || ^20.3.0 || >=22.0.0} '@astrojs/yaml2ts@0.2.3': @@ -116,6 +144,10 @@ packages: resolution: {integrity: sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==} engines: {node: '>=6.9.0'} + '@babel/helper-module-imports@7.18.6': + resolution: {integrity: sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==} + engines: {node: '>=6.9.0'} + '@babel/helper-module-imports@7.28.6': resolution: {integrity: sha512-l5XkZK7r7wa9LucGw9LwZyyCUscb4x37JWTPz7swwFE/0FMQAGpiWUZn8u9DzkSBWEcK25jmvubfpw2dnAMdbw==} engines: {node: '>=6.9.0'} @@ -151,14 +183,14 @@ packages: engines: {node: '>=6.0.0'} hasBin: true - '@babel/plugin-transform-react-jsx-self@7.27.1': - resolution: {integrity: sha512-6UzkCs+ejGdZ5mFFC/OCUrv028ab2fp1znZmCZjAOBKiBK2jXD1O+BPSfX8X2qjJ75fZBMSnQn3Rq2mrBJK2mw==} + '@babel/plugin-syntax-jsx@7.28.6': + resolution: {integrity: sha512-wgEmr06G6sIpqr8YDwA2dSRTE3bJ+V0IfpzfSY3Lfgd7YWOaAdlykvJi13ZKBt8cZHfgH1IXN+CL656W3uUa4w==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-react-jsx-source@7.27.1': - resolution: {integrity: sha512-zbwoTsBruTeKB9hSq73ha66iFeJHuaFkUbwvqElnygoNbj/jHRsSeokowZFN3CZ64IvEqcmmkVe89OPXc7ldAw==} + '@babel/plugin-syntax-typescript@7.28.6': + resolution: {integrity: sha512-+nDNmQye7nlnuuHDboPbGm00Vqg3oO8niRRL27/4LYHUsHYh0zJ1xWOz0uRwNFmM1Avzk8wZbc6rdiYhomzv/A==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -265,9 +297,18 @@ packages: '@emmetio/stream-reader@2.2.0': resolution: {integrity: sha512-fXVXEyFA5Yv3M3n8sUGT7+fvecGrZP4k6FnWWMSZVQf69kAq0LLpaBQLGcPR30m3zMmKYhECP4k/ZkzvhEW5kw==} + '@emnapi/core@1.9.2': + resolution: {integrity: sha512-UC+ZhH3XtczQYfOlu3lNEkdW/p4dsJ1r/bP7H8+rhao3TTTMO1ATq/4DdIi23XuGoFY+Cz0JmCbdVl0hz9jZcA==} + '@emnapi/runtime@1.10.0': resolution: {integrity: sha512-ewvYlk86xUoGI0zQRNq/mC+16R1QeDlKQy21Ki3oSYXNgLb45GV1P6A0M+/s6nyCuNDqe5VpaY84BzXGwVbwFA==} + '@emnapi/runtime@1.9.2': + resolution: {integrity: sha512-3U4+MIWHImeyu1wnmVygh5WlgfYDtyf0k8AbLhMFxOipihf6nrWC4syIm/SwEeec0mNSafiiNnMJwbza/Is6Lw==} + + '@emnapi/wasi-threads@1.2.1': + resolution: {integrity: sha512-uTII7OYF+/Mes/MrcIOYp5yOtSMLBWSIoLPpcgwipoiKbli6k322tcoFsxoIIxPDqW01SQGAgko4EzZi2BNv2w==} + '@esbuild/aix-ppc64@0.27.7': resolution: {integrity: sha512-EKX3Qwmhz1eMdEJokhALr0YiD0lhQNwDqkPYyPhiSwKrh7/4KRjQc04sZ8db+5DVVnZ1LmbNDI1uAMPEUBnQPg==} engines: {node: '>=18'} @@ -561,6 +602,15 @@ packages: cpu: [x64] os: [win32] + '@joshwooding/vite-plugin-react-docgen-typescript@0.7.0': + resolution: {integrity: sha512-qvsTEwEFefhdirGOPnu9Wp6ChfIwy2dBCRuETU3uE+4cC+PFoxMSiiEhxk4lOluA34eARHA0OxqsEUYDqRMgeQ==} + peerDependencies: + typescript: '>= 4.3.x' + vite: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0 + peerDependenciesMeta: + typescript: + optional: true + '@jridgewell/gen-mapping@0.3.13': resolution: {integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==} @@ -577,11 +627,327 @@ packages: '@jridgewell/trace-mapping@0.3.31': resolution: {integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==} + '@mdx-js/react@3.1.1': + resolution: {integrity: sha512-f++rKLQgUVYDAtECQ6fn/is15GkEH9+nZPM3MS0RcxVqoTfawHvDlSCH7JbMhAM6uJ32v3eXLvLmLvjGu7PTQw==} + peerDependencies: + '@types/react': '>=16' + react: '>=16' + + '@napi-rs/wasm-runtime@1.1.4': + resolution: {integrity: sha512-3NQNNgA1YSlJb/kMH1ildASP9HW7/7kYnRI2szWJaofaS1hWmbGI4H+d3+22aGzXXN9IJ+n+GiFVcGipJP18ow==} + peerDependencies: + '@emnapi/core': ^1.7.1 + '@emnapi/runtime': ^1.7.1 + + '@nothing-but/utils@0.17.0': + resolution: {integrity: sha512-TuCHcHLOqDL0SnaAxACfuRHBNRgNJcNn9X0GiH5H3YSDBVquCr3qEIG3FOQAuMyZCbu9w8nk2CHhOsn7IvhIwQ==} + '@oslojs/encoding@1.1.0': resolution: {integrity: sha512-70wQhgYmndg4GCPxPPxPGevRKqTIJ2Nh4OkiMWmDAVYsTQ+Ta7Sq+rPevXyXGdzr30/qZBnyOalCszoMxlyldQ==} - '@rolldown/pluginutils@1.0.0-rc.3': - resolution: {integrity: sha512-eybk3TjzzzV97Dlj5c+XrBFW57eTNhzod66y9HrBlzJ6NsCrWCp/2kaPS3K9wJmurBC0Tdw4yPjXKZqlznim3Q==} + '@oxc-parser/binding-android-arm-eabi@0.127.0': + resolution: {integrity: sha512-0LC7ye4hvqbIKxAzThzvswgHLFu2AURKzYLeSVvLdu2TBOYWQDmHnTqPLeA597BcUCxiLqLsS4CJ5uoI5WYWCQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm] + os: [android] + + '@oxc-parser/binding-android-arm64@0.127.0': + resolution: {integrity: sha512-b5jtVTH6AU5CJXHNdj7Jj9IEiR9yVjjnwHzPJhGyHGPdcsZSzBCkS9GBbV33niRMvKthDwQRFRJfI4a+k4PvYg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [android] + + '@oxc-parser/binding-darwin-arm64@0.127.0': + resolution: {integrity: sha512-obCE8B7ISKkJidjlhv9xRGJPOSDG2Yu6PRga9Ruaz35uintHxbp1Ki/Yc71wx4rj3Edrm0a1kzG1TAwit0wFpg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [darwin] + + '@oxc-parser/binding-darwin-x64@0.127.0': + resolution: {integrity: sha512-JL6Xb5IwPQT8rUzlpsX7E+AgfcdNklXNPFp8pjCQQ5MQOQo5rtEB2ui+3Hgg9Sn7Y9Egj6YOLLiHhLpdAe12Aw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [darwin] + + '@oxc-parser/binding-freebsd-x64@0.127.0': + resolution: {integrity: sha512-SDQ/3MQFw58fqQz3Z1PhSKFF3JoCF4gmlNjziDm8X02tTahCw0qJbd7FGPDKw1i4VTBZene9JPyC3mHtSvi+wA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [freebsd] + + '@oxc-parser/binding-linux-arm-gnueabihf@0.127.0': + resolution: {integrity: sha512-Av+D1MIqzV0YMGPT9we2SIZaMKD7Cxs4CvXSx/yxaWHewZjYEjScpOf5igc8IILASViw4WTnjlwUdI1KzVtDHQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm] + os: [linux] + + '@oxc-parser/binding-linux-arm-musleabihf@0.127.0': + resolution: {integrity: sha512-Cs2fdJ8cPpFdeebj6p4dag8A4+56hPvZ0AhQQzlaLswGz1tz7bXt1nETLeorrM9+AMcWFFkqxcXwDGfTVidY8g==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm] + os: [linux] + + '@oxc-parser/binding-linux-arm64-gnu@0.127.0': + resolution: {integrity: sha512-qdOfTcT6SY8gsJrrV92uyEUyjqMGPpIB5JZUG6QN5dukYd+7/j0kX6MwK1DgQj39jtUYixxPiaRUiEN1+0CXgQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [linux] + + '@oxc-parser/binding-linux-arm64-musl@0.127.0': + resolution: {integrity: sha512-EoTCZneNFU/P2qrpEM+RHmQwt+CvDkyGESG6qhr7KaegXLZwePfbrkCDfAk8/rhxbDUVGsZILX+2tqPzFtoFWA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [linux] + + '@oxc-parser/binding-linux-ppc64-gnu@0.127.0': + resolution: {integrity: sha512-zALjmZYgxFLHjXeudcDF0xFGNydTAtkAeXAr2EuC17ywCyFxcmQra4w0BMde0Yi/re4Bi4iwEoEXtYN7l6eBLQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [ppc64] + os: [linux] + + '@oxc-parser/binding-linux-riscv64-gnu@0.127.0': + resolution: {integrity: sha512-fPP8M6zQLS7Jz7o9d5ArUSuAuSK3e+WCYVrCpdzeCOejidtZExJ9tjhDrAd3HEPqARBCPmdpqxESPFqy44vkBQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [riscv64] + os: [linux] + + '@oxc-parser/binding-linux-riscv64-musl@0.127.0': + resolution: {integrity: sha512-7IcC4Ao02oGpfnjt+X/oF4U2mllo2qoSkw5xxiXNKL9MCTsTiAC6616beOuehdxGcnz1bRoPC1RQ2f1GQDdN+g==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [riscv64] + os: [linux] + + '@oxc-parser/binding-linux-s390x-gnu@0.127.0': + resolution: {integrity: sha512-pbXIhiNFHoqWeqDNLiJ9JkpHz1IM9k4DXa66x+1GTWMG7iLxtkXgE53iiuKSXwmk3zIYmaPVfBvgcAhS583K4Q==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [s390x] + os: [linux] + + '@oxc-parser/binding-linux-x64-gnu@0.127.0': + resolution: {integrity: sha512-MYCguB9RvBvlSd6gbuNI7QwiLoCCAlGnlRJFPrzLI6U1/9wkC/WK6LtBAUln55H1Ctqw45PWmqrobKoMhsYQzQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [linux] + + '@oxc-parser/binding-linux-x64-musl@0.127.0': + resolution: {integrity: sha512-5eY0B/bxf1xIUxb4NOTvOI3KWtBQfPWYyKAzgcrCt0mDibSZygVpO1Pz8bkeiSZ5Jj9+M09dkggG3H8I5d0Uyg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [linux] + + '@oxc-parser/binding-openharmony-arm64@0.127.0': + resolution: {integrity: sha512-Gld0ajrFTUXNtdw20fVBuTQx66FA75nIVg+//pPfR3sXkuABB4mTBhl3r9JNzrJpgW//qiwxf0nWXUWGJSL3UQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [openharmony] + + '@oxc-parser/binding-wasm32-wasi@0.127.0': + resolution: {integrity: sha512-T6KVD7rhLzFlwGRXMnxUFfkCZD8FHnb968wVXW1mXzgRFc5RNXOBY2mPPDZ77x5Ln76ltLMgtPg0cOkU1NSrEQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [wasm32] + + '@oxc-parser/binding-win32-arm64-msvc@0.127.0': + resolution: {integrity: sha512-Ujvw4X+LD1CCGULcsQcvb4YNVoBGqt+JHgNNzGGaCImELiZLk477ifUH53gIbE7EKd933NdTi25JWEr9K2HwXw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [win32] + + '@oxc-parser/binding-win32-ia32-msvc@0.127.0': + resolution: {integrity: sha512-0cwxKO7KHQQQfo4Uf4B2SQrhgm+cJaP9OvFFhx52Tkg4bezsacu83GB2/In5bC415Ueeym+kXdnge/57rbSfTw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [ia32] + os: [win32] + + '@oxc-parser/binding-win32-x64-msvc@0.127.0': + resolution: {integrity: sha512-rOrnSQSCbhI2kowr9XxE7m9a8oQXnBHjnS6j95LxxAnEZ0+Fz20WlRXG4ondQb+ejjt2KOsa65sE6++L6kUd+w==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [win32] + + '@oxc-project/types@0.127.0': + resolution: {integrity: sha512-aIYXQBo4lCbO4z0R3FHeucQHpF46l2LbMdxRvqvuRuW2OxdnSkcng5B8+K12spgLDj93rtN3+J2Vac/TIO+ciQ==} + + '@oxc-resolver/binding-android-arm-eabi@11.19.1': + resolution: {integrity: sha512-aUs47y+xyXHUKlbhqHUjBABjvycq6YSD7bpxSW7vplUmdzAlJ93yXY6ZR0c1o1x5A/QKbENCvs3+NlY8IpIVzg==} + cpu: [arm] + os: [android] + + '@oxc-resolver/binding-android-arm64@11.19.1': + resolution: {integrity: sha512-oolbkRX+m7Pq2LNjr/kKgYeC7bRDMVTWPgxBGMjSpZi/+UskVo4jsMU3MLheZV55jL6c3rNelPl4oD60ggYmqA==} + cpu: [arm64] + os: [android] + + '@oxc-resolver/binding-darwin-arm64@11.19.1': + resolution: {integrity: sha512-nUC6d2i3R5B12sUW4O646qD5cnMXf2oBGPLIIeaRfU9doJRORAbE2SGv4eW6rMqhD+G7nf2Y8TTJTLiiO3Q/dQ==} + cpu: [arm64] + os: [darwin] + + '@oxc-resolver/binding-darwin-x64@11.19.1': + resolution: {integrity: sha512-cV50vE5+uAgNcFa3QY1JOeKDSkM/9ReIcc/9wn4TavhW/itkDGrXhw9jaKnkQnGbjJ198Yh5nbX/Gr2mr4Z5jQ==} + cpu: [x64] + os: [darwin] + + '@oxc-resolver/binding-freebsd-x64@11.19.1': + resolution: {integrity: sha512-xZOQiYGFxtk48PBKff+Zwoym7ScPAIVp4c14lfLxizO2LTTTJe5sx9vQNGrBymrf/vatSPNMD4FgsaaRigPkqw==} + cpu: [x64] + os: [freebsd] + + '@oxc-resolver/binding-linux-arm-gnueabihf@11.19.1': + resolution: {integrity: sha512-lXZYWAC6kaGe/ky2su94e9jN9t6M0/6c+GrSlCqL//XO1cxi5lpAhnJYdyrKfm0ZEr/c7RNyAx3P7FSBcBd5+A==} + cpu: [arm] + os: [linux] + + '@oxc-resolver/binding-linux-arm-musleabihf@11.19.1': + resolution: {integrity: sha512-veG1kKsuK5+t2IsO9q0DErYVSw2azvCVvWHnfTOS73WE0STdLLB7Q1bB9WR+yHPQM76ASkFyRbogWo1GR1+WbQ==} + cpu: [arm] + os: [linux] + + '@oxc-resolver/binding-linux-arm64-gnu@11.19.1': + resolution: {integrity: sha512-heV2+jmXyYnUrpUXSPugqWDRpnsQcDm2AX4wzTuvgdlZfoNYO0O3W2AVpJYaDn9AG4JdM6Kxom8+foE7/BcSig==} + cpu: [arm64] + os: [linux] + + '@oxc-resolver/binding-linux-arm64-musl@11.19.1': + resolution: {integrity: sha512-jvo2Pjs1c9KPxMuMPIeQsgu0mOJF9rEb3y3TdpsrqwxRM+AN6/nDDwv45n5ZrUnQMsdBy5gIabioMKnQfWo9ew==} + cpu: [arm64] + os: [linux] + + '@oxc-resolver/binding-linux-ppc64-gnu@11.19.1': + resolution: {integrity: sha512-vLmdNxWCdN7Uo5suays6A/+ywBby2PWBBPXctWPg5V0+eVuzsJxgAn6MMB4mPlshskYbppjpN2Zg83ArHze9gQ==} + cpu: [ppc64] + os: [linux] + + '@oxc-resolver/binding-linux-riscv64-gnu@11.19.1': + resolution: {integrity: sha512-/b+WgR+VTSBxzgOhDO7TlMXC1ufPIMR6Vj1zN+/x+MnyXGW7prTLzU9eW85Aj7Th7CCEG9ArCbTeqxCzFWdg2w==} + cpu: [riscv64] + os: [linux] + + '@oxc-resolver/binding-linux-riscv64-musl@11.19.1': + resolution: {integrity: sha512-YlRdeWb9j42p29ROh+h4eg/OQ3dTJlpHSa+84pUM9+p6i3djtPz1q55yLJhgW9XfDch7FN1pQ/Vd6YP+xfRIuw==} + cpu: [riscv64] + os: [linux] + + '@oxc-resolver/binding-linux-s390x-gnu@11.19.1': + resolution: {integrity: sha512-EDpafVOQWF8/MJynsjOGFThcqhRHy417sRyLfQmeiamJ8qVhSKAn2Dn2VVKUGCjVB9C46VGjhNo7nOPUi1x6uA==} + cpu: [s390x] + os: [linux] + + '@oxc-resolver/binding-linux-x64-gnu@11.19.1': + resolution: {integrity: sha512-NxjZe+rqWhr+RT8/Ik+5ptA3oz7tUw361Wa5RWQXKnfqwSSHdHyrw6IdcTfYuml9dM856AlKWZIUXDmA9kkiBQ==} + cpu: [x64] + os: [linux] + + '@oxc-resolver/binding-linux-x64-musl@11.19.1': + resolution: {integrity: sha512-cM/hQwsO3ReJg5kR+SpI69DMfvNCp+A/eVR4b4YClE5bVZwz8rh2Nh05InhwI5HR/9cArbEkzMjcKgTHS6UaNw==} + cpu: [x64] + os: [linux] + + '@oxc-resolver/binding-openharmony-arm64@11.19.1': + resolution: {integrity: sha512-QF080IowFB0+9Rh6RcD19bdgh49BpQHUW5TajG1qvWHvmrQznTZZjYlgE2ltLXyKY+qs4F/v5xuX1XS7Is+3qA==} + cpu: [arm64] + os: [openharmony] + + '@oxc-resolver/binding-wasm32-wasi@11.19.1': + resolution: {integrity: sha512-w8UCKhX826cP/ZLokXDS6+milN8y4X7zidsAttEdWlVoamTNf6lhBJldaWr3ukTDiye7s4HRcuPEPOXNC432Vg==} + engines: {node: '>=14.0.0'} + cpu: [wasm32] + + '@oxc-resolver/binding-win32-arm64-msvc@11.19.1': + resolution: {integrity: sha512-nJ4AsUVZrVKwnU/QRdzPCCrO0TrabBqgJ8pJhXITdZGYOV28TIYystV1VFLbQ7DtAcaBHpocT5/ZJnF78YJPtQ==} + cpu: [arm64] + os: [win32] + + '@oxc-resolver/binding-win32-ia32-msvc@11.19.1': + resolution: {integrity: sha512-EW+ND5q2Tl+a3pH81l1QbfgbF3HmqgwLfDfVithRFheac8OTcnbXt/JxqD2GbDkb7xYEqy1zNaVFRr3oeG8npA==} + cpu: [ia32] + os: [win32] + + '@oxc-resolver/binding-win32-x64-msvc@11.19.1': + resolution: {integrity: sha512-6hIU3RQu45B+VNTY4Ru8ppFwjVS/S5qwYyGhBotmjxfEKk41I2DlGtRfGJndZ5+6lneE2pwloqunlOyZuX/XAw==} + cpu: [x64] + os: [win32] + + '@parcel/watcher-android-arm64@2.5.6': + resolution: {integrity: sha512-YQxSS34tPF/6ZG7r/Ih9xy+kP/WwediEUsqmtf0cuCV5TPPKw/PQHRhueUo6JdeFJaqV3pyjm0GdYjZotbRt/A==} + engines: {node: '>= 10.0.0'} + cpu: [arm64] + os: [android] + + '@parcel/watcher-darwin-arm64@2.5.6': + resolution: {integrity: sha512-Z2ZdrnwyXvvvdtRHLmM4knydIdU9adO3D4n/0cVipF3rRiwP+3/sfzpAwA/qKFL6i1ModaabkU7IbpeMBgiVEA==} + engines: {node: '>= 10.0.0'} + cpu: [arm64] + os: [darwin] + + '@parcel/watcher-darwin-x64@2.5.6': + resolution: {integrity: sha512-HgvOf3W9dhithcwOWX9uDZyn1lW9R+7tPZ4sug+NGrGIo4Rk1hAXLEbcH1TQSqxts0NYXXlOWqVpvS1SFS4fRg==} + engines: {node: '>= 10.0.0'} + cpu: [x64] + os: [darwin] + + '@parcel/watcher-freebsd-x64@2.5.6': + resolution: {integrity: sha512-vJVi8yd/qzJxEKHkeemh7w3YAn6RJCtYlE4HPMoVnCpIXEzSrxErBW5SJBgKLbXU3WdIpkjBTeUNtyBVn8TRng==} + engines: {node: '>= 10.0.0'} + cpu: [x64] + os: [freebsd] + + '@parcel/watcher-linux-arm-glibc@2.5.6': + resolution: {integrity: sha512-9JiYfB6h6BgV50CCfasfLf/uvOcJskMSwcdH1PHH9rvS1IrNy8zad6IUVPVUfmXr+u+Km9IxcfMLzgdOudz9EQ==} + engines: {node: '>= 10.0.0'} + cpu: [arm] + os: [linux] + + '@parcel/watcher-linux-arm-musl@2.5.6': + resolution: {integrity: sha512-Ve3gUCG57nuUUSyjBq/MAM0CzArtuIOxsBdQ+ftz6ho8n7s1i9E1Nmk/xmP323r2YL0SONs1EuwqBp2u1k5fxg==} + engines: {node: '>= 10.0.0'} + cpu: [arm] + os: [linux] + + '@parcel/watcher-linux-arm64-glibc@2.5.6': + resolution: {integrity: sha512-f2g/DT3NhGPdBmMWYoxixqYr3v/UXcmLOYy16Bx0TM20Tchduwr4EaCbmxh1321TABqPGDpS8D/ggOTaljijOA==} + engines: {node: '>= 10.0.0'} + cpu: [arm64] + os: [linux] + + '@parcel/watcher-linux-arm64-musl@2.5.6': + resolution: {integrity: sha512-qb6naMDGlbCwdhLj6hgoVKJl2odL34z2sqkC7Z6kzir8b5W65WYDpLB6R06KabvZdgoHI/zxke4b3zR0wAbDTA==} + engines: {node: '>= 10.0.0'} + cpu: [arm64] + os: [linux] + + '@parcel/watcher-linux-x64-glibc@2.5.6': + resolution: {integrity: sha512-kbT5wvNQlx7NaGjzPFu8nVIW1rWqV780O7ZtkjuWaPUgpv2NMFpjYERVi0UYj1msZNyCzGlaCWEtzc+exjMGbQ==} + engines: {node: '>= 10.0.0'} + cpu: [x64] + os: [linux] + + '@parcel/watcher-linux-x64-musl@2.5.6': + resolution: {integrity: sha512-1JRFeC+h7RdXwldHzTsmdtYR/Ku8SylLgTU/reMuqdVD7CtLwf0VR1FqeprZ0eHQkO0vqsbvFLXUmYm/uNKJBg==} + engines: {node: '>= 10.0.0'} + cpu: [x64] + os: [linux] + + '@parcel/watcher-win32-arm64@2.5.6': + resolution: {integrity: sha512-3ukyebjc6eGlw9yRt678DxVF7rjXatWiHvTXqphZLvo7aC5NdEgFufVwjFfY51ijYEWpXbqF5jtrK275z52D4Q==} + engines: {node: '>= 10.0.0'} + cpu: [arm64] + os: [win32] + + '@parcel/watcher-win32-ia32@2.5.6': + resolution: {integrity: sha512-k35yLp1ZMwwee3Ez/pxBi5cf4AoBKYXj00CZ80jUz5h8prpiaQsiRPKQMxoLstNuqe2vR4RNPEAEcjEFzhEz/g==} + engines: {node: '>= 10.0.0'} + cpu: [ia32] + os: [win32] + + '@parcel/watcher-win32-x64@2.5.6': + resolution: {integrity: sha512-hbQlYcCq5dlAX9Qx+kFb0FHue6vbjlf0FrNzSKdYK2APUf7tGfGxQCk2ihEREmbR6ZMc0MVAD5RIX/41gpUzTw==} + engines: {node: '>= 10.0.0'} + cpu: [x64] + os: [win32] + + '@parcel/watcher@2.5.6': + resolution: {integrity: sha512-tmmZ3lQxAe/k/+rNnXQRawJ4NjxO2hqiOLTHvWchtGZULp4RyFeh6aU4XdOYBFe2KE1oShQTv4AblOs2iOrNnQ==} + engines: {node: '>= 10.0.0'} '@rollup/pluginutils@5.3.0': resolution: {integrity: sha512-5EdhGZtnu3V88ces7s53hhfK5KSASnJZv8Lulpc04cWO3REESroJXg73DFsOmgbU2BhwV0E20bu2IDZb3VKW4Q==} @@ -592,128 +958,128 @@ packages: rollup: optional: true - '@rollup/rollup-android-arm-eabi@4.60.2': - resolution: {integrity: sha512-dnlp69efPPg6Uaw2dVqzWRfAWRnYVb1XJ8CyyhIbZeaq4CA5/mLeZ1IEt9QqQxmbdvagjLIm2ZL8BxXv5lH4Yw==} + '@rollup/rollup-android-arm-eabi@4.60.3': + resolution: {integrity: sha512-x35CNW/ANXG3hE/EZpRU8MXX1JDN86hBb2wMGAtltkz7pc6cxgjpy1OMMfDosOQ+2hWqIkag/fGok1Yady9nGw==} cpu: [arm] os: [android] - '@rollup/rollup-android-arm64@4.60.2': - resolution: {integrity: sha512-OqZTwDRDchGRHHm/hwLOL7uVPB9aUvI0am/eQuWMNyFHf5PSEQmyEeYYheA0EPPKUO/l0uigCp+iaTjoLjVoHg==} + '@rollup/rollup-android-arm64@4.60.3': + resolution: {integrity: sha512-xw3xtkDApIOGayehp2+Rz4zimfkaX65r4t47iy+ymQB2G4iJCBBfj0ogVg5jpvjpn8UWn/+q9tprxleYeNp3Hw==} cpu: [arm64] os: [android] - '@rollup/rollup-darwin-arm64@4.60.2': - resolution: {integrity: sha512-UwRE7CGpvSVEQS8gUMBe1uADWjNnVgP3Iusyda1nSRwNDCsRjnGc7w6El6WLQsXmZTbLZx9cecegumcitNfpmA==} + '@rollup/rollup-darwin-arm64@4.60.3': + resolution: {integrity: sha512-vo6Y5Qfpx7/5EaamIwi0WqW2+zfiusVihKatLvtN1VFVy3D13uERk/6gZLU1UiHRL6fDXqj/ELIeVRGnvcTE1g==} cpu: [arm64] os: [darwin] - '@rollup/rollup-darwin-x64@4.60.2': - resolution: {integrity: sha512-gjEtURKLCC5VXm1I+2i1u9OhxFsKAQJKTVB8WvDAHF+oZlq0GTVFOlTlO1q3AlCTE/DF32c16ESvfgqR7343/g==} + '@rollup/rollup-darwin-x64@4.60.3': + resolution: {integrity: sha512-D+0QGcZhBzTN82weOnsSlY7V7+RMmPuF1CkbxyMAGE8+ZHeUjyb76ZiWmBlCu//AQQONvxcqRbwZTajZKqjuOw==} cpu: [x64] os: [darwin] - '@rollup/rollup-freebsd-arm64@4.60.2': - resolution: {integrity: sha512-Bcl6CYDeAgE70cqZaMojOi/eK63h5Me97ZqAQoh77VPjMysA/4ORQBRGo3rRy45x4MzVlU9uZxs8Uwy7ZaKnBw==} + '@rollup/rollup-freebsd-arm64@4.60.3': + resolution: {integrity: sha512-6HnvHCT7fDyj6R0Ph7A6x8dQS/S38MClRWeDLqc0MdfWkxjiu1HSDYrdPhqSILzjTIC/pnXbbJbo+ft+gy/9hQ==} cpu: [arm64] os: [freebsd] - '@rollup/rollup-freebsd-x64@4.60.2': - resolution: {integrity: sha512-LU+TPda3mAE2QB0/Hp5VyeKJivpC6+tlOXd1VMoXV/YFMvk/MNk5iXeBfB4MQGRWyOYVJ01625vjkr0Az98OJQ==} + '@rollup/rollup-freebsd-x64@4.60.3': + resolution: {integrity: sha512-KHLgC3WKlUYW3ShFKnnosZDOJ0xjg9zp7au3sIm2bs/tGBeC2ipmvRh/N7JKi0t9Ue20C0dpEshi8WUubg+cnA==} cpu: [x64] os: [freebsd] - '@rollup/rollup-linux-arm-gnueabihf@4.60.2': - resolution: {integrity: sha512-2QxQrM+KQ7DAW4o22j+XZ6RKdxjLD7BOWTP0Bv0tmjdyhXSsr2Ul1oJDQqh9Zf5qOwTuTc7Ek83mOFaKnodPjg==} + '@rollup/rollup-linux-arm-gnueabihf@4.60.3': + resolution: {integrity: sha512-DV6fJoxEYWJOvaZIsok7KrYl0tPvga5OZ2yvKHNNYyk/2roMLqQAbGhr78EQ5YhHpnhLKJD3S1WFusAkmUuV5g==} cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm-musleabihf@4.60.2': - resolution: {integrity: sha512-TbziEu2DVsTEOPif2mKWkMeDMLoYjx95oESa9fkQQK7r/Orta0gnkcDpzwufEcAO2BLBsD7mZkXGFqEdMRRwfw==} + '@rollup/rollup-linux-arm-musleabihf@4.60.3': + resolution: {integrity: sha512-mQKoJAzvuOs6F+TZybQO4GOTSMUu7v0WdxEk24krQ/uUxXoPTtHjuaUuPmFhtBcM4K0ons8nrE3JyhTuCFtT/w==} cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm64-gnu@4.60.2': - resolution: {integrity: sha512-bO/rVDiDUuM2YfuCUwZ1t1cP+/yqjqz+Xf2VtkdppefuOFS2OSeAfgafaHNkFn0t02hEyXngZkxtGqXcXwO8Rg==} + '@rollup/rollup-linux-arm64-gnu@4.60.3': + resolution: {integrity: sha512-Whjj2qoiJ6+OOJMGptTYazaJvjOJm+iKHpXQM1P3LzGjt7Ff++Tp7nH4N8J/BUA7R9IHfDyx4DJIflifwnbmIA==} cpu: [arm64] os: [linux] - '@rollup/rollup-linux-arm64-musl@4.60.2': - resolution: {integrity: sha512-hr26p7e93Rl0Za+JwW7EAnwAvKkehh12BU1Llm9Ykiibg4uIr2rbpxG9WCf56GuvidlTG9KiiQT/TXT1yAWxTA==} + '@rollup/rollup-linux-arm64-musl@4.60.3': + resolution: {integrity: sha512-4YTNHKqGng5+yiZt3mg77nmyuCfmNfX4fPmyUapBcIk+BdwSwmCWGXOUxhXbBEkFHtoN5boLj/5NON+u5QC9tg==} cpu: [arm64] os: [linux] - '@rollup/rollup-linux-loong64-gnu@4.60.2': - resolution: {integrity: sha512-pOjB/uSIyDt+ow3k/RcLvUAOGpysT2phDn7TTUB3n75SlIgZzM6NKAqlErPhoFU+npgY3/n+2HYIQVbF70P9/A==} + '@rollup/rollup-linux-loong64-gnu@4.60.3': + resolution: {integrity: sha512-SU3kNlhkpI4UqlUc2VXPGK9o886ZsSeGfMAX2ba2b8DKmMXq4AL7KUrkSWVbb7koVqx41Yczx6dx5PNargIrEA==} cpu: [loong64] os: [linux] - '@rollup/rollup-linux-loong64-musl@4.60.2': - resolution: {integrity: sha512-2/w+q8jszv9Ww1c+6uJT3OwqhdmGP2/4T17cu8WuwyUuuaCDDJ2ojdyYwZzCxx0GcsZBhzi3HmH+J5pZNXnd+Q==} + '@rollup/rollup-linux-loong64-musl@4.60.3': + resolution: {integrity: sha512-6lDLl5h4TXpB1mTf2rQWnAk/LcXrx9vBfu/DT5TIPhvMhRWaZ5MxkIc8u4lJAmBo6klTe1ywXIUHFjylW505sg==} cpu: [loong64] os: [linux] - '@rollup/rollup-linux-ppc64-gnu@4.60.2': - resolution: {integrity: sha512-11+aL5vKheYgczxtPVVRhdptAM2H7fcDR5Gw4/bTcteuZBlH4oP9f5s9zYO9aGZvoGeBpqXI/9TZZihZ609wKw==} + '@rollup/rollup-linux-ppc64-gnu@4.60.3': + resolution: {integrity: sha512-BMo8bOw8evlup/8G+cj5xWtPyp93xPdyoSN16Zy90Q2QZ0ZYRhCt6ZJSwbrRzG9HApFabjwj2p25TUPDWrhzqQ==} cpu: [ppc64] os: [linux] - '@rollup/rollup-linux-ppc64-musl@4.60.2': - resolution: {integrity: sha512-i16fokAGK46IVZuV8LIIwMdtqhin9hfYkCh8pf8iC3QU3LpwL+1FSFGej+O7l3E/AoknL6Dclh2oTdnRMpTzFQ==} + '@rollup/rollup-linux-ppc64-musl@4.60.3': + resolution: {integrity: sha512-E0L8X1dZN1/Rph+5VPF6Xj2G7JJvMACVXtamTJIDrVI44Y3K+G8gQaMEAavbqCGTa16InptiVrX6eM6pmJ+7qA==} cpu: [ppc64] os: [linux] - '@rollup/rollup-linux-riscv64-gnu@4.60.2': - resolution: {integrity: sha512-49FkKS6RGQoriDSK/6E2GkAsAuU5kETFCh7pG4yD/ylj9rKhTmO3elsnmBvRD4PgJPds5W2PkhC82aVwmUcJ7A==} + '@rollup/rollup-linux-riscv64-gnu@4.60.3': + resolution: {integrity: sha512-oZJ/WHaVfHUiRAtmTAeo3DcevNsVvH8mbvodjZy7D5QKvCefO371SiKRpxoDcCxB3PTRTLayWBkvmDQKTcX/sw==} cpu: [riscv64] os: [linux] - '@rollup/rollup-linux-riscv64-musl@4.60.2': - resolution: {integrity: sha512-mjYNkHPfGpUR00DuM1ZZIgs64Hpf4bWcz9Z41+4Q+pgDx73UwWdAYyf6EG/lRFldmdHHzgrYyge5akFUW0D3mQ==} + '@rollup/rollup-linux-riscv64-musl@4.60.3': + resolution: {integrity: sha512-Dhbyh7j9FybM3YaTgaHmVALwA8AkUwTPccyCQ79TG9AJUsMQqgN1DDEZNr4+QUfwiWvLDumW5vdwzoeUF+TNxQ==} cpu: [riscv64] os: [linux] - '@rollup/rollup-linux-s390x-gnu@4.60.2': - resolution: {integrity: sha512-ALyvJz965BQk8E9Al/JDKKDLH2kfKFLTGMlgkAbbYtZuJt9LU8DW3ZoDMCtQpXAltZxwBHevXz5u+gf0yA0YoA==} + '@rollup/rollup-linux-s390x-gnu@4.60.3': + resolution: {integrity: sha512-cJd1X5XhHHlltkaypz1UcWLA8AcoIi1aWhsvaWDskD1oz2eKCypnqvTQ8ykMNI0RSmm7NkTdSqSSD7zM0xa6Ig==} cpu: [s390x] os: [linux] - '@rollup/rollup-linux-x64-gnu@4.60.2': - resolution: {integrity: sha512-UQjrkIdWrKI626Du8lCQ6MJp/6V1LAo2bOK9OTu4mSn8GGXIkPXk/Vsp4bLHCd9Z9Iz2OTEaokUE90VweJgIYQ==} + '@rollup/rollup-linux-x64-gnu@4.60.3': + resolution: {integrity: sha512-DAZDBHQfG2oQuhY7mc6I3/qB4LU2fQCjRvxbDwd/Jdvb9fypP4IJ4qmtu6lNjes6B531AI8cg1aKC2di97bUxA==} cpu: [x64] os: [linux] - '@rollup/rollup-linux-x64-musl@4.60.2': - resolution: {integrity: sha512-bTsRGj6VlSdn/XD4CGyzMnzaBs9bsRxy79eTqTCBsA8TMIEky7qg48aPkvJvFe1HyzQ5oMZdg7AnVlWQSKLTnw==} + '@rollup/rollup-linux-x64-musl@4.60.3': + resolution: {integrity: sha512-cRxsE8c13mZOh3vP+wLDxpQBRrOHDIGOWyDL93Sy0Ga8y515fBcC2pjUfFwUe5T7tqvTvWbCpg1URM/AXdWIXA==} cpu: [x64] os: [linux] - '@rollup/rollup-openbsd-x64@4.60.2': - resolution: {integrity: sha512-6d4Z3534xitaA1FcMWP7mQPq5zGwBmGbhphh2DwaA1aNIXUu3KTOfwrWpbwI4/Gr0uANo7NTtaykFyO2hPuFLg==} + '@rollup/rollup-openbsd-x64@4.60.3': + resolution: {integrity: sha512-QaWcIgRxqEdQdhJqW4DJctsH6HCmo5vHxY0krHSX4jMtOqfzC+dqDGuHM87bu4H8JBeibWx7jFz+h6/4C8wA5Q==} cpu: [x64] os: [openbsd] - '@rollup/rollup-openharmony-arm64@4.60.2': - resolution: {integrity: sha512-NetAg5iO2uN7eB8zE5qrZ3CSil+7IJt4WDFLcC75Ymywq1VZVD6qJ6EvNLjZ3rEm6gB7XW5JdT60c6MN35Z85Q==} + '@rollup/rollup-openharmony-arm64@4.60.3': + resolution: {integrity: sha512-AaXwSvUi3QIPtroAUw1t5yHGIyqKEXwH54WUocFolZhpGDruJcs8c+xPNDRn4XiQsS7MEwnYsHW2l0MBLDMkWg==} cpu: [arm64] os: [openharmony] - '@rollup/rollup-win32-arm64-msvc@4.60.2': - resolution: {integrity: sha512-NCYhOotpgWZ5kdxCZsv6Iudx0wX8980Q/oW4pNFNihpBKsDbEA1zpkfxJGC0yugsUuyDZ7gL37dbzwhR0VI7pQ==} + '@rollup/rollup-win32-arm64-msvc@4.60.3': + resolution: {integrity: sha512-65LAKM/bAWDqKNEelHlcHvm2V+Vfb8C6INFxQXRHCvaVN1rJfwr4NvdP4FyzUaLqWfaCGaadf6UbTm8xJeYfEg==} cpu: [arm64] os: [win32] - '@rollup/rollup-win32-ia32-msvc@4.60.2': - resolution: {integrity: sha512-RXsaOqXxfoUBQoOgvmmijVxJnW2IGB0eoMO7F8FAjaj0UTywUO/luSqimWBJn04WNgUkeNhh7fs7pESXajWmkg==} + '@rollup/rollup-win32-ia32-msvc@4.60.3': + resolution: {integrity: sha512-EEM2gyhBF5MFnI6vMKdX1LAosE627RGBzIoGMdLloPZkXrUN0Ckqgr2Qi8+J3zip/8NVVro3/FjB+tjhZUgUHA==} cpu: [ia32] os: [win32] - '@rollup/rollup-win32-x64-gnu@4.60.2': - resolution: {integrity: sha512-qdAzEULD+/hzObedtmV6iBpdL5TIbKVztGiK7O3/KYSf+HIzU257+MX1EXJcyIiDbMAqmbwaufcYPvyRryeZtA==} + '@rollup/rollup-win32-x64-gnu@4.60.3': + resolution: {integrity: sha512-E5Eb5H/DpxaoXH++Qkv28RcUJboMopmdDUALBczvHMf7hNIxaDZqwY5lK12UK1BHacSmvupoEWGu+n993Z0y1A==} cpu: [x64] os: [win32] - '@rollup/rollup-win32-x64-msvc@4.60.2': - resolution: {integrity: sha512-Nd/SgG27WoA9e+/TdK74KnHz852TLa94ovOYySo/yMPuTmpckK/jIF2jSwS3g7ELSKXK13/cVdmg1Z/DaCWKxA==} + '@rollup/rollup-win32-x64-msvc@4.60.3': + resolution: {integrity: sha512-hPt/bgL5cE+Qp+/TPHBqptcAgPzgj46mPcg/16zNUmbQk0j+mOEQV/+Lqu8QRtDV3Ek95Q6FeFITpuhl6OTsAA==} cpu: [x64] os: [win32] @@ -748,81 +1114,97 @@ packages: '@shikijs/vscode-textmate@10.0.2': resolution: {integrity: sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg==} - '@storybook-astro/framework@1.1.0': - resolution: {integrity: sha512-U2f2D3Lp8qH1sW80CYHynLEEVPUWFXsQBt7fAjgJa3OGKHK36mVpv2gickHfWqJovu4wVDf6EAnIOyxrNMIsZA==} - engines: {node: '>=20.16.0 || >=22.19.0 || >=24.0.0'} + '@solid-devtools/debugger@0.28.1': + resolution: {integrity: sha512-6qIUI6VYkXoRnL8oF5bvh2KgH71qlJ18hNw/mwSyY6v48eb80ZR48/5PDXufUa3q+MBSuYa1uqTMwLewpay9eg==} peerDependencies: - '@astrojs/alpinejs': ^0.4.5 || ^0.5.0 - '@astrojs/preact': ^4.0.8 || ^5.0.0 - '@astrojs/react': ^4.2.3 || ^5.0.0 - '@astrojs/solid-js': ^5.0.7 || ^6.0.0 - '@astrojs/svelte': ^7.0.9 || ^8.0.0 - '@astrojs/vue': ^5.0.9 || ^6.0.0 - '@preact/preset-vite': ^2.10.1 - '@storybook/preact': ^10.0.0 - '@storybook/react': ^10.0.0 - '@storybook/svelte': ^10.0.0 - '@storybook/vue3': ^10.0.0 - '@vitejs/plugin-react': ^5.0.0 - '@vitejs/plugin-vue': ^5.2.3 - '@vitejs/plugin-vue-jsx': ^4.1.2 - astro: ^5.5.3 || ^6.0.0 - storybook: ^10.0.0 - storybook-solidjs: ^1.0.0-beta.7 - vite: ^6.4.1 || ^7.0.0 || ^8.0.0 + solid-js: ^1.9.0 + + '@solid-devtools/shared@0.20.0': + resolution: {integrity: sha512-o5TACmUOQsxpzpOKCjbQqGk8wL8PMi+frXG9WNu4Lh3PQVUB6hs95Kl/S8xc++zwcMguUKZJn8h5URUiMOca6Q==} + peerDependencies: + solid-js: ^1.9.0 + + '@solid-primitives/bounds@0.1.5': + resolution: {integrity: sha512-JFym8zijMfWp1FaAmJlH3xMfenCuhjaUsoBn3kt9FtoWwLj+yt+EGYt+p3SkOKwF7h4gaGtZ5PIdSbSNVWkRmg==} + peerDependencies: + solid-js: ^1.6.12 + + '@solid-primitives/event-listener@2.4.5': + resolution: {integrity: sha512-nwRV558mIabl4yVAhZKY8cb6G+O1F0M6Z75ttTu5hk+SxdOnKSGj+eetDIu7Oax1P138ZdUU01qnBPR8rnxaEA==} + peerDependencies: + solid-js: ^1.6.12 + + '@solid-primitives/keyboard@1.3.5': + resolution: {integrity: sha512-sav+l+PL+74z3yaftVs7qd8c2SXkqzuxPOVibUe5wYMt+U5Hxp3V3XCPgBPN2I6cANjvoFtz0NiU8uHVLdi9FQ==} + peerDependencies: + solid-js: ^1.6.12 + + '@solid-primitives/media@2.3.5': + resolution: {integrity: sha512-LX9fB5WDaK87FMDtUB1qokBOfT2et9Uobv/zZaKLH9caFSz4+P70MBKEIBHcZQy+9MV5M2XvGYLTbLskjkzMjA==} + peerDependencies: + solid-js: ^1.6.12 + + '@solid-primitives/refs@1.1.3': + resolution: {integrity: sha512-aam02fjNKpBteewF/UliPSQCVJsIIGOLEWQOh+ll6R/QePzBOOBMcC4G+5jTaO75JuUS1d/14Q1YXT3X0Ow6iA==} + peerDependencies: + solid-js: ^1.6.12 + + '@solid-primitives/resize-observer@2.1.5': + resolution: {integrity: sha512-AiyTknKcNBaKHbcSMuxtSNM8FjIuiSuFyFghdD0TcCMU9hKi9EmsC5pjfjDwxE+5EueB1a+T/34PLRI5vbBbKw==} + peerDependencies: + solid-js: ^1.6.12 + + '@solid-primitives/rootless@1.5.3': + resolution: {integrity: sha512-N8cIDAHbWcLahNRLr0knAAQvXyEdEMoAZvIMZKmhNb1mlx9e2UOv9BRD5YNwQUJwbNoYVhhLwFOEOcVXFx0HqA==} + peerDependencies: + solid-js: ^1.6.12 + + '@solid-primitives/scheduled@1.5.3': + resolution: {integrity: sha512-oNwLE6E6lxJAWrc8QXuwM0k2oU1BnANnkChwMw82aK1j3+mWGJkG1IFe5gCwbV+afYmjI76t9JJV3md/8tLw+g==} + peerDependencies: + solid-js: ^1.6.12 + + '@solid-primitives/static-store@0.1.3': + resolution: {integrity: sha512-uxez7SXnr5GiRnzqO2IEDjOJRIXaG+0LZLBizmUA1FwSi+hrpuMzVBwyk70m4prcl8X6FDDXUl9O8hSq8wHbBQ==} + peerDependencies: + solid-js: ^1.6.12 + + '@solid-primitives/styles@0.1.3': + resolution: {integrity: sha512-7YdA21prMeCX+oOF/1RAn02+cGz/pG4dyPWtHBC2H8aZvnC7IfThBt80mP+TioejrdfE7Lc54Uh18f7Pig+gRQ==} + peerDependencies: + solid-js: ^1.6.12 + + '@solid-primitives/utils@6.4.0': + resolution: {integrity: sha512-AeGTBg8Wtkh/0s+evyLtP8piQoS4wyqqQaAFs2HJcFMMjYAtUgo+ZPduRXLjPlqKVc2ejeR544oeqpbn8Egn8A==} + peerDependencies: + solid-js: ^1.6.12 + + '@storybook/addon-a11y@10.4.1': + resolution: {integrity: sha512-MGft/IXjJ20a9KbaSVG9bHTAAoanbucKrgEiJJRNqpim8DsXA01+XTdSk17LmiOCB203Rrq9mWgdQ6+79cc8iA==} + peerDependencies: + storybook: ^10.4.1 + + '@storybook/addon-docs@10.4.1': + resolution: {integrity: sha512-IYqUdjoZe4VO2LFZlKL/gwy7DsQSWCq6hX+zc1MBmZo04yycDASk1tte57n9pdlW3ajw9yYMF/+lVBi+xQjyvw==} + peerDependencies: + '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + storybook: ^10.4.1 peerDependenciesMeta: - '@astrojs/alpinejs': - optional: true - '@astrojs/preact': - optional: true - '@astrojs/react': - optional: true - '@astrojs/solid-js': - optional: true - '@astrojs/svelte': - optional: true - '@astrojs/vue': - optional: true - '@preact/preset-vite': - optional: true - '@storybook/preact': - optional: true - '@storybook/react': - optional: true - '@storybook/svelte': - optional: true - '@storybook/vue3': - optional: true - '@vitejs/plugin-vue': - optional: true - '@vitejs/plugin-vue-jsx': - optional: true - storybook-solidjs: + '@types/react': optional: true - '@storybook-astro/renderer@1.1.0': - resolution: {integrity: sha512-QR4Tu2nwtesMtVv90ipwyb/wTUHjGPTO2/SZOy61gwd1rhLB6wEUlZorbGPTZ1xrLhub89kP3XRums6gxNRt+w==} - engines: {node: '>=20.16.0 || >=22.19.0 || >=24.0.0'} + '@storybook/builder-vite@10.4.1': + resolution: {integrity: sha512-/oyQrXoNOqN8SW5hNnYP+I1uvgFxKxWXj/EP6NXYzc5SQwImofgru+D2+6gDhL0+Q//+Hx05DJoQO2omvUJ8bQ==} peerDependencies: - '@storybook/react': ^10.0.0 - astro: ^5.5.3 || ^6.0.0 - storybook: ^10.0.0 - peerDependenciesMeta: - '@storybook/react': - optional: true - - '@storybook/builder-vite@10.3.6': - resolution: {integrity: sha512-gpvR/sE4BcrFtmQZ+Ker7zD23oQzoVeqD9nF6cK6yzY+Q0svJXyX2EPmFG4y+EwygD5/vNzDpP84gGMut8VRwg==} - peerDependencies: - storybook: ^10.3.6 + storybook: ^10.4.1 vite: ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0 - '@storybook/csf-plugin@10.3.6': - resolution: {integrity: sha512-9kBf7VRdRqTSIYo+rPtVn5yjYYyK8kP2QhEYx3oiXvfwy4RexmbJnhk/tXa/lNiTqukA1TqaWQ2+5MqF4fu6YQ==} + '@storybook/csf-plugin@10.4.1': + resolution: {integrity: sha512-WdPepGBxDGOUDjYd8KxMtcf+us/2PAcnBczl77XtrnxxHNs0jWesxKkiJ9yiuGrge4BPhDeAj6rxjbBoaHxLBA==} peerDependencies: esbuild: '*' rollup: '*' - storybook: ^10.3.6 + storybook: ^10.4.1 vite: '*' webpack: '*' peerDependenciesMeta: @@ -838,12 +1220,26 @@ packages: '@storybook/global@5.0.0': resolution: {integrity: sha512-FcOqPAXACP0I3oJ/ws6/rrPT9WGhu915Cg8D02a9YxLo0DE9zI+a9A5gRGvmQ09fiWPukqI8ZAEoQEdWUKMQdQ==} - '@storybook/icons@2.0.1': - resolution: {integrity: sha512-/smVjw88yK3CKsiuR71vNgWQ9+NuY2L+e8X7IMrFjexjm6ZR8ULrV2DRkTA61aV6ryefslzHEGDInGpnNeIocg==} + '@storybook/icons@2.0.2': + resolution: {integrity: sha512-KZBCpXsshAIjczYNXR/rlxEtCUX/eAbpFNwKi8bcOomrLA4t/SyPz5RF+lVPO2oZBUE4sAkt43mfJUevQDSEEw==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + '@storybook/react-dom-shim@10.4.1': + resolution: {integrity: sha512-6QFqfDNH4DMrt7yHKRfpqRopsVUc/Az+sXIdJ39IetYnHUxL3nW4NVaPc6uy/8Qi8urzUyEXL/nn7cpSIP2aPQ==} + peerDependencies: + '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + '@types/react-dom': ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + storybook: ^10.4.1 + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + '@tailwindcss/node@4.2.4': resolution: {integrity: sha512-Ai7+yQPxz3ddrDQzFfBKdHEVBg0w3Zl83jnjuwxnZOsnH9pGn93QHQtpU0p/8rYWxvbFZHneni6p1BSLK4DkGA==} @@ -948,6 +1344,9 @@ packages: peerDependencies: '@testing-library/dom': '>=7.21.4' + '@tybys/wasm-util@0.10.2': + resolution: {integrity: sha512-RoBvJ2X0wuKlWFIjrwffGw1IqZHKQqzIchKaadZZfnNpsAYp2mM0h36JtPCjNDAHGgYez/15uMBpfGwchhiMgg==} + '@types/aria-query@5.0.4': resolution: {integrity: sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw==} @@ -975,12 +1374,18 @@ packages: '@types/estree@1.0.8': resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==} + '@types/estree@1.0.9': + resolution: {integrity: sha512-GhdPgy1el4/ImP05X05Uw4cw2/M93BCUmnEvWZNStlCzEKME4Fkk+YpoA5OiHNQmoS7Cafb8Xa3Pya8m1Qrzeg==} + '@types/hast@3.0.4': resolution: {integrity: sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==} '@types/mdast@4.0.4': resolution: {integrity: sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==} + '@types/mdx@2.0.13': + resolution: {integrity: sha512-+OWZQfAYyio6YkJb3HLxDrvnx6SWWDbC0zVPfBRzUk0/nqoDyf6dNxQi3eArPe8rJ473nobTMQ/8Zk+LxJ+Yuw==} + '@types/ms@2.1.0': resolution: {integrity: sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==} @@ -990,17 +1395,14 @@ packages: '@types/node@20.19.39': resolution: {integrity: sha512-orrrD74MBUyK8jOAD/r0+lfa1I2MO6I+vAkmAWzMYbCcgrN4lCrmK52gRFQq/JRxfYPfonkr4b0jcY7Olqdqbw==} + '@types/react@19.2.15': + resolution: {integrity: sha512-eRwcGNHve+E8qtEQSSRl6urh+rFop4v8gm6O8rGv25CodbvFdLjA1vVQ1KkiFE0w0UPOnb8tDiFKL5lp0rtY5Q==} + '@types/unist@3.0.3': resolution: {integrity: sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==} - '@ungap/structured-clone@1.3.0': - resolution: {integrity: sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==} - - '@vitejs/plugin-react@5.2.0': - resolution: {integrity: sha512-YmKkfhOAi3wsB1PhJq5Scj3GXMn3WvtQ/JC0xoopuHoXSdmtdStOpFrYaT1kie2YgFBcIe64ROzMYRjCrYOdYw==} - engines: {node: ^20.19.0 || >=22.12.0} - peerDependencies: - vite: ^4.2.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0 + '@ungap/structured-clone@1.3.1': + resolution: {integrity: sha512-mUFwbeTqrVgDQxFveS+df2yfap6iuP20NAKAsBt5jDEoOTDew+zwLAOilHCeQJOVSvmgCX4ogqIrA0mnyr08yQ==} '@vitest/expect@3.2.4': resolution: {integrity: sha512-Io0yyORnB6sikFlt8QW5K7slY4OjqNX9jmJQ02QDda8lyM6B5oNgVWoSoKPac8/kgnCUzuHQKrSLtu/uOqqrig==} @@ -1111,18 +1513,40 @@ packages: resolution: {integrity: sha512-6t10qk83GOG8p0vKmaCr8eiilZwO171AvbROMtvvNiwrTly62t+7XkA8RdIIVbpMhCASAsxgAzdRSwh6nw/5Dg==} engines: {node: '>=4'} - astro@6.2.1: - resolution: {integrity: sha512-3g1sYNly+QAkuO5ErNEQBYvsxorNDSCUNIeStBs+kcXGchvKQl1Q9EuDNOvSg010XLlHJFLVFZs9LV18Jjp4Hg==} + astro@6.3.1: + resolution: {integrity: sha512-atz6dmkE3Gu24bDgb7g2RE/BYnKqPYIHd6hTUM1UXvu/i7qNZOKLAqEHvgYpv9PQVcgWsXpk4/OOXZ0E/FzvSQ==} engines: {node: '>=22.12.0', npm: '>=9.6.5', pnpm: '>=7.1.0'} hasBin: true + axe-core@4.11.4: + resolution: {integrity: sha512-KunSNx+TVpkAw/6ULfhnx+HWRecjqZGTOyquAoWHYLRSdK1tB5Ihce1ZW+UY3fj33bYAFWPu7W/GRSmmrCGuxA==} + engines: {node: '>=4'} + axobject-query@4.1.0: resolution: {integrity: sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==} engines: {node: '>= 0.4'} + babel-plugin-jsx-dom-expressions@0.40.7: + resolution: {integrity: sha512-/O6JWUmjv03OI9lL2ry9bUjpD5S3PclM55RRJEyCdcFZ5W2SEA/59d+l2hNsk3gI6kiWRdRPdOtqZmsQzFN1pQ==} + peerDependencies: + '@babel/core': ^7.20.12 + + babel-preset-solid@1.9.12: + resolution: {integrity: sha512-LLqnuKVDlKpyBlMPcH6qEvs/wmS9a+NczppxJ3ryS/c0O5IiSFOIBQi9GzyiGDSbcJpx4Gr87jyFTos1MyEuWg==} + peerDependencies: + '@babel/core': ^7.0.0 + solid-js: ^1.9.12 + peerDependenciesMeta: + solid-js: + optional: true + bail@2.0.2: resolution: {integrity: sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==} + balanced-match@4.0.4: + resolution: {integrity: sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==} + engines: {node: 18 || 20 || >=22} + baseline-browser-mapping@2.10.27: resolution: {integrity: sha512-zEs/ufmZoUd7WftKpKyXaT6RFxpQ5Qm9xytKRHvJfxFV9DFJkZph9RvJ1LcOUi0Z1ZVijMte65JbILeV+8QQEA==} engines: {node: '>=6.0.0'} @@ -1131,6 +1555,10 @@ packages: boolbase@1.0.0: resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} + brace-expansion@5.0.6: + resolution: {integrity: sha512-kLpxurY4Z4r9sgMsyG0Z9uzsBlgiU/EFKhj/h91/8yHu0edo7XuixOIH3VcJ8kkxs6/jPzoI6U9Vj3WqbMQ94g==} + engines: {node: 18 || 20 || >=22} + browserslist@4.28.2: resolution: {integrity: sha512-48xSriZYYg+8qXna9kwqjIVzuQxi+KYWp2+5nCYnYKPTr0LvD89Jqk2Or5ogxz0NUMfIjhh2lIUX/LyX9B4oIg==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} @@ -1140,8 +1568,8 @@ packages: resolution: {integrity: sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==} engines: {node: '>=18'} - caniuse-lite@1.0.30001791: - resolution: {integrity: sha512-yk0l/YSrOnFZk3UROpDLQD9+kC1l4meK/wed583AXrzoarMGJcbRi2Q4RaUYbKxYAsZ8sWmaSa/DsLmdBeI1vQ==} + caniuse-lite@1.0.30001792: + resolution: {integrity: sha512-hVLMUZFgR4JJ6ACt1uEESvQN1/dBVqPAKY0hgrV70eN3391K6juAfTjKZLKvOMsx8PxA7gsY1/tLMMTcfFLLpw==} ccount@2.0.1: resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} @@ -1251,6 +1679,9 @@ packages: resolution: {integrity: sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ==} engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0, npm: '>=7.0.0'} + csstype@3.2.3: + resolution: {integrity: sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==} + debug@4.4.3: resolution: {integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==} engines: {node: '>=6.0'} @@ -1267,10 +1698,6 @@ packages: resolution: {integrity: sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==} engines: {node: '>=6'} - deepmerge@4.3.1: - resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} - engines: {node: '>=0.10.0'} - default-browser-id@5.0.1: resolution: {integrity: sha512-x1VCxdX4t+8wVfd1so/9w+vQ4vx7lKd2Qp5tDRutErwmR85OgmfX7RlLRMWafRMY7hbEiXIbudNrjOAPa/hL8Q==} engines: {node: '>=18'} @@ -1307,9 +1734,6 @@ packages: resolution: {integrity: sha512-DPi0FmjiSU5EvQV0++GFDOJ9ASQUVFh5kD+OzOnYdi7n3Wpm9hWWGfB/O2blfHcMVTL5WkQXSnRiK9makhrcnw==} engines: {node: '>=0.3.1'} - dlv@1.1.3: - resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==} - dom-accessibility-api@0.5.16: resolution: {integrity: sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==} @@ -1333,8 +1757,8 @@ packages: resolution: {integrity: sha512-2QF/g9/zTaPDc3BjNcVTGoBbXBgYfMTTceLaYcFJ/W9kggFUkhxD/hMEeuLKbugyef9SqAx8cpgwlIP/jinUTA==} engines: {node: '>=4'} - electron-to-chromium@1.5.349: - resolution: {integrity: sha512-QsWVGyRuY07Aqb234QytTfwd5d9AJlfNIQ5wIOl1L+PZDzI9d9+Fn0FRale/QYlFxt/bUnB0/nLd1jFPGxGK1A==} + electron-to-chromium@1.5.352: + resolution: {integrity: sha512-9wHk8x6dyuimoe18EdiDPWKExNdxYqo4fn4FwOVVper6RxT3cmpBwBkWWfSOCYJjQdIco/nPhJhNLmn4Ufg1Yg==} emmet@2.4.11: resolution: {integrity: sha512-23QPJB3moh/U9sT4rQzGgeyyGIrcM+GH5uVYg2C6wZIxAIJq7Ng3QLT79tl8FUwDXhyq9SusfknOrofAKqvgyQ==} @@ -1357,10 +1781,6 @@ packages: resolution: {integrity: sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==} engines: {node: '>=0.12'} - entities@7.0.1: - resolution: {integrity: sha512-TWrgLOFUQTH994YUyl1yT4uyavY5nNB5muff+RtWaqNVCAK408b5ZnnbNAUEWLTCpum9w6arT70i1XdQ4UeOPA==} - engines: {node: '>=0.12'} - environment@1.1.0: resolution: {integrity: sha512-xUtoPkMggbz0MPyPiIWr1Kp4aeWJjDZ6SMvURhimjdZgsRuDplF5/s9hcgGhyXMhs+6vpnuoiZ2kFiu3FMnS8Q==} engines: {node: '>=18'} @@ -1377,10 +1797,6 @@ packages: resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} engines: {node: '>=6'} - escape-string-regexp@4.0.0: - resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} - engines: {node: '>=10'} - escape-string-regexp@5.0.0: resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==} engines: {node: '>=12'} @@ -1451,9 +1867,17 @@ packages: resolution: {integrity: sha512-CQ+bEO+Tva/qlmw24dCejulK5pMzVnUOFOijVogd3KQs07HnRIgp8TGipvCCRT06xeYEbpbgwaCxglFyiuIcmA==} engines: {node: '>=18'} + get-tsconfig@5.0.0-beta.4: + resolution: {integrity: sha512-7nF7C9fIPFEMHgEMEfgIlO9wDdZ8CyHw27rWciFZfHvHDReIiPhsYuzPRXsfvBCqFy1l8RRyyWV7QLM+ZhUJsQ==} + engines: {node: '>=20.20.0'} + github-slugger@2.0.0: resolution: {integrity: sha512-IaOQ9puYtjrkq7Y0Ygl9KDZnrf/aiUJYUpVf89y8kyaxbRG7Y1SrX/jaumrv81vc61+kiMempujsM3Yw7w5qcw==} + glob@13.0.6: + resolution: {integrity: sha512-Wjlyrolmm8uDpm/ogGyXZXb1Z+Ca2B8NbJwqBVg0axK9GbBeoS7yGV6vjXnYdGm6X53iehEuxxbyiKp8QmN4Vw==} + engines: {node: 18 || 20 || >=22} + graceful-fs@4.2.11: resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} @@ -1490,9 +1914,8 @@ packages: hastscript@9.0.1: resolution: {integrity: sha512-g7df9rMFX/SPi34tyGCyUBREQoKkapwdY/T04Qn9TDWfHhAYt4/I0gMVirzK5wEzeUqIjEB+LXC/ypb7Aqno5w==} - hono@4.12.16: - resolution: {integrity: sha512-jN0ZewiNAWSe5khM3EyCmBb250+b40wWbwNILNfEvq84VREWwOIkuUsFONk/3i3nqkz7Oe1PcpM2mwQEK2L9Kg==} - engines: {node: '>=16.9.0'} + html-entities@2.3.3: + resolution: {integrity: sha512-DV5Ln36z34NNTDgnz0EWGBLZENelNAtkiFA4kyNOG2tDI6Mz1uSWiq1wAKdyjnJwyDiDO7Fa2SO1CTxPXL8VxA==} html-escaper@3.0.3: resolution: {integrity: sha512-RuMffC89BOWQoY0WKGpIhn5gX3iI54O6nRA0yC124NYVtzjmFWBIiFd8M0x+ZdX0P9R4lADg1mgP8C7PxGOWuQ==} @@ -1500,9 +1923,6 @@ packages: html-void-elements@3.0.0: resolution: {integrity: sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==} - htmlparser2@10.1.0: - resolution: {integrity: sha512-VTZkM9GWRAtEpveh7MSF6SjjrpNVNNVJfFup7xTY3UpFtm67foy9HDVXneLtFVt4pMz5kZtgNcvCniNFb1hlEQ==} - http-cache-semantics@4.2.0: resolution: {integrity: sha512-dTxcvPXqPvXBQpq5dUr6mEMJX4oIEFv6bwom3FDwKRDsuIjjJGANqhBuoAn9c1RQJIdAKav33ED65E2ys+87QQ==} @@ -1511,6 +1931,9 @@ packages: engines: {node: '>=18'} hasBin: true + immutable@5.1.5: + resolution: {integrity: sha512-t7xcm2siw+hlUM68I+UEOK+z84RzmN59as9DZ7P1l0994DKUWV7UXBMQZVxaoMSRQ+PBZbHCOoBt7a2wxOMt+A==} + indent-string@4.0.0: resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==} engines: {node: '>=8'} @@ -1528,6 +1951,10 @@ packages: engines: {node: '>=20'} hasBin: true + is-extglob@2.1.1: + resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} + engines: {node: '>=0.10.0'} + is-fullwidth-code-point@3.0.0: resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} engines: {node: '>=8'} @@ -1536,6 +1963,10 @@ packages: resolution: {integrity: sha512-5XHYaSyiqADb4RnZ1Bdad6cPp8Toise4TzEjcOYDHZkTCbKgiUl7WTUCpNWHuxmDt91wnsZBc9xinNzopv3JMQ==} engines: {node: '>=18'} + is-glob@4.0.3: + resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} + engines: {node: '>=0.10.0'} + is-inside-container@1.0.0: resolution: {integrity: sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==} engines: {node: '>=14.16'} @@ -1545,9 +1976,9 @@ 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-what@4.1.16: + resolution: {integrity: sha512-ZhMwEosbFJkA0YhFnNDgTM4ZxDRsS6HqTo7qsZM08fehyRYIYa0yHu5R6mgo1n/8MgaPBXiPimPD77baVFYg+A==} + engines: {node: '>=12.13'} is-wsl@3.1.1: resolution: {integrity: sha512-e6rvdUCiQCAuumZslxRJWR/Doq4VpPR82kqclvcS0efgt430SlGIk05vdCN58+VrzgtIcfNODjozVielycD4Sw==} @@ -1676,8 +2107,8 @@ packages: loupe@3.2.1: resolution: {integrity: sha512-CdzqowRJCeLU72bHvWqwRBBlLcMEtIvGrlvef74kMnV2AolS9Y8xUv1I0U/MNAWMhBlKIoyuEgoJ0t/bbwHbLQ==} - lru-cache@11.3.5: - resolution: {integrity: sha512-NxVFwLAnrd9i7KUBxC4DrUhmgjzOs+1Qm50D3oF1/oL+r1NpZ4gA7xvG0/zJ8evR7zIKn4vLf7qTNduWFtCrRw==} + lru-cache@11.3.6: + resolution: {integrity: sha512-Gf/KoL3C/MlI7Bt0PGI9I+TeTC/I6r/csU58N4BSNc4lppLBeKsOdFYkK+dX0ABDUMJNfCHTyPpzwwO21Awd3A==} engines: {node: 20 || >=22} lru-cache@5.1.1: @@ -1741,6 +2172,10 @@ packages: mdn-data@2.27.1: resolution: {integrity: sha512-9Yubnt3e8A0OKwxYSXyhLymGW4sCufcLG6VdiDdUGVkPhpqLxlvP5vl1983gQjJl3tqbrM731mjaZaP68AgosQ==} + merge-anything@5.1.7: + resolution: {integrity: sha512-eRtbOb1N5iyH0tkQDAoQ4Ipsp/5qSR79Dzrz8hEPxRX10RWWR/iQXdoKmBSRCThY1Fh5EhISDtpSc93fpxUniQ==} + engines: {node: '>=12.13'} + micromark-core-commonmark@2.0.3: resolution: {integrity: sha512-RDBrHEMSxVFLg6xvnXmb1Ayr2WzLAWjeSATAoxwKYJV94TeNavgoIdA0a9ytzDSVzBy2YKFK+emCPOEibLeCrg==} @@ -1833,6 +2268,14 @@ packages: resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} engines: {node: '>=4'} + minimatch@10.2.5: + resolution: {integrity: sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg==} + engines: {node: 18 || 20 || >=22} + + minipass@7.1.3: + resolution: {integrity: sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A==} + engines: {node: '>=16 || 14 >=14.17'} + mrmime@2.0.1: resolution: {integrity: sha512-Y3wQdFg2Va6etvQ5I82yUhGdsKrcYox6p7FfL1LbK2J4V01F9TGlepTIhnK24t7koZibmg82KGglhA1XK5IsLQ==} engines: {node: '>=10'} @@ -1855,6 +2298,9 @@ packages: nlcst-to-string@4.0.0: resolution: {integrity: sha512-YKLBCcUYKAg0FNlOBT6aI91qFmSiFKiluk655WzPF+DDMA02qIyy8uiRqI8QXtcFpEvll12LpL5MXqEmAZ+dcA==} + node-addon-api@7.1.1: + resolution: {integrity: sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==} + node-fetch-native@1.6.7: resolution: {integrity: sha512-g9yhqoedzIUm0nTnTqAQvueMPVOuIY16bqgAJJC8XOOubYFNwz6IER9qs0Gq2Xd0+CecCKFjtdDTMA4u4xG06Q==} @@ -1894,6 +2340,13 @@ packages: resolution: {integrity: sha512-YgBpdJHPyQ2UE5x+hlSXcnejzAvD0b22U2OuAP+8OnlJT+PjWPxtgmGqKKc+RgTM63U9gN0YzrYc71R2WT/hTA==} engines: {node: '>=18'} + oxc-parser@0.127.0: + resolution: {integrity: sha512-bkgD4qHlN7WxLdX8bLXdaU54TtQtAIg/ZBAfm0aje/mo3MRDo3P0hZSgr4U7O3xfX+fQmR5AP04JS/TGcZLcFA==} + engines: {node: ^20.19.0 || >=22.12.0} + + oxc-resolver@11.19.1: + resolution: {integrity: sha512-qE/CIg/spwrTBFt5aKmwe3ifeDdLfA2NESN30E42X/lII5ClF8V7Wt6WIJhcGZjp0/Q+nQ+9vgxGk//xZNX2hg==} + p-limit@7.3.0: resolution: {integrity: sha512-7cIXg/Z0M5WZRblrsOla88S4wAK+zOQQWeBYfV3qJuJXMr+LnbYjaadrFaS0JILfEDPVqHyKnZ1Z/1d6J9VVUw==} engines: {node: '>=20'} @@ -1912,15 +2365,16 @@ packages: parse-latin@7.0.0: resolution: {integrity: sha512-mhHgobPPua5kZ98EF4HWiH167JWBfl4pvAIXXdbaVohtK7a6YBOy56kvhCqduqyo/f3yrHFWmqmiMg/BkBkYYQ==} - parse-srcset@1.0.2: - resolution: {integrity: sha512-/2qh0lav6CmI15FzA3i/2Bzk2zCgQhGMkvhOhKNcBVQ1ldgpbfiNTVslmooUmWJcADi1f1kIeynbDRVzNlfR6Q==} - parse5@7.3.0: resolution: {integrity: sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==} path-browserify@1.0.1: resolution: {integrity: sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==} + path-scurry@2.0.2: + resolution: {integrity: sha512-3O/iVVsJAPsOnpwWIeD+d6z/7PmqApyQePUtCndjatj/9I5LylHvt5qluFaBT3I5h3r1ejfR056c+FCv+NnNXg==} + engines: {node: 18 || 20 || >=22} + pathval@2.0.1: resolution: {integrity: sha512-//nshmD55c46FuFw26xV/xFAaB5HF9Xdap7HJBBnrKdAd6/GxDBaNA1870O79+9ueg61cZLSVc+OaFlfmObYVQ==} engines: {node: '>= 14.16'} @@ -1939,8 +2393,8 @@ packages: resolution: {integrity: sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==} engines: {node: '>=12'} - postcss@8.5.13: - resolution: {integrity: sha512-qif0+jGGZoLWdHey3UFHHWP0H7Gbmsk8T5VEqyYFbWqPr1XqvLGBbk/sl8V5exGmcYJklJOhOQq1pV9IcsiFag==} + postcss@8.5.14: + resolution: {integrity: sha512-SoSL4+OSEtR99LHFZQiJLkT59C5B1amGO1NzTwj7TT1qCUgUO6hxOvzkOYxD+vMrXBM3XJIKzokoERdqQq/Zmg==} engines: {node: ^10 || ^12 || >=14} prettier@3.8.3: @@ -1962,6 +2416,11 @@ packages: radix3@1.1.2: resolution: {integrity: sha512-b484I/7b8rDEdSDKckSSBA8knMpcdsXudlE/LNL639wFoHKwLbEkQFZHWEYwDC0wa0FKUcCY+GAF73Z7wxNVFA==} + react-docgen-typescript@2.4.0: + resolution: {integrity: sha512-ZtAp5XTO5HRzQctjPU0ybY0RRCQO19X/8fxn3w7y2VVTUbGHDKULPTL4ky3vB05euSgG5NpALhEhDPvQ56wvXg==} + peerDependencies: + typescript: '>= 4.3.x' + react-dom@19.2.5: resolution: {integrity: sha512-J5bAZz+DXMMwW/wV3xzKke59Af6CHY7G4uYLN1OvBcKEsWOs4pQExj86BBKamxl/Ik5bx9whOrvBlSDfWzgSag==} peerDependencies: @@ -1970,10 +2429,6 @@ packages: react-is@17.0.2: resolution: {integrity: sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==} - react-refresh@0.18.0: - resolution: {integrity: sha512-QgT5//D3jfjJb6Gsjxv0Slpj23ip+HtOpnNgnb2S5zU3CB26G/IDPGoy4RJB42wzFE46DRsstbW6tKHoKbhAxw==} - engines: {node: '>=0.10.0'} - react@19.2.5: resolution: {integrity: sha512-llUJLzz1zTUBrskt2pwZgLq59AemifIftw4aB7JxOqf1HY2FDaGDxgwpAPVzHU1kdWabH7FauP4i1oEeer2WCA==} engines: {node: '>=0.10.0'} @@ -2045,6 +2500,9 @@ packages: resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} engines: {node: '>=0.10.0'} + resolve-pkg-maps@1.0.0: + resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} + restore-cursor@5.1.0: resolution: {integrity: sha512-oMA2dcrw6u0YfxJQXm342bFKX/E4sG9rbTzO9ptUcR/e8A33cHuvStiYOwH7fszkZlZ1z/ta9AAoPk2F4qIOHA==} engines: {node: '>=18'} @@ -2064,8 +2522,8 @@ packages: rfdc@1.4.1: resolution: {integrity: sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==} - rollup@4.60.2: - resolution: {integrity: sha512-J9qZyW++QK/09NyN/zeO0dG/1GdGfyp9lV8ajHnRVLfo/uFsbji5mHnDgn/qYdUHyCkM2N+8VyspgZclfAh0eQ==} + rollup@4.60.3: + resolution: {integrity: sha512-pAQK9HalE84QSm4Po3EmWIZPd3FnjkShVkiMlz1iligWYkWQ7wHYd1PF/T7QZ5TVSD6uSTon5gBVMSM4JfBV+A==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true @@ -2073,8 +2531,10 @@ packages: resolution: {integrity: sha512-DPe5pVFaAsinSaV6QjQ6gdiedWDcRCbUuiQfQa2wmWV7+xC9bGulGI8+TdRmoFkAPaBXk8CrAbnlY2ISniJ47Q==} engines: {node: '>=18'} - sanitize-html@2.17.3: - resolution: {integrity: sha512-Kn4srCAo2+wZyvCNKCSyB2g8RQ8IkX/gQs2uqoSRNu5t9I2qvUyAVvRDiFUVAiX3N3PNuwStY0eNr+ooBHVWEg==} + sass@1.100.0: + resolution: {integrity: sha512-B5j0rYMlinhhOo9tjQebMVVn0TfyXAF+wB3b2ggZUuJ/is/Y+7+JGjirAMxHZ9Z3hIP98NPfamlAkBHa1lAaXQ==} + engines: {node: '>=20.19.0'} + hasBin: true sax@1.6.0: resolution: {integrity: sha512-6R3J5M4AcbtLUdZmRv2SygeVaM7IhrLXu9BmnOGmmACak8fiUtOsYNWUS4uK7upbmHIBbLBeFeI//477BKLBzA==} @@ -2092,6 +2552,16 @@ packages: engines: {node: '>=10'} hasBin: true + seroval-plugins@1.5.4: + resolution: {integrity: sha512-S0xQPhUTefAhNvNWFg0c1J8qJArHt5KdtJ/cFAofo06KD1MVSeFWyl4iiu+ApDIuw0WhjpOfCdgConOfAnLgkw==} + engines: {node: '>=10'} + peerDependencies: + seroval: ^1.0 + + seroval@1.5.4: + resolution: {integrity: sha512-46uFvgrXTVxZcUorgSSRZ4y+ieqLLQRMlG4bnCZKW3qI6BZm7Rg4ntMW4p1mILEEBZWrFlcpp0AyIIlM6jD9iw==} + engines: {node: '>=10'} + sharp@0.34.5: resolution: {integrity: sha512-Ou9I5Ft9WNcCbXrU9cMgPBcCK8LiwLqcbywW3t4oDV37n1pzpuNLsYiAV8eODnjbtQlSDwZ2cUEeQz4E54Hltg==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} @@ -2119,6 +2589,23 @@ packages: resolution: {integrity: sha512-dWUG8F5sIIARXih1DTaQAX4SsiTXhInKf1buxdY9DIg4ZYPZK5nGM1VRIYmEbDbsHt7USo99xSLFu5Q1IqTmsg==} engines: {node: '>= 18'} + solid-devtools@0.34.5: + resolution: {integrity: sha512-KNVdS9MQzzeVS++Vmg4JeU0fM6ZMuBEmkBA7SmqPS2s5UHpRjv1PNH8gShmlN9L/tki6OUAzJP3H1aKq2AcOSg==} + peerDependencies: + solid-js: ^1.9.0 + vite: ^2.2.3 || ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 + peerDependenciesMeta: + vite: + optional: true + + solid-js@1.9.13: + resolution: {integrity: sha512-6hJeJMOcEX8ktqjpDoJZEmld3ijvcvWBDtiXBm7f4332SiFN66QeAQI1REQshvyUoISsSeJ4PHDauKYbwao9JQ==} + + solid-refresh@0.6.3: + resolution: {integrity: sha512-F3aPsX6hVw9ttm5LYlth8Q15x6MlI/J3Dn+o3EQyRTtTxidepSTwAYdozt01/YA+7ObcciagGEyXIopGZzQtbA==} + peerDependencies: + solid-js: ^1.3 + source-map-js@1.2.1: resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} engines: {node: '>=0.10.0'} @@ -2130,13 +2617,27 @@ packages: space-separated-tokens@2.0.2: resolution: {integrity: sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==} - storybook@10.3.6: - resolution: {integrity: sha512-vbSz7g/1rGMC1uAULqMZjALkIuLu2QABqfhRYhyr/11kzyesi+vAmwyJLukZP1FfecxGOgMwOh6GS0YsGpHAvQ==} + storybook-solidjs-vite@10.0.13: + resolution: {integrity: sha512-2VYcKbcraEpmQpIIBzAhkHtS4PPgcAGtElSUOfatPeTNFqLHOQF3D5aewEPmEMvOSbY9LFex2cSwN8xMmRG5Vg==} + peerDependencies: + solid-js: ^1.9.0 + storybook: ^0.0.0-0 || ^10.0.0 + typescript: ^4.0.0 || ^5.0.0 || ^6.0.0 + vite: ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0 + peerDependenciesMeta: + typescript: + optional: true + + storybook@10.4.1: + resolution: {integrity: sha512-V1Zd2e+gBFufqAQVZ1JR8KLqALsEZ3JYSBnWwQbKa6zCfWWanR6AFMyuOkLt2gZOgGp3h2Riuz88pGNVTQSG0A==} hasBin: true peerDependencies: + '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 prettier: ^2 || ^3 vite-plus: ^0.1.15 peerDependenciesMeta: + '@types/react': + optional: true prettier: optional: true vite-plus: @@ -2221,16 +2722,6 @@ packages: resolution: {integrity: sha512-q5W7tVM71e2xjHZTlgfTDoPF/SmqKG5hddq9SzR49CH2hayqRKJtQ4mtRlSxKaJlR/+9rEM+mnBHf7I2/BQcpQ==} engines: {node: '>=6.10'} - tsconfck@3.1.6: - resolution: {integrity: sha512-ks6Vjr/jEw0P1gmOVwutM3B7fWxoWBL2KRDb1JfqGVawBmO5UsvmWOQFGHBPl5yxYz4eERr19E6L7NMv+Fej4w==} - engines: {node: ^18 || >=20} - hasBin: true - peerDependencies: - typescript: ^5.0.0 - peerDependenciesMeta: - typescript: - optional: true - tslib@2.8.1: resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} @@ -2376,8 +2867,18 @@ packages: vfile@6.0.3: resolution: {integrity: sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==} - vite@7.3.2: - resolution: {integrity: sha512-Bby3NOsna2jsjfLVOHKes8sGwgl4TT0E6vvpYgnAYDIF/tie7MRaFthmKuHx1NSXjiTueXH3do80FMQgvEktRg==} + vite-plugin-solid@2.11.12: + resolution: {integrity: sha512-FgjPcx2OwX9h6f28jli7A4bG7PP3te8uyakE5iqsmpq3Jqi1TWLgSroC9N6cMfGRU2zXsl4Q6ISvTr2VL0QHpA==} + peerDependencies: + '@testing-library/jest-dom': ^5.16.6 || ^5.17.0 || ^6.* + solid-js: ^1.7.2 + vite: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0 + peerDependenciesMeta: + '@testing-library/jest-dom': + optional: true + + vite@7.3.3: + resolution: {integrity: sha512-/4XH147Ui7OGTjg3HbdWe5arnZQSbfuRzdr9Ec7TQi5I7R+ir0Rlc9GIvD4v0XZurELqA035KVXJXpR61xhiTA==} engines: {node: ^20.19.0 || >=22.12.0} hasBin: true peerDependencies: @@ -2674,10 +3175,31 @@ snapshots: dependencies: prismjs: 1.30.0 - '@astrojs/telemetry@3.3.1': + '@astrojs/solid-js@6.0.1(@testing-library/jest-dom@6.9.1)(@types/node@20.19.39)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.100.0)(solid-devtools@0.34.5(solid-js@1.9.13)(vite@7.3.3(@types/node@20.19.39)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.100.0)(yaml@2.8.4)))(solid-js@1.9.13)(yaml@2.8.4)': + dependencies: + solid-js: 1.9.13 + vite: 7.3.3(@types/node@20.19.39)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.100.0)(yaml@2.8.4) + vite-plugin-solid: 2.11.12(@testing-library/jest-dom@6.9.1)(solid-js@1.9.13)(vite@7.3.3(@types/node@20.19.39)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.100.0)(yaml@2.8.4)) + optionalDependencies: + solid-devtools: 0.34.5(solid-js@1.9.13)(vite@7.3.3(@types/node@20.19.39)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.100.0)(yaml@2.8.4)) + transitivePeerDependencies: + - '@testing-library/jest-dom' + - '@types/node' + - jiti + - less + - lightningcss + - sass + - sass-embedded + - stylus + - sugarss + - supports-color + - terser + - tsx + - yaml + + '@astrojs/telemetry@3.3.2': dependencies: ci-info: 4.4.0 - dlv: 1.1.3 dset: 3.1.4 is-docker: 4.0.0 is-wsl: 3.1.1 @@ -2733,6 +3255,10 @@ snapshots: '@babel/helper-globals@7.28.0': {} + '@babel/helper-module-imports@7.18.6': + dependencies: + '@babel/types': 7.29.0 + '@babel/helper-module-imports@7.28.6': dependencies: '@babel/traverse': 7.29.0 @@ -2766,12 +3292,12 @@ snapshots: dependencies: '@babel/types': 7.29.0 - '@babel/plugin-transform-react-jsx-self@7.27.1(@babel/core@7.29.0)': + '@babel/plugin-syntax-jsx@7.28.6(@babel/core@7.29.0)': dependencies: '@babel/core': 7.29.0 '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-react-jsx-source@7.27.1(@babel/core@7.29.0)': + '@babel/plugin-syntax-typescript@7.28.6(@babel/core@7.29.0)': dependencies: '@babel/core': 7.29.0 '@babel/helper-plugin-utils': 7.28.6 @@ -2875,11 +3401,27 @@ snapshots: '@emmetio/stream-reader@2.2.0': {} + '@emnapi/core@1.9.2': + dependencies: + '@emnapi/wasi-threads': 1.2.1 + tslib: 2.8.1 + optional: true + '@emnapi/runtime@1.10.0': dependencies: tslib: 2.8.1 optional: true + '@emnapi/runtime@1.9.2': + dependencies: + tslib: 2.8.1 + optional: true + + '@emnapi/wasi-threads@1.2.1': + dependencies: + tslib: 2.8.1 + optional: true + '@esbuild/aix-ppc64@0.27.7': optional: true @@ -3055,6 +3597,14 @@ snapshots: '@img/sharp-win32-x64@0.34.5': optional: true + '@joshwooding/vite-plugin-react-docgen-typescript@0.7.0(typescript@6.0.3)(vite@7.3.3(@types/node@20.19.39)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.100.0)(yaml@2.8.4))': + dependencies: + glob: 13.0.6 + react-docgen-typescript: 2.4.0(typescript@6.0.3) + vite: 7.3.3(@types/node@20.19.39)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.100.0)(yaml@2.8.4) + optionalDependencies: + typescript: 6.0.3 + '@jridgewell/gen-mapping@0.3.13': dependencies: '@jridgewell/sourcemap-codec': 1.5.5 @@ -3074,91 +3624,303 @@ snapshots: '@jridgewell/resolve-uri': 3.1.2 '@jridgewell/sourcemap-codec': 1.5.5 + '@mdx-js/react@3.1.1(@types/react@19.2.15)(react@19.2.5)': + dependencies: + '@types/mdx': 2.0.13 + '@types/react': 19.2.15 + react: 19.2.5 + + '@napi-rs/wasm-runtime@1.1.4(@emnapi/core@1.9.2)(@emnapi/runtime@1.10.0)': + dependencies: + '@emnapi/core': 1.9.2 + '@emnapi/runtime': 1.10.0 + '@tybys/wasm-util': 0.10.2 + optional: true + + '@napi-rs/wasm-runtime@1.1.4(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)': + dependencies: + '@emnapi/core': 1.9.2 + '@emnapi/runtime': 1.9.2 + '@tybys/wasm-util': 0.10.2 + optional: true + + '@nothing-but/utils@0.17.0': {} + '@oslojs/encoding@1.1.0': {} - '@rolldown/pluginutils@1.0.0-rc.3': {} + '@oxc-parser/binding-android-arm-eabi@0.127.0': + optional: true - '@rollup/pluginutils@5.3.0(rollup@4.60.2)': + '@oxc-parser/binding-android-arm64@0.127.0': + optional: true + + '@oxc-parser/binding-darwin-arm64@0.127.0': + optional: true + + '@oxc-parser/binding-darwin-x64@0.127.0': + optional: true + + '@oxc-parser/binding-freebsd-x64@0.127.0': + optional: true + + '@oxc-parser/binding-linux-arm-gnueabihf@0.127.0': + optional: true + + '@oxc-parser/binding-linux-arm-musleabihf@0.127.0': + optional: true + + '@oxc-parser/binding-linux-arm64-gnu@0.127.0': + optional: true + + '@oxc-parser/binding-linux-arm64-musl@0.127.0': + optional: true + + '@oxc-parser/binding-linux-ppc64-gnu@0.127.0': + optional: true + + '@oxc-parser/binding-linux-riscv64-gnu@0.127.0': + optional: true + + '@oxc-parser/binding-linux-riscv64-musl@0.127.0': + optional: true + + '@oxc-parser/binding-linux-s390x-gnu@0.127.0': + optional: true + + '@oxc-parser/binding-linux-x64-gnu@0.127.0': + optional: true + + '@oxc-parser/binding-linux-x64-musl@0.127.0': + optional: true + + '@oxc-parser/binding-openharmony-arm64@0.127.0': + optional: true + + '@oxc-parser/binding-wasm32-wasi@0.127.0': dependencies: - '@types/estree': 1.0.8 + '@emnapi/core': 1.9.2 + '@emnapi/runtime': 1.9.2 + '@napi-rs/wasm-runtime': 1.1.4(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2) + optional: true + + '@oxc-parser/binding-win32-arm64-msvc@0.127.0': + optional: true + + '@oxc-parser/binding-win32-ia32-msvc@0.127.0': + optional: true + + '@oxc-parser/binding-win32-x64-msvc@0.127.0': + optional: true + + '@oxc-project/types@0.127.0': {} + + '@oxc-resolver/binding-android-arm-eabi@11.19.1': + optional: true + + '@oxc-resolver/binding-android-arm64@11.19.1': + optional: true + + '@oxc-resolver/binding-darwin-arm64@11.19.1': + optional: true + + '@oxc-resolver/binding-darwin-x64@11.19.1': + optional: true + + '@oxc-resolver/binding-freebsd-x64@11.19.1': + optional: true + + '@oxc-resolver/binding-linux-arm-gnueabihf@11.19.1': + optional: true + + '@oxc-resolver/binding-linux-arm-musleabihf@11.19.1': + optional: true + + '@oxc-resolver/binding-linux-arm64-gnu@11.19.1': + optional: true + + '@oxc-resolver/binding-linux-arm64-musl@11.19.1': + optional: true + + '@oxc-resolver/binding-linux-ppc64-gnu@11.19.1': + optional: true + + '@oxc-resolver/binding-linux-riscv64-gnu@11.19.1': + optional: true + + '@oxc-resolver/binding-linux-riscv64-musl@11.19.1': + optional: true + + '@oxc-resolver/binding-linux-s390x-gnu@11.19.1': + optional: true + + '@oxc-resolver/binding-linux-x64-gnu@11.19.1': + optional: true + + '@oxc-resolver/binding-linux-x64-musl@11.19.1': + optional: true + + '@oxc-resolver/binding-openharmony-arm64@11.19.1': + optional: true + + '@oxc-resolver/binding-wasm32-wasi@11.19.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.10.0)': + dependencies: + '@napi-rs/wasm-runtime': 1.1.4(@emnapi/core@1.9.2)(@emnapi/runtime@1.10.0) + transitivePeerDependencies: + - '@emnapi/core' + - '@emnapi/runtime' + optional: true + + '@oxc-resolver/binding-win32-arm64-msvc@11.19.1': + optional: true + + '@oxc-resolver/binding-win32-ia32-msvc@11.19.1': + optional: true + + '@oxc-resolver/binding-win32-x64-msvc@11.19.1': + optional: true + + '@parcel/watcher-android-arm64@2.5.6': + optional: true + + '@parcel/watcher-darwin-arm64@2.5.6': + optional: true + + '@parcel/watcher-darwin-x64@2.5.6': + optional: true + + '@parcel/watcher-freebsd-x64@2.5.6': + optional: true + + '@parcel/watcher-linux-arm-glibc@2.5.6': + optional: true + + '@parcel/watcher-linux-arm-musl@2.5.6': + optional: true + + '@parcel/watcher-linux-arm64-glibc@2.5.6': + optional: true + + '@parcel/watcher-linux-arm64-musl@2.5.6': + optional: true + + '@parcel/watcher-linux-x64-glibc@2.5.6': + optional: true + + '@parcel/watcher-linux-x64-musl@2.5.6': + optional: true + + '@parcel/watcher-win32-arm64@2.5.6': + optional: true + + '@parcel/watcher-win32-ia32@2.5.6': + optional: true + + '@parcel/watcher-win32-x64@2.5.6': + optional: true + + '@parcel/watcher@2.5.6': + dependencies: + detect-libc: 2.1.2 + is-glob: 4.0.3 + node-addon-api: 7.1.1 + picomatch: 4.0.4 + optionalDependencies: + '@parcel/watcher-android-arm64': 2.5.6 + '@parcel/watcher-darwin-arm64': 2.5.6 + '@parcel/watcher-darwin-x64': 2.5.6 + '@parcel/watcher-freebsd-x64': 2.5.6 + '@parcel/watcher-linux-arm-glibc': 2.5.6 + '@parcel/watcher-linux-arm-musl': 2.5.6 + '@parcel/watcher-linux-arm64-glibc': 2.5.6 + '@parcel/watcher-linux-arm64-musl': 2.5.6 + '@parcel/watcher-linux-x64-glibc': 2.5.6 + '@parcel/watcher-linux-x64-musl': 2.5.6 + '@parcel/watcher-win32-arm64': 2.5.6 + '@parcel/watcher-win32-ia32': 2.5.6 + '@parcel/watcher-win32-x64': 2.5.6 + optional: true + + '@rollup/pluginutils@5.3.0(rollup@4.60.3)': + dependencies: + '@types/estree': 1.0.9 estree-walker: 2.0.2 picomatch: 4.0.4 optionalDependencies: - rollup: 4.60.2 + rollup: 4.60.3 - '@rollup/rollup-android-arm-eabi@4.60.2': + '@rollup/rollup-android-arm-eabi@4.60.3': optional: true - '@rollup/rollup-android-arm64@4.60.2': + '@rollup/rollup-android-arm64@4.60.3': optional: true - '@rollup/rollup-darwin-arm64@4.60.2': + '@rollup/rollup-darwin-arm64@4.60.3': optional: true - '@rollup/rollup-darwin-x64@4.60.2': + '@rollup/rollup-darwin-x64@4.60.3': optional: true - '@rollup/rollup-freebsd-arm64@4.60.2': + '@rollup/rollup-freebsd-arm64@4.60.3': optional: true - '@rollup/rollup-freebsd-x64@4.60.2': + '@rollup/rollup-freebsd-x64@4.60.3': optional: true - '@rollup/rollup-linux-arm-gnueabihf@4.60.2': + '@rollup/rollup-linux-arm-gnueabihf@4.60.3': optional: true - '@rollup/rollup-linux-arm-musleabihf@4.60.2': + '@rollup/rollup-linux-arm-musleabihf@4.60.3': optional: true - '@rollup/rollup-linux-arm64-gnu@4.60.2': + '@rollup/rollup-linux-arm64-gnu@4.60.3': optional: true - '@rollup/rollup-linux-arm64-musl@4.60.2': + '@rollup/rollup-linux-arm64-musl@4.60.3': optional: true - '@rollup/rollup-linux-loong64-gnu@4.60.2': + '@rollup/rollup-linux-loong64-gnu@4.60.3': optional: true - '@rollup/rollup-linux-loong64-musl@4.60.2': + '@rollup/rollup-linux-loong64-musl@4.60.3': optional: true - '@rollup/rollup-linux-ppc64-gnu@4.60.2': + '@rollup/rollup-linux-ppc64-gnu@4.60.3': optional: true - '@rollup/rollup-linux-ppc64-musl@4.60.2': + '@rollup/rollup-linux-ppc64-musl@4.60.3': optional: true - '@rollup/rollup-linux-riscv64-gnu@4.60.2': + '@rollup/rollup-linux-riscv64-gnu@4.60.3': optional: true - '@rollup/rollup-linux-riscv64-musl@4.60.2': + '@rollup/rollup-linux-riscv64-musl@4.60.3': optional: true - '@rollup/rollup-linux-s390x-gnu@4.60.2': + '@rollup/rollup-linux-s390x-gnu@4.60.3': optional: true - '@rollup/rollup-linux-x64-gnu@4.60.2': + '@rollup/rollup-linux-x64-gnu@4.60.3': optional: true - '@rollup/rollup-linux-x64-musl@4.60.2': + '@rollup/rollup-linux-x64-musl@4.60.3': optional: true - '@rollup/rollup-openbsd-x64@4.60.2': + '@rollup/rollup-openbsd-x64@4.60.3': optional: true - '@rollup/rollup-openharmony-arm64@4.60.2': + '@rollup/rollup-openharmony-arm64@4.60.3': optional: true - '@rollup/rollup-win32-arm64-msvc@4.60.2': + '@rollup/rollup-win32-arm64-msvc@4.60.3': optional: true - '@rollup/rollup-win32-ia32-msvc@4.60.2': + '@rollup/rollup-win32-ia32-msvc@4.60.3': optional: true - '@rollup/rollup-win32-x64-gnu@4.60.2': + '@rollup/rollup-win32-x64-gnu@4.60.3': optional: true - '@rollup/rollup-win32-x64-msvc@4.60.2': + '@rollup/rollup-win32-x64-msvc@4.60.3': optional: true '@shikijs/core@4.0.2': @@ -3201,49 +3963,157 @@ snapshots: '@shikijs/vscode-textmate@10.0.2': {} - '@storybook-astro/framework@1.1.0(@vitejs/plugin-react@5.2.0(vite@7.3.2(@types/node@20.19.39)(jiti@2.6.1)(lightningcss@1.32.0)(yaml@2.8.4)))(astro@6.2.1(@types/node@20.19.39)(jiti@2.6.1)(lightningcss@1.32.0)(rollup@4.60.2)(typescript@6.0.3)(yaml@2.8.4))(storybook@10.3.6(@testing-library/dom@10.4.1)(prettier@3.8.3)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(vite@7.3.2(@types/node@20.19.39)(jiti@2.6.1)(lightningcss@1.32.0)(yaml@2.8.4))': + '@solid-devtools/debugger@0.28.1(solid-js@1.9.13)': dependencies: - '@storybook-astro/renderer': 1.1.0(astro@6.2.1(@types/node@20.19.39)(jiti@2.6.1)(lightningcss@1.32.0)(rollup@4.60.2)(typescript@6.0.3)(yaml@2.8.4))(storybook@10.3.6(@testing-library/dom@10.4.1)(prettier@3.8.3)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)) - '@vitejs/plugin-react': 5.2.0(vite@7.3.2(@types/node@20.19.39)(jiti@2.6.1)(lightningcss@1.32.0)(yaml@2.8.4)) - astro: 6.2.1(@types/node@20.19.39)(jiti@2.6.1)(lightningcss@1.32.0)(rollup@4.60.2)(typescript@6.0.3)(yaml@2.8.4) - hono: 4.12.16 - sanitize-html: 2.17.3 - storybook: 10.3.6(@testing-library/dom@10.4.1)(prettier@3.8.3)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - vite: 7.3.2(@types/node@20.19.39)(jiti@2.6.1)(lightningcss@1.32.0)(yaml@2.8.4) + '@nothing-but/utils': 0.17.0 + '@solid-devtools/shared': 0.20.0(solid-js@1.9.13) + '@solid-primitives/bounds': 0.1.5(solid-js@1.9.13) + '@solid-primitives/event-listener': 2.4.5(solid-js@1.9.13) + '@solid-primitives/keyboard': 1.3.5(solid-js@1.9.13) + '@solid-primitives/rootless': 1.5.3(solid-js@1.9.13) + '@solid-primitives/scheduled': 1.5.3(solid-js@1.9.13) + '@solid-primitives/static-store': 0.1.3(solid-js@1.9.13) + '@solid-primitives/utils': 6.4.0(solid-js@1.9.13) + solid-js: 1.9.13 - '@storybook-astro/renderer@1.1.0(astro@6.2.1(@types/node@20.19.39)(jiti@2.6.1)(lightningcss@1.32.0)(rollup@4.60.2)(typescript@6.0.3)(yaml@2.8.4))(storybook@10.3.6(@testing-library/dom@10.4.1)(prettier@3.8.3)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))': + '@solid-devtools/shared@0.20.0(solid-js@1.9.13)': dependencies: - '@types/node': 20.19.39 - astro: 6.2.1(@types/node@20.19.39)(jiti@2.6.1)(lightningcss@1.32.0)(rollup@4.60.2)(typescript@6.0.3)(yaml@2.8.4) - storybook: 10.3.6(@testing-library/dom@10.4.1)(prettier@3.8.3)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@nothing-but/utils': 0.17.0 + '@solid-primitives/event-listener': 2.4.5(solid-js@1.9.13) + '@solid-primitives/media': 2.3.5(solid-js@1.9.13) + '@solid-primitives/refs': 1.1.3(solid-js@1.9.13) + '@solid-primitives/rootless': 1.5.3(solid-js@1.9.13) + '@solid-primitives/scheduled': 1.5.3(solid-js@1.9.13) + '@solid-primitives/static-store': 0.1.3(solid-js@1.9.13) + '@solid-primitives/styles': 0.1.3(solid-js@1.9.13) + '@solid-primitives/utils': 6.4.0(solid-js@1.9.13) + solid-js: 1.9.13 - '@storybook/builder-vite@10.3.6(esbuild@0.27.7)(rollup@4.60.2)(storybook@10.3.6(@testing-library/dom@10.4.1)(prettier@3.8.3)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(vite@7.3.2(@types/node@20.19.39)(jiti@2.6.1)(lightningcss@1.32.0)(yaml@2.8.4))': + '@solid-primitives/bounds@0.1.5(solid-js@1.9.13)': dependencies: - '@storybook/csf-plugin': 10.3.6(esbuild@0.27.7)(rollup@4.60.2)(storybook@10.3.6(@testing-library/dom@10.4.1)(prettier@3.8.3)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(vite@7.3.2(@types/node@20.19.39)(jiti@2.6.1)(lightningcss@1.32.0)(yaml@2.8.4)) - storybook: 10.3.6(@testing-library/dom@10.4.1)(prettier@3.8.3)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@solid-primitives/event-listener': 2.4.5(solid-js@1.9.13) + '@solid-primitives/resize-observer': 2.1.5(solid-js@1.9.13) + '@solid-primitives/static-store': 0.1.3(solid-js@1.9.13) + '@solid-primitives/utils': 6.4.0(solid-js@1.9.13) + solid-js: 1.9.13 + + '@solid-primitives/event-listener@2.4.5(solid-js@1.9.13)': + dependencies: + '@solid-primitives/utils': 6.4.0(solid-js@1.9.13) + solid-js: 1.9.13 + + '@solid-primitives/keyboard@1.3.5(solid-js@1.9.13)': + dependencies: + '@solid-primitives/event-listener': 2.4.5(solid-js@1.9.13) + '@solid-primitives/rootless': 1.5.3(solid-js@1.9.13) + '@solid-primitives/utils': 6.4.0(solid-js@1.9.13) + solid-js: 1.9.13 + + '@solid-primitives/media@2.3.5(solid-js@1.9.13)': + dependencies: + '@solid-primitives/event-listener': 2.4.5(solid-js@1.9.13) + '@solid-primitives/rootless': 1.5.3(solid-js@1.9.13) + '@solid-primitives/static-store': 0.1.3(solid-js@1.9.13) + '@solid-primitives/utils': 6.4.0(solid-js@1.9.13) + solid-js: 1.9.13 + + '@solid-primitives/refs@1.1.3(solid-js@1.9.13)': + dependencies: + '@solid-primitives/utils': 6.4.0(solid-js@1.9.13) + solid-js: 1.9.13 + + '@solid-primitives/resize-observer@2.1.5(solid-js@1.9.13)': + dependencies: + '@solid-primitives/event-listener': 2.4.5(solid-js@1.9.13) + '@solid-primitives/rootless': 1.5.3(solid-js@1.9.13) + '@solid-primitives/static-store': 0.1.3(solid-js@1.9.13) + '@solid-primitives/utils': 6.4.0(solid-js@1.9.13) + solid-js: 1.9.13 + + '@solid-primitives/rootless@1.5.3(solid-js@1.9.13)': + dependencies: + '@solid-primitives/utils': 6.4.0(solid-js@1.9.13) + solid-js: 1.9.13 + + '@solid-primitives/scheduled@1.5.3(solid-js@1.9.13)': + dependencies: + solid-js: 1.9.13 + + '@solid-primitives/static-store@0.1.3(solid-js@1.9.13)': + dependencies: + '@solid-primitives/utils': 6.4.0(solid-js@1.9.13) + solid-js: 1.9.13 + + '@solid-primitives/styles@0.1.3(solid-js@1.9.13)': + dependencies: + '@solid-primitives/rootless': 1.5.3(solid-js@1.9.13) + '@solid-primitives/utils': 6.4.0(solid-js@1.9.13) + solid-js: 1.9.13 + + '@solid-primitives/utils@6.4.0(solid-js@1.9.13)': + dependencies: + solid-js: 1.9.13 + + '@storybook/addon-a11y@10.4.1(storybook@10.4.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.10.0)(@testing-library/dom@10.4.1)(@types/react@19.2.15)(prettier@3.8.3)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))': + dependencies: + '@storybook/global': 5.0.0 + axe-core: 4.11.4 + storybook: 10.4.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.10.0)(@testing-library/dom@10.4.1)(@types/react@19.2.15)(prettier@3.8.3)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + + '@storybook/addon-docs@10.4.1(@types/react@19.2.15)(esbuild@0.27.7)(rollup@4.60.3)(storybook@10.4.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.10.0)(@testing-library/dom@10.4.1)(@types/react@19.2.15)(prettier@3.8.3)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(vite@7.3.3(@types/node@20.19.39)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.100.0)(yaml@2.8.4))': + dependencies: + '@mdx-js/react': 3.1.1(@types/react@19.2.15)(react@19.2.5) + '@storybook/csf-plugin': 10.4.1(esbuild@0.27.7)(rollup@4.60.3)(storybook@10.4.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.10.0)(@testing-library/dom@10.4.1)(@types/react@19.2.15)(prettier@3.8.3)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(vite@7.3.3(@types/node@20.19.39)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.100.0)(yaml@2.8.4)) + '@storybook/icons': 2.0.2(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@storybook/react-dom-shim': 10.4.1(@types/react@19.2.15)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(storybook@10.4.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.10.0)(@testing-library/dom@10.4.1)(@types/react@19.2.15)(prettier@3.8.3)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)) + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) + storybook: 10.4.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.10.0)(@testing-library/dom@10.4.1)(@types/react@19.2.15)(prettier@3.8.3)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) ts-dedent: 2.2.0 - vite: 7.3.2(@types/node@20.19.39)(jiti@2.6.1)(lightningcss@1.32.0)(yaml@2.8.4) + optionalDependencies: + '@types/react': 19.2.15 + transitivePeerDependencies: + - '@types/react-dom' + - esbuild + - rollup + - vite + - webpack + + '@storybook/builder-vite@10.4.1(esbuild@0.27.7)(rollup@4.60.3)(storybook@10.4.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.10.0)(@testing-library/dom@10.4.1)(@types/react@19.2.15)(prettier@3.8.3)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(vite@7.3.3(@types/node@20.19.39)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.100.0)(yaml@2.8.4))': + dependencies: + '@storybook/csf-plugin': 10.4.1(esbuild@0.27.7)(rollup@4.60.3)(storybook@10.4.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.10.0)(@testing-library/dom@10.4.1)(@types/react@19.2.15)(prettier@3.8.3)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(vite@7.3.3(@types/node@20.19.39)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.100.0)(yaml@2.8.4)) + storybook: 10.4.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.10.0)(@testing-library/dom@10.4.1)(@types/react@19.2.15)(prettier@3.8.3)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + ts-dedent: 2.2.0 + vite: 7.3.3(@types/node@20.19.39)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.100.0)(yaml@2.8.4) transitivePeerDependencies: - esbuild - rollup - webpack - '@storybook/csf-plugin@10.3.6(esbuild@0.27.7)(rollup@4.60.2)(storybook@10.3.6(@testing-library/dom@10.4.1)(prettier@3.8.3)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(vite@7.3.2(@types/node@20.19.39)(jiti@2.6.1)(lightningcss@1.32.0)(yaml@2.8.4))': + '@storybook/csf-plugin@10.4.1(esbuild@0.27.7)(rollup@4.60.3)(storybook@10.4.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.10.0)(@testing-library/dom@10.4.1)(@types/react@19.2.15)(prettier@3.8.3)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(vite@7.3.3(@types/node@20.19.39)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.100.0)(yaml@2.8.4))': dependencies: - storybook: 10.3.6(@testing-library/dom@10.4.1)(prettier@3.8.3)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + storybook: 10.4.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.10.0)(@testing-library/dom@10.4.1)(@types/react@19.2.15)(prettier@3.8.3)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) unplugin: 2.3.11 optionalDependencies: esbuild: 0.27.7 - rollup: 4.60.2 - vite: 7.3.2(@types/node@20.19.39)(jiti@2.6.1)(lightningcss@1.32.0)(yaml@2.8.4) + rollup: 4.60.3 + vite: 7.3.3(@types/node@20.19.39)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.100.0)(yaml@2.8.4) '@storybook/global@5.0.0': {} - '@storybook/icons@2.0.1(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': + '@storybook/icons@2.0.2(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': dependencies: react: 19.2.5 react-dom: 19.2.5(react@19.2.5) + '@storybook/react-dom-shim@10.4.1(@types/react@19.2.15)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(storybook@10.4.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.10.0)(@testing-library/dom@10.4.1)(@types/react@19.2.15)(prettier@3.8.3)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))': + dependencies: + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) + storybook: 10.4.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.10.0)(@testing-library/dom@10.4.1)(@types/react@19.2.15)(prettier@3.8.3)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + optionalDependencies: + '@types/react': 19.2.15 + '@tailwindcss/node@4.2.4': dependencies: '@jridgewell/remapping': 2.3.5 @@ -3305,12 +4175,12 @@ snapshots: '@tailwindcss/oxide-win32-arm64-msvc': 4.2.4 '@tailwindcss/oxide-win32-x64-msvc': 4.2.4 - '@tailwindcss/vite@4.2.4(vite@7.3.2(@types/node@20.19.39)(jiti@2.6.1)(lightningcss@1.32.0)(yaml@2.8.4))': + '@tailwindcss/vite@4.2.4(vite@7.3.3(@types/node@20.19.39)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.100.0)(yaml@2.8.4))': dependencies: '@tailwindcss/node': 4.2.4 '@tailwindcss/oxide': 4.2.4 tailwindcss: 4.2.4 - vite: 7.3.2(@types/node@20.19.39)(jiti@2.6.1)(lightningcss@1.32.0)(yaml@2.8.4) + vite: 7.3.3(@types/node@20.19.39)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.100.0)(yaml@2.8.4) '@testing-library/dom@10.4.1': dependencies: @@ -3336,6 +4206,11 @@ snapshots: dependencies: '@testing-library/dom': 10.4.1 + '@tybys/wasm-util@0.10.2': + dependencies: + tslib: 2.8.1 + optional: true + '@types/aria-query@5.0.4': {} '@types/babel__core@7.20.5': @@ -3372,6 +4247,8 @@ snapshots: '@types/estree@1.0.8': {} + '@types/estree@1.0.9': {} + '@types/hast@3.0.4': dependencies: '@types/unist': 3.0.3 @@ -3380,6 +4257,8 @@ snapshots: dependencies: '@types/unist': 3.0.3 + '@types/mdx@2.0.13': {} + '@types/ms@2.1.0': {} '@types/nlcst@2.0.3': @@ -3389,22 +4268,15 @@ snapshots: '@types/node@20.19.39': dependencies: undici-types: 6.21.0 + optional: true + + '@types/react@19.2.15': + dependencies: + csstype: 3.2.3 '@types/unist@3.0.3': {} - '@ungap/structured-clone@1.3.0': {} - - '@vitejs/plugin-react@5.2.0(vite@7.3.2(@types/node@20.19.39)(jiti@2.6.1)(lightningcss@1.32.0)(yaml@2.8.4))': - dependencies: - '@babel/core': 7.29.0 - '@babel/plugin-transform-react-jsx-self': 7.27.1(@babel/core@7.29.0) - '@babel/plugin-transform-react-jsx-source': 7.27.1(@babel/core@7.29.0) - '@rolldown/pluginutils': 1.0.0-rc.3 - '@types/babel__core': 7.20.5 - react-refresh: 0.18.0 - vite: 7.3.2(@types/node@20.19.39)(jiti@2.6.1)(lightningcss@1.32.0)(yaml@2.8.4) - transitivePeerDependencies: - - supports-color + '@ungap/structured-clone@1.3.1': {} '@vitest/expect@3.2.4': dependencies: @@ -3532,16 +4404,16 @@ snapshots: dependencies: tslib: 2.8.1 - astro@6.2.1(@types/node@20.19.39)(jiti@2.6.1)(lightningcss@1.32.0)(rollup@4.60.2)(typescript@6.0.3)(yaml@2.8.4): + astro@6.3.1(@types/node@20.19.39)(jiti@2.6.1)(lightningcss@1.32.0)(rollup@4.60.3)(sass@1.100.0)(yaml@2.8.4): dependencies: '@astrojs/compiler': 4.0.0 '@astrojs/internal-helpers': 0.9.0 '@astrojs/markdown-remark': 7.1.1 - '@astrojs/telemetry': 3.3.1 + '@astrojs/telemetry': 3.3.2 '@capsizecss/unpack': 4.0.0 '@clack/prompts': 1.3.0 '@oslojs/encoding': 1.1.0 - '@rollup/pluginutils': 5.3.0(rollup@4.60.2) + '@rollup/pluginutils': 5.3.0(rollup@4.60.3) aria-query: 5.3.2 axobject-query: 4.1.0 ci-info: 4.4.0 @@ -3555,10 +4427,12 @@ snapshots: esbuild: 0.27.7 flattie: 1.1.1 fontace: 0.4.1 + get-tsconfig: 5.0.0-beta.4 github-slugger: 2.0.0 html-escaper: 3.0.3 http-cache-semantics: 4.2.0 js-yaml: 4.1.1 + jsonc-parser: 3.3.1 magic-string: 0.30.21 magicast: 0.5.2 mrmime: 2.0.1 @@ -3577,14 +4451,13 @@ snapshots: tinyclip: 0.1.12 tinyexec: 1.1.2 tinyglobby: 0.2.16 - tsconfck: 3.1.6(typescript@6.0.3) ultrahtml: 1.6.0 unifont: 0.7.4 unist-util-visit: 5.1.0 unstorage: 1.17.5 vfile: 6.0.3 - vite: 7.3.2(@types/node@20.19.39)(jiti@2.6.1)(lightningcss@1.32.0)(yaml@2.8.4) - vitefu: 1.1.3(vite@7.3.2(@types/node@20.19.39)(jiti@2.6.1)(lightningcss@1.32.0)(yaml@2.8.4)) + vite: 7.3.3(@types/node@20.19.39)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.100.0)(yaml@2.8.4) + vitefu: 1.1.3(vite@7.3.3(@types/node@20.19.39)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.100.0)(yaml@2.8.4)) xxhash-wasm: 1.1.0 yargs-parser: 22.0.0 zod: 4.4.3 @@ -3621,23 +4494,46 @@ snapshots: - supports-color - terser - tsx - - typescript - uploadthing - yaml + axe-core@4.11.4: {} + axobject-query@4.1.0: {} + babel-plugin-jsx-dom-expressions@0.40.7(@babel/core@7.29.0): + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-module-imports': 7.18.6 + '@babel/plugin-syntax-jsx': 7.28.6(@babel/core@7.29.0) + '@babel/types': 7.29.0 + html-entities: 2.3.3 + parse5: 7.3.0 + + babel-preset-solid@1.9.12(@babel/core@7.29.0)(solid-js@1.9.13): + dependencies: + '@babel/core': 7.29.0 + babel-plugin-jsx-dom-expressions: 0.40.7(@babel/core@7.29.0) + optionalDependencies: + solid-js: 1.9.13 + bail@2.0.2: {} + balanced-match@4.0.4: {} + baseline-browser-mapping@2.10.27: {} boolbase@1.0.0: {} + brace-expansion@5.0.6: + dependencies: + balanced-match: 4.0.4 + browserslist@4.28.2: dependencies: baseline-browser-mapping: 2.10.27 - caniuse-lite: 1.0.30001791 - electron-to-chromium: 1.5.349 + caniuse-lite: 1.0.30001792 + electron-to-chromium: 1.5.352 node-releases: 2.0.38 update-browserslist-db: 1.2.3(browserslist@4.28.2) @@ -3645,7 +4541,7 @@ snapshots: dependencies: run-applescript: 7.1.0 - caniuse-lite@1.0.30001791: {} + caniuse-lite@1.0.30001792: {} ccount@2.0.1: {} @@ -3744,6 +4640,8 @@ snapshots: dependencies: css-tree: 2.2.1 + csstype@3.2.3: {} + debug@4.4.3: dependencies: ms: 2.1.3 @@ -3754,8 +4652,6 @@ snapshots: deep-eql@5.0.2: {} - deepmerge@4.3.1: {} - default-browser-id@5.0.1: {} default-browser@5.5.0: @@ -3781,8 +4677,6 @@ snapshots: diff@8.0.4: {} - dlv@1.1.3: {} - dom-accessibility-api@0.5.16: {} dom-accessibility-api@0.6.3: {} @@ -3807,7 +4701,7 @@ snapshots: dset@3.1.4: {} - electron-to-chromium@1.5.349: {} + electron-to-chromium@1.5.352: {} emmet@2.4.11: dependencies: @@ -3827,8 +4721,6 @@ snapshots: entities@6.0.1: {} - entities@7.0.1: {} - environment@1.1.0: {} es-module-lexer@2.1.0: {} @@ -3864,8 +4756,6 @@ snapshots: escalade@3.2.0: {} - escape-string-regexp@4.0.0: {} - escape-string-regexp@5.0.0: {} esprima@4.0.1: {} @@ -3913,8 +4803,18 @@ snapshots: get-east-asian-width@1.5.0: {} + get-tsconfig@5.0.0-beta.4: + dependencies: + resolve-pkg-maps: 1.0.0 + github-slugger@2.0.0: {} + glob@13.0.6: + dependencies: + minimatch: 10.2.5 + minipass: 7.1.3 + path-scurry: 2.0.2 + graceful-fs@4.2.11: {} h3@1.15.11: @@ -3961,7 +4861,7 @@ snapshots: dependencies: '@types/hast': 3.0.4 '@types/unist': 3.0.3 - '@ungap/structured-clone': 1.3.0 + '@ungap/structured-clone': 1.3.1 hast-util-from-parse5: 8.0.3 hast-util-to-parse5: 8.0.1 html-void-elements: 3.0.0 @@ -4016,23 +4916,18 @@ snapshots: property-information: 7.1.0 space-separated-tokens: 2.0.2 - hono@4.12.16: {} + html-entities@2.3.3: {} html-escaper@3.0.3: {} html-void-elements@3.0.0: {} - htmlparser2@10.1.0: - dependencies: - domelementtype: 2.3.0 - domhandler: 5.0.3 - domutils: 3.2.2 - entities: 7.0.1 - http-cache-semantics@4.2.0: {} husky@9.1.7: {} + immutable@5.1.5: {} + indent-string@4.0.0: {} iron-webcrypto@1.2.1: {} @@ -4041,19 +4936,27 @@ snapshots: is-docker@4.0.0: {} + is-extglob@2.1.1: + optional: true + is-fullwidth-code-point@3.0.0: {} is-fullwidth-code-point@5.1.0: dependencies: get-east-asian-width: 1.5.0 + is-glob@4.0.3: + dependencies: + is-extglob: 2.1.1 + optional: true + is-inside-container@1.0.0: dependencies: is-docker: 3.0.0 is-plain-obj@4.1.0: {} - is-plain-object@5.0.0: {} + is-what@4.1.16: {} is-wsl@3.1.1: dependencies: @@ -4158,7 +5061,7 @@ snapshots: loupe@3.2.1: {} - lru-cache@11.3.5: {} + lru-cache@11.3.6: {} lru-cache@5.1.1: dependencies: @@ -4274,7 +5177,7 @@ snapshots: dependencies: '@types/hast': 3.0.4 '@types/mdast': 4.0.4 - '@ungap/structured-clone': 1.3.0 + '@ungap/structured-clone': 1.3.1 devlop: 1.1.0 micromark-util-sanitize-uri: 2.0.1 trim-lines: 3.0.1 @@ -4302,6 +5205,10 @@ snapshots: mdn-data@2.27.1: {} + merge-anything@5.1.7: + dependencies: + is-what: 4.1.16 + micromark-core-commonmark@2.0.3: dependencies: decode-named-character-reference: 1.3.0 @@ -4497,6 +5404,12 @@ snapshots: min-indent@1.0.1: {} + minimatch@10.2.5: + dependencies: + brace-expansion: 5.0.6 + + minipass@7.1.3: {} + mrmime@2.0.1: {} ms@2.1.3: {} @@ -4511,6 +5424,9 @@ snapshots: dependencies: '@types/nlcst': 2.0.3 + node-addon-api@7.1.1: + optional: true + node-fetch-native@1.6.7: {} node-mock-http@1.0.4: {} @@ -4552,6 +5468,57 @@ snapshots: is-inside-container: 1.0.0 wsl-utils: 0.1.0 + oxc-parser@0.127.0: + dependencies: + '@oxc-project/types': 0.127.0 + optionalDependencies: + '@oxc-parser/binding-android-arm-eabi': 0.127.0 + '@oxc-parser/binding-android-arm64': 0.127.0 + '@oxc-parser/binding-darwin-arm64': 0.127.0 + '@oxc-parser/binding-darwin-x64': 0.127.0 + '@oxc-parser/binding-freebsd-x64': 0.127.0 + '@oxc-parser/binding-linux-arm-gnueabihf': 0.127.0 + '@oxc-parser/binding-linux-arm-musleabihf': 0.127.0 + '@oxc-parser/binding-linux-arm64-gnu': 0.127.0 + '@oxc-parser/binding-linux-arm64-musl': 0.127.0 + '@oxc-parser/binding-linux-ppc64-gnu': 0.127.0 + '@oxc-parser/binding-linux-riscv64-gnu': 0.127.0 + '@oxc-parser/binding-linux-riscv64-musl': 0.127.0 + '@oxc-parser/binding-linux-s390x-gnu': 0.127.0 + '@oxc-parser/binding-linux-x64-gnu': 0.127.0 + '@oxc-parser/binding-linux-x64-musl': 0.127.0 + '@oxc-parser/binding-openharmony-arm64': 0.127.0 + '@oxc-parser/binding-wasm32-wasi': 0.127.0 + '@oxc-parser/binding-win32-arm64-msvc': 0.127.0 + '@oxc-parser/binding-win32-ia32-msvc': 0.127.0 + '@oxc-parser/binding-win32-x64-msvc': 0.127.0 + + oxc-resolver@11.19.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.10.0): + optionalDependencies: + '@oxc-resolver/binding-android-arm-eabi': 11.19.1 + '@oxc-resolver/binding-android-arm64': 11.19.1 + '@oxc-resolver/binding-darwin-arm64': 11.19.1 + '@oxc-resolver/binding-darwin-x64': 11.19.1 + '@oxc-resolver/binding-freebsd-x64': 11.19.1 + '@oxc-resolver/binding-linux-arm-gnueabihf': 11.19.1 + '@oxc-resolver/binding-linux-arm-musleabihf': 11.19.1 + '@oxc-resolver/binding-linux-arm64-gnu': 11.19.1 + '@oxc-resolver/binding-linux-arm64-musl': 11.19.1 + '@oxc-resolver/binding-linux-ppc64-gnu': 11.19.1 + '@oxc-resolver/binding-linux-riscv64-gnu': 11.19.1 + '@oxc-resolver/binding-linux-riscv64-musl': 11.19.1 + '@oxc-resolver/binding-linux-s390x-gnu': 11.19.1 + '@oxc-resolver/binding-linux-x64-gnu': 11.19.1 + '@oxc-resolver/binding-linux-x64-musl': 11.19.1 + '@oxc-resolver/binding-openharmony-arm64': 11.19.1 + '@oxc-resolver/binding-wasm32-wasi': 11.19.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.10.0) + '@oxc-resolver/binding-win32-arm64-msvc': 11.19.1 + '@oxc-resolver/binding-win32-ia32-msvc': 11.19.1 + '@oxc-resolver/binding-win32-x64-msvc': 11.19.1 + transitivePeerDependencies: + - '@emnapi/core' + - '@emnapi/runtime' + p-limit@7.3.0: dependencies: yocto-queue: 1.2.2 @@ -4574,14 +5541,17 @@ snapshots: unist-util-visit-children: 3.0.0 vfile: 6.0.3 - parse-srcset@1.0.2: {} - parse5@7.3.0: dependencies: entities: 6.0.1 path-browserify@1.0.1: {} + path-scurry@2.0.2: + dependencies: + lru-cache: 11.3.6 + minipass: 7.1.3 + pathval@2.0.1: {} piccolore@0.1.3: {} @@ -4592,7 +5562,7 @@ snapshots: picomatch@4.0.4: {} - postcss@8.5.13: + postcss@8.5.14: dependencies: nanoid: 3.3.12 picocolors: 1.1.1 @@ -4612,6 +5582,10 @@ snapshots: radix3@1.1.2: {} + react-docgen-typescript@2.4.0(typescript@6.0.3): + dependencies: + typescript: 6.0.3 + react-dom@19.2.5(react@19.2.5): dependencies: react: 19.2.5 @@ -4619,8 +5593,6 @@ snapshots: react-is@17.0.2: {} - react-refresh@0.18.0: {} - react@19.2.5: {} readdirp@4.1.2: {} @@ -4724,6 +5696,8 @@ snapshots: require-from-string@2.0.2: {} + resolve-pkg-maps@1.0.0: {} + restore-cursor@5.1.0: dependencies: onetime: 7.0.0 @@ -4756,47 +5730,46 @@ snapshots: rfdc@1.4.1: {} - rollup@4.60.2: + rollup@4.60.3: dependencies: '@types/estree': 1.0.8 optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.60.2 - '@rollup/rollup-android-arm64': 4.60.2 - '@rollup/rollup-darwin-arm64': 4.60.2 - '@rollup/rollup-darwin-x64': 4.60.2 - '@rollup/rollup-freebsd-arm64': 4.60.2 - '@rollup/rollup-freebsd-x64': 4.60.2 - '@rollup/rollup-linux-arm-gnueabihf': 4.60.2 - '@rollup/rollup-linux-arm-musleabihf': 4.60.2 - '@rollup/rollup-linux-arm64-gnu': 4.60.2 - '@rollup/rollup-linux-arm64-musl': 4.60.2 - '@rollup/rollup-linux-loong64-gnu': 4.60.2 - '@rollup/rollup-linux-loong64-musl': 4.60.2 - '@rollup/rollup-linux-ppc64-gnu': 4.60.2 - '@rollup/rollup-linux-ppc64-musl': 4.60.2 - '@rollup/rollup-linux-riscv64-gnu': 4.60.2 - '@rollup/rollup-linux-riscv64-musl': 4.60.2 - '@rollup/rollup-linux-s390x-gnu': 4.60.2 - '@rollup/rollup-linux-x64-gnu': 4.60.2 - '@rollup/rollup-linux-x64-musl': 4.60.2 - '@rollup/rollup-openbsd-x64': 4.60.2 - '@rollup/rollup-openharmony-arm64': 4.60.2 - '@rollup/rollup-win32-arm64-msvc': 4.60.2 - '@rollup/rollup-win32-ia32-msvc': 4.60.2 - '@rollup/rollup-win32-x64-gnu': 4.60.2 - '@rollup/rollup-win32-x64-msvc': 4.60.2 + '@rollup/rollup-android-arm-eabi': 4.60.3 + '@rollup/rollup-android-arm64': 4.60.3 + '@rollup/rollup-darwin-arm64': 4.60.3 + '@rollup/rollup-darwin-x64': 4.60.3 + '@rollup/rollup-freebsd-arm64': 4.60.3 + '@rollup/rollup-freebsd-x64': 4.60.3 + '@rollup/rollup-linux-arm-gnueabihf': 4.60.3 + '@rollup/rollup-linux-arm-musleabihf': 4.60.3 + '@rollup/rollup-linux-arm64-gnu': 4.60.3 + '@rollup/rollup-linux-arm64-musl': 4.60.3 + '@rollup/rollup-linux-loong64-gnu': 4.60.3 + '@rollup/rollup-linux-loong64-musl': 4.60.3 + '@rollup/rollup-linux-ppc64-gnu': 4.60.3 + '@rollup/rollup-linux-ppc64-musl': 4.60.3 + '@rollup/rollup-linux-riscv64-gnu': 4.60.3 + '@rollup/rollup-linux-riscv64-musl': 4.60.3 + '@rollup/rollup-linux-s390x-gnu': 4.60.3 + '@rollup/rollup-linux-x64-gnu': 4.60.3 + '@rollup/rollup-linux-x64-musl': 4.60.3 + '@rollup/rollup-openbsd-x64': 4.60.3 + '@rollup/rollup-openharmony-arm64': 4.60.3 + '@rollup/rollup-win32-arm64-msvc': 4.60.3 + '@rollup/rollup-win32-ia32-msvc': 4.60.3 + '@rollup/rollup-win32-x64-gnu': 4.60.3 + '@rollup/rollup-win32-x64-msvc': 4.60.3 fsevents: 2.3.3 run-applescript@7.1.0: {} - sanitize-html@2.17.3: + sass@1.100.0: dependencies: - deepmerge: 4.3.1 - escape-string-regexp: 4.0.0 - htmlparser2: 10.1.0 - is-plain-object: 5.0.0 - parse-srcset: 1.0.2 - postcss: 8.5.13 + chokidar: 5.0.0 + immutable: 5.1.5 + source-map-js: 1.2.1 + optionalDependencies: + '@parcel/watcher': 2.5.6 sax@1.6.0: {} @@ -4806,6 +5779,12 @@ snapshots: semver@7.7.4: {} + seroval-plugins@1.5.4(seroval@1.5.4): + dependencies: + seroval: 1.5.4 + + seroval@1.5.4: {} + sharp@0.34.5: dependencies: '@img/colour': 1.1.0 @@ -4865,16 +5844,62 @@ snapshots: smol-toml@1.6.1: {} + solid-devtools@0.34.5(solid-js@1.9.13)(vite@7.3.3(@types/node@20.19.39)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.100.0)(yaml@2.8.4)): + dependencies: + '@babel/core': 7.29.0 + '@babel/plugin-syntax-typescript': 7.28.6(@babel/core@7.29.0) + '@babel/types': 7.29.0 + '@solid-devtools/debugger': 0.28.1(solid-js@1.9.13) + '@solid-devtools/shared': 0.20.0(solid-js@1.9.13) + solid-js: 1.9.13 + optionalDependencies: + vite: 7.3.3(@types/node@20.19.39)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.100.0)(yaml@2.8.4) + transitivePeerDependencies: + - supports-color + + solid-js@1.9.13: + dependencies: + csstype: 3.2.3 + seroval: 1.5.4 + seroval-plugins: 1.5.4(seroval@1.5.4) + + solid-refresh@0.6.3(solid-js@1.9.13): + dependencies: + '@babel/generator': 7.29.1 + '@babel/helper-module-imports': 7.28.6 + '@babel/types': 7.29.0 + solid-js: 1.9.13 + transitivePeerDependencies: + - supports-color + source-map-js@1.2.1: {} source-map@0.6.1: {} space-separated-tokens@2.0.2: {} - storybook@10.3.6(@testing-library/dom@10.4.1)(prettier@3.8.3)(react-dom@19.2.5(react@19.2.5))(react@19.2.5): + storybook-solidjs-vite@10.0.13(@testing-library/jest-dom@6.9.1)(esbuild@0.27.7)(rollup@4.60.3)(solid-js@1.9.13)(storybook@10.4.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.10.0)(@testing-library/dom@10.4.1)(@types/react@19.2.15)(prettier@3.8.3)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(typescript@6.0.3)(vite@7.3.3(@types/node@20.19.39)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.100.0)(yaml@2.8.4)): + dependencies: + '@joshwooding/vite-plugin-react-docgen-typescript': 0.7.0(typescript@6.0.3)(vite@7.3.3(@types/node@20.19.39)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.100.0)(yaml@2.8.4)) + '@storybook/builder-vite': 10.4.1(esbuild@0.27.7)(rollup@4.60.3)(storybook@10.4.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.10.0)(@testing-library/dom@10.4.1)(@types/react@19.2.15)(prettier@3.8.3)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(vite@7.3.3(@types/node@20.19.39)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.100.0)(yaml@2.8.4)) + '@storybook/global': 5.0.0 + solid-js: 1.9.13 + storybook: 10.4.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.10.0)(@testing-library/dom@10.4.1)(@types/react@19.2.15)(prettier@3.8.3)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + vite: 7.3.3(@types/node@20.19.39)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.100.0)(yaml@2.8.4) + vite-plugin-solid: 2.11.12(@testing-library/jest-dom@6.9.1)(solid-js@1.9.13)(vite@7.3.3(@types/node@20.19.39)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.100.0)(yaml@2.8.4)) + optionalDependencies: + typescript: 6.0.3 + transitivePeerDependencies: + - '@testing-library/jest-dom' + - esbuild + - rollup + - supports-color + - webpack + + storybook@10.4.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.10.0)(@testing-library/dom@10.4.1)(@types/react@19.2.15)(prettier@3.8.3)(react-dom@19.2.5(react@19.2.5))(react@19.2.5): dependencies: '@storybook/global': 5.0.0 - '@storybook/icons': 2.0.1(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@storybook/icons': 2.0.2(react-dom@19.2.5(react@19.2.5))(react@19.2.5) '@testing-library/jest-dom': 6.9.1 '@testing-library/user-event': 14.6.1(@testing-library/dom@10.4.1) '@vitest/expect': 3.2.4 @@ -4882,13 +5907,18 @@ snapshots: '@webcontainer/env': 1.1.1 esbuild: 0.27.7 open: 10.2.0 + oxc-parser: 0.127.0 + oxc-resolver: 11.19.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.10.0) recast: 0.23.11 semver: 7.7.4 use-sync-external-store: 1.6.0(react@19.2.5) ws: 8.20.0 optionalDependencies: + '@types/react': 19.2.15 prettier: 3.8.3 transitivePeerDependencies: + - '@emnapi/core' + - '@emnapi/runtime' - '@testing-library/dom' - bufferutil - react @@ -4968,10 +5998,6 @@ snapshots: ts-dedent@2.2.0: {} - tsconfck@3.1.6(typescript@6.0.3): - optionalDependencies: - typescript: 6.0.3 - tslib@2.8.1: {} typesafe-path@0.2.2: {} @@ -4988,7 +6014,8 @@ snapshots: uncrypto@0.1.3: {} - undici-types@6.21.0: {} + undici-types@6.21.0: + optional: true unified@11.0.5: dependencies: @@ -5061,7 +6088,7 @@ snapshots: chokidar: 5.0.0 destr: 2.0.5 h3: 1.15.11 - lru-cache: 11.3.5 + lru-cache: 11.3.6 node-fetch-native: 1.6.7 ofetch: 1.5.1 ufo: 1.6.4 @@ -5091,24 +6118,40 @@ snapshots: '@types/unist': 3.0.3 vfile-message: 4.0.3 - vite@7.3.2(@types/node@20.19.39)(jiti@2.6.1)(lightningcss@1.32.0)(yaml@2.8.4): + vite-plugin-solid@2.11.12(@testing-library/jest-dom@6.9.1)(solid-js@1.9.13)(vite@7.3.3(@types/node@20.19.39)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.100.0)(yaml@2.8.4)): + dependencies: + '@babel/core': 7.29.0 + '@types/babel__core': 7.20.5 + babel-preset-solid: 1.9.12(@babel/core@7.29.0)(solid-js@1.9.13) + merge-anything: 5.1.7 + solid-js: 1.9.13 + solid-refresh: 0.6.3(solid-js@1.9.13) + vite: 7.3.3(@types/node@20.19.39)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.100.0)(yaml@2.8.4) + vitefu: 1.1.3(vite@7.3.3(@types/node@20.19.39)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.100.0)(yaml@2.8.4)) + optionalDependencies: + '@testing-library/jest-dom': 6.9.1 + transitivePeerDependencies: + - supports-color + + vite@7.3.3(@types/node@20.19.39)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.100.0)(yaml@2.8.4): dependencies: esbuild: 0.27.7 fdir: 6.5.0(picomatch@4.0.4) picomatch: 4.0.4 - postcss: 8.5.13 - rollup: 4.60.2 + postcss: 8.5.14 + rollup: 4.60.3 tinyglobby: 0.2.16 optionalDependencies: '@types/node': 20.19.39 fsevents: 2.3.3 jiti: 2.6.1 lightningcss: 1.32.0 + sass: 1.100.0 yaml: 2.8.4 - vitefu@1.1.3(vite@7.3.2(@types/node@20.19.39)(jiti@2.6.1)(lightningcss@1.32.0)(yaml@2.8.4)): + vitefu@1.1.3(vite@7.3.3(@types/node@20.19.39)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.100.0)(yaml@2.8.4)): optionalDependencies: - vite: 7.3.2(@types/node@20.19.39)(jiti@2.6.1)(lightningcss@1.32.0)(yaml@2.8.4) + vite: 7.3.3(@types/node@20.19.39)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.100.0)(yaml@2.8.4) volar-service-css@0.0.70(@volar/language-service@2.4.28): dependencies: diff --git a/src/app/layouts/BaseLayout/BaseLayout.astro b/src/app/layouts/BaseLayout/BaseLayout.astro index cc07180..cd4168b 100644 --- a/src/app/layouts/BaseLayout/BaseLayout.astro +++ b/src/app/layouts/BaseLayout/BaseLayout.astro @@ -9,7 +9,7 @@ interface Props { const { title = "NikitaPozd Dev", description = "" } = Astro.props; --- - + @@ -17,9 +17,28 @@ const { title = "NikitaPozd Dev", description = "" } = Astro.props; {title} + + - - + + + \ No newline at end of file diff --git a/src/app/styles/global.css b/src/app/styles/global.css index d08cad3..cb9394c 100644 --- a/src/app/styles/global.css +++ b/src/app/styles/global.css @@ -1,15 +1,3 @@ -@layer theme, base, components, utilities; @import "tailwindcss"; -@import "@webtui/css/base.css" layer(base); - -/* utilities */ -@import "@webtui/css/utils/box.css" layer(utilities); - -/* components */ -@import "@webtui/css/components/accordion.css" layer(components); -@import "@webtui/css/components/badge.css" layer(components); -@import "@webtui/css/components/button.css" layer(components); -@import "@webtui/css/components/dialog.css" layer(components); -@import "@webtui/css/components/pre.css" layer(components); -@import "@webtui/css/components/typography.css" layer(components); +@import "../../shared/designSystem/styles/global.css"; diff --git a/src/pageModules/home/ui/HomePage.astro b/src/pageModules/home/ui/HomePage.astro index f6c0f38..2ca31cc 100644 --- a/src/pageModules/home/ui/HomePage.astro +++ b/src/pageModules/home/ui/HomePage.astro @@ -1,13 +1,12 @@ -
-
- home page -

Hello WebTUI

-

- Базовая главная страница собрана как page module и подключается маршрутом из - `src/pages/index.astro`. -

-
- -
+--- +import { Button } from "@shared/designSystem"; +--- + +
+
+

Home Page

+
\ No newline at end of file diff --git a/src/shared/.gitkeep b/src/shared/.gitkeep deleted file mode 100644 index e69de29..0000000 diff --git a/src/shared/designSystem/components/Button/helpers/getButtonClassNames.ts b/src/shared/designSystem/components/Button/helpers/getButtonClassNames.ts new file mode 100644 index 0000000..513c87b --- /dev/null +++ b/src/shared/designSystem/components/Button/helpers/getButtonClassNames.ts @@ -0,0 +1,41 @@ +import styles from "../styles/Button.module.scss"; +import type { ButtonProps } from "../types/Button.types.ts"; + +type ButtonVariant = NonNullable; +type ButtonColor = NonNullable; +type ButtonSize = NonNullable; + +type GetButtonClassNamesParams = { + variant?: ButtonVariant; + color?: ButtonColor; + size?: ButtonSize; + fullWidth?: boolean; + loading?: boolean; + disabled?: boolean; + class?: string; +}; + +export const getButtonClassNames = ({ + variant = "primary", + color = "dark", + size = 44, + fullWidth = false, + loading = false, + disabled = false, + class: className = "", +}: GetButtonClassNamesParams): string => { + return [ + styles.root, + styles[`size-${size}`], + styles[`color-${color}-${variant}`], + disabled ? styles[`disabled-${variant}`] : "", + fullWidth && styles.block, + loading && styles.isLoading, + className, + ] + .filter(Boolean) + .join(" "); +}; + +export const buttonContentClassName = styles.content; +export const buttonSpinnerClassName = styles.spinner; diff --git a/src/shared/designSystem/components/Button/helpers/isLinkButton.ts b/src/shared/designSystem/components/Button/helpers/isLinkButton.ts new file mode 100644 index 0000000..12c492e --- /dev/null +++ b/src/shared/designSystem/components/Button/helpers/isLinkButton.ts @@ -0,0 +1,7 @@ +import type { ButtonAsLinkProps, ButtonProps } from "../types/Button.types.ts"; + +export const isLinkButton = ( + props: ButtonProps, +): props is ButtonAsLinkProps => { + return props.as === "a"; +}; diff --git a/src/shared/designSystem/components/Button/index.ts b/src/shared/designSystem/components/Button/index.ts new file mode 100644 index 0000000..17f01b0 --- /dev/null +++ b/src/shared/designSystem/components/Button/index.ts @@ -0,0 +1,2 @@ +export type { ButtonProps } from "./types/Button.types.ts"; +export { Button } from "./ui/Button.tsx"; diff --git a/src/shared/designSystem/components/Button/stories/Button.stories.tsx b/src/shared/designSystem/components/Button/stories/Button.stories.tsx new file mode 100644 index 0000000..fc3f6a8 --- /dev/null +++ b/src/shared/designSystem/components/Button/stories/Button.stories.tsx @@ -0,0 +1,242 @@ +import type { Meta, StoryObj } from "storybook-solidjs-vite"; +import { Button } from "../ui/Button.tsx"; + +const variants = ["primary", "secondary", "outlined", "text"] as const; +const colors = ["blue", "dark", "red", "cyan"] as const; +const sizes = [36, 44, 52, 60] as const; + +const meta = { + title: "shared/designSystem/Button", + component: Button, + args: { + children: "Button", + as: "button", + variant: "primary", + color: "cyan", + size: 52, + fullWidth: false, + loading: false, + disabled: false, + type: "button", + }, + argTypes: { + as: { + control: "radio", + options: ["button", "a"], + }, + variant: { + control: "select", + options: variants, + }, + color: { + control: "select", + options: colors, + }, + size: { + control: "select", + options: sizes, + }, + fullWidth: { + control: "boolean", + }, + loading: { + control: "boolean", + }, + disabled: { + control: "boolean", + }, + type: { + control: "select", + options: ["button", "submit", "reset"], + }, + href: { + control: "text", + }, + }, +} satisfies Meta; + +export default meta; + +type Story = StoryObj; + +export const Playground: Story = {}; + +export const Primary: Story = { + args: { + children: "Primary button", + variant: "primary", + color: "cyan", + }, +}; + +export const Secondary: Story = { + args: { + children: "Secondary button", + variant: "secondary", + color: "cyan", + }, +}; + +export const Outlined: Story = { + args: { + children: "Outlined button", + variant: "outlined", + color: "cyan", + }, +}; + +export const Text: Story = { + args: { + children: "Text button", + variant: "text", + color: "cyan", + }, +}; + +export const Loading: Story = { + args: { + children: "Loading", + loading: true, + size: 52, + }, +}; + +export const Disabled: Story = { + args: { + children: "Disabled", + disabled: true, + size: 52, + }, +}; + +export const AsLink: Story = { + args: { + as: "a", + href: "/demo", + children: "Open demo", + variant: "text", + color: "cyan", + }, +}; + +export const FullWidth: Story = { + args: { + children: "Continue", + fullWidth: true, + size: 52, + }, + parameters: { + layout: "padded", + }, + render: (args) => ( +
+
+ ), +}; + +export const Sizes: Story = { + render: () => ( +
+ {sizes.map((size) => ( + + ))} +
+ ), +}; + +export const Colors: Story = { + render: () => ( +
+ {colors.map((color) => ( + + ))} +
+ ), +}; + +export const VariantMatrix: Story = { + render: () => ( +
+ {variants.map((variant) => ( +
+

{variant}

+
+ {colors.map((color) => ( + + ))} +
+
+ ))} +
+ ), +}; + +export const LoadingMatrix: Story = { + render: () => ( +
+ {variants.map((variant) => ( +
+

{variant} loading

+
+ {colors.map((color) => ( + + ))} +
+
+ ))} +
+ ), +}; + +export const DisabledMatrix: Story = { + render: () => ( +
+ {variants.map((variant) => ( +
+

{variant} disabled

+
+ {colors.map((color) => ( + + ))} +
+
+ ))} +
+ ), +}; diff --git a/src/shared/designSystem/components/Button/styles/Button.module.scss b/src/shared/designSystem/components/Button/styles/Button.module.scss new file mode 100644 index 0000000..a19acb5 --- /dev/null +++ b/src/shared/designSystem/components/Button/styles/Button.module.scss @@ -0,0 +1,195 @@ + + +$button-colors: "dark", "blue", "red", "cyan"; +$button-variants: "primary", "secondary", "outlined", "text"; +$button-sizes: 36, 44, 52, 60; + +.root { + display: flex; + width: fit-content; + position: relative; + align-items: center; + justify-content: center; + gap: var(--ds-space-4); + border-width: 1px; + border-style: solid; + outline: none; + font-weight: 600; + line-height: 1; + vertical-align: middle; + white-space: nowrap; + user-select: none; + cursor: pointer; + border-radius: var(--ds-radius-1); + + color: var(--button-current-color); + background-color: var(--button-current-background); + border-color: var(--button-current-border); + transition: + background-color var(--ds-duration-fast) var(--ds-ease-in-out), + border-color var(--ds-duration-fast) var(--ds-ease-in-out), + color var(--ds-duration-fast) var(--ds-ease-in-out), + box-shadow var(--ds-duration-fast) var(--ds-ease-in-out), + transform var(--ds-duration-fast) var(--ds-ease-in-out); +} + +.root:focus-visible { + box-shadow: 0 0 0 3px rgba(125, 211, 252, 0.35); +} + +.content { + display: flex; + position: relative; + align-items: center; + justify-content: center; + gap: var(--ds-space-4); +} + +.block { + display: flex; + width: 100%; +} + +.isLoading { + cursor: wait; + pointer-events: none; +} + +.isLoading .content { + color: transparent; +} + +.spinner { + position: absolute; + top: 50%; + left: 50%; + inline-size: var(--ds-icon-size-16); + block-size: var(--ds-icon-size-16); + transform: translate(-50%, -50%); + border: 2px solid currentColor; + border-right-color: transparent; + border-radius: 999px; + animation: button-spin 0.8s linear infinite; +} + + +@keyframes button-spin { + to { + transform: translate(-50%, -50%) rotate(360deg); + } +} + +/* sizes */ + +.size-36 { + height: var(--ds-container-size-36); + padding-inline: var(--ds-space-12); + font-size: var(--ds-font-size-14); +} + +.size-44 { + height: var(--ds-container-size-44); + padding-inline: var(--ds-space-16); + font-size: var(--ds-font-size-14); +} + +.size-52 { + height: var(--ds-container-size-52); + padding-inline: var(--ds-space-20); + font-size: var(--ds-font-size-16); +} + +.size-60 { + height: var(--ds-container-size-60); + padding-inline: var(--ds-space-24); + font-size: var(--ds-font-size-16); +} + +/* variant + color bindings */ + +@each $color in $button-colors { + .color-#{$color}-text { + height: fit-content; + padding: 0; + } + + @each $variant in $button-variants { + .color-#{$color}-#{$variant} { + --button-current-color: var(--button-#{$variant}-#{$color}-default-color); + --button-current-background: var( + --button-#{$variant}-#{$color}-default-background + ); + --button-current-border: var( + --button-#{$variant}-#{$color}-default-border, + transparent + ); + } + + .color-#{$color}-#{$variant}:hover, + .color-#{$color}-#{$variant}:focus-visible { + --button-current-color: var( + --button-#{$variant}-#{$color}-hover-color, + var(--button-#{$variant}-#{$color}-default-color) + ); + --button-current-background: var( + --button-#{$variant}-#{$color}-hover-background, + var(--button-#{$variant}-#{$color}-default-background) + ); + --button-current-border: var( + --button-#{$variant}-#{$color}-hover-border, + var(--button-#{$variant}-#{$color}-default-border, transparent) + ); + } + + .color-#{$color}-#{$variant}:active { + --button-current-color: var( + --button-#{$variant}-#{$color}-active-color, + var( + --button-#{$variant}-#{$color}-hover-color, + var(--button-#{$variant}-#{$color}-default-color) + ) + ); + --button-current-background: var( + --button-#{$variant}-#{$color}-active-background, + var( + --button-#{$variant}-#{$color}-hover-background, + var(--button-#{$variant}-#{$color}-default-background) + ) + ); + --button-current-border: var( + --button-#{$variant}-#{$color}-active-border, + var( + --button-#{$variant}-#{$color}-hover-border, + var(--button-#{$variant}-#{$color}-default-border, transparent) + ) + ); + } + } +} + +/* disabled by variant */ + +@each $variant in $button-variants { + .disabled-#{$variant} { + cursor: default; + pointer-events: none; + } + + @each $color in $button-colors { + .color-#{$color}-#{$variant}.disabled-#{$variant}, + .color-#{$color}-#{$variant}[aria-disabled="true"] { + --button-current-color: var( + --button-#{$variant}-#{$color}-disabled-color, + var(--button-#{$variant}-#{$color}-default-color) + ); + --button-current-background: var( + --button-#{$variant}-#{$color}-disabled-background, + var(--button-#{$variant}-#{$color}-default-background) + ); + --button-current-border: var( + --button-#{$variant}-#{$color}-disabled-border, + var(--button-#{$variant}-#{$color}-default-border, transparent) + ); + } + } +} \ No newline at end of file diff --git a/src/shared/designSystem/components/Button/types/Button.types.ts b/src/shared/designSystem/components/Button/types/Button.types.ts new file mode 100644 index 0000000..f50a0b3 --- /dev/null +++ b/src/shared/designSystem/components/Button/types/Button.types.ts @@ -0,0 +1,40 @@ +import type { + ColorValue, + ContainerSizeValue, + VariantValue, +} from "@shared/designSystem/constants"; +import type { JSX, ParentProps } from "solid-js"; + +export type CommonProps = ParentProps<{ + variant?: VariantValue; + size?: ContainerSizeValue; + color?: Extract; + fullWidth?: boolean; + loading?: boolean; + disabled?: boolean; + class?: string; + leftIcon?: JSX.Element; + rightIcon?: JSX.Element; +}>; + +export type ButtonAsButtonProps = CommonProps & + Omit< + JSX.ButtonHTMLAttributes, + "class" | "disabled" | "type" | "href" + > & { + as?: "button"; + type?: "button" | "submit" | "reset"; + href?: never; + }; + +export type ButtonAsLinkProps = CommonProps & + Omit< + JSX.AnchorHTMLAttributes, + "class" | "href" | "type" + > & { + as: "a"; + href: string; + type?: never; + }; + +export type ButtonProps = ButtonAsButtonProps | ButtonAsLinkProps; diff --git a/src/shared/designSystem/components/Button/ui/Button.tsx b/src/shared/designSystem/components/Button/ui/Button.tsx new file mode 100644 index 0000000..375362b --- /dev/null +++ b/src/shared/designSystem/components/Button/ui/Button.tsx @@ -0,0 +1,13 @@ +import type { Component } from "solid-js"; +import { isLinkButton } from "../helpers/isLinkButton.ts"; +import type { ButtonProps } from "../types/Button.types.ts"; +import { ButtonAsButton } from "./ButtonAsButton.tsx"; +import { ButtonAsLink } from "./ButtonAsLink.tsx"; + +export const Button: Component = (props) => { + if (isLinkButton(props)) { + return ; + } + + return ; +}; diff --git a/src/shared/designSystem/components/Button/ui/ButtonAsButton.tsx b/src/shared/designSystem/components/Button/ui/ButtonAsButton.tsx new file mode 100644 index 0000000..8a898a0 --- /dev/null +++ b/src/shared/designSystem/components/Button/ui/ButtonAsButton.tsx @@ -0,0 +1,58 @@ +import type { Component } from "solid-js"; +import { Show, splitProps } from "solid-js"; +import { + buttonContentClassName, + buttonSpinnerClassName, + getButtonClassNames, +} from "../helpers/getButtonClassNames.ts"; +import type { ButtonAsButtonProps } from "../types/Button.types.ts"; + +export const ButtonAsButton: Component = (props) => { + const [local, rest] = splitProps(props as ButtonAsButtonProps, [ + "variant", + "color", + "size", + "fullWidth", + "loading", + "disabled", + "class", + "leftIcon", + "rightIcon", + "children", + "type", + ]); + + const isLoading = local.loading ?? false; + const isDisabled = local.disabled ?? false; + + const classes = getButtonClassNames({ + variant: local.variant || "primary", + color: local.color || "cyan", + size: local.size || 44, + fullWidth: local.fullWidth ?? false, + loading: isLoading ?? false, + disabled: isDisabled ?? false, + class: local.class, + }); + + return ( + + ); +}; diff --git a/src/shared/designSystem/components/Button/ui/ButtonAsLink.tsx b/src/shared/designSystem/components/Button/ui/ButtonAsLink.tsx new file mode 100644 index 0000000..4a82048 --- /dev/null +++ b/src/shared/designSystem/components/Button/ui/ButtonAsLink.tsx @@ -0,0 +1,59 @@ +import type { Component } from "solid-js"; +import { Show, splitProps } from "solid-js"; +import { + buttonContentClassName, + buttonSpinnerClassName, + getButtonClassNames, +} from "../helpers/getButtonClassNames.ts"; +import type { ButtonAsLinkProps } from "../types/Button.types.ts"; + +export const ButtonAsLink: Component = (props) => { + const [local, rest] = splitProps(props as ButtonAsLinkProps, [ + "variant", + "color", + "size", + "fullWidth", + "loading", + "disabled", + "class", + "leftIcon", + "rightIcon", + "children", + "type", + "href", + ]); + + const isLoading = local.loading ?? false; + const isDisabled = (local.disabled ?? false) || isLoading; + + const classes = getButtonClassNames({ + variant: local.variant || "primary", + color: local.color || "cyan", + size: local.size || 44, + fullWidth: local.fullWidth ?? false, + loading: isLoading ?? false, + class: local.class, + }); + + return ( + + + + ); +}; diff --git a/src/shared/designSystem/constants/colors.ts b/src/shared/designSystem/constants/colors.ts new file mode 100644 index 0000000..4558845 --- /dev/null +++ b/src/shared/designSystem/constants/colors.ts @@ -0,0 +1,12 @@ +export const colors = { + light: "light", + dark: "dark", + green: "green", + blue: "blue", + orange: "orange", + red: "red", + cyan: "cyan", +} as const; + +export type ColorName = keyof typeof colors; +export type ColorValue = (typeof colors)[ColorName]; diff --git a/src/shared/designSystem/constants/index.ts b/src/shared/designSystem/constants/index.ts new file mode 100644 index 0000000..0db394a --- /dev/null +++ b/src/shared/designSystem/constants/index.ts @@ -0,0 +1,5 @@ +export * from "./colors.ts"; +export * from "./sizes.ts"; +export * from "./spaces.ts"; +export * from "./variants.ts"; +export * from "./zIndexes.ts"; diff --git a/src/shared/designSystem/constants/sizes.ts b/src/shared/designSystem/constants/sizes.ts new file mode 100644 index 0000000..4a59a8a --- /dev/null +++ b/src/shared/designSystem/constants/sizes.ts @@ -0,0 +1,52 @@ +export const contentSizes = { + s16: 16, + s20: 20, + s24: 24, + s28: 28, +} as const; + +export type ContentSizeName = keyof typeof contentSizes; +export type ContentSizeValue = (typeof contentSizes)[ContentSizeName]; + +export const containerSizes = { + s36: 36, + s44: 44, + s52: 52, + s60: 60, +} as const; + +export type ContainerSizeName = keyof typeof containerSizes; +export type ContainerSizeValue = (typeof containerSizes)[ContainerSizeName]; + +export const fontSizes = { + s8: 8, + s10: 10, + s12: 12, + s14: 14, + s16: 16, + s20: 20, +} as const; + +export type FontSizeName = keyof typeof fontSizes; +export type FontSizeValue = (typeof fontSizes)[FontSizeName]; + +export const borderRadiusSizes = { + s4: 4, + s8: 8, + s12: 12, + s16: 16, + s24: 24, + s40: 40, +} as const; + +export type BorderRadiusSizeName = keyof typeof borderRadiusSizes; +export type BorderRadiusSizeValue = + (typeof borderRadiusSizes)[BorderRadiusSizeName]; + +export const iconSizes = { + s12: 12, + ...contentSizes, +} as const; + +export type IconSizeName = keyof typeof iconSizes; +export type IconSizeValue = (typeof iconSizes)[IconSizeName]; diff --git a/src/shared/designSystem/constants/spaces.ts b/src/shared/designSystem/constants/spaces.ts new file mode 100644 index 0000000..c5eb5eb --- /dev/null +++ b/src/shared/designSystem/constants/spaces.ts @@ -0,0 +1,20 @@ +export const spaces = { + s0: 0, + s2: 2, + s4: 4, + s6: 6, + s8: 8, + s12: 12, + s16: 16, + s20: 20, + s24: 24, + s28: 28, + s32: 32, + s36: 36, + s40: 40, + s48: 48, + s60: 60, +} as const; + +export type SpaceName = keyof typeof spaces; +export type SpaceValue = (typeof spaces)[SpaceName]; diff --git a/src/shared/designSystem/constants/variants.ts b/src/shared/designSystem/constants/variants.ts new file mode 100644 index 0000000..45cd7a1 --- /dev/null +++ b/src/shared/designSystem/constants/variants.ts @@ -0,0 +1,9 @@ +export const variants = { + outlined: "outlined", + primary: "primary", + secondary: "secondary", + text: "text", +} as const; + +export type VariantName = keyof typeof variants; +export type VariantValue = (typeof variants)[VariantName]; diff --git a/src/shared/designSystem/constants/zIndexes.ts b/src/shared/designSystem/constants/zIndexes.ts new file mode 100644 index 0000000..5f9a9d0 --- /dev/null +++ b/src/shared/designSystem/constants/zIndexes.ts @@ -0,0 +1,11 @@ +export const zIndexes = { + dropdown: 1060, + sticky: 1020, + fixed: 1030, + modalBackdrop: 1040, + modal: 1050, + tooltip: 1060, +} as const; + +export type ZIndexName = keyof typeof zIndexes; +export type ZIndexValue = (typeof zIndexes)[ZIndexName]; diff --git a/src/shared/designSystem/index.ts b/src/shared/designSystem/index.ts new file mode 100644 index 0000000..30ab361 --- /dev/null +++ b/src/shared/designSystem/index.ts @@ -0,0 +1 @@ +export { Button } from "./components/Button"; diff --git a/src/shared/designSystem/styles/components/button/index.css b/src/shared/designSystem/styles/components/button/index.css new file mode 100644 index 0000000..535a100 --- /dev/null +++ b/src/shared/designSystem/styles/components/button/index.css @@ -0,0 +1,4 @@ +@import "./primary.css"; +@import "./secondary.css"; +@import "./outlined.css"; +@import "./text.css"; diff --git a/src/shared/designSystem/styles/components/button/outlined.css b/src/shared/designSystem/styles/components/button/outlined.css new file mode 100644 index 0000000..b5e2223 --- /dev/null +++ b/src/shared/designSystem/styles/components/button/outlined.css @@ -0,0 +1,90 @@ +:root { + /* BLUE */ + --button-outlined-blue-default-background: transparent; + --button-outlined-blue-hover-background: color-mix( + in srgb, + var(--ds-color-blue-primary) 20%, + transparent + ); + --button-outlined-blue-default-color: var(--ds-color-blue-primary); + --button-outlined-blue-active-color: var(--ds-color-blue-primary-hover); + --button-outlined-blue-disabled-color: color-mix( + in srgb, + var(--button-outlined-blue-default-color) 70%, + transparent + ); + --button-outlined-blue-default-border: var(--ds-color-blue-primary); + --button-outlined-blue-hover-border: var(--ds-color-blue-primary-hover); + --button-outlined-blue-disabled-border: color-mix( + in srgb, + var(--ds-color-blue-primary) 50%, + transparent + ); + + /* DARK */ + --button-outlined-dark-default-background: transparent; + --button-outlined-dark-hover-background: color-mix( + in srgb, + var(--ds-color-gray-secondary) 20%, + transparent + ); + --button-outlined-dark-default-color: var(--ds-theme-text-primary); + --button-outlined-dark-hover-color: var(--ds-theme-text-primary-hover); + --button-outlined-dark-active-color: var(--ds-theme-text-primary-active); + --button-outlined-dark-disabled-color: color-mix( + in srgb, + var(--button-outlined-dark-default-color) 70%, + transparent + ); + --button-outlined-dark-default-border: var(--ds-theme-text-primary); + --button-outlined-dark-hover-border: var(--ds-theme-text-primary-hover); + --button-outlined-dark-disabled-border: color-mix( + in srgb, + var(--button-outlined-dark-default-border) 50%, + transparent + ); + + /* RED */ + --button-outlined-red-default-background: transparent; + --button-outlined-red-hover-background: color-mix( + in srgb, + var(--ds-color-red-primary) 20%, + transparent + ); + --button-outlined-red-default-color: var(--ds-color-red-primary); + --button-outlined-red-active-color: var(--ds-color-red-primary-hover); + --button-outlined-red-disabled-color: color-mix( + in srgb, + var(--button-outlined-red-default-color) 70%, + transparent + ); + --button-outlined-red-default-border: var(--ds-color-red-primary); + --button-outlined-red-hover-border: var(--ds-color-red-primary-hover); + --button-outlined-red-disabled-border: color-mix( + in srgb, + var(--ds-color-red-primary) 50%, + transparent + ); + + /* CYAN */ + --button-outlined-cyan-default-background: transparent; + --button-outlined-cyan-hover-background: color-mix( + in srgb, + var(--ds-color-cyan-primary) 20%, + transparent + ); + --button-outlined-cyan-default-color: var(--ds-color-cyan-primary); + --button-outlined-cyan-active-color: var(--ds-color-cyan-primary-hover); + --button-outlined-cyan-disabled-color: color-mix( + in srgb, + var(--button-outlined-cyan-default-color) 70%, + transparent + ); + --button-outlined-cyan-default-border: var(--ds-color-cyan-primary); + --button-outlined-cyan-hover-border: var(--ds-color-cyan-primary-hover); + --button-outlined-cyan-disabled-border: color-mix( + in srgb, + var(--ds-color-cyan-primary) 50%, + transparent + ); +} diff --git a/src/shared/designSystem/styles/components/button/primary.css b/src/shared/designSystem/styles/components/button/primary.css new file mode 100644 index 0000000..e9882e8 --- /dev/null +++ b/src/shared/designSystem/styles/components/button/primary.css @@ -0,0 +1,59 @@ +:root { + /* BLUE */ + --button-primary-blue-default-background: var(--ds-color-blue-primary); + --button-primary-blue-hover-background: var(--ds-color-blue-primary-hover); + --button-primary-blue-active-background: var(--ds-color-blue-primary-active); + --button-primary-blue-disabled-background: var(--ds-color-blue-4); + --button-primary-blue-default-color: var(--ds-color-gray-1); + --button-primary-blue-disabled-color: color-mix( + in srgb, + var(--button-primary-blue-default-color) 40%, + transparent + ); + --button-primary-blue-default-border: transparent; + + /* DARK */ + --button-primary-dark-default-background: var(--ds-color-gray-primary); + --button-primary-dark-hover-background: var(--ds-color-gray-primary-hover); + --button-primary-dark-active-background: var(--ds-color-gray-primary-active); + --button-primary-dark-disabled-background: var(--ds-color-gray-7); + --button-primary-dark-default-color: var(--ds-color-gray-1); + --button-primary-dark-disabled-color: color-mix( + in srgb, + var(--button-primary-dark-default-color) 40%, + transparent + ); + --button-primary-dark-default-border: transparent; + + /* RED */ + --button-primary-red-default-background: var(--ds-color-red-primary); + --button-primary-red-hover-background: var(--ds-color-red-primary-hover); + --button-primary-red-active-background: var(--ds-color-red-primary-active); + --button-primary-red-disabled-background: var(--ds-color-red-4); + --button-primary-red-default-color: var(--ds-color-gray-1); + --button-primary-red-disabled-color: color-mix( + in srgb, + var(--button-primary-red-default-color) 40%, + transparent + ); + --button-primary-red-default-border: transparent; + + /* CYAN */ + --button-primary-cyan-default-background: var(--ds-color-cyan-primary); + --button-primary-cyan-hover-background: var(--ds-color-cyan-primary-hover); + --button-primary-cyan-active-background: var(--ds-color-cyan-primary-active); + --button-primary-cyan-disabled-background: var(--ds-color-cyan-4); + --button-primary-cyan-default-color: var(--ds-theme-text-primary-inverted); + --button-primary-cyan-hover-color: var( + --ds-theme-text-primary-inverted-hover + ); + --button-primary-cyan-active-color: var( + --ds-theme-text-primary-inverted-active + ); + --button-primary-cyan-disabled-color: color-mix( + in srgb, + var(--button-primary-cyan-default-color) 40%, + transparent + ); + --button-primary-cyan-default-border: transparent; +} diff --git a/src/shared/designSystem/styles/components/button/secondary.css b/src/shared/designSystem/styles/components/button/secondary.css new file mode 100644 index 0000000..0883fb5 --- /dev/null +++ b/src/shared/designSystem/styles/components/button/secondary.css @@ -0,0 +1,71 @@ +:root { + /* BLUE */ + --button-secondary-blue-default-background: var(--ds-color-blue-secondary); + --button-secondary-blue-hover-background: var( + --ds-color-blue-secondary-hover + ); + --button-secondary-blue-active-background: var( + --ds-color-blue-secondary-active + ); + --button-secondary-blue-default-color: var(--ds-color-blue-primary); + --button-secondary-blue-hover-color: var(--ds-color-blue-primary-hover); + --button-secondary-blue-active-color: var(--ds-color-blue-primary-active); + --button-secondary-blue-disabled-color: color-mix( + in srgb, + var(--button-secondary-blue-default-color) 70%, + transparent + ); + --button-secondary-blue-default-border: transparent; + + /* DARK */ + --button-secondary-dark-default-background: var(--ds-color-gray-secondary); + --button-secondary-dark-hover-background: var( + --ds-color-gray-secondary-hover + ); + --button-secondary-dark-active-background: var( + --ds-color-gray-secondary-active + ); + --button-secondary-dark-default-color: var(--ds-color-gray-primary); + --button-secondary-dark-hover-color: var(--ds-color-gray-primary-hover); + --button-secondary-dark-active-color: var(--ds-color-gray-primary-active); + --button-secondary-dark-disabled-color: color-mix( + in srgb, + var(--button-secondary-dark-default-color) 70%, + transparent + ); + --button-secondary-dark-default-border: transparent; + + /* RED */ + --button-secondary-red-default-background: var(--ds-color-red-secondary); + --button-secondary-red-hover-background: var(--ds-color-red-secondary-hover); + --button-secondary-red-active-background: var( + --ds-color-red-secondary-active + ); + --button-secondary-red-default-color: var(--ds-color-red-primary); + --button-secondary-red-hover-color: var(--ds-color-red-primary-hover); + --button-secondary-red-active-color: var(--ds-color-red-primary-active); + --button-secondary-red-disabled-color: color-mix( + in srgb, + var(--button-secondary-red-default-color) 70%, + transparent + ); + --button-secondary-red-default-border: transparent; + + /* CYAN */ + --button-secondary-cyan-default-background: var(--ds-color-cyan-secondary); + --button-secondary-cyan-hover-background: var( + --ds-color-cyan-secondary-hover + ); + --button-secondary-cyan-active-background: var( + --ds-color-cyan-secondary-active + ); + --button-secondary-cyan-default-color: var(--ds-color-cyan-8); + --button-secondary-cyan-hover-color: var(--ds-color-cyan-primary-hover); + --button-secondary-cyan-active-color: var(--ds-color-cyan-primary-active); + --button-secondary-cyan-disabled-color: color-mix( + in srgb, + var(--button-secondary-cyan-default-color) 70%, + transparent + ); + --button-secondary-cyan-default-border: transparent; +} diff --git a/src/shared/designSystem/styles/components/button/text.css b/src/shared/designSystem/styles/components/button/text.css new file mode 100644 index 0000000..deb7207 --- /dev/null +++ b/src/shared/designSystem/styles/components/button/text.css @@ -0,0 +1,49 @@ +:root { + /* BLUE */ + --button-text-blue-default-background: transparent; + --button-text-blue-default-color: var(--ds-color-blue-primary); + --button-text-blue-hover-color: var(--ds-color-blue-primary-hover); + --button-text-blue-active-color: var(--ds-color-blue-primary-active); + --button-text-blue-disabled-color: color-mix( + in srgb, + var(--button-text-blue-default-color) 40%, + transparent + ); + --button-text-blue-default-border: transparent; + + /* DARK */ + --button-text-dark-default-background: transparent; + --button-text-dark-default-color: var(--ds-theme-text-primary); + --button-text-dark-hover-color: var(--ds-theme-text-primary-hover); + --button-text-dark-active-color: var(--ds-theme-text-primary-active); + --button-text-dark-disabled-color: color-mix( + in srgb, + var(--button-text-dark-default-color) 40%, + transparent + ); + --button-text-dark-default-border: transparent; + + /* RED */ + --button-text-red-default-background: transparent; + --button-text-red-default-color: var(--ds-color-red-primary); + --button-text-red-hover-color: var(--ds-color-red-primary-hover); + --button-text-red-active-color: var(--ds-color-red-primary-active); + --button-text-red-disabled-color: color-mix( + in srgb, + var(--button-text-red-default-color) 40%, + transparent + ); + --button-text-red-default-border: transparent; + + /* CYAN */ + --button-text-cyan-default-background: transparent; + --button-text-cyan-default-color: var(--ds-color-cyan-primary); + --button-text-cyan-hover-color: var(--ds-color-cyan-primary-hover); + --button-text-cyan-active-color: var(--ds-color-cyan-primary-active); + --button-text-cyan-disabled-color: color-mix( + in srgb, + var(--button-text-cyan-default-color) 40%, + transparent + ); + --button-text-cyan-default-border: transparent; +} diff --git a/src/shared/designSystem/styles/components/index.css b/src/shared/designSystem/styles/components/index.css new file mode 100644 index 0000000..f5ef16c --- /dev/null +++ b/src/shared/designSystem/styles/components/index.css @@ -0,0 +1 @@ +@import "./button/index.css"; diff --git a/src/shared/designSystem/styles/core/animation.css b/src/shared/designSystem/styles/core/animation.css new file mode 100644 index 0000000..8d178bd --- /dev/null +++ b/src/shared/designSystem/styles/core/animation.css @@ -0,0 +1,20 @@ +:root { + --ds-ease-base-out: cubic-bezier(0.7, 0.3, 0.1, 1); + --ds-ease-base-in: cubic-bezier(0.9, 0, 0.3, 0.7); + --ds-ease-out: cubic-bezier(0.215, 0.61, 0.355, 1); + --ds-ease-in: cubic-bezier(0.55, 0.055, 0.675, 0.19); + --ds-ease-in-out: cubic-bezier(0.46, 0, 0.03, 0.99); + --ds-ease-out-back: cubic-bezier(0.12, 0.4, 0.29, 1.46); + --ds-ease-in-back: cubic-bezier(0.71, -0.46, 0.88, 0.6); + --ds-ease-in-out-back: cubic-bezier(0.71, -0.46, 0.29, 1.46); + --ds-ease-out-circ: cubic-bezier(0.08, 0.82, 0.17, 1); + --ds-ease-in-circ: cubic-bezier(0.6, 0.04, 0.98, 0.34); + --ds-ease-in-out-circ: cubic-bezier(0.4, 0.15, 0.6, 0.85); + --ds-ease-out-quint: cubic-bezier(0.23, 1, 0.32, 1); + --ds-ease-in-quint: cubic-bezier(0.755, 0.05, 0.855, 0.06); + --ds-ease-in-out-quint: cubic-bezier(0.86, 0, 0.07, 1); + + --ds-duration-fast: 160ms; + --ds-duration-base: 220ms; + --ds-duration-slow: 320ms; +} diff --git a/src/shared/designSystem/styles/core/base.css b/src/shared/designSystem/styles/core/base.css new file mode 100644 index 0000000..e0e856b --- /dev/null +++ b/src/shared/designSystem/styles/core/base.css @@ -0,0 +1,51 @@ +html { + scroll-behavior: smooth; +} + +body { + background: var(--ds-theme-background); + color: var(--ds-theme-text-primary); + font-family: var(--ds-font-family-secondary), "Roboto", sans-serif; + line-height: 1.5; + text-rendering: optimizeLegibility; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +a { + color: inherit; + text-decoration: none; +} + +button { + border: 0; + background: transparent; +} + +.theme-bg { + background-color: var(--ds-theme-background); +} + +.theme-surface { + background-color: var(--ds-theme-surface); +} + +.theme-surface-muted { + background-color: var(--ds-theme-surface-muted); +} + +.theme-text { + color: var(--ds-theme-text-primary); +} + +.theme-text-secondary { + color: var(--ds-theme-text-secondary); +} + +.theme-text-muted { + color: var(--ds-theme-text-muted); +} + +.theme-border { + border-color: var(--ds-theme-border); +} diff --git a/src/shared/designSystem/styles/core/colors.css b/src/shared/designSystem/styles/core/colors.css new file mode 100644 index 0000000..d1306c9 --- /dev/null +++ b/src/shared/designSystem/styles/core/colors.css @@ -0,0 +1,118 @@ +:root { + /* gray scale */ + --ds-color-gray-1: #ffffff; + --ds-color-gray-2: #fafafa; + --ds-color-gray-3: #f5f5f5; + --ds-color-gray-4: #f0f0f0; + --ds-color-gray-5: #d9d9d9; + --ds-color-gray-6: #bfbfbf; + --ds-color-gray-7: #8c8c8c; + --ds-color-gray-8: #595959; + --ds-color-gray-9: #434343; + --ds-color-gray-10: #262626; + --ds-color-gray-11: #1f1f1f; + --ds-color-gray-12: #141414; + --ds-color-gray-13: #000000; + + --ds-color-gray-primary: var(--ds-color-gray-12); + --ds-color-gray-primary-hover: var(--ds-color-gray-11); + --ds-color-gray-primary-active: var(--ds-color-gray-10); + --ds-color-gray-secondary: var(--ds-color-gray-5); + --ds-color-gray-secondary-hover: var(--ds-color-gray-4); + --ds-color-gray-secondary-active: var(--ds-color-gray-3); + + /* green scale */ + --ds-color-green-1: #f6ffed; + --ds-color-green-2: #d9f7be; + --ds-color-green-3: #b7eb8f; + --ds-color-green-4: #95de64; + --ds-color-green-5: #73d13d; + --ds-color-green-6: #52c41a; + --ds-color-green-7: #389e0d; + --ds-color-green-8: #237804; + --ds-color-green-9: #135200; + --ds-color-green-10: #092b00; + + --ds-color-green-primary: var(--ds-color-green-6); + --ds-color-green-primary-hover: var(--ds-color-green-7); + --ds-color-green-primary-active: var(--ds-color-green-8); + --ds-color-green-secondary: var(--ds-color-green-3); + --ds-color-green-secondary-hover: var(--ds-color-green-2); + --ds-color-green-secondary-active: var(--ds-color-green-1); + + /* blue scale */ + --ds-color-blue-1: #e6f7ff; + --ds-color-blue-2: #bae7ff; + --ds-color-blue-3: #91d5ff; + --ds-color-blue-4: #69c0ff; + --ds-color-blue-5: #40a9ff; + --ds-color-blue-6: #1890ff; + --ds-color-blue-7: #096dd9; + --ds-color-blue-8: #0050b3; + --ds-color-blue-9: #003a8c; + --ds-color-blue-10: #002766; + + --ds-color-blue-primary: var(--ds-color-blue-6); + --ds-color-blue-primary-hover: var(--ds-color-blue-7); + --ds-color-blue-primary-active: var(--ds-color-blue-8); + --ds-color-blue-secondary: var(--ds-color-blue-3); + --ds-color-blue-secondary-hover: var(--ds-color-blue-2); + --ds-color-blue-secondary-active: var(--ds-color-blue-1); + + /* cyan scale */ + --ds-color-cyan-1: #e6fffb; + --ds-color-cyan-2: #b5f5ec; + --ds-color-cyan-3: #87e8de; + --ds-color-cyan-4: #5cdbd3; + --ds-color-cyan-5: #36cfc9; + --ds-color-cyan-6: #13c2c2; + --ds-color-cyan-7: #08979c; + --ds-color-cyan-8: #006d75; + --ds-color-cyan-9: #00474f; + --ds-color-cyan-10: #002329; + + --ds-color-cyan-primary: var(--ds-color-cyan-5); + --ds-color-cyan-primary-hover: var(--ds-color-cyan-7); + --ds-color-cyan-primary-active: var(--ds-color-cyan-8); + --ds-color-cyan-secondary: var(--ds-color-cyan-3); + --ds-color-cyan-secondary-hover: var(--ds-color-cyan-2); + --ds-color-cyan-secondary-active: var(--ds-color-cyan-1); + + /* orange scale */ + --ds-color-orange-1: #fff7e6; + --ds-color-orange-2: #ffe7ba; + --ds-color-orange-3: #ffd591; + --ds-color-orange-4: #ffc069; + --ds-color-orange-5: #ffa940; + --ds-color-orange-6: #fa8c16; + --ds-color-orange-7: #d46b08; + --ds-color-orange-8: #ad4e00; + --ds-color-orange-9: #873800; + --ds-color-orange-10: #612500; + + --ds-color-orange-primary: var(--ds-color-orange-6); + --ds-color-orange-primary-hover: var(--ds-color-orange-7); + --ds-color-orange-primary-active: var(--ds-color-orange-8); + --ds-color-orange-secondary: var(--ds-color-orange-3); + --ds-color-orange-secondary-hover: var(--ds-color-orange-2); + --ds-color-orange-secondary-active: var(--ds-color-orange-1); + + /* red scale */ + --ds-color-red-1: #fff1f0; + --ds-color-red-2: #ffccc7; + --ds-color-red-3: #ffa39e; + --ds-color-red-4: #ff7875; + --ds-color-red-5: #ff4d4f; + --ds-color-red-6: #f5222d; + --ds-color-red-7: #cf1322; + --ds-color-red-8: #a8071a; + --ds-color-red-9: #820014; + --ds-color-red-10: #5c0011; + + --ds-color-red-primary: var(--ds-color-red-6); + --ds-color-red-primary-hover: var(--ds-color-red-7); + --ds-color-red-primary-active: var(--ds-color-red-8); + --ds-color-red-secondary: var(--ds-color-red-3); + --ds-color-red-secondary-hover: var(--ds-color-red-2); + --ds-color-red-secondary-active: var(--ds-color-red-1); +} diff --git a/src/shared/designSystem/styles/core/fonts.css b/src/shared/designSystem/styles/core/fonts.css new file mode 100644 index 0000000..ee362ea --- /dev/null +++ b/src/shared/designSystem/styles/core/fonts.css @@ -0,0 +1,13 @@ +:root { + --ds-font-family-fallback: + -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, + sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; + --ds-font-family-primary: + "Aeroport-Bold", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, + Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", + "Segoe UI Symbol"; + --ds-font-family-secondary: + "Open Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, + Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", + "Segoe UI Symbol"; +} diff --git a/src/shared/designSystem/styles/core/reset.css b/src/shared/designSystem/styles/core/reset.css new file mode 100644 index 0000000..11d5618 --- /dev/null +++ b/src/shared/designSystem/styles/core/reset.css @@ -0,0 +1,205 @@ +/** +Use a better box model (opinionated). +*/ +*, +::before, +::after { + box-sizing: border-box; +} + +/** +1. Improve consistency of default fonts in all browsers. +2. Correct the line height in all browsers. +3. Prevent adjustments of font size after orientation changes in iOS. +4. Use a more readable tab size (opinionated). +*/ +html { + font-family: + system-ui, "Segoe UI", Roboto, Helvetica, Arial, sans-serif, + "Apple Color Emoji", "Segoe UI Emoji"; /* 1 */ + line-height: 1.15; /* 2 */ + -webkit-text-size-adjust: 100%; /* 3 */ + tab-size: 4; /* 4 */ +} + +/* +Sections +======== +*/ + +/** +Remove the margin in all browsers. +*/ + +body { + margin: 0; +} + +/* +Text-level semantics +==================== +*/ + +/** +Add the correct font weight in Chrome and Safari. +*/ + +b, +strong { + font-weight: bolder; +} + +/** +1. Improve consistency of default fonts in all browsers. +2. Correct the odd 'em' font sizing in all browsers. +*/ + +code, +kbd, +samp, +pre { + font-family: + ui-monospace, SFMono-Regular, Consolas, "Liberation Mono", Menlo, monospace; /* 1 */ + font-size: 1em; /* 2 */ +} + +/** +Add the correct font size in all browsers. +*/ + +small { + font-size: 80%; +} + +/** +Prevent 'sub' and 'sup' elements from affecting the line height in all browsers. +*/ + +sub, +sup { + font-size: 75%; + line-height: 0; + position: relative; + vertical-align: baseline; +} + +sub { + bottom: -0.25em; +} + +sup { + top: -0.5em; +} + +/* +Tabular data +============ +*/ + +/** +Correct table border color inheritance in Chrome and Safari. +(https://issues.chromium.org/issues/40615503, +https://bugs.webkit.org/show_bug.cgi?id=195016) +*/ + +table { + border-color: currentcolor; +} + +/* +Forms +===== +*/ + +/** +1. Change the font styles in all browsers. +2. Remove the margin in Firefox and Safari. +*/ + +button, +input, +optgroup, +select, +textarea { + font-family: inherit; /* 1 */ + font-size: 100%; /* 1 */ + line-height: 1.15; /* 1 */ + margin: 0; /* 2 */ +} + +/** +Correct the inability to style clickable types in iOS and Safari. +*/ + +button, +[type="button"], +[type="reset"], +[type="submit"] { + -webkit-appearance: button; +} + +/** +Remove the padding so developers are not caught out when they zero out 'fieldset' elements in all browsers. +*/ + +legend { + padding: 0; +} + +/** +Add the correct vertical alignment in Chrome and Firefox. +*/ + +progress { + vertical-align: baseline; +} + +/** +Correct the cursor style of increment and decrement buttons in Safari. +*/ + +::-webkit-inner-spin-button, +::-webkit-outer-spin-button { + height: auto; +} + +/** +1. Correct the odd appearance in Chrome and Safari. +2. Correct the outline style in Safari. +*/ + +[type="search"] { + -webkit-appearance: textfield; /* 1 */ + outline-offset: -2px; /* 2 */ +} + +/** +Remove the inner padding in Chrome and Safari on macOS. +*/ + +::-webkit-search-decoration { + -webkit-appearance: none; +} + +/** +1. Correct the inability to style clickable types in iOS and Safari. +2. Change font properties to 'inherit' in Safari. +*/ + +::-webkit-file-upload-button { + -webkit-appearance: button; /* 1 */ + font: inherit; /* 2 */ +} + +/* +Interactive +=========== +*/ + +/* +Add the correct display in Chrome and Safari. +*/ + +summary { + display: list-item; +} diff --git a/src/shared/designSystem/styles/core/sizes.css b/src/shared/designSystem/styles/core/sizes.css new file mode 100644 index 0000000..782110c --- /dev/null +++ b/src/shared/designSystem/styles/core/sizes.css @@ -0,0 +1,39 @@ +:root { + /* content sizes */ + --ds-content-size-16: 16px; + --ds-content-size-20: 20px; + --ds-content-size-24: 24px; + --ds-content-size-28: 28px; + + /* container sizes */ + --ds-container-size-36: 36px; + --ds-container-size-44: 44px; + --ds-container-size-52: 52px; + --ds-container-size-60: 60px; + + /* font sizes */ + --ds-font-size-8: 8px; + --ds-font-size-10: 10px; + --ds-font-size-12: 12px; + --ds-font-size-14: 14px; + --ds-font-size-16: 16px; + --ds-font-size-20: 20px; + + /* border radius sizes */ + --ds-radius-1: 1px; + --ds-radius-2: 2px; + --ds-radius-4: 4px; + --ds-radius-8: 8px; + --ds-radius-12: 12px; + --ds-radius-16: 16px; + --ds-radius-24: 24px; + --ds-radius-36: 36px; + --ds-radius-40: 40px; + + /* icon sizes */ + --ds-icon-size-12: 12px; + --ds-icon-size-16: 16px; + --ds-icon-size-20: 20px; + --ds-icon-size-24: 24px; + --ds-icon-size-28: 28px; +} diff --git a/src/shared/designSystem/styles/core/spaces.css b/src/shared/designSystem/styles/core/spaces.css new file mode 100644 index 0000000..4d4912a --- /dev/null +++ b/src/shared/designSystem/styles/core/spaces.css @@ -0,0 +1,13 @@ +:root { + --ds-space-0: 0; + --ds-space-2: 0.125rem; + --ds-space-4: 0.25rem; + --ds-space-6: 0.375rem; + --ds-space-8: 0.5rem; + --ds-space-12: 0.75rem; + --ds-space-16: 1rem; + --ds-space-20: 1.25rem; + --ds-space-24: 1.5rem; + --ds-space-32: 2rem; + --ds-space-40: 2.5rem; +} diff --git a/src/shared/designSystem/styles/core/theme.css b/src/shared/designSystem/styles/core/theme.css new file mode 100644 index 0000000..9d16166 --- /dev/null +++ b/src/shared/designSystem/styles/core/theme.css @@ -0,0 +1,48 @@ +:root, +[data-theme="light"] { + color-scheme: light; + + --ds-theme-background: var(--ds-color-gray-1); + --ds-theme-surface: var(--ds-color-gray-2); + --ds-theme-surface-muted: var(--ds-color-gray-3); + + --ds-theme-text-primary: var(--ds-color-gray-12); + --ds-theme-text-primary-hover: var(--ds-color-gray-7); + --ds-theme-text-primary-active: var(--ds-color-gray-6); + + --ds-theme-text-primary-inverted: var(--ds-color-gray-1); + --ds-theme-text-primary-inverted-hover: var(--ds-color-gray-5); + --ds-theme-text-primary-inverted-active: var(--ds-color-gray-6); + + --ds-theme-text-secondary: var(--ds-color-gray-8); + --ds-theme-text-muted: var(--ds-color-gray-7); + + --ds-theme-border: var(--ds-color-gray-4); + --ds-theme-border-strong: var(--ds-color-gray-6); + + --ds-theme-danger: var(--ds-color-red-5); +} + +[data-theme="dark"] { + color-scheme: dark; + + --ds-theme-background: var(--ds-color-gray-13); + --ds-theme-surface: var(--ds-color-gray-12); + --ds-theme-surface-muted: var(--ds-color-gray-11); + + --ds-theme-text-primary: var(--ds-color-gray-1); + --ds-theme-text-primary-hover: var(--ds-color-gray-5); + --ds-theme-text-primary-active: var(--ds-color-gray-6); + + --ds-theme-text-primary-inverted: var(--ds-color-gray-12); + --ds-theme-text-primary-inverted-hover: var(--ds-color-gray-5); + --ds-theme-text-primary-inverted-active: var(--ds-color-gray-4); + + --ds-theme-text-secondary: var(--ds-color-gray-5); + --ds-theme-text-muted: var(--ds-color-gray-7); + + --ds-theme-border: var(--ds-color-gray-10); + --ds-theme-border-strong: var(--ds-color-gray-8); + + --ds-theme-danger: var(--ds-color-red-5); +} diff --git a/src/shared/designSystem/styles/core/z-indexes.css b/src/shared/designSystem/styles/core/z-indexes.css new file mode 100644 index 0000000..8c9145c --- /dev/null +++ b/src/shared/designSystem/styles/core/z-indexes.css @@ -0,0 +1,8 @@ +:root { + --ds-z-dropdown: 1060; + --ds-z-sticky: 1020; + --ds-z-fixed: 1030; + --ds-z-modal-backdrop: 1040; + --ds-z-modal: 1050; + --ds-z-tooltip: 1060; +} diff --git a/src/shared/designSystem/styles/global.css b/src/shared/designSystem/styles/global.css new file mode 100644 index 0000000..be1b5dd --- /dev/null +++ b/src/shared/designSystem/styles/global.css @@ -0,0 +1,12 @@ +@import "./core/reset.css"; +@import "./core/fonts.css"; +@import "./core/colors.css"; +@import "./core/theme.css"; + +@import "./core/base.css"; +@import "./core/animation.css"; +@import "./core/sizes.css"; +@import "./core/spaces.css"; +@import "./core/z-indexes.css"; + +@import "./components"; diff --git a/src/shared/ui/Button/index.ts b/src/shared/ui/Button/index.ts deleted file mode 100644 index 6d33e92..0000000 --- a/src/shared/ui/Button/index.ts +++ /dev/null @@ -1 +0,0 @@ -export { default } from "./ui/Button.astro"; diff --git a/src/shared/ui/Button/ui/Button.astro b/src/shared/ui/Button/ui/Button.astro deleted file mode 100644 index 8b00050..0000000 --- a/src/shared/ui/Button/ui/Button.astro +++ /dev/null @@ -1,118 +0,0 @@ ---- -import type { HTMLAttributes } from "astro/types"; - -type Variant = "primary" | "secondary" | "ghost" | "danger"; -type Size = "sm" | "md" | "lg"; - -type CommonProps = { - variant?: Variant; - size?: Size; - fullWidth?: boolean; - loading?: boolean; - disabled?: boolean; - class?: string; -}; - -type ButtonAsButtonProps = CommonProps & - Omit, "class" | "disabled"> & { - as?: "button"; - type?: "button" | "submit" | "reset"; - href?: never; - }; - -type ButtonAsLinkProps = CommonProps & - Omit, "class" | "href"> & { - as: "a"; - href: string; - type?: never; - }; - -type Props = ButtonAsButtonProps | ButtonAsLinkProps; - -const { - as = "button", - variant = "primary", - size = "md", - fullWidth = false, - loading = false, - disabled = false, - class: className = "", - ...attrs -} = Astro.props as Props; - -const isLink = as === "a"; -const isDisabled = disabled || loading; - -const baseClass = - "inline-flex shrink-0 items-center justify-center gap-2 rounded-md border font-medium transition-colors duration-200 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-cyan-400/60 focus-visible:ring-offset-2 focus-visible:ring-offset-black disabled:pointer-events-none disabled:opacity-50"; - -const variantClassMap: Record = { - primary: - "border-cyan-400 bg-cyan-400 text-black hover:border-cyan-300 hover:bg-cyan-300", - secondary: - "border-zinc-700 bg-zinc-900 text-white hover:border-zinc-600 hover:bg-zinc-800", - ghost: - "border-transparent bg-transparent text-zinc-200 hover:bg-white/5 hover:text-white", - danger: - "border-red-500 bg-red-500 text-white hover:border-red-400 hover:bg-red-400", -}; - -const sizeClassMap: Record = { - sm: "h-9 px-3 text-sm", - md: "h-10 px-4 text-sm", - lg: "h-11 px-5 text-base", -}; - -const widthClass = fullWidth ? "w-full" : ""; -const loadingClass = loading ? "cursor-wait" : ""; - -const classes = [ - baseClass, - variantClassMap[variant], - sizeClassMap[size], - widthClass, - loadingClass, - className, -] - .filter(Boolean) - .join(" "); ---- - -{ - isLink ? ( - )} - href={(Astro.props as ButtonAsLinkProps).href} - class={classes} - aria-disabled={isDisabled ? "true" : undefined} - data-loading={loading ? "true" : undefined} - tabindex={isDisabled ? -1 : undefined} - > - {loading && ( - - ) : ( - - ) - } \ No newline at end of file diff --git a/src/shared/ui/Button/ui/Button.stories.tsx b/src/shared/ui/Button/ui/Button.stories.tsx deleted file mode 100644 index 4bdcf21..0000000 --- a/src/shared/ui/Button/ui/Button.stories.tsx +++ /dev/null @@ -1,116 +0,0 @@ -import Button from "./Button.astro"; - -export default { - title: "shared/ui/Button", - component: Button, - args: { - children: "Button", - variant: "primary", - size: "md", - fullWidth: false, - loading: false, - disabled: false, - }, - argTypes: { - as: { - control: "radio", - options: ["button", "a"], - }, - variant: { - control: "select", - options: ["primary", "secondary", "ghost", "danger"], - }, - size: { - control: "select", - options: ["sm", "md", "lg"], - }, - fullWidth: { - control: "boolean", - }, - loading: { - control: "boolean", - }, - disabled: { - control: "boolean", - }, - type: { - control: "select", - options: ["button", "submit", "reset"], - }, - href: { - control: "text", - }, - }, -}; - -export const Primary = { - args: { - children: "Primary button", - variant: "primary", - }, -}; - -export const Secondary = { - args: { - children: "Secondary button", - variant: "secondary", - }, -}; - -export const Ghost = { - args: { - children: "Ghost button", - variant: "ghost", - }, -}; - -export const Danger = { - args: { - children: "Delete", - variant: "danger", - }, -}; - -export const Loading = { - args: { - children: "Loading...", - loading: true, - }, -}; - -export const Disabled = { - args: { - children: "Disabled", - disabled: true, - }, -}; - -export const AsLink = { - args: { - as: "a", - href: "/demo", - children: "Open demo", - variant: "ghost", - }, -}; - -export const FullWidth = { - args: { - children: "Continue", - fullWidth: true, - }, -}; - -export const Small = { - args: { - children: "Small", - size: "sm", - }, -}; - -export const Large = { - args: { - children: "Large", - size: "lg", - }, -}; diff --git a/tsconfig.json b/tsconfig.json index cdf292f..e6b901a 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,7 +1,7 @@ { "extends": "astro/tsconfigs/strict", "compilerOptions": { - "baseUrl": ".", + "baseUrl": "./", "paths": { "@app/*": ["src/app/*"], "@pageModules/*": ["src/pageModules/*"], @@ -13,8 +13,11 @@ }, "strict": true, "noUnusedLocals": true, - "noUnusedParameters": true + "noUnusedParameters": true, + "forceConsistentCasingInFileNames": true, + "jsx": "preserve", + "jsxImportSource": "solid-js" }, - "include": [".astro/types.d.ts", "**/*"], + "include": [".astro/types.d.ts", ".storybook/**/*", "./**/*"], "exclude": ["dist"] }