From 2343219c46ce86d149e56f2d48eea89f56e3ffcb Mon Sep 17 00:00:00 2001 From: Paulo Vareiro Date: Mon, 11 Aug 2025 12:56:07 +0100 Subject: [PATCH 001/292] tailwind v4 without theme --- packages/components/package.json | 3 +- packages/components/postcss.config.cjs | 5 +- .../esbuild-plugin-lit-tailwind-and-minify.js | 11 +- packages/components/scripts/make-css.js | 12 +- .../components/src/internal/solid-element.ts | 11 +- packages/components/src/solid-components.css | 5 +- packages/components/tailwind.css | 4 + .../addons/theme-generator/preview.ts | 5 +- .../addons/theme-generator/withGlobals.ts | 103 +-- packages/docs/.storybook/preview.css | 38 +- packages/docs/package.json | 7 +- packages/docs/vite.config.js | 22 +- pnpm-lock.yaml | 696 +++++++++++++----- 13 files changed, 590 insertions(+), 332 deletions(-) create mode 100644 packages/components/tailwind.css diff --git a/packages/components/package.json b/packages/components/package.json index 495e9e7a82..e7116ac44e 100644 --- a/packages/components/package.json +++ b/packages/components/package.json @@ -83,6 +83,7 @@ "@open-wc/testing": "^4.0.0", "@open-wc/testing-helpers": "^3.0.1", "@solid-design-system/versioning": "workspace:^", + "@tailwindcss/postcss": "^4.1.11", "@tarekraafat/autocomplete.js": "^10.2.9", "@types/mocha": "^10.0.10", "@types/sinon": "^17.0.4", @@ -116,7 +117,7 @@ "prettier": "^3.6.2", "recursive-copy": "^2.0.14", "sinon": "^21.0.0", - "tailwindcss": "^3.4.17", + "tailwindcss": "^4.1.11", "typescript": "5.8.3", "user-agent-data-types": "^0.4.2" }, diff --git a/packages/components/postcss.config.cjs b/packages/components/postcss.config.cjs index b063a5f4ab..6b56317c54 100644 --- a/packages/components/postcss.config.cjs +++ b/packages/components/postcss.config.cjs @@ -1,8 +1,5 @@ module.exports = { plugins: { - 'postcss-import': {}, - 'tailwindcss/nesting': {}, - tailwindcss: {}, - autoprefixer: {} + '@tailwindcss/postcss': {} } }; diff --git a/packages/components/scripts/esbuild-plugin-lit-tailwind-and-minify.js b/packages/components/scripts/esbuild-plugin-lit-tailwind-and-minify.js index 3c7fa9f619..471a803235 100644 --- a/packages/components/scripts/esbuild-plugin-lit-tailwind-and-minify.js +++ b/packages/components/scripts/esbuild-plugin-lit-tailwind-and-minify.js @@ -4,8 +4,7 @@ import autoprefixer from 'autoprefixer'; import cssnano from 'cssnano'; import fs from 'fs/promises'; import postcss from 'postcss'; -import tailwindcss from 'tailwindcss'; -import tailwindcssNesting from 'tailwindcss/nesting/index.js'; +import tailwindcss from '@tailwindcss/postcss'; /** * Escapes tailwind special characters in a string and wraps it in a CSS template literal. @@ -23,13 +22,7 @@ export async function processCssTags(source) { const [fullMatch, cssContent] = match; try { - const result = await postcss([ - atImportPlugin({ allowDuplicates: false }), - tailwindcssNesting, - tailwindcss, - autoprefixer, - cssnano - ]) + const result = await postcss([atImportPlugin({ allowDuplicates: false }), tailwindcss, autoprefixer, cssnano]) .process(cssContent, { from: undefined }) .then(result => result.css); diff --git a/packages/components/scripts/make-css.js b/packages/components/scripts/make-css.js index 2a7a6e603c..219963aab2 100644 --- a/packages/components/scripts/make-css.js +++ b/packages/components/scripts/make-css.js @@ -9,21 +9,14 @@ import autoprefixer from 'autoprefixer'; import cssnano from 'cssnano'; import fs from 'fs/promises'; import postcss from 'postcss'; -import tailwindcss from 'tailwindcss'; -import tailwindcssNesting from 'tailwindcss/nesting/index.js'; +import tailwindcss from '@tailwindcss/postcss'; import theme from './postcss-token-variables.js'; (async () => { const lite = process.argv.includes('--lite'); const css = await fs.readFile('./src/solid-components.css', 'utf8'); - const result = await postcss([ - atImportPlugin({ allowDuplicates: false }), - tailwindcssNesting, - tailwindcss, - autoprefixer, - theme - ]) + const result = await postcss([atImportPlugin({ allowDuplicates: false }), tailwindcss, autoprefixer, theme]) .process(css, { from: undefined }) .then(result => result.css); @@ -33,7 +26,6 @@ import theme from './postcss-token-variables.js'; const minifiedResult = await postcss([ atImportPlugin({ allowDuplicates: false }), - tailwindcssNesting, tailwindcss, autoprefixer, theme, diff --git a/packages/components/src/internal/solid-element.ts b/packages/components/src/internal/solid-element.ts index 5623f3208c..dee8d5ffd1 100644 --- a/packages/components/src/internal/solid-element.ts +++ b/packages/components/src/internal/solid-element.ts @@ -2,6 +2,8 @@ import { cssVar, parseDuration } from './animate'; import { LitElement, unsafeCSS } from 'lit'; import { property } from 'lit/decorators.js'; +import style from '../../tailwind.css?inline'; + const css = unsafeCSS; const tokenProcessors: Record string | number> = { @@ -22,11 +24,6 @@ export default class SolidElement extends LitElement { @import url('../styles/src/modules/paragraph.css'); @import url('../styles/src/modules/headline.css'); - /* TailwindCSS directives have to come after imports */ - @tailwind base; - @tailwind components; - @tailwind utilities; - :host { --tw-gradient-from-position: 0%; --tw-gradient-to-position: 100%; @@ -43,7 +40,9 @@ export default class SolidElement extends LitElement { [hidden] { display: none !important; } - ` + `, + /* TailwindCSS directives have to come after imports */ + css(style) ]; /** Emits a custom event with more convenient defaults. */ diff --git a/packages/components/src/solid-components.css b/packages/components/src/solid-components.css index ce4407af94..47365ec6a7 100644 --- a/packages/components/src/solid-components.css +++ b/packages/components/src/solid-components.css @@ -6,7 +6,8 @@ @solid variables; -.sd-scroll-lock { +/* TODO: Uncomment code */ +/* .sd-scroll-lock { padding-right: var(--sd-scroll-lock-size) !important; overflow: hidden !important; } @@ -32,4 +33,4 @@ sd-notification::part(content) { @apply border-white; } -} +} */ diff --git a/packages/components/tailwind.css b/packages/components/tailwind.css new file mode 100644 index 0000000000..2a9d4ecc73 --- /dev/null +++ b/packages/components/tailwind.css @@ -0,0 +1,4 @@ +@import 'tailwindcss'; +@source './src'; + +/* TODO: Generate theme from figma variables */ diff --git a/packages/docs/.storybook/addons/theme-generator/preview.ts b/packages/docs/.storybook/addons/theme-generator/preview.ts index 527b6f5a68..3652f75792 100644 --- a/packages/docs/.storybook/addons/theme-generator/preview.ts +++ b/packages/docs/.storybook/addons/theme-generator/preview.ts @@ -1,9 +1,10 @@ import type { Renderer, ProjectAnnotations } from 'storybook/internal/types'; import { PARAM_KEY } from './constants'; -import { withGlobals } from './withGlobals'; +// TODO: Uncomment code +// import { withGlobals } from './withGlobals'; const preview: ProjectAnnotations = { - decorators: [withGlobals], + decorators: [], initialGlobals: { [PARAM_KEY]: false, [PARAM_KEY + '_STATE']: '' diff --git a/packages/docs/.storybook/addons/theme-generator/withGlobals.ts b/packages/docs/.storybook/addons/theme-generator/withGlobals.ts index c3654f3074..58f965ef5b 100644 --- a/packages/docs/.storybook/addons/theme-generator/withGlobals.ts +++ b/packages/docs/.storybook/addons/theme-generator/withGlobals.ts @@ -1,51 +1,52 @@ -import type { Renderer, PartialStoryFn as StoryFunction, StoryContext } from 'storybook/internal/types'; -import { useEffect, useGlobals } from 'storybook/preview-api'; -import { PARAM_KEY, PANEL_DEFAULTS } from './constants'; -import theme from 'tailwind-theme'; -import { calculateColorsAsCss } from '@solid-design-system/theming'; - -export const withGlobals = (StoryFn: StoryFunction, context: StoryContext) => { - const [globals] = useGlobals(); - - const panelStateStr = globals[PARAM_KEY + '_STATE']; - const panelState = panelStateStr ? JSON.parse(panelStateStr) : null; - - const customThemeActive = globals[PARAM_KEY]; - let customTheme = calculateColorsAsCss( - panelState?.colors || PANEL_DEFAULTS.colors, - theme, - panelState?.useNormalizedLuminanceMap || PANEL_DEFAULTS.useNormalizedLuminanceMap, - panelState?.useForcedShades || PANEL_DEFAULTS.useForcedShades - ); - - const isInDocs = context.viewMode === 'docs'; - - useEffect(() => { - const selector = isInDocs ? `#anchor--${context.id} .sb-story` : '#storybook-root'; - displayToolState(selector, customThemeActive, customTheme); - }, [customThemeActive, customTheme]); - - return StoryFn(); -}; - -function displayToolState(selector: string, customThemeActive: boolean, customTheme: string) { - const styleTagId = 'dynamic-css-variables'; - let styleTag = document.getElementById(styleTagId) as HTMLStyleElement; - - // If customThemeActive is false, remove the style tag if it exists - if (!customThemeActive) { - if (styleTag) { - styleTag.remove(); - } - return; // Exit early - } - - // If customThemeActive is true, update or create the style tag - if (!styleTag) { - styleTag = document.createElement('style'); - styleTag.id = styleTagId; - document.head.appendChild(styleTag); - } - - styleTag.innerHTML = customTheme; -} +// TODO: Uncoment code +// import type { Renderer, PartialStoryFn as StoryFunction, StoryContext } from 'storybook/internal/types'; +// import { useEffect, useGlobals } from 'storybook/preview-api'; +// import { PARAM_KEY, PANEL_DEFAULTS } from './constants'; +// // import theme from 'tailwind-theme'; +// import { calculateColorsAsCss } from '@solid-design-system/theming'; + +// export const withGlobals = (StoryFn: StoryFunction, context: StoryContext) => { +// const [globals] = useGlobals(); + +// const panelStateStr = globals[PARAM_KEY + '_STATE']; +// const panelState = panelStateStr ? JSON.parse(panelStateStr) : null; + +// const customThemeActive = globals[PARAM_KEY]; +// let customTheme = calculateColorsAsCss( +// panelState?.colors || PANEL_DEFAULTS.colors, +// theme, +// panelState?.useNormalizedLuminanceMap || PANEL_DEFAULTS.useNormalizedLuminanceMap, +// panelState?.useForcedShades || PANEL_DEFAULTS.useForcedShades +// ); + +// const isInDocs = context.viewMode === 'docs'; + +// useEffect(() => { +// const selector = isInDocs ? `#anchor--${context.id} .sb-story` : '#storybook-root'; +// displayToolState(selector, customThemeActive, customTheme); +// }, [customThemeActive, customTheme]); + +// return StoryFn(); +// }; + +// function displayToolState(selector: string, customThemeActive: boolean, customTheme: string) { +// const styleTagId = 'dynamic-css-variables'; +// let styleTag = document.getElementById(styleTagId) as HTMLStyleElement; + +// // If customThemeActive is false, remove the style tag if it exists +// if (!customThemeActive) { +// if (styleTag) { +// styleTag.remove(); +// } +// return; // Exit early +// } + +// // If customThemeActive is true, update or create the style tag +// if (!styleTag) { +// styleTag = document.createElement('style'); +// styleTag.id = styleTagId; +// document.head.appendChild(styleTag); +// } + +// styleTag.innerHTML = customTheme; +// } diff --git a/packages/docs/.storybook/preview.css b/packages/docs/.storybook/preview.css index f00d63b6b0..74ba05039d 100644 --- a/packages/docs/.storybook/preview.css +++ b/packages/docs/.storybook/preview.css @@ -1,22 +1,18 @@ @import url('../../components/src/solid-components.css'); - -@tailwind base; -@tailwind components; -@tailwind utilities; - +/* TODO: Uncomment code */ /* Lists */ -.sbdocs .sbdocs-content ol { +/* .sbdocs .sbdocs-content ol { @apply !list-decimal; -} +} */ /* Links */ -.sbdocs.sbdocs-a, +/* .sbdocs.sbdocs-a, .sbdocs .sbdocs-content a:not(:has(code)):not(:where(#root-inner *, #storybook-docs *)) { @apply underline transition-colors text-primary hover:text-primary-500 active:text-primary-800; -} +} */ /* Outline on focus visible */ -.sbdocs.sbdocs-a:focus-visible, +/* .sbdocs.sbdocs-a:focus-visible, .sbdocs .sbdocs-content a:not(:where(#root-inner *, #storybook-docs *)):focus-visible, .sbdocs .toc-list .toc-list-item a:focus-visible { @apply outline outline-2 outline-offset-2 outline-primary; @@ -24,18 +20,18 @@ div[data-radix-scroll-area-viewport]:focus-visible { @apply outline -outline-offset-2 outline-2 outline-primary; -} +} */ /* Color palettes */ -.sbdocs .docblock-colorpalette { +/* .sbdocs .docblock-colorpalette { div[title], > div:first-child { @apply text-neutral-700; } -} +} */ /* Right-side headline anchors */ -.sbdocs.sbdocs-wrapper .toc-wrapper > .toc-list { +/* .sbdocs.sbdocs-wrapper .toc-wrapper > .toc-list { @apply border-l border-l-neutral-400; } @@ -53,10 +49,10 @@ div[data-radix-scroll-area-viewport]:focus-visible { a { @apply text-primary; } -} +} */ /* Tables */ -.sbdocs .sbdocs-content table:not(.sd-table) { +/* .sbdocs .sbdocs-content table:not(.sd-table) { tr, td { @apply border-neutral-400; @@ -65,15 +61,15 @@ div[data-radix-scroll-area-viewport]:focus-visible { tr:nth-of-type(2n) { @apply bg-neutral-100; } -} +} */ /* Blockquotes */ -.sbdocs .sbdocs-content blockquote { +/* .sbdocs .sbdocs-content blockquote { @apply border-accent; -} +} */ /* Code */ -.sbdocs .language-css, +/* .sbdocs .language-css, .sbdocs .language-js { .token.property, .token.attr-name { @@ -90,4 +86,4 @@ div[data-radix-scroll-area-viewport]:focus-visible { .sbdocs .token.comment { @apply !text-success; -} +} */ diff --git a/packages/docs/package.json b/packages/docs/package.json index 8d8021ffc4..326d422c81 100644 --- a/packages/docs/package.json +++ b/packages/docs/package.json @@ -47,9 +47,11 @@ "@open-wc/testing-helpers": "^3.0.1", "@rollup/pluginutils": "^5.2.0", "@solid-design-system/theming": "workspace:*", + "@storybook/addon-docs": "^9.0.15", "@storybook/addon-links": "^9.1.1", "@storybook/test-runner": "^0.23.0", "@storybook/web-components-vite": "^9.1.1", + "@tailwindcss/vite": "^4.1.11", "@tarekraafat/autocomplete.js": "^10.2.9", "autoprefixer": "^10.4.21", "axe-html-reporter": "^2.2.11", @@ -71,7 +73,7 @@ "react": "^19.1.1", "react-dom": "^19.1.1", "storybook": "^9.1.1", - "tailwindcss": "^3.4.17", + "tailwindcss": "^4.1.11", "typescript": "5.8.3", "user-agent-data-types": "^0.4.2", "vite": "^7.0.0", @@ -79,7 +81,6 @@ "vite-plugin-cem": "^0.8.3", "vite-tsconfig-paths": "^5.1.4", "wait-on": "^8.0.3", - "wc-storybook-helpers": "1.5.3", - "@storybook/addon-docs": "^9.0.15" + "wc-storybook-helpers": "1.5.3" } } diff --git a/packages/docs/vite.config.js b/packages/docs/vite.config.js index 2422fba0f1..3e29c852f7 100644 --- a/packages/docs/vite.config.js +++ b/packages/docs/vite.config.js @@ -1,20 +1,13 @@ import { replaceCodePlugin as ViteReplaceCodePlugin } from 'vite-plugin-replace'; -import atImportPlugin from 'postcss-import'; -import autoprefixer from 'autoprefixer'; import componentsPackageJson from '../components/package.json'; import customElementConfig from '../components/custom-elements-manifest.config.js'; import placeholdersPackageJson from '../placeholders/package.json'; -import postcssTokenVariables from '../components/scripts/postcss-token-variables.js'; import stylesPackageJson from '../styles/package.json'; -import tailwindcss from 'tailwindcss'; -import tailwindcssNesting from 'tailwindcss/nesting/index.js'; import tokensPackageJson from '../tokens/package.json'; import VitePluginCreateEmptyCemIfNotExisting from './scripts/vite-plugin-create-empty-cem-if-not-existing'; import VitePluginCustomElementsManifest from 'vite-plugin-cem'; -import vitePluginExtractTailwindTheme from './scripts/vite-plugin-extract-tailwind-theme.js'; import VitePluginFetchIconsFromCdn from './scripts/vite-plugin-fetch-icons-from-cdn'; import VitePluginGetPlaywrightVersion from './scripts/vite-plugin-get-playwright-version'; -import VitePluginGetTailwindTheme from './scripts/vite-plugin-get-tailwind-theme'; import VitePluginLitTailwind from './scripts/vite-plugin-lit-tailwind.js'; import VitePluginSolidStyles from './scripts/vite-plugin-solid-styles/index.js'; @@ -35,9 +28,7 @@ export default () => { srcDir: '../styles/src' }), VitePluginGetPlaywrightVersion(), - VitePluginGetTailwindTheme(), VitePluginCreateEmptyCemIfNotExisting(), - vitePluginExtractTailwindTheme(), VitePluginCustomElementsManifest({ ...customElementConfig, files: ['../components/src/**/!(*.stories|*.spec|*.test|*.style).ts'], @@ -75,17 +66,6 @@ export default () => { } ] }) - ], - css: { - postcss: { - plugins: [ - atImportPlugin({ allowDuplicates: false }), - tailwindcssNesting, - tailwindcss, - autoprefixer, - postcssTokenVariables - ] - } - } + ] }; }; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index d18c101df7..df93548b7c 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -21,7 +21,7 @@ importers: version: 2.29.5 '@eslint/compat': specifier: ^1.3.1 - version: 1.3.1(eslint@9.32.0(jiti@1.21.7)) + version: 1.3.1(eslint@9.32.0(jiti@2.5.1)) '@eslint/eslintrc': specifier: ^3.3.1 version: 3.3.1 @@ -36,43 +36,43 @@ importers: version: link:packages/eslint-plugin '@typescript-eslint/eslint-plugin': specifier: ^8.39.0 - version: 8.39.0(@typescript-eslint/parser@8.39.0(eslint@9.32.0(jiti@1.21.7))(typescript@5.9.2))(eslint@9.32.0(jiti@1.21.7))(typescript@5.9.2) + version: 8.39.0(@typescript-eslint/parser@8.39.0(eslint@9.32.0(jiti@2.5.1))(typescript@5.9.2))(eslint@9.32.0(jiti@2.5.1))(typescript@5.9.2) '@typescript-eslint/parser': specifier: ^8.39.0 - version: 8.39.0(eslint@9.32.0(jiti@1.21.7))(typescript@5.9.2) + version: 8.39.0(eslint@9.32.0(jiti@2.5.1))(typescript@5.9.2) changesets-changelog-clean: specifier: ^1.3.0 version: 1.3.0 eslint: specifier: ^9.32.0 - version: 9.32.0(jiti@1.21.7) + version: 9.32.0(jiti@2.5.1) eslint-config-prettier: specifier: ^10.1.8 - version: 10.1.8(eslint@9.32.0(jiti@1.21.7)) + version: 10.1.8(eslint@9.32.0(jiti@2.5.1)) eslint-plugin-chai-expect: specifier: ^3.1.0 - version: 3.1.0(eslint@9.32.0(jiti@1.21.7)) + version: 3.1.0(eslint@9.32.0(jiti@2.5.1)) eslint-plugin-chai-friendly: specifier: ^1.1.0 - version: 1.1.0(eslint@9.32.0(jiti@1.21.7)) + version: 1.1.0(eslint@9.32.0(jiti@2.5.1)) eslint-plugin-import: specifier: ^2.32.0 - version: 2.32.0(@typescript-eslint/parser@8.39.0(eslint@9.32.0(jiti@1.21.7))(typescript@5.9.2))(eslint@9.32.0(jiti@1.21.7)) + version: 2.32.0(@typescript-eslint/parser@8.39.0(eslint@9.32.0(jiti@2.5.1))(typescript@5.9.2))(eslint@9.32.0(jiti@2.5.1)) eslint-plugin-lit: specifier: ^2.1.1 - version: 2.1.1(eslint@9.32.0(jiti@1.21.7)) + version: 2.1.1(eslint@9.32.0(jiti@2.5.1)) eslint-plugin-lit-a11y: specifier: ^5.1.1 - version: 5.1.1(eslint@9.32.0(jiti@1.21.7)) + version: 5.1.1(eslint@9.32.0(jiti@2.5.1)) eslint-plugin-sort-imports-es6-autofix: specifier: ^0.6.0 - version: 0.6.0(eslint@9.32.0(jiti@1.21.7)) + version: 0.6.0(eslint@9.32.0(jiti@2.5.1)) eslint-plugin-storybook: specifier: ^9.1.1 - version: 9.1.1(eslint@9.32.0(jiti@1.21.7))(storybook@9.1.1(@testing-library/dom@10.4.0)(prettier@3.6.2)(vite@7.0.6(@types/node@24.2.0)(jiti@1.21.7)(tsx@4.19.2)(yaml@2.8.0)))(typescript@5.9.2) + version: 9.1.1(eslint@9.32.0(jiti@2.5.1))(storybook@9.1.1(@testing-library/dom@10.4.0)(prettier@3.6.2)(vite@7.0.6(@types/node@24.2.0)(jiti@2.5.1)(lightningcss@1.30.1)(tsx@4.19.2)(yaml@2.8.0)))(typescript@5.9.2) eslint-plugin-wc: specifier: ^3.0.1 - version: 3.0.1(eslint@9.32.0(jiti@1.21.7)) + version: 3.0.1(eslint@9.32.0(jiti@2.5.1)) globals: specifier: ^16.3.0 version: 16.3.0 @@ -112,7 +112,7 @@ importers: version: 0.10.4 '@mariohamann/tailwindcss-var': specifier: github:mariohamann/tailwindcss-var - version: https://codeload.github.com/mariohamann/tailwindcss-var/tar.gz/671cedc8890c64d3a54173513f5cb9d6dea4aaf1(tailwindcss@3.4.17(patch_hash=cca1bbc79af6902b0fdf11a8edc6eb619e60a0015e27e5c54077b18faa12b5e2)(ts-node@10.9.2(@swc/core@1.12.1)(@types/node@24.2.0)(typescript@5.8.3))) + version: https://codeload.github.com/mariohamann/tailwindcss-var/tar.gz/671cedc8890c64d3a54173513f5cb9d6dea4aaf1(tailwindcss@4.1.11) '@open-wc/testing': specifier: ^4.0.0 version: 4.0.0 @@ -122,6 +122,9 @@ importers: '@solid-design-system/versioning': specifier: workspace:^ version: link:../versioning + '@tailwindcss/postcss': + specifier: ^4.1.11 + version: 4.1.11 '@tarekraafat/autocomplete.js': specifier: ^10.2.9 version: 10.2.9 @@ -222,8 +225,8 @@ importers: specifier: ^21.0.0 version: 21.0.0 tailwindcss: - specifier: ^3.4.17 - version: 3.4.17(patch_hash=cca1bbc79af6902b0fdf11a8edc6eb619e60a0015e27e5c54077b18faa12b5e2)(ts-node@10.9.2(@swc/core@1.12.1)(@types/node@24.2.0)(typescript@5.8.3)) + specifier: ^4.1.11 + version: 4.1.11 typescript: specifier: 5.8.3 version: 5.8.3 @@ -235,7 +238,7 @@ importers: dependencies: '@storybook/addon-a11y': specifier: ^9.1.1 - version: 9.1.1(storybook@9.1.1(@testing-library/dom@10.4.0)(prettier@3.6.2)(vite@7.0.6(@types/node@24.2.0)(jiti@1.21.7)(tsx@4.19.2)(yaml@2.8.0))) + version: 9.1.1(storybook@9.1.1(@testing-library/dom@10.4.0)(prettier@3.6.2)(vite@7.0.6(@types/node@24.2.0)(jiti@2.5.1)(lightningcss@1.30.1)(tsx@4.19.2)(yaml@2.8.0))) classix: specifier: ^2.2.2 version: 2.2.2 @@ -247,7 +250,7 @@ importers: version: 3.3.1 vite-plugin-replace: specifier: ^0.1.1 - version: 0.1.1(vite@7.0.6(@types/node@24.2.0)(jiti@1.21.7)(tsx@4.19.2)(yaml@2.8.0)) + version: 0.1.1(vite@7.0.6(@types/node@24.2.0)(jiti@2.5.1)(lightningcss@1.30.1)(tsx@4.19.2)(yaml@2.8.0)) devDependencies: '@open-wc/testing-helpers': specifier: ^3.0.1 @@ -260,16 +263,19 @@ importers: version: link:../theming '@storybook/addon-docs': specifier: ^9.0.15 - version: 9.1.1(@types/react@19.0.8)(storybook@9.1.1(@testing-library/dom@10.4.0)(prettier@3.6.2)(vite@7.0.6(@types/node@24.2.0)(jiti@1.21.7)(tsx@4.19.2)(yaml@2.8.0))) + version: 9.1.1(@types/react@19.0.8)(storybook@9.1.1(@testing-library/dom@10.4.0)(prettier@3.6.2)(vite@7.0.6(@types/node@24.2.0)(jiti@2.5.1)(lightningcss@1.30.1)(tsx@4.19.2)(yaml@2.8.0))) '@storybook/addon-links': specifier: ^9.1.1 - version: 9.1.1(react@19.1.1)(storybook@9.1.1(@testing-library/dom@10.4.0)(prettier@3.6.2)(vite@7.0.6(@types/node@24.2.0)(jiti@1.21.7)(tsx@4.19.2)(yaml@2.8.0))) + version: 9.1.1(react@19.1.1)(storybook@9.1.1(@testing-library/dom@10.4.0)(prettier@3.6.2)(vite@7.0.6(@types/node@24.2.0)(jiti@2.5.1)(lightningcss@1.30.1)(tsx@4.19.2)(yaml@2.8.0))) '@storybook/test-runner': specifier: ^0.23.0 - version: 0.23.0(@types/node@24.2.0)(storybook@9.1.1(@testing-library/dom@10.4.0)(prettier@3.6.2)(vite@7.0.6(@types/node@24.2.0)(jiti@1.21.7)(tsx@4.19.2)(yaml@2.8.0)))(ts-node@10.9.2(@swc/core@1.12.1)(@types/node@24.2.0)(typescript@5.8.3)) + version: 0.23.0(@types/node@24.2.0)(storybook@9.1.1(@testing-library/dom@10.4.0)(prettier@3.6.2)(vite@7.0.6(@types/node@24.2.0)(jiti@2.5.1)(lightningcss@1.30.1)(tsx@4.19.2)(yaml@2.8.0)))(ts-node@10.9.2(@swc/core@1.12.1)(@types/node@24.2.0)(typescript@5.8.3)) '@storybook/web-components-vite': specifier: ^9.1.1 - version: 9.1.1(lit@3.3.1)(storybook@9.1.1(@testing-library/dom@10.4.0)(prettier@3.6.2)(vite@7.0.6(@types/node@24.2.0)(jiti@1.21.7)(tsx@4.19.2)(yaml@2.8.0)))(vite@7.0.6(@types/node@24.2.0)(jiti@1.21.7)(tsx@4.19.2)(yaml@2.8.0)) + version: 9.1.1(lit@3.3.1)(storybook@9.1.1(@testing-library/dom@10.4.0)(prettier@3.6.2)(vite@7.0.6(@types/node@24.2.0)(jiti@2.5.1)(lightningcss@1.30.1)(tsx@4.19.2)(yaml@2.8.0)))(vite@7.0.6(@types/node@24.2.0)(jiti@2.5.1)(lightningcss@1.30.1)(tsx@4.19.2)(yaml@2.8.0)) + '@tailwindcss/vite': + specifier: ^4.1.11 + version: 4.1.11(vite@7.0.6(@types/node@24.2.0)(jiti@2.5.1)(lightningcss@1.30.1)(tsx@4.19.2)(yaml@2.8.0)) '@tarekraafat/autocomplete.js': specifier: ^10.2.9 version: 10.2.9 @@ -332,10 +338,10 @@ importers: version: 19.1.1(react@19.1.1) storybook: specifier: ^9.1.1 - version: 9.1.1(@testing-library/dom@10.4.0)(prettier@3.6.2)(vite@7.0.6(@types/node@24.2.0)(jiti@1.21.7)(tsx@4.19.2)(yaml@2.8.0)) + version: 9.1.1(@testing-library/dom@10.4.0)(prettier@3.6.2)(vite@7.0.6(@types/node@24.2.0)(jiti@2.5.1)(lightningcss@1.30.1)(tsx@4.19.2)(yaml@2.8.0)) tailwindcss: - specifier: ^3.4.17 - version: 3.4.17(patch_hash=cca1bbc79af6902b0fdf11a8edc6eb619e60a0015e27e5c54077b18faa12b5e2)(ts-node@10.9.2(@swc/core@1.12.1)(@types/node@24.2.0)(typescript@5.8.3)) + specifier: ^4.1.11 + version: 4.1.11 typescript: specifier: 5.8.3 version: 5.8.3 @@ -344,16 +350,16 @@ importers: version: 0.4.2 vite: specifier: ^7.0.0 - version: 7.0.6(@types/node@24.2.0)(jiti@1.21.7)(tsx@4.19.2)(yaml@2.8.0) + version: 7.0.6(@types/node@24.2.0)(jiti@2.5.1)(lightningcss@1.30.1)(tsx@4.19.2)(yaml@2.8.0) vite-node: specifier: ^3.2.4 - version: 3.2.4(@types/node@24.2.0)(jiti@1.21.7)(tsx@4.19.2)(yaml@2.8.0) + version: 3.2.4(@types/node@24.2.0)(jiti@2.5.1)(lightningcss@1.30.1)(tsx@4.19.2)(yaml@2.8.0) vite-plugin-cem: specifier: ^0.8.3 - version: 0.8.3(vite@7.0.6(@types/node@24.2.0)(jiti@1.21.7)(tsx@4.19.2)(yaml@2.8.0)) + version: 0.8.3(vite@7.0.6(@types/node@24.2.0)(jiti@2.5.1)(lightningcss@1.30.1)(tsx@4.19.2)(yaml@2.8.0)) vite-tsconfig-paths: specifier: ^5.1.4 - version: 5.1.4(typescript@5.8.3)(vite@7.0.6(@types/node@24.2.0)(jiti@1.21.7)(tsx@4.19.2)(yaml@2.8.0)) + version: 5.1.4(typescript@5.8.3)(vite@7.0.6(@types/node@24.2.0)(jiti@2.5.1)(lightningcss@1.30.1)(tsx@4.19.2)(yaml@2.8.0)) wait-on: specifier: ^8.0.3 version: 8.0.4 @@ -372,10 +378,10 @@ importers: version: 24.2.0 '@typescript-eslint/rule-tester': specifier: ^8.39.0 - version: 8.39.0(eslint@9.32.0(jiti@1.21.7))(typescript@5.8.3) + version: 8.39.0(eslint@9.32.0(jiti@2.5.1))(typescript@5.8.3) '@typescript-eslint/utils': specifier: ^8.39.0 - version: 8.39.0(eslint@9.32.0(jiti@1.21.7))(typescript@5.8.3) + version: 8.39.0(eslint@9.32.0(jiti@2.5.1))(typescript@5.8.3) es-html-parser: specifier: ^0.3.0 version: 0.3.0 @@ -384,7 +390,7 @@ importers: version: 0.25.8 eslint: specifier: ^9.32.0 - version: 9.32.0(jiti@1.21.7) + version: 9.32.0(jiti@2.5.1) globby: specifier: ^14.1.0 version: 14.1.0 @@ -450,7 +456,7 @@ importers: version: 8.5.6 postcss-cli: specifier: ^11.0.1 - version: 11.0.1(jiti@1.21.7)(postcss@8.5.6)(tsx@4.19.2) + version: 11.0.1(jiti@2.5.1)(postcss@8.5.6)(tsx@4.19.2) postcss-import: specifier: ^16.1.0 version: 16.1.1(postcss@8.5.6) @@ -1144,6 +1150,10 @@ packages: resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} engines: {node: '>=12'} + '@isaacs/fs-minipass@4.0.1': + resolution: {integrity: sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w==} + engines: {node: '>=18.0.0'} + '@istanbuljs/load-nyc-config@1.1.0': resolution: {integrity: sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==} engines: {node: '>=8'} @@ -1824,6 +1834,99 @@ packages: peerDependencies: postcss: ^8.2.15 + '@tailwindcss/node@4.1.11': + resolution: {integrity: sha512-yzhzuGRmv5QyU9qLNg4GTlYI6STedBWRE7NjxP45CsFYYq9taI0zJXZBMqIC/c8fViNLhmrbpSFS57EoxUmD6Q==} + + '@tailwindcss/oxide-android-arm64@4.1.11': + resolution: {integrity: sha512-3IfFuATVRUMZZprEIx9OGDjG3Ou3jG4xQzNTvjDoKmU9JdmoCohQJ83MYd0GPnQIu89YoJqvMM0G3uqLRFtetg==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [android] + + '@tailwindcss/oxide-darwin-arm64@4.1.11': + resolution: {integrity: sha512-ESgStEOEsyg8J5YcMb1xl8WFOXfeBmrhAwGsFxxB2CxY9evy63+AtpbDLAyRkJnxLy2WsD1qF13E97uQyP1lfQ==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [darwin] + + '@tailwindcss/oxide-darwin-x64@4.1.11': + resolution: {integrity: sha512-EgnK8kRchgmgzG6jE10UQNaH9Mwi2n+yw1jWmof9Vyg2lpKNX2ioe7CJdf9M5f8V9uaQxInenZkOxnTVL3fhAw==} + engines: {node: '>= 10'} + cpu: [x64] + os: [darwin] + + '@tailwindcss/oxide-freebsd-x64@4.1.11': + resolution: {integrity: sha512-xdqKtbpHs7pQhIKmqVpxStnY1skuNh4CtbcyOHeX1YBE0hArj2romsFGb6yUmzkq/6M24nkxDqU8GYrKrz+UcA==} + engines: {node: '>= 10'} + cpu: [x64] + os: [freebsd] + + '@tailwindcss/oxide-linux-arm-gnueabihf@4.1.11': + resolution: {integrity: sha512-ryHQK2eyDYYMwB5wZL46uoxz2zzDZsFBwfjssgB7pzytAeCCa6glsiJGjhTEddq/4OsIjsLNMAiMlHNYnkEEeg==} + engines: {node: '>= 10'} + cpu: [arm] + os: [linux] + + '@tailwindcss/oxide-linux-arm64-gnu@4.1.11': + resolution: {integrity: sha512-mYwqheq4BXF83j/w75ewkPJmPZIqqP1nhoghS9D57CLjsh3Nfq0m4ftTotRYtGnZd3eCztgbSPJ9QhfC91gDZQ==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + + '@tailwindcss/oxide-linux-arm64-musl@4.1.11': + resolution: {integrity: sha512-m/NVRFNGlEHJrNVk3O6I9ggVuNjXHIPoD6bqay/pubtYC9QIdAMpS+cswZQPBLvVvEF6GtSNONbDkZrjWZXYNQ==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + + '@tailwindcss/oxide-linux-x64-gnu@4.1.11': + resolution: {integrity: sha512-YW6sblI7xukSD2TdbbaeQVDysIm/UPJtObHJHKxDEcW2exAtY47j52f8jZXkqE1krdnkhCMGqP3dbniu1Te2Fg==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + + '@tailwindcss/oxide-linux-x64-musl@4.1.11': + resolution: {integrity: sha512-e3C/RRhGunWYNC3aSF7exsQkdXzQ/M+aYuZHKnw4U7KQwTJotnWsGOIVih0s2qQzmEzOFIJ3+xt7iq67K/p56Q==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + + '@tailwindcss/oxide-wasm32-wasi@4.1.11': + resolution: {integrity: sha512-Xo1+/GU0JEN/C/dvcammKHzeM6NqKovG+6921MR6oadee5XPBaKOumrJCXvopJ/Qb5TH7LX/UAywbqrP4lax0g==} + engines: {node: '>=14.0.0'} + cpu: [wasm32] + bundledDependencies: + - '@napi-rs/wasm-runtime' + - '@emnapi/core' + - '@emnapi/runtime' + - '@tybys/wasm-util' + - '@emnapi/wasi-threads' + - tslib + + '@tailwindcss/oxide-win32-arm64-msvc@4.1.11': + resolution: {integrity: sha512-UgKYx5PwEKrac3GPNPf6HVMNhUIGuUh4wlDFR2jYYdkX6pL/rn73zTq/4pzUm8fOjAn5L8zDeHp9iXmUGOXZ+w==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [win32] + + '@tailwindcss/oxide-win32-x64-msvc@4.1.11': + resolution: {integrity: sha512-YfHoggn1j0LK7wR82TOucWc5LDCguHnoS879idHekmmiR7g9HUtMw9MI0NHatS28u/Xlkfi9w5RJWgz2Dl+5Qg==} + engines: {node: '>= 10'} + cpu: [x64] + os: [win32] + + '@tailwindcss/oxide@4.1.11': + resolution: {integrity: sha512-Q69XzrtAhuyfHo+5/HMgr1lAiPP/G40OMFAnws7xcFEYqcypZmdW8eGXaOUIeOl1dzPJBPENXgbjsOyhg2nkrg==} + engines: {node: '>= 10'} + + '@tailwindcss/postcss@4.1.11': + resolution: {integrity: sha512-q/EAIIpF6WpLhKEuQSEVMZNMIY8KhWoAemZ9eylNAih9jxMGAYPPWBn3I9QL/2jZ+e7OEz/tZkX5HwbBR4HohA==} + + '@tailwindcss/vite@4.1.11': + resolution: {integrity: sha512-RHYhrR3hku0MJFRV+fN2gNbDNEh3dwKvY8XJvTxCSXeMOsCRSr+uKvDWQcbizrHgjML6ZmTE5OwMrl5wKcujCw==} + peerDependencies: + vite: ^5.2.0 || ^6 || ^7 + '@tarekraafat/autocomplete.js@10.2.9': resolution: {integrity: sha512-A7OP3iJDTWeO85M3Vxu391acu9SmDguormHpMZ13khuyM180dKl9O1gAXSDA322XwkYuUU1Ad7WchW1TQNNuDw==} @@ -2815,6 +2918,10 @@ packages: resolution: {integrity: sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==} engines: {node: '>= 14.16.0'} + chownr@3.0.0: + resolution: {integrity: sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==} + engines: {node: '>=18'} + chroma-js@3.1.2: resolution: {integrity: sha512-IJnETTalXbsLx1eKEgx19d5L6SRM7cH4vINw/99p/M11HCuXGRWL+6YmCm7FWFGIo6dtWuQoQi1dc5yQ7ESIHg==} @@ -3260,6 +3367,10 @@ packages: resolution: {integrity: sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==} engines: {node: '>=8'} + detect-libc@2.0.4: + resolution: {integrity: sha512-3UDv+G9CsCKO1WKMGw9fwq/SWJYbI0c5Y7LU1AXYoDdbhE2AHQ6N6Nb34sG8Fj7T5APy8qXDCKuuIHd1BR0tVA==} + engines: {node: '>=8'} + detect-newline@3.1.0: resolution: {integrity: sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==} engines: {node: '>=8'} @@ -3379,6 +3490,10 @@ packages: end-of-stream@1.4.5: resolution: {integrity: sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==} + enhanced-resolve@5.18.3: + resolution: {integrity: sha512-d4lC8xfavMeBjzGr2vECC3fsGXziXZQyJxD868h2M/mBI3PwAuODxAkLkq5HYuvrPYcUtiLzsTo8U3PgX3Ocww==} + engines: {node: '>=10.13.0'} + enquirer@2.4.1: resolution: {integrity: sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==} engines: {node: '>=8.6'} @@ -4765,6 +4880,10 @@ packages: resolution: {integrity: sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A==} hasBin: true + jiti@2.5.1: + resolution: {integrity: sha512-twQoecYPiVA5K/h6SxtORw/Bs3ar+mLUtoPSc7iMXzQzK8d7eJ/R09wmTwAjiamETn1cXYPGfNnu7DMoHgu12w==} + hasBin: true + joi@17.13.3: resolution: {integrity: sha512-otDA4ldcIx+ZXsKHWmp0YizCweVRZG96J10b0FevjfuncLO1oX59THoAmHkNubYJ+9gWsYsp5k8v4ib6oDv1fA==} @@ -4891,6 +5010,70 @@ packages: lighthouse-logger@1.4.2: resolution: {integrity: sha512-gPWxznF6TKmUHrOQjlVo2UbaL2EJ71mb2CCeRs/2qBpi4L/g4LUVc9+3lKQ6DTUZwJswfM7ainGrLO1+fOqa2g==} + lightningcss-darwin-arm64@1.30.1: + resolution: {integrity: sha512-c8JK7hyE65X1MHMN+Viq9n11RRC7hgin3HhYKhrMyaXflk5GVplZ60IxyoVtzILeKr+xAJwg6zK6sjTBJ0FKYQ==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [darwin] + + lightningcss-darwin-x64@1.30.1: + resolution: {integrity: sha512-k1EvjakfumAQoTfcXUcHQZhSpLlkAuEkdMBsI/ivWw9hL+7FtilQc0Cy3hrx0AAQrVtQAbMI7YjCgYgvn37PzA==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [darwin] + + lightningcss-freebsd-x64@1.30.1: + resolution: {integrity: sha512-kmW6UGCGg2PcyUE59K5r0kWfKPAVy4SltVeut+umLCFoJ53RdCUWxcRDzO1eTaxf/7Q2H7LTquFHPL5R+Gjyig==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [freebsd] + + lightningcss-linux-arm-gnueabihf@1.30.1: + resolution: {integrity: sha512-MjxUShl1v8pit+6D/zSPq9S9dQ2NPFSQwGvxBCYaBYLPlCWuPh9/t1MRS8iUaR8i+a6w7aps+B4N0S1TYP/R+Q==} + engines: {node: '>= 12.0.0'} + cpu: [arm] + os: [linux] + + lightningcss-linux-arm64-gnu@1.30.1: + resolution: {integrity: sha512-gB72maP8rmrKsnKYy8XUuXi/4OctJiuQjcuqWNlJQ6jZiWqtPvqFziskH3hnajfvKB27ynbVCucKSm2rkQp4Bw==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [linux] + + lightningcss-linux-arm64-musl@1.30.1: + resolution: {integrity: sha512-jmUQVx4331m6LIX+0wUhBbmMX7TCfjF5FoOH6SD1CttzuYlGNVpA7QnrmLxrsub43ClTINfGSYyHe2HWeLl5CQ==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [linux] + + lightningcss-linux-x64-gnu@1.30.1: + resolution: {integrity: sha512-piWx3z4wN8J8z3+O5kO74+yr6ze/dKmPnI7vLqfSqI8bccaTGY5xiSGVIJBDd5K5BHlvVLpUB3S2YCfelyJ1bw==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [linux] + + lightningcss-linux-x64-musl@1.30.1: + resolution: {integrity: sha512-rRomAK7eIkL+tHY0YPxbc5Dra2gXlI63HL+v1Pdi1a3sC+tJTcFrHX+E86sulgAXeI7rSzDYhPSeHHjqFhqfeQ==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [linux] + + lightningcss-win32-arm64-msvc@1.30.1: + resolution: {integrity: sha512-mSL4rqPi4iXq5YVqzSsJgMVFENoa4nGTT/GjO2c0Yl9OuQfPsIfncvLrEW6RbbB24WtZ3xP/2CCmI3tNkNV4oA==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [win32] + + lightningcss-win32-x64-msvc@1.30.1: + resolution: {integrity: sha512-PVqXh48wh4T53F/1CCu8PIPCxLzWyCnn/9T5W1Jpmdy5h9Cwd+0YQS6/LwhHXSafuc61/xg9Lv5OrCby6a++jg==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [win32] + + lightningcss@1.30.1: + resolution: {integrity: sha512-xi6IyHML+c9+Q3W0S4fCQJOym42pyurFiJUHEcEyHS0CeKzia4yZDEsLlqOFykxOdHpNy0NmvVO31vcSqAxJCg==} + engines: {node: '>= 12.0.0'} + lilconfig@3.1.3: resolution: {integrity: sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==} engines: {node: '>=14'} @@ -5117,6 +5300,10 @@ packages: resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} engines: {node: '>=16 || 14 >=14.17'} + minizlib@3.0.2: + resolution: {integrity: sha512-oG62iEk+CYt5Xj2YqI5Xi9xWUeZhDI8jjQmC5oThVH5JGCTgIjr7ciJDzC7MBzYd//WvR1OTmP5Q38Q8ShQtVA==} + engines: {node: '>= 18'} + mitt@3.0.1: resolution: {integrity: sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==} @@ -6393,12 +6580,23 @@ packages: engines: {node: '>=14.0.0'} hasBin: true + tailwindcss@4.1.11: + resolution: {integrity: sha512-2E9TBm6MDD/xKYe+dvJZAmg3yxIEDNRc0jwlNyDg/4Fil2QcSLjFKGVff0lAf1jjeaArlG/M75Ey/EYr/OJtBA==} + + tapable@2.2.2: + resolution: {integrity: sha512-Re10+NauLTMCudc7T5WLFLAwDhQ0JWdrMK+9B2M8zR5hRExKmsRDCBA7/aV/pNJFltmBFO5BAMlQFi/vq3nKOg==} + engines: {node: '>=6'} + tar-fs@3.0.10: resolution: {integrity: sha512-C1SwlQGNLe/jPNqapK8epDsXME7CAJR5RL3GcE6KWx1d9OUByzoHVcbu1VPI8tevg9H8Alae0AApHHFGzrD5zA==} tar-stream@3.1.7: resolution: {integrity: sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ==} + tar@7.4.3: + resolution: {integrity: sha512-5S7Va8hKfV7W5U6g3aYxXmlPoZVAwUMy9AOKyF2fVuZa2UD3qZjg578OrLRt8PcNN1PleVaL/5/yYATNL0ICUw==} + engines: {node: '>=18'} + telejson@6.0.8: resolution: {integrity: sha512-nerNXi+j8NK1QEfBHtZUN/aLdDcyupA//9kAboYLrtzZlPLpUfqbVGWb9zz91f/mIjRbAYhbgtnJHY8I1b5MBg==} @@ -6949,6 +7147,10 @@ packages: yallist@3.1.1: resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} + yallist@5.0.0: + resolution: {integrity: sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==} + engines: {node: '>=18'} + yaml@2.8.0: resolution: {integrity: sha512-4lLa/EcQCB0cJkyts+FpIRx5G/llPxfP6VQU5KByHEhLxY3IJCH0f0Hy1MHI8sClTvsIb8qwRJ6R/ZdlDJ/leQ==} engines: {node: '>= 14.6'} @@ -7528,16 +7730,16 @@ snapshots: '@esbuild/win32-x64@0.25.8': optional: true - '@eslint-community/eslint-utils@4.7.0(eslint@9.32.0(jiti@1.21.7))': + '@eslint-community/eslint-utils@4.7.0(eslint@9.32.0(jiti@2.5.1))': dependencies: - eslint: 9.32.0(jiti@1.21.7) + eslint: 9.32.0(jiti@2.5.1) eslint-visitor-keys: 3.4.3 '@eslint-community/regexpp@4.12.1': {} - '@eslint/compat@1.3.1(eslint@9.32.0(jiti@1.21.7))': + '@eslint/compat@1.3.1(eslint@9.32.0(jiti@2.5.1))': optionalDependencies: - eslint: 9.32.0(jiti@1.21.7) + eslint: 9.32.0(jiti@2.5.1) '@eslint/config-array@0.21.0': dependencies: @@ -7636,6 +7838,10 @@ snapshots: wrap-ansi: 8.1.0 wrap-ansi-cjs: wrap-ansi@7.0.0 + '@isaacs/fs-minipass@4.0.1': + dependencies: + minipass: 7.1.2 + '@istanbuljs/load-nyc-config@1.1.0': dependencies: camelcase: 5.3.1 @@ -8039,9 +8245,9 @@ snapshots: dependencies: tailwindcss: 3.4.17(patch_hash=cca1bbc79af6902b0fdf11a8edc6eb619e60a0015e27e5c54077b18faa12b5e2)(ts-node@10.9.2(@swc/core@1.12.1)(@types/node@24.2.0)(typescript@5.9.2)) - '@mariohamann/tailwindcss-var@https://codeload.github.com/mariohamann/tailwindcss-var/tar.gz/671cedc8890c64d3a54173513f5cb9d6dea4aaf1(tailwindcss@3.4.17(patch_hash=cca1bbc79af6902b0fdf11a8edc6eb619e60a0015e27e5c54077b18faa12b5e2)(ts-node@10.9.2(@swc/core@1.12.1)(@types/node@24.2.0)(typescript@5.8.3)))': + '@mariohamann/tailwindcss-var@https://codeload.github.com/mariohamann/tailwindcss-var/tar.gz/671cedc8890c64d3a54173513f5cb9d6dea4aaf1(tailwindcss@4.1.11)': dependencies: - tailwindcss: 3.4.17(patch_hash=cca1bbc79af6902b0fdf11a8edc6eb619e60a0015e27e5c54077b18faa12b5e2)(ts-node@10.9.2(@swc/core@1.12.1)(@types/node@24.2.0)(typescript@5.8.3)) + tailwindcss: 4.1.11 '@mdn/browser-compat-data@4.2.1': {} @@ -8306,29 +8512,29 @@ snapshots: lodash.get: 4.4.2 type-detect: 4.1.0 - '@storybook/addon-a11y@9.1.1(storybook@9.1.1(@testing-library/dom@10.4.0)(prettier@3.6.2)(vite@7.0.6(@types/node@24.2.0)(jiti@1.21.7)(tsx@4.19.2)(yaml@2.8.0)))': + '@storybook/addon-a11y@9.1.1(storybook@9.1.1(@testing-library/dom@10.4.0)(prettier@3.6.2)(vite@7.0.6(@types/node@24.2.0)(jiti@2.5.1)(lightningcss@1.30.1)(tsx@4.19.2)(yaml@2.8.0)))': dependencies: '@storybook/global': 5.0.0 axe-core: 4.10.3 - storybook: 9.1.1(@testing-library/dom@10.4.0)(prettier@3.6.2)(vite@7.0.6(@types/node@24.2.0)(jiti@1.21.7)(tsx@4.19.2)(yaml@2.8.0)) + storybook: 9.1.1(@testing-library/dom@10.4.0)(prettier@3.6.2)(vite@7.0.6(@types/node@24.2.0)(jiti@2.5.1)(lightningcss@1.30.1)(tsx@4.19.2)(yaml@2.8.0)) - '@storybook/addon-docs@9.1.1(@types/react@19.0.8)(storybook@9.1.1(@testing-library/dom@10.4.0)(prettier@3.6.2)(vite@7.0.6(@types/node@24.2.0)(jiti@1.21.7)(tsx@4.19.2)(yaml@2.8.0)))': + '@storybook/addon-docs@9.1.1(@types/react@19.0.8)(storybook@9.1.1(@testing-library/dom@10.4.0)(prettier@3.6.2)(vite@7.0.6(@types/node@24.2.0)(jiti@2.5.1)(lightningcss@1.30.1)(tsx@4.19.2)(yaml@2.8.0)))': dependencies: '@mdx-js/react': 3.1.0(@types/react@19.0.8)(react@19.1.1) - '@storybook/csf-plugin': 9.1.1(storybook@9.1.1(@testing-library/dom@10.4.0)(prettier@3.6.2)(vite@7.0.6(@types/node@24.2.0)(jiti@1.21.7)(tsx@4.19.2)(yaml@2.8.0))) + '@storybook/csf-plugin': 9.1.1(storybook@9.1.1(@testing-library/dom@10.4.0)(prettier@3.6.2)(vite@7.0.6(@types/node@24.2.0)(jiti@2.5.1)(lightningcss@1.30.1)(tsx@4.19.2)(yaml@2.8.0))) '@storybook/icons': 1.4.0(react-dom@19.1.1(react@19.1.1))(react@19.1.1) - '@storybook/react-dom-shim': 9.1.1(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(storybook@9.1.1(@testing-library/dom@10.4.0)(prettier@3.6.2)(vite@7.0.6(@types/node@24.2.0)(jiti@1.21.7)(tsx@4.19.2)(yaml@2.8.0))) + '@storybook/react-dom-shim': 9.1.1(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(storybook@9.1.1(@testing-library/dom@10.4.0)(prettier@3.6.2)(vite@7.0.6(@types/node@24.2.0)(jiti@2.5.1)(lightningcss@1.30.1)(tsx@4.19.2)(yaml@2.8.0))) react: 19.1.1 react-dom: 19.1.1(react@19.1.1) - storybook: 9.1.1(@testing-library/dom@10.4.0)(prettier@3.6.2)(vite@7.0.6(@types/node@24.2.0)(jiti@1.21.7)(tsx@4.19.2)(yaml@2.8.0)) + storybook: 9.1.1(@testing-library/dom@10.4.0)(prettier@3.6.2)(vite@7.0.6(@types/node@24.2.0)(jiti@2.5.1)(lightningcss@1.30.1)(tsx@4.19.2)(yaml@2.8.0)) ts-dedent: 2.2.0 transitivePeerDependencies: - '@types/react' - '@storybook/addon-links@9.1.1(react@19.1.1)(storybook@9.1.1(@testing-library/dom@10.4.0)(prettier@3.6.2)(vite@7.0.6(@types/node@24.2.0)(jiti@1.21.7)(tsx@4.19.2)(yaml@2.8.0)))': + '@storybook/addon-links@9.1.1(react@19.1.1)(storybook@9.1.1(@testing-library/dom@10.4.0)(prettier@3.6.2)(vite@7.0.6(@types/node@24.2.0)(jiti@2.5.1)(lightningcss@1.30.1)(tsx@4.19.2)(yaml@2.8.0)))': dependencies: '@storybook/global': 5.0.0 - storybook: 9.1.1(@testing-library/dom@10.4.0)(prettier@3.6.2)(vite@7.0.6(@types/node@24.2.0)(jiti@1.21.7)(tsx@4.19.2)(yaml@2.8.0)) + storybook: 9.1.1(@testing-library/dom@10.4.0)(prettier@3.6.2)(vite@7.0.6(@types/node@24.2.0)(jiti@2.5.1)(lightningcss@1.30.1)(tsx@4.19.2)(yaml@2.8.0)) optionalDependencies: react: 19.1.1 @@ -8370,12 +8576,12 @@ snapshots: ts-dedent: 2.2.0 util-deprecate: 1.0.2 - '@storybook/builder-vite@9.1.1(storybook@9.1.1(@testing-library/dom@10.4.0)(prettier@3.6.2)(vite@7.0.6(@types/node@24.2.0)(jiti@1.21.7)(tsx@4.19.2)(yaml@2.8.0)))(vite@7.0.6(@types/node@24.2.0)(jiti@1.21.7)(tsx@4.19.2)(yaml@2.8.0))': + '@storybook/builder-vite@9.1.1(storybook@9.1.1(@testing-library/dom@10.4.0)(prettier@3.6.2)(vite@7.0.6(@types/node@24.2.0)(jiti@2.5.1)(lightningcss@1.30.1)(tsx@4.19.2)(yaml@2.8.0)))(vite@7.0.6(@types/node@24.2.0)(jiti@2.5.1)(lightningcss@1.30.1)(tsx@4.19.2)(yaml@2.8.0))': dependencies: - '@storybook/csf-plugin': 9.1.1(storybook@9.1.1(@testing-library/dom@10.4.0)(prettier@3.6.2)(vite@7.0.6(@types/node@24.2.0)(jiti@1.21.7)(tsx@4.19.2)(yaml@2.8.0))) - storybook: 9.1.1(@testing-library/dom@10.4.0)(prettier@3.6.2)(vite@7.0.6(@types/node@24.2.0)(jiti@1.21.7)(tsx@4.19.2)(yaml@2.8.0)) + '@storybook/csf-plugin': 9.1.1(storybook@9.1.1(@testing-library/dom@10.4.0)(prettier@3.6.2)(vite@7.0.6(@types/node@24.2.0)(jiti@2.5.1)(lightningcss@1.30.1)(tsx@4.19.2)(yaml@2.8.0))) + storybook: 9.1.1(@testing-library/dom@10.4.0)(prettier@3.6.2)(vite@7.0.6(@types/node@24.2.0)(jiti@2.5.1)(lightningcss@1.30.1)(tsx@4.19.2)(yaml@2.8.0)) ts-dedent: 2.2.0 - vite: 7.0.6(@types/node@24.2.0)(jiti@1.21.7)(tsx@4.19.2)(yaml@2.8.0) + vite: 7.0.6(@types/node@24.2.0)(jiti@2.5.1)(lightningcss@1.30.1)(tsx@4.19.2)(yaml@2.8.0) '@storybook/channel-postmessage@6.5.16': dependencies: @@ -8427,9 +8633,9 @@ snapshots: dependencies: core-js: 3.45.0 - '@storybook/csf-plugin@9.1.1(storybook@9.1.1(@testing-library/dom@10.4.0)(prettier@3.6.2)(vite@7.0.6(@types/node@24.2.0)(jiti@1.21.7)(tsx@4.19.2)(yaml@2.8.0)))': + '@storybook/csf-plugin@9.1.1(storybook@9.1.1(@testing-library/dom@10.4.0)(prettier@3.6.2)(vite@7.0.6(@types/node@24.2.0)(jiti@2.5.1)(lightningcss@1.30.1)(tsx@4.19.2)(yaml@2.8.0)))': dependencies: - storybook: 9.1.1(@testing-library/dom@10.4.0)(prettier@3.6.2)(vite@7.0.6(@types/node@24.2.0)(jiti@1.21.7)(tsx@4.19.2)(yaml@2.8.0)) + storybook: 9.1.1(@testing-library/dom@10.4.0)(prettier@3.6.2)(vite@7.0.6(@types/node@24.2.0)(jiti@2.5.1)(lightningcss@1.30.1)(tsx@4.19.2)(yaml@2.8.0)) unplugin: 1.16.1 '@storybook/csf@0.0.2--canary.4566f4d.1': @@ -8443,11 +8649,11 @@ snapshots: react: 19.1.1 react-dom: 19.1.1(react@19.1.1) - '@storybook/react-dom-shim@9.1.1(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(storybook@9.1.1(@testing-library/dom@10.4.0)(prettier@3.6.2)(vite@7.0.6(@types/node@24.2.0)(jiti@1.21.7)(tsx@4.19.2)(yaml@2.8.0)))': + '@storybook/react-dom-shim@9.1.1(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(storybook@9.1.1(@testing-library/dom@10.4.0)(prettier@3.6.2)(vite@7.0.6(@types/node@24.2.0)(jiti@2.5.1)(lightningcss@1.30.1)(tsx@4.19.2)(yaml@2.8.0)))': dependencies: react: 19.1.1 react-dom: 19.1.1(react@19.1.1) - storybook: 9.1.1(@testing-library/dom@10.4.0)(prettier@3.6.2)(vite@7.0.6(@types/node@24.2.0)(jiti@1.21.7)(tsx@4.19.2)(yaml@2.8.0)) + storybook: 9.1.1(@testing-library/dom@10.4.0)(prettier@3.6.2)(vite@7.0.6(@types/node@24.2.0)(jiti@2.5.1)(lightningcss@1.30.1)(tsx@4.19.2)(yaml@2.8.0)) '@storybook/router@6.5.16(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': dependencies: @@ -8484,7 +8690,7 @@ snapshots: ts-dedent: 2.2.0 util-deprecate: 1.0.2 - '@storybook/test-runner@0.23.0(@types/node@24.2.0)(storybook@9.1.1(@testing-library/dom@10.4.0)(prettier@3.6.2)(vite@7.0.6(@types/node@24.2.0)(jiti@1.21.7)(tsx@4.19.2)(yaml@2.8.0)))(ts-node@10.9.2(@swc/core@1.12.1)(@types/node@24.2.0)(typescript@5.8.3))': + '@storybook/test-runner@0.23.0(@types/node@24.2.0)(storybook@9.1.1(@testing-library/dom@10.4.0)(prettier@3.6.2)(vite@7.0.6(@types/node@24.2.0)(jiti@2.5.1)(lightningcss@1.30.1)(tsx@4.19.2)(yaml@2.8.0)))(ts-node@10.9.2(@swc/core@1.12.1)(@types/node@24.2.0)(typescript@5.8.3))': dependencies: '@babel/core': 7.27.4 '@babel/generator': 7.27.5 @@ -8504,7 +8710,7 @@ snapshots: jest-watch-typeahead: 2.2.2(jest@29.7.0(@types/node@24.2.0)(ts-node@10.9.2(@swc/core@1.12.1)(@types/node@24.2.0)(typescript@5.8.3))) nyc: 15.1.0 playwright: 1.54.2 - storybook: 9.1.1(@testing-library/dom@10.4.0)(prettier@3.6.2)(vite@7.0.6(@types/node@24.2.0)(jiti@1.21.7)(tsx@4.19.2)(yaml@2.8.0)) + storybook: 9.1.1(@testing-library/dom@10.4.0)(prettier@3.6.2)(vite@7.0.6(@types/node@24.2.0)(jiti@2.5.1)(lightningcss@1.30.1)(tsx@4.19.2)(yaml@2.8.0)) transitivePeerDependencies: - '@swc/helpers' - '@types/node' @@ -8523,20 +8729,20 @@ snapshots: react-dom: 19.1.1(react@19.1.1) regenerator-runtime: 0.13.11 - '@storybook/web-components-vite@9.1.1(lit@3.3.1)(storybook@9.1.1(@testing-library/dom@10.4.0)(prettier@3.6.2)(vite@7.0.6(@types/node@24.2.0)(jiti@1.21.7)(tsx@4.19.2)(yaml@2.8.0)))(vite@7.0.6(@types/node@24.2.0)(jiti@1.21.7)(tsx@4.19.2)(yaml@2.8.0))': + '@storybook/web-components-vite@9.1.1(lit@3.3.1)(storybook@9.1.1(@testing-library/dom@10.4.0)(prettier@3.6.2)(vite@7.0.6(@types/node@24.2.0)(jiti@2.5.1)(lightningcss@1.30.1)(tsx@4.19.2)(yaml@2.8.0)))(vite@7.0.6(@types/node@24.2.0)(jiti@2.5.1)(lightningcss@1.30.1)(tsx@4.19.2)(yaml@2.8.0))': dependencies: - '@storybook/builder-vite': 9.1.1(storybook@9.1.1(@testing-library/dom@10.4.0)(prettier@3.6.2)(vite@7.0.6(@types/node@24.2.0)(jiti@1.21.7)(tsx@4.19.2)(yaml@2.8.0)))(vite@7.0.6(@types/node@24.2.0)(jiti@1.21.7)(tsx@4.19.2)(yaml@2.8.0)) - '@storybook/web-components': 9.1.1(lit@3.3.1)(storybook@9.1.1(@testing-library/dom@10.4.0)(prettier@3.6.2)(vite@7.0.6(@types/node@24.2.0)(jiti@1.21.7)(tsx@4.19.2)(yaml@2.8.0))) - storybook: 9.1.1(@testing-library/dom@10.4.0)(prettier@3.6.2)(vite@7.0.6(@types/node@24.2.0)(jiti@1.21.7)(tsx@4.19.2)(yaml@2.8.0)) + '@storybook/builder-vite': 9.1.1(storybook@9.1.1(@testing-library/dom@10.4.0)(prettier@3.6.2)(vite@7.0.6(@types/node@24.2.0)(jiti@2.5.1)(lightningcss@1.30.1)(tsx@4.19.2)(yaml@2.8.0)))(vite@7.0.6(@types/node@24.2.0)(jiti@2.5.1)(lightningcss@1.30.1)(tsx@4.19.2)(yaml@2.8.0)) + '@storybook/web-components': 9.1.1(lit@3.3.1)(storybook@9.1.1(@testing-library/dom@10.4.0)(prettier@3.6.2)(vite@7.0.6(@types/node@24.2.0)(jiti@2.5.1)(lightningcss@1.30.1)(tsx@4.19.2)(yaml@2.8.0))) + storybook: 9.1.1(@testing-library/dom@10.4.0)(prettier@3.6.2)(vite@7.0.6(@types/node@24.2.0)(jiti@2.5.1)(lightningcss@1.30.1)(tsx@4.19.2)(yaml@2.8.0)) transitivePeerDependencies: - lit - vite - '@storybook/web-components@9.1.1(lit@3.3.1)(storybook@9.1.1(@testing-library/dom@10.4.0)(prettier@3.6.2)(vite@7.0.6(@types/node@24.2.0)(jiti@1.21.7)(tsx@4.19.2)(yaml@2.8.0)))': + '@storybook/web-components@9.1.1(lit@3.3.1)(storybook@9.1.1(@testing-library/dom@10.4.0)(prettier@3.6.2)(vite@7.0.6(@types/node@24.2.0)(jiti@2.5.1)(lightningcss@1.30.1)(tsx@4.19.2)(yaml@2.8.0)))': dependencies: '@storybook/global': 5.0.0 lit: 3.3.1 - storybook: 9.1.1(@testing-library/dom@10.4.0)(prettier@3.6.2)(vite@7.0.6(@types/node@24.2.0)(jiti@1.21.7)(tsx@4.19.2)(yaml@2.8.0)) + storybook: 9.1.1(@testing-library/dom@10.4.0)(prettier@3.6.2)(vite@7.0.6(@types/node@24.2.0)(jiti@2.5.1)(lightningcss@1.30.1)(tsx@4.19.2)(yaml@2.8.0)) tiny-invariant: 1.3.3 ts-dedent: 2.2.0 @@ -8604,6 +8810,85 @@ snapshots: postcss: 8.5.6 postcss-nested: 5.0.6(postcss@8.5.6) + '@tailwindcss/node@4.1.11': + dependencies: + '@ampproject/remapping': 2.3.0 + enhanced-resolve: 5.18.3 + jiti: 2.5.1 + lightningcss: 1.30.1 + magic-string: 0.30.17 + source-map-js: 1.2.1 + tailwindcss: 4.1.11 + + '@tailwindcss/oxide-android-arm64@4.1.11': + optional: true + + '@tailwindcss/oxide-darwin-arm64@4.1.11': + optional: true + + '@tailwindcss/oxide-darwin-x64@4.1.11': + optional: true + + '@tailwindcss/oxide-freebsd-x64@4.1.11': + optional: true + + '@tailwindcss/oxide-linux-arm-gnueabihf@4.1.11': + optional: true + + '@tailwindcss/oxide-linux-arm64-gnu@4.1.11': + optional: true + + '@tailwindcss/oxide-linux-arm64-musl@4.1.11': + optional: true + + '@tailwindcss/oxide-linux-x64-gnu@4.1.11': + optional: true + + '@tailwindcss/oxide-linux-x64-musl@4.1.11': + optional: true + + '@tailwindcss/oxide-wasm32-wasi@4.1.11': + optional: true + + '@tailwindcss/oxide-win32-arm64-msvc@4.1.11': + optional: true + + '@tailwindcss/oxide-win32-x64-msvc@4.1.11': + optional: true + + '@tailwindcss/oxide@4.1.11': + dependencies: + detect-libc: 2.0.4 + tar: 7.4.3 + optionalDependencies: + '@tailwindcss/oxide-android-arm64': 4.1.11 + '@tailwindcss/oxide-darwin-arm64': 4.1.11 + '@tailwindcss/oxide-darwin-x64': 4.1.11 + '@tailwindcss/oxide-freebsd-x64': 4.1.11 + '@tailwindcss/oxide-linux-arm-gnueabihf': 4.1.11 + '@tailwindcss/oxide-linux-arm64-gnu': 4.1.11 + '@tailwindcss/oxide-linux-arm64-musl': 4.1.11 + '@tailwindcss/oxide-linux-x64-gnu': 4.1.11 + '@tailwindcss/oxide-linux-x64-musl': 4.1.11 + '@tailwindcss/oxide-wasm32-wasi': 4.1.11 + '@tailwindcss/oxide-win32-arm64-msvc': 4.1.11 + '@tailwindcss/oxide-win32-x64-msvc': 4.1.11 + + '@tailwindcss/postcss@4.1.11': + dependencies: + '@alloc/quick-lru': 5.2.0 + '@tailwindcss/node': 4.1.11 + '@tailwindcss/oxide': 4.1.11 + postcss: 8.5.6 + tailwindcss: 4.1.11 + + '@tailwindcss/vite@4.1.11(vite@7.0.6(@types/node@24.2.0)(jiti@2.5.1)(lightningcss@1.30.1)(tsx@4.19.2)(yaml@2.8.0))': + dependencies: + '@tailwindcss/node': 4.1.11 + '@tailwindcss/oxide': 4.1.11 + tailwindcss: 4.1.11 + vite: 7.0.6(@types/node@24.2.0)(jiti@2.5.1)(lightningcss@1.30.1)(tsx@4.19.2)(yaml@2.8.0) + '@tarekraafat/autocomplete.js@10.2.9': {} '@testing-library/dom@10.4.0': @@ -8888,15 +9173,15 @@ snapshots: '@types/node': 24.2.0 optional: true - '@typescript-eslint/eslint-plugin@8.39.0(@typescript-eslint/parser@8.39.0(eslint@9.32.0(jiti@1.21.7))(typescript@5.9.2))(eslint@9.32.0(jiti@1.21.7))(typescript@5.9.2)': + '@typescript-eslint/eslint-plugin@8.39.0(@typescript-eslint/parser@8.39.0(eslint@9.32.0(jiti@2.5.1))(typescript@5.9.2))(eslint@9.32.0(jiti@2.5.1))(typescript@5.9.2)': dependencies: '@eslint-community/regexpp': 4.12.1 - '@typescript-eslint/parser': 8.39.0(eslint@9.32.0(jiti@1.21.7))(typescript@5.9.2) + '@typescript-eslint/parser': 8.39.0(eslint@9.32.0(jiti@2.5.1))(typescript@5.9.2) '@typescript-eslint/scope-manager': 8.39.0 - '@typescript-eslint/type-utils': 8.39.0(eslint@9.32.0(jiti@1.21.7))(typescript@5.9.2) - '@typescript-eslint/utils': 8.39.0(eslint@9.32.0(jiti@1.21.7))(typescript@5.9.2) + '@typescript-eslint/type-utils': 8.39.0(eslint@9.32.0(jiti@2.5.1))(typescript@5.9.2) + '@typescript-eslint/utils': 8.39.0(eslint@9.32.0(jiti@2.5.1))(typescript@5.9.2) '@typescript-eslint/visitor-keys': 8.39.0 - eslint: 9.32.0(jiti@1.21.7) + eslint: 9.32.0(jiti@2.5.1) graphemer: 1.4.0 ignore: 7.0.5 natural-compare: 1.4.0 @@ -8905,26 +9190,26 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.39.0(eslint@9.32.0(jiti@1.21.7))(typescript@5.8.3)': + '@typescript-eslint/parser@8.39.0(eslint@9.32.0(jiti@2.5.1))(typescript@5.8.3)': dependencies: '@typescript-eslint/scope-manager': 8.39.0 '@typescript-eslint/types': 8.39.0 '@typescript-eslint/typescript-estree': 8.39.0(typescript@5.8.3) '@typescript-eslint/visitor-keys': 8.39.0 debug: 4.4.1 - eslint: 9.32.0(jiti@1.21.7) + eslint: 9.32.0(jiti@2.5.1) typescript: 5.8.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.39.0(eslint@9.32.0(jiti@1.21.7))(typescript@5.9.2)': + '@typescript-eslint/parser@8.39.0(eslint@9.32.0(jiti@2.5.1))(typescript@5.9.2)': dependencies: '@typescript-eslint/scope-manager': 8.39.0 '@typescript-eslint/types': 8.39.0 '@typescript-eslint/typescript-estree': 8.39.0(typescript@5.9.2) '@typescript-eslint/visitor-keys': 8.39.0 debug: 4.4.1 - eslint: 9.32.0(jiti@1.21.7) + eslint: 9.32.0(jiti@2.5.1) typescript: 5.9.2 transitivePeerDependencies: - supports-color @@ -8947,13 +9232,13 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/rule-tester@8.39.0(eslint@9.32.0(jiti@1.21.7))(typescript@5.8.3)': + '@typescript-eslint/rule-tester@8.39.0(eslint@9.32.0(jiti@2.5.1))(typescript@5.8.3)': dependencies: - '@typescript-eslint/parser': 8.39.0(eslint@9.32.0(jiti@1.21.7))(typescript@5.8.3) + '@typescript-eslint/parser': 8.39.0(eslint@9.32.0(jiti@2.5.1))(typescript@5.8.3) '@typescript-eslint/typescript-estree': 8.39.0(typescript@5.8.3) - '@typescript-eslint/utils': 8.39.0(eslint@9.32.0(jiti@1.21.7))(typescript@5.8.3) + '@typescript-eslint/utils': 8.39.0(eslint@9.32.0(jiti@2.5.1))(typescript@5.8.3) ajv: 6.12.6 - eslint: 9.32.0(jiti@1.21.7) + eslint: 9.32.0(jiti@2.5.1) json-stable-stringify-without-jsonify: 1.0.1 lodash.merge: 4.6.2 semver: 7.7.2 @@ -8974,13 +9259,13 @@ snapshots: dependencies: typescript: 5.9.2 - '@typescript-eslint/type-utils@8.39.0(eslint@9.32.0(jiti@1.21.7))(typescript@5.9.2)': + '@typescript-eslint/type-utils@8.39.0(eslint@9.32.0(jiti@2.5.1))(typescript@5.9.2)': dependencies: '@typescript-eslint/types': 8.39.0 '@typescript-eslint/typescript-estree': 8.39.0(typescript@5.9.2) - '@typescript-eslint/utils': 8.39.0(eslint@9.32.0(jiti@1.21.7))(typescript@5.9.2) + '@typescript-eslint/utils': 8.39.0(eslint@9.32.0(jiti@2.5.1))(typescript@5.9.2) debug: 4.4.1 - eslint: 9.32.0(jiti@1.21.7) + eslint: 9.32.0(jiti@2.5.1) ts-api-utils: 2.1.0(typescript@5.9.2) typescript: 5.9.2 transitivePeerDependencies: @@ -9020,24 +9305,24 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.39.0(eslint@9.32.0(jiti@1.21.7))(typescript@5.8.3)': + '@typescript-eslint/utils@8.39.0(eslint@9.32.0(jiti@2.5.1))(typescript@5.8.3)': dependencies: - '@eslint-community/eslint-utils': 4.7.0(eslint@9.32.0(jiti@1.21.7)) + '@eslint-community/eslint-utils': 4.7.0(eslint@9.32.0(jiti@2.5.1)) '@typescript-eslint/scope-manager': 8.39.0 '@typescript-eslint/types': 8.39.0 '@typescript-eslint/typescript-estree': 8.39.0(typescript@5.8.3) - eslint: 9.32.0(jiti@1.21.7) + eslint: 9.32.0(jiti@2.5.1) typescript: 5.8.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.39.0(eslint@9.32.0(jiti@1.21.7))(typescript@5.9.2)': + '@typescript-eslint/utils@8.39.0(eslint@9.32.0(jiti@2.5.1))(typescript@5.9.2)': dependencies: - '@eslint-community/eslint-utils': 4.7.0(eslint@9.32.0(jiti@1.21.7)) + '@eslint-community/eslint-utils': 4.7.0(eslint@9.32.0(jiti@2.5.1)) '@typescript-eslint/scope-manager': 8.39.0 '@typescript-eslint/types': 8.39.0 '@typescript-eslint/typescript-estree': 8.39.0(typescript@5.9.2) - eslint: 9.32.0(jiti@1.21.7) + eslint: 9.32.0(jiti@2.5.1) typescript: 5.9.2 transitivePeerDependencies: - supports-color @@ -9116,13 +9401,13 @@ snapshots: chai: 5.2.0 tinyrainbow: 2.0.0 - '@vitest/mocker@3.2.4(vite@7.0.6(@types/node@24.2.0)(jiti@1.21.7)(tsx@4.19.2)(yaml@2.8.0))': + '@vitest/mocker@3.2.4(vite@7.0.6(@types/node@24.2.0)(jiti@2.5.1)(lightningcss@1.30.1)(tsx@4.19.2)(yaml@2.8.0))': dependencies: '@vitest/spy': 3.2.4 estree-walker: 3.0.3 magic-string: 0.30.17 optionalDependencies: - vite: 7.0.6(@types/node@24.2.0)(jiti@1.21.7)(tsx@4.19.2)(yaml@2.8.0) + vite: 7.0.6(@types/node@24.2.0)(jiti@2.5.1)(lightningcss@1.30.1)(tsx@4.19.2)(yaml@2.8.0) '@vitest/pretty-format@3.2.4': dependencies: @@ -9912,6 +10197,8 @@ snapshots: dependencies: readdirp: 4.1.2 + chownr@3.0.0: {} + chroma-js@3.1.2: {} chromatic@13.1.3: {} @@ -10343,6 +10630,8 @@ snapshots: detect-indent@6.1.0: {} + detect-libc@2.0.4: {} + detect-newline@3.1.0: {} devtools-protocol@0.0.1452169: {} @@ -10452,6 +10741,11 @@ snapshots: dependencies: once: 1.4.0 + enhanced-resolve@5.18.3: + dependencies: + graceful-fs: 4.2.11 + tapable: 2.2.2 + enquirer@2.4.1: dependencies: ansi-colors: 4.1.3 @@ -10655,9 +10949,9 @@ snapshots: optionalDependencies: source-map: 0.6.1 - eslint-config-prettier@10.1.8(eslint@9.32.0(jiti@1.21.7)): + eslint-config-prettier@10.1.8(eslint@9.32.0(jiti@2.5.1)): dependencies: - eslint: 9.32.0(jiti@1.21.7) + eslint: 9.32.0(jiti@2.5.1) eslint-import-resolver-node@0.3.9: dependencies: @@ -10667,25 +10961,25 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-module-utils@2.12.1(@typescript-eslint/parser@8.39.0(eslint@9.32.0(jiti@1.21.7))(typescript@5.9.2))(eslint-import-resolver-node@0.3.9)(eslint@9.32.0(jiti@1.21.7)): + eslint-module-utils@2.12.1(@typescript-eslint/parser@8.39.0(eslint@9.32.0(jiti@2.5.1))(typescript@5.9.2))(eslint-import-resolver-node@0.3.9)(eslint@9.32.0(jiti@2.5.1)): dependencies: debug: 3.2.7 optionalDependencies: - '@typescript-eslint/parser': 8.39.0(eslint@9.32.0(jiti@1.21.7))(typescript@5.9.2) - eslint: 9.32.0(jiti@1.21.7) + '@typescript-eslint/parser': 8.39.0(eslint@9.32.0(jiti@2.5.1))(typescript@5.9.2) + eslint: 9.32.0(jiti@2.5.1) eslint-import-resolver-node: 0.3.9 transitivePeerDependencies: - supports-color - eslint-plugin-chai-expect@3.1.0(eslint@9.32.0(jiti@1.21.7)): + eslint-plugin-chai-expect@3.1.0(eslint@9.32.0(jiti@2.5.1)): dependencies: - eslint: 9.32.0(jiti@1.21.7) + eslint: 9.32.0(jiti@2.5.1) - eslint-plugin-chai-friendly@1.1.0(eslint@9.32.0(jiti@1.21.7)): + eslint-plugin-chai-friendly@1.1.0(eslint@9.32.0(jiti@2.5.1)): dependencies: - eslint: 9.32.0(jiti@1.21.7) + eslint: 9.32.0(jiti@2.5.1) - eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.39.0(eslint@9.32.0(jiti@1.21.7))(typescript@5.9.2))(eslint@9.32.0(jiti@1.21.7)): + eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.39.0(eslint@9.32.0(jiti@2.5.1))(typescript@5.9.2))(eslint@9.32.0(jiti@2.5.1)): dependencies: '@rtsao/scc': 1.1.0 array-includes: 3.1.9 @@ -10694,9 +10988,9 @@ snapshots: array.prototype.flatmap: 1.3.3 debug: 3.2.7 doctrine: 2.1.0 - eslint: 9.32.0(jiti@1.21.7) + eslint: 9.32.0(jiti@2.5.1) eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.39.0(eslint@9.32.0(jiti@1.21.7))(typescript@5.9.2))(eslint-import-resolver-node@0.3.9)(eslint@9.32.0(jiti@1.21.7)) + eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.39.0(eslint@9.32.0(jiti@2.5.1))(typescript@5.9.2))(eslint-import-resolver-node@0.3.9)(eslint@9.32.0(jiti@2.5.1)) hasown: 2.0.2 is-core-module: 2.16.1 is-glob: 4.0.3 @@ -10708,48 +11002,48 @@ snapshots: string.prototype.trimend: 1.0.9 tsconfig-paths: 3.15.0 optionalDependencies: - '@typescript-eslint/parser': 8.39.0(eslint@9.32.0(jiti@1.21.7))(typescript@5.9.2) + '@typescript-eslint/parser': 8.39.0(eslint@9.32.0(jiti@2.5.1))(typescript@5.9.2) transitivePeerDependencies: - eslint-import-resolver-typescript - eslint-import-resolver-webpack - supports-color - eslint-plugin-lit-a11y@5.1.1(eslint@9.32.0(jiti@1.21.7)): + eslint-plugin-lit-a11y@5.1.1(eslint@9.32.0(jiti@2.5.1)): dependencies: '@thepassle/axobject-query': 4.0.0 aria-query: 5.3.2 axe-core: 4.10.3 dom5: 3.0.1 emoji-regex: 10.4.0 - eslint: 9.32.0(jiti@1.21.7) - eslint-plugin-lit: 2.1.1(eslint@9.32.0(jiti@1.21.7)) + eslint: 9.32.0(jiti@2.5.1) + eslint-plugin-lit: 2.1.1(eslint@9.32.0(jiti@2.5.1)) eslint-rule-extender: 0.0.1 language-tags: 1.0.9 parse5: 7.3.0 parse5-htmlparser2-tree-adapter: 6.0.1 - eslint-plugin-lit@2.1.1(eslint@9.32.0(jiti@1.21.7)): + eslint-plugin-lit@2.1.1(eslint@9.32.0(jiti@2.5.1)): dependencies: - eslint: 9.32.0(jiti@1.21.7) + eslint: 9.32.0(jiti@2.5.1) parse5: 6.0.1 parse5-htmlparser2-tree-adapter: 6.0.1 - eslint-plugin-sort-imports-es6-autofix@0.6.0(eslint@9.32.0(jiti@1.21.7)): + eslint-plugin-sort-imports-es6-autofix@0.6.0(eslint@9.32.0(jiti@2.5.1)): dependencies: - eslint: 9.32.0(jiti@1.21.7) + eslint: 9.32.0(jiti@2.5.1) - eslint-plugin-storybook@9.1.1(eslint@9.32.0(jiti@1.21.7))(storybook@9.1.1(@testing-library/dom@10.4.0)(prettier@3.6.2)(vite@7.0.6(@types/node@24.2.0)(jiti@1.21.7)(tsx@4.19.2)(yaml@2.8.0)))(typescript@5.9.2): + eslint-plugin-storybook@9.1.1(eslint@9.32.0(jiti@2.5.1))(storybook@9.1.1(@testing-library/dom@10.4.0)(prettier@3.6.2)(vite@7.0.6(@types/node@24.2.0)(jiti@2.5.1)(lightningcss@1.30.1)(tsx@4.19.2)(yaml@2.8.0)))(typescript@5.9.2): dependencies: - '@typescript-eslint/utils': 8.39.0(eslint@9.32.0(jiti@1.21.7))(typescript@5.9.2) - eslint: 9.32.0(jiti@1.21.7) - storybook: 9.1.1(@testing-library/dom@10.4.0)(prettier@3.6.2)(vite@7.0.6(@types/node@24.2.0)(jiti@1.21.7)(tsx@4.19.2)(yaml@2.8.0)) + '@typescript-eslint/utils': 8.39.0(eslint@9.32.0(jiti@2.5.1))(typescript@5.9.2) + eslint: 9.32.0(jiti@2.5.1) + storybook: 9.1.1(@testing-library/dom@10.4.0)(prettier@3.6.2)(vite@7.0.6(@types/node@24.2.0)(jiti@2.5.1)(lightningcss@1.30.1)(tsx@4.19.2)(yaml@2.8.0)) transitivePeerDependencies: - supports-color - typescript - eslint-plugin-wc@3.0.1(eslint@9.32.0(jiti@1.21.7)): + eslint-plugin-wc@3.0.1(eslint@9.32.0(jiti@2.5.1)): dependencies: - eslint: 9.32.0(jiti@1.21.7) + eslint: 9.32.0(jiti@2.5.1) is-valid-element-name: 1.0.0 js-levenshtein-esm: 2.0.0 @@ -10764,9 +11058,9 @@ snapshots: eslint-visitor-keys@4.2.1: {} - eslint@9.32.0(jiti@1.21.7): + eslint@9.32.0(jiti@2.5.1): dependencies: - '@eslint-community/eslint-utils': 4.7.0(eslint@9.32.0(jiti@1.21.7)) + '@eslint-community/eslint-utils': 4.7.0(eslint@9.32.0(jiti@2.5.1)) '@eslint-community/regexpp': 4.12.1 '@eslint/config-array': 0.21.0 '@eslint/config-helpers': 0.3.0 @@ -10802,7 +11096,7 @@ snapshots: natural-compare: 1.4.0 optionator: 0.9.4 optionalDependencies: - jiti: 1.21.7 + jiti: 2.5.1 transitivePeerDependencies: - supports-color @@ -12453,6 +12747,8 @@ snapshots: jiti@1.21.7: {} + jiti@2.5.1: {} + joi@17.13.3: dependencies: '@hapi/hoek': 9.3.0 @@ -12611,6 +12907,51 @@ snapshots: transitivePeerDependencies: - supports-color + lightningcss-darwin-arm64@1.30.1: + optional: true + + lightningcss-darwin-x64@1.30.1: + optional: true + + lightningcss-freebsd-x64@1.30.1: + optional: true + + lightningcss-linux-arm-gnueabihf@1.30.1: + optional: true + + lightningcss-linux-arm64-gnu@1.30.1: + optional: true + + lightningcss-linux-arm64-musl@1.30.1: + optional: true + + lightningcss-linux-x64-gnu@1.30.1: + optional: true + + lightningcss-linux-x64-musl@1.30.1: + optional: true + + lightningcss-win32-arm64-msvc@1.30.1: + optional: true + + lightningcss-win32-x64-msvc@1.30.1: + optional: true + + lightningcss@1.30.1: + dependencies: + detect-libc: 2.0.4 + optionalDependencies: + lightningcss-darwin-arm64: 1.30.1 + lightningcss-darwin-x64: 1.30.1 + lightningcss-freebsd-x64: 1.30.1 + lightningcss-linux-arm-gnueabihf: 1.30.1 + lightningcss-linux-arm64-gnu: 1.30.1 + lightningcss-linux-arm64-musl: 1.30.1 + lightningcss-linux-x64-gnu: 1.30.1 + lightningcss-linux-x64-musl: 1.30.1 + lightningcss-win32-arm64-msvc: 1.30.1 + lightningcss-win32-x64-msvc: 1.30.1 + lilconfig@3.1.3: {} lines-and-columns@1.2.4: {} @@ -12832,6 +13173,10 @@ snapshots: minipass@7.1.2: {} + minizlib@3.0.2: + dependencies: + minipass: 7.1.2 + mitt@3.0.1: {} mkdirp@0.5.6: @@ -13297,14 +13642,14 @@ snapshots: postcss-selector-parser: 7.1.0 postcss-value-parser: 4.2.0 - postcss-cli@11.0.1(jiti@1.21.7)(postcss@8.5.6)(tsx@4.19.2): + postcss-cli@11.0.1(jiti@2.5.1)(postcss@8.5.6)(tsx@4.19.2): dependencies: chokidar: 3.6.0 dependency-graph: 1.0.0 fs-extra: 11.3.0 picocolors: 1.1.1 postcss: 8.5.6 - postcss-load-config: 5.1.0(jiti@1.21.7)(postcss@8.5.6)(tsx@4.19.2) + postcss-load-config: 5.1.0(jiti@2.5.1)(postcss@8.5.6)(tsx@4.19.2) postcss-reporter: 7.1.0(postcss@8.5.6) pretty-hrtime: 1.0.3 read-cache: 1.0.0 @@ -13365,21 +13710,6 @@ snapshots: camelcase-css: 2.0.1 postcss: 8.5.6 - postcss-load-config@4.0.2(postcss@8.5.6): - dependencies: - lilconfig: 3.1.3 - yaml: 2.8.0 - optionalDependencies: - postcss: 8.5.6 - - postcss-load-config@4.0.2(postcss@8.5.6)(ts-node@10.9.2(@swc/core@1.12.1)(@types/node@24.2.0)(typescript@5.8.3)): - dependencies: - lilconfig: 3.1.3 - yaml: 2.8.0 - optionalDependencies: - postcss: 8.5.6 - ts-node: 10.9.2(@swc/core@1.12.1)(@types/node@24.2.0)(typescript@5.8.3) - postcss-load-config@4.0.2(postcss@8.5.6)(ts-node@10.9.2(@swc/core@1.12.1)(@types/node@24.2.0)(typescript@5.9.2)): dependencies: lilconfig: 3.1.3 @@ -13388,12 +13718,12 @@ snapshots: postcss: 8.5.6 ts-node: 10.9.2(@swc/core@1.12.1)(@types/node@24.2.0)(typescript@5.9.2) - postcss-load-config@5.1.0(jiti@1.21.7)(postcss@8.5.6)(tsx@4.19.2): + postcss-load-config@5.1.0(jiti@2.5.1)(postcss@8.5.6)(tsx@4.19.2): dependencies: lilconfig: 3.1.3 yaml: 2.8.0 optionalDependencies: - jiti: 1.21.7 + jiti: 2.5.1 postcss: 8.5.6 tsx: 4.19.2 @@ -14054,13 +14384,13 @@ snapshots: store2@2.14.4: {} - storybook@9.1.1(@testing-library/dom@10.4.0)(prettier@3.6.2)(vite@7.0.6(@types/node@24.2.0)(jiti@1.21.7)(tsx@4.19.2)(yaml@2.8.0)): + storybook@9.1.1(@testing-library/dom@10.4.0)(prettier@3.6.2)(vite@7.0.6(@types/node@24.2.0)(jiti@2.5.1)(lightningcss@1.30.1)(tsx@4.19.2)(yaml@2.8.0)): dependencies: '@storybook/global': 5.0.0 '@testing-library/jest-dom': 6.6.3 '@testing-library/user-event': 14.6.1(@testing-library/dom@10.4.0) '@vitest/expect': 3.2.4 - '@vitest/mocker': 3.2.4(vite@7.0.6(@types/node@24.2.0)(jiti@1.21.7)(tsx@4.19.2)(yaml@2.8.0)) + '@vitest/mocker': 3.2.4(vite@7.0.6(@types/node@24.2.0)(jiti@2.5.1)(lightningcss@1.30.1)(tsx@4.19.2)(yaml@2.8.0)) '@vitest/spy': 3.2.4 better-opn: 3.0.2 esbuild: 0.25.8 @@ -14218,65 +14548,11 @@ snapshots: chalk: 4.1.2 fs-extra: 10.1.0 lodash.reduce: 4.6.0 - tailwindcss: 3.4.17(patch_hash=cca1bbc79af6902b0fdf11a8edc6eb619e60a0015e27e5c54077b18faa12b5e2) + tailwindcss: 3.4.17(patch_hash=cca1bbc79af6902b0fdf11a8edc6eb619e60a0015e27e5c54077b18faa12b5e2)(ts-node@10.9.2(@swc/core@1.12.1)(@types/node@24.2.0)(typescript@5.9.2)) yargs: 17.7.2 transitivePeerDependencies: - ts-node - tailwindcss@3.4.17(patch_hash=cca1bbc79af6902b0fdf11a8edc6eb619e60a0015e27e5c54077b18faa12b5e2): - dependencies: - '@alloc/quick-lru': 5.2.0 - arg: 5.0.2 - chokidar: 3.6.0 - didyoumean: 1.2.2 - dlv: 1.1.3 - fast-glob: 3.3.3 - glob-parent: 6.0.2 - is-glob: 4.0.3 - jiti: 1.21.7 - lilconfig: 3.1.3 - micromatch: 4.0.8 - normalize-path: 3.0.0 - object-hash: 3.0.0 - picocolors: 1.1.1 - postcss: 8.5.6 - postcss-import: 15.1.0(postcss@8.5.6) - postcss-js: 4.0.1(postcss@8.5.6) - postcss-load-config: 4.0.2(postcss@8.5.6) - postcss-nested: 6.2.0(postcss@8.5.6) - postcss-selector-parser: 6.1.2 - resolve: 1.22.10 - sucrase: 3.35.0 - transitivePeerDependencies: - - ts-node - - tailwindcss@3.4.17(patch_hash=cca1bbc79af6902b0fdf11a8edc6eb619e60a0015e27e5c54077b18faa12b5e2)(ts-node@10.9.2(@swc/core@1.12.1)(@types/node@24.2.0)(typescript@5.8.3)): - dependencies: - '@alloc/quick-lru': 5.2.0 - arg: 5.0.2 - chokidar: 3.6.0 - didyoumean: 1.2.2 - dlv: 1.1.3 - fast-glob: 3.3.3 - glob-parent: 6.0.2 - is-glob: 4.0.3 - jiti: 1.21.7 - lilconfig: 3.1.3 - micromatch: 4.0.8 - normalize-path: 3.0.0 - object-hash: 3.0.0 - picocolors: 1.1.1 - postcss: 8.5.6 - postcss-import: 15.1.0(postcss@8.5.6) - postcss-js: 4.0.1(postcss@8.5.6) - postcss-load-config: 4.0.2(postcss@8.5.6)(ts-node@10.9.2(@swc/core@1.12.1)(@types/node@24.2.0)(typescript@5.8.3)) - postcss-nested: 6.2.0(postcss@8.5.6) - postcss-selector-parser: 6.1.2 - resolve: 1.22.10 - sucrase: 3.35.0 - transitivePeerDependencies: - - ts-node - tailwindcss@3.4.17(patch_hash=cca1bbc79af6902b0fdf11a8edc6eb619e60a0015e27e5c54077b18faa12b5e2)(ts-node@10.9.2(@swc/core@1.12.1)(@types/node@24.2.0)(typescript@5.9.2)): dependencies: '@alloc/quick-lru': 5.2.0 @@ -14304,6 +14580,10 @@ snapshots: transitivePeerDependencies: - ts-node + tailwindcss@4.1.11: {} + + tapable@2.2.2: {} + tar-fs@3.0.10: dependencies: pump: 3.0.3 @@ -14320,6 +14600,15 @@ snapshots: fast-fifo: 1.3.2 streamx: 2.22.1 + tar@7.4.3: + dependencies: + '@isaacs/fs-minipass': 4.0.1 + chownr: 3.0.0 + minipass: 7.1.2 + minizlib: 3.0.2 + mkdirp: 3.0.1 + yallist: 5.0.0 + telejson@6.0.8: dependencies: '@types/is-function': 1.0.3 @@ -14666,13 +14955,13 @@ snapshots: vary@1.1.2: {} - vite-node@3.2.4(@types/node@24.2.0)(jiti@1.21.7)(tsx@4.19.2)(yaml@2.8.0): + vite-node@3.2.4(@types/node@24.2.0)(jiti@2.5.1)(lightningcss@1.30.1)(tsx@4.19.2)(yaml@2.8.0): dependencies: cac: 6.7.14 debug: 4.4.1 es-module-lexer: 1.7.0 pathe: 2.0.3 - vite: 7.0.6(@types/node@24.2.0)(jiti@1.21.7)(tsx@4.19.2)(yaml@2.8.0) + vite: 7.0.6(@types/node@24.2.0)(jiti@2.5.1)(lightningcss@1.30.1)(tsx@4.19.2)(yaml@2.8.0) transitivePeerDependencies: - '@types/node' - jiti @@ -14687,29 +14976,29 @@ snapshots: - tsx - yaml - vite-plugin-cem@0.8.3(vite@7.0.6(@types/node@24.2.0)(jiti@1.21.7)(tsx@4.19.2)(yaml@2.8.0)): + vite-plugin-cem@0.8.3(vite@7.0.6(@types/node@24.2.0)(jiti@2.5.1)(lightningcss@1.30.1)(tsx@4.19.2)(yaml@2.8.0)): dependencies: '@custom-elements-manifest/analyzer': 0.10.4 glob: 8.1.0 typescript: 5.7.3 - vite: 7.0.6(@types/node@24.2.0)(jiti@1.21.7)(tsx@4.19.2)(yaml@2.8.0) + vite: 7.0.6(@types/node@24.2.0)(jiti@2.5.1)(lightningcss@1.30.1)(tsx@4.19.2)(yaml@2.8.0) - vite-plugin-replace@0.1.1(vite@7.0.6(@types/node@24.2.0)(jiti@1.21.7)(tsx@4.19.2)(yaml@2.8.0)): + vite-plugin-replace@0.1.1(vite@7.0.6(@types/node@24.2.0)(jiti@2.5.1)(lightningcss@1.30.1)(tsx@4.19.2)(yaml@2.8.0)): dependencies: - vite: 7.0.6(@types/node@24.2.0)(jiti@1.21.7)(tsx@4.19.2)(yaml@2.8.0) + vite: 7.0.6(@types/node@24.2.0)(jiti@2.5.1)(lightningcss@1.30.1)(tsx@4.19.2)(yaml@2.8.0) - vite-tsconfig-paths@5.1.4(typescript@5.8.3)(vite@7.0.6(@types/node@24.2.0)(jiti@1.21.7)(tsx@4.19.2)(yaml@2.8.0)): + vite-tsconfig-paths@5.1.4(typescript@5.8.3)(vite@7.0.6(@types/node@24.2.0)(jiti@2.5.1)(lightningcss@1.30.1)(tsx@4.19.2)(yaml@2.8.0)): dependencies: debug: 4.4.1 globrex: 0.1.2 tsconfck: 3.1.6(typescript@5.8.3) optionalDependencies: - vite: 7.0.6(@types/node@24.2.0)(jiti@1.21.7)(tsx@4.19.2)(yaml@2.8.0) + vite: 7.0.6(@types/node@24.2.0)(jiti@2.5.1)(lightningcss@1.30.1)(tsx@4.19.2)(yaml@2.8.0) transitivePeerDependencies: - supports-color - typescript - vite@7.0.6(@types/node@24.2.0)(jiti@1.21.7)(tsx@4.19.2)(yaml@2.8.0): + vite@7.0.6(@types/node@24.2.0)(jiti@2.5.1)(lightningcss@1.30.1)(tsx@4.19.2)(yaml@2.8.0): dependencies: esbuild: 0.25.8 fdir: 6.4.6(picomatch@4.0.3) @@ -14720,7 +15009,8 @@ snapshots: optionalDependencies: '@types/node': 24.2.0 fsevents: 2.3.3 - jiti: 1.21.7 + jiti: 2.5.1 + lightningcss: 1.30.1 tsx: 4.19.2 yaml: 2.8.0 @@ -14902,6 +15192,8 @@ snapshots: yallist@3.1.1: {} + yallist@5.0.0: {} + yaml@2.8.0: {} yargs-parser@18.1.3: From 1d42db3c6fc581a80cf2c293d2ff35433f2b1062 Mon Sep 17 00:00:00 2001 From: Paulo Vareiro Date: Tue, 12 Aug 2025 15:28:01 +0100 Subject: [PATCH 002/292] feat: working variable parsing --- .../src/components/button/button.ts | 2 +- packages/docs/.storybook/addons/manager.ts | 14 +- .../addons/theme-generator/Panel.tsx | 300 +- packages/docs/.storybook/preview.css | 35 +- packages/tokens/package.json | 5 + packages/tokens/scripts/build.mjs | 140 +- packages/tokens/scripts/config.js | 14 + .../tokens/scripts/figma/fetch-variables.js | 92 + packages/tokens/scripts/figma/helpers.js | 113 + .../scripts/figma/transform-variables.js | 165 + .../scripts/processors/configuration.js | 193 + .../tokens/scripts/processors/css-builder.js | 72 + packages/tokens/scripts/processors/index.js | 35 + .../scripts/processors/tailwind-generator.js | 85 + .../tokens/scripts/processors/token-engine.js | 205 + .../processors/token-processors/base.js | 135 + .../processors/token-processors/color.js | 68 + .../processors/token-processors/utils.js | 176 + .../src/{ => .deprecated}/create-theme.cjs | 2 +- .../tokens/src/{ => .deprecated}/get-token.js | 2 +- .../{ => .deprecated}/lib/resolve-value.js | 0 .../{ => .deprecated}/lib/sanitize-value.js | 0 .../output/ui-semantic-dark.json | 1023 ++++ .../output/ui-semantic-light.json | 1023 ++++ .../src/figma-variables/variableTokens.json | 5157 +++++++++++++++++ pnpm-lock.yaml | 487 ++ 26 files changed, 9307 insertions(+), 236 deletions(-) create mode 100644 packages/tokens/scripts/config.js create mode 100644 packages/tokens/scripts/figma/fetch-variables.js create mode 100644 packages/tokens/scripts/figma/helpers.js create mode 100644 packages/tokens/scripts/figma/transform-variables.js create mode 100644 packages/tokens/scripts/processors/configuration.js create mode 100644 packages/tokens/scripts/processors/css-builder.js create mode 100644 packages/tokens/scripts/processors/index.js create mode 100644 packages/tokens/scripts/processors/tailwind-generator.js create mode 100644 packages/tokens/scripts/processors/token-engine.js create mode 100644 packages/tokens/scripts/processors/token-processors/base.js create mode 100644 packages/tokens/scripts/processors/token-processors/color.js create mode 100644 packages/tokens/scripts/processors/token-processors/utils.js rename packages/tokens/src/{ => .deprecated}/create-theme.cjs (99%) rename packages/tokens/src/{ => .deprecated}/get-token.js (91%) rename packages/tokens/src/{ => .deprecated}/lib/resolve-value.js (100%) rename packages/tokens/src/{ => .deprecated}/lib/sanitize-value.js (100%) create mode 100644 packages/tokens/src/figma-variables/output/ui-semantic-dark.json create mode 100644 packages/tokens/src/figma-variables/output/ui-semantic-light.json create mode 100644 packages/tokens/src/figma-variables/variableTokens.json diff --git a/packages/components/src/components/button/button.ts b/packages/components/src/components/button/button.ts index d3a99c564b..3af22f1cca 100644 --- a/packages/components/src/components/button/button.ts +++ b/packages/components/src/components/button/button.ts @@ -266,7 +266,7 @@ export default class SdButton extends SolidElement implements SolidFormControl { <${tag} part="base" class=${cx( - `group relative z-10 font-md no-underline + `fill-primary group relative z-10 font-md no-underline w-full align-middle inline-flex items-stretch justify-center transition-colors duration-fast ease-in-out rounded-default select-none cursor-[inherit]`, diff --git a/packages/docs/.storybook/addons/manager.ts b/packages/docs/.storybook/addons/manager.ts index 8b7fca183d..e4f7b1e927 100644 --- a/packages/docs/.storybook/addons/manager.ts +++ b/packages/docs/.storybook/addons/manager.ts @@ -1,18 +1,18 @@ import { addons, types } from 'storybook/manager-api'; import { ADDON_ID as BUG_HINT, TOOL_ID } from './bug-hint/constants'; import { ADDON_ID as THEME_GENERATOR, PANEL_ID } from './theme-generator/constants'; -import { Panel } from './theme-generator/Panel'; +// import { Panel } from './theme-generator/Panel'; import { Tool } from './bug-hint/Tool'; // Register the addon addons.register(THEME_GENERATOR, () => { // Register the panel - addons.add(PANEL_ID, { - type: types.PANEL, - title: '🎨 Theme', - match: ({ viewMode }) => viewMode === 'story', - render: Panel - }); + // addons.add(PANEL_ID, { + // type: types.PANEL, + // title: '🎨 Theme', + // match: ({ viewMode }) => viewMode === 'story', + // render: Panel + // }); }); addons.register(BUG_HINT, () => { diff --git a/packages/docs/.storybook/addons/theme-generator/Panel.tsx b/packages/docs/.storybook/addons/theme-generator/Panel.tsx index 106477df11..e83741a816 100644 --- a/packages/docs/.storybook/addons/theme-generator/Panel.tsx +++ b/packages/docs/.storybook/addons/theme-generator/Panel.tsx @@ -1,150 +1,150 @@ -import React, { useState, useEffect, useCallback } from 'react'; -import { AddonPanel, Form } from 'storybook/internal/components'; -import { PARAM_KEY, PANEL_DEFAULTS } from './constants'; -import { useGlobals } from 'storybook/manager-api'; -import theme from '../../../../tokens/src/create-theme.cjs'; -import { calculateColorsAsCss } from '@solid-design-system/theming'; - -const { Textarea, Button } = Form; - -interface PanelProps { - active: boolean; -} - -export const Panel: React.FC = props => { - const [useNormalizedLuminanceMap, setUseNormalizedLuminanceMap] = useState(PANEL_DEFAULTS.useNormalizedLuminanceMap); - const [useForcedShades, setUseForcedShades] = useState(PANEL_DEFAULTS.useForcedShades); - - const [colors, setColors] = useState(PANEL_DEFAULTS.colors); - - const [output, setOutput] = useState(''); - const [globals, updateGlobals] = useGlobals(); - const isActive = globals[PARAM_KEY] || false; - - const [hexInputs, setHexInputs] = useState({ - primary: PANEL_DEFAULTS.colors.primary, - accent: PANEL_DEFAULTS.colors.accent, - neutral: PANEL_DEFAULTS.colors.neutral - }); - - const useDebouncedEffect = (effect, delay, deps) => { - const callback = useCallback(effect, deps); - - useEffect(() => { - const handler = setTimeout(() => { - callback(); - }, delay); - return () => { - clearTimeout(handler); - }; - }, [callback, delay]); - }; - - useEffect(() => { - setOutput(calculateColorsAsCss(colors, theme, useNormalizedLuminanceMap, useForcedShades)); - }, [colors, useNormalizedLuminanceMap, useForcedShades]); - - useDebouncedEffect( - () => { - const panelState = { - colors, - useNormalizedLuminanceMap, - useForcedShades - }; - updateGlobals({ - [PARAM_KEY + '_STATE']: JSON.stringify(panelState) - }); - }, - 500, - [colors, useNormalizedLuminanceMap, useForcedShades] - ); - - return ( - -
-

Solid Theme Generator

- {['primary', 'accent', 'neutral'].map(colorKey => ( -
- - - {/* Color Picker */} - { - const newColor = e.target.value; - setColors(prev => ({ ...prev, [colorKey]: newColor })); - setHexInputs(prev => ({ ...prev, [colorKey]: newColor })); - }} - /> - - {/* Text Input for Hex Color */} - { - const newHexValue = e.target.value; - setHexInputs(prev => ({ ...prev, [colorKey]: newHexValue })); - - // Check if it's a valid hex color and update the main color state - if (/^#(?:[0-9a-fA-F]{3}){1,2}$/.test(newHexValue)) { - setColors(prev => ({ ...prev, [colorKey]: newHexValue })); - } - }} - style={{ marginLeft: '8px' }} - /> -
- ))} - -
-
- setUseNormalizedLuminanceMap(e.target.checked)} - /> - -
-
- setUseForcedShades(e.target.checked)} - /> - -
-
- -
- -
- -