diff --git a/biome.json b/biome.json index 3d90f046c..61998fd4c 100644 --- a/biome.json +++ b/biome.json @@ -1,66 +1,57 @@ { - "$schema": "https://biomejs.dev/schemas/2.4.9/schema.json", + "$schema": "https://biomejs.dev/schemas/2.4.15/schema.json", "vcs": { - "enabled": false, + "enabled": true, "clientKind": "git", - "useIgnoreFile": false + "useIgnoreFile": true }, "files": { - "ignoreUnknown": false, - "includes": ["**"] + "ignoreUnknown": true, + "includes": ["**", "!dist", "!coverage", "!*.min.js"] }, "formatter": { "enabled": true, - "indentStyle": "space" + "indentStyle": "space", + "indentWidth": 2, + "lineWidth": 100 + }, + "assist": { + "enabled": true, + "actions": { + "source": { + "organizeImports": "on" + } + } }, - "assist": { "actions": { "source": { "organizeImports": "on" } } }, "linter": { "enabled": true, "rules": { - "recommended": true, - "correctness": { - "useExhaustiveDependencies": "warn", - "noUnusedVariables": "warn", - "useHookAtTopLevel": "warn", - "useParseIntRadix": "warn" - }, - "suspicious": { - "noExplicitAny": "warn", - "noArrayIndexKey": "warn", - "noGlobalIsNan": "warn", - "noConfusingVoidType": "warn" - }, - "complexity": { - "useLiteralKeys": "warn", - "noUselessFragments": "warn", - "useOptionalChain": "warn", - "noUselessSwitchCase": "warn" - }, - "style": { - "noParameterAssign": "warn", - "useAsConstAssertion": "error", - "useDefaultParameterLast": "warn", - "useEnumInitializers": "error", - "useSelfClosingElements": "error", - "useSingleVarDeclarator": "error", - "noUnusedTemplateLiteral": "warn", - "useNumberNamespace": "error", - "noInferrableTypes": "warn", - "noUselessElse": "warn" - }, - "a11y": { - "noStaticElementInteractions": "warn", - "useKeyWithClickEvents": "warn", - "useValidAnchor": "warn", - "noSvgWithoutTitle": "warn", - "useAltText": "warn" - } + "recommended": true } }, "javascript": { "formatter": { "quoteStyle": "double", + "trailingCommas": "es5", "semicolons": "asNeeded" } + }, + "json": { + "formatter": { + "enabled": true, + "trailingCommas": "none" + }, + "linter": { + "enabled": true + } + }, + "css": { + "formatter": { + "enabled": true, + "quoteStyle": "double" + }, + "linter": { + "enabled": true + } } } diff --git a/package.json b/package.json index 40c9988a1..5a70bab48 100644 --- a/package.json +++ b/package.json @@ -28,23 +28,5 @@ "lerna": "^9.0.7", "typescript": "^6.0.3" }, - "pnpm": { - "overrides": { - "tar": "^7.5.11", - "rollup": ">=4.59.0", - "@isaacs/brace-expansion@<=5.0.0": ">=5.0.1", - "axios@>=1.0.0 <=1.7.7": ">=1.13.5", - "minimatch@<3.1.4": ">=3.1.4", - "minimatch@>=5.0.0 <5.1.8": ">=5.1.8", - "minimatch@>=9.0.0 <9.0.7": ">=9.0.7", - "minimatch@>=10.0.0 <10.2.3": ">=10.2.3", - "ajv@>=7.0.0-alpha.0 <8.18.0": "^8.18.0", - "esbuild@<=0.24.2": "^0.25.0", - "picomatch@<2.3.2": ">=2.3.2", - "picomatch@>=4.0.0 <4.0.4": ">=4.0.4", - "storybook@>=10.0.0-beta.0 <10.3.6": ">=10.3.6", - "@storybook/builder-vite": ">=10.3.6", - "valibot@>=1.0.0 <1.3.0": ">=1.3.0" - } - } + "pnpm": {} } diff --git a/packages/docs/public/storybook-preview.css b/packages/docs/public/storybook-preview.css index 3d5917933..ab5db5b80 100644 --- a/packages/docs/public/storybook-preview.css +++ b/packages/docs/public/storybook-preview.css @@ -20,19 +20,19 @@ span[type]::before { span[type] > p { margin: 0; } -span[type='info'] { +span[type="info"] { border-color: #3b82f6; background-color: #dbebfe; } -span[type='warning'] { +span[type="warning"] { border-color: #f97317; background-color: #ffedd5; } -span[type='success'] { +span[type="success"] { border-color: #22c55f; background-color: #ddfce7; } -span[type='danger'] { +span[type="danger"] { border-color: #ef4544; background-color: #fee2e3; } diff --git a/packages/docs/stories/orders/CheckoutLink.stories.tsx b/packages/docs/stories/orders/CheckoutLink.stories.tsx index e8c6b7815..339ee3cb3 100644 --- a/packages/docs/stories/orders/CheckoutLink.stories.tsx +++ b/packages/docs/stories/orders/CheckoutLink.stories.tsx @@ -1,12 +1,12 @@ -import type { Meta, StoryFn } from '@storybook/react' +import type { Meta, StoryFn, StoryObj } from '@storybook/react' import CommerceLayer from '../_internals/CommerceLayer' -import OrderContainer from '#components/orders/OrderContainer' +import Order from '#components/orders/Order' import CheckoutLink from '#components/orders/CheckoutLink' import { OrderStorage } from '../_internals/OrderStorage' const setup: Meta = { title: 'Components/Orders/CheckoutLink', - component: CheckoutLink + component: CheckoutLink, } export default setup @@ -14,18 +14,72 @@ export default setup const Template: StoryFn = (args) => { return ( - - + + - + ) } +/** + * By default, `CheckoutLink` redirects the customer to the hosted mfe-checkout application, + * building the URL from the access token and order id. + */ export const Default = Template.bind({}) Default.args = { label: 'Go to checkout', - target: '_blank', - className: 'underline hover:text-blue-500' + className: 'text-blue-600 underline hover:text-blue-800', } +Default.parameters = { + docs: { + canvas: { + sourceState: 'shown', + }, + }, +} + +/** + * When `hostedCheckout` is set to `false`, the component uses the `checkout_url` attribute + * found in the order object instead of the hosted micro-frontend URL. + * Useful when you have a custom checkout flow configured on the order. + */ +export const WithOrderCheckoutUrl = Template.bind({}) +WithOrderCheckoutUrl.args = { + label: 'Checkout via order URL', + hostedCheckout: false, + className: 'text-blue-600 underline hover:text-blue-800', +} + +/** + * You can use the `children` render prop to fully customise the checkout trigger element. + * The children function receives `href`, `handleClick`, `orderId`, and `accessToken` among other props. + */ +export const ChildrenProps: StoryObj = () => { + return ( + + {({ href, handleClick }) => ( + + Proceed to checkout → + + )} + + ) +} +ChildrenProps.decorators = [ + (Story) => ( + + + + + + + + ), +] +ChildrenProps.args = {} diff --git a/packages/document/.storybook/main.ts b/packages/document/.storybook/main.ts index ba1ac6683..dc921475a 100644 --- a/packages/document/.storybook/main.ts +++ b/packages/document/.storybook/main.ts @@ -42,6 +42,7 @@ const storybookConfig: StorybookConfig = { "../src/stories/**/*.stories.@(js|jsx|ts|tsx)", ], addons: [ + "@storybook/addon-mcp", "@storybook/addon-links", { name: "@storybook/addon-docs", diff --git a/packages/document/.storybook/manager-head.html b/packages/document/.storybook/manager-head.html index ece446c35..0c95f8625 100644 --- a/packages/document/.storybook/manager-head.html +++ b/packages/document/.storybook/manager-head.html @@ -1,3 +1,3 @@ - + diff --git a/packages/document/.storybook/manager.ts b/packages/document/.storybook/manager.ts new file mode 100644 index 000000000..e1c8afc56 --- /dev/null +++ b/packages/document/.storybook/manager.ts @@ -0,0 +1,6 @@ +import { addons } from 'storybook/manager-api' +import commercelayerTheme from './commercelayer.theme' + +addons.setConfig({ + theme: commercelayerTheme +}) diff --git a/packages/document/.storybook/preview.tsx b/packages/document/.storybook/preview.tsx index 280e608bf..28bad284d 100644 --- a/packages/document/.storybook/preview.tsx +++ b/packages/document/.storybook/preview.tsx @@ -29,13 +29,10 @@ export const parameters: Parameters = { storySort: { order: [ 'Getting Started', - 'Orders', - ['Order', 'AddToCartButton'], - 'Prices', - ['Price'], + 'Components', + ['Availability', 'Price', 'Order'], 'Skus', ['Sku'], - 'Availability', 'Examples', ['Listing Page', 'Shopping Cart', 'Checkout Page', 'My Account'], 'Hooks' diff --git a/packages/document/public/storybook-manager.css b/packages/document/public/storybook-manager.css new file mode 100644 index 000000000..0b22c285d --- /dev/null +++ b/packages/document/public/storybook-manager.css @@ -0,0 +1,127 @@ +:root { + --color-primary: #101111; + --icon-carret-right: url('data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzIiIGhlaWdodD0iMzIiIHZpZXdCb3g9IjAgMCAzMiAzMiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPGcgaWQ9IkNhcmV0UmlnaHQiPgo8cGF0aCBpZD0iVmVjdG9yIiBkPSJNMTIgNkwyMiAxNkwxMiAyNiIgc3Ryb2tlPSJibGFjayIgc3Ryb2tlLXdpZHRoPSIyIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz4KPC9nPgo8L3N2Zz4K'); +} + +* { + box-sizing: border-box !important; +} + +/* Logo and context menu */ +.sidebar-header img { + margin: 16px 0; + max-height: 29px; +} +.sidebar-container .sidebar-header button[title='Shortcuts'] { + display: none; +} +.sidebar-container .sidebar-header div:first-of-type { + margin: 0; + justify-content: center; +} + +/* Other changes */ +.sidebar-container { + background: white; +} + +/* hides expand-all/collapse-all action button */ +.sidebar-container .sidebar-subheading .sidebar-subheading-action { + display: none; +} + +/* hides type icons (group/folder, document, story) — sb v10 uses svg[type] for these */ +.sidebar-container .sidebar-item svg[type], +.sidebar-container .sidebar-subheading svg[type] { + display: none; +} + +.sidebar-container .sidebar-subheading { + margin-top: 32px; + margin-bottom: 6px; +} +.sidebar-container .sidebar-subheading > button { + width: 100%; + display: flex; + flex-direction: row-reverse; + justify-content: space-between; + padding: 0; + margin: 0; + box-sizing: border-box; +} + +/* caret icon for root headings */ +.sidebar-container .sidebar-subheading > button > span { + background-image: var(--icon-carret-right); + border: none; + width: 16px; + height: 16px; + background-size: 100%; + margin: 0 !important; +} +.sidebar-container .sidebar-subheading > button:focus { + color: var(--color-primary); +} + +/* Branch node (expandable folder) — sb v10. + Target only the expand/collapse button, not the context-menu button. */ +.sidebar-container .sidebar-item > button:not([data-testid="context-menu"]) { + width: 100%; + margin: 0; + padding: 4px 8px; + display: flex; + flex-direction: row-reverse; + justify-content: space-between; + font-size: 14px; + line-height: 22px; + color: #5c6975; + background-color: transparent !important; +} + +/* caret icon for expandable folder items */ +.sidebar-container .sidebar-item > button:not([data-testid="context-menu"]) svg { + display: none; +} +.sidebar-container .sidebar-item > button:not([data-testid="context-menu"])::before { + content: ''; + background-image: var(--icon-carret-right); + background-size: 100%; + background-repeat: no-repeat; + background-position: center; + width: 16px; + height: 16px; + min-width: 16px; + display: block; + flex-shrink: 0; + transition: transform 0.2s ease; +} +.sidebar-container .sidebar-item > button[aria-expanded='true']:not([data-testid="context-menu"])::before { + transform: rotate(90deg); +} + +div.sidebar-item { + padding: 0; + margin: 4px 20px 4px 20px; + box-sizing: border-box; + border-radius: 4px; + color: rgba(136, 153, 168, 1); + font-size: 14px; + line-height: 22px; +} +div.sidebar-item > a { + padding: 4px 8px; + font-size: inherit; +} +div.sidebar-item:hover { + background-color: #eceff1; +} +div.sidebar-item[data-selected='true'], +div.sidebar-item[data-selected='true']:focus, +div.sidebar-item[data-selected='true']:hover { + color: var(--color-primary); + background: #f3f3fc; +} +/* hide only type icons (group, document, story), not caret SVGs */ +div.sidebar-item svg[type] { + display: none; +} diff --git a/packages/document/public/storybook-preview.css b/packages/document/public/storybook-preview.css index 3d5917933..4eca96b0b 100644 --- a/packages/document/public/storybook-preview.css +++ b/packages/document/public/storybook-preview.css @@ -4,6 +4,19 @@ } /** Blockquote */ +blockquote { + display: block; + padding: 16px !important; + font-size: 14px !important; + color: #2e3438 !important; + margin: 16px 0 !important; + border-left: 4px solid #3b82f6 !important; + background-color: #dbebfe; + border-radius: 0 4px 4px 0; +} +blockquote > p { + margin: 0; +} span[type] { display: block; padding: 16px !important; @@ -20,19 +33,19 @@ span[type]::before { span[type] > p { margin: 0; } -span[type='info'] { +span[type="info"] { border-color: #3b82f6; background-color: #dbebfe; } -span[type='warning'] { +span[type="warning"] { border-color: #f97317; background-color: #ffedd5; } -span[type='success'] { +span[type="success"] { border-color: #22c55f; background-color: #ddfce7; } -span[type='danger'] { +span[type="danger"] { border-color: #ef4544; background-color: #fee2e3; } diff --git a/packages/document/src/stories/availability/001.availability.mdx b/packages/document/src/stories/availability/001.availability.mdx deleted file mode 100644 index 95dbac63c..000000000 --- a/packages/document/src/stories/availability/001.availability.mdx +++ /dev/null @@ -1,185 +0,0 @@ -import { Meta, Source } from '@storybook/addon-docs/blocks'; - - - -# Availability - -The Availability components let you display real-time stock quantity and delivery lead times -for any SKU. They are powered by the Commerce Layer inventory model and work by fetching -availability data through the `useAvailability` hook from `@commercelayer/hooks`. - -All Availability components must be nested inside the `` context. - ---- - -## Availability (standalone) - -The preferred way to display availability. `` fetches inventory data on its own — -no container wrapper needed. - - -Must be a child of the `` component. - - - -`` - - -**Props** - -| Prop | Type | Required | Description | -|------|------|----------|-------------| -| `skuCode` | `string` | — | The SKU code to fetch availability for | -| `skuId` | `string` | — | The SKU ID (takes precedence over `skuCode`; improves performance) | -| `getQuantity` | `(quantity: number) => void` | — | Callback fired whenever the available quantity changes | -| `loader` | `ReactNode` | — | Content shown while fetching (default: `"Loading..."`) | - - - - - - -`} -/> - ---- - -## AvailabilityContainer - - -`AvailabilityContainer` is deprecated. Use the standalone `` component instead (see above). - - -**Migration guide** - -Before (deprecated): - - - - -`} -/> - -After (preferred): - - - - -`} -/> - ---- - -## AvailabilityTemplate - -`AvailabilityTemplate` reads from the parent `Availability` (or `AvailabilityContainer`) context and renders -a `` with availability text. You can customise the label shown for each state -(`available`, `outOfStock`, `negativeStock`) and optionally include delivery lead time -and shipping method details. - - -Must be a descendant of the `` component. - - -**Props** - -| Prop | Type | Default | Description | -|------|------|---------|-------------| -| `labels.available` | `string` | `"Available"` | Text shown when quantity > 0 | -| `labels.outOfStock` | `string` | `"Out of stock"` | Text shown when quantity is 0 | -| `labels.negativeStock` | `string` | `"Not available"` | Text shown when quantity is negative | -| `timeFormat` | `"days" \| "hours"` | — | When set, delivery lead time is appended to the label | -| `showShippingMethodName` | `boolean` | `false` | Requires `timeFormat`. Appends the shipping method name | -| `showShippingMethodPrice` | `boolean` | `false` | Requires `timeFormat`. Appends the formatted shipping price | - - - - -`} -/> - -### Custom render via children - -You can fully control the rendered output by passing a function as `children`. -The function receives the full availability context including `quantity`, `text`, -`min`, `max`, and `shipping_method`. - - - - {({ quantity, text, min, max }) => ( -
- {text} - {quantity > 0 && min != null && ( -

Ships in {min.days}–{max?.days ?? min.days} days

- )} -
- )} -
- -`} -/> - ---- - -## Usage inside Skus - -When used inside a `` or `` → `` tree, `Availability` -automatically inherits the `skuCode` from the current SKU context — -no need to pass `skuCode` explicitly. - - - - - - - - - -`} -/> diff --git a/packages/document/src/stories/cart/AddToCartButton.stories.tsx b/packages/document/src/stories/cart/AddToCartButton.stories.tsx index 660d6cfa9..be7253db8 100644 --- a/packages/document/src/stories/cart/AddToCartButton.stories.tsx +++ b/packages/document/src/stories/cart/AddToCartButton.stories.tsx @@ -25,11 +25,11 @@ function AddToCartButtonDocsPage(): JSX.Element {

{""} adds a SKU, bundle, or SKU list to the cart (draft order). It must be a descendant of{" "} - {""}. When nested inside{" "} - {""} or {""}, the{" "} - skuCode is inherited from context automatically. + {""}. When nested inside {""} or{" "} + {""}, the skuCode is inherited from + context automatically.

-
+

Must be a child of {""} (or{" "} {""}). See the{" "} @@ -38,7 +38,7 @@ function AddToCartButtonDocsPage(): JSX.Element { {" "} for the full flow.

-
+
` or ``.", + }, + bundleCode: { + control: "text", + description: "Bundle code to add to the cart instead of a single SKU.", + }, + skuListId: { + control: "text", + description: + "SKU list ID — adds all SKUs in the list to the cart at once.", + }, + quantity: { + control: "text", + description: "Quantity of the item to add. Defaults to `1`.", + }, + label: { + control: "text", + description: "Button label text or element.", + }, + disabled: { + control: "boolean", + description: "Disables the button.", + }, + buyNowMode: { + control: "boolean", + description: + "When `true`, redirects to the hosted checkout after adding the item.", + }, + checkoutUrl: { + control: "text", + description: "Self-hosted checkout URL used when `buyNowMode` is `true`.", + }, + redirectToHostedCart: { + control: "boolean", + description: + "When `true`, redirects to the hosted cart after adding the item.", + }, + hostedCartUrl: { + control: "text", + description: + "Self-hosted cart URL used when `redirectToHostedCart` is `true`.", + }, + lineItem: { + control: "object", + description: + "Custom line item attributes (e.g. `name`, `externalPrice`) applied to the created line item.", + }, + children: { + control: false, + description: + "Render prop receiving `{ handleClick, disabled }` for a fully custom button UI.", + }, + }, } satisfies Meta export default meta diff --git a/packages/document/src/stories/orders/CheckoutLink.stories.tsx b/packages/document/src/stories/orders/CheckoutLink.stories.tsx new file mode 100644 index 000000000..4c421babf --- /dev/null +++ b/packages/document/src/stories/orders/CheckoutLink.stories.tsx @@ -0,0 +1,166 @@ +import { CheckoutLink, Order, OrderStorage } from "@commercelayer/react-components" +import { ArgTypes, Canvas, Source } from "@storybook/addon-docs/blocks" +import type { Meta, StoryObj } from "@storybook/react-vite" +import CommerceLayer from "../_internals/CommerceLayer" +import { OrderStorage as OrderStorageHelper } from "../_internals/OrderStorage" + +function CheckoutLinkDocsPage(): JSX.Element { + return ( + <> +

CheckoutLink

+

+ {""} renders a link that takes the customer to the hosted + mfe-checkout application. By default it builds the URL from the access token and order id + (hosted checkout). Set hostedCheckout to false to use the{" "} + checkout_url attribute found on the order object instead. +

+ +

+ Must be a child of {""} (or {""} + + {""}). Requires a parent {""} context for + the access token. +

+
+ + + + + + + + +`} + /> +
+

Default — hosted checkout

+

+ Builds a URL to the Commerce Layer hosted checkout micro-frontend using the access token and + order id. +

+ +
+

Using order checkout_url

+

+ When hostedCheckout is false the component falls back to the{" "} + checkout_url attribute set on the order. Useful when you have a custom checkout + flow configured at the order level. +

+ +
+

Children render prop

+

+ Pass a function as children to take full control of the rendered element. The + render prop receives href, handleClick, orderId, and{" "} + accessToken. +

+ + + ) +} + +const meta = { + title: "Components/Orders/CheckoutLink", + component: CheckoutLink, + parameters: { + docs: { + page: CheckoutLinkDocsPage, + }, + }, + argTypes: { + label: { + control: "text", + description: "Label text or element rendered inside the link.", + }, + hostedCheckout: { + control: "boolean", + description: + "When `true` (default) the link points to the Commerce Layer hosted checkout. Set to `false` to use the order's `checkout_url` attribute instead.", + }, + customDomain: { + control: "text", + description: + "Domain of a forked checkout application. Overrides the default `.commercelayer.app` hostname.", + }, + children: { + control: false, + description: + "Render prop receiving `{ href, handleClick, orderId, accessToken, checkoutUrl }` for a fully custom trigger element.", + }, + }, +} satisfies Meta + +export default meta +type Story = StoryObj + +function Wrapper({ children }: { children: React.ReactNode }) { + return ( + + + {children} + + + ) +} + +export const Default: Story = { + name: "Default — hosted checkout", + args: { + label: "Go to checkout", + className: "text-blue-600 underline hover:text-blue-800", + target: "_blank", + }, + render: (args) => ( + + + + ), +} + +export const WithOrderCheckoutUrl: Story = { + name: "Using order checkout_url", + args: { + label: "Checkout via order URL", + hostedCheckout: false, + className: "text-blue-600 underline hover:text-blue-800", + }, + render: (args) => ( + + + + ), +} + +/** + * Use the `children` render prop to fully control the rendered element. + * The `href` and `handleClick` props are provided by the component and + * wire up the organization-config-aware navigation automatically. + */ +export const ChildrenProps: Story = { + name: "Children props (render prop)", + render: () => ( + + + {({ href, handleClick }) => ( + + Proceed to checkout → + + )} + + + ), +} diff --git a/packages/document/src/stories/skus/SkusField.stories.tsx b/packages/document/src/stories/skus/SkusField.stories.tsx index a63e9b8a4..07393b03d 100644 --- a/packages/document/src/stories/skus/SkusField.stories.tsx +++ b/packages/document/src/stories/skus/SkusField.stories.tsx @@ -25,12 +25,11 @@ function SkuFieldDocsPage(): JSX.Element { {""}) context. Use the{" "} attribute prop to select which field to display and{" "} tagElement to choose the HTML tag (defaults to{" "} - span). When {'tagElement="img"'}, the value - is used as the src and standard{" "} - {""} props (width, height, - etc.) are forwarded. + span). When {'tagElement="img"'}, the value is + used as the src and standard {""} props ( + width, height, etc.) are forwarded.

-
+

Must be a descendant of {""} or{" "} {""}. See the{" "} @@ -38,10 +37,10 @@ function SkuFieldDocsPage(): JSX.Element { SKUs API object {" "} for all available attributes (e.g. name,{" "} - description, image_url,{" "} - code, metadata). + description, image_url, code,{" "} + metadata).

-
+ + +export {} + +// Allow `type` on any HTML element — used as CSS hooks for callout spans +// (e.g. / ) in story docs pages. +declare module 'react' { + interface HTMLAttributes { + type?: string + } +} diff --git a/packages/react-components/specs/orders/checkout-link.spec.tsx b/packages/react-components/specs/orders/checkout-link.spec.tsx new file mode 100644 index 000000000..11b2dca55 --- /dev/null +++ b/packages/react-components/specs/orders/checkout-link.spec.tsx @@ -0,0 +1,352 @@ +import { fireEvent, render, screen, waitFor } from "@testing-library/react" +import { vi } from "vitest" +import { CheckoutLink } from "#components/orders/CheckoutLink" +import CommerceLayerContext from "#context/CommerceLayerContext" +import OrderContext, { defaultOrderContext } from "#context/OrderContext" +import * as applicationLinkUtils from "#utils/getApplicationLink" +import * as organizationUtils from "#utils/organization" + +const FAKE_TOKEN = + "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJvcmdhbml6YXRpb24iOnsiaWQiOiJvcmctaWQiLCJzbHVnIjoidGVzdC1vcmcifSwibWFya2V0Ijp7ImlkIjpbIjEiXSwicHJpY2VfbGlzdF9pZCI6InBsMSIsInN0b2NrX2xvY2F0aW9uX2lkcyI6W10sImdlb2NvZGVyX2lkIjpudWxsLCJhbGxvd3NfZXh0ZXJuYWxfcHJpY2VzIjpmYWxzZX0sImFwcGxpY2F0aW9uIjp7ImlkIjoiYXBwLWlkIiwia2luZCI6InNhbGVzX2NoYW5uZWwiLCJwdWJsaWMiOnRydWV9LCJleHAiOjk5OTk5OTk5OTksIm93bmVyIjp7ImlkIjoiY3VzLWlkIiwidHlwZSI6IkN1c3RvbWVyIn0sInJhbmQiOjEsInRlc3QiOnRydWV9.fake-sig" + +const HOSTED_CHECKOUT_URL = + "https://test-org.commercelayer.app/checkout/order-id-1?accessToken=fake" + +const mockOrder = { + id: "order-id-1", + checkout_url: "https://custom-checkout.example.com/order-id-1", +} + +function makeOrderCtx(order: typeof mockOrder | null = mockOrder) { + return { ...defaultOrderContext, order: order as any } +} + +function Wrapper({ + children, + orderCtx = makeOrderCtx(), +}: { + children: React.ReactNode + orderCtx?: ReturnType +}) { + return ( + + + {children} + + + ) +} + +describe("CheckoutLink", () => { + beforeEach(() => { + vi.restoreAllMocks() + vi.spyOn(window, "open").mockImplementation(vi.fn()) + }) + + // --------------------------------------------------------------------------- + // Rendering + // --------------------------------------------------------------------------- + + describe("rendering", () => { + it("renders an anchor with the given label", () => { + vi.spyOn(applicationLinkUtils, "getApplicationLink").mockReturnValue( + HOSTED_CHECKOUT_URL, + ) + render( + + + , + ) + expect( + screen.getByRole("link", { name: /go to checkout/i }), + ).toBeDefined() + }) + + it("builds href via getApplicationLink when hostedCheckout=true (default)", () => { + const spy = vi + .spyOn(applicationLinkUtils, "getApplicationLink") + .mockReturnValue(HOSTED_CHECKOUT_URL) + + render( + + + , + ) + + expect(spy).toHaveBeenCalledWith( + expect.objectContaining({ + orderId: "order-id-1", + applicationType: "checkout", + }), + ) + expect( + screen.getByRole("link").getAttribute("href"), + ).toBe(HOSTED_CHECKOUT_URL) + }) + + it("uses order.checkout_url when hostedCheckout=false", () => { + render( + + + , + ) + expect(screen.getByRole("link").getAttribute("href")).toBe( + mockOrder.checkout_url, + ) + }) + + it("falls back to empty string when hostedCheckout=false and checkout_url is absent", () => { + render( + + + , + ) + expect(screen.getByText("Checkout").getAttribute("href")).toBe("") + }) + + it("forwards className to the anchor element", () => { + vi.spyOn(applicationLinkUtils, "getApplicationLink").mockReturnValue( + HOSTED_CHECKOUT_URL, + ) + render( + + + , + ) + expect(screen.getByRole("link").getAttribute("class")).toBe("my-class") + }) + + it("forwards target to the anchor element", () => { + vi.spyOn(applicationLinkUtils, "getApplicationLink").mockReturnValue( + HOSTED_CHECKOUT_URL, + ) + render( + + + , + ) + expect(screen.getByRole("link").getAttribute("target")).toBe("_blank") + }) + + it("throws when rendered outside ", () => { + const consoleSpy = vi + .spyOn(console, "error") + .mockImplementation(() => undefined) + expect(() => + render(), + ).toThrow("Cannot use `CheckoutLink` outside of `CommerceLayer`") + consoleSpy.mockRestore() + }) + }) + + // --------------------------------------------------------------------------- + // handleClick — navigation + // --------------------------------------------------------------------------- + + describe("handleClick", () => { + it("navigates to config.links.checkout when org config provides it", async () => { + vi.spyOn(applicationLinkUtils, "getApplicationLink").mockReturnValue( + HOSTED_CHECKOUT_URL, + ) + vi.spyOn(organizationUtils, "getOrganizationConfig").mockResolvedValue({ + links: { checkout: "https://org-checkout.example.com/order-id-1" }, + } as any) + const windowOpenSpy = vi.spyOn(window, "open").mockImplementation(vi.fn()) + + render( + + + , + ) + fireEvent.click(screen.getByRole("link")) + + await waitFor(() => { + expect(windowOpenSpy).toHaveBeenCalledWith( + "https://org-checkout.example.com/order-id-1", + "_self", + ) + }) + }) + + it("falls back to the resolved href when config.links.checkout is absent", async () => { + vi.spyOn(applicationLinkUtils, "getApplicationLink").mockReturnValue( + HOSTED_CHECKOUT_URL, + ) + vi.spyOn(organizationUtils, "getOrganizationConfig").mockResolvedValue( + null, + ) + const windowOpenSpy = vi.spyOn(window, "open").mockImplementation(vi.fn()) + + render( + + + , + ) + fireEvent.click(screen.getByRole("link")) + + await waitFor(() => { + expect(windowOpenSpy).toHaveBeenCalledWith(HOSTED_CHECKOUT_URL, "_self") + }) + }) + + it("skips getOrganizationConfig and opens href directly when order.id is absent", async () => { + const getOrgConfigSpy = vi.spyOn( + organizationUtils, + "getOrganizationConfig", + ) + const windowOpenSpy = vi.spyOn(window, "open").mockImplementation(vi.fn()) + + render( + + + , + ) + fireEvent.click(screen.getByText("Checkout")) + + await waitFor(() => { + expect(getOrgConfigSpy).not.toHaveBeenCalled() + expect(windowOpenSpy).toHaveBeenCalledWith(expect.any(String), "_self") + }) + }) + + it("opens in a new tab when target=_blank", async () => { + vi.spyOn(applicationLinkUtils, "getApplicationLink").mockReturnValue( + HOSTED_CHECKOUT_URL, + ) + vi.spyOn(organizationUtils, "getOrganizationConfig").mockResolvedValue( + null, + ) + const windowOpenSpy = vi.spyOn(window, "open").mockImplementation(vi.fn()) + + render( + + + , + ) + fireEvent.click(screen.getByRole("link")) + + await waitFor(() => { + expect(windowOpenSpy).toHaveBeenCalledWith(expect.any(String), "_blank") + }) + }) + + it("opens in _top when target=_top", async () => { + vi.spyOn(applicationLinkUtils, "getApplicationLink").mockReturnValue( + HOSTED_CHECKOUT_URL, + ) + vi.spyOn(organizationUtils, "getOrganizationConfig").mockResolvedValue( + null, + ) + const windowOpenSpy = vi.spyOn(window, "open").mockImplementation(vi.fn()) + + render( + + + , + ) + fireEvent.click(screen.getByRole("link")) + + await waitFor(() => { + expect(windowOpenSpy).toHaveBeenCalledWith(expect.any(String), "_top") + }) + }) + + it("defaults to _self when no target is provided", async () => { + vi.spyOn(applicationLinkUtils, "getApplicationLink").mockReturnValue( + HOSTED_CHECKOUT_URL, + ) + vi.spyOn(organizationUtils, "getOrganizationConfig").mockResolvedValue( + null, + ) + const windowOpenSpy = vi.spyOn(window, "open").mockImplementation(vi.fn()) + + render( + + + , + ) + fireEvent.click(screen.getByRole("link")) + + await waitFor(() => { + expect(windowOpenSpy).toHaveBeenCalledWith(expect.any(String), "_self") + }) + }) + }) + + // --------------------------------------------------------------------------- + // Children render prop + // --------------------------------------------------------------------------- + + describe("children render prop", () => { + it("passes href and handleClick to the children function", () => { + vi.spyOn(applicationLinkUtils, "getApplicationLink").mockReturnValue( + HOSTED_CHECKOUT_URL, + ) + let capturedHref: string | undefined + let capturedHandleClick: unknown + + render( + + + {({ href, handleClick }) => { + capturedHref = href + capturedHandleClick = handleClick + return ( + + Custom + + ) + }} + + , + ) + + expect(capturedHref).toBe(HOSTED_CHECKOUT_URL) + expect(typeof capturedHandleClick).toBe("function") + expect(screen.getByTestId("custom-link")).toBeDefined() + }) + + it("exposes orderId and accessToken in the children props", () => { + vi.spyOn(applicationLinkUtils, "getApplicationLink").mockReturnValue( + HOSTED_CHECKOUT_URL, + ) + let capturedOrderId: string | undefined + let capturedAccessToken: string | undefined + + render( + + + {({ orderId, accessToken }) => { + capturedOrderId = orderId + capturedAccessToken = accessToken + return null + }} + + , + ) + + expect(capturedOrderId).toBe("order-id-1") + expect(capturedAccessToken).toBe(FAKE_TOKEN) + }) + + it("exposes checkoutUrl from the order in the children props", () => { + vi.spyOn(applicationLinkUtils, "getApplicationLink").mockReturnValue( + HOSTED_CHECKOUT_URL, + ) + let capturedCheckoutUrl: string | undefined + + render( + + + {({ checkoutUrl }) => { + capturedCheckoutUrl = checkoutUrl + return null + }} + + , + ) + + expect(capturedCheckoutUrl).toBe(mockOrder.checkout_url) + }) + }) +}) diff --git a/packages/react-components/src/components/orders/CheckoutLink.tsx b/packages/react-components/src/components/orders/CheckoutLink.tsx index 0ccb83e8d..ab88e1cab 100644 --- a/packages/react-components/src/components/orders/CheckoutLink.tsx +++ b/packages/react-components/src/components/orders/CheckoutLink.tsx @@ -1,44 +1,70 @@ -import { useContext, type JSX } from "react" -import OrderContext from "#context/OrderContext" -import Parent from "../utils/Parent" -import type { ChildrenFunction } from "#typings/index" -import CommerceLayerContext from "#context/CommerceLayerContext" -import { getApplicationLink } from "#utils/getApplicationLink" -import { jwt } from "#utils/jwt" -import { getOrganizationConfig } from "#utils/organization" +import { useContext, type JSX, type ReactNode, type MouseEvent } from 'react' +import OrderContext from '#context/OrderContext' +import Parent from '../utils/Parent' +import type { ChildrenFunction } from '#typings/index' +import CommerceLayerContext from '#context/CommerceLayerContext' +import { getApplicationLink } from '#utils/getApplicationLink' +import { jwt } from '#utils/jwt' +import { getOrganizationConfig } from '#utils/organization' -interface ChildrenProps extends Omit { - checkoutUrl: string +interface ChildrenProps extends Omit { + /** + * The `checkout_url` attribute of the order, if set + */ + checkoutUrl: string | undefined + /** + * The resolved href for the checkout link + */ href: string + /** + * Callback to handle the click event with organization config resolution + */ + handleClick: (e: MouseEvent) => Promise + /** + * The order id + */ + orderId?: string + /** + * The access token + */ + accessToken?: string } -interface Props extends Omit { +interface Props extends Omit { children?: ChildrenFunction /** * Label for the checkout link */ - label?: string + label?: string | ReactNode /** * Ignores `order.checkout_url` and redirects to the hosted checkout micro-frontend. * @default true */ hostedCheckout?: boolean + /** + * The domain of your forked application + */ + customDomain?: string } /** * This component generates a link to the hosted mfe-checkout application. * In this way you can connect your shop application with our hosted micro-frontend. * - * By default it will takes the customer to our hosted checkout micro-frontend, + * By default it will take the customer to our hosted checkout micro-frontend, * but if `hostedCheckout` is set as `false` it will use the `checkout_url` attribute * found in the `order` object. + * + * + * Must be a child of the `` component.
+ *
*/ -export function CheckoutLink(props: Props): JSX.Element { - const { label, hostedCheckout = true, children, onClick, ...p } = props +export function CheckoutLink(props: Props): JSX.Element | null { + const { label, hostedCheckout = true, children, customDomain, target, ...p } = props const { order } = useContext(OrderContext) const { accessToken } = useContext(CommerceLayerContext) if (accessToken == null) - throw new Error("Cannot use `CheckoutLink` outside of `CommerceLayer`") + throw new Error('Cannot use `CheckoutLink` outside of `CommerceLayer`') const { organization } = jwt(accessToken) const slug = organization.slug const domain = 'commercelayer.io' @@ -46,48 +72,52 @@ export function CheckoutLink(props: Props): JSX.Element { hostedCheckout && order?.id ? getApplicationLink({ slug, - orderId: order?.id, + orderId: order.id, accessToken, - applicationType: "checkout", + applicationType: 'checkout', domain, + customDomain, }) - : (order?.checkout_url ?? "") - const parentProps = { - checkoutUrl: order?.checkout_url, - hostedCheckout, - label, - href, - ...p, - } - function handleClick( - e: React.MouseEvent, - ): void { + : (order?.checkout_url ?? '') + + const handleClick = async (e: MouseEvent): Promise => { e.preventDefault() e.stopPropagation() const currentHref = e.currentTarget.href if (accessToken && order?.id) { - getOrganizationConfig({ + const config = await getOrganizationConfig({ accessToken, params: { accessToken, slug, - orderId: order?.id, + orderId: order.id, }, - }).then((config) => { - if (config?.links?.checkout) { - window.open(config.links.checkout, "_top") - } else { - window.open(currentHref, "_top") - } }) + window.open(config?.links?.checkout ?? currentHref, target ?? '_self') } else { - window.open(currentHref, "_top") + window.open(currentHref, target ?? '_self') } } + + const parentProps = { + checkoutUrl: order?.checkout_url, + hostedCheckout, + label, + href, + handleClick, + orderId: order?.id, + accessToken, + customDomain, + target, + ...p, + } + + if (!accessToken) return null + return children ? ( {children} ) : ( - + {label} ) diff --git a/packages/react-components/src/components/skus/Availability.tsx b/packages/react-components/src/components/skus/Availability.tsx index 2ca0e0939..4477d5e27 100644 --- a/packages/react-components/src/components/skus/Availability.tsx +++ b/packages/react-components/src/components/skus/Availability.tsx @@ -47,17 +47,15 @@ export function Availability({ const { lineItem } = useContext(LineItemChildrenContext) const { sku } = useContext(SkuChildrenContext) const { accessToken, interceptors } = useContext(CommerceLayerContext) - const { availability, fetchAvailability, clearAvailability, isLoading } = - useAvailability(accessToken ?? "", interceptors) + const { availability, fetchAvailability, clearAvailability, isLoading } = useAvailability( + accessToken ?? "", + interceptors + ) const sCode = skuCode ?? lineItem?.sku_code ?? sku?.code useEffect(() => { - if ( - accessToken != null && - accessToken !== "" && - (sCode != null || skuId != null) - ) { + if (accessToken != null && accessToken !== "" && (sCode != null || skuId != null)) { fetchAvailability({ skuCode: sCode, skuId }) } return () => { @@ -71,18 +69,13 @@ export function Availability({ } }, [availability?.quantity, getQuantity]) - const contextValue = useMemo( - () => ({ ...availability, parent: true }), - [availability], - ) + const contextValue = useMemo(() => ({ ...availability, parent: true }), [availability]) const hasFetchTarget = sCode != null || skuId != null if (hasFetchTarget && isLoading) return propLoader return ( - - {children} - + {children} ) } diff --git a/packages/react-components/src/utils/stripe/retrievePaymentIntent.ts b/packages/react-components/src/utils/stripe/retrievePaymentIntent.ts index 82ceab29d..292c5805c 100644 --- a/packages/react-components/src/utils/stripe/retrievePaymentIntent.ts +++ b/packages/react-components/src/utils/stripe/retrievePaymentIntent.ts @@ -1,4 +1,4 @@ -import { loadStripe, type PaymentIntentResult } from '@stripe/stripe-js' +import { loadStripe, type PaymentIntentResult } from "@stripe/stripe-js" interface StripePaymentIntentParams { publicApiKey: string @@ -11,69 +11,70 @@ type PaymentIntentResultPromise = Promise< async function retrievePaymentIntent({ publicApiKey, - paymentIntentClientSecret + paymentIntentClientSecret, }: StripePaymentIntentParams): PaymentIntentResultPromise { const stripe = await loadStripe(publicApiKey) try { const paymentIntent = await stripe?.retrievePaymentIntent( - paymentIntentClientSecret + paymentIntentClientSecret, ) return paymentIntent } catch (error) { - console.error('Error retrieving payment intent:', error) + console.error("Error retrieving payment intent:", error) return null } } interface PaymentIntentValidationProps { - paymentIntent: PaymentIntentResult['paymentIntent'] + paymentIntent: PaymentIntentResult["paymentIntent"] } -type PaymentVerificationState = 'valid' | 'invalid' | 'processing' +type PaymentVerificationState = "valid" | "invalid" | "processing" function paymentIntentValidation({ - paymentIntent + paymentIntent, }: PaymentIntentValidationProps): PaymentVerificationState { const status = paymentIntent?.status switch (status) { - case 'succeeded': - case 'requires_capture': - return 'valid' - case 'processing': - return 'processing' - case 'requires_payment_method': - return 'invalid' + case "succeeded": + case "requires_capture": + return "valid" + case "processing": + return "processing" + case "requires_payment_method": + return "invalid" default: - return 'invalid' + return "invalid" } } type PaymentProcessingFeedback = | { - status: Exclude + status: Exclude message?: string } | { - status: 'invalid' + status: "invalid" message: string } export async function checkPaymentIntent({ publicApiKey, - paymentIntentClientSecret + paymentIntentClientSecret, }: StripePaymentIntentParams): Promise { const paymentIntentResult = await retrievePaymentIntent({ publicApiKey, - paymentIntentClientSecret + paymentIntentClientSecret, }) if (!paymentIntentResult) { - return { status: 'invalid', message: 'Payment intent not found' } + return { status: "invalid", message: "Payment intent not found" } } const paymentIntent = paymentIntentResult.paymentIntent const error = paymentIntent?.last_payment_error const status = paymentIntentValidation({ paymentIntent }) return { status, - message: status === 'invalid' && error?.message != null ? error.message : '' + message: + status === "invalid" && error?.message != null ? error.message : "", } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 6ca14c343..0375e1e2f 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -5,7 +5,7 @@ settings: excludeLinksFromLockfile: false overrides: - tar: ^7.5.11 + tar: '>=7.5.11' rollup: '>=4.59.0' '@isaacs/brace-expansion@<=5.0.0': '>=5.0.1' axios@>=1.0.0 <=1.7.7: '>=1.13.5' @@ -13,8 +13,8 @@ overrides: minimatch@>=5.0.0 <5.1.8: '>=5.1.8' minimatch@>=9.0.0 <9.0.7: '>=9.0.7' minimatch@>=10.0.0 <10.2.3: '>=10.2.3' - ajv@>=7.0.0-alpha.0 <8.18.0: ^8.18.0 - esbuild@<=0.24.2: ^0.25.0 + ajv@>=7.0.0-alpha.0 <8.18.0: '>=8.18.0' + esbuild@<=0.24.2: '>=0.25.0' picomatch@<2.3.2: '>=2.3.2' picomatch@>=4.0.0 <4.0.4: '>=4.0.4' storybook@>=10.0.0-beta.0 <10.3.6: '>=10.3.6' @@ -61,10 +61,10 @@ importers: version: 6.0.3 vite-tsconfig-paths: specifier: ^6.1.1 - version: 6.1.1(typescript@6.0.3)(vite@8.0.11(@types/node@25.6.2)(terser@5.46.1)(yaml@2.7.0)) + version: 6.1.1(typescript@6.0.3)(vite@8.0.11(@types/node@25.6.2)(esbuild@0.27.2)(yaml@2.7.0)) vitest: specifier: ^4.1.5 - version: 4.1.5(@types/node@25.6.2)(@vitest/coverage-v8@4.1.5)(jsdom@29.1.1)(msw@2.14.5(@types/node@25.6.2)(typescript@6.0.3))(vite@8.0.11(@types/node@25.6.2)(esbuild@0.27.2)(terser@5.46.1)(yaml@2.7.0)) + version: 4.1.5(@types/node@25.6.2)(@vitest/coverage-v8@4.1.5)(jsdom@29.1.1)(msw@2.14.5(@types/node@25.6.2)(typescript@6.0.3))(vite@8.0.11(@types/node@25.6.2)(esbuild@0.27.2)(yaml@2.7.0)) packages/docs: devDependencies: @@ -91,19 +91,19 @@ importers: version: 9.0.8 '@storybook/addon-docs': specifier: ^10.3.6 - version: 10.3.6(@types/react@19.2.14)(rollup@4.60.0)(storybook@10.3.6(@testing-library/dom@10.4.1)(prettier@2.8.8)(react-dom@19.2.6(react@19.2.6))(react@19.2.6))(vite@8.0.11(@types/node@25.6.2)(terser@5.46.1)(yaml@2.7.0))(webpack@5.98.0) + version: 10.3.6(@types/react@19.2.14)(esbuild@0.27.2)(rollup@4.60.0)(storybook@10.3.6(@testing-library/dom@10.4.1)(react-dom@19.2.6(react@19.2.6))(react@19.2.6))(vite@8.0.11(@types/node@25.6.2)(esbuild@0.27.2)(yaml@2.7.0)) '@storybook/addon-essentials': specifier: ^8.6.14 - version: 8.6.14(@types/react@19.2.14)(storybook@10.3.6(@testing-library/dom@10.4.1)(prettier@2.8.8)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)) + version: 8.6.14(@types/react@19.2.14)(storybook@10.3.6(@testing-library/dom@10.4.1)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)) '@storybook/addon-interactions': specifier: ^8.6.14 - version: 8.6.14(storybook@10.3.6(@testing-library/dom@10.4.1)(prettier@2.8.8)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)) + version: 8.6.14(storybook@10.3.6(@testing-library/dom@10.4.1)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)) '@storybook/addon-links': specifier: ^10.3.6 - version: 10.3.6(react@19.2.6)(storybook@10.3.6(@testing-library/dom@10.4.1)(prettier@2.8.8)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)) + version: 10.3.6(react@19.2.6)(storybook@10.3.6(@testing-library/dom@10.4.1)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)) '@storybook/addon-mdx-gfm': specifier: ^8.6.14 - version: 8.6.14(storybook@10.3.6(@testing-library/dom@10.4.1)(prettier@2.8.8)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)) + version: 8.6.14(storybook@10.3.6(@testing-library/dom@10.4.1)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)) '@storybook/addon-measure': specifier: ^9.0.8 version: 9.0.8 @@ -118,31 +118,31 @@ importers: version: 7.6.17(react-dom@19.2.6(react@19.2.6))(react@19.2.6) '@storybook/blocks': specifier: ^8.6.14 - version: 8.6.14(react-dom@19.2.6(react@19.2.6))(react@19.2.6)(storybook@10.3.6(@testing-library/dom@10.4.1)(prettier@2.8.8)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)) + version: 8.6.14(react-dom@19.2.6(react@19.2.6))(react@19.2.6)(storybook@10.3.6(@testing-library/dom@10.4.1)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)) '@storybook/client-api': specifier: ^7.6.17 version: 7.6.17 '@storybook/client-logger': specifier: ^8.6.14 - version: 8.6.14(storybook@10.3.6(@testing-library/dom@10.4.1)(prettier@2.8.8)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)) + version: 8.6.14(storybook@10.3.6(@testing-library/dom@10.4.1)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)) '@storybook/manager-api': specifier: ^8.6.14 - version: 8.6.14(storybook@10.3.6(@testing-library/dom@10.4.1)(prettier@2.8.8)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)) + version: 8.6.14(storybook@10.3.6(@testing-library/dom@10.4.1)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)) '@storybook/node-logger': specifier: ^8.6.14 - version: 8.6.14(storybook@10.3.6(@testing-library/dom@10.4.1)(prettier@2.8.8)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)) + version: 8.6.14(storybook@10.3.6(@testing-library/dom@10.4.1)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)) '@storybook/react': specifier: ^10.3.6 - version: 10.3.6(react-dom@19.2.6(react@19.2.6))(react@19.2.6)(storybook@10.3.6(@testing-library/dom@10.4.1)(prettier@2.8.8)(react-dom@19.2.6(react@19.2.6))(react@19.2.6))(typescript@6.0.3) + version: 10.3.6(react-dom@19.2.6(react@19.2.6))(react@19.2.6)(storybook@10.3.6(@testing-library/dom@10.4.1)(react-dom@19.2.6(react@19.2.6))(react@19.2.6))(typescript@6.0.3) '@storybook/react-vite': specifier: ^10.3.6 - version: 10.3.6(react-dom@19.2.6(react@19.2.6))(react@19.2.6)(rollup@4.60.0)(storybook@10.3.6(@testing-library/dom@10.4.1)(prettier@2.8.8)(react-dom@19.2.6(react@19.2.6))(react@19.2.6))(typescript@6.0.3)(vite@8.0.11(@types/node@25.6.2)(terser@5.46.1)(yaml@2.7.0))(webpack@5.98.0) + version: 10.3.6(esbuild@0.27.2)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)(rollup@4.60.0)(storybook@10.3.6(@testing-library/dom@10.4.1)(react-dom@19.2.6(react@19.2.6))(react@19.2.6))(typescript@6.0.3)(vite@8.0.11(@types/node@25.6.2)(esbuild@0.27.2)(yaml@2.7.0)) '@storybook/testing-library': specifier: ^0.2.2 version: 0.2.2 '@storybook/theming': specifier: ^8.6.14 - version: 8.6.14(storybook@10.3.6(@testing-library/dom@10.4.1)(prettier@2.8.8)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)) + version: 8.6.14(storybook@10.3.6(@testing-library/dom@10.4.1)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)) '@types/js-cookie': specifier: ^3.0.6 version: 3.0.6 @@ -151,10 +151,10 @@ importers: version: 19.2.14 '@vitejs/plugin-react': specifier: ^6.0.1 - version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.11(@types/node@25.6.2)(esbuild@0.27.2)(terser@5.46.1)(yaml@2.7.0)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.11(@types/node@25.6.2)(esbuild@0.27.2)(yaml@2.7.0)) babel-loader: specifier: ^10.1.1 - version: 10.1.1(@babel/core@7.29.0)(webpack@5.98.0) + version: 10.1.1(@babel/core@7.29.0) js-cookie: specifier: ^3.0.5 version: 3.0.5 @@ -175,7 +175,7 @@ importers: version: 19.2.6(react@19.2.6) storybook: specifier: ^10.3.6 - version: 10.3.6(@testing-library/dom@10.4.1)(prettier@2.8.8)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) + version: 10.3.6(@testing-library/dom@10.4.1)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) type-fest: specifier: ^5.6.0 version: 5.6.0 @@ -184,10 +184,10 @@ importers: version: 6.0.3 vite: specifier: ^8.0.11 - version: 8.0.11(@types/node@25.6.2)(esbuild@0.27.2)(terser@5.46.1)(yaml@2.7.0) + version: 8.0.11(@types/node@25.6.2)(esbuild@0.27.2)(yaml@2.7.0) vite-tsconfig-paths: specifier: ^6.1.1 - version: 6.1.1(typescript@6.0.3)(vite@8.0.11(@types/node@25.6.2)(terser@5.46.1)(yaml@2.7.0)) + version: 6.1.1(typescript@6.0.3)(vite@8.0.11(@types/node@25.6.2)(esbuild@0.27.2)(yaml@2.7.0)) packages/document: dependencies: @@ -203,31 +203,31 @@ importers: devDependencies: '@chromatic-com/storybook': specifier: ^5.1.2 - version: 5.1.2(storybook@10.3.6(@testing-library/dom@10.4.1)(prettier@2.8.8)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)) + version: 5.1.2(storybook@10.3.6(@testing-library/dom@10.4.1)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)) '@commercelayer/js-auth': specifier: ^7.4.1 version: 7.4.1 '@storybook/addon-docs': specifier: ^10.3.6 - version: 10.3.6(@types/react@19.2.14)(rollup@4.60.0)(storybook@10.3.6(@testing-library/dom@10.4.1)(prettier@2.8.8)(react-dom@19.2.6(react@19.2.6))(react@19.2.6))(vite@8.0.11(@types/node@25.6.2)(terser@5.46.1)(yaml@2.7.0))(webpack@5.98.0) + version: 10.3.6(@types/react@19.2.14)(esbuild@0.27.2)(rollup@4.60.0)(storybook@10.3.6(@testing-library/dom@10.4.1)(react-dom@19.2.6(react@19.2.6))(react@19.2.6))(vite@8.0.11(@types/node@25.6.2)(esbuild@0.27.2)(yaml@2.7.0)) '@storybook/addon-links': specifier: ^10.3.6 - version: 10.3.6(react@19.2.6)(storybook@10.3.6(@testing-library/dom@10.4.1)(prettier@2.8.8)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)) + version: 10.3.6(react@19.2.6)(storybook@10.3.6(@testing-library/dom@10.4.1)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)) '@storybook/addon-mcp': specifier: ^0.6.0 - version: 0.6.0(storybook@10.3.6(@testing-library/dom@10.4.1)(prettier@2.8.8)(react-dom@19.2.6(react@19.2.6))(react@19.2.6))(typescript@6.0.3) + version: 0.6.0(storybook@10.3.6(@testing-library/dom@10.4.1)(react-dom@19.2.6(react@19.2.6))(react@19.2.6))(typescript@6.0.3) '@storybook/addon-onboarding': specifier: ^10.3.6 - version: 10.3.6(storybook@10.3.6(@testing-library/dom@10.4.1)(prettier@2.8.8)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)) + version: 10.3.6(storybook@10.3.6(@testing-library/dom@10.4.1)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)) '@storybook/icons': specifier: ^2.0.2 version: 2.0.2(react-dom@19.2.6(react@19.2.6))(react@19.2.6) '@storybook/react': specifier: ^10.3.6 - version: 10.3.6(react-dom@19.2.6(react@19.2.6))(react@19.2.6)(storybook@10.3.6(@testing-library/dom@10.4.1)(prettier@2.8.8)(react-dom@19.2.6(react@19.2.6))(react@19.2.6))(typescript@6.0.3) + version: 10.3.6(react-dom@19.2.6(react@19.2.6))(react@19.2.6)(storybook@10.3.6(@testing-library/dom@10.4.1)(react-dom@19.2.6(react@19.2.6))(react@19.2.6))(typescript@6.0.3) '@storybook/react-vite': specifier: ^10.3.6 - version: 10.3.6(react-dom@19.2.6(react@19.2.6))(react@19.2.6)(rollup@4.60.0)(storybook@10.3.6(@testing-library/dom@10.4.1)(prettier@2.8.8)(react-dom@19.2.6(react@19.2.6))(react@19.2.6))(typescript@6.0.3)(vite@8.0.11(@types/node@25.6.2)(terser@5.46.1)(yaml@2.7.0))(webpack@5.98.0) + version: 10.3.6(esbuild@0.27.2)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)(rollup@4.60.0)(storybook@10.3.6(@testing-library/dom@10.4.1)(react-dom@19.2.6(react@19.2.6))(react@19.2.6))(typescript@6.0.3)(vite@8.0.11(@types/node@25.6.2)(esbuild@0.27.2)(yaml@2.7.0)) '@types/js-cookie': specifier: ^3.0.6 version: 3.0.6 @@ -239,7 +239,7 @@ importers: version: 19.2.3(@types/react@19.2.14) '@vitejs/plugin-react': specifier: ^6.0.1 - version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.11(@types/node@25.6.2)(esbuild@0.27.2)(terser@5.46.1)(yaml@2.7.0)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.11(@types/node@25.6.2)(esbuild@0.27.2)(yaml@2.7.0)) js-cookie: specifier: ^3.0.5 version: 3.0.5 @@ -251,16 +251,16 @@ importers: version: 4.0.1 storybook: specifier: ^10.3.6 - version: 10.3.6(@testing-library/dom@10.4.1)(prettier@2.8.8)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) + version: 10.3.6(@testing-library/dom@10.4.1)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) typescript: specifier: ~6.0.3 version: 6.0.3 vite: specifier: ^8.0.11 - version: 8.0.11(@types/node@25.6.2)(esbuild@0.27.2)(terser@5.46.1)(yaml@2.7.0) + version: 8.0.11(@types/node@25.6.2)(esbuild@0.27.2)(yaml@2.7.0) vite-tsconfig-paths: specifier: ^6.1.1 - version: 6.1.1(typescript@6.0.3)(vite@8.0.11(@types/node@25.6.2)(terser@5.46.1)(yaml@2.7.0)) + version: 6.1.1(typescript@6.0.3)(vite@8.0.11(@types/node@25.6.2)(esbuild@0.27.2)(yaml@2.7.0)) packages/hooks: dependencies: @@ -309,10 +309,10 @@ importers: version: 6.0.3 vite-tsconfig-paths: specifier: ^6.1.1 - version: 6.1.1(typescript@6.0.3)(vite@8.0.11(@types/node@25.6.2)(terser@5.46.1)(yaml@2.7.0)) + version: 6.1.1(typescript@6.0.3)(vite@8.0.11(@types/node@25.6.2)(esbuild@0.27.2)(yaml@2.7.0)) vitest: specifier: ^4.1.5 - version: 4.1.5(@types/node@25.6.2)(@vitest/coverage-v8@4.1.5)(jsdom@29.1.1)(msw@2.14.5(@types/node@25.6.2)(typescript@6.0.3))(vite@8.0.11(@types/node@25.6.2)(esbuild@0.27.2)(terser@5.46.1)(yaml@2.7.0)) + version: 4.1.5(@types/node@25.6.2)(@vitest/coverage-v8@4.1.5)(jsdom@29.1.1)(msw@2.14.5(@types/node@25.6.2)(typescript@6.0.3))(vite@8.0.11(@types/node@25.6.2)(esbuild@0.27.2)(yaml@2.7.0)) packages/react-components: dependencies: @@ -397,7 +397,7 @@ importers: version: 2.0.0(react-dom@19.2.6(react@19.2.6))(react@19.2.6) '@vitejs/plugin-react': specifier: ^6.0.1 - version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.11(@types/node@25.6.2)(esbuild@0.27.2)(terser@5.46.1)(yaml@2.7.0)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.11(@types/node@25.6.2)(esbuild@0.27.2)(yaml@2.7.0)) '@vitest/coverage-v8': specifier: ^4.1.5 version: 4.1.5(vitest@4.1.5) @@ -433,13 +433,13 @@ importers: version: 6.0.3 vite: specifier: ^8.0.11 - version: 8.0.11(@types/node@25.6.2)(esbuild@0.27.2)(terser@5.46.1)(yaml@2.7.0) + version: 8.0.11(@types/node@25.6.2)(esbuild@0.27.2)(yaml@2.7.0) vite-tsconfig-paths: specifier: ^6.1.1 - version: 6.1.1(typescript@6.0.3)(vite@8.0.11(@types/node@25.6.2)(terser@5.46.1)(yaml@2.7.0)) + version: 6.1.1(typescript@6.0.3)(vite@8.0.11(@types/node@25.6.2)(esbuild@0.27.2)(yaml@2.7.0)) vitest: specifier: ^4.1.5 - version: 4.1.5(@types/node@25.6.2)(@vitest/coverage-v8@4.1.5)(jsdom@29.1.1)(msw@2.14.5(@types/node@25.6.2)(typescript@6.0.3))(vite@8.0.11(@types/node@25.6.2)(esbuild@0.27.2)(terser@5.46.1)(yaml@2.7.0)) + version: 4.1.5(@types/node@25.6.2)(@vitest/coverage-v8@4.1.5)(jsdom@29.1.1)(msw@2.14.5(@types/node@25.6.2)(typescript@6.0.3))(vite@8.0.11(@types/node@25.6.2)(esbuild@0.27.2)(yaml@2.7.0)) packages: @@ -1749,9 +1749,6 @@ packages: resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} engines: {node: '>=6.0.0'} - '@jridgewell/source-map@0.3.11': - resolution: {integrity: sha512-ZMp1V8ZFcPG5dIWnQLr3NSI1MiCU7UETdS/A0G8V/XWHvJv3ZsFqutJn1Y5RPmAPX6F3BiE397OqveU/9NCuIA==} - '@jridgewell/sourcemap-codec@1.5.5': resolution: {integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==} @@ -2429,7 +2426,7 @@ packages: '@storybook/csf-plugin@10.3.6': resolution: {integrity: sha512-9kBf7VRdRqTSIYo+rPtVn5yjYYyK8kP2QhEYx3oiXvfwy4RexmbJnhk/tXa/lNiTqukA1TqaWQ2+5MqF4fu6YQ==} peerDependencies: - esbuild: ^0.25.0 + esbuild: '>=0.25.0' rollup: '>=4.59.0' storybook: ^10.3.6 vite: '*' @@ -2696,12 +2693,6 @@ packages: '@types/doctrine@0.0.9': resolution: {integrity: sha512-eOIHzCUSH7SMfonMG1LsC2f8vxBFtho6NGBznK41R84YzPuvSBzrhEps33IsQiOW9+VL6NQ9DbjQJznk/S4uRA==} - '@types/eslint-scope@3.7.7': - resolution: {integrity: sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==} - - '@types/eslint@9.6.1': - resolution: {integrity: sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==} - '@types/estree@1.0.8': resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==} @@ -2726,9 +2717,6 @@ packages: '@types/js-cookie@3.0.6': resolution: {integrity: sha512-wkw9yd1kEXOPnvEeEV1Go1MmxtBJL0RR79aOTAApecWFVu7w0NNXNqhcWgvw2YgZDYadliXkl14pa3WXw5jlCQ==} - '@types/json-schema@7.0.15': - resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} - '@types/mdast@4.0.4': resolution: {integrity: sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==} @@ -2884,60 +2872,9 @@ packages: '@vitest/utils@4.1.5': resolution: {integrity: sha512-76wdkrmfXfqGjueGgnb45ITPyUi1ycZ4IHgC2bhPDUfWHklY/q3MdLOAB+TF1e6xfl8NxNY0ZYaPCFNWSsw3Ug==} - '@webassemblyjs/ast@1.14.1': - resolution: {integrity: sha512-nuBEDgQfm1ccRp/8bCQrx1frohyufl4JlbMMZ4P1wpeOfDhF6FQkxZJ1b/e+PLwr6X1Nhw6OLme5usuBWYBvuQ==} - - '@webassemblyjs/floating-point-hex-parser@1.13.2': - resolution: {integrity: sha512-6oXyTOzbKxGH4steLbLNOu71Oj+C8Lg34n6CqRvqfS2O71BxY6ByfMDRhBytzknj9yGUPVJ1qIKhRlAwO1AovA==} - - '@webassemblyjs/helper-api-error@1.13.2': - resolution: {integrity: sha512-U56GMYxy4ZQCbDZd6JuvvNV/WFildOjsaWD3Tzzvmw/mas3cXzRJPMjP83JqEsgSbyrmaGjBfDtV7KDXV9UzFQ==} - - '@webassemblyjs/helper-buffer@1.14.1': - resolution: {integrity: sha512-jyH7wtcHiKssDtFPRB+iQdxlDf96m0E39yb0k5uJVhFGleZFoNw1c4aeIcVUPPbXUVJ94wwnMOAqUHyzoEPVMA==} - - '@webassemblyjs/helper-numbers@1.13.2': - resolution: {integrity: sha512-FE8aCmS5Q6eQYcV3gI35O4J789wlQA+7JrqTTpJqn5emA4U2hvwJmvFRC0HODS+3Ye6WioDklgd6scJ3+PLnEA==} - - '@webassemblyjs/helper-wasm-bytecode@1.13.2': - resolution: {integrity: sha512-3QbLKy93F0EAIXLh0ogEVR6rOubA9AoZ+WRYhNbFyuB70j3dRdwH9g+qXhLAO0kiYGlg3TxDV+I4rQTr/YNXkA==} - - '@webassemblyjs/helper-wasm-section@1.14.1': - resolution: {integrity: sha512-ds5mXEqTJ6oxRoqjhWDU83OgzAYjwsCV8Lo/N+oRsNDmx/ZDpqalmrtgOMkHwxsG0iI//3BwWAErYRHtgn0dZw==} - - '@webassemblyjs/ieee754@1.13.2': - resolution: {integrity: sha512-4LtOzh58S/5lX4ITKxnAK2USuNEvpdVV9AlgGQb8rJDHaLeHciwG4zlGr0j/SNWlr7x3vO1lDEsuePvtcDNCkw==} - - '@webassemblyjs/leb128@1.13.2': - resolution: {integrity: sha512-Lde1oNoIdzVzdkNEAWZ1dZ5orIbff80YPdHx20mrHwHrVNNTjNr8E3xz9BdpcGqRQbAEa+fkrCb+fRFTl/6sQw==} - - '@webassemblyjs/utf8@1.13.2': - resolution: {integrity: sha512-3NQWGjKTASY1xV5m7Hr0iPeXD9+RDobLll3T9d2AO+g3my8xy5peVyjSag4I50mR1bBSN/Ct12lo+R9tJk0NZQ==} - - '@webassemblyjs/wasm-edit@1.14.1': - resolution: {integrity: sha512-RNJUIQH/J8iA/1NzlE4N7KtyZNHi3w7at7hDjvRNm5rcUXa00z1vRz3glZoULfJ5mpvYhLybmVcwcjGrC1pRrQ==} - - '@webassemblyjs/wasm-gen@1.14.1': - resolution: {integrity: sha512-AmomSIjP8ZbfGQhumkNvgC33AY7qtMCXnN6bL2u2Js4gVCg8fp735aEiMSBbDR7UQIj90n4wKAFUSEd0QN2Ukg==} - - '@webassemblyjs/wasm-opt@1.14.1': - resolution: {integrity: sha512-PTcKLUNvBqnY2U6E5bdOQcSM+oVP/PmrDY9NzowJjislEjwP/C4an2303MCVS2Mg9d3AJpIGdUFIQQWbPds0Sw==} - - '@webassemblyjs/wasm-parser@1.14.1': - resolution: {integrity: sha512-JLBl+KZ0R5qB7mCnud/yyX08jWFw5MsoalJ1pQ4EdFlgj9VdXKGuENGsiCIjegI1W7p91rUlcB/LB5yRJKNTcQ==} - - '@webassemblyjs/wast-printer@1.14.1': - resolution: {integrity: sha512-kPSSXE6De1XOR820C90RIo2ogvZG+c3KiHzqUoO/F34Y2shGzesfqv7o57xrxovZJH/MetF5UjroJ/R/3isoiw==} - '@webcontainer/env@1.1.1': resolution: {integrity: sha512-6aN99yL695Hi9SuIk1oC88l9o0gmxL1nGWWQ/kNy81HigJ0FoaoTXpytCj6ItzgyCEwA9kF1wixsTuv5cjsgng==} - '@xtuc/ieee754@1.2.0': - resolution: {integrity: sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==} - - '@xtuc/long@4.2.2': - resolution: {integrity: sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==} - '@yarnpkg/lockfile@1.1.0': resolution: {integrity: sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==} @@ -2982,22 +2919,6 @@ packages: resolution: {integrity: sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==} engines: {node: '>=8'} - ajv-formats@2.1.1: - resolution: {integrity: sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==} - peerDependencies: - ajv: ^8.18.0 - peerDependenciesMeta: - ajv: - optional: true - - ajv-keywords@5.1.0: - resolution: {integrity: sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==} - peerDependencies: - ajv: ^8.18.0 - - ajv@8.18.0: - resolution: {integrity: sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==} - ansi-colors@4.1.3: resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==} engines: {node: '>=6'} @@ -3169,7 +3090,7 @@ packages: resolution: {integrity: sha512-3WrrOuZiyaaZPWiEt4G3+IffISVC9HYlWueJEBWED4ZH4aIAC2PnkdnuRrR94M+w6yGWn4AglWtJtBI8YqvgoA==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} peerDependencies: - esbuild: ^0.25.0 + esbuild: '>=0.25.0' byte-size@8.1.1: resolution: {integrity: sha512-tUkzZWK0M/qdoLEqikxBWe4kumyuwjl3HO6zHTr4yEI23EojPtLYXdG1+AQY7MN0cGyNDvEaJ8wiYQm6P2bPxg==} @@ -3274,10 +3195,6 @@ packages: '@chromatic-com/playwright': optional: true - chrome-trace-event@1.0.4: - resolution: {integrity: sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==} - engines: {node: '>=6.0'} - ci-info@3.9.0: resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==} engines: {node: '>=8'} @@ -3363,9 +3280,6 @@ packages: resolution: {integrity: sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==} engines: {node: '>=14'} - commander@2.20.3: - resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} - commander@4.1.1: resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} engines: {node: '>= 6'} @@ -3631,10 +3545,6 @@ packages: end-of-stream@1.4.4: resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} - enhanced-resolve@5.20.1: - resolution: {integrity: sha512-Qohcme7V1inbAfvjItgw0EaxVX5q2rdVEZHRBrEQdRZTssLDGsL8Lwrznl8oQ/6kuTJONLaDcGjkNP247XEhcA==} - engines: {node: '>=10.13.0'} - enquirer@2.3.6: resolution: {integrity: sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==} engines: {node: '>=8.6'} @@ -3677,9 +3587,6 @@ packages: es-get-iterator@1.1.3: resolution: {integrity: sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw==} - es-module-lexer@1.7.0: - resolution: {integrity: sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==} - es-module-lexer@2.0.0: resolution: {integrity: sha512-5POEcUuZybH7IdmGsD8wlf0AI55wMecM9rVBTI/qEAy2c1kTOm3DjFYjrBdI2K3BaJjJYfYFeRtM0t9ssnRuxw==} @@ -3713,10 +3620,6 @@ packages: resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==} engines: {node: '>=12'} - eslint-scope@5.1.1: - resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} - engines: {node: '>=8.0.0'} - esm-env@1.2.2: resolution: {integrity: sha512-Epxrv+Nr/CaL4ZcFGPJIYLWFom+YeV1DqMLHJoEd9SYRxNbaFruBwfEX/kkHUJf55j2+TUbmDcmuilbP1TmXHA==} @@ -3725,18 +3628,6 @@ packages: engines: {node: '>=4'} hasBin: true - esrecurse@4.3.0: - resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} - engines: {node: '>=4.0'} - - estraverse@4.3.0: - resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==} - engines: {node: '>=4.0'} - - estraverse@5.3.0: - resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} - engines: {node: '>=4.0'} - estree-walker@2.0.2: resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} @@ -3750,10 +3641,6 @@ packages: eventemitter3@4.0.7: resolution: {integrity: sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==} - events@3.3.0: - resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} - engines: {node: '>=0.8.x'} - execa@5.0.0: resolution: {integrity: sha512-ov6w/2LCiuyO4RLYGdpFGjkcs0wMTgGE8PrkTHikeUy5iJekXyPIKUjifk5CsE0pt7sMCrMZ3YNqoCj6idQOnQ==} engines: {node: '>=10'} @@ -3768,18 +3655,12 @@ packages: extend@3.0.2: resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} - fast-deep-equal@3.1.3: - resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} - fast-string-truncated-width@3.0.3: resolution: {integrity: sha512-0jjjIEL6+0jag3l2XWWizO64/aZVtpiGE3t0Zgqxv0DPuxiMjvB3M24fCyhZUO4KomJQPj3LTSUnDP3GpdwC0g==} fast-string-width@3.0.2: resolution: {integrity: sha512-gX8LrtNEI5hq8DVUfRQMbr5lpaS4nMIWV+7XEbXk2b8kiQIizgnlr12B4dA3ZEx3308ze0O4Q1R+cHts8kyUJg==} - fast-uri@3.1.0: - resolution: {integrity: sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA==} - fast-wrap-ansi@0.2.0: resolution: {integrity: sha512-rLV8JHxTyhVmFYhBJuMujcrHqOT2cnO5Zxj37qROj23CP39GXubJRBUFF0z8KFK77Uc0SukZUf7JZhsVEQ6n8w==} @@ -3950,9 +3831,6 @@ packages: resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} engines: {node: '>=10.13.0'} - glob-to-regexp@0.4.1: - resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==} - glob@11.1.0: resolution: {integrity: sha512-vuNwKSaKiqm7g0THUBu2x7ckSs3XJLXE+2ssL7/MfTGPLLcrJQ/4Uq1CjPTtO5cCIiRxqvN6Twy1qOwhL0Xjcw==} engines: {node: 20 || >=22} @@ -4323,10 +4201,6 @@ packages: resolution: {integrity: sha512-dQHFo3Pt4/NLlG5z4PxZ/3yZTZ1C7s9hveiOj+GCN+uT109NC2QgsoVZsVOAvbJ3RgKkvyLGXZV9+piDpWbm6A==} engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - jest-worker@27.5.1: - resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==} - engines: {node: '>= 10.13.0'} - joycon@3.1.1: resolution: {integrity: sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw==} engines: {node: '>=10'} @@ -4383,9 +4257,6 @@ packages: json-rpc-2.0@1.7.1: resolution: {integrity: sha512-JqZjhjAanbpkXIzFE7u8mE/iFblawwlXtONaCvRqI+pyABVz7B4M1EUNpyVW+dZjqgQ2L5HFmZCmOCgUKm00hg==} - json-schema-traverse@1.0.0: - resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} - json-stringify-nice@1.1.4: resolution: {integrity: sha512-5Z5RFW63yxReJ7vANgW6eZFGWaQvnPE3WNmZoOJrSkGju2etKA2L5rrOa1sm877TVTFt57A80BH1bArcmlLfPw==} @@ -4531,10 +4402,6 @@ packages: resolution: {integrity: sha512-IXO6OCs9yg8tMKzfPZ1YmheJbZCiEsnBdcB03l0OcfK9prKnJb96siuHCr5Fl37/yo9DnKU+TLpxzTUspw9shg==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - loader-runner@4.3.1: - resolution: {integrity: sha512-IWqP2SCPhyVFTBtRcgMHdzlf9ul25NwaFx4wCEH/KjAXuuHY4yNjvPXsBokp8jCB936PyWRaPKUNh8NvylLp2Q==} - engines: {node: '>=6.11.5'} - locate-path@2.0.0: resolution: {integrity: sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==} engines: {node: '>=4'} @@ -5246,11 +5113,6 @@ packages: preact@10.29.1: resolution: {integrity: sha512-gQCLc/vWroE8lIpleXtdJhTFDogTdZG9AjMUpVkDf2iTCNwYNWA+u16dL41TqUDJO4gm2IgrcMv3uTpjd4Pwmg==} - prettier@2.8.8: - resolution: {integrity: sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==} - engines: {node: '>=10.13.0'} - hasBin: true - pretty-format@27.5.1: resolution: {integrity: sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} @@ -5527,10 +5389,6 @@ packages: scheduler@0.27.0: resolution: {integrity: sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==} - schema-utils@4.3.3: - resolution: {integrity: sha512-eflK8wEtyOE6+hsaRVPxvUKYCpRgzLqDTb8krvAsRIwOGlHoSgYLgBXoubGgLd2fT41/OUYdb48v4k4WWHQurA==} - engines: {node: '>= 10.13.0'} - semver@5.7.2: resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==} hasBin: true @@ -5622,9 +5480,6 @@ packages: resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} engines: {node: '>=0.10.0'} - source-map-support@0.5.21: - resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} - source-map@0.6.1: resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} engines: {node: '>=0.10.0'} @@ -5751,10 +5606,6 @@ packages: resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} engines: {node: '>=8'} - supports-color@8.1.1: - resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} - engines: {node: '>=10'} - supports-hyperlinks@3.2.0: resolution: {integrity: sha512-zFObLMyZeEwzAoKCyu1B91U79K2t7ApXuQfo8OuxwXLDgcKxuwM+YvcbIhm6QWqz7mHUH1TVytR1PwVVjEuMig==} engines: {node: '>=14.18'} @@ -5778,10 +5629,6 @@ packages: resolution: {integrity: sha512-yEFYrVhod+hdNyx7g5Bnkkb0G6si8HJurOoOEgC8B/O0uXLHlaey/65KRv6cuWBNhBgHKAROVpc7QyYqE5gFng==} engines: {node: '>=20'} - tapable@2.3.2: - resolution: {integrity: sha512-1MOpMXuhGzGL5TTCZFItxCc0AARf1EZFQkGqMm7ERKj8+Hgr5oLvJOVFcC+lRmR8hCe2S3jC4T5D7Vg/d7/fhA==} - engines: {node: '>=6'} - tar-stream@2.2.0: resolution: {integrity: sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==} engines: {node: '>=6'} @@ -5793,27 +5640,6 @@ packages: telejson@7.2.0: resolution: {integrity: sha512-1QTEcJkJEhc8OnStBx/ILRu5J2p0GjvWsBx56bmZRqnrkdBMUe+nX92jxV+p3dB4CP6PZCdJMQJwCggkNBMzkQ==} - terser-webpack-plugin@5.4.0: - resolution: {integrity: sha512-Bn5vxm48flOIfkdl5CaD2+1CiUVbonWQ3KQPyP7/EuIl9Gbzq/gQFOzaMFUEgVjB1396tcK0SG8XcNJ/2kDH8g==} - engines: {node: '>= 10.13.0'} - peerDependencies: - '@swc/core': '*' - esbuild: '*' - uglify-js: '*' - webpack: ^5.1.0 - peerDependenciesMeta: - '@swc/core': - optional: true - esbuild: - optional: true - uglify-js: - optional: true - - terser@5.46.1: - resolution: {integrity: sha512-vzCjQO/rgUuK9sf8VJZvjqiqiHFaZLnOiimmUuOKODxWL8mm/xua7viT7aqX7dgPY60otQjUotzFMmCB4VdmqQ==} - engines: {node: '>=10'} - hasBin: true - text-extensions@1.9.0: resolution: {integrity: sha512-wiBrwC1EhBelW12Zy26JeOUkQ5mRu+5o8rpsJk5+2t+Y5vE7e842qtZDQ2g1NpX/29HdyFeJ4nSIhI47ENSxlQ==} engines: {node: '>=0.10'} @@ -6102,6 +5928,7 @@ packages: uuid@9.0.1: resolution: {integrity: sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==} + deprecated: uuid@10 and below is no longer supported. For ESM codebases, update to uuid@latest. For CommonJS codebases, use uuid@11 (but be aware this version will likely be deprecated in 2028). hasBin: true valibot@1.4.0: @@ -6226,10 +6053,6 @@ packages: resolution: {integrity: sha512-3hu+tD8YzSLGuFYtPRb48vdhKMi0KQV5sn+uWr8+7dMEq/2G/dtLrdDinkLjqq5TIbIBjYJ4Ax/n3YiaW7QM8A==} engines: {node: 20 || >=22} - watchpack@2.5.1: - resolution: {integrity: sha512-Zn5uXdcFNIA1+1Ei5McRd+iRzfhENPCe7LeABkJtNulSxjma+l7ltNx55BWZkRlwRnpOgHqxnjyaDgJnNXnqzg==} - engines: {node: '>=10.13.0'} - wcwidth@1.0.1: resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==} @@ -6237,23 +6060,9 @@ packages: resolution: {integrity: sha512-BMhLD/Sw+GbJC21C/UgyaZX41nPt8bUTg+jWyDeg7e7YN4xOM05YPSIXceACnXVtqyEw/LMClUQMtMZ+PGGpqQ==} engines: {node: '>=20'} - webpack-sources@3.3.4: - resolution: {integrity: sha512-7tP1PdV4vF+lYPnkMR0jMY5/la2ub5Fc/8VQrrU+lXkiM6C4TjVfGw7iKfyhnTQOsD+6Q/iKw0eFciziRgD58Q==} - engines: {node: '>=10.13.0'} - webpack-virtual-modules@0.6.2: resolution: {integrity: sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ==} - webpack@5.98.0: - resolution: {integrity: sha512-UFynvx+gM44Gv9qFgj0acCQK2VE1CtdfwFdimkapco3hlPCJ/zeq73n2yVKimVbtm+TnApIugGhLJnkU6gjYXA==} - engines: {node: '>=10.13.0'} - hasBin: true - peerDependencies: - webpack-cli: '*' - peerDependenciesMeta: - webpack-cli: - optional: true - whatwg-mimetype@5.0.0: resolution: {integrity: sha512-sXcNcHOC51uPGF0P/D4NVtrkjSU2fNsm9iog4ZvZJsL3rjoDAzXZhkm2MWt1y+PUdggKAYVoMAIYcs78wJ51Cw==} engines: {node: '>=20'} @@ -7244,13 +7053,13 @@ snapshots: dependencies: css-tree: 3.2.1 - '@chromatic-com/storybook@5.1.2(storybook@10.3.6(@testing-library/dom@10.4.1)(prettier@2.8.8)(react-dom@19.2.6(react@19.2.6))(react@19.2.6))': + '@chromatic-com/storybook@5.1.2(storybook@10.3.6(@testing-library/dom@10.4.1)(react-dom@19.2.6(react@19.2.6))(react@19.2.6))': dependencies: '@neoconfetti/react': 1.0.0 chromatic: 13.3.4 filesize: 10.1.6 jsonfile: 6.1.0 - storybook: 10.3.6(@testing-library/dom@10.4.1)(prettier@2.8.8)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) + storybook: 10.3.6(@testing-library/dom@10.4.1)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) strip-ansi: 7.1.0 transitivePeerDependencies: - '@chromatic-com/cypress' @@ -7662,11 +7471,11 @@ snapshots: dependencies: '@sinclair/typebox': 0.34.41 - '@joshwooding/vite-plugin-react-docgen-typescript@0.7.0(typescript@6.0.3)(vite@8.0.11(@types/node@25.6.2)(terser@5.46.1)(yaml@2.7.0))': + '@joshwooding/vite-plugin-react-docgen-typescript@0.7.0(typescript@6.0.3)(vite@8.0.11(@types/node@25.6.2)(esbuild@0.27.2)(yaml@2.7.0))': dependencies: glob: 13.0.6 react-docgen-typescript: 2.4.0(typescript@6.0.3) - vite: 8.0.11(@types/node@25.6.2)(esbuild@0.27.2)(terser@5.46.1)(yaml@2.7.0) + vite: 8.0.11(@types/node@25.6.2)(esbuild@0.27.2)(yaml@2.7.0) optionalDependencies: typescript: 6.0.3 @@ -7682,12 +7491,6 @@ snapshots: '@jridgewell/resolve-uri@3.1.2': {} - '@jridgewell/source-map@0.3.11': - dependencies: - '@jridgewell/gen-mapping': 0.3.13 - '@jridgewell/trace-mapping': 0.3.31 - optional: true - '@jridgewell/sourcemap-codec@1.5.5': {} '@jridgewell/trace-mapping@0.3.31': @@ -8180,42 +7983,42 @@ snapshots: '@standard-schema/spec@1.1.0': {} - '@storybook/addon-actions@8.6.14(storybook@10.3.6(@testing-library/dom@10.4.1)(prettier@2.8.8)(react-dom@19.2.6(react@19.2.6))(react@19.2.6))': + '@storybook/addon-actions@8.6.14(storybook@10.3.6(@testing-library/dom@10.4.1)(react-dom@19.2.6(react@19.2.6))(react@19.2.6))': dependencies: '@storybook/global': 5.0.0 '@types/uuid': 9.0.8 dequal: 2.0.3 polished: 4.3.1 - storybook: 10.3.6(@testing-library/dom@10.4.1)(prettier@2.8.8)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) + storybook: 10.3.6(@testing-library/dom@10.4.1)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) uuid: 9.0.1 '@storybook/addon-actions@9.0.8': {} - '@storybook/addon-backgrounds@8.6.14(storybook@10.3.6(@testing-library/dom@10.4.1)(prettier@2.8.8)(react-dom@19.2.6(react@19.2.6))(react@19.2.6))': + '@storybook/addon-backgrounds@8.6.14(storybook@10.3.6(@testing-library/dom@10.4.1)(react-dom@19.2.6(react@19.2.6))(react@19.2.6))': dependencies: '@storybook/global': 5.0.0 memoizerific: 1.11.3 - storybook: 10.3.6(@testing-library/dom@10.4.1)(prettier@2.8.8)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) + storybook: 10.3.6(@testing-library/dom@10.4.1)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) ts-dedent: 2.2.0 '@storybook/addon-backgrounds@9.0.8': {} - '@storybook/addon-controls@8.6.14(storybook@10.3.6(@testing-library/dom@10.4.1)(prettier@2.8.8)(react-dom@19.2.6(react@19.2.6))(react@19.2.6))': + '@storybook/addon-controls@8.6.14(storybook@10.3.6(@testing-library/dom@10.4.1)(react-dom@19.2.6(react@19.2.6))(react@19.2.6))': dependencies: '@storybook/global': 5.0.0 dequal: 2.0.3 - storybook: 10.3.6(@testing-library/dom@10.4.1)(prettier@2.8.8)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) + storybook: 10.3.6(@testing-library/dom@10.4.1)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) ts-dedent: 2.2.0 - '@storybook/addon-docs@10.3.6(@types/react@19.2.14)(rollup@4.60.0)(storybook@10.3.6(@testing-library/dom@10.4.1)(prettier@2.8.8)(react-dom@19.2.6(react@19.2.6))(react@19.2.6))(vite@8.0.11(@types/node@25.6.2)(terser@5.46.1)(yaml@2.7.0))(webpack@5.98.0)': + '@storybook/addon-docs@10.3.6(@types/react@19.2.14)(esbuild@0.27.2)(rollup@4.60.0)(storybook@10.3.6(@testing-library/dom@10.4.1)(react-dom@19.2.6(react@19.2.6))(react@19.2.6))(vite@8.0.11(@types/node@25.6.2)(esbuild@0.27.2)(yaml@2.7.0))': dependencies: '@mdx-js/react': 3.1.1(@types/react@19.2.14)(react@19.2.6) - '@storybook/csf-plugin': 10.3.6(rollup@4.60.0)(storybook@10.3.6(@testing-library/dom@10.4.1)(prettier@2.8.8)(react-dom@19.2.6(react@19.2.6))(react@19.2.6))(vite@8.0.11(@types/node@25.6.2)(terser@5.46.1)(yaml@2.7.0))(webpack@5.98.0) + '@storybook/csf-plugin': 10.3.6(esbuild@0.27.2)(rollup@4.60.0)(storybook@10.3.6(@testing-library/dom@10.4.1)(react-dom@19.2.6(react@19.2.6))(react@19.2.6))(vite@8.0.11(@types/node@25.6.2)(esbuild@0.27.2)(yaml@2.7.0)) '@storybook/icons': 2.0.2(react-dom@19.2.6(react@19.2.6))(react@19.2.6) - '@storybook/react-dom-shim': 10.3.6(react-dom@19.2.6(react@19.2.6))(react@19.2.6)(storybook@10.3.6(@testing-library/dom@10.4.1)(prettier@2.8.8)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)) + '@storybook/react-dom-shim': 10.3.6(react-dom@19.2.6(react@19.2.6))(react@19.2.6)(storybook@10.3.6(@testing-library/dom@10.4.1)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)) react: 19.2.6 react-dom: 19.2.6(react@19.2.6) - storybook: 10.3.6(@testing-library/dom@10.4.1)(prettier@2.8.8)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) + storybook: 10.3.6(@testing-library/dom@10.4.1)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) ts-dedent: 2.2.0 transitivePeerDependencies: - '@types/react' @@ -8224,105 +8027,105 @@ snapshots: - vite - webpack - '@storybook/addon-docs@8.6.14(@types/react@19.2.14)(storybook@10.3.6(@testing-library/dom@10.4.1)(prettier@2.8.8)(react-dom@19.2.6(react@19.2.6))(react@19.2.6))': + '@storybook/addon-docs@8.6.14(@types/react@19.2.14)(storybook@10.3.6(@testing-library/dom@10.4.1)(react-dom@19.2.6(react@19.2.6))(react@19.2.6))': dependencies: '@mdx-js/react': 3.1.1(@types/react@19.2.14)(react@19.2.6) - '@storybook/blocks': 8.6.14(react-dom@19.2.6(react@19.2.6))(react@19.2.6)(storybook@10.3.6(@testing-library/dom@10.4.1)(prettier@2.8.8)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)) - '@storybook/csf-plugin': 8.6.14(storybook@10.3.6(@testing-library/dom@10.4.1)(prettier@2.8.8)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)) - '@storybook/react-dom-shim': 8.6.14(react-dom@19.2.6(react@19.2.6))(react@19.2.6)(storybook@10.3.6(@testing-library/dom@10.4.1)(prettier@2.8.8)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)) + '@storybook/blocks': 8.6.14(react-dom@19.2.6(react@19.2.6))(react@19.2.6)(storybook@10.3.6(@testing-library/dom@10.4.1)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)) + '@storybook/csf-plugin': 8.6.14(storybook@10.3.6(@testing-library/dom@10.4.1)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)) + '@storybook/react-dom-shim': 8.6.14(react-dom@19.2.6(react@19.2.6))(react@19.2.6)(storybook@10.3.6(@testing-library/dom@10.4.1)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)) react: 19.2.6 react-dom: 19.2.6(react@19.2.6) - storybook: 10.3.6(@testing-library/dom@10.4.1)(prettier@2.8.8)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) + storybook: 10.3.6(@testing-library/dom@10.4.1)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) ts-dedent: 2.2.0 transitivePeerDependencies: - '@types/react' - '@storybook/addon-essentials@8.6.14(@types/react@19.2.14)(storybook@10.3.6(@testing-library/dom@10.4.1)(prettier@2.8.8)(react-dom@19.2.6(react@19.2.6))(react@19.2.6))': - dependencies: - '@storybook/addon-actions': 8.6.14(storybook@10.3.6(@testing-library/dom@10.4.1)(prettier@2.8.8)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)) - '@storybook/addon-backgrounds': 8.6.14(storybook@10.3.6(@testing-library/dom@10.4.1)(prettier@2.8.8)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)) - '@storybook/addon-controls': 8.6.14(storybook@10.3.6(@testing-library/dom@10.4.1)(prettier@2.8.8)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)) - '@storybook/addon-docs': 8.6.14(@types/react@19.2.14)(storybook@10.3.6(@testing-library/dom@10.4.1)(prettier@2.8.8)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)) - '@storybook/addon-highlight': 8.6.14(storybook@10.3.6(@testing-library/dom@10.4.1)(prettier@2.8.8)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)) - '@storybook/addon-measure': 8.6.14(storybook@10.3.6(@testing-library/dom@10.4.1)(prettier@2.8.8)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)) - '@storybook/addon-outline': 8.6.14(storybook@10.3.6(@testing-library/dom@10.4.1)(prettier@2.8.8)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)) - '@storybook/addon-toolbars': 8.6.14(storybook@10.3.6(@testing-library/dom@10.4.1)(prettier@2.8.8)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)) - '@storybook/addon-viewport': 8.6.14(storybook@10.3.6(@testing-library/dom@10.4.1)(prettier@2.8.8)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)) - storybook: 10.3.6(@testing-library/dom@10.4.1)(prettier@2.8.8)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) + '@storybook/addon-essentials@8.6.14(@types/react@19.2.14)(storybook@10.3.6(@testing-library/dom@10.4.1)(react-dom@19.2.6(react@19.2.6))(react@19.2.6))': + dependencies: + '@storybook/addon-actions': 8.6.14(storybook@10.3.6(@testing-library/dom@10.4.1)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)) + '@storybook/addon-backgrounds': 8.6.14(storybook@10.3.6(@testing-library/dom@10.4.1)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)) + '@storybook/addon-controls': 8.6.14(storybook@10.3.6(@testing-library/dom@10.4.1)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)) + '@storybook/addon-docs': 8.6.14(@types/react@19.2.14)(storybook@10.3.6(@testing-library/dom@10.4.1)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)) + '@storybook/addon-highlight': 8.6.14(storybook@10.3.6(@testing-library/dom@10.4.1)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)) + '@storybook/addon-measure': 8.6.14(storybook@10.3.6(@testing-library/dom@10.4.1)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)) + '@storybook/addon-outline': 8.6.14(storybook@10.3.6(@testing-library/dom@10.4.1)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)) + '@storybook/addon-toolbars': 8.6.14(storybook@10.3.6(@testing-library/dom@10.4.1)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)) + '@storybook/addon-viewport': 8.6.14(storybook@10.3.6(@testing-library/dom@10.4.1)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)) + storybook: 10.3.6(@testing-library/dom@10.4.1)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) ts-dedent: 2.2.0 transitivePeerDependencies: - '@types/react' - '@storybook/addon-highlight@8.6.14(storybook@10.3.6(@testing-library/dom@10.4.1)(prettier@2.8.8)(react-dom@19.2.6(react@19.2.6))(react@19.2.6))': + '@storybook/addon-highlight@8.6.14(storybook@10.3.6(@testing-library/dom@10.4.1)(react-dom@19.2.6(react@19.2.6))(react@19.2.6))': dependencies: '@storybook/global': 5.0.0 - storybook: 10.3.6(@testing-library/dom@10.4.1)(prettier@2.8.8)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) + storybook: 10.3.6(@testing-library/dom@10.4.1)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) - '@storybook/addon-interactions@8.6.14(storybook@10.3.6(@testing-library/dom@10.4.1)(prettier@2.8.8)(react-dom@19.2.6(react@19.2.6))(react@19.2.6))': + '@storybook/addon-interactions@8.6.14(storybook@10.3.6(@testing-library/dom@10.4.1)(react-dom@19.2.6(react@19.2.6))(react@19.2.6))': dependencies: '@storybook/global': 5.0.0 - '@storybook/instrumenter': 8.6.14(storybook@10.3.6(@testing-library/dom@10.4.1)(prettier@2.8.8)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)) - '@storybook/test': 8.6.14(storybook@10.3.6(@testing-library/dom@10.4.1)(prettier@2.8.8)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)) + '@storybook/instrumenter': 8.6.14(storybook@10.3.6(@testing-library/dom@10.4.1)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)) + '@storybook/test': 8.6.14(storybook@10.3.6(@testing-library/dom@10.4.1)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)) polished: 4.3.1 - storybook: 10.3.6(@testing-library/dom@10.4.1)(prettier@2.8.8)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) + storybook: 10.3.6(@testing-library/dom@10.4.1)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) ts-dedent: 2.2.0 - '@storybook/addon-links@10.3.6(react@19.2.6)(storybook@10.3.6(@testing-library/dom@10.4.1)(prettier@2.8.8)(react-dom@19.2.6(react@19.2.6))(react@19.2.6))': + '@storybook/addon-links@10.3.6(react@19.2.6)(storybook@10.3.6(@testing-library/dom@10.4.1)(react-dom@19.2.6(react@19.2.6))(react@19.2.6))': dependencies: '@storybook/global': 5.0.0 - storybook: 10.3.6(@testing-library/dom@10.4.1)(prettier@2.8.8)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) + storybook: 10.3.6(@testing-library/dom@10.4.1)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) optionalDependencies: react: 19.2.6 - '@storybook/addon-mcp@0.6.0(storybook@10.3.6(@testing-library/dom@10.4.1)(prettier@2.8.8)(react-dom@19.2.6(react@19.2.6))(react@19.2.6))(typescript@6.0.3)': + '@storybook/addon-mcp@0.6.0(storybook@10.3.6(@testing-library/dom@10.4.1)(react-dom@19.2.6(react@19.2.6))(react@19.2.6))(typescript@6.0.3)': dependencies: '@storybook/mcp': 0.7.0(typescript@6.0.3) '@tmcp/adapter-valibot': 0.1.5(tmcp@1.19.3(typescript@6.0.3))(valibot@1.4.0(typescript@6.0.3)) '@tmcp/transport-http': 0.8.5(tmcp@1.19.3(typescript@6.0.3)) picoquery: 2.5.0 - storybook: 10.3.6(@testing-library/dom@10.4.1)(prettier@2.8.8)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) + storybook: 10.3.6(@testing-library/dom@10.4.1)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) tmcp: 1.19.3(typescript@6.0.3) valibot: 1.4.0(typescript@6.0.3) transitivePeerDependencies: - '@tmcp/auth' - typescript - '@storybook/addon-mdx-gfm@8.6.14(storybook@10.3.6(@testing-library/dom@10.4.1)(prettier@2.8.8)(react-dom@19.2.6(react@19.2.6))(react@19.2.6))': + '@storybook/addon-mdx-gfm@8.6.14(storybook@10.3.6(@testing-library/dom@10.4.1)(react-dom@19.2.6(react@19.2.6))(react@19.2.6))': dependencies: remark-gfm: 4.0.1 - storybook: 10.3.6(@testing-library/dom@10.4.1)(prettier@2.8.8)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) + storybook: 10.3.6(@testing-library/dom@10.4.1)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) ts-dedent: 2.2.0 transitivePeerDependencies: - supports-color - '@storybook/addon-measure@8.6.14(storybook@10.3.6(@testing-library/dom@10.4.1)(prettier@2.8.8)(react-dom@19.2.6(react@19.2.6))(react@19.2.6))': + '@storybook/addon-measure@8.6.14(storybook@10.3.6(@testing-library/dom@10.4.1)(react-dom@19.2.6(react@19.2.6))(react@19.2.6))': dependencies: '@storybook/global': 5.0.0 - storybook: 10.3.6(@testing-library/dom@10.4.1)(prettier@2.8.8)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) + storybook: 10.3.6(@testing-library/dom@10.4.1)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) tiny-invariant: 1.3.3 '@storybook/addon-measure@9.0.8': {} - '@storybook/addon-onboarding@10.3.6(storybook@10.3.6(@testing-library/dom@10.4.1)(prettier@2.8.8)(react-dom@19.2.6(react@19.2.6))(react@19.2.6))': + '@storybook/addon-onboarding@10.3.6(storybook@10.3.6(@testing-library/dom@10.4.1)(react-dom@19.2.6(react@19.2.6))(react@19.2.6))': dependencies: - storybook: 10.3.6(@testing-library/dom@10.4.1)(prettier@2.8.8)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) + storybook: 10.3.6(@testing-library/dom@10.4.1)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) - '@storybook/addon-outline@8.6.14(storybook@10.3.6(@testing-library/dom@10.4.1)(prettier@2.8.8)(react-dom@19.2.6(react@19.2.6))(react@19.2.6))': + '@storybook/addon-outline@8.6.14(storybook@10.3.6(@testing-library/dom@10.4.1)(react-dom@19.2.6(react@19.2.6))(react@19.2.6))': dependencies: '@storybook/global': 5.0.0 - storybook: 10.3.6(@testing-library/dom@10.4.1)(prettier@2.8.8)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) + storybook: 10.3.6(@testing-library/dom@10.4.1)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) ts-dedent: 2.2.0 '@storybook/addon-outline@9.0.8': {} - '@storybook/addon-toolbars@8.6.14(storybook@10.3.6(@testing-library/dom@10.4.1)(prettier@2.8.8)(react-dom@19.2.6(react@19.2.6))(react@19.2.6))': + '@storybook/addon-toolbars@8.6.14(storybook@10.3.6(@testing-library/dom@10.4.1)(react-dom@19.2.6(react@19.2.6))(react@19.2.6))': dependencies: - storybook: 10.3.6(@testing-library/dom@10.4.1)(prettier@2.8.8)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) + storybook: 10.3.6(@testing-library/dom@10.4.1)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) - '@storybook/addon-viewport@8.6.14(storybook@10.3.6(@testing-library/dom@10.4.1)(prettier@2.8.8)(react-dom@19.2.6(react@19.2.6))(react@19.2.6))': + '@storybook/addon-viewport@8.6.14(storybook@10.3.6(@testing-library/dom@10.4.1)(react-dom@19.2.6(react@19.2.6))(react@19.2.6))': dependencies: memoizerific: 1.11.3 - storybook: 10.3.6(@testing-library/dom@10.4.1)(prettier@2.8.8)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) + storybook: 10.3.6(@testing-library/dom@10.4.1)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) '@storybook/addons@7.6.17(react-dom@19.2.6(react@19.2.6))(react@19.2.6)': dependencies: @@ -8341,21 +8144,21 @@ snapshots: - react - react-dom - '@storybook/blocks@8.6.14(react-dom@19.2.6(react@19.2.6))(react@19.2.6)(storybook@10.3.6(@testing-library/dom@10.4.1)(prettier@2.8.8)(react-dom@19.2.6(react@19.2.6))(react@19.2.6))': + '@storybook/blocks@8.6.14(react-dom@19.2.6(react@19.2.6))(react@19.2.6)(storybook@10.3.6(@testing-library/dom@10.4.1)(react-dom@19.2.6(react@19.2.6))(react@19.2.6))': dependencies: '@storybook/icons': 1.6.0(react-dom@19.2.6(react@19.2.6))(react@19.2.6) - storybook: 10.3.6(@testing-library/dom@10.4.1)(prettier@2.8.8)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) + storybook: 10.3.6(@testing-library/dom@10.4.1)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) ts-dedent: 2.2.0 optionalDependencies: react: 19.2.6 react-dom: 19.2.6(react@19.2.6) - '@storybook/builder-vite@10.3.6(rollup@4.60.0)(storybook@10.3.6(@testing-library/dom@10.4.1)(prettier@2.8.8)(react-dom@19.2.6(react@19.2.6))(react@19.2.6))(vite@8.0.11(@types/node@25.6.2)(terser@5.46.1)(yaml@2.7.0))(webpack@5.98.0)': + '@storybook/builder-vite@10.3.6(esbuild@0.27.2)(rollup@4.60.0)(storybook@10.3.6(@testing-library/dom@10.4.1)(react-dom@19.2.6(react@19.2.6))(react@19.2.6))(vite@8.0.11(@types/node@25.6.2)(esbuild@0.27.2)(yaml@2.7.0))': dependencies: - '@storybook/csf-plugin': 10.3.6(rollup@4.60.0)(storybook@10.3.6(@testing-library/dom@10.4.1)(prettier@2.8.8)(react-dom@19.2.6(react@19.2.6))(react@19.2.6))(vite@8.0.11(@types/node@25.6.2)(terser@5.46.1)(yaml@2.7.0))(webpack@5.98.0) - storybook: 10.3.6(@testing-library/dom@10.4.1)(prettier@2.8.8)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) + '@storybook/csf-plugin': 10.3.6(esbuild@0.27.2)(rollup@4.60.0)(storybook@10.3.6(@testing-library/dom@10.4.1)(react-dom@19.2.6(react@19.2.6))(react@19.2.6))(vite@8.0.11(@types/node@25.6.2)(esbuild@0.27.2)(yaml@2.7.0)) + storybook: 10.3.6(@testing-library/dom@10.4.1)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) ts-dedent: 2.2.0 - vite: 8.0.11(@types/node@25.6.2)(esbuild@0.27.2)(terser@5.46.1)(yaml@2.7.0) + vite: 8.0.11(@types/node@25.6.2)(esbuild@0.27.2)(yaml@2.7.0) transitivePeerDependencies: - esbuild - rollup @@ -8379,26 +8182,26 @@ snapshots: dependencies: '@storybook/global': 5.0.0 - '@storybook/client-logger@8.6.14(storybook@10.3.6(@testing-library/dom@10.4.1)(prettier@2.8.8)(react-dom@19.2.6(react@19.2.6))(react@19.2.6))': + '@storybook/client-logger@8.6.14(storybook@10.3.6(@testing-library/dom@10.4.1)(react-dom@19.2.6(react@19.2.6))(react@19.2.6))': dependencies: - storybook: 10.3.6(@testing-library/dom@10.4.1)(prettier@2.8.8)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) + storybook: 10.3.6(@testing-library/dom@10.4.1)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) '@storybook/core-events@7.6.17': dependencies: ts-dedent: 2.2.0 - '@storybook/csf-plugin@10.3.6(rollup@4.60.0)(storybook@10.3.6(@testing-library/dom@10.4.1)(prettier@2.8.8)(react-dom@19.2.6(react@19.2.6))(react@19.2.6))(vite@8.0.11(@types/node@25.6.2)(terser@5.46.1)(yaml@2.7.0))(webpack@5.98.0)': + '@storybook/csf-plugin@10.3.6(esbuild@0.27.2)(rollup@4.60.0)(storybook@10.3.6(@testing-library/dom@10.4.1)(react-dom@19.2.6(react@19.2.6))(react@19.2.6))(vite@8.0.11(@types/node@25.6.2)(esbuild@0.27.2)(yaml@2.7.0))': dependencies: - storybook: 10.3.6(@testing-library/dom@10.4.1)(prettier@2.8.8)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) + storybook: 10.3.6(@testing-library/dom@10.4.1)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) unplugin: 2.3.11 optionalDependencies: + esbuild: 0.27.2 rollup: 4.60.0 - vite: 8.0.11(@types/node@25.6.2)(esbuild@0.27.2)(terser@5.46.1)(yaml@2.7.0) - webpack: 5.98.0 + vite: 8.0.11(@types/node@25.6.2)(esbuild@0.27.2)(yaml@2.7.0) - '@storybook/csf-plugin@8.6.14(storybook@10.3.6(@testing-library/dom@10.4.1)(prettier@2.8.8)(react-dom@19.2.6(react@19.2.6))(react@19.2.6))': + '@storybook/csf-plugin@8.6.14(storybook@10.3.6(@testing-library/dom@10.4.1)(react-dom@19.2.6(react@19.2.6))(react@19.2.6))': dependencies: - storybook: 10.3.6(@testing-library/dom@10.4.1)(prettier@2.8.8)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) + storybook: 10.3.6(@testing-library/dom@10.4.1)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) unplugin: 1.16.1 '@storybook/csf@0.1.13': @@ -8417,11 +8220,11 @@ snapshots: react: 19.2.6 react-dom: 19.2.6(react@19.2.6) - '@storybook/instrumenter@8.6.14(storybook@10.3.6(@testing-library/dom@10.4.1)(prettier@2.8.8)(react-dom@19.2.6(react@19.2.6))(react@19.2.6))': + '@storybook/instrumenter@8.6.14(storybook@10.3.6(@testing-library/dom@10.4.1)(react-dom@19.2.6(react@19.2.6))(react@19.2.6))': dependencies: '@storybook/global': 5.0.0 '@vitest/utils': 2.1.9 - storybook: 10.3.6(@testing-library/dom@10.4.1)(prettier@2.8.8)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) + storybook: 10.3.6(@testing-library/dom@10.4.1)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) '@storybook/manager-api@7.6.17(react-dom@19.2.6(react@19.2.6))(react@19.2.6)': dependencies: @@ -8443,9 +8246,9 @@ snapshots: - react - react-dom - '@storybook/manager-api@8.6.14(storybook@10.3.6(@testing-library/dom@10.4.1)(prettier@2.8.8)(react-dom@19.2.6(react@19.2.6))(react@19.2.6))': + '@storybook/manager-api@8.6.14(storybook@10.3.6(@testing-library/dom@10.4.1)(react-dom@19.2.6(react@19.2.6))(react@19.2.6))': dependencies: - storybook: 10.3.6(@testing-library/dom@10.4.1)(prettier@2.8.8)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) + storybook: 10.3.6(@testing-library/dom@10.4.1)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) '@storybook/mcp@0.7.0(typescript@6.0.3)': dependencies: @@ -8457,9 +8260,9 @@ snapshots: - '@tmcp/auth' - typescript - '@storybook/node-logger@8.6.14(storybook@10.3.6(@testing-library/dom@10.4.1)(prettier@2.8.8)(react-dom@19.2.6(react@19.2.6))(react@19.2.6))': + '@storybook/node-logger@8.6.14(storybook@10.3.6(@testing-library/dom@10.4.1)(react-dom@19.2.6(react@19.2.6))(react@19.2.6))': dependencies: - storybook: 10.3.6(@testing-library/dom@10.4.1)(prettier@2.8.8)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) + storybook: 10.3.6(@testing-library/dom@10.4.1)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) '@storybook/preview-api@7.6.17': dependencies: @@ -8478,33 +8281,33 @@ snapshots: ts-dedent: 2.2.0 util-deprecate: 1.0.2 - '@storybook/react-dom-shim@10.3.6(react-dom@19.2.6(react@19.2.6))(react@19.2.6)(storybook@10.3.6(@testing-library/dom@10.4.1)(prettier@2.8.8)(react-dom@19.2.6(react@19.2.6))(react@19.2.6))': + '@storybook/react-dom-shim@10.3.6(react-dom@19.2.6(react@19.2.6))(react@19.2.6)(storybook@10.3.6(@testing-library/dom@10.4.1)(react-dom@19.2.6(react@19.2.6))(react@19.2.6))': dependencies: react: 19.2.6 react-dom: 19.2.6(react@19.2.6) - storybook: 10.3.6(@testing-library/dom@10.4.1)(prettier@2.8.8)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) + storybook: 10.3.6(@testing-library/dom@10.4.1)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) - '@storybook/react-dom-shim@8.6.14(react-dom@19.2.6(react@19.2.6))(react@19.2.6)(storybook@10.3.6(@testing-library/dom@10.4.1)(prettier@2.8.8)(react-dom@19.2.6(react@19.2.6))(react@19.2.6))': + '@storybook/react-dom-shim@8.6.14(react-dom@19.2.6(react@19.2.6))(react@19.2.6)(storybook@10.3.6(@testing-library/dom@10.4.1)(react-dom@19.2.6(react@19.2.6))(react@19.2.6))': dependencies: react: 19.2.6 react-dom: 19.2.6(react@19.2.6) - storybook: 10.3.6(@testing-library/dom@10.4.1)(prettier@2.8.8)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) + storybook: 10.3.6(@testing-library/dom@10.4.1)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) - '@storybook/react-vite@10.3.6(react-dom@19.2.6(react@19.2.6))(react@19.2.6)(rollup@4.60.0)(storybook@10.3.6(@testing-library/dom@10.4.1)(prettier@2.8.8)(react-dom@19.2.6(react@19.2.6))(react@19.2.6))(typescript@6.0.3)(vite@8.0.11(@types/node@25.6.2)(terser@5.46.1)(yaml@2.7.0))(webpack@5.98.0)': + '@storybook/react-vite@10.3.6(esbuild@0.27.2)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)(rollup@4.60.0)(storybook@10.3.6(@testing-library/dom@10.4.1)(react-dom@19.2.6(react@19.2.6))(react@19.2.6))(typescript@6.0.3)(vite@8.0.11(@types/node@25.6.2)(esbuild@0.27.2)(yaml@2.7.0))': dependencies: - '@joshwooding/vite-plugin-react-docgen-typescript': 0.7.0(typescript@6.0.3)(vite@8.0.11(@types/node@25.6.2)(terser@5.46.1)(yaml@2.7.0)) + '@joshwooding/vite-plugin-react-docgen-typescript': 0.7.0(typescript@6.0.3)(vite@8.0.11(@types/node@25.6.2)(esbuild@0.27.2)(yaml@2.7.0)) '@rollup/pluginutils': 5.3.0(rollup@4.60.0) - '@storybook/builder-vite': 10.3.6(rollup@4.60.0)(storybook@10.3.6(@testing-library/dom@10.4.1)(prettier@2.8.8)(react-dom@19.2.6(react@19.2.6))(react@19.2.6))(vite@8.0.11(@types/node@25.6.2)(terser@5.46.1)(yaml@2.7.0))(webpack@5.98.0) - '@storybook/react': 10.3.6(react-dom@19.2.6(react@19.2.6))(react@19.2.6)(storybook@10.3.6(@testing-library/dom@10.4.1)(prettier@2.8.8)(react-dom@19.2.6(react@19.2.6))(react@19.2.6))(typescript@6.0.3) + '@storybook/builder-vite': 10.3.6(esbuild@0.27.2)(rollup@4.60.0)(storybook@10.3.6(@testing-library/dom@10.4.1)(react-dom@19.2.6(react@19.2.6))(react@19.2.6))(vite@8.0.11(@types/node@25.6.2)(esbuild@0.27.2)(yaml@2.7.0)) + '@storybook/react': 10.3.6(react-dom@19.2.6(react@19.2.6))(react@19.2.6)(storybook@10.3.6(@testing-library/dom@10.4.1)(react-dom@19.2.6(react@19.2.6))(react@19.2.6))(typescript@6.0.3) empathic: 2.0.0 magic-string: 0.30.21 react: 19.2.6 react-docgen: 8.0.3 react-dom: 19.2.6(react@19.2.6) resolve: 1.22.11 - storybook: 10.3.6(@testing-library/dom@10.4.1)(prettier@2.8.8)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) + storybook: 10.3.6(@testing-library/dom@10.4.1)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) tsconfig-paths: 4.2.0 - vite: 8.0.11(@types/node@25.6.2)(esbuild@0.27.2)(terser@5.46.1)(yaml@2.7.0) + vite: 8.0.11(@types/node@25.6.2)(esbuild@0.27.2)(yaml@2.7.0) transitivePeerDependencies: - esbuild - rollup @@ -8512,15 +8315,15 @@ snapshots: - typescript - webpack - '@storybook/react@10.3.6(react-dom@19.2.6(react@19.2.6))(react@19.2.6)(storybook@10.3.6(@testing-library/dom@10.4.1)(prettier@2.8.8)(react-dom@19.2.6(react@19.2.6))(react@19.2.6))(typescript@6.0.3)': + '@storybook/react@10.3.6(react-dom@19.2.6(react@19.2.6))(react@19.2.6)(storybook@10.3.6(@testing-library/dom@10.4.1)(react-dom@19.2.6(react@19.2.6))(react@19.2.6))(typescript@6.0.3)': dependencies: '@storybook/global': 5.0.0 - '@storybook/react-dom-shim': 10.3.6(react-dom@19.2.6(react@19.2.6))(react@19.2.6)(storybook@10.3.6(@testing-library/dom@10.4.1)(prettier@2.8.8)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)) + '@storybook/react-dom-shim': 10.3.6(react-dom@19.2.6(react@19.2.6))(react@19.2.6)(storybook@10.3.6(@testing-library/dom@10.4.1)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)) react: 19.2.6 react-docgen: 8.0.3 react-docgen-typescript: 2.4.0(typescript@6.0.3) react-dom: 19.2.6(react@19.2.6) - storybook: 10.3.6(@testing-library/dom@10.4.1)(prettier@2.8.8)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) + storybook: 10.3.6(@testing-library/dom@10.4.1)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) optionalDependencies: typescript: 6.0.3 transitivePeerDependencies: @@ -8532,16 +8335,16 @@ snapshots: memoizerific: 1.11.3 qs: 6.14.0 - '@storybook/test@8.6.14(storybook@10.3.6(@testing-library/dom@10.4.1)(prettier@2.8.8)(react-dom@19.2.6(react@19.2.6))(react@19.2.6))': + '@storybook/test@8.6.14(storybook@10.3.6(@testing-library/dom@10.4.1)(react-dom@19.2.6(react@19.2.6))(react@19.2.6))': dependencies: '@storybook/global': 5.0.0 - '@storybook/instrumenter': 8.6.14(storybook@10.3.6(@testing-library/dom@10.4.1)(prettier@2.8.8)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)) + '@storybook/instrumenter': 8.6.14(storybook@10.3.6(@testing-library/dom@10.4.1)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)) '@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: 10.3.6(@testing-library/dom@10.4.1)(prettier@2.8.8)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) + storybook: 10.3.6(@testing-library/dom@10.4.1)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) '@storybook/testing-library@0.2.2': dependencies: @@ -8558,9 +8361,9 @@ snapshots: react: 19.2.6 react-dom: 19.2.6(react@19.2.6) - '@storybook/theming@8.6.14(storybook@10.3.6(@testing-library/dom@10.4.1)(prettier@2.8.8)(react-dom@19.2.6(react@19.2.6))(react@19.2.6))': + '@storybook/theming@8.6.14(storybook@10.3.6(@testing-library/dom@10.4.1)(react-dom@19.2.6(react@19.2.6))(react@19.2.6))': dependencies: - storybook: 10.3.6(@testing-library/dom@10.4.1)(prettier@2.8.8)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) + storybook: 10.3.6(@testing-library/dom@10.4.1)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) '@storybook/types@7.6.17': dependencies: @@ -8749,18 +8552,6 @@ snapshots: '@types/doctrine@0.0.9': {} - '@types/eslint-scope@3.7.7': - dependencies: - '@types/eslint': 9.6.1 - '@types/estree': 1.0.8 - optional: true - - '@types/eslint@9.6.1': - dependencies: - '@types/estree': 1.0.8 - '@types/json-schema': 7.0.15 - optional: true - '@types/estree@1.0.8': {} '@types/express-serve-static-core@4.19.6': @@ -8787,9 +8578,6 @@ snapshots: '@types/js-cookie@3.0.6': {} - '@types/json-schema@7.0.15': - optional: true - '@types/mdast@4.0.4': dependencies: '@types/unist': 3.0.3 @@ -8862,10 +8650,10 @@ snapshots: dependencies: valibot: 1.4.0(typescript@6.0.3) - '@vitejs/plugin-react@6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.11(@types/node@25.6.2)(esbuild@0.27.2)(terser@5.46.1)(yaml@2.7.0))': + '@vitejs/plugin-react@6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.11(@types/node@25.6.2)(esbuild@0.27.2)(yaml@2.7.0))': dependencies: '@rolldown/pluginutils': 1.0.0-rc.7 - vite: 8.0.11(@types/node@25.6.2)(esbuild@0.27.2)(terser@5.46.1)(yaml@2.7.0) + vite: 8.0.11(@types/node@25.6.2)(esbuild@0.27.2)(yaml@2.7.0) optionalDependencies: babel-plugin-react-compiler: 1.0.0 @@ -8881,7 +8669,7 @@ snapshots: obug: 2.1.1 std-env: 4.0.0 tinyrainbow: 3.1.0 - vitest: 4.1.5(@types/node@25.6.2)(@vitest/coverage-v8@4.1.5)(jsdom@29.1.1)(msw@2.14.5(@types/node@25.6.2)(typescript@6.0.3))(vite@8.0.11(@types/node@25.6.2)(esbuild@0.27.2)(terser@5.46.1)(yaml@2.7.0)) + vitest: 4.1.5(@types/node@25.6.2)(@vitest/coverage-v8@4.1.5)(jsdom@29.1.1)(msw@2.14.5(@types/node@25.6.2)(typescript@6.0.3))(vite@8.0.11(@types/node@25.6.2)(esbuild@0.27.2)(yaml@2.7.0)) '@vitest/expect@2.0.5': dependencies: @@ -8907,14 +8695,14 @@ snapshots: chai: 6.2.2 tinyrainbow: 3.1.0 - '@vitest/mocker@4.1.5(msw@2.14.5(@types/node@25.6.2)(typescript@6.0.3))(vite@8.0.11(@types/node@25.6.2)(esbuild@0.27.2)(terser@5.46.1)(yaml@2.7.0))': + '@vitest/mocker@4.1.5(msw@2.14.5(@types/node@25.6.2)(typescript@6.0.3))(vite@8.0.11(@types/node@25.6.2)(esbuild@0.27.2)(yaml@2.7.0))': dependencies: '@vitest/spy': 4.1.5 estree-walker: 3.0.3 magic-string: 0.30.21 optionalDependencies: msw: 2.14.5(@types/node@25.6.2)(typescript@6.0.3) - vite: 8.0.11(@types/node@25.6.2)(esbuild@0.27.2)(terser@5.46.1)(yaml@2.7.0) + vite: 8.0.11(@types/node@25.6.2)(esbuild@0.27.2)(yaml@2.7.0) '@vitest/pretty-format@2.0.5': dependencies: @@ -8979,105 +8767,8 @@ snapshots: convert-source-map: 2.0.0 tinyrainbow: 3.1.0 - '@webassemblyjs/ast@1.14.1': - dependencies: - '@webassemblyjs/helper-numbers': 1.13.2 - '@webassemblyjs/helper-wasm-bytecode': 1.13.2 - optional: true - - '@webassemblyjs/floating-point-hex-parser@1.13.2': - optional: true - - '@webassemblyjs/helper-api-error@1.13.2': - optional: true - - '@webassemblyjs/helper-buffer@1.14.1': - optional: true - - '@webassemblyjs/helper-numbers@1.13.2': - dependencies: - '@webassemblyjs/floating-point-hex-parser': 1.13.2 - '@webassemblyjs/helper-api-error': 1.13.2 - '@xtuc/long': 4.2.2 - optional: true - - '@webassemblyjs/helper-wasm-bytecode@1.13.2': - optional: true - - '@webassemblyjs/helper-wasm-section@1.14.1': - dependencies: - '@webassemblyjs/ast': 1.14.1 - '@webassemblyjs/helper-buffer': 1.14.1 - '@webassemblyjs/helper-wasm-bytecode': 1.13.2 - '@webassemblyjs/wasm-gen': 1.14.1 - optional: true - - '@webassemblyjs/ieee754@1.13.2': - dependencies: - '@xtuc/ieee754': 1.2.0 - optional: true - - '@webassemblyjs/leb128@1.13.2': - dependencies: - '@xtuc/long': 4.2.2 - optional: true - - '@webassemblyjs/utf8@1.13.2': - optional: true - - '@webassemblyjs/wasm-edit@1.14.1': - dependencies: - '@webassemblyjs/ast': 1.14.1 - '@webassemblyjs/helper-buffer': 1.14.1 - '@webassemblyjs/helper-wasm-bytecode': 1.13.2 - '@webassemblyjs/helper-wasm-section': 1.14.1 - '@webassemblyjs/wasm-gen': 1.14.1 - '@webassemblyjs/wasm-opt': 1.14.1 - '@webassemblyjs/wasm-parser': 1.14.1 - '@webassemblyjs/wast-printer': 1.14.1 - optional: true - - '@webassemblyjs/wasm-gen@1.14.1': - dependencies: - '@webassemblyjs/ast': 1.14.1 - '@webassemblyjs/helper-wasm-bytecode': 1.13.2 - '@webassemblyjs/ieee754': 1.13.2 - '@webassemblyjs/leb128': 1.13.2 - '@webassemblyjs/utf8': 1.13.2 - optional: true - - '@webassemblyjs/wasm-opt@1.14.1': - dependencies: - '@webassemblyjs/ast': 1.14.1 - '@webassemblyjs/helper-buffer': 1.14.1 - '@webassemblyjs/wasm-gen': 1.14.1 - '@webassemblyjs/wasm-parser': 1.14.1 - optional: true - - '@webassemblyjs/wasm-parser@1.14.1': - dependencies: - '@webassemblyjs/ast': 1.14.1 - '@webassemblyjs/helper-api-error': 1.13.2 - '@webassemblyjs/helper-wasm-bytecode': 1.13.2 - '@webassemblyjs/ieee754': 1.13.2 - '@webassemblyjs/leb128': 1.13.2 - '@webassemblyjs/utf8': 1.13.2 - optional: true - - '@webassemblyjs/wast-printer@1.14.1': - dependencies: - '@webassemblyjs/ast': 1.14.1 - '@xtuc/long': 4.2.2 - optional: true - '@webcontainer/env@1.1.1': {} - '@xtuc/ieee754@1.2.0': - optional: true - - '@xtuc/long@4.2.2': - optional: true - '@yarnpkg/lockfile@1.1.0': {} '@yarnpkg/parsers@3.0.2': @@ -9111,25 +8802,6 @@ snapshots: clean-stack: 2.2.0 indent-string: 4.0.0 - ajv-formats@2.1.1(ajv@8.18.0): - optionalDependencies: - ajv: 8.18.0 - optional: true - - ajv-keywords@5.1.0(ajv@8.18.0): - dependencies: - ajv: 8.18.0 - fast-deep-equal: 3.1.3 - optional: true - - ajv@8.18.0: - dependencies: - fast-deep-equal: 3.1.3 - fast-uri: 3.1.0 - json-schema-traverse: 1.0.0 - require-from-string: 2.0.2 - optional: true - ansi-colors@4.1.3: {} ansi-escapes@7.2.0: @@ -9203,12 +8875,10 @@ snapshots: transitivePeerDependencies: - debug - babel-loader@10.1.1(@babel/core@7.29.0)(webpack@5.98.0): + babel-loader@10.1.1(@babel/core@7.29.0): dependencies: '@babel/core': 7.29.0 find-up: 5.0.0 - optionalDependencies: - webpack: 5.98.0 babel-plugin-polyfill-corejs2@0.4.17(@babel/core@7.29.0): dependencies: @@ -9415,9 +9085,6 @@ snapshots: chromatic@13.3.4: {} - chrome-trace-event@1.0.4: - optional: true - ci-info@3.9.0: {} ci-info@4.3.1: {} @@ -9490,9 +9157,6 @@ snapshots: commander@10.0.1: {} - commander@2.20.3: - optional: true - commander@4.1.1: {} common-ancestor-path@1.0.1: {} @@ -9754,12 +9418,6 @@ snapshots: dependencies: once: 1.4.0 - enhanced-resolve@5.20.1: - dependencies: - graceful-fs: 4.2.11 - tapable: 2.3.2 - optional: true - enquirer@2.3.6: dependencies: ansi-colors: 4.1.3 @@ -9799,9 +9457,6 @@ snapshots: isarray: 2.0.5 stop-iteration-iterator: 1.1.0 - es-module-lexer@1.7.0: - optional: true - es-module-lexer@2.0.0: {} es-object-atoms@1.1.1: @@ -9879,27 +9534,10 @@ snapshots: escape-string-regexp@5.0.0: {} - eslint-scope@5.1.1: - dependencies: - esrecurse: 4.3.0 - estraverse: 4.3.0 - optional: true - esm-env@1.2.2: {} esprima@4.0.1: {} - esrecurse@4.3.0: - dependencies: - estraverse: 5.3.0 - optional: true - - estraverse@4.3.0: - optional: true - - estraverse@5.3.0: - optional: true - estree-walker@2.0.2: {} estree-walker@3.0.3: @@ -9910,9 +9548,6 @@ snapshots: eventemitter3@4.0.7: {} - events@3.3.0: - optional: true - execa@5.0.0: dependencies: cross-spawn: 7.0.6 @@ -9931,18 +9566,12 @@ snapshots: extend@3.0.2: {} - fast-deep-equal@3.1.3: - optional: true - fast-string-truncated-width@3.0.3: {} fast-string-width@3.0.2: dependencies: fast-string-truncated-width: 3.0.3 - fast-uri@3.1.0: - optional: true - fast-wrap-ansi@0.2.0: dependencies: fast-string-width: 3.0.2 @@ -10118,9 +9747,6 @@ snapshots: dependencies: is-glob: 4.0.3 - glob-to-regexp@0.4.1: - optional: true - glob@11.1.0: dependencies: foreground-child: 3.3.1 @@ -10464,13 +10090,6 @@ snapshots: chalk: 4.1.2 pretty-format: 30.2.0 - jest-worker@27.5.1: - dependencies: - '@types/node': 25.6.2 - merge-stream: 2.0.0 - supports-color: 8.1.1 - optional: true - joycon@3.1.1: {} js-cookie@3.0.5: {} @@ -10528,9 +10147,6 @@ snapshots: json-rpc-2.0@1.7.1: {} - json-schema-traverse@1.0.0: - optional: true - json-stringify-nice@1.1.4: {} json-stringify-safe@5.0.1: {} @@ -10722,9 +10338,6 @@ snapshots: load-tsconfig@0.2.5: {} - loader-runner@4.3.1: - optional: true - locate-path@2.0.0: dependencies: p-locate: 2.0.0 @@ -11708,9 +11321,6 @@ snapshots: preact@10.29.1: {} - prettier@2.8.8: - optional: true - pretty-format@27.5.1: dependencies: ansi-regex: 5.0.1 @@ -12048,14 +11658,6 @@ snapshots: scheduler@0.27.0: {} - schema-utils@4.3.3: - dependencies: - '@types/json-schema': 7.0.15 - ajv: 8.18.0 - ajv-formats: 2.1.1(ajv@8.18.0) - ajv-keywords: 5.1.0(ajv@8.18.0) - optional: true - semver@5.7.2: {} semver@6.3.1: {} @@ -12156,12 +11758,6 @@ snapshots: source-map-js@1.2.1: {} - source-map-support@0.5.21: - dependencies: - buffer-from: 1.1.2 - source-map: 0.6.1 - optional: true - source-map@0.6.1: {} source-map@0.7.6: {} @@ -12215,7 +11811,7 @@ snapshots: store2@2.14.4: {} - storybook@10.3.6(@testing-library/dom@10.4.1)(prettier@2.8.8)(react-dom@19.2.6(react@19.2.6))(react@19.2.6): + storybook@10.3.6(@testing-library/dom@10.4.1)(react-dom@19.2.6(react@19.2.6))(react@19.2.6): dependencies: '@storybook/global': 5.0.0 '@storybook/icons': 2.0.2(react-dom@19.2.6(react@19.2.6))(react@19.2.6) @@ -12230,8 +11826,6 @@ snapshots: semver: 7.7.4 use-sync-external-store: 1.6.0(react@19.2.6) ws: 8.20.0 - optionalDependencies: - prettier: 2.8.8 transitivePeerDependencies: - '@testing-library/dom' - bufferutil @@ -12295,11 +11889,6 @@ snapshots: dependencies: has-flag: 4.0.0 - supports-color@8.1.1: - dependencies: - has-flag: 4.0.0 - optional: true - supports-hyperlinks@3.2.0: dependencies: has-flag: 4.0.0 @@ -12319,9 +11908,6 @@ snapshots: tagged-tag@1.0.0: {} - tapable@2.3.2: - optional: true - tar-stream@2.2.0: dependencies: bl: 4.1.0 @@ -12342,23 +11928,6 @@ snapshots: dependencies: memoizerific: 1.11.3 - terser-webpack-plugin@5.4.0(webpack@5.98.0): - dependencies: - '@jridgewell/trace-mapping': 0.3.31 - jest-worker: 27.5.1 - schema-utils: 4.3.3 - terser: 5.46.1 - webpack: 5.98.0 - optional: true - - terser@5.46.1: - dependencies: - '@jridgewell/source-map': 0.3.11 - acorn: 8.16.0 - commander: 2.20.3 - source-map-support: 0.5.21 - optional: true - text-extensions@1.9.0: {} thenify-all@1.6.0: @@ -12635,17 +12204,17 @@ snapshots: '@types/unist': 3.0.3 vfile-message: 4.0.3 - vite-tsconfig-paths@6.1.1(typescript@6.0.3)(vite@8.0.11(@types/node@25.6.2)(terser@5.46.1)(yaml@2.7.0)): + vite-tsconfig-paths@6.1.1(typescript@6.0.3)(vite@8.0.11(@types/node@25.6.2)(esbuild@0.27.2)(yaml@2.7.0)): dependencies: debug: 4.4.3 globrex: 0.1.2 tsconfck: 3.1.5(typescript@6.0.3) - vite: 8.0.11(@types/node@25.6.2)(esbuild@0.27.2)(terser@5.46.1)(yaml@2.7.0) + vite: 8.0.11(@types/node@25.6.2)(esbuild@0.27.2)(yaml@2.7.0) transitivePeerDependencies: - supports-color - typescript - vite@8.0.11(@types/node@25.6.2)(esbuild@0.27.2)(terser@5.46.1)(yaml@2.7.0): + vite@8.0.11(@types/node@25.6.2)(esbuild@0.27.2)(yaml@2.7.0): dependencies: lightningcss: 1.32.0 picomatch: 4.0.4 @@ -12656,13 +12225,12 @@ snapshots: '@types/node': 25.6.2 esbuild: 0.27.2 fsevents: 2.3.3 - terser: 5.46.1 yaml: 2.7.0 - vitest@4.1.5(@types/node@25.6.2)(@vitest/coverage-v8@4.1.5)(jsdom@29.1.1)(msw@2.14.5(@types/node@25.6.2)(typescript@6.0.3))(vite@8.0.11(@types/node@25.6.2)(esbuild@0.27.2)(terser@5.46.1)(yaml@2.7.0)): + vitest@4.1.5(@types/node@25.6.2)(@vitest/coverage-v8@4.1.5)(jsdom@29.1.1)(msw@2.14.5(@types/node@25.6.2)(typescript@6.0.3))(vite@8.0.11(@types/node@25.6.2)(esbuild@0.27.2)(yaml@2.7.0)): dependencies: '@vitest/expect': 4.1.5 - '@vitest/mocker': 4.1.5(msw@2.14.5(@types/node@25.6.2)(typescript@6.0.3))(vite@8.0.11(@types/node@25.6.2)(esbuild@0.27.2)(terser@5.46.1)(yaml@2.7.0)) + '@vitest/mocker': 4.1.5(msw@2.14.5(@types/node@25.6.2)(typescript@6.0.3))(vite@8.0.11(@types/node@25.6.2)(esbuild@0.27.2)(yaml@2.7.0)) '@vitest/pretty-format': 4.1.5 '@vitest/runner': 4.1.5 '@vitest/snapshot': 4.1.5 @@ -12679,7 +12247,7 @@ snapshots: tinyexec: 1.0.2 tinyglobby: 0.2.15 tinyrainbow: 3.1.0 - vite: 8.0.11(@types/node@25.6.2)(esbuild@0.27.2)(terser@5.46.1)(yaml@2.7.0) + vite: 8.0.11(@types/node@25.6.2)(esbuild@0.27.2)(yaml@2.7.0) why-is-node-running: 2.3.0 optionalDependencies: '@types/node': 25.6.2 @@ -12694,54 +12262,14 @@ snapshots: walk-up-path@4.0.0: {} - watchpack@2.5.1: - dependencies: - glob-to-regexp: 0.4.1 - graceful-fs: 4.2.11 - optional: true - wcwidth@1.0.1: dependencies: defaults: 1.0.4 webidl-conversions@8.0.1: {} - webpack-sources@3.3.4: - optional: true - webpack-virtual-modules@0.6.2: {} - webpack@5.98.0: - dependencies: - '@types/eslint-scope': 3.7.7 - '@types/estree': 1.0.8 - '@webassemblyjs/ast': 1.14.1 - '@webassemblyjs/wasm-edit': 1.14.1 - '@webassemblyjs/wasm-parser': 1.14.1 - acorn: 8.16.0 - browserslist: 4.28.1 - chrome-trace-event: 1.0.4 - enhanced-resolve: 5.20.1 - es-module-lexer: 1.7.0 - eslint-scope: 5.1.1 - events: 3.3.0 - glob-to-regexp: 0.4.1 - graceful-fs: 4.2.11 - json-parse-even-better-errors: 2.3.1 - loader-runner: 4.3.1 - mime-types: 2.1.35 - neo-async: 2.6.2 - schema-utils: 4.3.3 - tapable: 2.3.2 - terser-webpack-plugin: 5.4.0(webpack@5.98.0) - watchpack: 2.5.1 - webpack-sources: 3.3.4 - transitivePeerDependencies: - - '@swc/core' - - esbuild - - uglify-js - optional: true - whatwg-mimetype@5.0.0: {} whatwg-url@16.0.1: diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index 35650542a..94e9a22a4 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -1,6 +1,12 @@ packages: - packages/* +allowBuilds: + esbuild: true + iframe-resizer: true + msw: true + nx: true + onlyBuiltDependencies: - esbuild - iframe-resizer @@ -8,4 +14,18 @@ onlyBuiltDependencies: - nx overrides: - esbuild@<=0.24.2: '>=0.25.0' + tar: '>=7.5.11' + rollup: '>=4.59.0' + '@isaacs/brace-expansion@<=5.0.0': '>=5.0.1' + 'axios@>=1.0.0 <=1.7.7': '>=1.13.5' + 'minimatch@<3.1.4': '>=3.1.4' + 'minimatch@>=5.0.0 <5.1.8': '>=5.1.8' + 'minimatch@>=9.0.0 <9.0.7': '>=9.0.7' + 'minimatch@>=10.0.0 <10.2.3': '>=10.2.3' + 'ajv@>=7.0.0-alpha.0 <8.18.0': '>=8.18.0' + 'esbuild@<=0.24.2': '>=0.25.0' + 'picomatch@<2.3.2': '>=2.3.2' + 'picomatch@>=4.0.0 <4.0.4': '>=4.0.4' + 'storybook@>=10.0.0-beta.0 <10.3.6': '>=10.3.6' + '@storybook/builder-vite': '>=10.3.6' + 'valibot@>=1.0.0 <1.3.0': '>=1.3.0'