diff --git a/.gitignore b/.gitignore
index 7f09c25..b32955c 100644
--- a/.gitignore
+++ b/.gitignore
@@ -128,10 +128,10 @@ dist
.yarn/install-state.gz
.pnp.*
/.idea/
-/.vscode/
# VSCode Counter
.VSCodeCounter
# MacOS
-.DS_Store
\ No newline at end of file
+.DS_Store
+*storybook.log
diff --git a/.vscode/settings.json b/.vscode/settings.json
new file mode 100644
index 0000000..017ef61
--- /dev/null
+++ b/.vscode/settings.json
@@ -0,0 +1,10 @@
+{
+ "editor.formatOnSave": true,
+ "cSpell.words": ["Eich", "eichjs"],
+ "prettier.enable": false,
+ "svg.preview.background": "transparent",
+ "editor.codeActionsOnSave": {
+ "source.fixAll": "explicit",
+ "source.organizeImports": "explicit"
+ }
+}
diff --git a/eslint.config.mjs b/eslint.config.mjs
index 276fba1..ad76319 100644
--- a/eslint.config.mjs
+++ b/eslint.config.mjs
@@ -2,10 +2,8 @@ import antfu from '@antfu/eslint-config'
export default antfu({
rules: {
- eqeqeq: 'off',
+ 'brace-style': '1tbs',
},
ignores: [
- 'packages/renderer/**/*.*',
- 'packages/test/**/*.{ts,js,tsx,jsx,json,html,css}',
],
})
diff --git a/examples/storybook/.storybook/main.ts b/examples/storybook/.storybook/main.ts
new file mode 100644
index 0000000..649561c
--- /dev/null
+++ b/examples/storybook/.storybook/main.ts
@@ -0,0 +1,19 @@
+import type { StorybookConfig } from '@storybook/html-vite'
+
+const config: StorybookConfig = {
+ stories: [
+ '../stories/**/*.mdx',
+ '../stories/**/*.stories.@(js|jsx|mjs|ts|tsx)',
+ ],
+ addons: [
+ '@storybook/addon-essentials',
+ '@chromatic-com/storybook',
+ '@storybook/addon-interactions',
+ ],
+ framework: {
+ name: '@storybook/html-vite',
+ options: {},
+ },
+}
+
+export default config
diff --git a/examples/storybook/.storybook/preview.ts b/examples/storybook/.storybook/preview.ts
new file mode 100644
index 0000000..f778290
--- /dev/null
+++ b/examples/storybook/.storybook/preview.ts
@@ -0,0 +1,14 @@
+import type { Preview } from '@storybook/html'
+
+const preview: Preview = {
+ parameters: {
+ controls: {
+ matchers: {
+ color: /(background|color)$/i,
+ date: /Date$/i,
+ },
+ },
+ },
+}
+
+export default preview
diff --git a/examples/storybook/package.json b/examples/storybook/package.json
new file mode 100644
index 0000000..914eb0d
--- /dev/null
+++ b/examples/storybook/package.json
@@ -0,0 +1,31 @@
+{
+ "name": "@eichjs/examples",
+ "version": "1.0.0",
+ "description": "",
+ "author": "",
+ "license": "ISC",
+ "keywords": [],
+ "main": "index.js",
+ "scripts": {
+ "test": "echo \"Error: no test specified\" && exit 1",
+ "dev": "storybook dev -p 6006",
+ "build": "storybook build"
+ },
+ "dependencies": {
+ "@eichjs/components": "workspace:^",
+ "@eichjs/layout": "workspace:^",
+ "@eichjs/renderer": "workspace:^",
+ "eichjs": "workspace:^"
+ },
+ "devDependencies": {
+ "@chromatic-com/storybook": "^3.2.5",
+ "@storybook/addon-essentials": "^8.6.4",
+ "@storybook/addon-interactions": "^8.6.4",
+ "@storybook/blocks": "^8.6.4",
+ "@storybook/html": "^8.6.4",
+ "@storybook/html-vite": "^8.6.4",
+ "@storybook/test": "^8.6.4",
+ "@types/node": "22.5.0",
+ "storybook": "^8.6.4"
+ }
+}
diff --git a/examples/storybook/stories/Button.js b/examples/storybook/stories/Button.js
new file mode 100644
index 0000000..c6c6bd6
--- /dev/null
+++ b/examples/storybook/stories/Button.js
@@ -0,0 +1,21 @@
+import './button.css';
+
+export const createButton = ({
+ primary = false,
+ size = 'medium',
+ backgroundColor,
+ label,
+ onClick,
+}) => {
+ const btn = document.createElement('button');
+ btn.type = 'button';
+ btn.innerText = label;
+ btn.addEventListener('click', onClick);
+
+ const mode = primary ? 'storybook-button--primary' : 'storybook-button--secondary';
+ btn.className = ['storybook-button', `storybook-button--${size}`, mode].join(' ');
+
+ btn.style.backgroundColor = backgroundColor;
+
+ return btn;
+};
diff --git a/examples/storybook/stories/Button.stories.js b/examples/storybook/stories/Button.stories.js
new file mode 100644
index 0000000..d155869
--- /dev/null
+++ b/examples/storybook/stories/Button.stories.js
@@ -0,0 +1,54 @@
+import { fn } from '@storybook/test'
+
+import { createButton } from './Button'
+
+// More on how to set up stories at: https://storybook.js.org/docs/writing-stories
+export default {
+ title: 'Example/Button',
+ tags: ['autodocs'],
+ render: ({ label, ...args }) => {
+ // You can either use a function to create DOM elements or use a plain html string!
+ // return `
${label}
`;
+ return createButton({ label, ...args })
+ },
+ argTypes: {
+ backgroundColor: { control: 'color' },
+ label: { control: 'text' },
+ onClick: { action: 'onClick' },
+ primary: { control: 'boolean' },
+ size: {
+ control: { type: 'select' },
+ options: ['small', 'medium', 'large'],
+ },
+ },
+ // Use `fn` to spy on the onClick arg, which will appear in the actions panel once invoked: https://storybook.js.org/docs/essentials/actions#action-args
+ args: { onClick: fn() },
+}
+
+// More on writing stories with args: https://storybook.js.org/docs/writing-stories/args
+export const Primary = {
+ args: {
+ primary: true,
+ label: 'Button',
+ },
+}
+
+export const Secondary = {
+ args: {
+ label: 'Button',
+ },
+}
+
+export const Large = {
+ args: {
+ size: 'large',
+ label: 'Button',
+ },
+}
+
+export const Small = {
+ args: {
+ size: 'small',
+ label: 'Button',
+ },
+}
diff --git a/examples/storybook/stories/Configure.mdx b/examples/storybook/stories/Configure.mdx
new file mode 100644
index 0000000..ca72c0e
--- /dev/null
+++ b/examples/storybook/stories/Configure.mdx
@@ -0,0 +1,3 @@
+import { Meta } from '@storybook/blocks'
+
+
diff --git a/examples/storybook/stories/Header.js b/examples/storybook/stories/Header.js
new file mode 100644
index 0000000..59f6656
--- /dev/null
+++ b/examples/storybook/stories/Header.js
@@ -0,0 +1,47 @@
+import { createButton } from './Button';
+import './header.css';
+
+export const createHeader = ({ user, onLogout, onLogin, onCreateAccount }) => {
+ const header = document.createElement('header');
+
+ const wrapper = document.createElement('div');
+ wrapper.className = 'storybook-header';
+
+ const logo = ``;
+
+ wrapper.insertAdjacentHTML('afterbegin', logo);
+
+ const account = document.createElement('div');
+ if (user) {
+ const welcomeMessage = `Welcome, ${user.name} ! `;
+ account.innerHTML = welcomeMessage;
+ account.appendChild(createButton({ size: 'small', label: 'Log out', onClick: onLogout }));
+ } else {
+ account.appendChild(createButton({ size: 'small', label: 'Log in', onClick: onLogin }));
+ account.appendChild(
+ createButton({
+ size: 'small',
+ label: 'Sign up',
+ onClick: onCreateAccount,
+ primary: true,
+ })
+ );
+ }
+ wrapper.appendChild(account);
+ header.appendChild(wrapper);
+
+ return header;
+};
diff --git a/examples/storybook/stories/Header.stories.js b/examples/storybook/stories/Header.stories.js
new file mode 100644
index 0000000..1168c39
--- /dev/null
+++ b/examples/storybook/stories/Header.stories.js
@@ -0,0 +1,29 @@
+import { fn } from '@storybook/test';
+
+import { createHeader } from './Header';
+
+export default {
+ title: 'Example/Header',
+ // This component will have an automatically generated Autodocs entry: https://storybook.js.org/docs/writing-docs/autodocs
+ tags: ['autodocs'],
+ render: (args) => createHeader(args),
+ parameters: {
+ // More on how to position stories at: https://storybook.js.org/docs/configure/story-layout
+ layout: 'fullscreen',
+ },
+ args: {
+ onLogin: fn(),
+ onLogout: fn(),
+ onCreateAccount: fn(),
+ },
+};
+
+export const LoggedIn = {
+ args: {
+ user: {
+ name: 'Jane Doe',
+ },
+ },
+};
+
+export const LoggedOut = {};
diff --git a/examples/storybook/stories/Page.js b/examples/storybook/stories/Page.js
new file mode 100644
index 0000000..232e875
--- /dev/null
+++ b/examples/storybook/stories/Page.js
@@ -0,0 +1,94 @@
+import { createHeader } from './Header';
+import './page.css';
+
+export const createPage = () => {
+ const article = document.createElement('article');
+ let user = null;
+ let header = null;
+
+ const rerenderHeader = () => {
+ const wrapper = document.getElementsByTagName('article')[0];
+ wrapper.replaceChild(createHeaderElement(), wrapper.firstChild);
+ };
+
+ const onLogin = () => {
+ user = { name: 'Jane Doe' };
+ rerenderHeader();
+ };
+
+ const onLogout = () => {
+ user = null;
+ rerenderHeader();
+ };
+
+ const onCreateAccount = () => {
+ user = { name: 'Jane Doe' };
+ rerenderHeader();
+ };
+
+ const createHeaderElement = () => {
+ return createHeader({ onLogin, onLogout, onCreateAccount, user });
+ };
+
+ header = createHeaderElement();
+ article.appendChild(header);
+
+ const section = `
+
+ Pages in Storybook
+
+ We recommend building UIs with a
+
+ component-driven
+
+ process starting with atomic components and ending with pages.
+
+
+ Render pages with mock data. This makes it easy to build and review page states without
+ needing to navigate to them in your app. Here are some handy patterns for managing page data
+ in Storybook:
+
+
+
+ Use a higher-level connected component. Storybook helps you compose such data from the
+ "args" of child component stories
+
+
+ Assemble data in the page component from your services. You can mock these services out
+ using Storybook.
+
+
+
+ Get a guided tutorial on component-driven development at
+
+ Storybook tutorials
+
+ . Read more in the
+ docs
+ .
+
+
+
Tip
+ Adjust the width of the canvas with the
+
+
+
+
+
+ Viewports addon in the toolbar
+
+
+`;
+
+ article.insertAdjacentHTML('beforeend', section);
+
+ return article;
+};
diff --git a/examples/storybook/stories/Page.stories.js b/examples/storybook/stories/Page.stories.js
new file mode 100644
index 0000000..4e98ad6
--- /dev/null
+++ b/examples/storybook/stories/Page.stories.js
@@ -0,0 +1,28 @@
+import { expect, userEvent, within } from '@storybook/test';
+
+import { createPage } from './Page';
+
+export default {
+ title: 'Example/Page',
+ render: () => createPage(),
+ parameters: {
+ // More on how to position stories at: https://storybook.js.org/docs/configure/story-layout
+ layout: 'fullscreen',
+ },
+};
+
+export const LoggedOut = {};
+
+// More on component testing: https://storybook.js.org/docs/writing-tests/component-testing
+export const LoggedIn = {
+ play: async ({ canvasElement }) => {
+ const canvas = within(canvasElement);
+ const loginButton = canvas.getByRole('button', { name: /Log in/i });
+ await expect(loginButton).toBeInTheDocument();
+ await userEvent.click(loginButton);
+ await expect(loginButton).not.toBeInTheDocument();
+
+ const logoutButton = canvas.getByRole('button', { name: /Log out/i });
+ await expect(logoutButton).toBeInTheDocument();
+ },
+};
diff --git a/examples/storybook/stories/Table/index.stories.ts b/examples/storybook/stories/Table/index.stories.ts
new file mode 100644
index 0000000..9cdb1df
--- /dev/null
+++ b/examples/storybook/stories/Table/index.stories.ts
@@ -0,0 +1,181 @@
+import type { TableAttributes } from '@eichjs/components'
+
+import { createTable } from './index'
+// More on how to set up stories at: https://storybook.js.org/docs/writing-stories
+export default {
+ title: 'Example/Table',
+ tags: ['autodocs'],
+ render: (args: TableAttributes) => {
+ return createTable(args)
+ },
+ argTypes: {
+ '$border': { control: 'text' },
+ '$width': { control: 'text' },
+ '$height': { control: 'text' },
+ '$caption-side': { control: 'select', options: ['top', 'bottom', 'initial', 'inherit', 'unset', 'revert', 'revert-layer'] },
+ '$empty-cells': { control: 'select', options: ['show', 'hide', 'initial', 'inherit', 'unset', 'revert', 'revert-layer'] },
+ '$table-layout': { control: 'select', options: ['auto', 'fixed', 'initial', 'inherit', 'unset', 'revert', 'revert-layer'] },
+ '$vertical-align': { control: 'select', options: ['top', 'middle', 'bottom', 'initial', 'inherit', 'unset', 'revert', 'revert-layer'] },
+ '$text-align': { control: 'select', options: ['left', 'right', 'center', 'initial', 'inherit', 'unset', 'revert', 'revert-layer'] },
+ '$background-color': { control: 'color' },
+ '$color': { control: 'color' },
+ '$padding': { control: 'text' },
+ '$box-shadow': { control: 'text' },
+ '$border-width': { control: 'text' },
+ '$border-style': { control: 'text' },
+ '$border-color': { control: 'color' },
+ '$border-collapse': { control: 'select', options: ['separate', 'collapse', 'initial', 'inherit', 'unset', 'revert', 'revert-layer'] },
+ '$border-spacing': { control: 'text' },
+ '$border-radius': { control: 'text' },
+ },
+ // Use `fn` to spy on the onClick arg, which will appear in the actions panel once invoked: https://storybook.js.org/docs/essentials/actions#action-args
+ args: {},
+}
+
+// More on writing stories with args: https://storybook.js.org/docs/writing-stories/args
+export const Default = {
+ args: {
+ $width: '500px',
+ $height: '500px',
+ $border: '1px dashed #e81111',
+ $padding: '10px',
+ $color: '#333',
+ $background: '#fff',
+ },
+}
+
+export const Border = {
+ args: {
+ $border: '1px dashed black',
+ },
+}
+
+export const Size = {
+ args: {
+ $width: '500px',
+ $height: '500px',
+ },
+}
+
+export const TableLayout = {
+ args: {
+ $width: '600px',
+ '$table-layout': 'fixed',
+ '$border-collapse': 'collapse',
+ '$border-spacing': '2px',
+ '$empty-cells': 'show',
+ },
+}
+
+export const Alignment = {
+ args: {
+ '$text-align': 'center',
+ '$vertical-align': 'middle',
+ $width: '500px',
+ $height: '300px',
+ '$background-color': '#f5f5f5',
+ },
+}
+
+export const ComplexBorder = {
+ args: {
+ '$border-width': '2px',
+ '$border-style': 'solid',
+ '$border-color': '#007bff',
+ '$border-radius': '8px',
+ '$border-collapse': 'separate',
+ '$border-spacing': '4px',
+ },
+}
+
+export const StylingAndEffects = {
+ args: {
+ '$background-color': '#f8f9fa',
+ '$color': '#212529',
+ '$box-shadow': '0 4px 6px rgba(0, 0, 0, 0.1)',
+ '$padding': '15px',
+ '$caption-side': 'bottom',
+ },
+}
+
+export const ResponsiveTable = {
+ args: {
+ $width: '100%',
+ '$table-layout': 'auto',
+ '$border-collapse': 'collapse',
+ '$border': '1px solid #dee2e6',
+ '$background-color': '#ffffff',
+ '$color': '#212529',
+ '$padding': '0.75rem',
+ },
+}
+
+export const CompactTable = {
+ args: {
+ '$padding': '4px',
+ '$border-collapse': 'collapse',
+ '$border': '1px solid #e0e0e0',
+ '$font-size': '14px',
+ '$background-color': '#fafafa',
+ '$color': '#333',
+ },
+}
+
+export const ModernStyle = {
+ args: {
+ '$border-radius': '12px',
+ '$box-shadow': '0 4px 20px rgba(0, 0, 0, 0.08)',
+ '$border': 'none',
+ '$background-color': '#ffffff',
+ '$color': '#2d3748',
+ '$padding': '16px',
+ '$width': '100%',
+ '$border-collapse': 'separate',
+ '$border-spacing': '0',
+ },
+}
+
+export const DarkTheme = {
+ args: {
+ '$background-color': '#1a202c',
+ '$color': '#e2e8f0',
+ '$border': '1px solid #2d3748',
+ '$box-shadow': '0 4px 6px rgba(0, 0, 0, 0.3)',
+ '$padding': '12px',
+ '$border-radius': '8px',
+ },
+}
+
+export const MinimalStyle = {
+ args: {
+ '$border': 'none',
+ '$border-bottom': '2px solid #edf2f7',
+ '$padding': '12px 16px',
+ '$background-color': 'transparent',
+ '$color': '#4a5568',
+ '$table-layout': 'auto',
+ },
+}
+
+export const HighContrastStyle = {
+ args: {
+ '$background-color': '#000000',
+ '$color': '#ffffff',
+ '$border': '2px solid #ffffff',
+ '$padding': '16px',
+ '$text-align': 'left',
+ '$vertical-align': 'middle',
+ '$border-collapse': 'collapse',
+ },
+}
+
+export const ZebraStripe = {
+ args: {
+ '$background-color': '#ffffff',
+ '$color': '#333333',
+ '$border-collapse': 'collapse',
+ '$border': '1px solid #e2e8f0',
+ '$padding': '12px',
+ '$tr-even-background': '#f7fafc',
+ },
+}
diff --git a/examples/storybook/stories/Table/index.ts b/examples/storybook/stories/Table/index.ts
new file mode 100644
index 0000000..d80aba5
--- /dev/null
+++ b/examples/storybook/stories/Table/index.ts
@@ -0,0 +1,95 @@
+import type { TableAttributes } from '@eichjs/components'
+import { Table } from '@eichjs/components'
+import { builtins, parse, renderRoots } from '@eichjs/renderer'
+
+export function createTable({
+ $border: border,
+ '$border-width': borderWidth,
+ '$border-style': borderStyle,
+ '$border-color': borderColor,
+ '$border-collapse': borderCollapse,
+ '$border-spacing': borderSpacing,
+ '$border-radius': borderRadius,
+ $width: width,
+ $height: height,
+ '$caption-side': captionSide,
+ '$empty-cells': emptyCells,
+ '$table-layout': tableLayout,
+ '$vertical-align': verticalAlign,
+ '$text-align': textAlign,
+ '$background-color': backgroundColor,
+ $color: color,
+ $padding: padding,
+ '$box-shadow': boxShadow,
+}: TableAttributes) {
+ builtins.set('table', Table)
+
+ const container = document.createElement('div')
+
+ const [nodes] = renderRoots(
+ parse(
+ `
+
+ Caption ABOVE the table
+
+
+
+ Person
+ Most interest in
+ Age
+
+
+
+
+ Chris
+ HTML tables
+ 22
+
+
+ Dennis
+ Web accessibility
+ 45
+
+
+ Sarah
+ JavaScript frameworks
+ 29
+
+
+ Karen
+ Web performance
+ 36
+
+
+
+
+ Average age
+ 33
+
+
+
+`,
+ ),
+ container,
+ )
+ return nodes[0] as HTMLTableElement
+}
diff --git a/examples/storybook/stories/assets/accessibility.png b/examples/storybook/stories/assets/accessibility.png
new file mode 100644
index 0000000..6ffe6fe
Binary files /dev/null and b/examples/storybook/stories/assets/accessibility.png differ
diff --git a/examples/storybook/stories/assets/accessibility.svg b/examples/storybook/stories/assets/accessibility.svg
new file mode 100644
index 0000000..107e93f
--- /dev/null
+++ b/examples/storybook/stories/assets/accessibility.svg
@@ -0,0 +1 @@
+Accessibility
\ No newline at end of file
diff --git a/examples/storybook/stories/assets/addon-library.png b/examples/storybook/stories/assets/addon-library.png
new file mode 100644
index 0000000..95deb38
Binary files /dev/null and b/examples/storybook/stories/assets/addon-library.png differ
diff --git a/examples/storybook/stories/assets/assets.png b/examples/storybook/stories/assets/assets.png
new file mode 100644
index 0000000..cfba681
Binary files /dev/null and b/examples/storybook/stories/assets/assets.png differ
diff --git a/examples/storybook/stories/assets/avif-test-image.avif b/examples/storybook/stories/assets/avif-test-image.avif
new file mode 100644
index 0000000..530709b
Binary files /dev/null and b/examples/storybook/stories/assets/avif-test-image.avif differ
diff --git a/examples/storybook/stories/assets/context.png b/examples/storybook/stories/assets/context.png
new file mode 100644
index 0000000..e5cd249
Binary files /dev/null and b/examples/storybook/stories/assets/context.png differ
diff --git a/examples/storybook/stories/assets/discord.svg b/examples/storybook/stories/assets/discord.svg
new file mode 100644
index 0000000..d638958
--- /dev/null
+++ b/examples/storybook/stories/assets/discord.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/examples/storybook/stories/assets/docs.png b/examples/storybook/stories/assets/docs.png
new file mode 100644
index 0000000..a749629
Binary files /dev/null and b/examples/storybook/stories/assets/docs.png differ
diff --git a/examples/storybook/stories/assets/figma-plugin.png b/examples/storybook/stories/assets/figma-plugin.png
new file mode 100644
index 0000000..8f79b08
Binary files /dev/null and b/examples/storybook/stories/assets/figma-plugin.png differ
diff --git a/examples/storybook/stories/assets/github.svg b/examples/storybook/stories/assets/github.svg
new file mode 100644
index 0000000..dc51352
--- /dev/null
+++ b/examples/storybook/stories/assets/github.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/examples/storybook/stories/assets/share.png b/examples/storybook/stories/assets/share.png
new file mode 100644
index 0000000..8097a37
Binary files /dev/null and b/examples/storybook/stories/assets/share.png differ
diff --git a/examples/storybook/stories/assets/styling.png b/examples/storybook/stories/assets/styling.png
new file mode 100644
index 0000000..d341e82
Binary files /dev/null and b/examples/storybook/stories/assets/styling.png differ
diff --git a/examples/storybook/stories/assets/testing.png b/examples/storybook/stories/assets/testing.png
new file mode 100644
index 0000000..d4ac39a
Binary files /dev/null and b/examples/storybook/stories/assets/testing.png differ
diff --git a/examples/storybook/stories/assets/theming.png b/examples/storybook/stories/assets/theming.png
new file mode 100644
index 0000000..1535eb9
Binary files /dev/null and b/examples/storybook/stories/assets/theming.png differ
diff --git a/examples/storybook/stories/assets/tutorials.svg b/examples/storybook/stories/assets/tutorials.svg
new file mode 100644
index 0000000..b492a9c
--- /dev/null
+++ b/examples/storybook/stories/assets/tutorials.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/examples/storybook/stories/assets/youtube.svg b/examples/storybook/stories/assets/youtube.svg
new file mode 100644
index 0000000..a7515d7
--- /dev/null
+++ b/examples/storybook/stories/assets/youtube.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/examples/storybook/stories/button.css b/examples/storybook/stories/button.css
new file mode 100644
index 0000000..4e3620b
--- /dev/null
+++ b/examples/storybook/stories/button.css
@@ -0,0 +1,30 @@
+.storybook-button {
+ display: inline-block;
+ cursor: pointer;
+ border: 0;
+ border-radius: 3em;
+ font-weight: 700;
+ line-height: 1;
+ font-family: 'Nunito Sans', 'Helvetica Neue', Helvetica, Arial, sans-serif;
+}
+.storybook-button--primary {
+ background-color: #555ab9;
+ color: white;
+}
+.storybook-button--secondary {
+ box-shadow: rgba(0, 0, 0, 0.15) 0px 0px 0px 1px inset;
+ background-color: transparent;
+ color: #333;
+}
+.storybook-button--small {
+ padding: 10px 16px;
+ font-size: 12px;
+}
+.storybook-button--medium {
+ padding: 11px 20px;
+ font-size: 14px;
+}
+.storybook-button--large {
+ padding: 12px 24px;
+ font-size: 16px;
+}
diff --git a/examples/storybook/stories/header.css b/examples/storybook/stories/header.css
new file mode 100644
index 0000000..5efd46c
--- /dev/null
+++ b/examples/storybook/stories/header.css
@@ -0,0 +1,32 @@
+.storybook-header {
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ border-bottom: 1px solid rgba(0, 0, 0, 0.1);
+ padding: 15px 20px;
+ font-family: 'Nunito Sans', 'Helvetica Neue', Helvetica, Arial, sans-serif;
+}
+
+.storybook-header svg {
+ display: inline-block;
+ vertical-align: top;
+}
+
+.storybook-header h1 {
+ display: inline-block;
+ vertical-align: top;
+ margin: 6px 0 6px 10px;
+ font-weight: 700;
+ font-size: 20px;
+ line-height: 1;
+}
+
+.storybook-header button + button {
+ margin-left: 10px;
+}
+
+.storybook-header .welcome {
+ margin-right: 10px;
+ color: #333;
+ font-size: 14px;
+}
diff --git a/examples/storybook/stories/page.css b/examples/storybook/stories/page.css
new file mode 100644
index 0000000..77c81d2
--- /dev/null
+++ b/examples/storybook/stories/page.css
@@ -0,0 +1,68 @@
+.storybook-page {
+ margin: 0 auto;
+ padding: 48px 20px;
+ max-width: 600px;
+ color: #333;
+ font-size: 14px;
+ line-height: 24px;
+ font-family: 'Nunito Sans', 'Helvetica Neue', Helvetica, Arial, sans-serif;
+}
+
+.storybook-page h2 {
+ display: inline-block;
+ vertical-align: top;
+ margin: 0 0 4px;
+ font-weight: 700;
+ font-size: 32px;
+ line-height: 1;
+}
+
+.storybook-page p {
+ margin: 1em 0;
+}
+
+.storybook-page a {
+ color: inherit;
+}
+
+.storybook-page ul {
+ margin: 1em 0;
+ padding-left: 30px;
+}
+
+.storybook-page li {
+ margin-bottom: 8px;
+}
+
+.storybook-page .tip {
+ display: inline-block;
+ vertical-align: top;
+ margin-right: 10px;
+ border-radius: 1em;
+ background: #e7fdd8;
+ padding: 4px 12px;
+ color: #357a14;
+ font-weight: 700;
+ font-size: 11px;
+ line-height: 12px;
+}
+
+.storybook-page .tip-wrapper {
+ margin-top: 40px;
+ margin-bottom: 40px;
+ font-size: 13px;
+ line-height: 20px;
+}
+
+.storybook-page .tip-wrapper svg {
+ display: inline-block;
+ vertical-align: top;
+ margin-top: 3px;
+ margin-right: 4px;
+ width: 12px;
+ height: 12px;
+}
+
+.storybook-page .tip-wrapper svg path {
+ fill: #1ea7fd;
+}
diff --git a/package.json b/package.json
index 6c2668d..99ef94c 100644
--- a/package.json
+++ b/package.json
@@ -9,7 +9,8 @@
"lint": "pnpm run --parallel --filter=./packages/* lint",
"format": "pnpm run --parallel --filter=./packages/* format",
"test": "pnpm run --parallel --filter=./packages/* test",
- "demo": "pnpm vite test"
+ "demo": "pnpm vite test",
+ "storybook": "pnpm run --filter=./examples/storybook dev"
},
"devDependencies": {
"@antfu/eslint-config": "^3.16.0",
diff --git a/packages/components/src/elements/button.ts b/packages/components/src/elements/button.ts
index 5ba8e7a..3919940 100644
--- a/packages/components/src/elements/button.ts
+++ b/packages/components/src/elements/button.ts
@@ -1,4 +1,3 @@
-
import {
builtins,
createDelegate,
@@ -16,7 +15,6 @@ const component = defineComponent(
const button = document.createElement('button')
button.append(...children())
-
delegate(button)
return button
},
diff --git a/packages/components/src/index.ts b/packages/components/src/index.ts
index 98a66f1..7bf782e 100644
--- a/packages/components/src/index.ts
+++ b/packages/components/src/index.ts
@@ -1,3 +1,4 @@
+import type { TableAttributes } from './table/table'
import Button from './elements/button'
import Input from './elements/input'
import Image from './image'
@@ -29,4 +30,30 @@ import Thead from './table/thead'
import Tr from './table/tr'
import Video from './video'
-export { Button, Caption, Circle, Colgroup, Image, Input, List, ListItem, Path, Polygon, Polyline, Rect, Span, Svg, Table, Tbody, Td, Tfoot, Th, Thead, Title, Tr, Video }
+export {
+ Button,
+ Caption,
+ Circle,
+ Colgroup,
+ Image,
+ Input,
+ List,
+ ListItem,
+ Path,
+ Polygon,
+ Polyline,
+ Rect,
+ Span,
+ Svg,
+ Table,
+ Tbody,
+ Td,
+ Tfoot,
+ Th,
+ Thead,
+ Title,
+ Tr,
+ Video,
+}
+
+export type { TableAttributes }
diff --git a/packages/components/src/table/table.ts b/packages/components/src/table/table.ts
index de5f637..b8111bf 100644
--- a/packages/components/src/table/table.ts
+++ b/packages/components/src/table/table.ts
@@ -1,4 +1,10 @@
-import { builtins, defineComponent, effect, toValue, useAttrs } from '@eichjs/renderer'
+import {
+ builtins,
+ defineComponent,
+ toValue,
+ useAttrs,
+ watch
+} from '@eichjs/renderer'
export interface TableAttributes {
// Basic style attributes
@@ -9,7 +15,7 @@ export interface TableAttributes {
'$border-style': CSSStyleDeclaration['borderStyle']
'$border-color': CSSStyleDeclaration['borderColor']
- // Table layout attributes
+ // Table layout attributeks
'$border-collapse': CSSStyleDeclaration['borderCollapse']
'$border-spacing': CSSStyleDeclaration['borderSpacing']
'$caption-side': CSSStyleDeclaration['captionSide']
@@ -71,38 +77,96 @@ const component = defineComponent((attrs, children) => {
const table = document.createElement('table')
- // Apply styles
- effect(() => {
- const borderValue = toValue(border)
-
- if (borderValue) {
- table.style.border = borderValue
- }
- else {
- table.style.borderWidth = toValue(borderWidth) ?? ''
- table.style.borderStyle = toValue(borderStyle) ?? ''
- table.style.borderColor = toValue(borderColor) ?? ''
- }
-
- // 表格布局属性
- table.style.borderCollapse = toValue(borderCollapse) ?? ''
- table.style.borderSpacing = toValue(borderSpacing) ?? ''
- table.style.width = toValue(width) ?? ''
- table.style.height = toValue(height) ?? ''
- table.style.captionSide = toValue(captionSide) ?? ''
- table.style.emptyCells = toValue(emptyCells) ?? ''
- table.style.tableLayout = toValue(tableLayout) ?? ''
-
- // 对齐与文本属性
- table.style.verticalAlign = toValue(verticalAlign) ?? ''
- table.style.textAlign = toValue(textAlign) ?? ''
-
- // 颜色与外观属性
- table.style.backgroundColor = toValue(backgroundColor) ?? ''
- table.style.color = toValue(color) ?? ''
- table.style.padding = toValue(padding) ?? ''
- table.style.borderRadius = toValue(borderRadius) ?? ''
- table.style.boxShadow = toValue(boxShadow) ?? ''
+ table.style.width = toValue(width) ?? ''
+ table.style.height = toValue(height) ?? ''
+ table.style.border = toValue(border) ?? ''
+ table.style.borderWidth = toValue(borderWidth) ?? ''
+ table.style.borderStyle = toValue(borderStyle) ?? ''
+ table.style.borderColor = toValue(borderColor) ?? ''
+ table.style.borderCollapse = toValue(borderCollapse) ?? ''
+ table.style.borderSpacing = toValue(borderSpacing) ?? ''
+ table.style.captionSide = toValue(captionSide) ?? ''
+ table.style.emptyCells = toValue(emptyCells) ?? ''
+ table.style.tableLayout = toValue(tableLayout) ?? ''
+ table.style.verticalAlign = toValue(verticalAlign) ?? ''
+ table.style.textAlign = toValue(textAlign) ?? ''
+ table.style.backgroundColor = toValue(backgroundColor) ?? ''
+ table.style.color = toValue(color) ?? ''
+ table.style.padding = toValue(padding) ?? ''
+ table.style.borderRadius = toValue(borderRadius) ?? ''
+ table.style.boxShadow = toValue(boxShadow) ?? ''
+
+ watch(()=> toValue(width), (newValue) => {
+ table.style.width = newValue ?? ''
+ })
+
+ watch(()=> toValue(height), (newValue) => {
+ table.style.height = newValue ?? ''
+ })
+
+ watch(()=> toValue(border), (newValue) => {
+ table.style.border = newValue ?? ''
+ })
+
+ watch(()=> toValue(borderWidth), (newValue) => {
+ table.style.borderWidth = newValue ?? ''
+ })
+
+ watch(()=> toValue(borderStyle), (newValue) => {
+ table.style.borderStyle = newValue ?? ''
+ })
+
+ watch(()=> toValue(borderColor), (newValue) => {
+ table.style.borderColor = newValue ?? ''
+ })
+
+
+ watch(()=> toValue(borderCollapse), (newValue) => {
+ table.style.borderCollapse = newValue ?? ''
+ })
+
+ watch(()=> toValue(borderSpacing), (newValue) => {
+ table.style.borderSpacing = newValue ?? ''
+ })
+
+ watch(()=> toValue(captionSide), (newValue) => {
+ table.style.captionSide = newValue ?? ''
+ })
+
+ watch(()=> toValue(emptyCells), (newValue) => {
+ table.style.emptyCells = newValue ?? ''
+ })
+
+ watch(()=> toValue(tableLayout), (newValue) => {
+ table.style.tableLayout = newValue ?? ''
+ })
+
+ watch(()=> toValue(verticalAlign), (newValue) => {
+ table.style.verticalAlign = newValue ?? ''
+ })
+
+ watch(()=> toValue(textAlign), (newValue) => {
+ table.style.textAlign = newValue ?? ''
+ })
+
+ watch(()=> toValue(backgroundColor), (newValue) => {
+ table.style.backgroundColor = newValue ?? ''
+ })
+
+ watch(()=> toValue(color), (newValue) => {
+ table.style.color = newValue ?? ''
+ })
+
+ watch(()=> toValue(padding), (newValue) => {
+ table.style.padding = newValue ?? ''
+ })
+
+ watch(()=> toValue(borderRadius), (newValue) => {
+ table.style.borderRadius = newValue ?? ''
+ })
+
+ watch(()=> toValue(boxShadow), (newValue) => {
+ table.style.boxShadow = newValue ?? ''
})
table.append(...children())
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 00f0a39..39a0980 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -60,6 +60,49 @@ importers:
specifier: ^3.0.7
version: 3.0.7(@types/debug@4.1.12)(@types/node@22.5.0)(jiti@2.4.2)(jsdom@26.0.0)(terser@5.38.1)(tsx@4.19.2)(yaml@2.7.0)
+ examples/storybook:
+ dependencies:
+ '@eichjs/components':
+ specifier: workspace:^
+ version: link:../../packages/components
+ '@eichjs/layout':
+ specifier: workspace:^
+ version: link:../../packages/layout
+ '@eichjs/renderer':
+ specifier: workspace:^
+ version: link:../../packages/renderer
+ eichjs:
+ specifier: workspace:^
+ version: link:../../packages/eich
+ devDependencies:
+ '@chromatic-com/storybook':
+ specifier: ^3.2.5
+ version: 3.2.5(react@19.0.0)(storybook@8.6.4)
+ '@storybook/addon-essentials':
+ specifier: ^8.6.4
+ version: 8.6.4(@types/react@19.0.10)(storybook@8.6.4)
+ '@storybook/addon-interactions':
+ specifier: ^8.6.4
+ version: 8.6.4(storybook@8.6.4)
+ '@storybook/blocks':
+ specifier: ^8.6.4
+ version: 8.6.4(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(storybook@8.6.4)
+ '@storybook/html':
+ specifier: ^8.6.4
+ version: 8.6.4(storybook@8.6.4)
+ '@storybook/html-vite':
+ specifier: ^8.6.4
+ version: 8.6.4(storybook@8.6.4)(vite@6.0.7(@types/node@22.5.0)(jiti@2.4.2)(terser@5.38.1)(tsx@4.19.2)(yaml@2.7.0))
+ '@storybook/test':
+ specifier: ^8.6.4
+ version: 8.6.4(storybook@8.6.4)
+ '@types/node':
+ specifier: 22.5.0
+ version: 22.5.0
+ storybook:
+ specifier: ^8.6.4
+ version: 8.6.4
+
packages/animation:
dependencies:
'@eichjs/animation':
@@ -113,19 +156,6 @@ importers:
morphdom:
specifier: ^2.7.4
version: 2.7.4
- devDependencies:
- '@testing-library/dom':
- specifier: ^10.4.0
- version: 10.4.0
- '@testing-library/jest-dom':
- specifier: ^6.6.3
- version: 6.6.3
- jsdom:
- specifier: ^26.0.0
- version: 26.0.0
- vitest:
- specifier: ^3.0.7
- version: 3.0.7(@types/debug@4.1.12)(@types/node@22.5.0)(jiti@2.4.2)(jsdom@26.0.0)(terser@5.38.1)(tsx@4.19.2)(yaml@2.7.0)
packages/eich:
dependencies:
@@ -483,6 +513,12 @@ packages:
resolution: {integrity: sha512-eUuWapzEGWFEpHFxgEaBG8e3n6S8L3MSu0oda755rOfabWPnh0Our1AozNFVUxGFIhbKgd1ksprsoDGMinTOTA==}
engines: {node: '>=6.9.0'}
+ '@chromatic-com/storybook@3.2.5':
+ resolution: {integrity: sha512-Y388ft6po5FmGKdkcqz3r2sW6aMF5DSBaatC0jvT5bI/Dh27RJw3gPTmXJcZVNjteNl6tpiP3qxZ9MswAk5luw==}
+ engines: {node: '>=16.0.0', yarn: '>=1.22.18'}
+ peerDependencies:
+ storybook: ^8.2.0 || ^8.3.0-0 || ^8.4.0-0 || ^8.5.0-0 || ^8.6.0-0
+
'@clack/core@0.3.5':
resolution: {integrity: sha512-5cfhQNH+1VQ2xLQlmzXMqUoiaH0lRBq9/CLW9lTyMbuKLC3+xEK01tHVvyut++mLOn5urSHmkm6I0Lg9MaJSTQ==}
@@ -940,6 +976,12 @@ packages:
'@jridgewell/trace-mapping@0.3.25':
resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==}
+ '@mdx-js/react@3.1.0':
+ resolution: {integrity: sha512-QjHtSaoameoalGnKDT3FoIl4+9RwyTmo9ZJGBdLOks/YOiWHoRDI3PUwEzOE7kEmGcV3AFcp9K6dYu9rEuKLAQ==}
+ peerDependencies:
+ '@types/react': '>=16'
+ react: '>=16'
+
'@nodelib/fs.scandir@2.1.5':
resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==}
engines: {node: '>= 8'}
@@ -964,191 +1006,96 @@ packages:
resolution: {integrity: sha512-sVnvDG2ujW5R0mfubZDCnxnxHSsM1kS4ExY+Z3j7XQkY4Y7RKnM4tPi6E8OkkUmbD3NUeVWV2ObSmgaaZUHIDw==}
engines: {node: '>=20'}
- '@rollup/rollup-android-arm-eabi@4.30.1':
- resolution: {integrity: sha512-pSWY+EVt3rJ9fQ3IqlrEUtXh3cGqGtPDH1FQlNZehO2yYxCHEX1SPsz1M//NXwYfbTlcKr9WObLnJX9FsS9K1Q==}
- cpu: [arm]
- os: [android]
-
'@rollup/rollup-android-arm-eabi@4.34.5':
resolution: {integrity: sha512-JXmmQcKQtpf3Z6lvA8akkrHDZ5AEfgc2hLMix1/X5BhQbezBQ0AP5GYLdU8jsQRme8qr2sscCe3wizp7UT0L9g==}
cpu: [arm]
os: [android]
- '@rollup/rollup-android-arm64@4.30.1':
- resolution: {integrity: sha512-/NA2qXxE3D/BRjOJM8wQblmArQq1YoBVJjrjoTSBS09jgUisq7bqxNHJ8kjCHeV21W/9WDGwJEWSN0KQ2mtD/w==}
- cpu: [arm64]
- os: [android]
-
'@rollup/rollup-android-arm64@4.34.5':
resolution: {integrity: sha512-9/A8/ZBOprUjkrJoP9BBEq2vdSud6BPd3LChw09bJQiEZH5oN4kWIkHu90cA0Cj0cSF5cIaD76+0lA+d5KHmpQ==}
cpu: [arm64]
os: [android]
- '@rollup/rollup-darwin-arm64@4.30.1':
- resolution: {integrity: sha512-r7FQIXD7gB0WJ5mokTUgUWPl0eYIH0wnxqeSAhuIwvnnpjdVB8cRRClyKLQr7lgzjctkbp5KmswWszlwYln03Q==}
- cpu: [arm64]
- os: [darwin]
-
'@rollup/rollup-darwin-arm64@4.34.5':
resolution: {integrity: sha512-b9oCfgHKfc1AJEQ5sEpE8Kf6s7aeygj5bZAsl1hTpZc1V9cfZASFSXzzNj7o/BQNPbjmVkVxpCCLRhBfLXhJ5g==}
cpu: [arm64]
os: [darwin]
- '@rollup/rollup-darwin-x64@4.30.1':
- resolution: {integrity: sha512-x78BavIwSH6sqfP2xeI1hd1GpHL8J4W2BXcVM/5KYKoAD3nNsfitQhvWSw+TFtQTLZ9OmlF+FEInEHyubut2OA==}
- cpu: [x64]
- os: [darwin]
-
'@rollup/rollup-darwin-x64@4.34.5':
resolution: {integrity: sha512-Gz42gKBQPoFdMYdsVqkcpttYOO/0aP7f+1CgMaeZEz0gss7dop1TsO3hT77Iroz/TV7PdPUG/RYlj9EA39L4dw==}
cpu: [x64]
os: [darwin]
- '@rollup/rollup-freebsd-arm64@4.30.1':
- resolution: {integrity: sha512-HYTlUAjbO1z8ywxsDFWADfTRfTIIy/oUlfIDmlHYmjUP2QRDTzBuWXc9O4CXM+bo9qfiCclmHk1x4ogBjOUpUQ==}
- cpu: [arm64]
- os: [freebsd]
-
'@rollup/rollup-freebsd-arm64@4.34.5':
resolution: {integrity: sha512-JPkafjkOFaupd8VQYsXfGFKC2pfMr7hwSYGkVGNwhbW0k0lHHyIdhCSNBendJ4O7YlT4yRyKXoms1TL7saO7SQ==}
cpu: [arm64]
os: [freebsd]
- '@rollup/rollup-freebsd-x64@4.30.1':
- resolution: {integrity: sha512-1MEdGqogQLccphhX5myCJqeGNYTNcmTyaic9S7CG3JhwuIByJ7J05vGbZxsizQthP1xpVx7kd3o31eOogfEirw==}
- cpu: [x64]
- os: [freebsd]
-
'@rollup/rollup-freebsd-x64@4.34.5':
resolution: {integrity: sha512-j6Q8VFqyI8hZM33h1JC6DZK2w8ejkXqEMozTrtIEGfRVMpVZL3GrLOOYEUkAgUSpJ9sb2w+FEpjGj7IHRcQfdw==}
cpu: [x64]
os: [freebsd]
- '@rollup/rollup-linux-arm-gnueabihf@4.30.1':
- resolution: {integrity: sha512-PaMRNBSqCx7K3Wc9QZkFx5+CX27WFpAMxJNiYGAXfmMIKC7jstlr32UhTgK6T07OtqR+wYlWm9IxzennjnvdJg==}
- cpu: [arm]
- os: [linux]
-
'@rollup/rollup-linux-arm-gnueabihf@4.34.5':
resolution: {integrity: sha512-6jyiXKF9Xq6x9yQjct5xrRT0VghJk5VzAfed3o0hgncwacZkzOdR0TXLRNjexsEXWN8tG7jWWwsVk7WeFi//gw==}
cpu: [arm]
os: [linux]
- '@rollup/rollup-linux-arm-musleabihf@4.30.1':
- resolution: {integrity: sha512-B8Rcyj9AV7ZlEFqvB5BubG5iO6ANDsRKlhIxySXcF1axXYUyqwBok+XZPgIYGBgs7LDXfWfifxhw0Ik57T0Yug==}
- cpu: [arm]
- os: [linux]
-
'@rollup/rollup-linux-arm-musleabihf@4.34.5':
resolution: {integrity: sha512-cOTYe5tLcGAvGztRLIqx87LE7j/qjaAqFrrHsPFlnuhhhFO5LSr2AzvdQYuxomJMzMBrXkMRNl9bQEpDZ5bjLQ==}
cpu: [arm]
os: [linux]
- '@rollup/rollup-linux-arm64-gnu@4.30.1':
- resolution: {integrity: sha512-hqVyueGxAj3cBKrAI4aFHLV+h0Lv5VgWZs9CUGqr1z0fZtlADVV1YPOij6AhcK5An33EXaxnDLmJdQikcn5NEw==}
- cpu: [arm64]
- os: [linux]
-
'@rollup/rollup-linux-arm64-gnu@4.34.5':
resolution: {integrity: sha512-KHlrd+YqmS7rriW+LBb1kQNYmd5w1sAIG3z7HEpnQOrg/skeYYv9DAcclGL9gpFdpnzmiAEkzsTT74kZWUtChQ==}
cpu: [arm64]
os: [linux]
- '@rollup/rollup-linux-arm64-musl@4.30.1':
- resolution: {integrity: sha512-i4Ab2vnvS1AE1PyOIGp2kXni69gU2DAUVt6FSXeIqUCPIR3ZlheMW3oP2JkukDfu3PsexYRbOiJrY+yVNSk9oA==}
- cpu: [arm64]
- os: [linux]
-
'@rollup/rollup-linux-arm64-musl@4.34.5':
resolution: {integrity: sha512-uOb6hzDqym4Sw+qw3+svS3SmwQGVUhyTdPKyHDdlYg1Z0aHjdNmjwRY7zw/90/UfBe/yD7Mv2mYKhQpOfy4RYA==}
cpu: [arm64]
os: [linux]
- '@rollup/rollup-linux-loongarch64-gnu@4.30.1':
- resolution: {integrity: sha512-fARcF5g296snX0oLGkVxPmysetwUk2zmHcca+e9ObOovBR++9ZPOhqFUM61UUZ2EYpXVPN1redgqVoBB34nTpQ==}
- cpu: [loong64]
- os: [linux]
-
'@rollup/rollup-linux-loongarch64-gnu@4.34.5':
resolution: {integrity: sha512-pARu8ZKANZH4wINLdHLKG69EPwJswM6A+Ox1a9LpiclRQoyjacFFTtXN3akKQ2ufJXDasO/pWvxKN9ZfCgEoFA==}
cpu: [loong64]
os: [linux]
- '@rollup/rollup-linux-powerpc64le-gnu@4.30.1':
- resolution: {integrity: sha512-GLrZraoO3wVT4uFXh67ElpwQY0DIygxdv0BNW9Hkm3X34wu+BkqrDrkcsIapAY+N2ATEbvak0XQ9gxZtCIA5Rw==}
- cpu: [ppc64]
- os: [linux]
-
'@rollup/rollup-linux-powerpc64le-gnu@4.34.5':
resolution: {integrity: sha512-crUWn12NRmCdao2YwS1GvlPCVypMBMJlexTaantaP2+dAMd2eZBErFcKG8hZYEHjSbbk2UoH1aTlyeA4iKLqSA==}
cpu: [ppc64]
os: [linux]
- '@rollup/rollup-linux-riscv64-gnu@4.30.1':
- resolution: {integrity: sha512-0WKLaAUUHKBtll0wvOmh6yh3S0wSU9+yas923JIChfxOaaBarmb/lBKPF0w/+jTVozFnOXJeRGZ8NvOxvk/jcw==}
- cpu: [riscv64]
- os: [linux]
-
'@rollup/rollup-linux-riscv64-gnu@4.34.5':
resolution: {integrity: sha512-XtD/oMhCdixi3x8rCNyDRMUsLo1Z+1UQcK+oR7AsjglGov9ETiT3TNFhUPzaGC1jH+uaMtPhxrVRUub+pnAKTg==}
cpu: [riscv64]
os: [linux]
- '@rollup/rollup-linux-s390x-gnu@4.30.1':
- resolution: {integrity: sha512-GWFs97Ruxo5Bt+cvVTQkOJ6TIx0xJDD/bMAOXWJg8TCSTEK8RnFeOeiFTxKniTc4vMIaWvCplMAFBt9miGxgkA==}
- cpu: [s390x]
- os: [linux]
-
'@rollup/rollup-linux-s390x-gnu@4.34.5':
resolution: {integrity: sha512-V3+BvgyHb21aF7lw0sc78Tv0+xLp4lm2OM7CKFVrBuppsMvtl/9O5y2OX4tdDT0EhIsDP/ObJPqDuEg1ZoTwSQ==}
cpu: [s390x]
os: [linux]
- '@rollup/rollup-linux-x64-gnu@4.30.1':
- resolution: {integrity: sha512-UtgGb7QGgXDIO+tqqJ5oZRGHsDLO8SlpE4MhqpY9Llpzi5rJMvrK6ZGhsRCST2abZdBqIBeXW6WPD5fGK5SDwg==}
- cpu: [x64]
- os: [linux]
-
'@rollup/rollup-linux-x64-gnu@4.34.5':
resolution: {integrity: sha512-SkCIXLGk42yldTcH8UXh++m0snVxp9DLf4meb1mWm0lC8jzxjFBwSLGtUSeLgQDsC05iBaIhyjNX46DlByrApQ==}
cpu: [x64]
os: [linux]
- '@rollup/rollup-linux-x64-musl@4.30.1':
- resolution: {integrity: sha512-V9U8Ey2UqmQsBT+xTOeMzPzwDzyXmnAoO4edZhL7INkwQcaW1Ckv3WJX3qrrp/VHaDkEWIBWhRwP47r8cdrOow==}
- cpu: [x64]
- os: [linux]
-
'@rollup/rollup-linux-x64-musl@4.34.5':
resolution: {integrity: sha512-iUcH3FBtBN2/Ce0rI84suRhD0+bB5BVEffqOwsGaX5py5TuYLOQa7S7oVBP0NKtB5rub3i9IvZtMXiD96l5v0A==}
cpu: [x64]
os: [linux]
- '@rollup/rollup-win32-arm64-msvc@4.30.1':
- resolution: {integrity: sha512-WabtHWiPaFF47W3PkHnjbmWawnX/aE57K47ZDT1BXTS5GgrBUEpvOzq0FI0V/UYzQJgdb8XlhVNH8/fwV8xDjw==}
- cpu: [arm64]
- os: [win32]
-
'@rollup/rollup-win32-arm64-msvc@4.34.5':
resolution: {integrity: sha512-PUbWd+h/h6rUowalDYIdc9S9LJXbQDMcJe0BjABl3oT3efYRgZ8aUe8ZZDSie7y+fz6Z+rueNfdorIbkWv5Eqg==}
cpu: [arm64]
os: [win32]
- '@rollup/rollup-win32-ia32-msvc@4.30.1':
- resolution: {integrity: sha512-pxHAU+Zv39hLUTdQQHUVHf4P+0C47y/ZloorHpzs2SXMRqeAWmGghzAhfOlzFHHwjvgokdFAhC4V+6kC1lRRfw==}
- cpu: [ia32]
- os: [win32]
-
'@rollup/rollup-win32-ia32-msvc@4.34.5':
resolution: {integrity: sha512-3vncGhOJiAUR85fnAXJyvSp2GaDWYByIQmW68ZAr+e8kIxgvJ1VaZbfHD5BO5X6hwRQdY6Um/XfA3l5c2lV+OQ==}
cpu: [ia32]
os: [win32]
- '@rollup/rollup-win32-x64-msvc@4.30.1':
- resolution: {integrity: sha512-D6qjsXGcvhTjv0kI4fU8tUuBDF/Ueee4SVX79VfNDXZa64TfCW1Slkb6Z7O1p7vflqZjcmOVdZlqf8gvJxc6og==}
- cpu: [x64]
- os: [win32]
-
'@rollup/rollup-win32-x64-msvc@4.34.5':
resolution: {integrity: sha512-Mi8yVUlQOoeBpY72n75VLATptPGvj2lHa47rQdK9kZ4MoG5Ve86aVIU+PO3tBklTCBtILtdRfXS0EvIbXgmCAg==}
cpu: [x64]
@@ -1175,6 +1122,151 @@ packages:
'@shikijs/vscode-textmate@10.0.1':
resolution: {integrity: sha512-fTIQwLF+Qhuws31iw7Ncl1R3HUDtGwIipiJ9iU+UsDUwMhegFcQKQHd51nZjb7CArq0MvON8rbgCGQYWHUKAdg==}
+ '@storybook/addon-actions@8.6.4':
+ resolution: {integrity: sha512-mCcyfkeb19fJX0dpQqqZCnWBwjVn0/27xcpR0mbm/KW2wTByU6bKFFujgrHsX3ONl97IcIaUnmwwUwBr1ebZXw==}
+ peerDependencies:
+ storybook: ^8.6.4
+
+ '@storybook/addon-backgrounds@8.6.4':
+ resolution: {integrity: sha512-lRYGumlYdd1RptQJvOTRMx/q2pDmg2MO5GX4la7VfI8KrUyeuC1ZOSRDEcXeTuAZWJztqmtymg6bB7cAAoxCFA==}
+ peerDependencies:
+ storybook: ^8.6.4
+
+ '@storybook/addon-controls@8.6.4':
+ resolution: {integrity: sha512-oMMP9Bj0RMfYmaitjFt6oBSjKH4titUqP+wE6PrZ3v+Om56f4buqfNKXRf80As2OrsZn0pjj95muWzVVHqIhyQ==}
+ peerDependencies:
+ storybook: ^8.6.4
+
+ '@storybook/addon-docs@8.6.4':
+ resolution: {integrity: sha512-+kbcjvEAH0Xs+k+raAwfC0WmJilWhxBYnLLeazP3m5AkVI3sIjbzuuZ78NR0DCdRkw9BpuuXMHv5o4tIvLIUlw==}
+ peerDependencies:
+ storybook: ^8.6.4
+
+ '@storybook/addon-essentials@8.6.4':
+ resolution: {integrity: sha512-3pF0ZDl5EICqe0eOupPQq6PxeupwkLsfTWANuuJUYTJur82kvJd3Chb7P9vqw0A0QBx6106mL6PIyjrFJJMhLg==}
+ peerDependencies:
+ storybook: ^8.6.4
+
+ '@storybook/addon-highlight@8.6.4':
+ resolution: {integrity: sha512-jFREXnSE/7VuBR8kbluN+DBVkMXEV7MGuCe8Ytb1/D2Q0ohgJe395dfVgEgSMXErOwsn//NV/NgJp6JNXH2DrA==}
+ peerDependencies:
+ storybook: ^8.6.4
+
+ '@storybook/addon-interactions@8.6.4':
+ resolution: {integrity: sha512-MZAAZjyvmJXCvM35zEiPpXz7vK+fimovt+WZKAMayAbXy5fT+7El0c9dDyTQ2norNKNj9QU/8hiU/1zARSUELQ==}
+ peerDependencies:
+ storybook: ^8.6.4
+
+ '@storybook/addon-measure@8.6.4':
+ resolution: {integrity: sha512-IpVL1rTy1tO8sy140eU3GdVB1QJ6J62+V6GSstcmqTLxDJQk5jFfg7hVbPEAZZ2sPFmeyceP9AMoBBo0EB355A==}
+ peerDependencies:
+ storybook: ^8.6.4
+
+ '@storybook/addon-outline@8.6.4':
+ resolution: {integrity: sha512-28nAslKTy0zWMdxAZcipMDYrEp1TkXVooAsqMGY5AMXMiORi1ObjhmjTLhVt1dXp+aDg0X+M3B6PqoingmHhqQ==}
+ peerDependencies:
+ storybook: ^8.6.4
+
+ '@storybook/addon-toolbars@8.6.4':
+ resolution: {integrity: sha512-PU2lvgwCKDn93zpp5MEog103UUmSSugcxDf18xaoa9D15Qtr+YuQHd2hXbxA7+dnYL9lA7MLYsstfxE91ieM4Q==}
+ peerDependencies:
+ storybook: ^8.6.4
+
+ '@storybook/addon-viewport@8.6.4':
+ resolution: {integrity: sha512-O5Ij+SRVg6grY6JOL5lOpsFyopZxuZEl2GHfh2SUf9hfowNS0QAgFpJupqXkwZzRSrlf9uKrLkjB6ulLgN2gOQ==}
+ peerDependencies:
+ storybook: ^8.6.4
+
+ '@storybook/blocks@8.6.4':
+ resolution: {integrity: sha512-+oPXwT3KzJzsdkQuGEzBqOKTIFlb6qmlCWWbDwAnP0SEqYHoTVRTAIa44icFP0EZeIe+ypFVAm1E7kWTLmw1hQ==}
+ peerDependencies:
+ react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0
+ react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0
+ storybook: ^8.6.4
+ peerDependenciesMeta:
+ react:
+ optional: true
+ react-dom:
+ optional: true
+
+ '@storybook/builder-vite@8.6.4':
+ resolution: {integrity: sha512-FuSP2GhWVVTt6NdX0UJHhPOqhu09X4apSk+KWUf3aITRIJg9gbPYtJDBmxv1vXQEgvfCDdYBYbeG1khiO/Ghfw==}
+ peerDependencies:
+ storybook: ^8.6.4
+ vite: ^4.0.0 || ^5.0.0 || ^6.0.0
+
+ '@storybook/components@8.6.4':
+ resolution: {integrity: sha512-91VEVFWOgHkEFoNFMk6gs1AuOE9Yp7N283BXQOW+AgP+atpzED6t/fIBPGqJ2ewAuzLJ+cFOrasSzoNwVfg3Jg==}
+ peerDependencies:
+ storybook: ^8.2.0 || ^8.3.0-0 || ^8.4.0-0 || ^8.5.0-0 || ^8.6.0-0
+
+ '@storybook/core@8.6.4':
+ resolution: {integrity: sha512-glDbjEBi3wokw1T+KQtl93irHO9N0LCwgylWfWVXYDdQjUJ7pGRQGnw73gPX7Ds9tg3myXFC83GjmY94UYSMbA==}
+ peerDependencies:
+ prettier: ^2 || ^3
+ peerDependenciesMeta:
+ prettier:
+ optional: true
+
+ '@storybook/csf-plugin@8.6.4':
+ resolution: {integrity: sha512-7UpEp4PFTy1iKjZiRaYMG7zvnpLIRPyD0+lUJUlLYG4UIemV3onvnIi1Je1tSZ4hfTup+ulom7JLztVSHZGRMg==}
+ peerDependencies:
+ storybook: ^8.6.4
+
+ '@storybook/global@5.0.0':
+ resolution: {integrity: sha512-FcOqPAXACP0I3oJ/ws6/rrPT9WGhu915Cg8D02a9YxLo0DE9zI+a9A5gRGvmQ09fiWPukqI8ZAEoQEdWUKMQdQ==}
+
+ '@storybook/html-vite@8.6.4':
+ resolution: {integrity: sha512-OoPzzvK/ByT41IuQw9NFOw3cD35croSZ5IIpUUYwTKxqMlFWk4IwfragHMS8uuLwUz2FLKxMqn9n6p+ZAepmcA==}
+ engines: {node: '>=18.0.0'}
+ peerDependencies:
+ storybook: ^8.6.4
+
+ '@storybook/html@8.6.4':
+ resolution: {integrity: sha512-IsNXLR5R7EKWXwBttQkodfGrGIC567fothsHmdtedt0Hkq4iMm5h2m6ppAbAgTxBr1M8Y4PxanhMtMSPu/+nXw==}
+ engines: {node: '>=18.0.0'}
+ peerDependencies:
+ storybook: ^8.6.4
+
+ '@storybook/icons@1.4.0':
+ resolution: {integrity: sha512-Td73IeJxOyalzvjQL+JXx72jlIYHgs+REaHiREOqfpo3A2AYYG71AUbcv+lg7mEDIweKVCxsMQ0UKo634c8XeA==}
+ engines: {node: '>=14.0.0'}
+ peerDependencies:
+ react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta
+ react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta
+
+ '@storybook/instrumenter@8.6.4':
+ resolution: {integrity: sha512-8OtIWLhayTUdqJEeXiPm6l3LTdSkWgQzzV2l2HIe4Adedeot+Rkwu6XHmyRDpnb0+Ish6zmMDqtJBxC2PQsy6Q==}
+ peerDependencies:
+ storybook: ^8.6.4
+
+ '@storybook/manager-api@8.6.4':
+ resolution: {integrity: sha512-w/Nn/VznfbIg2oezDfzZNwSTDY5kBZbzxVBHLCnIcyu2AKt2Yto3pfGi60SikFcTrsClaAKT7D92kMQ9qdQNQQ==}
+ peerDependencies:
+ storybook: ^8.2.0 || ^8.3.0-0 || ^8.4.0-0 || ^8.5.0-0 || ^8.6.0-0
+
+ '@storybook/preview-api@8.6.4':
+ resolution: {integrity: sha512-5HBfxggzxGz0dg2c61NpPiQJav7UAmzsQlzmI5SzWOS6lkaylcDG8giwKzASVCXVWBxNji9qIDFM++UH090aDg==}
+ peerDependencies:
+ storybook: ^8.2.0 || ^8.3.0-0 || ^8.4.0-0 || ^8.5.0-0 || ^8.6.0-0
+
+ '@storybook/react-dom-shim@8.6.4':
+ resolution: {integrity: sha512-kTGJ3aFdmfCFzYaDFGmZWfTXr9xhbUaf0tJ6+nEjc4tME6mFwMI+tTUT6U/J6mJhZuc2DjvIRA7bM0x77dIDqw==}
+ peerDependencies:
+ react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta
+ react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta
+ storybook: ^8.6.4
+
+ '@storybook/test@8.6.4':
+ resolution: {integrity: sha512-JPjfbaMMuCBT47pg3/MDD9vYFF5OGPAOWEB9nJWJ9IjYAb2Nd8OYJQIDoYJQNT+aLkTVLtvzGnVNwdxpouAJcQ==}
+ peerDependencies:
+ storybook: ^8.6.4
+
+ '@storybook/theming@8.6.4':
+ resolution: {integrity: sha512-g9Ns4uenC9oAWETaJ/tEKEIPMdS+CqjNWZz5Wbw1bLNhXwADZgKrVqawzZi64+bYYtQ+i8VCTjPoFa6s2eHiDQ==}
+ peerDependencies:
+ storybook: ^8.2.0 || ^8.3.0-0 || ^8.4.0-0 || ^8.5.0-0 || ^8.6.0-0
+
'@stylistic/eslint-plugin@2.13.0':
resolution: {integrity: sha512-RnO1SaiCFHn666wNz2QfZEFxvmiNRqhzaMXHXxXXKt+MEP7aajlPxUSMIQpKAaJfverpovEYqjBOXDq6dDcaOQ==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
@@ -1185,10 +1277,20 @@ packages:
resolution: {integrity: sha512-pemlzrSESWbdAloYml3bAJMEfNh1Z7EduzqPKprCH5S341frlpYnUEW0H72dLxa6IsYr+mPno20GiSm+h9dEdQ==}
engines: {node: '>=18'}
+ '@testing-library/jest-dom@6.5.0':
+ resolution: {integrity: sha512-xGGHpBXYSHUUr6XsKBfs85TWlYKpTc37cSBBVrXcib2MkHLboWlkClhWF37JKlDb9KEq3dHs+f2xR7XJEWGBxA==}
+ engines: {node: '>=14', npm: '>=6', yarn: '>=1'}
+
'@testing-library/jest-dom@6.6.3':
resolution: {integrity: sha512-IteBhl4XqYNkM54f4ejhLRJiZNqcSCoXUOG2CPK7qbD322KjQozM4kHQOfkG2oln9b9HTYqs+Sae8vBATubxxA==}
engines: {node: '>=14', npm: '>=6', yarn: '>=1'}
+ '@testing-library/user-event@14.5.2':
+ resolution: {integrity: sha512-YAh82Wh4TIrxYLmfGcixwD18oIjyC1pFQC2Y01F2lzV2HTMiYrI0nze0FD0ocB//CKS/7jIUgae+adPqxK5yCQ==}
+ engines: {node: '>=12', npm: '>=6'}
+ peerDependencies:
+ '@testing-library/dom': '>=7.21.4'
+
'@types/aria-query@5.0.4':
resolution: {integrity: sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw==}
@@ -1312,6 +1414,9 @@ packages:
'@types/mdast@4.0.4':
resolution: {integrity: sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==}
+ '@types/mdx@2.0.13':
+ resolution: {integrity: sha512-+OWZQfAYyio6YkJb3HLxDrvnx6SWWDbC0zVPfBRzUk0/nqoDyf6dNxQi3eArPe8rJ473nobTMQ/8Zk+LxJ+Yuw==}
+
'@types/ms@2.1.0':
resolution: {integrity: sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==}
@@ -1321,12 +1426,18 @@ packages:
'@types/normalize-package-data@2.4.4':
resolution: {integrity: sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==}
+ '@types/react@19.0.10':
+ resolution: {integrity: sha512-JuRQ9KXLEjaUNjTWpzuR231Z2WpIwczOkBEIvbHNCzQefFIT0L8IqE6NV6ULLyC1SI/i234JnDoMkfg+RjQj2g==}
+
'@types/unist@2.0.11':
resolution: {integrity: sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==}
'@types/unist@3.0.3':
resolution: {integrity: sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==}
+ '@types/uuid@9.0.8':
+ resolution: {integrity: sha512-jg+97EGIcY9AGHJJRaaPVgetKDsrTgbRjQ5Msgjh/DQKEFl0DtyRr/VCOyD1T2R1MNeWPK/u7JoGhlDZnKBAfA==}
+
'@typescript-eslint/eslint-plugin@8.23.0':
resolution: {integrity: sha512-vBz65tJgRrA1Q5gWlRfvoH+w943dq9K1p1yDBY2pc+a1nbBLZp7fB9+Hk8DaALUbzjqlMfgaqlVPT1REJdkt/w==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
@@ -1390,6 +1501,9 @@ packages:
vitest:
optional: true
+ '@vitest/expect@2.0.5':
+ resolution: {integrity: sha512-yHZtwuP7JZivj65Gxoi8upUN2OzHTi3zVfjwdpu2WrvCZPLwsJ2Ey5ILIPccoW23dd/zQBlJ4/dhi7DWNyXCpA==}
+
'@vitest/expect@3.0.7':
resolution: {integrity: sha512-QP25f+YJhzPfHrHfYHtvRn+uvkCFCqFtW9CktfBxmB+25QqWsx7VB2As6f4GmwllHLDhXNHvqedwhvMmSnNmjw==}
@@ -1404,6 +1518,12 @@ packages:
vite:
optional: true
+ '@vitest/pretty-format@2.0.5':
+ resolution: {integrity: sha512-h8k+1oWHfwTkyTkb9egzwNMfJAEx4veaPSnMeKbVSjp4euqGSbQlm5+6VHwTr7u4FJslVVsUG5nopCaAYdOmSQ==}
+
+ '@vitest/pretty-format@2.1.9':
+ resolution: {integrity: sha512-KhRIdGV2U9HOUzxfiHmY8IFHTdqtOhIzCpd8WRdJiE7D/HUcZVD0EgQCVjm+Q9gkUXWgBvMmTtZgIG48wq7sOQ==}
+
'@vitest/pretty-format@3.0.7':
resolution: {integrity: sha512-CiRY0BViD/V8uwuEzz9Yapyao+M9M008/9oMOSQydwbwb+CMokEq3XVaF3XK/VWaOK0Jm9z7ENhybg70Gtxsmg==}
@@ -1413,9 +1533,18 @@ packages:
'@vitest/snapshot@3.0.7':
resolution: {integrity: sha512-eqTUryJWQN0Rtf5yqCGTQWsCFOQe4eNz5Twsu21xYEcnFJtMU5XvmG0vgebhdLlrHQTSq5p8vWHJIeJQV8ovsA==}
+ '@vitest/spy@2.0.5':
+ resolution: {integrity: sha512-c/jdthAhvJdpfVuaexSrnawxZz6pywlTPe84LUB2m/4t3rl2fTo9NFGBG4oWgaD+FTgDDV8hJ/nibT7IfH3JfA==}
+
'@vitest/spy@3.0.7':
resolution: {integrity: sha512-4T4WcsibB0B6hrKdAZTM37ekuyFZt2cGbEGd2+L0P8ov15J1/HUsUaqkXEQPNAWr4BtPPe1gI+FYfMHhEKfR8w==}
+ '@vitest/utils@2.0.5':
+ resolution: {integrity: sha512-d8HKbqIcya+GR67mkZbrzhS5kKhtp8dQLcmRZLGTscGVg7yImT82cIrhtn2L8+VujWcy6KZweApgNmPsTAO/UQ==}
+
+ '@vitest/utils@2.1.9':
+ resolution: {integrity: sha512-v0psaMSkNJ3A2NMrUEHFRzJtDPFn+/VWZ5WxImB21T9fjucJRmS7xCS3ppEnARb9y11OAzaD+P2Ps+b+BGX5iQ==}
+
'@vitest/utils@3.0.7':
resolution: {integrity: sha512-xePVpCRfooFX3rANQjwoditoXgWb1MaFbzmGuPP59MK6i13mrnDw/yEIyJudLeW6/38mCNcwCiJIGmpDPibAIg==}
@@ -1499,12 +1628,24 @@ packages:
resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==}
engines: {node: '>=12'}
+ ast-types@0.16.1:
+ resolution: {integrity: sha512-6t10qk83GOG8p0vKmaCr8eiilZwO171AvbROMtvvNiwrTly62t+7XkA8RdIIVbpMhCASAsxgAzdRSwh6nw/5Dg==}
+ engines: {node: '>=4'}
+
asynckit@0.4.0:
resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==}
+ available-typed-arrays@1.0.7:
+ resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==}
+ engines: {node: '>= 0.4'}
+
balanced-match@1.0.2:
resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==}
+ better-opn@3.0.2:
+ resolution: {integrity: sha512-aVNobHnJqLiUelTaHat9DZ1qM2w0C0Eym4LPI/3JxOnSokGVdsl1T1kN7TFvsEAD8G47A6VKQ0TVHqbBnYMJlQ==}
+ engines: {node: '>=12.0.0'}
+
boolbase@1.0.0:
resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==}
@@ -1518,6 +1659,9 @@ packages:
resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==}
engines: {node: '>=8'}
+ browser-assert@1.2.1:
+ resolution: {integrity: sha512-nfulgvOR6S4gt9UKCeGJOuSGBPGiFT6oQ/2UBnvTY/5aQ1PnksW72fhZkM30DzoRRv2WpwZf1vHHEr3mtuXIWQ==}
+
browserslist@4.24.4:
resolution: {integrity: sha512-KDi1Ny1gSePi1vm0q4oxSF8b4DR44GF4BbmS2YdhPLOEqd8pDviZOGH/GsmRwoWJ2+5Lr085X7naowMwKHDG1A==}
engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7}
@@ -1557,6 +1701,14 @@ packages:
resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==}
engines: {node: '>= 0.4'}
+ call-bind@1.0.8:
+ resolution: {integrity: sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==}
+ engines: {node: '>= 0.4'}
+
+ call-bound@1.0.4:
+ resolution: {integrity: sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==}
+ engines: {node: '>= 0.4'}
+
callsites@3.1.0:
resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==}
engines: {node: '>=6'}
@@ -1616,6 +1768,18 @@ packages:
resolution: {integrity: sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==}
engines: {node: '>=10'}
+ chromatic@11.27.0:
+ resolution: {integrity: sha512-jQ2ufjS+ePpg+NtcPI9B2eOi+pAzlRd2nhd1LgNMsVCC9Bzf5t8mJtyd8v2AUuJS0LdX0QVBgkOnlNv9xviHzA==}
+ hasBin: true
+ peerDependencies:
+ '@chromatic-com/cypress': ^0.*.* || ^1.0.0
+ '@chromatic-com/playwright': ^0.*.* || ^1.0.0
+ peerDependenciesMeta:
+ '@chromatic-com/cypress':
+ optional: true
+ '@chromatic-com/playwright':
+ optional: true
+
ci-info@4.1.0:
resolution: {integrity: sha512-HutrvTNsF48wnxkzERIXOe5/mlcfFcbfCmwcg6CJnizbSue78AbDt+1cgl26zwn61WFxhcPykPfZrbqjGmBb4A==}
engines: {node: '>=8'}
@@ -1716,6 +1880,9 @@ packages:
resolution: {integrity: sha512-9+vem03dMXG7gDmZ62uqmRiMRNtinIZ9ZyuF6BdxzfOD+FdN5hretzynkn0ReS2DO2GSw76RWHs0UmJPI2zUjw==}
engines: {node: '>=18'}
+ csstype@3.1.3:
+ resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==}
+
d3-array@3.2.4:
resolution: {integrity: sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg==}
engines: {node: '>=12'}
@@ -1877,6 +2044,14 @@ packages:
deep-is@0.1.4:
resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==}
+ define-data-property@1.1.4:
+ resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==}
+ engines: {node: '>= 0.4'}
+
+ define-lazy-prop@2.0.0:
+ resolution: {integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==}
+ engines: {node: '>=8'}
+
defu@6.1.4:
resolution: {integrity: sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==}
@@ -1987,6 +2162,11 @@ packages:
resolution: {integrity: sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==}
engines: {node: '>= 0.4'}
+ esbuild-register@3.6.0:
+ resolution: {integrity: sha512-H2/S7Pm8a9CL1uhp9OvjwrBh5Pvx0H8qVOxNu8Wed9Y7qv56MPtq+GGM8RJpq6glYJn9Wspr8uw7l55uyinNeg==}
+ peerDependencies:
+ esbuild: '>=0.12 <1'
+
esbuild@0.23.1:
resolution: {integrity: sha512-VVNz/9Sa0bs5SELtn3f7qhJCDPCF5oMEl5cO9/SSinpE9hbPVvxbd572HH5AKiP7WD8INO53GgfDDhRjkylHEg==}
engines: {node: '>=18'}
@@ -2256,6 +2436,11 @@ packages:
resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+ esprima@4.0.1:
+ resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==}
+ engines: {node: '>=4'}
+ hasBin: true
+
esquery@1.6.0:
resolution: {integrity: sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==}
engines: {node: '>=0.10'}
@@ -2317,6 +2502,10 @@ packages:
resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==}
engines: {node: '>=16.0.0'}
+ filesize@10.1.6:
+ resolution: {integrity: sha512-sJslQKU2uM33qH5nqewAwVB2QgR6w1aMNsYUp3aN5rMRyXEwJGmZvaWzeJFNTOXWlHQyBFCWrdj3fV/fsTOX8w==}
+ engines: {node: '>= 10.4.0'}
+
fill-range@7.1.1:
resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==}
engines: {node: '>=8'}
@@ -2340,6 +2529,10 @@ packages:
flatted@3.3.2:
resolution: {integrity: sha512-AiwGJM8YcNOaobumgtng+6NHuOqC3A7MixFeDafM3X9cIUM+xUXoS5Vfgf+OihAYe20fxqNM9yPBXJzRtZ/4eA==}
+ for-each@0.3.5:
+ resolution: {integrity: sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==}
+ engines: {node: '>= 0.4'}
+
foreground-child@3.3.0:
resolution: {integrity: sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==}
engines: {node: '>=14'}
@@ -2435,6 +2628,9 @@ packages:
resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==}
engines: {node: '>=8'}
+ has-property-descriptors@1.0.2:
+ resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==}
+
has-symbols@1.1.0:
resolution: {integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==}
engines: {node: '>= 0.4'}
@@ -2501,6 +2697,9 @@ packages:
resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==}
engines: {node: '>=8'}
+ inherits@2.0.4:
+ resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==}
+
internmap@2.0.3:
resolution: {integrity: sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==}
engines: {node: '>=12'}
@@ -2517,6 +2716,10 @@ packages:
is-alphanumerical@2.0.1:
resolution: {integrity: sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==}
+ is-arguments@1.2.0:
+ resolution: {integrity: sha512-7bVbi0huj/wrIAOzb8U1aszg9kdi3KN/CyU19CTI7tAoZYEZoL9yCDXpbXN+uPsuWnP02cyug1gleqq+TU+YCA==}
+ engines: {node: '>= 0.4'}
+
is-arrayish@0.2.1:
resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==}
@@ -2524,6 +2727,10 @@ packages:
resolution: {integrity: sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A==}
engines: {node: '>=6'}
+ is-callable@1.2.7:
+ resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==}
+ engines: {node: '>= 0.4'}
+
is-core-module@2.16.1:
resolution: {integrity: sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==}
engines: {node: '>= 0.4'}
@@ -2534,6 +2741,11 @@ packages:
is-decimal@2.0.1:
resolution: {integrity: sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==}
+ is-docker@2.2.1:
+ resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==}
+ engines: {node: '>=8'}
+ hasBin: true
+
is-extglob@2.1.1:
resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==}
engines: {node: '>=0.10.0'}
@@ -2550,6 +2762,10 @@ packages:
resolution: {integrity: sha512-OVa3u9kkBbw7b8Xw5F9P+D/T9X+Z4+JruYVNapTjPYZYUznQ5YfWeFkOj606XYYW8yugTfC8Pj0hYqvi4ryAhA==}
engines: {node: '>=18'}
+ is-generator-function@1.1.0:
+ resolution: {integrity: sha512-nPUB5km40q9e8UfN/Zc24eLlzdSf9OfKByBw9CIdw4H1giPMeA0OIJvbchsCu4npfI2QcMVBsGEBHKZ7wLTWmQ==}
+ engines: {node: '>= 0.4'}
+
is-glob@4.0.3:
resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==}
engines: {node: '>=0.10.0'}
@@ -2571,10 +2787,22 @@ packages:
is-potential-custom-element-name@1.0.1:
resolution: {integrity: sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==}
+ is-regex@1.2.1:
+ resolution: {integrity: sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==}
+ engines: {node: '>= 0.4'}
+
is-stream@3.0.0:
resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==}
engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
+ is-typed-array@1.1.15:
+ resolution: {integrity: sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==}
+ engines: {node: '>= 0.4'}
+
+ is-wsl@2.2.0:
+ resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==}
+ engines: {node: '>=8'}
+
isexe@2.0.0:
resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==}
@@ -2637,6 +2865,9 @@ packages:
jsonc-parser@3.3.1:
resolution: {integrity: sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ==}
+ jsonfile@6.1.0:
+ resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==}
+
katex@0.16.21:
resolution: {integrity: sha512-XvqR7FgOHtWupfMiigNzmh+MgUVmDGU2kXZm899ZkPfcuoPuFxyHmXsgATDpFZDAXCI8tvinaVcDo8PIIJSo4A==}
hasBin: true
@@ -2723,6 +2954,9 @@ packages:
magic-string@0.30.17:
resolution: {integrity: sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==}
+ map-or-similar@1.5.0:
+ resolution: {integrity: sha512-0aF7ZmVon1igznGI4VS30yugpduQW3y3GkcgGJOp7d8x8QrizhigUxjI/m2UojsXXto+jLAH3KSz+xOJTiORjg==}
+
markdown-it@14.1.0:
resolution: {integrity: sha512-a54IwgWPaeBCAAsv13YgmALOF1elABB08FxO9i+r4VFk5Vl4pKokRPeX8u5TCgSsPi6ec1otfLjdOpVcgbpshg==}
hasBin: true
@@ -2779,6 +3013,9 @@ packages:
mdurl@2.0.0:
resolution: {integrity: sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==}
+ memoizerific@1.11.3:
+ resolution: {integrity: sha512-/EuHYwAPdLtXwAwSZkh/Gutery6pD2KYd44oQLhAvQp/50mpyduZh8Q7PYHXTCJ+wuXxt7oij2LXyIJOOYFPog==}
+
merge-stream@2.0.0:
resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==}
@@ -3002,6 +3239,10 @@ packages:
oniguruma-to-es@2.3.0:
resolution: {integrity: sha512-bwALDxriqfKGfUufKGGepCzu9x7nJQuoRoAFp4AnwehhC2crqrDIAP/uN2qdlsAvSMpeRC3+Yzhqc7hLmle5+g==}
+ open@8.4.2:
+ resolution: {integrity: sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==}
+ engines: {node: '>=12'}
+
optionator@0.9.4:
resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==}
engines: {node: '>= 0.8.0'}
@@ -3119,6 +3360,14 @@ packages:
resolution: {integrity: sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==}
engines: {node: '>=4'}
+ polished@4.3.1:
+ resolution: {integrity: sha512-OBatVyC/N7SCW/FaDHrSd+vn0o5cS855TOmYi4OkdWUMSJCET/xip//ch8xGUvtr3i44X9LVyWwQlRMTN3pwSA==}
+ engines: {node: '>=10'}
+
+ possible-typed-array-names@1.1.0:
+ resolution: {integrity: sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==}
+ engines: {node: '>= 0.4'}
+
postcss-load-config@6.0.1:
resolution: {integrity: sha512-oPtTM4oerL+UXmx+93ytZVN82RrlY/wPUV8IeDxFrzIjXOLF1pN+EmKPLbubvKHT2HC20xXsCAH2Z+CKV6Oz/g==}
engines: {node: '>= 18'}
@@ -3153,6 +3402,10 @@ packages:
resolution: {integrity: sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==}
engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
+ process@0.11.10:
+ resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==}
+ engines: {node: '>= 0.6.0'}
+
prompts@2.4.2:
resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==}
engines: {node: '>= 6'}
@@ -3174,9 +3427,24 @@ packages:
rc9@2.1.2:
resolution: {integrity: sha512-btXCnMmRIBINM2LDZoEmOogIZU7Qe7zn4BpomSKZ/ykbLObuBdvG+mFq11DL6fjH1DRwHhrlgtYWG96bJiC7Cg==}
+ react-confetti@6.4.0:
+ resolution: {integrity: sha512-5MdGUcqxrTU26I2EU7ltkWPwxvucQTuqMm8dUz72z2YMqTD6s9vMcDUysk7n9jnC+lXuCPeJJ7Knf98VEYE9Rg==}
+ engines: {node: '>=16'}
+ peerDependencies:
+ react: ^16.3.0 || ^17.0.1 || ^18.0.0 || ^19.0.0
+
+ react-dom@19.0.0:
+ resolution: {integrity: sha512-4GV5sHFG0e/0AD4X+ySy6UJd3jVl1iNsNHdpad0qhABJ11twS3TTBnseqsKurKcsNqCEFeGL3uLpVChpIO3QfQ==}
+ peerDependencies:
+ react: ^19.0.0
+
react-is@17.0.2:
resolution: {integrity: sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==}
+ react@19.0.0:
+ resolution: {integrity: sha512-V8AVnmPIICiWpGfm6GLzCR/W5FXLchHop40W4nXBmdlEceh16rCN8O8LNWm5bh5XUX91fh7KpA+W0TgMKmgTpQ==}
+ engines: {node: '>=0.10.0'}
+
read-pkg-up@7.0.1:
resolution: {integrity: sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==}
engines: {node: '>=8'}
@@ -3189,6 +3457,10 @@ packages:
resolution: {integrity: sha512-h80JrZu/MHUZCyHu5ciuoI0+WxsCxzxJTILn6Fs8rxSnFPh+UVHYfeIxK1nVGugMqkfC4vJcBOYbkfkwYK0+gw==}
engines: {node: '>= 14.18.0'}
+ recast@0.23.11:
+ resolution: {integrity: sha512-YTUo+Flmw4ZXiWfQKGcwwc11KnoRAYgzAE2E7mXKCjSviTKShtxBsN6YUUBB2gtaBzKzeKunxhUwNHQuRryhWA==}
+ engines: {node: '>= 4'}
+
redent@3.0.0:
resolution: {integrity: sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==}
engines: {node: '>=8'}
@@ -3260,11 +3532,6 @@ packages:
robust-predicates@3.0.2:
resolution: {integrity: sha512-IXgzBWvWQwE6PrDI05OvmXUIruQTcoMDzRsOd5CDvHCVLcLHMTSYvOK5Cm46kWqlV3yAbuSpBZdJ5oP5OUoStg==}
- rollup@4.30.1:
- resolution: {integrity: sha512-mlJ4glW020fPuLi7DkM/lN97mYEZGWeqBnrljzN0gs7GLctqX3lNWxKQ7Gl712UAX+6fog/L3jh4gb7R6aVi3w==}
- engines: {node: '>=18.0.0', npm: '>=8.0.0'}
- hasBin: true
-
rollup@4.34.5:
resolution: {integrity: sha512-GyVCmpo9z/HYqFD8QWoBUnz1Q9xC22t8tPAZm/AvAcUg2U2/+DkboEvSioMwv042zE4I9N3FEhx7fiCT2YHzKQ==}
engines: {node: '>=18.0.0', npm: '>=8.0.0'}
@@ -3279,6 +3546,10 @@ packages:
rw@1.3.3:
resolution: {integrity: sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ==}
+ safe-regex-test@1.1.0:
+ resolution: {integrity: sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==}
+ engines: {node: '>= 0.4'}
+
safer-buffer@2.1.2:
resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==}
@@ -3286,6 +3557,9 @@ packages:
resolution: {integrity: sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==}
engines: {node: '>=v12.22.7'}
+ scheduler@0.25.0:
+ resolution: {integrity: sha512-xFVuu11jh+xcO7JOAGJNOXld8/TcEHK/4CituBUeUb5hqxJLj9YuemAEuvm9gQ/+pgXYfbQuqAkiYu+u7YEsNA==}
+
scslre@0.3.0:
resolution: {integrity: sha512-3A6sD0WYP7+QrjbfNA2FN3FsOaGGFoekCVgTyypy53gPxhbkCIjtO6YWgdrfM+n/8sI8JeXZOIxsHjMTNxQ4nQ==}
engines: {node: ^14.0.0 || >=16.0.0}
@@ -3299,6 +3573,10 @@ packages:
engines: {node: '>=10'}
hasBin: true
+ set-function-length@1.2.2:
+ resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==}
+ engines: {node: '>= 0.4'}
+
shebang-command@2.0.0:
resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==}
engines: {node: '>=8'}
@@ -3377,6 +3655,15 @@ packages:
std-env@3.8.1:
resolution: {integrity: sha512-vj5lIj3Mwf9D79hBkltk5qmkFI+biIKWS2IBxEyEU3AX1tUf7AoL8nSazCOiiqQsGKIq01SClsKEzweu34uwvA==}
+ storybook@8.6.4:
+ resolution: {integrity: sha512-XXh1Acvf1r3BQX0BDLQw6yhZ7yUGvYxIcKOBuMdetnX7iXtczipJTfw0uyFwk0ltkKEE9PpJvivYmARF3u64VQ==}
+ hasBin: true
+ peerDependencies:
+ prettier: ^2 || ^3
+ peerDependenciesMeta:
+ prettier:
+ optional: true
+
string-argv@0.3.2:
resolution: {integrity: sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==}
engines: {node: '>=0.6.19'}
@@ -3466,6 +3753,9 @@ packages:
tiny-conventional-commits-parser@0.0.1:
resolution: {integrity: sha512-N5+AZWdBeHNSgTIaxvx0+9mFrnW4H1BbjQ84H7i3TuWSkno8Hju886hLaHZhE/hYEKrfrfl/uHurqpZJHDuYGQ==}
+ tiny-invariant@1.3.3:
+ resolution: {integrity: sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==}
+
tinybench@2.9.0:
resolution: {integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==}
@@ -3480,6 +3770,10 @@ packages:
resolution: {integrity: sha512-al6n+QEANGFOMf/dmUMsuS5/r9B06uwlyNjZZql/zv8J7ybHCgoihBNORZCY2mzUuAnomQa2JdhyHKzZxPCrFA==}
engines: {node: ^18.0.0 || >=20.0.0}
+ tinyrainbow@1.2.0:
+ resolution: {integrity: sha512-weEDEq7Z5eTHPDh4xjX789+fHfF+P8boiFB+0vbWzpbnbsEr/GRaohi/uMKxg8RZMXnl1ItAi/IUHWMsjDV7kQ==}
+ engines: {node: '>=14.0.0'}
+
tinyrainbow@2.0.0:
resolution: {integrity: sha512-op4nsTR47R6p0vMUUoYl/a+ljLFVtlfaXkLQmqfLR1qHma1h/ysYk4hEXZ880bf2CYgTskvTa/e196Vd5dDQXw==}
engines: {node: '>=14.0.0'}
@@ -3527,6 +3821,10 @@ packages:
peerDependencies:
typescript: '>=4.8.4'
+ ts-dedent@2.2.0:
+ resolution: {integrity: sha512-q5W7tVM71e2xjHZTlgfTDoPF/SmqKG5hddq9SzR49CH2hayqRKJtQ4mtRlSxKaJlR/+9rEM+mnBHf7I2/BQcpQ==}
+ engines: {node: '>=6.10'}
+
ts-interface-checker@0.1.13:
resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==}
@@ -3557,6 +3855,9 @@ packages:
engines: {node: '>=18.0.0'}
hasBin: true
+ tween-functions@1.2.0:
+ resolution: {integrity: sha512-PZBtLYcCLtEcjL14Fzb1gSxPBeL7nWvGhO5ZFPGqziCcr8uvHp0NDmdjBchp6KHL+tExcg0m3NISmKxhU394dA==}
+
type-check@0.4.0:
resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==}
engines: {node: '>= 0.8.0'}
@@ -3624,6 +3925,14 @@ packages:
unist-util-visit@5.0.0:
resolution: {integrity: sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==}
+ universalify@2.0.1:
+ resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==}
+ engines: {node: '>= 10.0.0'}
+
+ unplugin@1.16.1:
+ resolution: {integrity: sha512-4/u/j4FrCKdi17jaxuJA0jClGxB1AvU2hw/IuayPc4ay1XGaJs/rbb4v5WKwAjNifjmXK9PIFyuPiaK8azyR9w==}
+ engines: {node: '>=14.0.0'}
+
update-browserslist-db@1.1.2:
resolution: {integrity: sha512-PPypAm5qvlD7XMZC3BujecnaOxwhrtoFR+Dqkk5Aa/6DssiH0ibKoketaj9w8LP7Bont1rYeoV5plxD7RTEPRg==}
hasBin: true
@@ -3636,6 +3945,13 @@ packages:
util-deprecate@1.0.2:
resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==}
+ util@0.12.5:
+ resolution: {integrity: sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==}
+
+ uuid@9.0.1:
+ resolution: {integrity: sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==}
+ hasBin: true
+
validate-npm-package-license@3.0.4:
resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==}
@@ -3735,6 +4051,9 @@ packages:
resolution: {integrity: sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==}
engines: {node: '>=12'}
+ webpack-virtual-modules@0.6.2:
+ resolution: {integrity: sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ==}
+
whatwg-encoding@3.1.1:
resolution: {integrity: sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==}
engines: {node: '>=18'}
@@ -3750,6 +4069,10 @@ packages:
whatwg-url@7.1.0:
resolution: {integrity: sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==}
+ which-typed-array@1.1.19:
+ resolution: {integrity: sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw==}
+ engines: {node: '>= 0.4'}
+
which@2.0.2:
resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==}
engines: {node: '>= 8'}
@@ -3970,10 +4293,23 @@ snapshots:
'@babel/helper-string-parser': 7.25.9
'@babel/helper-validator-identifier': 7.25.9
- '@clack/core@0.3.5':
+ '@chromatic-com/storybook@3.2.5(react@19.0.0)(storybook@8.6.4)':
dependencies:
- picocolors: 1.1.1
- sisteransi: 1.0.5
+ chromatic: 11.27.0
+ filesize: 10.1.6
+ jsonfile: 6.1.0
+ react-confetti: 6.4.0(react@19.0.0)
+ storybook: 8.6.4
+ strip-ansi: 7.1.0
+ transitivePeerDependencies:
+ - '@chromatic-com/cypress'
+ - '@chromatic-com/playwright'
+ - react
+
+ '@clack/core@0.3.5':
+ dependencies:
+ picocolors: 1.1.1
+ sisteransi: 1.0.5
'@clack/core@0.4.1':
dependencies:
@@ -4306,6 +4642,12 @@ snapshots:
'@jridgewell/resolve-uri': 3.1.2
'@jridgewell/sourcemap-codec': 1.5.0
+ '@mdx-js/react@3.1.0(@types/react@19.0.10)(react@19.0.0)':
+ dependencies:
+ '@types/mdx': 2.0.13
+ '@types/react': 19.0.10
+ react: 19.0.0
+
'@nodelib/fs.scandir@2.1.5':
dependencies:
'@nodelib/fs.stat': 2.0.5
@@ -4325,117 +4667,60 @@ snapshots:
'@rbardini/html@1.0.1': {}
- '@rollup/rollup-android-arm-eabi@4.30.1':
- optional: true
-
'@rollup/rollup-android-arm-eabi@4.34.5':
optional: true
- '@rollup/rollup-android-arm64@4.30.1':
- optional: true
-
'@rollup/rollup-android-arm64@4.34.5':
optional: true
- '@rollup/rollup-darwin-arm64@4.30.1':
- optional: true
-
'@rollup/rollup-darwin-arm64@4.34.5':
optional: true
- '@rollup/rollup-darwin-x64@4.30.1':
- optional: true
-
'@rollup/rollup-darwin-x64@4.34.5':
optional: true
- '@rollup/rollup-freebsd-arm64@4.30.1':
- optional: true
-
'@rollup/rollup-freebsd-arm64@4.34.5':
optional: true
- '@rollup/rollup-freebsd-x64@4.30.1':
- optional: true
-
'@rollup/rollup-freebsd-x64@4.34.5':
optional: true
- '@rollup/rollup-linux-arm-gnueabihf@4.30.1':
- optional: true
-
'@rollup/rollup-linux-arm-gnueabihf@4.34.5':
optional: true
- '@rollup/rollup-linux-arm-musleabihf@4.30.1':
- optional: true
-
'@rollup/rollup-linux-arm-musleabihf@4.34.5':
optional: true
- '@rollup/rollup-linux-arm64-gnu@4.30.1':
- optional: true
-
'@rollup/rollup-linux-arm64-gnu@4.34.5':
optional: true
- '@rollup/rollup-linux-arm64-musl@4.30.1':
- optional: true
-
'@rollup/rollup-linux-arm64-musl@4.34.5':
optional: true
- '@rollup/rollup-linux-loongarch64-gnu@4.30.1':
- optional: true
-
'@rollup/rollup-linux-loongarch64-gnu@4.34.5':
optional: true
- '@rollup/rollup-linux-powerpc64le-gnu@4.30.1':
- optional: true
-
'@rollup/rollup-linux-powerpc64le-gnu@4.34.5':
optional: true
- '@rollup/rollup-linux-riscv64-gnu@4.30.1':
- optional: true
-
'@rollup/rollup-linux-riscv64-gnu@4.34.5':
optional: true
- '@rollup/rollup-linux-s390x-gnu@4.30.1':
- optional: true
-
'@rollup/rollup-linux-s390x-gnu@4.34.5':
optional: true
- '@rollup/rollup-linux-x64-gnu@4.30.1':
- optional: true
-
'@rollup/rollup-linux-x64-gnu@4.34.5':
optional: true
- '@rollup/rollup-linux-x64-musl@4.30.1':
- optional: true
-
'@rollup/rollup-linux-x64-musl@4.34.5':
optional: true
- '@rollup/rollup-win32-arm64-msvc@4.30.1':
- optional: true
-
'@rollup/rollup-win32-arm64-msvc@4.34.5':
optional: true
- '@rollup/rollup-win32-ia32-msvc@4.30.1':
- optional: true
-
'@rollup/rollup-win32-ia32-msvc@4.34.5':
optional: true
- '@rollup/rollup-win32-x64-msvc@4.30.1':
- optional: true
-
'@rollup/rollup-win32-x64-msvc@4.34.5':
optional: true
@@ -4474,6 +4759,199 @@ snapshots:
'@shikijs/vscode-textmate@10.0.1': {}
+ '@storybook/addon-actions@8.6.4(storybook@8.6.4)':
+ dependencies:
+ '@storybook/global': 5.0.0
+ '@types/uuid': 9.0.8
+ dequal: 2.0.3
+ polished: 4.3.1
+ storybook: 8.6.4
+ uuid: 9.0.1
+
+ '@storybook/addon-backgrounds@8.6.4(storybook@8.6.4)':
+ dependencies:
+ '@storybook/global': 5.0.0
+ memoizerific: 1.11.3
+ storybook: 8.6.4
+ ts-dedent: 2.2.0
+
+ '@storybook/addon-controls@8.6.4(storybook@8.6.4)':
+ dependencies:
+ '@storybook/global': 5.0.0
+ dequal: 2.0.3
+ storybook: 8.6.4
+ ts-dedent: 2.2.0
+
+ '@storybook/addon-docs@8.6.4(@types/react@19.0.10)(storybook@8.6.4)':
+ dependencies:
+ '@mdx-js/react': 3.1.0(@types/react@19.0.10)(react@19.0.0)
+ '@storybook/blocks': 8.6.4(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(storybook@8.6.4)
+ '@storybook/csf-plugin': 8.6.4(storybook@8.6.4)
+ '@storybook/react-dom-shim': 8.6.4(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(storybook@8.6.4)
+ react: 19.0.0
+ react-dom: 19.0.0(react@19.0.0)
+ storybook: 8.6.4
+ ts-dedent: 2.2.0
+ transitivePeerDependencies:
+ - '@types/react'
+
+ '@storybook/addon-essentials@8.6.4(@types/react@19.0.10)(storybook@8.6.4)':
+ dependencies:
+ '@storybook/addon-actions': 8.6.4(storybook@8.6.4)
+ '@storybook/addon-backgrounds': 8.6.4(storybook@8.6.4)
+ '@storybook/addon-controls': 8.6.4(storybook@8.6.4)
+ '@storybook/addon-docs': 8.6.4(@types/react@19.0.10)(storybook@8.6.4)
+ '@storybook/addon-highlight': 8.6.4(storybook@8.6.4)
+ '@storybook/addon-measure': 8.6.4(storybook@8.6.4)
+ '@storybook/addon-outline': 8.6.4(storybook@8.6.4)
+ '@storybook/addon-toolbars': 8.6.4(storybook@8.6.4)
+ '@storybook/addon-viewport': 8.6.4(storybook@8.6.4)
+ storybook: 8.6.4
+ ts-dedent: 2.2.0
+ transitivePeerDependencies:
+ - '@types/react'
+
+ '@storybook/addon-highlight@8.6.4(storybook@8.6.4)':
+ dependencies:
+ '@storybook/global': 5.0.0
+ storybook: 8.6.4
+
+ '@storybook/addon-interactions@8.6.4(storybook@8.6.4)':
+ dependencies:
+ '@storybook/global': 5.0.0
+ '@storybook/instrumenter': 8.6.4(storybook@8.6.4)
+ '@storybook/test': 8.6.4(storybook@8.6.4)
+ polished: 4.3.1
+ storybook: 8.6.4
+ ts-dedent: 2.2.0
+
+ '@storybook/addon-measure@8.6.4(storybook@8.6.4)':
+ dependencies:
+ '@storybook/global': 5.0.0
+ storybook: 8.6.4
+ tiny-invariant: 1.3.3
+
+ '@storybook/addon-outline@8.6.4(storybook@8.6.4)':
+ dependencies:
+ '@storybook/global': 5.0.0
+ storybook: 8.6.4
+ ts-dedent: 2.2.0
+
+ '@storybook/addon-toolbars@8.6.4(storybook@8.6.4)':
+ dependencies:
+ storybook: 8.6.4
+
+ '@storybook/addon-viewport@8.6.4(storybook@8.6.4)':
+ dependencies:
+ memoizerific: 1.11.3
+ storybook: 8.6.4
+
+ '@storybook/blocks@8.6.4(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(storybook@8.6.4)':
+ dependencies:
+ '@storybook/icons': 1.4.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
+ storybook: 8.6.4
+ ts-dedent: 2.2.0
+ optionalDependencies:
+ react: 19.0.0
+ react-dom: 19.0.0(react@19.0.0)
+
+ '@storybook/builder-vite@8.6.4(storybook@8.6.4)(vite@6.0.7(@types/node@22.5.0)(jiti@2.4.2)(terser@5.38.1)(tsx@4.19.2)(yaml@2.7.0))':
+ dependencies:
+ '@storybook/csf-plugin': 8.6.4(storybook@8.6.4)
+ browser-assert: 1.2.1
+ storybook: 8.6.4
+ ts-dedent: 2.2.0
+ vite: 6.0.7(@types/node@22.5.0)(jiti@2.4.2)(terser@5.38.1)(tsx@4.19.2)(yaml@2.7.0)
+
+ '@storybook/components@8.6.4(storybook@8.6.4)':
+ dependencies:
+ storybook: 8.6.4
+
+ '@storybook/core@8.6.4(storybook@8.6.4)':
+ dependencies:
+ '@storybook/theming': 8.6.4(storybook@8.6.4)
+ better-opn: 3.0.2
+ browser-assert: 1.2.1
+ esbuild: 0.24.2
+ esbuild-register: 3.6.0(esbuild@0.24.2)
+ jsdoc-type-pratt-parser: 4.1.0
+ process: 0.11.10
+ recast: 0.23.11
+ semver: 7.7.1
+ util: 0.12.5
+ ws: 8.18.1
+ transitivePeerDependencies:
+ - bufferutil
+ - storybook
+ - supports-color
+ - utf-8-validate
+
+ '@storybook/csf-plugin@8.6.4(storybook@8.6.4)':
+ dependencies:
+ storybook: 8.6.4
+ unplugin: 1.16.1
+
+ '@storybook/global@5.0.0': {}
+
+ '@storybook/html-vite@8.6.4(storybook@8.6.4)(vite@6.0.7(@types/node@22.5.0)(jiti@2.4.2)(terser@5.38.1)(tsx@4.19.2)(yaml@2.7.0))':
+ dependencies:
+ '@storybook/builder-vite': 8.6.4(storybook@8.6.4)(vite@6.0.7(@types/node@22.5.0)(jiti@2.4.2)(terser@5.38.1)(tsx@4.19.2)(yaml@2.7.0))
+ '@storybook/html': 8.6.4(storybook@8.6.4)
+ magic-string: 0.30.17
+ storybook: 8.6.4
+ transitivePeerDependencies:
+ - vite
+
+ '@storybook/html@8.6.4(storybook@8.6.4)':
+ dependencies:
+ '@storybook/components': 8.6.4(storybook@8.6.4)
+ '@storybook/global': 5.0.0
+ '@storybook/manager-api': 8.6.4(storybook@8.6.4)
+ '@storybook/preview-api': 8.6.4(storybook@8.6.4)
+ '@storybook/theming': 8.6.4(storybook@8.6.4)
+ storybook: 8.6.4
+ ts-dedent: 2.2.0
+
+ '@storybook/icons@1.4.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0)':
+ dependencies:
+ react: 19.0.0
+ react-dom: 19.0.0(react@19.0.0)
+
+ '@storybook/instrumenter@8.6.4(storybook@8.6.4)':
+ dependencies:
+ '@storybook/global': 5.0.0
+ '@vitest/utils': 2.1.9
+ storybook: 8.6.4
+
+ '@storybook/manager-api@8.6.4(storybook@8.6.4)':
+ dependencies:
+ storybook: 8.6.4
+
+ '@storybook/preview-api@8.6.4(storybook@8.6.4)':
+ dependencies:
+ storybook: 8.6.4
+
+ '@storybook/react-dom-shim@8.6.4(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(storybook@8.6.4)':
+ dependencies:
+ react: 19.0.0
+ react-dom: 19.0.0(react@19.0.0)
+ storybook: 8.6.4
+
+ '@storybook/test@8.6.4(storybook@8.6.4)':
+ dependencies:
+ '@storybook/global': 5.0.0
+ '@storybook/instrumenter': 8.6.4(storybook@8.6.4)
+ '@testing-library/dom': 10.4.0
+ '@testing-library/jest-dom': 6.5.0
+ '@testing-library/user-event': 14.5.2(@testing-library/dom@10.4.0)
+ '@vitest/expect': 2.0.5
+ '@vitest/spy': 2.0.5
+ storybook: 8.6.4
+
+ '@storybook/theming@8.6.4(storybook@8.6.4)':
+ dependencies:
+ storybook: 8.6.4
+
'@stylistic/eslint-plugin@2.13.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3)':
dependencies:
'@typescript-eslint/utils': 8.23.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3)
@@ -4509,6 +4987,16 @@ snapshots:
lz-string: 1.5.0
pretty-format: 27.5.1
+ '@testing-library/jest-dom@6.5.0':
+ dependencies:
+ '@adobe/css-tools': 4.4.2
+ aria-query: 5.3.2
+ chalk: 3.0.0
+ css.escape: 1.5.1
+ dom-accessibility-api: 0.6.3
+ lodash: 4.17.21
+ redent: 3.0.0
+
'@testing-library/jest-dom@6.6.3':
dependencies:
'@adobe/css-tools': 4.4.2
@@ -4519,6 +5007,10 @@ snapshots:
lodash: 4.17.21
redent: 3.0.0
+ '@testing-library/user-event@14.5.2(@testing-library/dom@10.4.0)':
+ dependencies:
+ '@testing-library/dom': 10.4.0
+
'@types/aria-query@5.0.4': {}
'@types/d3-array@3.2.1': {}
@@ -4667,6 +5159,8 @@ snapshots:
dependencies:
'@types/unist': 3.0.3
+ '@types/mdx@2.0.13': {}
+
'@types/ms@2.1.0': {}
'@types/node@22.5.0':
@@ -4675,10 +5169,16 @@ snapshots:
'@types/normalize-package-data@2.4.4': {}
+ '@types/react@19.0.10':
+ dependencies:
+ csstype: 3.1.3
+
'@types/unist@2.0.11': {}
'@types/unist@3.0.3': {}
+ '@types/uuid@9.0.8': {}
+
'@typescript-eslint/eslint-plugin@8.23.0(@typescript-eslint/parser@8.23.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3))(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3)':
dependencies:
'@eslint-community/regexpp': 4.12.1
@@ -4825,6 +5325,13 @@ snapshots:
typescript: 5.7.3
vitest: 3.0.7(@types/debug@4.1.12)(@types/node@22.5.0)(jiti@2.4.2)(jsdom@26.0.0)(terser@5.38.1)(tsx@4.19.2)(yaml@2.7.0)
+ '@vitest/expect@2.0.5':
+ dependencies:
+ '@vitest/spy': 2.0.5
+ '@vitest/utils': 2.0.5
+ chai: 5.2.0
+ tinyrainbow: 1.2.0
+
'@vitest/expect@3.0.7':
dependencies:
'@vitest/spy': 3.0.7
@@ -4840,6 +5347,14 @@ snapshots:
optionalDependencies:
vite: 6.0.7(@types/node@22.5.0)(jiti@2.4.2)(terser@5.38.1)(tsx@4.19.2)(yaml@2.7.0)
+ '@vitest/pretty-format@2.0.5':
+ dependencies:
+ tinyrainbow: 1.2.0
+
+ '@vitest/pretty-format@2.1.9':
+ dependencies:
+ tinyrainbow: 1.2.0
+
'@vitest/pretty-format@3.0.7':
dependencies:
tinyrainbow: 2.0.0
@@ -4855,10 +5370,27 @@ snapshots:
magic-string: 0.30.17
pathe: 2.0.3
+ '@vitest/spy@2.0.5':
+ dependencies:
+ tinyspy: 3.0.2
+
'@vitest/spy@3.0.7':
dependencies:
tinyspy: 3.0.2
+ '@vitest/utils@2.0.5':
+ dependencies:
+ '@vitest/pretty-format': 2.0.5
+ estree-walker: 3.0.3
+ loupe: 3.1.3
+ tinyrainbow: 1.2.0
+
+ '@vitest/utils@2.1.9':
+ dependencies:
+ '@vitest/pretty-format': 2.1.9
+ loupe: 3.1.3
+ tinyrainbow: 1.2.0
+
'@vitest/utils@3.0.7':
dependencies:
'@vitest/pretty-format': 3.0.7
@@ -4946,10 +5478,22 @@ snapshots:
assertion-error@2.0.1: {}
+ ast-types@0.16.1:
+ dependencies:
+ tslib: 2.8.1
+
asynckit@0.4.0: {}
+ available-typed-arrays@1.0.7:
+ dependencies:
+ possible-typed-array-names: 1.1.0
+
balanced-match@1.0.2: {}
+ better-opn@3.0.2:
+ dependencies:
+ open: 8.4.2
+
boolbase@1.0.0: {}
brace-expansion@1.1.11:
@@ -4965,6 +5509,8 @@ snapshots:
dependencies:
fill-range: 7.1.1
+ browser-assert@1.2.1: {}
+
browserslist@4.24.4:
dependencies:
caniuse-lite: 1.0.30001697
@@ -5020,6 +5566,18 @@ snapshots:
es-errors: 1.3.0
function-bind: 1.1.2
+ call-bind@1.0.8:
+ dependencies:
+ call-bind-apply-helpers: 1.0.2
+ es-define-property: 1.0.1
+ get-intrinsic: 1.3.0
+ set-function-length: 1.2.2
+
+ call-bound@1.0.4:
+ dependencies:
+ call-bind-apply-helpers: 1.0.2
+ get-intrinsic: 1.3.0
+
callsites@3.1.0: {}
caniuse-lite@1.0.30001697: {}
@@ -5068,6 +5626,8 @@ snapshots:
chownr@2.0.0: {}
+ chromatic@11.27.0: {}
+
ci-info@4.1.0: {}
citty@0.1.6:
@@ -5149,6 +5709,8 @@ snapshots:
'@asamuzakjp/css-color': 2.8.3
rrweb-cssom: 0.8.0
+ csstype@3.1.3: {}
+
d3-array@3.2.4:
dependencies:
internmap: 2.0.3
@@ -5324,6 +5886,14 @@ snapshots:
deep-is@0.1.4: {}
+ define-data-property@1.1.4:
+ dependencies:
+ es-define-property: 1.0.1
+ es-errors: 1.3.0
+ gopd: 1.2.0
+
+ define-lazy-prop@2.0.0: {}
+
defu@6.1.4: {}
delaunator@5.0.1:
@@ -5420,6 +5990,13 @@ snapshots:
has-tostringtag: 1.0.2
hasown: 2.0.2
+ esbuild-register@3.6.0(esbuild@0.24.2):
+ dependencies:
+ debug: 4.4.0
+ esbuild: 0.24.2
+ transitivePeerDependencies:
+ - supports-color
+
esbuild@0.23.1:
optionalDependencies:
'@esbuild/aix-ppc64': 0.23.1
@@ -6009,6 +6586,8 @@ snapshots:
acorn-jsx: 5.3.2(acorn@8.14.0)
eslint-visitor-keys: 3.4.3
+ esprima@4.0.1: {}
+
esquery@1.6.0:
dependencies:
estraverse: 5.3.0
@@ -6069,6 +6648,8 @@ snapshots:
dependencies:
flat-cache: 4.0.1
+ filesize@10.1.6: {}
+
fill-range@7.1.1:
dependencies:
to-regex-range: 5.0.1
@@ -6092,6 +6673,10 @@ snapshots:
flatted@3.3.2: {}
+ for-each@0.3.5:
+ dependencies:
+ is-callable: 1.2.7
+
foreground-child@3.3.0:
dependencies:
cross-spawn: 7.0.6
@@ -6196,6 +6781,10 @@ snapshots:
has-flag@4.0.0: {}
+ has-property-descriptors@1.0.2:
+ dependencies:
+ es-define-property: 1.0.1
+
has-symbols@1.1.0: {}
has-tostringtag@1.0.2:
@@ -6275,6 +6864,8 @@ snapshots:
indent-string@4.0.0: {}
+ inherits@2.0.4: {}
+
internmap@2.0.3: {}
is-alphabetical@1.0.4: {}
@@ -6291,12 +6882,19 @@ snapshots:
is-alphabetical: 2.0.1
is-decimal: 2.0.1
+ is-arguments@1.2.0:
+ dependencies:
+ call-bound: 1.0.4
+ has-tostringtag: 1.0.2
+
is-arrayish@0.2.1: {}
is-builtin-module@3.2.1:
dependencies:
builtin-modules: 3.3.0
+ is-callable@1.2.7: {}
+
is-core-module@2.16.1:
dependencies:
hasown: 2.0.2
@@ -6305,6 +6903,8 @@ snapshots:
is-decimal@2.0.1: {}
+ is-docker@2.2.1: {}
+
is-extglob@2.1.1: {}
is-fullwidth-code-point@3.0.0: {}
@@ -6315,6 +6915,13 @@ snapshots:
dependencies:
get-east-asian-width: 1.3.0
+ is-generator-function@1.1.0:
+ dependencies:
+ call-bound: 1.0.4
+ get-proto: 1.0.1
+ has-tostringtag: 1.0.2
+ safe-regex-test: 1.1.0
+
is-glob@4.0.3:
dependencies:
is-extglob: 2.1.1
@@ -6329,8 +6936,23 @@ snapshots:
is-potential-custom-element-name@1.0.1: {}
+ is-regex@1.2.1:
+ dependencies:
+ call-bound: 1.0.4
+ gopd: 1.2.0
+ has-tostringtag: 1.0.2
+ hasown: 2.0.2
+
is-stream@3.0.0: {}
+ is-typed-array@1.1.15:
+ dependencies:
+ which-typed-array: 1.1.19
+
+ is-wsl@2.2.0:
+ dependencies:
+ is-docker: 2.2.1
+
isexe@2.0.0: {}
jackspeak@3.4.3:
@@ -6400,6 +7022,12 @@ snapshots:
jsonc-parser@3.3.1: {}
+ jsonfile@6.1.0:
+ dependencies:
+ universalify: 2.0.1
+ optionalDependencies:
+ graceful-fs: 4.2.11
+
katex@0.16.21:
dependencies:
commander: 8.3.0
@@ -6495,6 +7123,8 @@ snapshots:
dependencies:
'@jridgewell/sourcemap-codec': 1.5.0
+ map-or-similar@1.5.0: {}
+
markdown-it@14.1.0:
dependencies:
argparse: 2.0.1
@@ -6636,6 +7266,10 @@ snapshots:
mdurl@2.0.0: {}
+ memoizerific@1.11.3:
+ dependencies:
+ map-or-similar: 1.5.0
+
merge-stream@2.0.0: {}
merge2@1.4.1: {}
@@ -6957,6 +7591,12 @@ snapshots:
regex: 5.1.1
regex-recursion: 5.1.1
+ open@8.4.2:
+ dependencies:
+ define-lazy-prop: 2.0.0
+ is-docker: 2.2.1
+ is-wsl: 2.2.0
+
optionator@0.9.4:
dependencies:
deep-is: 0.1.4
@@ -7070,6 +7710,12 @@ snapshots:
pluralize@8.0.0: {}
+ polished@4.3.1:
+ dependencies:
+ '@babel/runtime': 7.26.9
+
+ possible-typed-array-names@1.1.0: {}
+
postcss-load-config@6.0.1(jiti@2.4.2)(postcss@8.5.1)(tsx@4.19.2)(yaml@2.7.0):
dependencies:
lilconfig: 3.1.3
@@ -7098,6 +7744,8 @@ snapshots:
ansi-styles: 5.2.0
react-is: 17.0.2
+ process@0.11.10: {}
+
prompts@2.4.2:
dependencies:
kleur: 3.0.3
@@ -7116,8 +7764,20 @@ snapshots:
defu: 6.1.4
destr: 2.0.3
+ react-confetti@6.4.0(react@19.0.0):
+ dependencies:
+ react: 19.0.0
+ tween-functions: 1.2.0
+
+ react-dom@19.0.0(react@19.0.0):
+ dependencies:
+ react: 19.0.0
+ scheduler: 0.25.0
+
react-is@17.0.2: {}
+ react@19.0.0: {}
+
read-pkg-up@7.0.1:
dependencies:
find-up: 4.1.0
@@ -7133,6 +7793,14 @@ snapshots:
readdirp@4.1.1: {}
+ recast@0.23.11:
+ dependencies:
+ ast-types: 0.16.1
+ esprima: 4.0.1
+ source-map: 0.6.1
+ tiny-invariant: 1.3.3
+ tslib: 2.8.1
+
redent@3.0.0:
dependencies:
indent-string: 4.0.0
@@ -7195,31 +7863,6 @@ snapshots:
robust-predicates@3.0.2: {}
- rollup@4.30.1:
- dependencies:
- '@types/estree': 1.0.6
- optionalDependencies:
- '@rollup/rollup-android-arm-eabi': 4.30.1
- '@rollup/rollup-android-arm64': 4.30.1
- '@rollup/rollup-darwin-arm64': 4.30.1
- '@rollup/rollup-darwin-x64': 4.30.1
- '@rollup/rollup-freebsd-arm64': 4.30.1
- '@rollup/rollup-freebsd-x64': 4.30.1
- '@rollup/rollup-linux-arm-gnueabihf': 4.30.1
- '@rollup/rollup-linux-arm-musleabihf': 4.30.1
- '@rollup/rollup-linux-arm64-gnu': 4.30.1
- '@rollup/rollup-linux-arm64-musl': 4.30.1
- '@rollup/rollup-linux-loongarch64-gnu': 4.30.1
- '@rollup/rollup-linux-powerpc64le-gnu': 4.30.1
- '@rollup/rollup-linux-riscv64-gnu': 4.30.1
- '@rollup/rollup-linux-s390x-gnu': 4.30.1
- '@rollup/rollup-linux-x64-gnu': 4.30.1
- '@rollup/rollup-linux-x64-musl': 4.30.1
- '@rollup/rollup-win32-arm64-msvc': 4.30.1
- '@rollup/rollup-win32-ia32-msvc': 4.30.1
- '@rollup/rollup-win32-x64-msvc': 4.30.1
- fsevents: 2.3.3
-
rollup@4.34.5:
dependencies:
'@types/estree': 1.0.6
@@ -7253,12 +7896,20 @@ snapshots:
rw@1.3.3: {}
+ safe-regex-test@1.1.0:
+ dependencies:
+ call-bound: 1.0.4
+ es-errors: 1.3.0
+ is-regex: 1.2.1
+
safer-buffer@2.1.2: {}
saxes@6.0.0:
dependencies:
xmlchars: 2.2.0
+ scheduler@0.25.0: {}
+
scslre@0.3.0:
dependencies:
'@eslint-community/regexpp': 4.12.1
@@ -7269,6 +7920,15 @@ snapshots:
semver@7.7.1: {}
+ set-function-length@1.2.2:
+ dependencies:
+ define-data-property: 1.1.4
+ es-errors: 1.3.0
+ function-bind: 1.1.2
+ get-intrinsic: 1.3.0
+ gopd: 1.2.0
+ has-property-descriptors: 1.0.2
+
shebang-command@2.0.0:
dependencies:
shebang-regex: 3.0.0
@@ -7314,8 +7974,7 @@ snapshots:
source-map: 0.6.1
optional: true
- source-map@0.6.1:
- optional: true
+ source-map@0.6.1: {}
source-map@0.8.0-beta.0:
dependencies:
@@ -7348,6 +8007,14 @@ snapshots:
std-env@3.8.1: {}
+ storybook@8.6.4:
+ dependencies:
+ '@storybook/core': 8.6.4(storybook@8.6.4)
+ transitivePeerDependencies:
+ - bufferutil
+ - supports-color
+ - utf-8-validate
+
string-argv@0.3.2: {}
string-width@4.2.3:
@@ -7447,6 +8114,8 @@ snapshots:
tiny-conventional-commits-parser@0.0.1: {}
+ tiny-invariant@1.3.3: {}
+
tinybench@2.9.0: {}
tinyexec@0.3.2: {}
@@ -7458,6 +8127,8 @@ snapshots:
tinypool@1.0.2: {}
+ tinyrainbow@1.2.0: {}
+
tinyrainbow@2.0.0: {}
tinyspy@3.0.2: {}
@@ -7496,6 +8167,8 @@ snapshots:
dependencies:
typescript: 5.7.3
+ ts-dedent@2.2.0: {}
+
ts-interface-checker@0.1.13: {}
tslib@2.8.1: {}
@@ -7535,6 +8208,8 @@ snapshots:
fsevents: 2.3.3
optional: true
+ tween-functions@1.2.0: {}
+
type-check@0.4.0:
dependencies:
prelude-ls: 1.2.1
@@ -7601,6 +8276,13 @@ snapshots:
unist-util-is: 6.0.0
unist-util-visit-parents: 6.0.1
+ universalify@2.0.1: {}
+
+ unplugin@1.16.1:
+ dependencies:
+ acorn: 8.14.0
+ webpack-virtual-modules: 0.6.2
+
update-browserslist-db@1.1.2(browserslist@4.24.4):
dependencies:
browserslist: 4.24.4
@@ -7613,6 +8295,16 @@ snapshots:
util-deprecate@1.0.2: {}
+ util@0.12.5:
+ dependencies:
+ inherits: 2.0.4
+ is-arguments: 1.2.0
+ is-generator-function: 1.1.0
+ is-typed-array: 1.1.15
+ which-typed-array: 1.1.19
+
+ uuid@9.0.1: {}
+
validate-npm-package-license@3.0.4:
dependencies:
spdx-correct: 3.2.0
@@ -7653,7 +8345,7 @@ snapshots:
dependencies:
esbuild: 0.24.2
postcss: 8.5.1
- rollup: 4.30.1
+ rollup: 4.34.5
optionalDependencies:
'@types/node': 22.5.0
fsevents: 2.3.3
@@ -7736,6 +8428,8 @@ snapshots:
webidl-conversions@7.0.0: {}
+ webpack-virtual-modules@0.6.2: {}
+
whatwg-encoding@3.1.1:
dependencies:
iconv-lite: 0.6.3
@@ -7753,6 +8447,16 @@ snapshots:
tr46: 1.0.1
webidl-conversions: 4.0.2
+ which-typed-array@1.1.19:
+ dependencies:
+ available-typed-arrays: 1.0.7
+ call-bind: 1.0.8
+ call-bound: 1.0.4
+ for-each: 0.3.5
+ get-proto: 1.0.1
+ gopd: 1.2.0
+ has-tostringtag: 1.0.2
+
which@2.0.2:
dependencies:
isexe: 2.0.0