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 = `
+ + + + + + + +

Acme

+
`; + + 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: +

+ +

+ 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 +
PersonMost interest inAge
ChrisHTML tables22
DennisWeb accessibility45
SarahJavaScript frameworks29
KarenWeb performance36
Average age33
+`, + ), + 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