diff --git a/.changeset/side-self-contained-build.md b/.changeset/side-self-contained-build.md new file mode 100644 index 00000000..989b33ff --- /dev/null +++ b/.changeset/side-self-contained-build.md @@ -0,0 +1,5 @@ +--- +"@sipe-team/side": patch +--- + +Build a self-contained dist by bundling the workspace components and compiling their vanilla-extract styles, so the umbrella package can be consumed by non-vanilla-extract bundlers. A precompiled `dist/index.css` is emitted alongside the JS bundle. diff --git a/.changeset/tokens-drop-theme-layer.md b/.changeset/tokens-drop-theme-layer.md new file mode 100644 index 00000000..7edb20dd --- /dev/null +++ b/.changeset/tokens-drop-theme-layer.md @@ -0,0 +1,5 @@ +--- +"@sipe-team/tokens": patch +--- + +Drop the `@layer theme` wrapper from the generated theme CSS so the token variables resolve as plain `:root` declarations. The cascade layer was unused by any consumer, and the wrapper prevented non-vanilla-extract bundlers from preserving the variables. The variable contract is unchanged; theme switching via `[data-theme]` and runtime `assignInlineVars` are unaffected. diff --git a/packages/side/package.json b/packages/side/package.json index 8ad4b586..d92ab8c0 100644 --- a/packages/side/package.json +++ b/packages/side/package.json @@ -36,6 +36,7 @@ "@sipe-team/flex": "workspace:*" }, "devDependencies": { + "@vanilla-extract/esbuild-plugin": "catalog:", "tsup": "catalog:", "typescript": "catalog:" }, diff --git a/packages/side/tsup.config.ts b/packages/side/tsup.config.ts index c533199b..2d829502 100644 --- a/packages/side/tsup.config.ts +++ b/packages/side/tsup.config.ts @@ -1,3 +1,5 @@ +import { vanillaExtractPlugin } from '@vanilla-extract/esbuild-plugin'; + import { defineConfig } from 'tsup'; export default defineConfig({ @@ -5,4 +7,6 @@ export default defineConfig({ clean: true, dts: true, format: ['esm', 'cjs'], + noExternal: [/@sipe-team\//], + esbuildPlugins: [vanillaExtractPlugin()], }); diff --git a/packages/tokens/src/theme/contract.css.ts b/packages/tokens/src/theme/contract.css.ts index e63e7caa..3b7f39cd 100644 --- a/packages/tokens/src/theme/contract.css.ts +++ b/packages/tokens/src/theme/contract.css.ts @@ -1,6 +1,4 @@ -import { createGlobalThemeContract, globalLayer } from '@vanilla-extract/css'; - -export const themeLayer = globalLayer('theme'); +import { createGlobalThemeContract } from '@vanilla-extract/css'; export const vars = createGlobalThemeContract( { diff --git a/packages/tokens/src/theme/themes.css.ts b/packages/tokens/src/theme/themes.css.ts index a0622c39..4012a8b7 100644 --- a/packages/tokens/src/theme/themes.css.ts +++ b/packages/tokens/src/theme/themes.css.ts @@ -5,10 +5,9 @@ import { radius } from '../effects/radius'; import { shadows } from '../effects/shadows'; import { spacing } from '../layout/spacing'; import { fontSize, fontWeight, lineHeight } from '../typography/fonts'; -import { themeLayer, vars } from './contract.css'; +import { vars } from './contract.css'; const baseTheme = { - '@layer': themeLayer, spacing: { component: { xs: `${spacing[1]}px`, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index e702083f..eaa0e817 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -137,7 +137,7 @@ importers: version: 2.3.22(esbuild@0.27.7) '@vanilla-extract/vite-plugin': specifier: 'catalog:' - version: 5.2.2(@types/node@22.10.1)(esbuild@0.27.7)(jiti@2.4.1)(lightningcss@1.32.0)(terser@5.37.0)(tsx@4.19.2)(vite@5.4.11(@types/node@22.10.1)(lightningcss@1.32.0)(terser@5.37.0))(yaml@2.6.1) + version: 5.2.2(@types/node@22.10.1)(esbuild@0.27.7)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.37.0)(tsx@4.19.2)(vite@5.4.11(@types/node@22.10.1)(lightningcss@1.32.0)(terser@5.37.0))(yaml@2.6.1) '@vitest/coverage-v8': specifier: 'catalog:' version: 2.1.8(vitest@2.1.8(@types/node@22.10.1)(happy-dom@15.11.7)(jsdom@26.1.0)(lightningcss@1.32.0)(terser@5.37.0)) @@ -173,7 +173,7 @@ importers: version: 10.3.5(@testing-library/dom@10.4.0)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) tsup: specifier: 'catalog:' - version: 8.5.1(jiti@2.4.1)(postcss@8.5.9)(tsx@4.19.2)(typescript@5.6.3)(yaml@2.6.1) + version: 8.5.1(jiti@2.7.0)(postcss@8.5.15)(tsx@4.19.2)(typescript@5.6.3)(yaml@2.6.1) tsx: specifier: ^4.19.2 version: 4.19.2 @@ -234,7 +234,7 @@ importers: version: 18.3.1(react@18.3.1) tsup: specifier: 'catalog:' - version: 8.5.1(jiti@2.4.1)(postcss@8.5.9)(tsx@4.19.2)(typescript@5.6.3)(yaml@2.6.1) + version: 8.5.1(jiti@2.7.0)(postcss@8.5.15)(tsx@4.19.2)(typescript@5.6.3)(yaml@2.6.1) typescript: specifier: 'catalog:' version: 5.6.3 @@ -283,7 +283,7 @@ importers: version: 18.3.1(react@18.3.1) tsup: specifier: 'catalog:' - version: 8.5.1(jiti@2.4.1)(postcss@8.5.9)(tsx@4.19.2)(typescript@5.6.3)(yaml@2.6.1) + version: 8.5.1(jiti@2.7.0)(postcss@8.5.15)(tsx@4.19.2)(typescript@5.6.3)(yaml@2.6.1) typescript: specifier: 'catalog:' version: 5.6.3 @@ -329,7 +329,7 @@ importers: version: 13.0.0 tsup: specifier: 'catalog:' - version: 8.5.1(jiti@2.4.1)(postcss@8.5.9)(tsx@4.19.2)(typescript@5.6.3)(yaml@2.6.1) + version: 8.5.1(jiti@2.7.0)(postcss@8.5.15)(tsx@4.19.2)(typescript@5.6.3)(yaml@2.6.1) typescript: specifier: 'catalog:' version: 5.6.3 @@ -381,7 +381,7 @@ importers: version: 13.0.0 tsup: specifier: 'catalog:' - version: 8.5.1(jiti@2.4.1)(postcss@8.5.9)(tsx@4.19.2)(typescript@5.6.3)(yaml@2.6.1) + version: 8.5.1(jiti@2.7.0)(postcss@8.5.15)(tsx@4.19.2)(typescript@5.6.3)(yaml@2.6.1) typescript: specifier: 'catalog:' version: 5.6.3 @@ -430,7 +430,7 @@ importers: version: 13.0.0 tsup: specifier: 'catalog:' - version: 8.5.1(jiti@2.4.1)(postcss@8.5.9)(tsx@4.19.2)(typescript@5.6.3)(yaml@2.6.1) + version: 8.5.1(jiti@2.7.0)(postcss@8.5.15)(tsx@4.19.2)(typescript@5.6.3)(yaml@2.6.1) typescript: specifier: 'catalog:' version: 5.6.3 @@ -476,7 +476,7 @@ importers: version: 18.3.1(react@18.3.1) tsup: specifier: 'catalog:' - version: 8.5.1(jiti@2.4.1)(postcss@8.5.9)(tsx@4.19.2)(typescript@5.6.3)(yaml@2.6.1) + version: 8.5.1(jiti@2.7.0)(postcss@8.5.15)(tsx@4.19.2)(typescript@5.6.3)(yaml@2.6.1) typescript: specifier: 'catalog:' version: 5.6.3 @@ -504,7 +504,7 @@ importers: version: 10.3.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@10.3.5(@testing-library/dom@10.4.0)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(typescript@5.6.3) '@storybook/react-vite': specifier: 'catalog:' - version: 10.3.5(esbuild@0.27.7)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rollup@4.60.1)(storybook@10.3.5(@testing-library/dom@10.4.0)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(typescript@5.6.3)(vite@8.0.8(@types/node@22.10.1)(esbuild@0.27.7)(jiti@2.4.1)(terser@5.37.0)(tsx@4.19.2)(yaml@2.6.1))(webpack@5.97.1(esbuild@0.27.7)) + version: 10.3.5(esbuild@0.27.7)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rollup@4.60.1)(storybook@10.3.5(@testing-library/dom@10.4.0)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(typescript@5.6.3)(vite@8.0.8(@types/node@22.10.1)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.6.1))(webpack@5.97.1(esbuild@0.27.7)) '@testing-library/jest-dom': specifier: 'catalog:' version: 6.6.3 @@ -534,7 +534,7 @@ importers: version: 10.3.5(@testing-library/dom@10.4.0)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) tsup: specifier: 'catalog:' - version: 8.5.1(jiti@2.4.1)(postcss@8.5.9)(tsx@4.19.2)(typescript@5.6.3)(yaml@2.6.1) + version: 8.5.1(jiti@2.7.0)(postcss@8.5.15)(tsx@4.19.2)(typescript@5.6.3)(yaml@2.6.1) typescript: specifier: 'catalog:' version: 5.6.3 @@ -577,7 +577,7 @@ importers: version: 18.3.1(react@18.3.1) tsup: specifier: 'catalog:' - version: 8.5.1(jiti@2.4.1)(postcss@8.5.9)(tsx@4.19.2)(typescript@5.6.3)(yaml@2.6.1) + version: 8.5.1(jiti@2.7.0)(postcss@8.5.15)(tsx@4.19.2)(typescript@5.6.3)(yaml@2.6.1) typescript: specifier: 'catalog:' version: 5.6.3 @@ -620,7 +620,7 @@ importers: version: 18.3.1(react@18.3.1) tsup: specifier: 'catalog:' - version: 8.5.1(jiti@2.4.1)(postcss@8.5.9)(tsx@4.19.2)(typescript@5.6.3)(yaml@2.6.1) + version: 8.5.1(jiti@2.7.0)(postcss@8.5.15)(tsx@4.19.2)(typescript@5.6.3)(yaml@2.6.1) typescript: specifier: 'catalog:' version: 5.6.3 @@ -663,7 +663,7 @@ importers: version: 18.3.1 tsup: specifier: 'catalog:' - version: 8.5.1(jiti@2.4.1)(postcss@8.5.9)(tsx@4.19.2)(typescript@5.6.3)(yaml@2.6.1) + version: 8.5.1(jiti@2.7.0)(postcss@8.5.15)(tsx@4.19.2)(typescript@5.6.3)(yaml@2.6.1) typescript: specifier: 'catalog:' version: 5.6.3 @@ -696,7 +696,7 @@ importers: version: 3.3.2 tsup: specifier: 'catalog:' - version: 8.5.1(jiti@2.4.1)(postcss@8.5.9)(tsx@4.19.2)(typescript@5.6.3)(yaml@2.6.1) + version: 8.5.1(jiti@2.7.0)(postcss@8.5.15)(tsx@4.19.2)(typescript@5.6.3)(yaml@2.6.1) typescript: specifier: 'catalog:' version: 5.6.3 @@ -745,7 +745,7 @@ importers: version: 18.3.1(react@18.3.1) tsup: specifier: 'catalog:' - version: 8.5.1(jiti@2.4.1)(postcss@8.5.9)(tsx@4.19.2)(typescript@5.6.3)(yaml@2.6.1) + version: 8.5.1(jiti@2.7.0)(postcss@8.5.15)(tsx@4.19.2)(typescript@5.6.3)(yaml@2.6.1) typescript: specifier: 'catalog:' version: 5.6.3 @@ -800,7 +800,7 @@ importers: version: 18.3.1(react@18.3.1) tsup: specifier: 'catalog:' - version: 8.5.1(jiti@2.4.1)(postcss@8.5.9)(tsx@4.19.2)(typescript@5.6.3)(yaml@2.6.1) + version: 8.5.1(jiti@2.7.0)(postcss@8.5.15)(tsx@4.19.2)(typescript@5.6.3)(yaml@2.6.1) typescript: specifier: 'catalog:' version: 5.6.3 @@ -828,7 +828,7 @@ importers: version: 18.3.1 tsup: specifier: 'catalog:' - version: 8.5.1(jiti@2.4.1)(postcss@8.5.9)(tsx@4.19.2)(typescript@5.6.3)(yaml@2.6.1) + version: 8.5.1(jiti@2.7.0)(postcss@8.5.15)(tsx@4.19.2)(typescript@5.6.3)(yaml@2.6.1) typescript: specifier: 'catalog:' version: 5.6.3 @@ -884,9 +884,12 @@ importers: specifier: '>= 18' version: 18.3.1(react@18.3.1) devDependencies: + '@vanilla-extract/esbuild-plugin': + specifier: 'catalog:' + version: 2.3.22(esbuild@0.27.7) tsup: specifier: 'catalog:' - version: 8.5.1(jiti@2.4.1)(postcss@8.5.9)(tsx@4.19.2)(typescript@5.6.3)(yaml@2.6.1) + version: 8.5.1(jiti@2.7.0)(postcss@8.5.15)(tsx@4.19.2)(typescript@5.6.3)(yaml@2.6.1) typescript: specifier: 'catalog:' version: 5.6.3 @@ -932,7 +935,7 @@ importers: version: 18.3.1(react@18.3.1) tsup: specifier: 'catalog:' - version: 8.5.1(jiti@2.4.1)(postcss@8.5.9)(tsx@4.19.2)(typescript@5.6.3)(yaml@2.6.1) + version: 8.5.1(jiti@2.7.0)(postcss@8.5.15)(tsx@4.19.2)(typescript@5.6.3)(yaml@2.6.1) typescript: specifier: 'catalog:' version: 5.6.3 @@ -975,7 +978,7 @@ importers: version: 1.20.1 '@vanilla-extract/vite-plugin': specifier: 'catalog:' - version: 5.2.2(@types/node@22.10.1)(esbuild@0.27.7)(jiti@2.4.1)(lightningcss@1.32.0)(terser@5.37.0)(tsx@4.19.2)(vite@8.0.8(@types/node@22.10.1)(esbuild@0.27.7)(jiti@2.4.1)(terser@5.37.0)(tsx@4.19.2)(yaml@2.6.1))(yaml@2.6.1) + version: 5.2.2(@types/node@22.10.1)(esbuild@0.27.7)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.37.0)(tsx@4.19.2)(vite@8.0.8(@types/node@22.10.1)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.6.1))(yaml@2.6.1) happy-dom: specifier: 'catalog:' version: 15.11.7 @@ -987,7 +990,7 @@ importers: version: 18.3.1(react@18.3.1) tsup: specifier: 'catalog:' - version: 8.5.1(jiti@2.4.1)(postcss@8.5.9)(tsx@4.19.2)(typescript@5.6.3)(yaml@2.6.1) + version: 8.5.1(jiti@2.7.0)(postcss@8.5.15)(tsx@4.19.2)(typescript@5.6.3)(yaml@2.6.1) typescript: specifier: 'catalog:' version: 5.6.3 @@ -1024,7 +1027,7 @@ importers: version: 18.3.1(react@18.3.1) tsup: specifier: 'catalog:' - version: 8.5.1(jiti@2.4.1)(postcss@8.5.9)(tsx@4.19.2)(typescript@5.6.3)(yaml@2.6.1) + version: 8.5.1(jiti@2.7.0)(postcss@8.5.15)(tsx@4.19.2)(typescript@5.6.3)(yaml@2.6.1) typescript: specifier: 'catalog:' version: 5.6.3 @@ -1058,7 +1061,7 @@ importers: version: 5.4.0(tslib@2.8.1) tsup: specifier: 'catalog:' - version: 8.5.1(jiti@2.4.1)(postcss@8.5.9)(tsx@4.19.2)(typescript@5.6.3)(yaml@2.6.1) + version: 8.5.1(jiti@2.7.0)(postcss@8.5.15)(tsx@4.19.2)(typescript@5.6.3)(yaml@2.6.1) typescript: specifier: 'catalog:' version: 5.6.3 @@ -1107,7 +1110,7 @@ importers: version: 18.3.1(react@18.3.1) tsup: specifier: 'catalog:' - version: 8.5.1(jiti@2.4.1)(postcss@8.5.9)(tsx@4.19.2)(typescript@5.6.3)(yaml@2.6.1) + version: 8.5.1(jiti@2.7.0)(postcss@8.5.15)(tsx@4.19.2)(typescript@5.6.3)(yaml@2.6.1) typescript: specifier: 'catalog:' version: 5.6.3 @@ -1156,7 +1159,7 @@ importers: version: 18.3.1(react@18.3.1) tsup: specifier: 'catalog:' - version: 8.5.1(jiti@2.4.1)(postcss@8.5.9)(tsx@4.19.2)(typescript@5.6.3)(yaml@2.6.1) + version: 8.5.1(jiti@2.7.0)(postcss@8.5.15)(tsx@4.19.2)(typescript@5.6.3)(yaml@2.6.1) typescript: specifier: 'catalog:' version: 5.6.3 @@ -1168,13 +1171,19 @@ importers: dependencies: '@docusaurus/core': specifier: 3.6.3 - version: 3.6.3(@mdx-js/react@3.1.0(@types/react@18.3.13)(react@18.3.1))(acorn@8.16.0)(esbuild@0.27.7)(eslint@9.20.0(jiti@2.4.1))(lightningcss@1.32.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3) + version: 3.6.3(@mdx-js/react@3.1.0(@types/react@18.3.13)(react@18.3.1))(acorn@8.16.0)(esbuild@0.27.7)(eslint@9.20.0(jiti@2.7.0))(lightningcss@1.32.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3) '@docusaurus/preset-classic': specifier: 3.6.3 - version: 3.6.3(@algolia/client-search@5.20.0)(@mdx-js/react@3.1.0(@types/react@18.3.13)(react@18.3.1))(@types/react@18.3.13)(acorn@8.16.0)(esbuild@0.27.7)(eslint@9.20.0(jiti@2.4.1))(lightningcss@1.32.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(search-insights@2.17.3)(typescript@5.6.3) + version: 3.6.3(@algolia/client-search@5.20.0)(@mdx-js/react@3.1.0(@types/react@18.3.13)(react@18.3.1))(@types/react@18.3.13)(acorn@8.16.0)(esbuild@0.27.7)(eslint@9.20.0(jiti@2.7.0))(lightningcss@1.32.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(search-insights@2.17.3)(typescript@5.6.3) '@mdx-js/react': specifier: ^3.0.0 version: 3.1.0(@types/react@18.3.13)(react@18.3.1) + '@sipe-team/button': + specifier: workspace:* + version: link:../packages/button + '@sipe-team/tokens': + specifier: workspace:^ + version: link:../packages/tokens clsx: specifier: ^2.0.0 version: 2.1.1 @@ -1187,6 +1196,9 @@ importers: react-dom: specifier: ^18.3.1 version: 18.3.1(react@18.3.1) + react-live: + specifier: ^4.1.0 + version: 4.1.8(react-dom@18.3.1(react@18.3.1))(react@18.3.1) devDependencies: '@docusaurus/module-type-aliases': specifier: 3.6.3 @@ -1197,6 +1209,15 @@ importers: '@docusaurus/types': specifier: 3.6.3 version: 3.6.3(acorn@8.16.0)(esbuild@0.27.7)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@tailwindcss/postcss': + specifier: ^4.3.0 + version: 4.3.0 + react-docgen-typescript: + specifier: ^2.2.2 + version: 2.2.2(typescript@5.6.3) + tailwindcss: + specifier: ^4.3.0 + version: 4.3.0 typescript: specifier: ~5.6.2 version: 5.6.3 @@ -1326,6 +1347,10 @@ packages: '@algolia/transporter@4.24.0': resolution: {integrity: sha512-86nI7w6NzWxd1Zp9q3413dRshDqAzSbsQjhcDhPIatEFiZrL1/TjnHL8S7jVKFePlIMzDsZWXAXwXzcok9c5oA==} + '@alloc/quick-lru@5.2.0': + resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==} + engines: {node: '>=10'} + '@ampproject/remapping@2.3.0': resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} engines: {node: '>=6.0.0'} @@ -4017,6 +4042,98 @@ packages: resolution: {integrity: sha512-+PmQX0PiAYPMeVYe237LJAYvOMYW1j2rH5YROyS3b4CTVJum34HfRvKvAzozHAQG0TnHNdUfY9nCeUyRAs//cw==} engines: {node: '>=14.16'} + '@tailwindcss/node@4.3.0': + resolution: {integrity: sha512-aFb4gUhFOgdh9AXo4IzBEOzBkkAxm9VigwDJnMIYv3lcfXCJVesNfbEaBl4BNgVRyid92AmdviqwBUBRKSeY3g==} + + '@tailwindcss/oxide-android-arm64@4.3.0': + resolution: {integrity: sha512-TJPiq67tKlLuObP6RkwvVGDoxCMBVtDgKkLfa/uyj7/FyxvQwHS+UOnVrXXgbEsfUaMgiVvC4KbJnRr26ho4Ng==} + engines: {node: '>= 20'} + cpu: [arm64] + os: [android] + + '@tailwindcss/oxide-darwin-arm64@4.3.0': + resolution: {integrity: sha512-oMN/WZRb+SO37BmUElEgeEWuU8E/HXRkiODxJxLe1UTHVXLrdVSgfaJV7pSlhRGMSOiXLuxTIjfsF3wYvz8cgQ==} + engines: {node: '>= 20'} + cpu: [arm64] + os: [darwin] + + '@tailwindcss/oxide-darwin-x64@4.3.0': + resolution: {integrity: sha512-N6CUmu4a6bKVADfw77p+iw6Yd9Q3OBhe0veaDX+QazfuVYlQsHfDgxBrsjQ/IW+zywL8mTrNd0SdJT/zgtvMdA==} + engines: {node: '>= 20'} + cpu: [x64] + os: [darwin] + + '@tailwindcss/oxide-freebsd-x64@4.3.0': + resolution: {integrity: sha512-zDL5hBkQdH5C6MpqbK3gQAgP80tsMwSI26vjOzjJtNCMUo0lFgOItzHKBIupOZNQxt3ouPH7RPhvNhiTfCe5CQ==} + engines: {node: '>= 20'} + cpu: [x64] + os: [freebsd] + + '@tailwindcss/oxide-linux-arm-gnueabihf@4.3.0': + resolution: {integrity: sha512-R06HdNi7A7OEoMsf6d4tjZ71RCWnZQPHj2mnotSFURjNLdBC+cIgXQ7l81CqeoiQftjf6OOblxXMInMgN2VzMA==} + engines: {node: '>= 20'} + cpu: [arm] + os: [linux] + + '@tailwindcss/oxide-linux-arm64-gnu@4.3.0': + resolution: {integrity: sha512-qTJHELX8jetjhRQHCLilkVLmybpzNQAtaI/gaoVoidn/ufbNDbAo8KlK2J+yPoc8wQxvDxCmh/5lr8nC1+lTbg==} + engines: {node: '>= 20'} + cpu: [arm64] + os: [linux] + libc: [glibc] + + '@tailwindcss/oxide-linux-arm64-musl@4.3.0': + resolution: {integrity: sha512-Z6sukiQsngnWO+l39X4pPbiWT81IC+PLKF+PHxIlyZbGNb9MODfYlXEVlFvej5BOZInWX01kVyzeLvHsXhfczQ==} + engines: {node: '>= 20'} + cpu: [arm64] + os: [linux] + libc: [musl] + + '@tailwindcss/oxide-linux-x64-gnu@4.3.0': + resolution: {integrity: sha512-DRNdQRpSGzRGfARVuVkxvM8Q12nh19l4BF/G7zGA1oe+9wcC6saFBHTISrpIcKzhiXtSrlSrluCfvMuledoCTQ==} + engines: {node: '>= 20'} + cpu: [x64] + os: [linux] + libc: [glibc] + + '@tailwindcss/oxide-linux-x64-musl@4.3.0': + resolution: {integrity: sha512-Z0IADbDo8bh6I7h2IQMx601AdXBLfFpEdUotft86evd/8ZPflZe9COPO8Q1vw+pfLWIUo9zN/JGZvwuAJqduqg==} + engines: {node: '>= 20'} + cpu: [x64] + os: [linux] + libc: [musl] + + '@tailwindcss/oxide-wasm32-wasi@4.3.0': + resolution: {integrity: sha512-HNZGOUxEmElksYR7S6sC5jTeNGpobAsy9u7Gu0AskJ8/20FR9GqebUyB+HBcU/ax6BHuiuJi+Oda4B+YX6H1yA==} + 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.3.0': + resolution: {integrity: sha512-Pe+RPVTi1T+qymuuRpcdvwSVZjnll/f7n8gBxMMh3xLTctMDKqpdfGimbMyioqtLhUYZxdJ9wGNhV7MKHvgZsQ==} + engines: {node: '>= 20'} + cpu: [arm64] + os: [win32] + + '@tailwindcss/oxide-win32-x64-msvc@4.3.0': + resolution: {integrity: sha512-Mvrf2kXW/yeW/OTezZlCGOirXRcUuLIBx/5Y12BaPM7wJoryG6dfS/NJL8aBPqtTEx/Vm4T4vKzFUcKDT+TKUA==} + engines: {node: '>= 20'} + cpu: [x64] + os: [win32] + + '@tailwindcss/oxide@4.3.0': + resolution: {integrity: sha512-F7HZGBeN9I0/AuuJS5PwcD8xayx5ri5GhjYUDBEVYUkexyA/giwbDNjRVrxSezE3T250OU2K/wp/ltWx3UOefg==} + engines: {node: '>= 20'} + + '@tailwindcss/postcss@4.3.0': + resolution: {integrity: sha512-Jm05Tjx+9yCLGv5qw1c+84Psds8MnyrEQYCB+FFk2lgGiUjlRqdxke4mVTuYrj2xnVZqKim2Apr5ySuQRYAw/w==} + '@testing-library/dom@10.4.0': resolution: {integrity: sha512-pemlzrSESWbdAloYml3bAJMEfNh1Z7EduzqPKprCH5S341frlpYnUEW0H72dLxa6IsYr+mPno20GiSm+h9dEdQ==} engines: {node: '>=18'} @@ -5511,6 +5628,10 @@ packages: resolution: {integrity: sha512-LMHl3dXhTcfv8gM4kEzIUeTQ+7fpdA0l2tUf34BddXPkz2A5xJ5L/Pchd5BL6rdccM9QGvu0sWZzK1Z1t4wwyg==} engines: {node: '>=10.13.0'} + enhanced-resolve@5.23.0: + resolution: {integrity: sha512-yJN/BOOLxcOW2aQgeif9mSnaUB8KtvmMMp56oA1kx1CRfBKbhZm2pJ+NBY+3eOboHxix8lfjWpHE0Ei5U8RbSA==} + engines: {node: '>=10.13.0'} + enquirer@2.4.1: resolution: {integrity: sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==} engines: {node: '>=8.6'} @@ -6585,6 +6706,10 @@ packages: resolution: {integrity: sha512-yPBThwecp1wS9DmoA4x4KR2h3QoslacnDR8ypuFM962kI4/456Iy1oHx2RAgh4jfZNdn0bctsdadceiBUgpU1g==} hasBin: true + jiti@2.7.0: + resolution: {integrity: sha512-AC/7JofJvZGrrneWNaEnJeOLUx+JlGt7tNa0wZiRPT4MY1wmfKjt2+6O2p2uz2+skll8OZZmJMNqeke7kKbNgQ==} + hasBin: true + jju@1.4.0: resolution: {integrity: sha512-8wb9Yw966OSxApiCt0K3yNJL8pnNeIv+OEq2YMidz4FKP6nonSRoOXc80iXY4JaN2FC11B9qsNmDsm+ZOfMROA==} @@ -7260,6 +7385,11 @@ packages: engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true + nanoid@3.3.12: + resolution: {integrity: sha512-ZB9RH/39qpq5Vu6Y+NmUaFhQR6pp+M2Xt76XBnEwDaGcVAqhlvxrl3B2bKS5D3NH3QR76v3aSrKaF/Kiy7lEtQ==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + nanoid@3.3.8: resolution: {integrity: sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} @@ -8030,6 +8160,10 @@ packages: resolution: {integrity: sha512-OCVPnIObs4N29kxTjzLfUryOkvZEq+pf8jTF0lg8E7uETuWHA+v7j3c/xJmiqpX450191LlmZfUKkXxkTry7nA==} engines: {node: ^10 || ^12 || >=14} + postcss@8.5.15: + resolution: {integrity: sha512-FfR8sjd4em2T6fb3I2MwAJU7HWVMr9zba+enmQeeWFfCbm+UOC/0X4DS8XtpUTMwWMGbjKYP7xjfNekzyGmB3A==} + engines: {node: ^10 || ^12 || >=14} + postcss@8.5.9: resolution: {integrity: sha512-7a70Nsot+EMX9fFU3064K/kdHWZqGVY+BADLyXc8Dfv+mTLLVl6JzJpPaCZ2kQL9gIJvKXSLMHhqdRRjwQeFtw==} engines: {node: ^10 || ^12 || >=14} @@ -8193,6 +8327,13 @@ packages: peerDependencies: react: ^16.13.1 || ^17.0.0 || ^18.0.0 + react-live@4.1.8: + resolution: {integrity: sha512-B2SgNqwPuS2ekqj4lcxi5TibEcjWkdVyYykBEUBshPAPDQ527x2zPEZg560n8egNtAjUpwXFQm7pcXV65aAYmg==} + engines: {node: '>= 0.12.0', npm: '>= 2.0.0'} + peerDependencies: + react: '>=18.0.0' + react-dom: '>=18.0.0' + react-loadable-ssr-addon-v5-slorber@1.0.1: resolution: {integrity: sha512-lq3Lyw1lGku8zUEJPDxsNm1AfYHBrO9Y1+olAYwpUJ2IGFBskM0DMKok97A6LWUpHm+o7IvQBOWu9MLenp9Z+A==} engines: {node: '>=10.13.0'} @@ -8836,6 +8977,9 @@ packages: symbol-tree@3.2.4: resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==} + tailwindcss@4.3.0: + resolution: {integrity: sha512-y6nxMGB1nMW9R6k96e5gdIFzcfL/gTJRNaqGes1YvkLnPVXzWgbqFF2yLC0T8G774n24cx3Pe8XrKoniCOAH+Q==} + tapable@1.1.3: resolution: {integrity: sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==} engines: {node: '>=6'} @@ -8844,6 +8988,10 @@ packages: resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} engines: {node: '>=6'} + tapable@2.3.3: + resolution: {integrity: sha512-uxc/zpqFg6x7C8vOE7lh6Lbda8eEL9zmVm/PLeTPBRhh1xCgdWaQ+J1CUieGpIfm2HdtsUpRv+HshiasBMcc6A==} + engines: {node: '>=6'} + term-size@2.2.1: resolution: {integrity: sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==} engines: {node: '>=8'} @@ -9151,6 +9299,11 @@ packages: resolution: {integrity: sha512-oCwdVC7mTuWiPyjLUz/COz5TLk6wgp0RCsN+wHZ2Ekneac9w8uuV0njcbbie2ME+Vs+d6duwmYuR3HgQXs1fOg==} engines: {node: '>= 0.4'} + use-editable@2.3.3: + resolution: {integrity: sha512-7wVD2JbfAFJ3DK0vITvXBdpd9JAz5BcKAAolsnLBuBn6UDDwBGuCIAGvR3yA2BNKm578vAMVHFCWaOcA+BhhiA==} + peerDependencies: + react: '>= 16.8.0' + use-sync-external-store@1.6.0: resolution: {integrity: sha512-Pp6GSwGP/NrPIrxVFAIkOQeyw8lFenOHijQWkUTrDvrF4ALqylP2C/KCkeS9dpUM3KvYRQhna5vt7IL95+ZQ9w==} peerDependencies: @@ -9738,6 +9891,8 @@ snapshots: '@algolia/logger-common': 4.24.0 '@algolia/requester-common': 4.24.0 + '@alloc/quick-lru@5.2.0': {} + '@ampproject/remapping@2.3.0': dependencies: '@jridgewell/gen-mapping': 0.3.5 @@ -11317,7 +11472,7 @@ snapshots: - uglify-js - webpack-cli - '@docusaurus/bundler@3.6.3(acorn@8.16.0)(esbuild@0.27.7)(eslint@9.20.0(jiti@2.4.1))(lightningcss@1.32.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3)': + '@docusaurus/bundler@3.6.3(acorn@8.16.0)(esbuild@0.27.7)(eslint@9.20.0(jiti@2.7.0))(lightningcss@1.32.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3)': dependencies: '@babel/core': 7.26.0 '@docusaurus/babel': 3.6.3(acorn@8.16.0)(esbuild@0.27.7)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3) @@ -11338,7 +11493,7 @@ snapshots: postcss: 8.4.49 postcss-loader: 7.3.4(postcss@8.4.49)(typescript@5.6.3)(webpack@5.97.1(esbuild@0.27.7)) postcss-preset-env: 10.1.3(postcss@8.4.49) - react-dev-utils: 12.0.1(eslint@9.20.0(jiti@2.4.1))(typescript@5.6.3)(webpack@5.97.1(esbuild@0.27.7)) + react-dev-utils: 12.0.1(eslint@9.20.0(jiti@2.7.0))(typescript@5.6.3)(webpack@5.97.1(esbuild@0.27.7)) terser-webpack-plugin: 5.3.11(esbuild@0.27.7)(webpack@5.97.1(esbuild@0.27.7)) tslib: 2.8.1 url-loader: 4.1.1(file-loader@6.2.0(webpack@5.97.1(esbuild@0.27.7)))(webpack@5.97.1(esbuild@0.27.7)) @@ -11362,10 +11517,10 @@ snapshots: - vue-template-compiler - webpack-cli - '@docusaurus/core@3.6.3(@mdx-js/react@3.1.0(@types/react@18.3.13)(react@18.3.1))(acorn@8.16.0)(esbuild@0.27.7)(eslint@9.20.0(jiti@2.4.1))(lightningcss@1.32.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3)': + '@docusaurus/core@3.6.3(@mdx-js/react@3.1.0(@types/react@18.3.13)(react@18.3.1))(acorn@8.16.0)(esbuild@0.27.7)(eslint@9.20.0(jiti@2.7.0))(lightningcss@1.32.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3)': dependencies: '@docusaurus/babel': 3.6.3(acorn@8.16.0)(esbuild@0.27.7)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3) - '@docusaurus/bundler': 3.6.3(acorn@8.16.0)(esbuild@0.27.7)(eslint@9.20.0(jiti@2.4.1))(lightningcss@1.32.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3) + '@docusaurus/bundler': 3.6.3(acorn@8.16.0)(esbuild@0.27.7)(eslint@9.20.0(jiti@2.7.0))(lightningcss@1.32.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3) '@docusaurus/logger': 3.6.3 '@docusaurus/mdx-loader': 3.6.3(acorn@8.16.0)(esbuild@0.27.7)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3) '@docusaurus/utils': 3.6.3(acorn@8.16.0)(esbuild@0.27.7)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3) @@ -11392,7 +11547,7 @@ snapshots: p-map: 4.0.0 prompts: 2.4.2 react: 18.3.1 - react-dev-utils: 12.0.1(eslint@9.20.0(jiti@2.4.1))(typescript@5.6.3)(webpack@5.97.1(esbuild@0.27.7)) + react-dev-utils: 12.0.1(eslint@9.20.0(jiti@2.7.0))(typescript@5.6.3)(webpack@5.97.1(esbuild@0.27.7)) react-dom: 18.3.1(react@18.3.1) react-helmet-async: 1.3.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) react-loadable: '@docusaurus/react-loadable@6.0.0(react@18.3.1)' @@ -11498,13 +11653,13 @@ snapshots: - uglify-js - webpack-cli - '@docusaurus/plugin-content-blog@3.6.3(@docusaurus/plugin-content-docs@3.6.3(@mdx-js/react@3.1.0(@types/react@18.3.13)(react@18.3.1))(acorn@8.16.0)(esbuild@0.27.7)(eslint@9.20.0(jiti@2.4.1))(lightningcss@1.32.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3))(@mdx-js/react@3.1.0(@types/react@18.3.13)(react@18.3.1))(acorn@8.16.0)(esbuild@0.27.7)(eslint@9.20.0(jiti@2.4.1))(lightningcss@1.32.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3)': + '@docusaurus/plugin-content-blog@3.6.3(@docusaurus/plugin-content-docs@3.6.3(@mdx-js/react@3.1.0(@types/react@18.3.13)(react@18.3.1))(acorn@8.16.0)(esbuild@0.27.7)(eslint@9.20.0(jiti@2.7.0))(lightningcss@1.32.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3))(@mdx-js/react@3.1.0(@types/react@18.3.13)(react@18.3.1))(acorn@8.16.0)(esbuild@0.27.7)(eslint@9.20.0(jiti@2.7.0))(lightningcss@1.32.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3)': dependencies: - '@docusaurus/core': 3.6.3(@mdx-js/react@3.1.0(@types/react@18.3.13)(react@18.3.1))(acorn@8.16.0)(esbuild@0.27.7)(eslint@9.20.0(jiti@2.4.1))(lightningcss@1.32.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3) + '@docusaurus/core': 3.6.3(@mdx-js/react@3.1.0(@types/react@18.3.13)(react@18.3.1))(acorn@8.16.0)(esbuild@0.27.7)(eslint@9.20.0(jiti@2.7.0))(lightningcss@1.32.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3) '@docusaurus/logger': 3.6.3 '@docusaurus/mdx-loader': 3.6.3(acorn@8.16.0)(esbuild@0.27.7)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3) - '@docusaurus/plugin-content-docs': 3.6.3(@mdx-js/react@3.1.0(@types/react@18.3.13)(react@18.3.1))(acorn@8.16.0)(esbuild@0.27.7)(eslint@9.20.0(jiti@2.4.1))(lightningcss@1.32.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3) - '@docusaurus/theme-common': 3.6.3(@docusaurus/plugin-content-docs@3.6.3(@mdx-js/react@3.1.0(@types/react@18.3.13)(react@18.3.1))(acorn@8.16.0)(esbuild@0.27.7)(eslint@9.20.0(jiti@2.4.1))(lightningcss@1.32.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3))(acorn@8.16.0)(esbuild@0.27.7)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3) + '@docusaurus/plugin-content-docs': 3.6.3(@mdx-js/react@3.1.0(@types/react@18.3.13)(react@18.3.1))(acorn@8.16.0)(esbuild@0.27.7)(eslint@9.20.0(jiti@2.7.0))(lightningcss@1.32.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3) + '@docusaurus/theme-common': 3.6.3(@docusaurus/plugin-content-docs@3.6.3(@mdx-js/react@3.1.0(@types/react@18.3.13)(react@18.3.1))(acorn@8.16.0)(esbuild@0.27.7)(eslint@9.20.0(jiti@2.7.0))(lightningcss@1.32.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3))(acorn@8.16.0)(esbuild@0.27.7)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3) '@docusaurus/types': 3.6.3(acorn@8.16.0)(esbuild@0.27.7)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@docusaurus/utils': 3.6.3(acorn@8.16.0)(esbuild@0.27.7)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3) '@docusaurus/utils-common': 3.6.3(acorn@8.16.0)(esbuild@0.27.7)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) @@ -11542,13 +11697,13 @@ snapshots: - vue-template-compiler - webpack-cli - '@docusaurus/plugin-content-docs@3.6.3(@mdx-js/react@3.1.0(@types/react@18.3.13)(react@18.3.1))(acorn@8.16.0)(esbuild@0.27.7)(eslint@9.20.0(jiti@2.4.1))(lightningcss@1.32.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3)': + '@docusaurus/plugin-content-docs@3.6.3(@mdx-js/react@3.1.0(@types/react@18.3.13)(react@18.3.1))(acorn@8.16.0)(esbuild@0.27.7)(eslint@9.20.0(jiti@2.7.0))(lightningcss@1.32.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3)': dependencies: - '@docusaurus/core': 3.6.3(@mdx-js/react@3.1.0(@types/react@18.3.13)(react@18.3.1))(acorn@8.16.0)(esbuild@0.27.7)(eslint@9.20.0(jiti@2.4.1))(lightningcss@1.32.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3) + '@docusaurus/core': 3.6.3(@mdx-js/react@3.1.0(@types/react@18.3.13)(react@18.3.1))(acorn@8.16.0)(esbuild@0.27.7)(eslint@9.20.0(jiti@2.7.0))(lightningcss@1.32.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3) '@docusaurus/logger': 3.6.3 '@docusaurus/mdx-loader': 3.6.3(acorn@8.16.0)(esbuild@0.27.7)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3) '@docusaurus/module-type-aliases': 3.6.3(acorn@8.16.0)(esbuild@0.27.7)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/theme-common': 3.6.3(@docusaurus/plugin-content-docs@3.6.3(@mdx-js/react@3.1.0(@types/react@18.3.13)(react@18.3.1))(acorn@8.16.0)(esbuild@0.27.7)(eslint@9.20.0(jiti@2.4.1))(lightningcss@1.32.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3))(acorn@8.16.0)(esbuild@0.27.7)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3) + '@docusaurus/theme-common': 3.6.3(@docusaurus/plugin-content-docs@3.6.3(@mdx-js/react@3.1.0(@types/react@18.3.13)(react@18.3.1))(acorn@8.16.0)(esbuild@0.27.7)(eslint@9.20.0(jiti@2.7.0))(lightningcss@1.32.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3))(acorn@8.16.0)(esbuild@0.27.7)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3) '@docusaurus/types': 3.6.3(acorn@8.16.0)(esbuild@0.27.7)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@docusaurus/utils': 3.6.3(acorn@8.16.0)(esbuild@0.27.7)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3) '@docusaurus/utils-common': 3.6.3(acorn@8.16.0)(esbuild@0.27.7)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) @@ -11584,9 +11739,9 @@ snapshots: - vue-template-compiler - webpack-cli - '@docusaurus/plugin-content-pages@3.6.3(@mdx-js/react@3.1.0(@types/react@18.3.13)(react@18.3.1))(acorn@8.16.0)(esbuild@0.27.7)(eslint@9.20.0(jiti@2.4.1))(lightningcss@1.32.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3)': + '@docusaurus/plugin-content-pages@3.6.3(@mdx-js/react@3.1.0(@types/react@18.3.13)(react@18.3.1))(acorn@8.16.0)(esbuild@0.27.7)(eslint@9.20.0(jiti@2.7.0))(lightningcss@1.32.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3)': dependencies: - '@docusaurus/core': 3.6.3(@mdx-js/react@3.1.0(@types/react@18.3.13)(react@18.3.1))(acorn@8.16.0)(esbuild@0.27.7)(eslint@9.20.0(jiti@2.4.1))(lightningcss@1.32.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3) + '@docusaurus/core': 3.6.3(@mdx-js/react@3.1.0(@types/react@18.3.13)(react@18.3.1))(acorn@8.16.0)(esbuild@0.27.7)(eslint@9.20.0(jiti@2.7.0))(lightningcss@1.32.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3) '@docusaurus/mdx-loader': 3.6.3(acorn@8.16.0)(esbuild@0.27.7)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3) '@docusaurus/types': 3.6.3(acorn@8.16.0)(esbuild@0.27.7)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@docusaurus/utils': 3.6.3(acorn@8.16.0)(esbuild@0.27.7)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3) @@ -11617,9 +11772,9 @@ snapshots: - vue-template-compiler - webpack-cli - '@docusaurus/plugin-debug@3.6.3(@mdx-js/react@3.1.0(@types/react@18.3.13)(react@18.3.1))(acorn@8.16.0)(esbuild@0.27.7)(eslint@9.20.0(jiti@2.4.1))(lightningcss@1.32.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3)': + '@docusaurus/plugin-debug@3.6.3(@mdx-js/react@3.1.0(@types/react@18.3.13)(react@18.3.1))(acorn@8.16.0)(esbuild@0.27.7)(eslint@9.20.0(jiti@2.7.0))(lightningcss@1.32.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3)': dependencies: - '@docusaurus/core': 3.6.3(@mdx-js/react@3.1.0(@types/react@18.3.13)(react@18.3.1))(acorn@8.16.0)(esbuild@0.27.7)(eslint@9.20.0(jiti@2.4.1))(lightningcss@1.32.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3) + '@docusaurus/core': 3.6.3(@mdx-js/react@3.1.0(@types/react@18.3.13)(react@18.3.1))(acorn@8.16.0)(esbuild@0.27.7)(eslint@9.20.0(jiti@2.7.0))(lightningcss@1.32.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3) '@docusaurus/types': 3.6.3(acorn@8.16.0)(esbuild@0.27.7)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@docusaurus/utils': 3.6.3(acorn@8.16.0)(esbuild@0.27.7)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3) fs-extra: 11.3.0 @@ -11648,9 +11803,9 @@ snapshots: - vue-template-compiler - webpack-cli - '@docusaurus/plugin-google-analytics@3.6.3(@mdx-js/react@3.1.0(@types/react@18.3.13)(react@18.3.1))(acorn@8.16.0)(esbuild@0.27.7)(eslint@9.20.0(jiti@2.4.1))(lightningcss@1.32.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3)': + '@docusaurus/plugin-google-analytics@3.6.3(@mdx-js/react@3.1.0(@types/react@18.3.13)(react@18.3.1))(acorn@8.16.0)(esbuild@0.27.7)(eslint@9.20.0(jiti@2.7.0))(lightningcss@1.32.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3)': dependencies: - '@docusaurus/core': 3.6.3(@mdx-js/react@3.1.0(@types/react@18.3.13)(react@18.3.1))(acorn@8.16.0)(esbuild@0.27.7)(eslint@9.20.0(jiti@2.4.1))(lightningcss@1.32.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3) + '@docusaurus/core': 3.6.3(@mdx-js/react@3.1.0(@types/react@18.3.13)(react@18.3.1))(acorn@8.16.0)(esbuild@0.27.7)(eslint@9.20.0(jiti@2.7.0))(lightningcss@1.32.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3) '@docusaurus/types': 3.6.3(acorn@8.16.0)(esbuild@0.27.7)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@docusaurus/utils-validation': 3.6.3(acorn@8.16.0)(esbuild@0.27.7)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3) react: 18.3.1 @@ -11677,9 +11832,9 @@ snapshots: - vue-template-compiler - webpack-cli - '@docusaurus/plugin-google-gtag@3.6.3(@mdx-js/react@3.1.0(@types/react@18.3.13)(react@18.3.1))(acorn@8.16.0)(esbuild@0.27.7)(eslint@9.20.0(jiti@2.4.1))(lightningcss@1.32.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3)': + '@docusaurus/plugin-google-gtag@3.6.3(@mdx-js/react@3.1.0(@types/react@18.3.13)(react@18.3.1))(acorn@8.16.0)(esbuild@0.27.7)(eslint@9.20.0(jiti@2.7.0))(lightningcss@1.32.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3)': dependencies: - '@docusaurus/core': 3.6.3(@mdx-js/react@3.1.0(@types/react@18.3.13)(react@18.3.1))(acorn@8.16.0)(esbuild@0.27.7)(eslint@9.20.0(jiti@2.4.1))(lightningcss@1.32.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3) + '@docusaurus/core': 3.6.3(@mdx-js/react@3.1.0(@types/react@18.3.13)(react@18.3.1))(acorn@8.16.0)(esbuild@0.27.7)(eslint@9.20.0(jiti@2.7.0))(lightningcss@1.32.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3) '@docusaurus/types': 3.6.3(acorn@8.16.0)(esbuild@0.27.7)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@docusaurus/utils-validation': 3.6.3(acorn@8.16.0)(esbuild@0.27.7)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3) '@types/gtag.js': 0.0.12 @@ -11707,9 +11862,9 @@ snapshots: - vue-template-compiler - webpack-cli - '@docusaurus/plugin-google-tag-manager@3.6.3(@mdx-js/react@3.1.0(@types/react@18.3.13)(react@18.3.1))(acorn@8.16.0)(esbuild@0.27.7)(eslint@9.20.0(jiti@2.4.1))(lightningcss@1.32.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3)': + '@docusaurus/plugin-google-tag-manager@3.6.3(@mdx-js/react@3.1.0(@types/react@18.3.13)(react@18.3.1))(acorn@8.16.0)(esbuild@0.27.7)(eslint@9.20.0(jiti@2.7.0))(lightningcss@1.32.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3)': dependencies: - '@docusaurus/core': 3.6.3(@mdx-js/react@3.1.0(@types/react@18.3.13)(react@18.3.1))(acorn@8.16.0)(esbuild@0.27.7)(eslint@9.20.0(jiti@2.4.1))(lightningcss@1.32.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3) + '@docusaurus/core': 3.6.3(@mdx-js/react@3.1.0(@types/react@18.3.13)(react@18.3.1))(acorn@8.16.0)(esbuild@0.27.7)(eslint@9.20.0(jiti@2.7.0))(lightningcss@1.32.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3) '@docusaurus/types': 3.6.3(acorn@8.16.0)(esbuild@0.27.7)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@docusaurus/utils-validation': 3.6.3(acorn@8.16.0)(esbuild@0.27.7)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3) react: 18.3.1 @@ -11736,9 +11891,9 @@ snapshots: - vue-template-compiler - webpack-cli - '@docusaurus/plugin-sitemap@3.6.3(@mdx-js/react@3.1.0(@types/react@18.3.13)(react@18.3.1))(acorn@8.16.0)(esbuild@0.27.7)(eslint@9.20.0(jiti@2.4.1))(lightningcss@1.32.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3)': + '@docusaurus/plugin-sitemap@3.6.3(@mdx-js/react@3.1.0(@types/react@18.3.13)(react@18.3.1))(acorn@8.16.0)(esbuild@0.27.7)(eslint@9.20.0(jiti@2.7.0))(lightningcss@1.32.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3)': dependencies: - '@docusaurus/core': 3.6.3(@mdx-js/react@3.1.0(@types/react@18.3.13)(react@18.3.1))(acorn@8.16.0)(esbuild@0.27.7)(eslint@9.20.0(jiti@2.4.1))(lightningcss@1.32.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3) + '@docusaurus/core': 3.6.3(@mdx-js/react@3.1.0(@types/react@18.3.13)(react@18.3.1))(acorn@8.16.0)(esbuild@0.27.7)(eslint@9.20.0(jiti@2.7.0))(lightningcss@1.32.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3) '@docusaurus/logger': 3.6.3 '@docusaurus/types': 3.6.3(acorn@8.16.0)(esbuild@0.27.7)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@docusaurus/utils': 3.6.3(acorn@8.16.0)(esbuild@0.27.7)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3) @@ -11770,20 +11925,20 @@ snapshots: - vue-template-compiler - webpack-cli - '@docusaurus/preset-classic@3.6.3(@algolia/client-search@5.20.0)(@mdx-js/react@3.1.0(@types/react@18.3.13)(react@18.3.1))(@types/react@18.3.13)(acorn@8.16.0)(esbuild@0.27.7)(eslint@9.20.0(jiti@2.4.1))(lightningcss@1.32.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(search-insights@2.17.3)(typescript@5.6.3)': - dependencies: - '@docusaurus/core': 3.6.3(@mdx-js/react@3.1.0(@types/react@18.3.13)(react@18.3.1))(acorn@8.16.0)(esbuild@0.27.7)(eslint@9.20.0(jiti@2.4.1))(lightningcss@1.32.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3) - '@docusaurus/plugin-content-blog': 3.6.3(@docusaurus/plugin-content-docs@3.6.3(@mdx-js/react@3.1.0(@types/react@18.3.13)(react@18.3.1))(acorn@8.16.0)(esbuild@0.27.7)(eslint@9.20.0(jiti@2.4.1))(lightningcss@1.32.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3))(@mdx-js/react@3.1.0(@types/react@18.3.13)(react@18.3.1))(acorn@8.16.0)(esbuild@0.27.7)(eslint@9.20.0(jiti@2.4.1))(lightningcss@1.32.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3) - '@docusaurus/plugin-content-docs': 3.6.3(@mdx-js/react@3.1.0(@types/react@18.3.13)(react@18.3.1))(acorn@8.16.0)(esbuild@0.27.7)(eslint@9.20.0(jiti@2.4.1))(lightningcss@1.32.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3) - '@docusaurus/plugin-content-pages': 3.6.3(@mdx-js/react@3.1.0(@types/react@18.3.13)(react@18.3.1))(acorn@8.16.0)(esbuild@0.27.7)(eslint@9.20.0(jiti@2.4.1))(lightningcss@1.32.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3) - '@docusaurus/plugin-debug': 3.6.3(@mdx-js/react@3.1.0(@types/react@18.3.13)(react@18.3.1))(acorn@8.16.0)(esbuild@0.27.7)(eslint@9.20.0(jiti@2.4.1))(lightningcss@1.32.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3) - '@docusaurus/plugin-google-analytics': 3.6.3(@mdx-js/react@3.1.0(@types/react@18.3.13)(react@18.3.1))(acorn@8.16.0)(esbuild@0.27.7)(eslint@9.20.0(jiti@2.4.1))(lightningcss@1.32.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3) - '@docusaurus/plugin-google-gtag': 3.6.3(@mdx-js/react@3.1.0(@types/react@18.3.13)(react@18.3.1))(acorn@8.16.0)(esbuild@0.27.7)(eslint@9.20.0(jiti@2.4.1))(lightningcss@1.32.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3) - '@docusaurus/plugin-google-tag-manager': 3.6.3(@mdx-js/react@3.1.0(@types/react@18.3.13)(react@18.3.1))(acorn@8.16.0)(esbuild@0.27.7)(eslint@9.20.0(jiti@2.4.1))(lightningcss@1.32.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3) - '@docusaurus/plugin-sitemap': 3.6.3(@mdx-js/react@3.1.0(@types/react@18.3.13)(react@18.3.1))(acorn@8.16.0)(esbuild@0.27.7)(eslint@9.20.0(jiti@2.4.1))(lightningcss@1.32.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3) - '@docusaurus/theme-classic': 3.6.3(@types/react@18.3.13)(acorn@8.16.0)(esbuild@0.27.7)(eslint@9.20.0(jiti@2.4.1))(lightningcss@1.32.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3) - '@docusaurus/theme-common': 3.6.3(@docusaurus/plugin-content-docs@3.6.3(@mdx-js/react@3.1.0(@types/react@18.3.13)(react@18.3.1))(acorn@8.16.0)(esbuild@0.27.7)(eslint@9.20.0(jiti@2.4.1))(lightningcss@1.32.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3))(acorn@8.16.0)(esbuild@0.27.7)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3) - '@docusaurus/theme-search-algolia': 3.6.3(@algolia/client-search@5.20.0)(@mdx-js/react@3.1.0(@types/react@18.3.13)(react@18.3.1))(@types/react@18.3.13)(acorn@8.16.0)(esbuild@0.27.7)(eslint@9.20.0(jiti@2.4.1))(lightningcss@1.32.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(search-insights@2.17.3)(typescript@5.6.3) + '@docusaurus/preset-classic@3.6.3(@algolia/client-search@5.20.0)(@mdx-js/react@3.1.0(@types/react@18.3.13)(react@18.3.1))(@types/react@18.3.13)(acorn@8.16.0)(esbuild@0.27.7)(eslint@9.20.0(jiti@2.7.0))(lightningcss@1.32.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(search-insights@2.17.3)(typescript@5.6.3)': + dependencies: + '@docusaurus/core': 3.6.3(@mdx-js/react@3.1.0(@types/react@18.3.13)(react@18.3.1))(acorn@8.16.0)(esbuild@0.27.7)(eslint@9.20.0(jiti@2.7.0))(lightningcss@1.32.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3) + '@docusaurus/plugin-content-blog': 3.6.3(@docusaurus/plugin-content-docs@3.6.3(@mdx-js/react@3.1.0(@types/react@18.3.13)(react@18.3.1))(acorn@8.16.0)(esbuild@0.27.7)(eslint@9.20.0(jiti@2.7.0))(lightningcss@1.32.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3))(@mdx-js/react@3.1.0(@types/react@18.3.13)(react@18.3.1))(acorn@8.16.0)(esbuild@0.27.7)(eslint@9.20.0(jiti@2.7.0))(lightningcss@1.32.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3) + '@docusaurus/plugin-content-docs': 3.6.3(@mdx-js/react@3.1.0(@types/react@18.3.13)(react@18.3.1))(acorn@8.16.0)(esbuild@0.27.7)(eslint@9.20.0(jiti@2.7.0))(lightningcss@1.32.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3) + '@docusaurus/plugin-content-pages': 3.6.3(@mdx-js/react@3.1.0(@types/react@18.3.13)(react@18.3.1))(acorn@8.16.0)(esbuild@0.27.7)(eslint@9.20.0(jiti@2.7.0))(lightningcss@1.32.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3) + '@docusaurus/plugin-debug': 3.6.3(@mdx-js/react@3.1.0(@types/react@18.3.13)(react@18.3.1))(acorn@8.16.0)(esbuild@0.27.7)(eslint@9.20.0(jiti@2.7.0))(lightningcss@1.32.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3) + '@docusaurus/plugin-google-analytics': 3.6.3(@mdx-js/react@3.1.0(@types/react@18.3.13)(react@18.3.1))(acorn@8.16.0)(esbuild@0.27.7)(eslint@9.20.0(jiti@2.7.0))(lightningcss@1.32.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3) + '@docusaurus/plugin-google-gtag': 3.6.3(@mdx-js/react@3.1.0(@types/react@18.3.13)(react@18.3.1))(acorn@8.16.0)(esbuild@0.27.7)(eslint@9.20.0(jiti@2.7.0))(lightningcss@1.32.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3) + '@docusaurus/plugin-google-tag-manager': 3.6.3(@mdx-js/react@3.1.0(@types/react@18.3.13)(react@18.3.1))(acorn@8.16.0)(esbuild@0.27.7)(eslint@9.20.0(jiti@2.7.0))(lightningcss@1.32.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3) + '@docusaurus/plugin-sitemap': 3.6.3(@mdx-js/react@3.1.0(@types/react@18.3.13)(react@18.3.1))(acorn@8.16.0)(esbuild@0.27.7)(eslint@9.20.0(jiti@2.7.0))(lightningcss@1.32.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3) + '@docusaurus/theme-classic': 3.6.3(@types/react@18.3.13)(acorn@8.16.0)(esbuild@0.27.7)(eslint@9.20.0(jiti@2.7.0))(lightningcss@1.32.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3) + '@docusaurus/theme-common': 3.6.3(@docusaurus/plugin-content-docs@3.6.3(@mdx-js/react@3.1.0(@types/react@18.3.13)(react@18.3.1))(acorn@8.16.0)(esbuild@0.27.7)(eslint@9.20.0(jiti@2.7.0))(lightningcss@1.32.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3))(acorn@8.16.0)(esbuild@0.27.7)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3) + '@docusaurus/theme-search-algolia': 3.6.3(@algolia/client-search@5.20.0)(@mdx-js/react@3.1.0(@types/react@18.3.13)(react@18.3.1))(@types/react@18.3.13)(acorn@8.16.0)(esbuild@0.27.7)(eslint@9.20.0(jiti@2.7.0))(lightningcss@1.32.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(search-insights@2.17.3)(typescript@5.6.3) '@docusaurus/types': 3.6.3(acorn@8.16.0)(esbuild@0.27.7)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) @@ -11816,16 +11971,16 @@ snapshots: '@types/react': 18.3.13 react: 18.3.1 - '@docusaurus/theme-classic@3.6.3(@types/react@18.3.13)(acorn@8.16.0)(esbuild@0.27.7)(eslint@9.20.0(jiti@2.4.1))(lightningcss@1.32.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3)': + '@docusaurus/theme-classic@3.6.3(@types/react@18.3.13)(acorn@8.16.0)(esbuild@0.27.7)(eslint@9.20.0(jiti@2.7.0))(lightningcss@1.32.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3)': dependencies: - '@docusaurus/core': 3.6.3(@mdx-js/react@3.1.0(@types/react@18.3.13)(react@18.3.1))(acorn@8.16.0)(esbuild@0.27.7)(eslint@9.20.0(jiti@2.4.1))(lightningcss@1.32.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3) + '@docusaurus/core': 3.6.3(@mdx-js/react@3.1.0(@types/react@18.3.13)(react@18.3.1))(acorn@8.16.0)(esbuild@0.27.7)(eslint@9.20.0(jiti@2.7.0))(lightningcss@1.32.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3) '@docusaurus/logger': 3.6.3 '@docusaurus/mdx-loader': 3.6.3(acorn@8.16.0)(esbuild@0.27.7)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3) '@docusaurus/module-type-aliases': 3.6.3(acorn@8.16.0)(esbuild@0.27.7)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/plugin-content-blog': 3.6.3(@docusaurus/plugin-content-docs@3.6.3(@mdx-js/react@3.1.0(@types/react@18.3.13)(react@18.3.1))(acorn@8.16.0)(esbuild@0.27.7)(eslint@9.20.0(jiti@2.4.1))(lightningcss@1.32.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3))(@mdx-js/react@3.1.0(@types/react@18.3.13)(react@18.3.1))(acorn@8.16.0)(esbuild@0.27.7)(eslint@9.20.0(jiti@2.4.1))(lightningcss@1.32.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3) - '@docusaurus/plugin-content-docs': 3.6.3(@mdx-js/react@3.1.0(@types/react@18.3.13)(react@18.3.1))(acorn@8.16.0)(esbuild@0.27.7)(eslint@9.20.0(jiti@2.4.1))(lightningcss@1.32.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3) - '@docusaurus/plugin-content-pages': 3.6.3(@mdx-js/react@3.1.0(@types/react@18.3.13)(react@18.3.1))(acorn@8.16.0)(esbuild@0.27.7)(eslint@9.20.0(jiti@2.4.1))(lightningcss@1.32.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3) - '@docusaurus/theme-common': 3.6.3(@docusaurus/plugin-content-docs@3.6.3(@mdx-js/react@3.1.0(@types/react@18.3.13)(react@18.3.1))(acorn@8.16.0)(esbuild@0.27.7)(eslint@9.20.0(jiti@2.4.1))(lightningcss@1.32.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3))(acorn@8.16.0)(esbuild@0.27.7)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3) + '@docusaurus/plugin-content-blog': 3.6.3(@docusaurus/plugin-content-docs@3.6.3(@mdx-js/react@3.1.0(@types/react@18.3.13)(react@18.3.1))(acorn@8.16.0)(esbuild@0.27.7)(eslint@9.20.0(jiti@2.7.0))(lightningcss@1.32.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3))(@mdx-js/react@3.1.0(@types/react@18.3.13)(react@18.3.1))(acorn@8.16.0)(esbuild@0.27.7)(eslint@9.20.0(jiti@2.7.0))(lightningcss@1.32.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3) + '@docusaurus/plugin-content-docs': 3.6.3(@mdx-js/react@3.1.0(@types/react@18.3.13)(react@18.3.1))(acorn@8.16.0)(esbuild@0.27.7)(eslint@9.20.0(jiti@2.7.0))(lightningcss@1.32.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3) + '@docusaurus/plugin-content-pages': 3.6.3(@mdx-js/react@3.1.0(@types/react@18.3.13)(react@18.3.1))(acorn@8.16.0)(esbuild@0.27.7)(eslint@9.20.0(jiti@2.7.0))(lightningcss@1.32.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3) + '@docusaurus/theme-common': 3.6.3(@docusaurus/plugin-content-docs@3.6.3(@mdx-js/react@3.1.0(@types/react@18.3.13)(react@18.3.1))(acorn@8.16.0)(esbuild@0.27.7)(eslint@9.20.0(jiti@2.7.0))(lightningcss@1.32.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3))(acorn@8.16.0)(esbuild@0.27.7)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3) '@docusaurus/theme-translations': 3.6.3 '@docusaurus/types': 3.6.3(acorn@8.16.0)(esbuild@0.27.7)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@docusaurus/utils': 3.6.3(acorn@8.16.0)(esbuild@0.27.7)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3) @@ -11867,11 +12022,11 @@ snapshots: - vue-template-compiler - webpack-cli - '@docusaurus/theme-common@3.6.3(@docusaurus/plugin-content-docs@3.6.3(@mdx-js/react@3.1.0(@types/react@18.3.13)(react@18.3.1))(acorn@8.16.0)(esbuild@0.27.7)(eslint@9.20.0(jiti@2.4.1))(lightningcss@1.32.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3))(acorn@8.16.0)(esbuild@0.27.7)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3)': + '@docusaurus/theme-common@3.6.3(@docusaurus/plugin-content-docs@3.6.3(@mdx-js/react@3.1.0(@types/react@18.3.13)(react@18.3.1))(acorn@8.16.0)(esbuild@0.27.7)(eslint@9.20.0(jiti@2.7.0))(lightningcss@1.32.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3))(acorn@8.16.0)(esbuild@0.27.7)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3)': dependencies: '@docusaurus/mdx-loader': 3.6.3(acorn@8.16.0)(esbuild@0.27.7)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3) '@docusaurus/module-type-aliases': 3.6.3(acorn@8.16.0)(esbuild@0.27.7)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/plugin-content-docs': 3.6.3(@mdx-js/react@3.1.0(@types/react@18.3.13)(react@18.3.1))(acorn@8.16.0)(esbuild@0.27.7)(eslint@9.20.0(jiti@2.4.1))(lightningcss@1.32.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3) + '@docusaurus/plugin-content-docs': 3.6.3(@mdx-js/react@3.1.0(@types/react@18.3.13)(react@18.3.1))(acorn@8.16.0)(esbuild@0.27.7)(eslint@9.20.0(jiti@2.7.0))(lightningcss@1.32.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3) '@docusaurus/utils': 3.6.3(acorn@8.16.0)(esbuild@0.27.7)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3) '@docusaurus/utils-common': 3.6.3(acorn@8.16.0)(esbuild@0.27.7)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@types/history': 4.7.11 @@ -11893,13 +12048,13 @@ snapshots: - uglify-js - webpack-cli - '@docusaurus/theme-search-algolia@3.6.3(@algolia/client-search@5.20.0)(@mdx-js/react@3.1.0(@types/react@18.3.13)(react@18.3.1))(@types/react@18.3.13)(acorn@8.16.0)(esbuild@0.27.7)(eslint@9.20.0(jiti@2.4.1))(lightningcss@1.32.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(search-insights@2.17.3)(typescript@5.6.3)': + '@docusaurus/theme-search-algolia@3.6.3(@algolia/client-search@5.20.0)(@mdx-js/react@3.1.0(@types/react@18.3.13)(react@18.3.1))(@types/react@18.3.13)(acorn@8.16.0)(esbuild@0.27.7)(eslint@9.20.0(jiti@2.7.0))(lightningcss@1.32.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(search-insights@2.17.3)(typescript@5.6.3)': dependencies: '@docsearch/react': 3.8.3(@algolia/client-search@5.20.0)(@types/react@18.3.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(search-insights@2.17.3) - '@docusaurus/core': 3.6.3(@mdx-js/react@3.1.0(@types/react@18.3.13)(react@18.3.1))(acorn@8.16.0)(esbuild@0.27.7)(eslint@9.20.0(jiti@2.4.1))(lightningcss@1.32.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3) + '@docusaurus/core': 3.6.3(@mdx-js/react@3.1.0(@types/react@18.3.13)(react@18.3.1))(acorn@8.16.0)(esbuild@0.27.7)(eslint@9.20.0(jiti@2.7.0))(lightningcss@1.32.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3) '@docusaurus/logger': 3.6.3 - '@docusaurus/plugin-content-docs': 3.6.3(@mdx-js/react@3.1.0(@types/react@18.3.13)(react@18.3.1))(acorn@8.16.0)(esbuild@0.27.7)(eslint@9.20.0(jiti@2.4.1))(lightningcss@1.32.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3) - '@docusaurus/theme-common': 3.6.3(@docusaurus/plugin-content-docs@3.6.3(@mdx-js/react@3.1.0(@types/react@18.3.13)(react@18.3.1))(acorn@8.16.0)(esbuild@0.27.7)(eslint@9.20.0(jiti@2.4.1))(lightningcss@1.32.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3))(acorn@8.16.0)(esbuild@0.27.7)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3) + '@docusaurus/plugin-content-docs': 3.6.3(@mdx-js/react@3.1.0(@types/react@18.3.13)(react@18.3.1))(acorn@8.16.0)(esbuild@0.27.7)(eslint@9.20.0(jiti@2.7.0))(lightningcss@1.32.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3) + '@docusaurus/theme-common': 3.6.3(@docusaurus/plugin-content-docs@3.6.3(@mdx-js/react@3.1.0(@types/react@18.3.13)(react@18.3.1))(acorn@8.16.0)(esbuild@0.27.7)(eslint@9.20.0(jiti@2.7.0))(lightningcss@1.32.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3))(acorn@8.16.0)(esbuild@0.27.7)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3) '@docusaurus/theme-translations': 3.6.3 '@docusaurus/utils': 3.6.3(acorn@8.16.0)(esbuild@0.27.7)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3) '@docusaurus/utils-validation': 3.6.3(acorn@8.16.0)(esbuild@0.27.7)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3) @@ -12271,9 +12426,9 @@ snapshots: '@esbuild/win32-x64@0.27.7': optional: true - '@eslint-community/eslint-utils@4.4.1(eslint@9.20.0(jiti@2.4.1))': + '@eslint-community/eslint-utils@4.4.1(eslint@9.20.0(jiti@2.7.0))': dependencies: - eslint: 9.20.0(jiti@2.4.1) + eslint: 9.20.0(jiti@2.7.0) eslint-visitor-keys: 3.4.3 optional: true @@ -12393,11 +12548,11 @@ snapshots: optionalDependencies: typescript: 5.6.3 - '@joshwooding/vite-plugin-react-docgen-typescript@0.7.0(typescript@5.6.3)(vite@8.0.8(@types/node@22.10.1)(esbuild@0.27.7)(jiti@2.4.1)(terser@5.37.0)(tsx@4.19.2)(yaml@2.6.1))': + '@joshwooding/vite-plugin-react-docgen-typescript@0.7.0(typescript@5.6.3)(vite@8.0.8(@types/node@22.10.1)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.6.1))': dependencies: glob: 13.0.6 react-docgen-typescript: 2.2.2(typescript@5.6.3) - vite: 8.0.8(@types/node@22.10.1)(esbuild@0.27.7)(jiti@2.4.1)(terser@5.37.0)(tsx@4.19.2)(yaml@2.6.1) + vite: 8.0.8(@types/node@22.10.1)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.6.1) optionalDependencies: typescript: 5.6.3 @@ -12956,12 +13111,12 @@ snapshots: - rollup - webpack - '@storybook/builder-vite@10.3.5(esbuild@0.27.7)(rollup@4.60.1)(storybook@10.3.5(@testing-library/dom@10.4.0)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@8.0.8(@types/node@22.10.1)(esbuild@0.27.7)(jiti@2.4.1)(terser@5.37.0)(tsx@4.19.2)(yaml@2.6.1))(webpack@5.97.1(esbuild@0.27.7))': + '@storybook/builder-vite@10.3.5(esbuild@0.27.7)(rollup@4.60.1)(storybook@10.3.5(@testing-library/dom@10.4.0)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@8.0.8(@types/node@22.10.1)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.6.1))(webpack@5.97.1(esbuild@0.27.7))': dependencies: - '@storybook/csf-plugin': 10.3.5(esbuild@0.27.7)(rollup@4.60.1)(storybook@10.3.5(@testing-library/dom@10.4.0)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@8.0.8(@types/node@22.10.1)(esbuild@0.27.7)(jiti@2.4.1)(terser@5.37.0)(tsx@4.19.2)(yaml@2.6.1))(webpack@5.97.1(esbuild@0.27.7)) + '@storybook/csf-plugin': 10.3.5(esbuild@0.27.7)(rollup@4.60.1)(storybook@10.3.5(@testing-library/dom@10.4.0)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@8.0.8(@types/node@22.10.1)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.6.1))(webpack@5.97.1(esbuild@0.27.7)) storybook: 10.3.5(@testing-library/dom@10.4.0)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) ts-dedent: 2.2.0 - vite: 8.0.8(@types/node@22.10.1)(esbuild@0.27.7)(jiti@2.4.1)(terser@5.37.0)(tsx@4.19.2)(yaml@2.6.1) + vite: 8.0.8(@types/node@22.10.1)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.6.1) transitivePeerDependencies: - esbuild - rollup @@ -12977,14 +13132,14 @@ snapshots: vite: 5.4.11(@types/node@22.10.1)(lightningcss@1.32.0)(terser@5.37.0) webpack: 5.97.1(esbuild@0.27.7) - '@storybook/csf-plugin@10.3.5(esbuild@0.27.7)(rollup@4.60.1)(storybook@10.3.5(@testing-library/dom@10.4.0)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@8.0.8(@types/node@22.10.1)(esbuild@0.27.7)(jiti@2.4.1)(terser@5.37.0)(tsx@4.19.2)(yaml@2.6.1))(webpack@5.97.1(esbuild@0.27.7))': + '@storybook/csf-plugin@10.3.5(esbuild@0.27.7)(rollup@4.60.1)(storybook@10.3.5(@testing-library/dom@10.4.0)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@8.0.8(@types/node@22.10.1)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.6.1))(webpack@5.97.1(esbuild@0.27.7))': dependencies: storybook: 10.3.5(@testing-library/dom@10.4.0)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) unplugin: 2.3.11 optionalDependencies: esbuild: 0.27.7 rollup: 4.60.1 - vite: 8.0.8(@types/node@22.10.1)(esbuild@0.27.7)(jiti@2.4.1)(terser@5.37.0)(tsx@4.19.2)(yaml@2.6.1) + vite: 8.0.8(@types/node@22.10.1)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.6.1) webpack: 5.97.1(esbuild@0.27.7) '@storybook/global@5.0.0': {} @@ -13022,11 +13177,11 @@ snapshots: - typescript - webpack - '@storybook/react-vite@10.3.5(esbuild@0.27.7)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rollup@4.60.1)(storybook@10.3.5(@testing-library/dom@10.4.0)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(typescript@5.6.3)(vite@8.0.8(@types/node@22.10.1)(esbuild@0.27.7)(jiti@2.4.1)(terser@5.37.0)(tsx@4.19.2)(yaml@2.6.1))(webpack@5.97.1(esbuild@0.27.7))': + '@storybook/react-vite@10.3.5(esbuild@0.27.7)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rollup@4.60.1)(storybook@10.3.5(@testing-library/dom@10.4.0)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(typescript@5.6.3)(vite@8.0.8(@types/node@22.10.1)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.6.1))(webpack@5.97.1(esbuild@0.27.7))': dependencies: - '@joshwooding/vite-plugin-react-docgen-typescript': 0.7.0(typescript@5.6.3)(vite@8.0.8(@types/node@22.10.1)(esbuild@0.27.7)(jiti@2.4.1)(terser@5.37.0)(tsx@4.19.2)(yaml@2.6.1)) + '@joshwooding/vite-plugin-react-docgen-typescript': 0.7.0(typescript@5.6.3)(vite@8.0.8(@types/node@22.10.1)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.6.1)) '@rollup/pluginutils': 5.1.3(rollup@4.60.1) - '@storybook/builder-vite': 10.3.5(esbuild@0.27.7)(rollup@4.60.1)(storybook@10.3.5(@testing-library/dom@10.4.0)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@8.0.8(@types/node@22.10.1)(esbuild@0.27.7)(jiti@2.4.1)(terser@5.37.0)(tsx@4.19.2)(yaml@2.6.1))(webpack@5.97.1(esbuild@0.27.7)) + '@storybook/builder-vite': 10.3.5(esbuild@0.27.7)(rollup@4.60.1)(storybook@10.3.5(@testing-library/dom@10.4.0)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@8.0.8(@types/node@22.10.1)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.6.1))(webpack@5.97.1(esbuild@0.27.7)) '@storybook/react': 10.3.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@10.3.5(@testing-library/dom@10.4.0)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(typescript@5.6.3) empathic: 2.0.0 magic-string: 0.30.21 @@ -13036,7 +13191,7 @@ snapshots: resolve: 1.22.8 storybook: 10.3.5(@testing-library/dom@10.4.0)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) tsconfig-paths: 4.2.0 - vite: 8.0.8(@types/node@22.10.1)(esbuild@0.27.7)(jiti@2.4.1)(terser@5.37.0)(tsx@4.19.2)(yaml@2.6.1) + vite: 8.0.8(@types/node@22.10.1)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.6.1) transitivePeerDependencies: - esbuild - rollup @@ -13155,6 +13310,75 @@ snapshots: dependencies: defer-to-connect: 2.0.1 + '@tailwindcss/node@4.3.0': + dependencies: + '@jridgewell/remapping': 2.3.5 + enhanced-resolve: 5.23.0 + jiti: 2.7.0 + lightningcss: 1.32.0 + magic-string: 0.30.21 + source-map-js: 1.2.1 + tailwindcss: 4.3.0 + + '@tailwindcss/oxide-android-arm64@4.3.0': + optional: true + + '@tailwindcss/oxide-darwin-arm64@4.3.0': + optional: true + + '@tailwindcss/oxide-darwin-x64@4.3.0': + optional: true + + '@tailwindcss/oxide-freebsd-x64@4.3.0': + optional: true + + '@tailwindcss/oxide-linux-arm-gnueabihf@4.3.0': + optional: true + + '@tailwindcss/oxide-linux-arm64-gnu@4.3.0': + optional: true + + '@tailwindcss/oxide-linux-arm64-musl@4.3.0': + optional: true + + '@tailwindcss/oxide-linux-x64-gnu@4.3.0': + optional: true + + '@tailwindcss/oxide-linux-x64-musl@4.3.0': + optional: true + + '@tailwindcss/oxide-wasm32-wasi@4.3.0': + optional: true + + '@tailwindcss/oxide-win32-arm64-msvc@4.3.0': + optional: true + + '@tailwindcss/oxide-win32-x64-msvc@4.3.0': + optional: true + + '@tailwindcss/oxide@4.3.0': + optionalDependencies: + '@tailwindcss/oxide-android-arm64': 4.3.0 + '@tailwindcss/oxide-darwin-arm64': 4.3.0 + '@tailwindcss/oxide-darwin-x64': 4.3.0 + '@tailwindcss/oxide-freebsd-x64': 4.3.0 + '@tailwindcss/oxide-linux-arm-gnueabihf': 4.3.0 + '@tailwindcss/oxide-linux-arm64-gnu': 4.3.0 + '@tailwindcss/oxide-linux-arm64-musl': 4.3.0 + '@tailwindcss/oxide-linux-x64-gnu': 4.3.0 + '@tailwindcss/oxide-linux-x64-musl': 4.3.0 + '@tailwindcss/oxide-wasm32-wasi': 4.3.0 + '@tailwindcss/oxide-win32-arm64-msvc': 4.3.0 + '@tailwindcss/oxide-win32-x64-msvc': 4.3.0 + + '@tailwindcss/postcss@4.3.0': + dependencies: + '@alloc/quick-lru': 5.2.0 + '@tailwindcss/node': 4.3.0 + '@tailwindcss/oxide': 4.3.0 + postcss: 8.5.15 + tailwindcss: 4.3.0 + '@testing-library/dom@10.4.0': dependencies: '@babel/code-frame': 7.26.2 @@ -13459,12 +13683,12 @@ snapshots: transitivePeerDependencies: - supports-color - '@vanilla-extract/compiler@0.7.0(@types/node@22.10.1)(esbuild@0.27.7)(jiti@2.4.1)(lightningcss@1.32.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.6.1)': + '@vanilla-extract/compiler@0.7.0(@types/node@22.10.1)(esbuild@0.27.7)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.6.1)': dependencies: '@vanilla-extract/css': 1.20.1 '@vanilla-extract/integration': 8.0.10 vite: 5.4.11(@types/node@22.10.1)(lightningcss@1.32.0)(terser@5.37.0) - vite-node: 6.0.0(@types/node@22.10.1)(esbuild@0.27.7)(jiti@2.4.1)(terser@5.37.0)(tsx@4.19.2)(yaml@2.6.1) + vite-node: 6.0.0(@types/node@22.10.1)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.6.1) transitivePeerDependencies: - '@types/node' - '@vitejs/devtools' @@ -13533,9 +13757,9 @@ snapshots: dependencies: '@vanilla-extract/css': 1.20.1 - '@vanilla-extract/vite-plugin@5.2.2(@types/node@22.10.1)(esbuild@0.27.7)(jiti@2.4.1)(lightningcss@1.32.0)(terser@5.37.0)(tsx@4.19.2)(vite@5.4.11(@types/node@22.10.1)(lightningcss@1.32.0)(terser@5.37.0))(yaml@2.6.1)': + '@vanilla-extract/vite-plugin@5.2.2(@types/node@22.10.1)(esbuild@0.27.7)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.37.0)(tsx@4.19.2)(vite@5.4.11(@types/node@22.10.1)(lightningcss@1.32.0)(terser@5.37.0))(yaml@2.6.1)': dependencies: - '@vanilla-extract/compiler': 0.7.0(@types/node@22.10.1)(esbuild@0.27.7)(jiti@2.4.1)(lightningcss@1.32.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.6.1) + '@vanilla-extract/compiler': 0.7.0(@types/node@22.10.1)(esbuild@0.27.7)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.6.1) '@vanilla-extract/integration': 8.0.10 vite: 5.4.11(@types/node@22.10.1)(lightningcss@1.32.0)(terser@5.37.0) transitivePeerDependencies: @@ -13555,11 +13779,11 @@ snapshots: - tsx - yaml - '@vanilla-extract/vite-plugin@5.2.2(@types/node@22.10.1)(esbuild@0.27.7)(jiti@2.4.1)(lightningcss@1.32.0)(terser@5.37.0)(tsx@4.19.2)(vite@8.0.8(@types/node@22.10.1)(esbuild@0.27.7)(jiti@2.4.1)(terser@5.37.0)(tsx@4.19.2)(yaml@2.6.1))(yaml@2.6.1)': + '@vanilla-extract/vite-plugin@5.2.2(@types/node@22.10.1)(esbuild@0.27.7)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.37.0)(tsx@4.19.2)(vite@8.0.8(@types/node@22.10.1)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.6.1))(yaml@2.6.1)': dependencies: - '@vanilla-extract/compiler': 0.7.0(@types/node@22.10.1)(esbuild@0.27.7)(jiti@2.4.1)(lightningcss@1.32.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.6.1) + '@vanilla-extract/compiler': 0.7.0(@types/node@22.10.1)(esbuild@0.27.7)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.6.1) '@vanilla-extract/integration': 8.0.10 - vite: 8.0.8(@types/node@22.10.1)(esbuild@0.27.7)(jiti@2.4.1)(terser@5.37.0)(tsx@4.19.2)(yaml@2.6.1) + vite: 8.0.8(@types/node@22.10.1)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.6.1) transitivePeerDependencies: - '@types/node' - '@vitejs/devtools' @@ -14898,6 +15122,11 @@ snapshots: graceful-fs: 4.2.11 tapable: 2.2.1 + enhanced-resolve@5.23.0: + dependencies: + graceful-fs: 4.2.11 + tapable: 2.3.3 + enquirer@2.4.1: dependencies: ansi-colors: 4.1.3 @@ -15052,9 +15281,9 @@ snapshots: eslint-visitor-keys@4.2.0: optional: true - eslint@9.20.0(jiti@2.4.1): + eslint@9.20.0(jiti@2.7.0): dependencies: - '@eslint-community/eslint-utils': 4.4.1(eslint@9.20.0(jiti@2.4.1)) + '@eslint-community/eslint-utils': 4.4.1(eslint@9.20.0(jiti@2.7.0)) '@eslint-community/regexpp': 4.12.1 '@eslint/config-array': 0.19.1 '@eslint/core': 0.11.0 @@ -15089,7 +15318,7 @@ snapshots: natural-compare: 1.4.0 optionator: 0.9.4 optionalDependencies: - jiti: 2.4.1 + jiti: 2.7.0 transitivePeerDependencies: - supports-color optional: true @@ -15390,7 +15619,7 @@ snapshots: cross-spawn: 7.0.6 signal-exit: 4.1.0 - fork-ts-checker-webpack-plugin@6.5.3(eslint@9.20.0(jiti@2.4.1))(typescript@5.6.3)(webpack@5.97.1(esbuild@0.27.7)): + fork-ts-checker-webpack-plugin@6.5.3(eslint@9.20.0(jiti@2.7.0))(typescript@5.6.3)(webpack@5.97.1(esbuild@0.27.7)): dependencies: '@babel/code-frame': 7.26.2 '@types/json-schema': 7.0.15 @@ -15408,7 +15637,7 @@ snapshots: typescript: 5.6.3 webpack: 5.97.1(esbuild@0.27.7) optionalDependencies: - eslint: 9.20.0(jiti@2.4.1) + eslint: 9.20.0(jiti@2.7.0) form-data-encoder@2.1.4: {} @@ -16198,6 +16427,8 @@ snapshots: jiti@2.4.1: {} + jiti@2.7.0: {} + jju@1.4.0: {} joi@17.13.3: @@ -17146,6 +17377,8 @@ snapshots: nanoid@3.3.11: {} + nanoid@3.3.12: {} + nanoid@3.3.8: {} natural-compare@1.4.0: @@ -17620,12 +17853,12 @@ snapshots: '@csstools/utilities': 2.0.0(postcss@8.4.49) postcss: 8.4.49 - postcss-load-config@6.0.1(jiti@2.4.1)(postcss@8.5.9)(tsx@4.19.2)(yaml@2.6.1): + postcss-load-config@6.0.1(jiti@2.7.0)(postcss@8.5.15)(tsx@4.19.2)(yaml@2.6.1): dependencies: lilconfig: 3.1.3 optionalDependencies: - jiti: 2.4.1 - postcss: 8.5.9 + jiti: 2.7.0 + postcss: 8.5.15 tsx: 4.19.2 yaml: 2.6.1 @@ -17922,6 +18155,12 @@ snapshots: picocolors: 1.1.1 source-map-js: 1.2.1 + postcss@8.5.15: + dependencies: + nanoid: 3.3.12 + picocolors: 1.1.1 + source-map-js: 1.2.1 + postcss@8.5.9: dependencies: nanoid: 3.3.11 @@ -18026,7 +18265,7 @@ snapshots: minimist: 1.2.8 strip-json-comments: 2.0.1 - react-dev-utils@12.0.1(eslint@9.20.0(jiti@2.4.1))(typescript@5.6.3)(webpack@5.97.1(esbuild@0.27.7)): + react-dev-utils@12.0.1(eslint@9.20.0(jiti@2.7.0))(typescript@5.6.3)(webpack@5.97.1(esbuild@0.27.7)): dependencies: '@babel/code-frame': 7.26.2 address: 1.2.2 @@ -18037,7 +18276,7 @@ snapshots: escape-string-regexp: 4.0.0 filesize: 8.0.7 find-up: 5.0.0 - fork-ts-checker-webpack-plugin: 6.5.3(eslint@9.20.0(jiti@2.4.1))(typescript@5.6.3)(webpack@5.97.1(esbuild@0.27.7)) + fork-ts-checker-webpack-plugin: 6.5.3(eslint@9.20.0(jiti@2.7.0))(typescript@5.6.3)(webpack@5.97.1(esbuild@0.27.7)) global-modules: 2.0.0 globby: 11.1.0 gzip-size: 6.0.0 @@ -18114,6 +18353,14 @@ snapshots: dependencies: react: 18.3.1 + react-live@4.1.8(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + dependencies: + prism-react-renderer: 2.4.1(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + sucrase: 3.35.0 + use-editable: 2.3.3(react@18.3.1) + react-loadable-ssr-addon-v5-slorber@1.0.1(@docusaurus/react-loadable@6.0.0(react@18.3.1))(webpack@5.97.1(esbuild@0.27.7)): dependencies: '@babel/runtime': 7.26.0 @@ -18970,10 +19217,14 @@ snapshots: symbol-tree@3.2.4: optional: true + tailwindcss@4.3.0: {} + tapable@1.1.3: {} tapable@2.2.1: {} + tapable@2.3.3: {} + term-size@2.2.1: {} terser-webpack-plugin@5.3.11(esbuild@0.27.7)(webpack@5.97.1(esbuild@0.27.7)): @@ -19099,7 +19350,7 @@ snapshots: tslib@2.8.1: {} - tsup@8.5.1(jiti@2.4.1)(postcss@8.5.9)(tsx@4.19.2)(typescript@5.6.3)(yaml@2.6.1): + tsup@8.5.1(jiti@2.7.0)(postcss@8.5.15)(tsx@4.19.2)(typescript@5.6.3)(yaml@2.6.1): dependencies: bundle-require: 5.1.0(esbuild@0.27.7) cac: 6.7.14 @@ -19110,7 +19361,7 @@ snapshots: fix-dts-default-cjs-exports: 1.0.1 joycon: 3.1.1 picocolors: 1.1.1 - postcss-load-config: 6.0.1(jiti@2.4.1)(postcss@8.5.9)(tsx@4.19.2)(yaml@2.6.1) + postcss-load-config: 6.0.1(jiti@2.7.0)(postcss@8.5.15)(tsx@4.19.2)(yaml@2.6.1) resolve-from: 5.0.0 rollup: 4.60.1 source-map: 0.7.6 @@ -19119,7 +19370,7 @@ snapshots: tinyglobby: 0.2.16 tree-kill: 1.2.2 optionalDependencies: - postcss: 8.5.9 + postcss: 8.5.15 typescript: 5.6.3 transitivePeerDependencies: - jiti @@ -19270,6 +19521,10 @@ snapshots: punycode: 1.4.1 qs: 6.13.0 + use-editable@2.3.3(react@18.3.1): + dependencies: + react: 18.3.1 + use-sync-external-store@1.6.0(react@18.3.1): dependencies: react: 18.3.1 @@ -19333,13 +19588,13 @@ snapshots: - supports-color - terser - vite-node@6.0.0(@types/node@22.10.1)(esbuild@0.27.7)(jiti@2.4.1)(terser@5.37.0)(tsx@4.19.2)(yaml@2.6.1): + vite-node@6.0.0(@types/node@22.10.1)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.6.1): dependencies: cac: 7.0.0 es-module-lexer: 2.0.0 obug: 2.1.1 pathe: 2.0.3 - vite: 8.0.8(@types/node@22.10.1)(esbuild@0.27.7)(jiti@2.4.1)(terser@5.37.0)(tsx@4.19.2)(yaml@2.6.1) + vite: 8.0.8(@types/node@22.10.1)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.6.1) transitivePeerDependencies: - '@types/node' - '@vitejs/devtools' @@ -19365,7 +19620,7 @@ snapshots: lightningcss: 1.32.0 terser: 5.37.0 - vite@8.0.8(@types/node@22.10.1)(esbuild@0.27.7)(jiti@2.4.1)(terser@5.37.0)(tsx@4.19.2)(yaml@2.6.1): + vite@8.0.8(@types/node@22.10.1)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.6.1): dependencies: lightningcss: 1.32.0 picomatch: 4.0.4 @@ -19376,7 +19631,7 @@ snapshots: '@types/node': 22.10.1 esbuild: 0.27.7 fsevents: 2.3.3 - jiti: 2.4.1 + jiti: 2.7.0 terser: 5.37.0 tsx: 4.19.2 yaml: 2.6.1 diff --git a/www/.gitignore b/www/.gitignore new file mode 100644 index 00000000..0be78821 --- /dev/null +++ b/www/.gitignore @@ -0,0 +1,2 @@ +# Auto-generated props metadata (build-time extraction output) +src/.generated/ diff --git a/www/docs/components/button.mdx b/www/docs/components/button.mdx new file mode 100644 index 00000000..9dd694b5 --- /dev/null +++ b/www/docs/components/button.mdx @@ -0,0 +1,25 @@ +--- +title: Button +--- + +# Button + +## Setup + +```sh +npm install @sipe-team/button +``` + +## Usage + +```tsx +import { Button } from '@sipe-team/button'; +``` + +```tsx + +``` + +## Playground + + diff --git a/www/docusaurus.config.ts b/www/docusaurus.config.ts index b35dcdf0..3e466dd1 100644 --- a/www/docusaurus.config.ts +++ b/www/docusaurus.config.ts @@ -1,7 +1,15 @@ +import path from 'node:path'; +import { fileURLToPath } from 'node:url'; + import type * as Preset from '@docusaurus/preset-classic'; import type { Config } from '@docusaurus/types'; +import tailwindcssPostcss from '@tailwindcss/postcss'; import { themes as prismThemes } from 'prism-react-renderer'; +const __dirname = path.dirname(fileURLToPath(import.meta.url)); +const sideDist = path.resolve(__dirname, '../packages/side/dist/index.js'); +const sideCss = path.resolve(__dirname, '../packages/side/dist/index.css'); + export default { title: 'Side', tagline: 'Sipe Design System', @@ -26,12 +34,34 @@ export default { }, blog: false, theme: { - customCss: './src/custom.css', + customCss: ['./src/custom.css', sideCss], }, } satisfies Preset.Options, ], ], + plugins: [ + () => ({ + name: 'playground-workspace-dist-aliases', + configureWebpack() { + return { + resolve: { + alias: { + '@sipe-team/side': sideDist, + }, + }, + }; + }, + }), + () => ({ + name: 'playground-tailwind', + configurePostCss(postcssOptions) { + postcssOptions.plugins.push(tailwindcssPostcss()); + return postcssOptions; + }, + }), + ], + themeConfig: { image: 'img/docusaurus-social-card.jpg', navbar: { diff --git a/www/package.json b/www/package.json index 5a2fb264..7187067c 100644 --- a/www/package.json +++ b/www/package.json @@ -5,6 +5,7 @@ "scripts": { "dev": "docusaurus start", "build": "docusaurus build", + "prebuild": "pnpm --filter @sipe-team/side build && pnpm run extract:props", "swizzle": "docusaurus swizzle", "deploy": "docusaurus deploy", "clear": "docusaurus clear", @@ -12,21 +13,28 @@ "write-translations": "docusaurus write-translations", "write-heading-ids": "docusaurus write-heading-ids", "typecheck": "tsc", - "clean": "rm -rf node_modules build .docusaurus" + "clean": "rm -rf node_modules build .docusaurus", + "extract:props": "node scripts/extract-props.mjs --component button" }, "dependencies": { "@docusaurus/core": "3.6.3", "@docusaurus/preset-classic": "3.6.3", "@mdx-js/react": "^3.0.0", + "@sipe-team/button": "workspace:*", + "@sipe-team/tokens": "workspace:^", "clsx": "^2.0.0", "prism-react-renderer": "^2.3.0", "react": "^18.3.1", - "react-dom": "^18.3.1" + "react-dom": "^18.3.1", + "react-live": "^4.1.0" }, "devDependencies": { "@docusaurus/module-type-aliases": "3.6.3", "@docusaurus/tsconfig": "3.6.3", "@docusaurus/types": "3.6.3", + "@tailwindcss/postcss": "^4.3.0", + "react-docgen-typescript": "^2.2.2", + "tailwindcss": "^4.3.0", "typescript": "~5.6.2" }, "browserslist": { diff --git a/www/scripts/extract-props.mjs b/www/scripts/extract-props.mjs new file mode 100644 index 00000000..eb61555d --- /dev/null +++ b/www/scripts/extract-props.mjs @@ -0,0 +1,70 @@ +#!/usr/bin/env node +/** + * Build-time props extraction. + * Usage: node scripts/extract-props.mjs --component + */ + +import fs from 'node:fs'; +import { createRequire } from 'node:module'; +import path from 'node:path'; +import { fileURLToPath } from 'node:url'; + +const require = createRequire(import.meta.url); +const __dirname = path.dirname(fileURLToPath(import.meta.url)); +const repoRoot = path.resolve(__dirname, '..', '..'); +const outputDir = path.resolve(__dirname, '..', 'src', '.generated', 'props'); + +function toPascalCase(name) { + return name + .split('-') + .map((s) => s.charAt(0).toUpperCase() + s.slice(1)) + .join(''); +} + +function formatType(type) { + if (!type) return { name: 'unknown' }; + if (Array.isArray(type.value)) { + return { + name: type.name, + value: type.value.map((v) => (typeof v === 'object' ? v.value : v)), + }; + } + return { name: type.name }; +} + +function extractProps(name) { + const reactDocgenTypescript = require('react-docgen-typescript'); + const source = path.resolve(repoRoot, 'packages', name, 'src', `${toPascalCase(name)}.tsx`); + if (!fs.existsSync(source)) throw new Error(`Source file not found: ${source}`); + + const parser = reactDocgenTypescript.withDefaultConfig({ + savePropValueAsString: true, + shouldExtractValuesFromUnion: true, + shouldRemoveUndefinedFromOptional: true, + propFilter: (prop) => (prop.parent ? !prop.parent.fileName.includes('node_modules') : true), + }); + const [doc] = parser.parse(source); + if (!doc) return []; + + return Object.values(doc.props).map((p) => ({ + name: p.name, + type: formatType(p.type), + defaultValue: p.defaultValue ? { value: p.defaultValue.value } : null, + required: p.required, + description: p.description || '', + })); +} + +const args = process.argv.slice(2); +const idx = args.indexOf('--component'); +const name = args[idx + 1]; +// Restrict to lowercase alphanumeric+hyphen so the resolved source path cannot escape packages/. +if (idx === -1 || !name || !/^[a-z][a-z0-9-]*$/.test(name)) { + console.error('Usage: node scripts/extract-props.mjs --component '); + process.exit(1); +} + +const props = extractProps(name); +fs.mkdirSync(outputDir, { recursive: true }); +fs.writeFileSync(path.resolve(outputDir, `${name}.json`), JSON.stringify(props, null, 2)); +console.log(`[extract-props] ${name}: ${props.length} props`); diff --git a/www/src/components/Playground/ControlsPanel.tsx b/www/src/components/Playground/ControlsPanel.tsx new file mode 100644 index 00000000..051e46b5 --- /dev/null +++ b/www/src/components/Playground/ControlsPanel.tsx @@ -0,0 +1,106 @@ +import { Fragment } from 'react'; + +import { unquote } from './generateCode'; + +type PropDescriptor = { + name: string; + type: { name: string; value?: string[] }; + defaultValue: { value: string } | null; + required: boolean; + description: string; +}; + +type ControlsPanelProps = { + propsSchema: readonly PropDescriptor[]; + values: Record; + onChange: (name: string, value: string) => void; +}; + +const fieldClass = + 'rounded-md border border-gray-300 bg-white px-3 py-1.5 text-sm text-gray-900 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-gray-900/30 focus-visible:border-gray-400'; + +const checkboxClass = 'h-4 w-4 accent-[var(--side-color-accent-default,#ffb24d)]'; + +function isBooleanEnum(type: PropDescriptor['type']): boolean { + return ( + type.name === 'enum' && + type.value?.length === 2 && + type.value.every((v) => unquote(v) === 'true' || unquote(v) === 'false') + ); +} + +function isControllable(prop: PropDescriptor): boolean { + const { type } = prop; + return (type.name === 'enum' && !!type.value) || type.name === 'boolean' || type.name === 'string'; +} + +export function ControlsPanel({ propsSchema, values, onChange }: ControlsPanelProps) { + const controls = propsSchema.filter(isControllable); + + return ( +
+
Controls
+ {controls.length === 0 ? ( +

No adjustable props

+ ) : ( +
+ {controls.map((prop) => { + const { name, type } = prop; + const id = `ctrl-${name}`; + const checked = values[name] === 'true'; + + let control: JSX.Element; + if (isBooleanEnum(type) || type.name === 'boolean') { + control = ( + onChange(name, e.target.checked ? 'true' : 'false')} + /> + ); + } else if (type.name === 'enum' && type.value) { + control = ( + + ); + } else { + control = ( + onChange(name, e.target.value)} + /> + ); + } + + return ( + + + {control} + + ); + })} +
+ )} +
+ ); +} diff --git a/www/src/components/Playground/Playground.tsx b/www/src/components/Playground/Playground.tsx new file mode 100644 index 00000000..a1d6547c --- /dev/null +++ b/www/src/components/Playground/Playground.tsx @@ -0,0 +1,114 @@ +import { useMemo, useState } from 'react'; +import { LiveEditor, LiveError, LivePreview, LiveProvider } from 'react-live'; + +import BrowserOnly from '@docusaurus/BrowserOnly'; +import { themes } from 'prism-react-renderer'; + +import { ControlsPanel } from './ControlsPanel'; +import { generateCode, initialDefaults } from './generateCode'; +import { PropTable } from './PropTable'; +import { type ComponentRegistryKey, componentRegistry } from './registry'; + +type PlaygroundProps = { + component: string; +}; + +type RegistryEntry = (typeof componentRegistry)[ComponentRegistryKey]; + +const sectionLabel = 'px-4 py-2.5 text-sm font-medium text-gray-500'; + +// A dark "stage" with a soft center spotlight and a faint dot grid, so the +// component reads as placed on a surface rather than floating in a black void. +const stageStyle: React.CSSProperties = { + backgroundColor: 'var(--side-color-background-base, #111111)', + backgroundImage: + 'radial-gradient(ellipse 70% 55% at 50% 42%, rgba(255,255,255,0.10), rgba(255,255,255,0) 70%), radial-gradient(rgba(255,255,255,0.06) 1px, transparent 1.5px)', + backgroundSize: '100% 100%, 18px 18px', +}; + +function CopyButton({ code }: { code: string }) { + const [copied, setCopied] = useState(false); + return ( + + ); +} + +function PlaygroundInner({ entry, componentKey }: { entry: RegistryEntry; componentKey: string }) { + const componentName = componentKey.charAt(0).toUpperCase() + componentKey.slice(1); + + const [controlValues, setControlValues] = useState>(() => + initialDefaults(entry.props as Parameters[0]), + ); + + const code = useMemo( + () => generateCode(componentName, controlValues, entry.defaultChildren), + [componentName, controlValues, entry.defaultChildren], + ); + + return ( +
+ } theme={themes.vsDark}> + {/* Preview: a dark stage so the component renders on its intended token background */} +
+
Preview
+
+ +
+
+ + {/* Code: always visible alongside the preview so control edits update both at once */} +
+
+ Code + +
+ +
+ + + + {/* Controls */} + [0]['propsSchema']} + values={controlValues} + onChange={(name, value) => setControlValues((prev) => ({ ...prev, [name]: value }))} + /> +
+ + {/* Props */} +
+
Props
+ [0]['propsSchema']} /> +
+
+ ); +} + +export function Playground({ component }: PlaygroundProps) { + const entry = componentRegistry[component as ComponentRegistryKey]; + + if (!entry) { + return ( +
+ Unknown component: "{component}". Available: {Object.keys(componentRegistry).join(', ')} +
+ ); + } + + return ( + Loading playground...}> + {() => } + + ); +} diff --git a/www/src/components/Playground/PropTable.tsx b/www/src/components/Playground/PropTable.tsx new file mode 100644 index 00000000..d48b21fb --- /dev/null +++ b/www/src/components/Playground/PropTable.tsx @@ -0,0 +1,68 @@ +import { unquote } from './generateCode'; + +type PropDescriptor = { + name: string; + type: { name: string; value?: string[] }; + defaultValue: { value: string } | null; + required: boolean; + description: string; +}; + +type PropTableProps = { + propsSchema: readonly PropDescriptor[]; +}; + +const headCell = 'border-b border-gray-200 px-4 py-2.5 text-left text-sm font-medium text-gray-500'; +const bodyCell = 'border-b border-gray-100 px-4 py-3 align-top'; +const chip = 'inline-block break-words rounded bg-gray-100 px-1.5 py-0.5 font-mono text-[13px] leading-5'; + +function renderType(prop: PropDescriptor): string { + if (prop.type.name === 'enum' && prop.type.value) { + return prop.type.value.map((v) => `"${unquote(v)}"`).join(' | '); + } + return prop.type.name; +} + +function renderDefault(prop: PropDescriptor): string { + if (prop.defaultValue === null) return '-'; + return unquote(prop.defaultValue.value); +} + +export function PropTable({ propsSchema }: PropTableProps) { + return ( + + + + + + + + + + + {propsSchema.map((prop) => ( + + + + + + + ))} + +
+ Name + + Type + + Default + + Description +
+ {prop.name} + + {renderType(prop)} + + {renderDefault(prop)} + {prop.description || '-'}
+ ); +} diff --git a/www/src/components/Playground/generateCode.ts b/www/src/components/Playground/generateCode.ts new file mode 100644 index 00000000..25b91dae --- /dev/null +++ b/www/src/components/Playground/generateCode.ts @@ -0,0 +1,30 @@ +export function unquote(s: string): string { + return s.replace(/^"|"$/g, ''); +} + +type PropDescriptor = { + name: string; + type: { name: string; value?: string[] }; + defaultValue: { value: string } | null; + required: boolean; + description: string; +}; + +export function initialDefaults(props: readonly PropDescriptor[]): Record { + return Object.fromEntries( + props.map((p) => [p.name, p.defaultValue?.value ?? (p.type.name === 'boolean' ? 'false' : '')]), + ); +} + +export function generateCode(name: string, values: Record, children?: string): string { + const attrs = Object.entries(values) + .map(([k, v]) => { + const clean = unquote(v); + if (clean === '' || clean === 'false') return ''; + if (clean === 'true') return k; + return `${k}="${clean}"`; + }) + .filter(Boolean) + .join(' '); + return `<${name}${attrs ? ` ${attrs}` : ''}>${children ?? ''}`; +} diff --git a/www/src/components/Playground/index.ts b/www/src/components/Playground/index.ts new file mode 100644 index 00000000..20dab236 --- /dev/null +++ b/www/src/components/Playground/index.ts @@ -0,0 +1 @@ +export { Playground } from './Playground'; diff --git a/www/src/components/Playground/registry.ts b/www/src/components/Playground/registry.ts new file mode 100644 index 00000000..7fe173b7 --- /dev/null +++ b/www/src/components/Playground/registry.ts @@ -0,0 +1,14 @@ +import { Button } from '@sipe-team/side'; + +import buttonProps from '../../.generated/props/button.json'; + +export const componentRegistry = { + button: { + component: Button, + props: buttonProps, + scope: { Button }, + defaultChildren: 'Click me', + }, +} as const; + +export type ComponentRegistryKey = keyof typeof componentRegistry; diff --git a/www/src/custom.css b/www/src/custom.css index c8753589..e5b66f0c 100644 --- a/www/src/custom.css +++ b/www/src/custom.css @@ -1,3 +1,5 @@ +@import "tailwindcss"; + :root { --ifm-color-primary: #2e8555; --ifm-color-primary-dark: #29784c; diff --git a/www/src/theme/MDXComponents.tsx b/www/src/theme/MDXComponents.tsx new file mode 100644 index 00000000..44a87351 --- /dev/null +++ b/www/src/theme/MDXComponents.tsx @@ -0,0 +1,8 @@ +import MDXComponents from '@theme-original/MDXComponents'; + +import { Playground } from '../components/Playground'; + +export default { + ...MDXComponents, + Playground, +}; diff --git a/www/tsconfig.json b/www/tsconfig.json index d250afae..2b39aeac 100644 --- a/www/tsconfig.json +++ b/www/tsconfig.json @@ -1,6 +1,7 @@ { "extends": "@docusaurus/tsconfig", "compilerOptions": { - "baseUrl": "." + "baseUrl": ".", + "resolveJsonModule": true } }