diff --git a/apps/docs/content/docs/components/actions/button/index.mdx b/apps/docs/content/docs/components/actions/button/index.mdx index 4d99350d..6f6f832e 100644 --- a/apps/docs/content/docs/components/actions/button/index.mdx +++ b/apps/docs/content/docs/components/actions/button/index.mdx @@ -6,11 +6,11 @@ description: A labelled control for actions in an interface. `Button` triggers an action, such as saving a form, opening a dialog, or deleting an item. Use [`Link`](/components/actions/link) when the interaction takes someone to another URL or route. -```tsx -import { Button } from '@luke-ui/react/button'; - -; -``` + ## Appearance diff --git a/apps/docs/content/docs/components/actions/icon-button/index.mdx b/apps/docs/content/docs/components/actions/icon-button/index.mdx index b8a01242..7f12b5d3 100644 --- a/apps/docs/content/docs/components/actions/icon-button/index.mdx +++ b/apps/docs/content/docs/components/actions/icon-button/index.mdx @@ -6,11 +6,11 @@ description: A compact icon-only control for an action. `IconButton` triggers a familiar compact action, such as closing a panel, deleting a row, or adding an item. Give every icon button an accessible name because it has no visible label. -```tsx -import { IconButton } from '@luke-ui/react/icon-button'; - -; -``` + ## Accessibility diff --git a/apps/docs/content/docs/components/actions/link/index.mdx b/apps/docs/content/docs/components/actions/link/index.mdx index 9b20289d..5b4508f9 100644 --- a/apps/docs/content/docs/components/actions/link/index.mdx +++ b/apps/docs/content/docs/components/actions/link/index.mdx @@ -6,11 +6,7 @@ description: A styled link for inline and standalone navigation. `Link` navigates to another URL or route. Use [`Button`](/components/actions/button) for an action such as saving, submitting, or opening a dialog. -```tsx -import { Link } from '@luke-ui/react/link'; - -Help centre; -``` + ## Tone diff --git a/apps/docs/content/docs/components/feedback/loading-skeleton/index.mdx b/apps/docs/content/docs/components/feedback/loading-skeleton/index.mdx index 9371818e..5e89dc19 100644 --- a/apps/docs/content/docs/components/feedback/loading-skeleton/index.mdx +++ b/apps/docs/content/docs/components/feedback/loading-skeleton/index.mdx @@ -7,18 +7,13 @@ Use `LoadingSkeleton` when content is loading but its layout is known. Wrap the appear so the placeholder occupies the same space. -## With text - -Wrap text itself, rather than its parent. The placeholder then follows each line of text. If you -wrap the parent element, the skeleton covers the whole block instead. - -This matters most for copy that wraps across several lines. `LoadingSkeleton` renders non-element -children inline, so it follows the text without changing the line layout. +Wrap text itself, rather than its parent, when it can span several lines. The placeholder then +follows each line without changing the layout. ## With components diff --git a/apps/docs/content/docs/components/layout/box/index.mdx b/apps/docs/content/docs/components/layout/box/index.mdx index 9e033682..bbd49f18 100644 --- a/apps/docs/content/docs/components/layout/box/index.mdx +++ b/apps/docs/content/docs/components/layout/box/index.mdx @@ -8,9 +8,9 @@ token spacing, constrain an element's size, or control a flex or grid child. Use no supported layout property is needed. ## Layout properties @@ -33,6 +33,12 @@ to the writing direction without left and right variants. Pass a direct value when it does not change. Use an object keyed by breakpoint when it does. Values cascade upward from `xsmall`, so only specify the changes. + + ```tsx - Save -; -``` + ## Composition diff --git a/apps/docs/content/docs/components/primitives/combobox/index.mdx b/apps/docs/content/docs/components/primitives/combobox/index.mdx index dc2fed9d..c469411d 100644 --- a/apps/docs/content/docs/components/primitives/combobox/index.mdx +++ b/apps/docs/content/docs/components/primitives/combobox/index.mdx @@ -7,17 +7,11 @@ Use these primitives when [`ComboboxField`](/components/forms/combobox-field) do layout or loading UI. They expose the control, popover, listbox, and option parts used by the composed field. Application code should usually use `ComboboxField`. -```tsx -import { - ComboboxControl, - ComboboxItem, - ComboboxListBox, - ComboboxPopover, - ComboboxRoot, - ComboboxTextInput, - ComboboxTrigger, -} from '@luke-ui/react/combobox-field/primitive'; -``` + ## Anatomy diff --git a/apps/docs/content/docs/components/primitives/field/index.mdx b/apps/docs/content/docs/components/primitives/field/index.mdx index f6e0953f..9d384828 100644 --- a/apps/docs/content/docs/components/primitives/field/index.mdx +++ b/apps/docs/content/docs/components/primitives/field/index.mdx @@ -7,21 +7,17 @@ Use the field primitives to build a custom field with Luke UI labels, descriptio messages. Application code should usually use a composed field such as [`TextField`](/components/forms/text-field) or [`ComboboxField`](/components/forms/combobox-field). -```tsx -import { Field, FieldDescription, FieldError, FieldLabel } from '@luke-ui/react/field/primitive'; -``` + ## Anatomy `Field` arranges a label, your control, an optional description, and a validation message. Pass `label`, `description`, and `errorMessage` to use its standard slots. -```tsx - - - -``` - For a custom structure, use `FieldLabel`, `FieldDescription`, and `FieldError` with the field control. Keep their relationship to the control intact so React Aria can expose the label, description, and error semantics. diff --git a/apps/docs/content/docs/components/primitives/text-input/index.mdx b/apps/docs/content/docs/components/primitives/text-input/index.mdx index 12304d11..09ea41b6 100644 --- a/apps/docs/content/docs/components/primitives/text-input/index.mdx +++ b/apps/docs/content/docs/components/primitives/text-input/index.mdx @@ -7,11 +7,11 @@ Use `TextInput` to build a custom text field when you need the styled input with description, or error slots. For most application forms, use [`TextField`](/components/forms/text-field). -```tsx -import { TextInput } from '@luke-ui/react/text-field/primitive'; - -; -``` + ## Size diff --git a/apps/docs/content/docs/components/typography/blockquote/index.mdx b/apps/docs/content/docs/components/typography/blockquote/index.mdx new file mode 100644 index 00000000..5097c25f --- /dev/null +++ b/apps/docs/content/docs/components/typography/blockquote/index.mdx @@ -0,0 +1,48 @@ +--- +title: Blockquote +description: Block-level quotation from another source. +--- + + + +This component is based on the `blockquote` element and supports text size, font weight, and line +clamping. + +## Size + +Use the `size` prop to control text size. + + + +## Font weight + +Use the `fontWeight` prop to set the semantic font-weight role. + + + +## Line clamp + +Use the `lineClamp` prop to truncate text with an ellipsis when it overflows its container. + + + +## Accessibility + +Uses the native `
` element, which conveys block-level quotation semantics to assistive +technologies. For short inline quotations use `Quote` instead. diff --git a/apps/docs/content/docs/components/typography/blockquote/meta.json b/apps/docs/content/docs/components/typography/blockquote/meta.json new file mode 100644 index 00000000..09b84500 --- /dev/null +++ b/apps/docs/content/docs/components/typography/blockquote/meta.json @@ -0,0 +1,4 @@ +{ + "pages": ["!props"], + "collapsible": false +} diff --git a/apps/docs/content/docs/components/typography/blockquote/props.mdx b/apps/docs/content/docs/components/typography/blockquote/props.mdx new file mode 100644 index 00000000..6b1081a5 --- /dev/null +++ b/apps/docs/content/docs/components/typography/blockquote/props.mdx @@ -0,0 +1,8 @@ +--- +title: Blockquote +description: Blockquote component. +--- + +## Props + + diff --git a/apps/docs/content/docs/components/typography/code/index.mdx b/apps/docs/content/docs/components/typography/code/index.mdx new file mode 100644 index 00000000..ad77a602 --- /dev/null +++ b/apps/docs/content/docs/components/typography/code/index.mdx @@ -0,0 +1,22 @@ +--- +title: Code +description: Marks text to signify a short fragment of computer code. +--- + +This component is based on the `code` element. + + + +## In context + +`Code` renders as an inline element, so it sits naturally inside a sentence. + + + +## Accessibility + +Uses the native `` element, which conveys code semantics to assistive technologies. diff --git a/apps/docs/content/docs/components/typography/code/meta.json b/apps/docs/content/docs/components/typography/code/meta.json new file mode 100644 index 00000000..09b84500 --- /dev/null +++ b/apps/docs/content/docs/components/typography/code/meta.json @@ -0,0 +1,4 @@ +{ + "pages": ["!props"], + "collapsible": false +} diff --git a/apps/docs/content/docs/components/typography/code/props.mdx b/apps/docs/content/docs/components/typography/code/props.mdx new file mode 100644 index 00000000..b5d9bf65 --- /dev/null +++ b/apps/docs/content/docs/components/typography/code/props.mdx @@ -0,0 +1,8 @@ +--- +title: Code +description: Code component. +--- + +## Props + + diff --git a/apps/docs/content/docs/components/typography/em/index.mdx b/apps/docs/content/docs/components/typography/em/index.mdx new file mode 100644 index 00000000..dfe5ee18 --- /dev/null +++ b/apps/docs/content/docs/components/typography/em/index.mdx @@ -0,0 +1,15 @@ +--- +title: Em +description: Marks text to stress emphasis. +--- + + + +`Em` composes `Text` as a native `em` element while keeping a lean native public API. It stays +inline, inherits typography from the surrounding text, applies italic styling, and skips Capsize +trim by default. Use `textWrap` to control wrapping or `lineClamp` to constrain longer emphasis. + +## Accessibility + +Uses the native `` element, which conveys emphasis to assistive technologies. Avoid using `Em` +solely for visual italic styling — use `` instead. diff --git a/apps/docs/content/docs/components/typography/em/meta.json b/apps/docs/content/docs/components/typography/em/meta.json new file mode 100644 index 00000000..09b84500 --- /dev/null +++ b/apps/docs/content/docs/components/typography/em/meta.json @@ -0,0 +1,4 @@ +{ + "pages": ["!props"], + "collapsible": false +} diff --git a/apps/docs/content/docs/components/typography/em/props.mdx b/apps/docs/content/docs/components/typography/em/props.mdx new file mode 100644 index 00000000..6495d228 --- /dev/null +++ b/apps/docs/content/docs/components/typography/em/props.mdx @@ -0,0 +1,8 @@ +--- +title: Em +description: Em component. +--- + +## Props + + diff --git a/apps/docs/content/docs/components/typography/heading/index.mdx b/apps/docs/content/docs/components/typography/heading/index.mdx index fe4b66c8..c4f25c3e 100644 --- a/apps/docs/content/docs/components/typography/heading/index.mdx +++ b/apps/docs/content/docs/components/typography/heading/index.mdx @@ -6,9 +6,11 @@ description: Semantic heading with automatic level management. `Heading` renders a semantic section heading. It reads its level from `HeadingLevels` context, or you can set `level` directly. -```tsx -Section title -``` + ## Heading level diff --git a/apps/docs/content/docs/components/typography/kbd/index.mdx b/apps/docs/content/docs/components/typography/kbd/index.mdx new file mode 100644 index 00000000..66ccee16 --- /dev/null +++ b/apps/docs/content/docs/components/typography/kbd/index.mdx @@ -0,0 +1,16 @@ +--- +title: Kbd +description: Represents keyboard input or a hotkey. +--- + + + +`Kbd` is based on the native `kbd` element and uses the fixed code font family. + +## Accessibility + +Uses the native `` element, which conveys keyboard-input semantics to assistive technologies. diff --git a/apps/docs/content/docs/components/typography/kbd/meta.json b/apps/docs/content/docs/components/typography/kbd/meta.json new file mode 100644 index 00000000..09b84500 --- /dev/null +++ b/apps/docs/content/docs/components/typography/kbd/meta.json @@ -0,0 +1,4 @@ +{ + "pages": ["!props"], + "collapsible": false +} diff --git a/apps/docs/content/docs/components/typography/kbd/props.mdx b/apps/docs/content/docs/components/typography/kbd/props.mdx new file mode 100644 index 00000000..17ad73ae --- /dev/null +++ b/apps/docs/content/docs/components/typography/kbd/props.mdx @@ -0,0 +1,8 @@ +--- +title: Kbd +description: Kbd component. +--- + +## Props + + diff --git a/apps/docs/content/docs/components/typography/meta.json b/apps/docs/content/docs/components/typography/meta.json index e2df3706..bb2eeba2 100644 --- a/apps/docs/content/docs/components/typography/meta.json +++ b/apps/docs/content/docs/components/typography/meta.json @@ -1,4 +1,15 @@ { "title": "Typography", - "pages": ["emoji", "heading", "numeral", "text"] + "pages": [ + "blockquote", + "code", + "em", + "emoji", + "heading", + "kbd", + "numeral", + "quote", + "strong", + "text" + ] } diff --git a/apps/docs/content/docs/components/typography/quote/index.mdx b/apps/docs/content/docs/components/typography/quote/index.mdx new file mode 100644 index 00000000..e6f78009 --- /dev/null +++ b/apps/docs/content/docs/components/typography/quote/index.mdx @@ -0,0 +1,21 @@ +--- +title: Quote +description: Short inline quotation. +--- + + + +`Quote` composes `Text` as a native `q` element while keeping a lean native public API. It stays +inline, inherits surrounding typography, skips Capsize trim by default, and receives automatic +quotation marks from the browser. Use `textWrap` to control wrapping or `lineClamp` to constrain a +longer quotation. + +## Accessibility + +Uses the native `` element, which conveys quotation semantics to assistive technologies. The +`cite` attribute lets screen readers present the source URL when supported. For block-length +quotations use `Blockquote` instead. diff --git a/apps/docs/content/docs/components/typography/quote/meta.json b/apps/docs/content/docs/components/typography/quote/meta.json new file mode 100644 index 00000000..09b84500 --- /dev/null +++ b/apps/docs/content/docs/components/typography/quote/meta.json @@ -0,0 +1,4 @@ +{ + "pages": ["!props"], + "collapsible": false +} diff --git a/apps/docs/content/docs/components/typography/quote/props.mdx b/apps/docs/content/docs/components/typography/quote/props.mdx new file mode 100644 index 00000000..1daac6d2 --- /dev/null +++ b/apps/docs/content/docs/components/typography/quote/props.mdx @@ -0,0 +1,8 @@ +--- +title: Quote +description: Quote component. +--- + +## Props + + diff --git a/apps/docs/content/docs/components/typography/strong/index.mdx b/apps/docs/content/docs/components/typography/strong/index.mdx new file mode 100644 index 00000000..4270c821 --- /dev/null +++ b/apps/docs/content/docs/components/typography/strong/index.mdx @@ -0,0 +1,20 @@ +--- +title: Strong +description: Marks text to signify strong importance. +--- + + + +`Strong` composes `Text` as a native `strong` element while keeping a lean native public API. It +stays inline, inherits surrounding typography, skips Capsize trim by default, and uses the theme's +emphasis font weight. Use `textWrap` to control wrapping or `lineClamp` to constrain longer +important text. + +## Accessibility + +Uses the native `` element, which conveys strong importance to assistive technologies. Avoid +using `Strong` solely for visual bold styling — use `` instead. diff --git a/apps/docs/content/docs/components/typography/strong/meta.json b/apps/docs/content/docs/components/typography/strong/meta.json new file mode 100644 index 00000000..09b84500 --- /dev/null +++ b/apps/docs/content/docs/components/typography/strong/meta.json @@ -0,0 +1,4 @@ +{ + "pages": ["!props"], + "collapsible": false +} diff --git a/apps/docs/content/docs/components/typography/strong/props.mdx b/apps/docs/content/docs/components/typography/strong/props.mdx new file mode 100644 index 00000000..5a585112 --- /dev/null +++ b/apps/docs/content/docs/components/typography/strong/props.mdx @@ -0,0 +1,8 @@ +--- +title: Strong +description: Strong component. +--- + +## Props + + diff --git a/apps/docs/content/docs/components/typography/text/index.mdx b/apps/docs/content/docs/components/typography/text/index.mdx index 1be12533..e99060e8 100644 --- a/apps/docs/content/docs/components/typography/text/index.mdx +++ b/apps/docs/content/docs/components/typography/text/index.mdx @@ -6,14 +6,18 @@ description: Styled text with a coordinated type scale and semantic colour roles `Text` applies Luke UI typography without adding heading semantics. It needs a Luke UI theme root; see [Getting started](/overview/getting-started). -```tsx -The quick brown fox jumps over the lazy dog. -``` + ## Element type `Text` renders React Aria's `Text` component, which uses a `span` by default. Set `elementType` to -choose a semantic element without changing the type treatment. +choose a semantic element without changing the type treatment. Capsize trim is applied to known +block text elements such as `p`, `div`, headings, and `blockquote`, and skipped automatically for +inline or unknown element types. ```tsx A paragraph of supporting copy. @@ -60,9 +64,10 @@ zero with a slash. ## Trimming -Text trims space above capitals and below the baseline by default. That makes vertical spacing more -predictable in cards and other bounded layouts. Set `shouldDisableTrim` only when the untrimmed line -box is required. +Block text trims space above capitals and below the baseline by default. That makes vertical spacing +more predictable in cards and other bounded layouts. Inline text skips trim so its pseudo-elements +cannot interrupt the surrounding line. Set `shouldDisableTrim` explicitly when you need to override +the element-type inference. `, - * which always layers on its `link()` recipe for underlined inline-text - * styling (stacking that under `button()` would fight it for color/ - * decoration). `createLink` delegates rendering to that primitive so - * TanStack Router still resolves `to`/`hash` into the correct `href` while - * the element keeps real `data-hovered`/`data-pressed`/`data-focus-visible` - * states, matching the adjacent `; +} diff --git a/apps/docs/src/examples/button/basic.tsx b/apps/docs/src/examples/button/basic.tsx new file mode 100644 index 00000000..3595a40f --- /dev/null +++ b/apps/docs/src/examples/button/basic.tsx @@ -0,0 +1,5 @@ +import { Button } from '@luke-ui/react/button'; + +export default function Basic() { + return ; +} diff --git a/apps/docs/src/examples/code/basic.tsx b/apps/docs/src/examples/code/basic.tsx new file mode 100644 index 00000000..a4e400b6 --- /dev/null +++ b/apps/docs/src/examples/code/basic.tsx @@ -0,0 +1,5 @@ +import { Code } from '@luke-ui/react/code'; + +export default function Basic() { + return console.log(); +} diff --git a/apps/docs/src/examples/code/in-context.tsx b/apps/docs/src/examples/code/in-context.tsx new file mode 100644 index 00000000..92f6644f --- /dev/null +++ b/apps/docs/src/examples/code/in-context.tsx @@ -0,0 +1,11 @@ +import { Code } from '@luke-ui/react/code'; +import { Text } from '@luke-ui/react/text'; + +export default function InContext() { + return ( + + Use the useTheme hook to access the current theme. The theme prop + supports "light", "dark", and "system". + + ); +} diff --git a/apps/docs/src/examples/combobox-primitive/basic.tsx b/apps/docs/src/examples/combobox-primitive/basic.tsx new file mode 100644 index 00000000..95311101 --- /dev/null +++ b/apps/docs/src/examples/combobox-primitive/basic.tsx @@ -0,0 +1,26 @@ +import { + ComboboxControl, + ComboboxItem, + ComboboxListBox, + ComboboxPopover, + ComboboxRoot, + ComboboxTextInput, + ComboboxTrigger, +} from '@luke-ui/react/combobox-field/primitive'; + +export default function Basic() { + return ( + + + + + + + + Australia + New Zealand + + + + ); +} diff --git a/apps/docs/src/examples/em/basic.tsx b/apps/docs/src/examples/em/basic.tsx new file mode 100644 index 00000000..fa1086c7 --- /dev/null +++ b/apps/docs/src/examples/em/basic.tsx @@ -0,0 +1,10 @@ +import { Em } from '@luke-ui/react/em'; +import { Text } from '@luke-ui/react/text'; + +export default function Basic() { + return ( + + We had to do something about it. + + ); +} diff --git a/apps/docs/src/examples/field-primitive/basic.tsx b/apps/docs/src/examples/field-primitive/basic.tsx new file mode 100644 index 00000000..4f261961 --- /dev/null +++ b/apps/docs/src/examples/field-primitive/basic.tsx @@ -0,0 +1,10 @@ +import { Field } from '@luke-ui/react/field/primitive'; +import { TextInput } from '@luke-ui/react/text-field/primitive'; + +export default function Basic() { + return ( + + + + ); +} diff --git a/apps/docs/src/examples/heading/basic.tsx b/apps/docs/src/examples/heading/basic.tsx new file mode 100644 index 00000000..5332b6dd --- /dev/null +++ b/apps/docs/src/examples/heading/basic.tsx @@ -0,0 +1,5 @@ +import { Heading } from '@luke-ui/react/heading'; + +export default function Basic() { + return Account settings; +} diff --git a/apps/docs/src/examples/icon-button/basic.tsx b/apps/docs/src/examples/icon-button/basic.tsx new file mode 100644 index 00000000..4ca6ac10 --- /dev/null +++ b/apps/docs/src/examples/icon-button/basic.tsx @@ -0,0 +1,5 @@ +import { IconButton } from '@luke-ui/react/icon-button'; + +export default function Basic() { + return ; +} diff --git a/apps/docs/src/examples/kbd/basic.tsx b/apps/docs/src/examples/kbd/basic.tsx new file mode 100644 index 00000000..34883e0c --- /dev/null +++ b/apps/docs/src/examples/kbd/basic.tsx @@ -0,0 +1,10 @@ +import { Kbd } from '@luke-ui/react/kbd'; +import { Text } from '@luke-ui/react/text'; + +export default function Basic() { + return ( + + Press Shift + Tab to move to the previous control. + + ); +} diff --git a/apps/docs/src/examples/link/basic.tsx b/apps/docs/src/examples/link/basic.tsx new file mode 100644 index 00000000..3e1cf799 --- /dev/null +++ b/apps/docs/src/examples/link/basic.tsx @@ -0,0 +1,5 @@ +import { Link } from '@luke-ui/react/link'; + +export default function Basic() { + return Help centre; +} diff --git a/apps/docs/src/examples/loading-skeleton/basic.tsx b/apps/docs/src/examples/loading-skeleton/basic.tsx new file mode 100644 index 00000000..c71ed79e --- /dev/null +++ b/apps/docs/src/examples/loading-skeleton/basic.tsx @@ -0,0 +1,24 @@ +import { Box } from '@luke-ui/react/box'; +import { LoadingSkeleton } from '@luke-ui/react/loading-skeleton'; +import { Text } from '@luke-ui/react/text'; +import { useState } from 'react'; + +export default function Basic() { + const [isLoading, setIsLoading] = useState(true); + + return ( + + + Loading + + + + ); +} diff --git a/apps/docs/src/examples/loading-skeleton/provider.tsx b/apps/docs/src/examples/loading-skeleton/provider.tsx index d66cd058..4d9c0d63 100644 --- a/apps/docs/src/examples/loading-skeleton/provider.tsx +++ b/apps/docs/src/examples/loading-skeleton/provider.tsx @@ -1,25 +1,21 @@ import { Box } from '@luke-ui/react/box'; import { LoadingSkeleton, LoadingSkeletonProvider } from '@luke-ui/react/loading-skeleton'; import { Text } from '@luke-ui/react/text'; +import { useState } from 'react'; export default function ProviderSkeleton() { + const [isLoading, setIsLoading] = useState(true); + return ( - - - - Provider: true + + + No local prop - Content + Account balance: $1,240.00 @@ -27,48 +23,29 @@ export default function ProviderSkeleton() { isLoading - Content + Next payment: 21 August - isLoading=false + {'isLoading={false}'} - Content + Visa ending in 4242 - - - Provider: false - - - No local prop - - - Content - - - - - isLoading - - - Content - - - - - isLoading=false - - - Content - - + + ); } diff --git a/apps/docs/src/examples/loading-skeleton/text.tsx b/apps/docs/src/examples/loading-skeleton/text.tsx deleted file mode 100644 index 12bb3f29..00000000 --- a/apps/docs/src/examples/loading-skeleton/text.tsx +++ /dev/null @@ -1,28 +0,0 @@ -import { Box } from '@luke-ui/react/box'; -import { LoadingSkeleton } from '@luke-ui/react/loading-skeleton'; -import { Text } from '@luke-ui/react/text'; -import { useState } from 'react'; - -export default function TextSkeleton() { - const [isLoading, setIsLoading] = useState(true); - - return ( - - - - The placeholder follows each line of text as this sentence wraps. - - - - - ); -} diff --git a/apps/docs/src/examples/quote/basic.tsx b/apps/docs/src/examples/quote/basic.tsx new file mode 100644 index 00000000..19569808 --- /dev/null +++ b/apps/docs/src/examples/quote/basic.tsx @@ -0,0 +1,10 @@ +import { Quote } from '@luke-ui/react/quote'; +import { Text } from '@luke-ui/react/text'; + +export default function Basic() { + return ( + + She described the interface as calm and clear. + + ); +} diff --git a/apps/docs/src/examples/strong/basic.tsx b/apps/docs/src/examples/strong/basic.tsx new file mode 100644 index 00000000..d3ecb29a --- /dev/null +++ b/apps/docs/src/examples/strong/basic.tsx @@ -0,0 +1,10 @@ +import { Strong } from '@luke-ui/react/strong'; +import { Text } from '@luke-ui/react/text'; + +export default function Basic() { + return ( + + Save your recovery code before continuing. + + ); +} diff --git a/apps/docs/src/examples/text-input-primitive/basic.tsx b/apps/docs/src/examples/text-input-primitive/basic.tsx new file mode 100644 index 00000000..0e11bf72 --- /dev/null +++ b/apps/docs/src/examples/text-input-primitive/basic.tsx @@ -0,0 +1,5 @@ +import { TextInput } from '@luke-ui/react/text-field/primitive'; + +export default function Basic() { + return ; +} diff --git a/apps/docs/src/examples/text/basic.tsx b/apps/docs/src/examples/text/basic.tsx new file mode 100644 index 00000000..09918cb0 --- /dev/null +++ b/apps/docs/src/examples/text/basic.tsx @@ -0,0 +1,5 @@ +import { Text } from '@luke-ui/react/text'; + +export default function Basic() { + return The quick brown fox jumps over the lazy dog.; +} diff --git a/apps/docs/src/lib/example-reachability.test.ts b/apps/docs/src/lib/example-reachability.test.ts new file mode 100644 index 00000000..2fdf7b03 --- /dev/null +++ b/apps/docs/src/lib/example-reachability.test.ts @@ -0,0 +1,63 @@ +import { mkdirSync, mkdtempSync, rmSync, writeFileSync } from 'node:fs'; +import { tmpdir } from 'node:os'; +import { join, resolve } from 'node:path'; +import { afterEach, expect, test } from 'vite-plus/test'; +import { findOrphanedExamples } from './remark-validate-examples.js'; + +const testDirectories: Array = []; + +afterEach(() => { + for (const directory of testDirectories) { + rmSync(directory, { force: true, recursive: true }); + } + + testDirectories.length = 0; +}); + +test('finds examples that are neither documented nor imported by another example', () => { + const directory = mkdtempSync(join(tmpdir(), 'luke-ui-example-reachability-')); + testDirectories.push(directory); + + const examplesDir = join(directory, 'src/examples'); + const docsDir = join(directory, 'content/docs'); + mkdirSync(join(examplesDir, 'profile'), { recursive: true }); + mkdirSync(docsDir, { recursive: true }); + writeFileSync( + join(docsDir, 'profile.mdx'), + '', + ); + writeFileSync( + join(examplesDir, 'profile/basic.tsx'), + [ + "import { Preferences } from './preferences';", + "import { ProfileDetails } from './profile-details.js';", + '', + 'export default ProfileDetails;', + 'export { Preferences };', + '', + ].join('\n'), + ); + writeFileSync( + join(examplesDir, 'profile/profile-details.tsx'), + 'export function ProfileDetails() { return null; }\n', + ); + writeFileSync( + join(examplesDir, 'profile/preferences.tsx'), + 'export function Preferences() { return null; }\n', + ); + writeFileSync( + join(examplesDir, 'profile/obsolete.tsx'), + 'export default function Obsolete() { return null; }\n', + ); + + expect(findOrphanedExamples({ docsDir, examplesDir })).toEqual(['profile/obsolete.tsx']); +}); + +test('finds no orphaned examples in the docs app', () => { + expect( + findOrphanedExamples({ + docsDir: resolve(import.meta.dirname, '../../content/docs'), + examplesDir: resolve(import.meta.dirname, '../examples'), + }), + ).toEqual([]); +}); diff --git a/apps/docs/src/lib/remark-validate-examples.ts b/apps/docs/src/lib/remark-validate-examples.ts index dc086141..24bdbd5e 100644 --- a/apps/docs/src/lib/remark-validate-examples.ts +++ b/apps/docs/src/lib/remark-validate-examples.ts @@ -1,5 +1,5 @@ -import { existsSync } from 'node:fs'; -import { resolve } from 'node:path'; +import { existsSync, readdirSync, readFileSync } from 'node:fs'; +import { extname, relative, resolve } from 'node:path'; import { visit } from 'unist-util-visit'; interface Position { @@ -19,6 +19,11 @@ interface MdxJsxFlowElement { type: string; } +interface FindOrphanedExamplesOptions { + docsDir: string; + examplesDir: string; +} + export function remarkValidateExamples() { return (tree: unknown, file: { cwd?: string; path?: string }) => { const examplesDir = resolve(file.cwd ?? process.cwd(), 'src/examples'); @@ -49,3 +54,74 @@ export function remarkValidateExamples() { }); }; } + +export function findOrphanedExamples({ + docsDir, + examplesDir, +}: FindOrphanedExamplesOptions): Array { + const resolvedDocsDir = resolve(docsDir); + const resolvedExamplesDir = resolve(examplesDir); + const reachableExamples = findDocumentedExamples(resolvedDocsDir, resolvedExamplesDir); + const pendingExamples = [...reachableExamples]; + + for (const examplePath of pendingExamples) { + for (const importedExample of findImportedExamples(examplePath, resolvedExamplesDir)) { + if (reachableExamples.has(importedExample)) continue; + + reachableExamples.add(importedExample); + pendingExamples.push(importedExample); + } + } + + return findFiles(resolvedExamplesDir, '.tsx') + .filter((examplePath) => !reachableExamples.has(examplePath)) + .map((examplePath) => relative(resolvedExamplesDir, examplePath)) + .sort(); +} + +function findFiles(directory: string, extension: string): Array { + return readdirSync(directory, { withFileTypes: true }).flatMap((entry) => { + const path = resolve(directory, entry.name); + + if (entry.isDirectory()) return findFiles(path, extension); + return extname(entry.name) === extension ? [path] : []; + }); +} + +function findDocumentedExamples(docsDir: string, examplesDir: string): Set { + const documentedExamples = new Set(); + const exampleBlockPattern = /]*\bsrc\s*=\s*["']([^"']+)["'][^>]*>/g; + + for (const file of findFiles(docsDir, '.mdx')) { + const contents = readFileSync(file, 'utf8'); + + for (const match of contents.matchAll(exampleBlockPattern)) { + const src = match[1]; + if (src) documentedExamples.add(resolve(examplesDir, `${src}.tsx`)); + } + } + + return documentedExamples; +} + +function findImportedExamples(examplePath: string, examplesDir: string): Array { + const importedExamples: Array = []; + const importPattern = /\bfrom\s+["'](\.[^"']+)["']/g; + const contents = readFileSync(examplePath, 'utf8'); + + for (const match of contents.matchAll(importPattern)) { + const importPath = match[1]; + if (!importPath) continue; + + const resolvedImportPath = resolve(examplePath, '..', importPath); + const importedPath = extname(resolvedImportPath) + ? resolvedImportPath.replace(/\.js$/, '.tsx') + : `${resolvedImportPath}.tsx`; + + if (importedPath.startsWith(`${examplesDir}/`) && existsSync(importedPath)) { + importedExamples.push(importedPath); + } + } + + return importedExamples; +} diff --git a/docs/COMPONENTS.md b/docs/COMPONENTS.md index ea0eed3e..ee6b0d7d 100644 --- a/docs/COMPONENTS.md +++ b/docs/COMPONENTS.md @@ -55,4 +55,8 @@ The component creation rules live in `packages/turbo-generators/src/component-cr Turbo and Plop are adapters that apply the plan. Keep new creation rules in the plan module so dry-run tests can prove which files, exports, stories, docs, and checks a component needs. +The generator creates the component guide's primary `apps/docs/src/examples//basic.tsx` +example and references it with `ExampleBlock`. Replace the placeholder content with one focused, +renderable use of the component. + Do not move creation rules into one-off generator code. diff --git a/docs/DOCUMENTATION.md b/docs/DOCUMENTATION.md index a963160e..c84342fb 100644 --- a/docs/DOCUMENTATION.md +++ b/docs/DOCUMENTATION.md @@ -62,11 +62,19 @@ Interactive examples live in `apps/docs/src/examples//`. An example module default-exports a React component. Reference it from an MDX page with ``. +Every component guide starts with a focused `basic.tsx` example and references it as the primary +``. This is the default first example generated for a +new component. + Keep example content aligned with the section that mentions it. If you add a feature section, add or update an example in the same change when the feature is easier to understand visually. Use short, legible sample values. Do not use lorem ipsum. +Prefer a typechecked `ExampleBlock` over an inline TSX fence whenever the code benefits from a +rendered preview. Reserve inline TSX for non-renderable setup, partial composition, or API details +that would be less clear inside a complete example. + ## Site chrome Every surface shares one top nav, `SiteNav` in `apps/docs/src/components/site-nav.tsx`. It carries diff --git a/docs/STYLING.md b/docs/STYLING.md index 0580d37d..0e04ba0d 100644 --- a/docs/STYLING.md +++ b/docs/STYLING.md @@ -65,9 +65,10 @@ solver. The semantic contract includes `font.100` through `font.900` size steps. Each step groups its font size, line height, letter spacing, and per-font Capsize trims so components cannot combine unrelated -values. `buildTheme` computes those trim values from the curated Inter, Apple System, or DM Sans -font metrics. Icon sizes carry forward the `xsmall`, `small`, `medium`, and `large` scale at 16px, -20px, 24px, and 32px. +values. `font.family.body` is selected from the curated Inter, Apple System, or DM Sans metrics and +`buildTheme` computes the matching trims. `font.family.code` is a fixed neutral monospace stack for +code and keyboard input; it is not a brand-family or Capsize choice. Icon sizes carry forward the +`xsmall`, `small`, `medium`, and `large` scale at 16px, 20px, 24px, and 32px. Each colour mode authors the final composite `box-shadow` for `depth.recessed`, `depth.resting`, `depth.raised`, `depth.floating`, and `depth.overlay`. Components select a semantic depth and do not diff --git a/packages/@luke-ui/react/package.json b/packages/@luke-ui/react/package.json index a1bddcef..2c55f326 100644 --- a/packages/@luke-ui/react/package.json +++ b/packages/@luke-ui/react/package.json @@ -14,11 +14,14 @@ "./dist/themes/*.css" ], "exports": { + "./blockquote": "./dist/blockquote/index.js", "./box": "./dist/box/index.js", "./button": "./dist/button/index.js", "./button/primitive": "./dist/button/primitive/index.js", + "./code": "./dist/code/index.js", "./combobox-field": "./dist/combobox-field/index.js", "./combobox-field/primitive": "./dist/combobox-field/primitive/index.js", + "./em": "./dist/em/index.js", "./emoji": "./dist/emoji/index.js", "./field/primitive": "./dist/field/primitive/index.js", "./heading": "./dist/heading/index.js", @@ -26,11 +29,14 @@ "./icon": "./dist/icon/index.js", "./icon-button": "./dist/icon-button/index.js", "./icon-size-context": "./dist/icon-size-context/index.js", + "./kbd": "./dist/kbd/index.js", "./link": "./dist/link/index.js", "./loading-skeleton": "./dist/loading-skeleton/index.js", "./loading-spinner": "./dist/loading-spinner/index.js", "./numeral": "./dist/numeral/index.js", + "./quote": "./dist/quote/index.js", "./recipes": "./dist/recipes/index.js", + "./strong": "./dist/strong/index.js", "./styles": "./dist/styles/index.js", "./text": "./dist/text/index.js", "./text-field": "./dist/text-field/index.js", diff --git a/packages/@luke-ui/react/src/blockquote/blockquote.stories.tsx b/packages/@luke-ui/react/src/blockquote/blockquote.stories.tsx new file mode 100644 index 00000000..fdd2fd58 --- /dev/null +++ b/packages/@luke-ui/react/src/blockquote/blockquote.stories.tsx @@ -0,0 +1,23 @@ +import { Blockquote } from '@luke-ui/react/blockquote'; +import { Text } from '@luke-ui/react/text'; +import preview from '../../.storybook/preview.js'; + +const meta = preview.meta({ + component: Blockquote, + tags: ['typography'], + title: 'Typography/Blockquote', +}); + +export const Default = meta.story({ + args: { + children: 'The quick brown fox jumps over the lazy dog.', + }, +}); + +export const InContext = meta.story({ + render: () => ( + +
The only way to do great work is to love what you do.
+
+ ), +}); diff --git a/packages/@luke-ui/react/src/blockquote/index.tsx b/packages/@luke-ui/react/src/blockquote/index.tsx new file mode 100644 index 00000000..5638532b --- /dev/null +++ b/packages/@luke-ui/react/src/blockquote/index.tsx @@ -0,0 +1,30 @@ +import * as styles from '../recipes/blockquote.css.js'; +import { Text } from '../text/index.js'; +import type { TextProps } from '../text/index.js'; +import type { DistributiveOmit } from '../types/distributive-omit.js'; +import type { Prettify } from '../types/prettify.js'; +import { cx } from '../utils/index.js'; + +type _BlockquoteOmit = DistributiveOmit; + +interface _BlockquoteProps extends _BlockquoteOmit {} + +/** + * Props for the `Blockquote` component. + * + * @tier atom + */ +export type BlockquoteProps = Prettify<_BlockquoteProps>; + +/** + * Block-level quotation from another source, rendered as `
`. + * Composes `Text` for the type scale and semantic font-weight controls. + */ +export function Blockquote(props: BlockquoteProps) { + const { children, className, ...textProps } = props; + return ( + + {children} + + ); +} diff --git a/packages/@luke-ui/react/src/code/code.stories.tsx b/packages/@luke-ui/react/src/code/code.stories.tsx new file mode 100644 index 00000000..c4d99f72 --- /dev/null +++ b/packages/@luke-ui/react/src/code/code.stories.tsx @@ -0,0 +1,31 @@ +import { Code } from '@luke-ui/react/code'; +import { Text } from '@luke-ui/react/text'; +import { expect } from 'storybook/test'; +import preview from '../../.storybook/preview.js'; + +const meta = preview.meta({ + component: Code, + tags: ['typography'], + title: 'Typography/Code', +}); + +export const Default = meta.story({ + args: { + children: 'console.log("hello world")', + }, + play: async ({ canvas, canvasElement }) => { + const code = getComputedStyle(canvas.getByText(/console\.log/)).fontFamily; + const codeToken = getComputedStyle(canvasElement) + .getPropertyValue('--luke-font-family-code') + .trim(); + await expect(code.replaceAll(/['"]/g, '')).toBe(codeToken.replaceAll(/['"]/g, '')); + }, +}); + +export const InContext = meta.story({ + render: () => ( + + Use the useTheme hook to access the current theme. + + ), +}); diff --git a/packages/@luke-ui/react/src/code/index.tsx b/packages/@luke-ui/react/src/code/index.tsx new file mode 100644 index 00000000..7751befd --- /dev/null +++ b/packages/@luke-ui/react/src/code/index.tsx @@ -0,0 +1,23 @@ +import * as styles from '../recipes/code.css.js'; +import type { DistributiveOmit } from '../types/distributive-omit.js'; +import type { Prettify } from '../types/prettify.js'; +import { cx } from '../utils/index.js'; + +type _CodeOmit = DistributiveOmit, never>; + +interface _CodeProps extends _CodeOmit {} + +/** + * Props for the `Code` component. + * + * @tier atom + */ +export type CodeProps = Prettify<_CodeProps>; + +/** + * Marks a short fragment of computer code, rendered as ``. + */ +export function Code(props: CodeProps) { + const { className, ...elementProps } = props; + return ; +} diff --git a/packages/@luke-ui/react/src/em/em.stories.tsx b/packages/@luke-ui/react/src/em/em.stories.tsx new file mode 100644 index 00000000..86d20579 --- /dev/null +++ b/packages/@luke-ui/react/src/em/em.stories.tsx @@ -0,0 +1,48 @@ +import { Em } from '@luke-ui/react/em'; +import { Text } from '@luke-ui/react/text'; +import { expect } from 'storybook/test'; +import preview from '../../.storybook/preview.js'; + +const meta = preview.meta({ + component: Em, + tags: ['typography'], + title: 'Typography/Em', +}); + +export const Default = meta.story({ + args: { + children: 'The quick brown fox jumps over the lazy dog.', + }, +}); + +export const InContext = meta.story({ + play: async ({ canvas }) => { + const element = canvas.getByText('emphasised'); + const style = getComputedStyle(element); + await expect(style.display).toBe('inline'); + await expect(style.fontStyle).toBe('italic'); + await expect(getComputedStyle(element, '::before').content).toBe('none'); + await expect(getComputedStyle(element, '::before').display).not.toBe('table'); + await expect(getComputedStyle(element, '::after').content).toBe('none'); + await expect(getComputedStyle(element, '::after').display).not.toBe('table'); + }, + render: () => ( + + This is emphasised text within a paragraph. + + ), +}); + +export const TextStyles = meta.story({ + play: async ({ canvas }) => { + const style = getComputedStyle(canvas.getByTestId('styled')); + await expect(style.display).toBe('flow-root'); + await expect(style.textWrap).toBe('balance'); + await expect(style.webkitLineClamp).toBe('2'); + }, + render: () => ( + + Emphasised text that is long enough to wrap across multiple lines. + + ), +}); diff --git a/packages/@luke-ui/react/src/em/index.tsx b/packages/@luke-ui/react/src/em/index.tsx new file mode 100644 index 00000000..d9ef463b --- /dev/null +++ b/packages/@luke-ui/react/src/em/index.tsx @@ -0,0 +1,47 @@ +import * as styles from '../recipes/em.css.js'; +import { Text } from '../text/index.js'; +import type { TextProps } from '../text/index.js'; +import type { DistributiveOmit } from '../types/distributive-omit.js'; +import type { Prettify } from '../types/prettify.js'; +import { cx } from '../utils/index.js'; + +interface EmStyleProps { + /** + * Clamps text lines. `true` clamps to 1 line; numeric values clamp to 1–5. + */ + lineClamp?: TextProps['lineClamp']; + /** + * Sets text wrapping behavior. + * @default 'unset' + */ + textWrap?: TextProps['textWrap']; +} + +type _EmOmit = DistributiveOmit, 'color'>; + +interface _EmProps extends _EmOmit, EmStyleProps {} + +/** + * Props for the `Em` component. + * + * @tier atom + */ +export type EmProps = Prettify<_EmProps>; + +/** + * Marks text to stress emphasis, rendered as ``. + * Composes `Text`, inherits surrounding typography, and applies italic styling. + */ +export function Em(props: EmProps) { + const { className, lineClamp, textWrap, ...elementProps } = props; + return ( + + ); +} diff --git a/packages/@luke-ui/react/src/kbd/index.tsx b/packages/@luke-ui/react/src/kbd/index.tsx new file mode 100644 index 00000000..02a93ae0 --- /dev/null +++ b/packages/@luke-ui/react/src/kbd/index.tsx @@ -0,0 +1,23 @@ +import * as styles from '../recipes/kbd.css.js'; +import type { DistributiveOmit } from '../types/distributive-omit.js'; +import type { Prettify } from '../types/prettify.js'; +import { cx } from '../utils/index.js'; + +type _KbdOmit = DistributiveOmit, never>; + +interface _KbdProps extends _KbdOmit {} + +/** + * Props for the `Kbd` component. + * + * @tier atom + */ +export type KbdProps = Prettify<_KbdProps>; + +/** + * Represents keyboard input or a hotkey, rendered as ``. + */ +export function Kbd(props: KbdProps) { + const { className, ...elementProps } = props; + return ; +} diff --git a/packages/@luke-ui/react/src/kbd/kbd.stories.tsx b/packages/@luke-ui/react/src/kbd/kbd.stories.tsx new file mode 100644 index 00000000..1804f433 --- /dev/null +++ b/packages/@luke-ui/react/src/kbd/kbd.stories.tsx @@ -0,0 +1,39 @@ +import { Kbd } from '@luke-ui/react/kbd'; +import { Text } from '@luke-ui/react/text'; +import { expect } from 'storybook/test'; +import preview from '../../.storybook/preview.js'; + +const meta = preview.meta({ + component: Kbd, + tags: ['typography'], + title: 'Typography/Kbd', +}); + +export const Default = meta.story({ + args: { + children: '⌘K', + }, + play: async ({ canvas, canvasElement }) => { + const kbd = getComputedStyle(canvas.getByText('⌘K')).fontFamily; + const codeToken = getComputedStyle(canvasElement) + .getPropertyValue('--luke-font-family-code') + .trim(); + await expect(kbd.replaceAll(/['"]/g, '')).toBe(codeToken.replaceAll(/['"]/g, '')); + }, +}); + +export const InContext = meta.story({ + render: () => ( + + Press ⌘S to save. + + ), +}); + +export const Hotkey = meta.story({ + render: () => ( + + ⇧⌘P opens the command palette. + + ), +}); diff --git a/packages/@luke-ui/react/src/quote/index.tsx b/packages/@luke-ui/react/src/quote/index.tsx new file mode 100644 index 00000000..a1bb5029 --- /dev/null +++ b/packages/@luke-ui/react/src/quote/index.tsx @@ -0,0 +1,44 @@ +import { Text } from '../text/index.js'; +import type { TextProps } from '../text/index.js'; +import type { DistributiveOmit } from '../types/distributive-omit.js'; +import type { Prettify } from '../types/prettify.js'; + +interface QuoteStyleProps { + /** + * Clamps text lines. `true` clamps to 1 line; numeric values clamp to 1–5. + */ + lineClamp?: TextProps['lineClamp']; + /** + * Sets text wrapping behavior. + * @default 'unset' + */ + textWrap?: TextProps['textWrap']; +} + +type _QuoteOmit = DistributiveOmit, 'color'>; + +interface _QuoteProps extends _QuoteOmit, QuoteStyleProps {} + +/** + * Props for the `Quote` component. + * + * @tier atom + */ +export type QuoteProps = Prettify<_QuoteProps>; + +/** + * Short inline quotation, rendered as ``. + * Composes `Text` and inherits surrounding typography. + */ +export function Quote(props: QuoteProps) { + const { lineClamp, textWrap, ...elementProps } = props; + return ( + + ); +} diff --git a/packages/@luke-ui/react/src/quote/quote.stories.tsx b/packages/@luke-ui/react/src/quote/quote.stories.tsx new file mode 100644 index 00000000..a5fd3397 --- /dev/null +++ b/packages/@luke-ui/react/src/quote/quote.stories.tsx @@ -0,0 +1,51 @@ +import { Quote } from '@luke-ui/react/quote'; +import { Text } from '@luke-ui/react/text'; +import { expect } from 'storybook/test'; +import preview from '../../.storybook/preview.js'; + +const meta = preview.meta({ + component: Quote, + tags: ['typography'], + title: 'Typography/Quote', +}); + +export const Default = meta.story({ + args: { + children: 'The quick brown fox jumps over the lazy dog.', + }, +}); + +export const InContext = meta.story({ + play: async ({ canvas }) => { + const element = canvas.getByText('I will be back'); + await expect(getComputedStyle(element).display).toBe('inline'); + await expect(getComputedStyle(element, '::before').display).not.toBe('table'); + await expect(getComputedStyle(element, '::after').display).not.toBe('table'); + }, + render: () => ( + + He said I will be back and walked away. + + ), +}); + +export const Cited = meta.story({ + args: { + children: 'The only way to do great work is to love what you do.', + cite: 'https://example.com/sources/steve-jobs', + }, +}); + +export const TextStyles = meta.story({ + play: async ({ canvas }) => { + const style = getComputedStyle(canvas.getByTestId('styled')); + await expect(style.display).toBe('flow-root'); + await expect(style.textWrap).toBe('balance'); + await expect(style.webkitLineClamp).toBe('2'); + }, + render: () => ( + + A short quotation that is long enough to wrap across multiple lines. + + ), +}); diff --git a/packages/@luke-ui/react/src/recipes/blockquote.css.ts b/packages/@luke-ui/react/src/recipes/blockquote.css.ts new file mode 100644 index 00000000..745a0ccd --- /dev/null +++ b/packages/@luke-ui/react/src/recipes/blockquote.css.ts @@ -0,0 +1,16 @@ +import { styleInLayer } from '../styles/layered-style.css.js'; +import { vars } from '../theme/contract.css.js'; +import type { RecipeSelection } from './recipe.js'; +import { recipe } from './recipe.js'; + +const base = styleInLayer('recipes', { + borderInlineStart: `3px solid ${vars.color.border.decorative}`, + paddingInlineStart: vars.space[400], +}); + +/** Vanilla-extract recipe for the `Blockquote` component's left-border accent. */ +export const blockquote = recipe({ + base, +}); + +export type BlockquoteVariants = RecipeSelection; diff --git a/packages/@luke-ui/react/src/recipes/button.css.ts b/packages/@luke-ui/react/src/recipes/button.css.ts index aa30387b..08e687dd 100644 --- a/packages/@luke-ui/react/src/recipes/button.css.ts +++ b/packages/@luke-ui/react/src/recipes/button.css.ts @@ -53,7 +53,7 @@ const base = styleInLayer('recipes', { boxSizing: 'border-box', cursor: 'pointer', display: 'inline-flex', - fontFamily: vars.font.family, + fontFamily: vars.font.family.body, fontWeight: vars.font.weight.label, isolation: 'isolate', justifyContent: 'center', diff --git a/packages/@luke-ui/react/src/recipes/code.css.ts b/packages/@luke-ui/react/src/recipes/code.css.ts new file mode 100644 index 00000000..a4f11106 --- /dev/null +++ b/packages/@luke-ui/react/src/recipes/code.css.ts @@ -0,0 +1,23 @@ +import { styleInLayer } from '../styles/layered-style.css.js'; +import { vars } from '../theme/contract.css.js'; +import type { RecipeSelection } from './recipe.js'; +import { recipe } from './recipe.js'; + +const base = styleInLayer('recipes', { + backgroundColor: vars.color.surface.recessed, + borderRadius: vars.radius.control, + color: vars.color.text.primary, + fontFamily: vars.font.family.code, + fontSize: '0.8125em', + lineHeight: 1, + paddingBlock: '0.15em', + paddingInline: '0.3em', + whiteSpace: 'nowrap', +}); + +/** Vanilla-extract recipe for the `Code` component's inline code appearance. */ +export const code = recipe({ + base, +}); + +export type CodeVariants = RecipeSelection; diff --git a/packages/@luke-ui/react/src/recipes/combobox.css.ts b/packages/@luke-ui/react/src/recipes/combobox.css.ts index 3807979e..a24ae92f 100644 --- a/packages/@luke-ui/react/src/recipes/combobox.css.ts +++ b/packages/@luke-ui/react/src/recipes/combobox.css.ts @@ -135,7 +135,7 @@ const comboboxConfig = { color: vars.color.text.primary, cursor: 'text', display: 'inline-flex', - fontFamily: vars.font.family, + fontFamily: vars.font.family.body, inlineSize: '100%', isolation: 'isolate', letterSpacing: vars.font[300].letterSpacing, diff --git a/packages/@luke-ui/react/src/recipes/em.css.ts b/packages/@luke-ui/react/src/recipes/em.css.ts new file mode 100644 index 00000000..03e56f3f --- /dev/null +++ b/packages/@luke-ui/react/src/recipes/em.css.ts @@ -0,0 +1,5 @@ +import { styleInLayer } from '../styles/layered-style.css.js'; + +export const em = styleInLayer('recipes', { + fontStyle: 'italic', +}); diff --git a/packages/@luke-ui/react/src/recipes/index.ts b/packages/@luke-ui/react/src/recipes/index.ts index c1388ab0..4c341201 100644 --- a/packages/@luke-ui/react/src/recipes/index.ts +++ b/packages/@luke-ui/react/src/recipes/index.ts @@ -3,6 +3,10 @@ // VE strips this import from the compiled JS output at build time. import '../stylesheet.css.js'; +export type { CodeVariants } from '../recipes/code.css.js'; +export { code } from '../recipes/code.css.js'; +export type { BlockquoteVariants } from '../recipes/blockquote.css.js'; +export { blockquote } from '../recipes/blockquote.css.js'; export type { ButtonVariants } from '../recipes/button.css.js'; export { button } from '../recipes/button.css.js'; export type { FieldVariants } from '../recipes/field.css.js'; @@ -16,6 +20,8 @@ export { link } from '../recipes/link.css.js'; export { loadingSkeletonClassName } from '../recipes/loading-skeleton.css.js'; export type { LoadingSpinnerVariants } from '../recipes/loading-spinner.css.js'; export { loadingSpinner } from '../recipes/loading-spinner.css.js'; +export type { KbdVariants } from '../recipes/kbd.css.js'; +export { kbd } from '../recipes/kbd.css.js'; export type { TextVariants } from '../recipes/text.css.js'; export { text } from '../recipes/text.css.js'; export type { TextInputVariants } from '../recipes/text-input.css.js'; diff --git a/packages/@luke-ui/react/src/recipes/kbd.css.ts b/packages/@luke-ui/react/src/recipes/kbd.css.ts new file mode 100644 index 00000000..f09d2306 --- /dev/null +++ b/packages/@luke-ui/react/src/recipes/kbd.css.ts @@ -0,0 +1,30 @@ +import { styleInLayer } from '../styles/layered-style.css.js'; +import { vars } from '../theme/contract.css.js'; +import type { RecipeSelection } from './recipe.js'; +import { recipe } from './recipe.js'; + +const base = styleInLayer('recipes', { + alignItems: 'center', + backgroundColor: vars.color.surface.recessed, + borderColor: vars.color.border.decorative, + borderRadius: vars.radius.control, + borderStyle: 'solid', + borderWidth: '1px', + color: vars.color.text.primary, + display: 'inline-flex', + fontFamily: vars.font.family.code, + fontSize: vars.font[100].fontSize, + fontWeight: vars.font.weight.body, + inlineSize: 'fit-content', + lineHeight: 1, + paddingBlock: '0.1em', + paddingInline: '0.35em', + whiteSpace: 'nowrap', +}); + +/** Vanilla-extract recipe for the `Kbd` component's inline keyboard-key appearance. */ +export const kbd = recipe({ + base, +}); + +export type KbdVariants = RecipeSelection; diff --git a/packages/@luke-ui/react/src/recipes/strong.css.ts b/packages/@luke-ui/react/src/recipes/strong.css.ts new file mode 100644 index 00000000..26d626f2 --- /dev/null +++ b/packages/@luke-ui/react/src/recipes/strong.css.ts @@ -0,0 +1,6 @@ +import { styleInLayer } from '../styles/layered-style.css.js'; +import { vars } from '../theme/contract.css.js'; + +export const strong = styleInLayer('recipes', { + fontWeight: vars.font.weight.emphasis, +}); diff --git a/packages/@luke-ui/react/src/recipes/text-input.css.ts b/packages/@luke-ui/react/src/recipes/text-input.css.ts index 1985cf35..0d4472ed 100644 --- a/packages/@luke-ui/react/src/recipes/text-input.css.ts +++ b/packages/@luke-ui/react/src/recipes/text-input.css.ts @@ -51,7 +51,7 @@ const textInputConfig = { boxShadow: vars.depth.recessed, cursor: 'text', display: 'inline-flex', - fontFamily: vars.font.family, + fontFamily: vars.font.family.body, inlineSize: '100%', isolation: 'isolate', letterSpacing: vars.font[300].letterSpacing, diff --git a/packages/@luke-ui/react/src/recipes/text.browser.test.ts b/packages/@luke-ui/react/src/recipes/text.browser.test.ts index 517354c2..4ea5d234 100644 --- a/packages/@luke-ui/react/src/recipes/text.browser.test.ts +++ b/packages/@luke-ui/react/src/recipes/text.browser.test.ts @@ -144,7 +144,7 @@ test('all size steps use the generated Capsize trims for every curated font', () const root = mountRoot(className); const rootStyle = getComputedStyle(root); const authoredFontFamily = normalizeFontFamily( - rootStyle.getPropertyValue('--luke-font-family'), + rootStyle.getPropertyValue('--luke-font-family-body'), ); expect(authoredFontFamily).toContain(curatedFamilyIdentity[fontFamily]); diff --git a/packages/@luke-ui/react/src/recipes/text.css.ts b/packages/@luke-ui/react/src/recipes/text.css.ts index 8a755e14..9e52028f 100644 --- a/packages/@luke-ui/react/src/recipes/text.css.ts +++ b/packages/@luke-ui/react/src/recipes/text.css.ts @@ -38,7 +38,7 @@ const lineClampVariants = { const base = styleInLayer('recipes', { color: vars.color.text.primary, - fontFamily: vars.font.family, + fontFamily: vars.font.family.body, minInlineSize: 0, overflowWrap: 'break-word', }); diff --git a/packages/@luke-ui/react/src/strong/index.tsx b/packages/@luke-ui/react/src/strong/index.tsx new file mode 100644 index 00000000..eecfd764 --- /dev/null +++ b/packages/@luke-ui/react/src/strong/index.tsx @@ -0,0 +1,47 @@ +import * as styles from '../recipes/strong.css.js'; +import { Text } from '../text/index.js'; +import type { TextProps } from '../text/index.js'; +import type { DistributiveOmit } from '../types/distributive-omit.js'; +import type { Prettify } from '../types/prettify.js'; +import { cx } from '../utils/index.js'; + +interface StrongStyleProps { + /** + * Clamps text lines. `true` clamps to 1 line; numeric values clamp to 1–5. + */ + lineClamp?: TextProps['lineClamp']; + /** + * Sets text wrapping behavior. + * @default 'unset' + */ + textWrap?: TextProps['textWrap']; +} + +type _StrongOmit = DistributiveOmit, 'color'>; + +interface _StrongProps extends _StrongOmit, StrongStyleProps {} + +/** + * Props for the `Strong` component. + * + * @tier atom + */ +export type StrongProps = Prettify<_StrongProps>; + +/** + * Marks text with strong importance, rendered as ``. + * Composes `Text`, inherits surrounding typography, and applies the emphasis weight. + */ +export function Strong(props: StrongProps) { + const { className, lineClamp, textWrap, ...elementProps } = props; + return ( + + ); +} diff --git a/packages/@luke-ui/react/src/strong/strong.stories.tsx b/packages/@luke-ui/react/src/strong/strong.stories.tsx new file mode 100644 index 00000000..bca0e043 --- /dev/null +++ b/packages/@luke-ui/react/src/strong/strong.stories.tsx @@ -0,0 +1,51 @@ +import { Strong } from '@luke-ui/react/strong'; +import { Text } from '@luke-ui/react/text'; +import { expect } from 'storybook/test'; +import preview from '../../.storybook/preview.js'; + +const meta = preview.meta({ + component: Strong, + tags: ['typography'], + title: 'Typography/Strong', +}); + +export const Default = meta.story({ + args: { + children: 'The quick brown fox jumps over the lazy dog.', + }, +}); + +export const InContext = meta.story({ + play: async ({ canvas, canvasElement }) => { + const element = canvas.getByText('very important'); + const style = getComputedStyle(element); + const emphasisWeight = getComputedStyle(canvasElement) + .getPropertyValue('--luke-font-weight-emphasis') + .trim(); + await expect(style.display).toBe('inline'); + await expect(style.fontWeight).toBe(emphasisWeight); + await expect(getComputedStyle(element, '::before').content).toBe('none'); + await expect(getComputedStyle(element, '::before').display).not.toBe('table'); + await expect(getComputedStyle(element, '::after').content).toBe('none'); + await expect(getComputedStyle(element, '::after').display).not.toBe('table'); + }, + render: () => ( + + This is very important text within a paragraph. + + ), +}); + +export const TextStyles = meta.story({ + play: async ({ canvas }) => { + const style = getComputedStyle(canvas.getByTestId('styled')); + await expect(style.display).toBe('flow-root'); + await expect(style.textWrap).toBe('balance'); + await expect(style.webkitLineClamp).toBe('2'); + }, + render: () => ( + + Strongly important text that is long enough to wrap across multiple lines. + + ), +}); diff --git a/packages/@luke-ui/react/src/styles/stylesheet-contract.test.ts b/packages/@luke-ui/react/src/styles/stylesheet-contract.test.ts index 6abfe552..b12febd5 100644 --- a/packages/@luke-ui/react/src/styles/stylesheet-contract.test.ts +++ b/packages/@luke-ui/react/src/styles/stylesheet-contract.test.ts @@ -126,7 +126,7 @@ function assertStylesheetContract( assertStableSelectors(root); assertSentinel(root, 'luke-ui-reset', 'reset', 'box-sizing', 'border-box'); assertSentinel(root, 'luke-ui-theme', 'theme', 'color', 'var(--luke-color-text-primary)'); - assertSentinel(root, 'luke-ui-theme', 'theme', 'font-family', 'var(--luke-font-family)'); + assertSentinel(root, 'luke-ui-theme', 'theme', 'font-family', 'var(--luke-font-family-body)'); for (const className of recipeClasses) assertClassOwnership(root, className, 'recipes'); for (const className of utilityClasses) assertClassOwnership(root, className, 'utilities'); @@ -323,7 +323,7 @@ const validStylesheetFixture = `@layer reset; @layer theme { .luke-ui-theme { color: var(--luke-color-text-primary); - font-family: var(--luke-font-family); + font-family: var(--luke-font-family-body); } } @layer recipes { diff --git a/packages/@luke-ui/react/src/styles/theme-root.css.ts b/packages/@luke-ui/react/src/styles/theme-root.css.ts index 288567e5..894d68aa 100644 --- a/packages/@luke-ui/react/src/styles/theme-root.css.ts +++ b/packages/@luke-ui/react/src/styles/theme-root.css.ts @@ -5,6 +5,6 @@ import { globalStyleInLayer } from './layered-style.css.js'; globalStyleInLayer('theme', classSelector(lukeUiClassNames.themeRoot), { accentColor: vars.color.intent.accent.surface.solid, color: vars.color.text.primary, - fontFamily: vars.font.family, + fontFamily: vars.font.family.body, ...vars.font[300], }); diff --git a/packages/@luke-ui/react/src/text/index.tsx b/packages/@luke-ui/react/src/text/index.tsx index 8e765bcb..0ab36dee 100644 --- a/packages/@luke-ui/react/src/text/index.tsx +++ b/packages/@luke-ui/react/src/text/index.tsx @@ -30,8 +30,8 @@ interface TextStyleProps { /** Clamps text lines. `true` clamps to 1 line; numeric values clamp to 1–5. */ lineClamp?: TextVariantProps['lineClamp']; /** - * Turns off cap-height trim. Trimming is disabled automatically when `lineClamp` is set. - * @default false + * Turns cap-height trim on or off. When omitted, trimming is disabled for inline or unknown + * element types. Line clamp always disables trim. */ shouldDisableTrim?: TextVariantProps['shouldDisableTrim']; /** @@ -76,12 +76,32 @@ interface _TextProps extends _TextOmit, TextStyleProps {} */ export type TextProps = Prettify<_TextProps>; -/** Styled text with a coordinated type scale and semantic colour controls. */ +const blockTextElementTypes = new Set>([ + 'blockquote', + 'div', + 'h1', + 'h2', + 'h3', + 'h4', + 'h5', + 'h6', + 'p', + 'pre', +]); + +/** + * Styled text with a coordinated type scale and semantic colour controls. + * + * Capsize trim is applied to known block text elements and skipped for inline or unknown element + * types. Set `shouldDisableTrim` explicitly to override this inference. Line clamp always disables + * trim. + */ export function Text(props: TextProps) { const { children, className, color, + elementType = 'span', fontVariantNumeric, fontWeight, isVisuallyHidden, @@ -96,11 +116,17 @@ export function Text(props: TextProps) { ...racProps } = props; const hasLineClamp = lineClamp !== undefined && lineClamp !== false; - const resolvedShouldDisableTrim = shouldDisableTrim ?? hasLineClamp; + + const resolvedShouldDisableTrim: boolean = (() => { + if (hasLineClamp) return true; + if (shouldDisableTrim !== undefined) return shouldDisableTrim; + return !blockTextElementTypes.has(elementType); + })(); return ( { const element = canvas.getByText(/quick brown/); const style = getComputedStyle(element); + const before = getComputedStyle(element, '::before'); + const after = getComputedStyle(element, '::after'); + await expect(style.display).toBe('inline'); await expect(style.fontSize).toBe('16px'); await expect(style.lineHeight).toBe('24px'); await expect(style.fontWeight).toBe('400'); + await expect(before.content).toBe('none'); + await expect(before.display).not.toBe('table'); + await expect(after.content).toBe('none'); + await expect(after.display).not.toBe('table'); }, }); @@ -193,15 +200,35 @@ export const EmptyText = meta.story({ * Change the rendered HTML element with `elementType` when semantics require it. */ export const ElementType = meta.story({ + play: async ({ canvas }) => { + const inline = canvas.getByTestId('inline'); + const custom = canvas.getByTestId('custom'); + const explicitTrim = canvas.getByTestId('explicit-trim'); + const clamped = canvas.getByTestId('clamped'); + const block = canvas.getByTestId('block'); + + await expect(getComputedStyle(inline, '::before').content).toBe('none'); + await expect(getComputedStyle(custom, '::before').content).toBe('none'); + await expect(getComputedStyle(explicitTrim, '::before').display).toBe('table'); + await expect(getComputedStyle(clamped, '::before').content).toBe('none'); + await expect(getComputedStyle(block, '::before').display).toBe('table'); + await expect(getComputedStyle(block, '::after').display).toBe('table'); + }, render: (props) => (
- + span: {storyText} - - strong: {storyText} + + custom: {storyText} + + + span with explicit trim: {storyText} + + + clamped span: {storyText} - + p: {storyText}
diff --git a/packages/@luke-ui/react/src/theme/__fixtures__/v2-goldens/paper.v2.css b/packages/@luke-ui/react/src/theme/__fixtures__/v2-goldens/paper.v2.css index 5389dcd9..7aa55a05 100644 --- a/packages/@luke-ui/react/src/theme/__fixtures__/v2-goldens/paper.v2.css +++ b/packages/@luke-ui/react/src/theme/__fixtures__/v2-goldens/paper.v2.css @@ -45,7 +45,8 @@ --luke-font-900-font-size: 60px; --luke-font-900-letter-spacing: -0.025em; --luke-font-900-line-height: 60px; - --luke-font-family: 'Inter', system-ui, sans-serif; + --luke-font-family-body: 'Inter', system-ui, sans-serif; + --luke-font-family-code: ui-monospace, 'SFMono-Regular', 'SF Mono', Menlo, Consolas, 'Liberation Mono', monospace; --luke-font-weight-body: 400; --luke-font-weight-label: 500; --luke-font-weight-heading: 600; diff --git a/packages/@luke-ui/react/src/theme/__fixtures__/v2-goldens/tactile.v2.css b/packages/@luke-ui/react/src/theme/__fixtures__/v2-goldens/tactile.v2.css index dba8cc3e..78b5d6ad 100644 --- a/packages/@luke-ui/react/src/theme/__fixtures__/v2-goldens/tactile.v2.css +++ b/packages/@luke-ui/react/src/theme/__fixtures__/v2-goldens/tactile.v2.css @@ -45,7 +45,8 @@ --luke-font-900-font-size: 60px; --luke-font-900-letter-spacing: -0.025em; --luke-font-900-line-height: 60px; - --luke-font-family: 'Inter', system-ui, sans-serif; + --luke-font-family-body: 'Inter', system-ui, sans-serif; + --luke-font-family-code: ui-monospace, 'SFMono-Regular', 'SF Mono', Menlo, Consolas, 'Liberation Mono', monospace; --luke-font-weight-body: 400; --luke-font-weight-label: 500; --luke-font-weight-heading: 600; diff --git a/packages/@luke-ui/react/src/theme/build-theme.test.ts b/packages/@luke-ui/react/src/theme/build-theme.test.ts index 775e64c3..8543c33e 100644 --- a/packages/@luke-ui/react/src/theme/build-theme.test.ts +++ b/packages/@luke-ui/react/src/theme/build-theme.test.ts @@ -315,6 +315,17 @@ describe('buildTheme defaults', () => { }); describe('buildTheme foundation validation', () => { + it('does not accept the code stack as a curated Capsize font family', () => { + const codeFontFoundation = { + ...tactileFoundation, + typography: { fontFamily: 'code' }, + } as unknown as ThemeFoundation; + + expect(() => buildTheme(codeFontFoundation)).toThrow( + 'typography.fontFamily: "code" is not a curated font-family choice', + ); + }); + it('rejects empty or stylesheet-breaking depth values', () => { const emptyDepth: ThemeFoundation = { ...tactileFoundation, diff --git a/packages/@luke-ui/react/src/theme/build-theme.ts b/packages/@luke-ui/react/src/theme/build-theme.ts index 5d943b03..d0aea61a 100644 --- a/packages/@luke-ui/react/src/theme/build-theme.ts +++ b/packages/@luke-ui/react/src/theme/build-theme.ts @@ -25,6 +25,7 @@ import type { GeneratedSurfaces } from './elevation.js'; import { generateSurfaces } from './elevation.js'; import type { ThemeFoundation, ThemeModeFoundation, ThemeSourceColors } from './foundation.js'; import { + codeFontFamilyStack, defaultFontFamily, defaultFontWeights, defaultRadius, @@ -611,7 +612,8 @@ function buildIdentityValues(foundation: ThemeFoundation): Record { lineHeight: 'var(--luke-font-100-line-height)', }); expect(vars.font[900].fontSize).toBe('var(--luke-font-900-font-size)'); + expect(vars.font.family).toEqual({ + body: 'var(--luke-font-family-body)', + code: 'var(--luke-font-family-code)', + }); expect(vars.iconSize).toEqual({ large: 'var(--luke-icon-size-large)', medium: 'var(--luke-icon-size-medium)', diff --git a/packages/@luke-ui/react/src/theme/contract.ts b/packages/@luke-ui/react/src/theme/contract.ts index 40896a29..f01ac451 100644 --- a/packages/@luke-ui/react/src/theme/contract.ts +++ b/packages/@luke-ui/react/src/theme/contract.ts @@ -128,7 +128,7 @@ export const themeContractTree = { resting: null, raised: null, }, - /** Composite type steps, font family, and theme-controlled weight roles. */ + /** Composite type steps, font families, and theme-controlled weight roles. */ font: { 100: { ...fontStep, @@ -157,7 +157,10 @@ export const themeContractTree = { 900: { ...fontStep, }, - family: null, + family: { + body: null, + code: null, + }, weight: { body: null, label: null, diff --git a/packages/@luke-ui/react/src/theme/foundation.ts b/packages/@luke-ui/react/src/theme/foundation.ts index 6563cfd0..6fdd8223 100644 --- a/packages/@luke-ui/react/src/theme/foundation.ts +++ b/packages/@luke-ui/react/src/theme/foundation.ts @@ -159,6 +159,10 @@ export const themeFontFamilyStacks = { inter: "'Inter', system-ui, sans-serif", } as const; +/** Fixed neutral font stack for code and keyboard input. */ +export const codeFontFamilyStack = + "ui-monospace, 'SFMono-Regular', 'SF Mono', Menlo, Consolas, 'Liberation Mono', monospace"; + /** Default font-family choice applied when `typography.fontFamily` is omitted. */ export const defaultFontFamily = 'inter'; diff --git a/packages/turbo-generators/src/apply-component-creation-plan.test.ts b/packages/turbo-generators/src/apply-component-creation-plan.test.ts index ccca8c17..e525cad5 100644 --- a/packages/turbo-generators/src/apply-component-creation-plan.test.ts +++ b/packages/turbo-generators/src/apply-component-creation-plan.test.ts @@ -23,7 +23,7 @@ describe('applyComponentCreationPlan', () => { hostedDocsPath: 'components/feedback/status-badge', packageDocsSlug: 'status-badge', packageExportPath: './status-badge', - storySlug: 'status-badge', + exampleSlug: 'status-badge/basic', }, files: [ { @@ -47,6 +47,7 @@ describe('applyComponentCreationPlan', () => { value: 'status-badge', }, ], + textFileAppends: [], }; await applyComponentCreationPlan(root, plan); @@ -67,6 +68,60 @@ describe('applyComponentCreationPlan', () => { }); }); + it('appends lines to a text file', async () => { + const root = await mkdtemp(join(tmpdir(), 'component-plan-')); + roots.push(root); + + const barrelPath = 'packages/@luke-ui/react/src/recipes/index.ts'; + const initialContent = [ + "import '../stylesheet.css.js';", + '', + "export type { ButtonVariants } from '../recipes/button.css.js';", + "export { button } from '../recipes/button.css.js';", + "export { visuallyHidden } from '../recipes/visually-hidden.css.js';", + ].join('\n'); + + await mkdir(join(root, 'packages/@luke-ui/react/src/recipes'), { recursive: true }); + await writeFile(join(root, barrelPath), initialContent, 'utf8'); + + const plan: ComponentCreationPlan = { + expected: { + hostedDocsPath: 'components/actions/status-badge', + packageDocsSlug: 'status-badge', + packageExportPath: './status-badge', + exampleSlug: 'status-badge/basic', + }, + files: [], + jsonEdits: [], + textFileAppends: [ + { + kind: 'text-append', + path: barrelPath, + lines: [ + "export type { StatusBadgeVariants } from '../recipes/status-badge.css.js';", + "export { statusBadge } from '../recipes/status-badge.css.js';", + ], + }, + ], + }; + + await applyComponentCreationPlan(root, plan); + + const result = await readFile(join(root, barrelPath), 'utf8'); + expect(result).toBe( + [ + "import '../stylesheet.css.js';", + '', + "export type { ButtonVariants } from '../recipes/button.css.js';", + "export { button } from '../recipes/button.css.js';", + "export { visuallyHidden } from '../recipes/visually-hidden.css.js';", + "export type { StatusBadgeVariants } from '../recipes/status-badge.css.js';", + "export { statusBadge } from '../recipes/status-badge.css.js';", + '', + ].join('\n'), + ); + }); + it('rejects docs navigation JSON that is not an object', async () => { const root = await mkdtemp(join(tmpdir(), 'component-plan-')); roots.push(root); @@ -80,7 +135,7 @@ describe('applyComponentCreationPlan', () => { hostedDocsPath: 'components/feedback/status-badge', packageDocsSlug: 'status-badge', packageExportPath: './status-badge', - storySlug: 'status-badge', + exampleSlug: 'status-badge/basic', }, files: [], jsonEdits: [ @@ -92,6 +147,7 @@ describe('applyComponentCreationPlan', () => { value: 'feedback', }, ], + textFileAppends: [], }; await expect(applyComponentCreationPlan(root, plan)).rejects.toBeInstanceOf(z.ZodError); diff --git a/packages/turbo-generators/src/apply-component-creation-plan.ts b/packages/turbo-generators/src/apply-component-creation-plan.ts index dd9cfc45..5310bde4 100644 --- a/packages/turbo-generators/src/apply-component-creation-plan.ts +++ b/packages/turbo-generators/src/apply-component-creation-plan.ts @@ -5,6 +5,7 @@ import type { ComponentCreationPlan, JsonArrayAddSortedEdit, PlanFile, + TextFileAppendEdit, } from './component-creation-plan.js'; const docsMetaSchema = z.record(z.string(), z.unknown()); @@ -15,6 +16,7 @@ export async function applyComponentCreationPlan( ): Promise { await Promise.all(plan.files.map((file) => writePlanFile(root, file))); await Promise.all(plan.jsonEdits.map((edit) => applyJsonEdit(root, edit))); + await Promise.all(plan.textFileAppends.map((edit) => applyTextAppendEdit(root, edit))); } async function writePlanFile(root: string, file: PlanFile): Promise { @@ -46,6 +48,15 @@ async function readJson(path: string, title: string): Promise { + const target = join(root, edit.path); + await mkdir(dirname(target), { recursive: true }); + const content = await readFile(target, 'utf8').catch(() => ''); + const trimmed = content.endsWith('\n') ? content.slice(0, -1) : content; + const updated = trimmed + '\n' + edit.lines.join('\n') + '\n'; + await writeFile(target, updated, 'utf8'); +} + function isString(value: unknown): value is string { return typeof value === 'string'; } diff --git a/packages/turbo-generators/src/component-creation-plan.test.ts b/packages/turbo-generators/src/component-creation-plan.test.ts index adec5754..05e0b948 100644 --- a/packages/turbo-generators/src/component-creation-plan.test.ts +++ b/packages/turbo-generators/src/component-creation-plan.test.ts @@ -11,16 +11,16 @@ describe('createComponentPlan', () => { }); expect(plan.expected).toEqual({ + exampleSlug: 'status-badge/basic', hostedDocsPath: 'components/feedback/status-badge', packageDocsSlug: 'status-badge', packageExportPath: './status-badge', - storySlug: 'status-badge', }); expect(plan.files.map((file) => file.path).sort()).toEqual([ 'apps/docs/content/docs/components/feedback/status-badge/index.mdx', 'apps/docs/content/docs/components/feedback/status-badge/meta.json', 'apps/docs/content/docs/components/feedback/status-badge/props.mdx', - 'apps/docs/src/status-badge/status-badge.story.tsx', + 'apps/docs/src/examples/status-badge/basic.tsx', 'packages/@luke-ui/react/src/recipes/status-badge.css.ts', 'packages/@luke-ui/react/src/status-badge/index.tsx', 'packages/@luke-ui/react/src/status-badge/status-badge.stories.tsx', @@ -28,6 +28,12 @@ describe('createComponentPlan', () => { expect( plan.files.find((file) => file.path.endsWith('/status-badge/index.mdx'))?.contents, ).toContain('`StatusBadge` from `@luke-ui/react/status-badge`.'); + expect( + plan.files.find((file) => file.path.endsWith('/status-badge/index.mdx'))?.contents, + ).toContain('src="status-badge/basic"'); + expect( + plan.files.find((file) => file.path.endsWith('/examples/status-badge/basic.tsx'))?.contents, + ).toContain('StatusBadge'); expect(plan.files.find((file) => file.path.endsWith('/status-badge/meta.json'))?.contents).toBe( '{\n\t"pages": ["!props"],\n\t"collapsible": false\n}\n', ); @@ -52,6 +58,16 @@ describe('createComponentPlan', () => { value: 'status-badge', }, ]); + expect(plan.textFileAppends).toEqual([ + { + kind: 'text-append', + path: 'packages/@luke-ui/react/src/recipes/index.ts', + lines: [ + "export type { StatusBadgeVariants } from '../recipes/status-badge.css.js';", + "export { statusBadge } from '../recipes/status-badge.css.js';", + ], + }, + ]); expect( plan.files.find((file) => file.path.endsWith('/status-badge/index.tsx'))?.contents, ).toContain("export interface StatusBadgeProps extends ComponentProps<'div'> {}"); @@ -83,6 +99,7 @@ describe('createComponentPlan', () => { path: 'packages/@luke-ui/react/src/date-field/index.tsx', }), ); + expect(plan.textFileAppends).toEqual([]); }); it('rejects invalid component names before file writes', () => { diff --git a/packages/turbo-generators/src/component-creation-plan.ts b/packages/turbo-generators/src/component-creation-plan.ts index faa5db6e..ba18c9f5 100644 --- a/packages/turbo-generators/src/component-creation-plan.ts +++ b/packages/turbo-generators/src/component-creation-plan.ts @@ -21,15 +21,22 @@ export interface JsonArrayAddSortedEdit { value: string; } +export interface TextFileAppendEdit { + kind: 'text-append'; + lines: Array; + path: string; +} + export interface ComponentCreationPlan { expected: { hostedDocsPath: string; packageDocsSlug: string; packageExportPath: string; - storySlug: string; + exampleSlug: string; }; files: Array; jsonEdits: Array; + textFileAppends: Array; } const COMPONENT_NAME_RE = /^[A-Za-z][A-Za-z0-9-]*$/; @@ -61,8 +68,8 @@ export function createComponentPlan(input: CreateComponentInput): ComponentCreat path: `packages/@luke-ui/react/src/${name}/${name}.stories.tsx`, }, { - contents: renderHostedStory({ name, pascalName }), - path: `apps/docs/src/${name}/${name}.story.tsx`, + contents: renderHostedExample({ name, pascalName }), + path: `apps/docs/src/examples/${name}/basic.tsx`, }, { contents: renderHostedDocsPage({ displayName, name, packagePath, pascalName }), @@ -85,12 +92,20 @@ export function createComponentPlan(input: CreateComponentInput): ComponentCreat }); } + const recipeBarrelLines = + input.styling === 'recipe' + ? [ + `export type { ${pascalName}Variants } from '../recipes/${name}.css.js';`, + `export { ${camelName} } from '../recipes/${name}.css.js';`, + ] + : []; + return { expected: { hostedDocsPath: `components/${docsGroup}/${name}`, packageDocsSlug: name, packageExportPath: `./${name}`, - storySlug: name, + exampleSlug: `${name}/basic`, }, files, jsonEdits: [ @@ -109,6 +124,16 @@ export function createComponentPlan(input: CreateComponentInput): ComponentCreat value: name, }, ], + textFileAppends: + recipeBarrelLines.length > 0 + ? [ + { + kind: 'text-append' as const, + lines: recipeBarrelLines, + path: 'packages/@luke-ui/react/src/recipes/index.ts', + }, + ] + : [], }; } @@ -187,18 +212,8 @@ export function ${input.pascalName}(props: ${input.pascalName}Props): JSX.Elemen `; } -function renderPackageDocs(input: { - name: string; - packagePath: string; - pascalName: string; -}): string { - return `\`${input.pascalName}\` from \`${input.packagePath}\`. - -\`\`\`tsx -<${input.pascalName}>Label -\`\`\` - -## Best Practices +function renderPackageGuidance(): string { + return `## Best practices | Guidance | Practices | | -------- | --------- | @@ -234,33 +249,12 @@ export const Default = meta.story({ `; } -function renderHostedStory(input: { name: string; pascalName: string }): string { - return `import type { ${input.pascalName}Props } from '@luke-ui/react/${input.name}'; -import { ${input.pascalName} } from '@luke-ui/react/${input.name}'; -import { defineStoryFactory } from '@fumadocs/story/vite/client'; -import { StoryWrapper } from '../lib/story-wrapper'; - -const { defineStory } = defineStoryFactory(); - -// Add more prop names here as the component grows, in the order they should appear -// in the controls panel. Only include props a control can meaningfully render — -// drop event handlers, refs, and other escape hatches. -type ${input.pascalName}StoryProps = Pick<${input.pascalName}Props, 'children'>; - -function ${input.pascalName}Playground(props: ${input.pascalName}StoryProps) { -\treturn ( -\t\t -\t\t\t<${input.pascalName} {...props} /> -\t\t -\t); -} +function renderHostedExample(input: { name: string; pascalName: string }): string { + return `import { ${input.pascalName} } from '@luke-ui/react/${input.name}'; -export const story = defineStory({ -\tComponent: ${input.pascalName}Playground, -\targs: { -\t\tinitial: { children: '${input.pascalName}' }, -\t}, -}); +export default function Basic() { +\treturn <${input.pascalName}>${input.pascalName}; +} `; } @@ -275,11 +269,15 @@ title: ${input.displayName} description: ${input.displayName} component. --- -import { story } from '../../../../../src/${input.name}/${input.name}.story'; +\`${input.pascalName}\` from \`${input.packagePath}\`. - + -${renderPackageDocs(input)} +${renderPackageGuidance()} `; } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index d83843c0..c6637ba2 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -215,7 +215,7 @@ catalogs: version: 4.4.3 overrides: - vite: npm:@voidzero-dev/vite-plus-core@0.2.2 + vite: npm:@voidzero-dev/vite-plus-core@0.2.5 vitest: 4.1.10 importers: @@ -263,10 +263,10 @@ importers: version: 1.170.18(react-dom@19.2.7(react@19.2.7))(react@19.2.7) '@tanstack/react-start': specifier: 'catalog:' - version: 1.168.32(@voidzero-dev/vite-plus-core@0.2.2(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0))(crossws@0.4.10(srvx@0.11.22))(esbuild@0.28.1)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(rolldown@1.1.5)(rollup@4.62.2)(supports-color@7.2.0) + version: 1.168.32(@voidzero-dev/vite-plus-core@0.2.5(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0))(crossws@0.4.10(srvx@0.11.22))(esbuild@0.28.1)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(rolldown@1.1.5)(rollup@4.62.2)(supports-color@7.2.0) '@tanstack/start-static-server-functions': specifier: 'catalog:' - version: 1.167.19(@tanstack/react-start@1.168.32(@voidzero-dev/vite-plus-core@0.2.2(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0))(crossws@0.4.10(srvx@0.11.22))(esbuild@0.28.1)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(rolldown@1.1.5)(rollup@4.62.2)(supports-color@7.2.0)) + version: 1.167.19(@tanstack/react-start@1.168.32(@voidzero-dev/vite-plus-core@0.2.5(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0))(crossws@0.4.10(srvx@0.11.22))(esbuild@0.28.1)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(rolldown@1.1.5)(rollup@4.62.2)(supports-color@7.2.0)) '@vanilla-extract/recipes': specifier: 'catalog:' version: 0.5.7(@vanilla-extract/css@1.21.1) @@ -275,7 +275,7 @@ importers: version: 16.11.5(@mdx-js/mdx@3.1.1(supports-color@7.2.0))(@tanstack/react-router@1.170.18(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@types/estree-jsx@1.0.5)(@types/hast@3.0.5)(@types/mdast@4.0.4)(@types/react@19.2.17)(lucide-react@1.25.0(react@19.2.7))(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(supports-color@7.2.0)(zod@4.4.3) fumadocs-mdx: specifier: 'catalog:' - version: 15.2.0(@types/mdast@4.0.4)(@types/mdx@2.0.14)(@types/react@19.2.17)(@voidzero-dev/vite-plus-core@0.2.2(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0))(fumadocs-core@16.11.5(@mdx-js/mdx@3.1.1(supports-color@7.2.0))(@tanstack/react-router@1.170.18(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@types/estree-jsx@1.0.5)(@types/hast@3.0.5)(@types/mdast@4.0.4)(@types/react@19.2.17)(lucide-react@1.25.0(react@19.2.7))(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(supports-color@7.2.0)(zod@4.4.3))(react@19.2.7)(rolldown@1.1.5)(supports-color@7.2.0) + version: 15.2.0(@types/mdast@4.0.4)(@types/mdx@2.0.14)(@types/react@19.2.17)(@voidzero-dev/vite-plus-core@0.2.5(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0))(fumadocs-core@16.11.5(@mdx-js/mdx@3.1.1(supports-color@7.2.0))(@tanstack/react-router@1.170.18(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@types/estree-jsx@1.0.5)(@types/hast@3.0.5)(@types/mdast@4.0.4)(@types/react@19.2.17)(lucide-react@1.25.0(react@19.2.7))(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(supports-color@7.2.0)(zod@4.4.3))(react@19.2.7)(rolldown@1.1.5)(supports-color@7.2.0) fumadocs-typescript: specifier: 'catalog:' version: 5.3.0(5c968c361dc5d64bb8b3f0cebc10fc94) @@ -313,18 +313,18 @@ importers: specifier: 'catalog:' version: 3.35.1 vite: - specifier: npm:@voidzero-dev/vite-plus-core@0.2.2 - version: '@voidzero-dev/vite-plus-core@0.2.2(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0)' + specifier: npm:@voidzero-dev/vite-plus-core@0.2.5 + version: '@voidzero-dev/vite-plus-core@0.2.5(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0)' zod: specifier: 'catalog:' version: 4.4.3 devDependencies: '@netlify/vite-plugin-tanstack-start': specifier: 'catalog:' - version: 1.3.17(@tanstack/react-start@1.168.32(@voidzero-dev/vite-plus-core@0.2.2(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0))(crossws@0.4.10(srvx@0.11.22))(esbuild@0.28.1)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(rolldown@1.1.5)(rollup@4.62.2)(supports-color@7.2.0))(@voidzero-dev/vite-plus-core@0.2.2(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0))(rollup@4.62.2)(srvx@0.11.22)(supports-color@7.2.0) + version: 1.3.17(@tanstack/react-start@1.168.32(@voidzero-dev/vite-plus-core@0.2.5(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0))(crossws@0.4.10(srvx@0.11.22))(esbuild@0.28.1)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(rolldown@1.1.5)(rollup@4.62.2)(supports-color@7.2.0))(@voidzero-dev/vite-plus-core@0.2.5(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0))(rollup@4.62.2)(srvx@0.11.22)(supports-color@7.2.0) '@tailwindcss/vite': specifier: 'catalog:' - version: 4.3.3(@voidzero-dev/vite-plus-core@0.2.2(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0)) + version: 4.3.3(@voidzero-dev/vite-plus-core@0.2.5(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0)) '@tanstack/router-cli': specifier: 'catalog:' version: 1.167.21(supports-color@7.2.0) @@ -342,10 +342,10 @@ importers: version: 19.2.3(@types/react@19.2.17) '@vitejs/plugin-react': specifier: 'catalog:' - version: 6.0.3(@voidzero-dev/vite-plus-core@0.2.2(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0))(babel-plugin-react-compiler@1.0.0) + version: 6.0.3(@voidzero-dev/vite-plus-core@0.2.5(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0))(babel-plugin-react-compiler@1.0.0) '@vitest/browser-playwright': specifier: 'catalog:' - version: 4.1.10(@voidzero-dev/vite-plus-core@0.2.2(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0))(playwright@1.61.1)(vitest@4.1.10) + version: 4.1.10(@voidzero-dev/vite-plus-core@0.2.5(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0))(playwright@1.61.1)(vitest@4.1.10) playwright: specifier: 'catalog:' version: 1.61.1 @@ -363,10 +363,10 @@ importers: version: 5.1.0 vite-plus: specifier: 'catalog:' - version: 0.2.5(@arethetypeswrong/core@0.18.5)(@opentelemetry/api@1.9.0)(@types/node@26.1.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.10)(@voidzero-dev/vite-plus-core@0.2.2(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0))(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0) + version: 0.2.5(@arethetypeswrong/core@0.18.5)(@opentelemetry/api@1.9.0)(@types/node@26.1.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.10)(@voidzero-dev/vite-plus-core@0.2.5(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0))(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0) vitest: specifier: 4.1.10 - version: 4.1.10(@opentelemetry/api@1.9.0)(@types/node@26.1.1)(@vitest/browser-playwright@4.1.10)(@vitest/browser-preview@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.10)(@voidzero-dev/vite-plus-core@0.2.2(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0)) + version: 4.1.10(@opentelemetry/api@1.9.0)(@types/node@26.1.1)(@vitest/browser-playwright@4.1.10)(@vitest/browser-preview@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.10)(@voidzero-dev/vite-plus-core@0.2.5(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0)) packages/@luke-ui/rainbow-sprinkles: dependencies: @@ -419,16 +419,16 @@ importers: version: 7.1.0(@babel/core@7.29.7(supports-color@7.2.0))(@types/babel__core@7.20.5)(rollup@4.62.2)(supports-color@7.2.0) '@storybook/addon-a11y': specifier: 'catalog:' - version: 10.5.3(storybook@10.5.3(@types/react@19.2.17)(prettier@3.9.5)(react@19.2.7)(vite-plus@0.2.5(@arethetypeswrong/core@0.18.5)(@opentelemetry/api@1.9.0)(@types/node@26.1.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.10)(@voidzero-dev/vite-plus-core@0.2.2(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0))(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0))) + version: 10.5.3(storybook@10.5.3(@types/react@19.2.17)(prettier@3.9.5)(react@19.2.7)(vite-plus@0.2.5(@arethetypeswrong/core@0.18.5)(@opentelemetry/api@1.9.0)(@types/node@26.1.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.10)(@voidzero-dev/vite-plus-core@0.2.5(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0))(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0))) '@storybook/addon-docs': specifier: 'catalog:' - version: 10.5.3(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(@voidzero-dev/vite-plus-core@0.2.2(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0))(esbuild@0.28.1)(rollup@4.62.2)(storybook@10.5.3(@types/react@19.2.17)(prettier@3.9.5)(react@19.2.7)(vite-plus@0.2.5(@arethetypeswrong/core@0.18.5)(@opentelemetry/api@1.9.0)(@types/node@26.1.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.10)(@voidzero-dev/vite-plus-core@0.2.2(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0))(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0))) + version: 10.5.3(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(@voidzero-dev/vite-plus-core@0.2.5(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0))(esbuild@0.28.1)(rollup@4.62.2)(storybook@10.5.3(@types/react@19.2.17)(prettier@3.9.5)(react@19.2.7)(vite-plus@0.2.5(@arethetypeswrong/core@0.18.5)(@opentelemetry/api@1.9.0)(@types/node@26.1.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.10)(@voidzero-dev/vite-plus-core@0.2.5(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0))(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0))) '@storybook/addon-vitest': specifier: 'catalog:' - version: 10.5.3(@vitest/browser-playwright@4.1.10)(@vitest/browser@4.1.10(@voidzero-dev/vite-plus-core@0.2.2(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0))(vitest@4.1.10))(@vitest/runner@4.1.10)(react@19.2.7)(storybook@10.5.3(@types/react@19.2.17)(prettier@3.9.5)(react@19.2.7)(vite-plus@0.2.5(@arethetypeswrong/core@0.18.5)(@opentelemetry/api@1.9.0)(@types/node@26.1.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.10)(@voidzero-dev/vite-plus-core@0.2.2(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0))(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0)))(vitest@4.1.10) + version: 10.5.3(@vitest/browser-playwright@4.1.10)(@vitest/browser@4.1.10(@voidzero-dev/vite-plus-core@0.2.5(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0))(vitest@4.1.10))(@vitest/runner@4.1.10)(react@19.2.7)(storybook@10.5.3(@types/react@19.2.17)(prettier@3.9.5)(react@19.2.7)(vite-plus@0.2.5(@arethetypeswrong/core@0.18.5)(@opentelemetry/api@1.9.0)(@types/node@26.1.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.10)(@voidzero-dev/vite-plus-core@0.2.5(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0))(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0)))(vitest@4.1.10) '@storybook/react-vite': specifier: 'catalog:' - version: 10.5.3(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(@voidzero-dev/vite-plus-core@0.2.2(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0))(esbuild@0.28.1)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(rollup@4.62.2)(storybook@10.5.3(@types/react@19.2.17)(prettier@3.9.5)(react@19.2.7)(vite-plus@0.2.5(@arethetypeswrong/core@0.18.5)(@opentelemetry/api@1.9.0)(@types/node@26.1.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.10)(@voidzero-dev/vite-plus-core@0.2.2(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0))(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0)))(supports-color@7.2.0)(typescript@6.0.3) + version: 10.5.3(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(@voidzero-dev/vite-plus-core@0.2.5(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0))(esbuild@0.28.1)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(rollup@4.62.2)(storybook@10.5.3(@types/react@19.2.17)(prettier@3.9.5)(react@19.2.7)(vite-plus@0.2.5(@arethetypeswrong/core@0.18.5)(@opentelemetry/api@1.9.0)(@types/node@26.1.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.10)(@voidzero-dev/vite-plus-core@0.2.5(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0))(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0)))(supports-color@7.2.0)(typescript@6.0.3) '@types/node': specifier: 'catalog:' version: 26.1.1 @@ -446,13 +446,13 @@ importers: version: 1.5.4(rollup@4.62.2)(supports-color@7.2.0) '@vanilla-extract/vite-plugin': specifier: 'catalog:' - version: 5.2.5(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(@voidzero-dev/vite-plus-core@0.2.2(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0))(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(supports-color@7.2.0)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0) + version: 5.2.5(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(@voidzero-dev/vite-plus-core@0.2.5(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0))(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(supports-color@7.2.0)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0) '@vitejs/plugin-react': specifier: 'catalog:' - version: 6.0.3(@voidzero-dev/vite-plus-core@0.2.2(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0))(babel-plugin-react-compiler@1.0.0) + version: 6.0.3(@voidzero-dev/vite-plus-core@0.2.5(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0))(babel-plugin-react-compiler@1.0.0) '@vitest/browser-playwright': specifier: 'catalog:' - version: 4.1.10(@voidzero-dev/vite-plus-core@0.2.2(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0))(playwright@1.61.1)(vitest@4.1.10) + version: 4.1.10(@voidzero-dev/vite-plus-core@0.2.5(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0))(playwright@1.61.1)(vitest@4.1.10) '@vitest/coverage-v8': specifier: 'catalog:' version: 4.1.10(@vitest/browser@4.1.10)(vitest@4.1.10) @@ -491,7 +491,7 @@ importers: version: 19.2.7(react@19.2.7) storybook: specifier: 'catalog:' - version: 10.5.3(@types/react@19.2.17)(prettier@3.9.5)(react@19.2.7)(vite-plus@0.2.5(@arethetypeswrong/core@0.18.5)(@opentelemetry/api@1.9.0)(@types/node@26.1.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.10)(@voidzero-dev/vite-plus-core@0.2.2(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0))(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0)) + version: 10.5.3(@types/react@19.2.17)(prettier@3.9.5)(react@19.2.7)(vite-plus@0.2.5(@arethetypeswrong/core@0.18.5)(@opentelemetry/api@1.9.0)(@types/node@26.1.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.10)(@voidzero-dev/vite-plus-core@0.2.5(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0))(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0)) tsx: specifier: 'catalog:' version: 4.23.1 @@ -502,14 +502,14 @@ importers: specifier: 'catalog:' version: 1.1.2 vite: - specifier: npm:@voidzero-dev/vite-plus-core@0.2.2 - version: '@voidzero-dev/vite-plus-core@0.2.2(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0)' + specifier: npm:@voidzero-dev/vite-plus-core@0.2.5 + version: '@voidzero-dev/vite-plus-core@0.2.5(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0)' vite-plus: specifier: 'catalog:' - version: 0.2.5(@arethetypeswrong/core@0.18.5)(@opentelemetry/api@1.9.0)(@types/node@26.1.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.10)(@voidzero-dev/vite-plus-core@0.2.2(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0))(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0) + version: 0.2.5(@arethetypeswrong/core@0.18.5)(@opentelemetry/api@1.9.0)(@types/node@26.1.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.10)(@voidzero-dev/vite-plus-core@0.2.5(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0))(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0) vitest: specifier: 4.1.10 - version: 4.1.10(@opentelemetry/api@1.9.0)(@types/node@26.1.1)(@vitest/browser-playwright@4.1.10)(@vitest/browser-preview@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.10)(@voidzero-dev/vite-plus-core@0.2.2(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0)) + version: 4.1.10(@opentelemetry/api@1.9.0)(@types/node@26.1.1)(@vitest/browser-playwright@4.1.10)(@vitest/browser-preview@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.10)(@voidzero-dev/vite-plus-core@0.2.5(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0)) packages/turbo-generators: devDependencies: @@ -1997,10 +1997,6 @@ packages: cpu: [x64] os: [win32] - '@oxc-project/runtime@0.138.0': - resolution: {integrity: sha512-yHhoXsN8tYxgdJCdD91PbySNjEEaBX/tH2OQRDXJpsQv5b184oC4/qVbU7qlblvfil/JP15Lh2HW7+HN5DS90Q==} - engines: {node: ^20.19.0 || >=22.12.0} - '@oxc-project/runtime@0.139.0': resolution: {integrity: sha512-WnuGdceWtRdqD7f3alOIDXN6bnGuGtFjtQf/dHjzgn2im7eKaYRJTEl2T1kFEWPhBWCDk+UDYgsTLUE5L6jc0w==} engines: {node: ^20.19.0 || >=22.12.0} @@ -2011,9 +2007,6 @@ packages: '@oxc-project/types@0.137.0': resolution: {integrity: sha512-WT+Gb24i8hmvo85AIv2oEYouEXkRlKAlT9WaCa3TfLgNCN+GhrJOGZuIlMouAh38Qe4QOx26eUOVsq70qXrywA==} - '@oxc-project/types@0.138.0': - resolution: {integrity: sha512-1a7ZKmrRTCoN1XMZ4L0PyyqrMnrNlLyPuOkdSX2MZg7IiIGRUyurNhAm73ptDOraoBcIordsIGKNPKUzy3ZmfA==} - '@oxc-project/types@0.139.0': resolution: {integrity: sha512-r9gHphtCs+1M7J0pw6Sn/hh/Wpa/iQrOOkrNAlVLF/gHq+/CJmHIWKKUUhdWjcD6CIa8idarspCsASiXCXvFUw==} @@ -3836,63 +3829,6 @@ packages: '@vitest/utils@4.1.10': resolution: {integrity: sha512-fy9am/HWxbaGt/Sawrp90vt6Y6jQwf1RX77cz3uwoJwJVMli/e1IEwRPnMNJ7vKfPTwo0diXifkpPvwH9v7nGA==} - '@voidzero-dev/vite-plus-core@0.2.2': - resolution: {integrity: sha512-yAbKexF3npOGjg1N5EtXxun+7vdM/0x6QE5jucO/dv0LFhCAIzSN3UvLVCeamJt/Bz3jt7DLqQHEgXXrjy8drA==} - engines: {node: ^20.19.0 || ^22.18.0 || >=24.11.0} - peerDependencies: - '@arethetypeswrong/core': ^0.18.1 - '@types/node': ^20.19.0 || >=22.12.0 - '@vitejs/devtools': ^0.3.0 - esbuild: ^0.27.0 || ^0.28.0 - jiti: '>=1.21.0' - less: ^4.0.0 - publint: ^0.3.8 - sass: ^1.70.0 - sass-embedded: ^1.70.0 - stylus: '>=0.54.8' - sugarss: ^5.0.0 - terser: ^5.16.0 - tsx: ^4.8.1 - typescript: ^5.0.0 || ^6.0.0 - unplugin-unused: ^0.5.0 - unrun: '*' - yaml: ^2.4.2 - peerDependenciesMeta: - '@arethetypeswrong/core': - optional: true - '@types/node': - optional: true - '@vitejs/devtools': - optional: true - esbuild: - optional: true - jiti: - optional: true - less: - optional: true - publint: - optional: true - sass: - optional: true - sass-embedded: - optional: true - stylus: - optional: true - sugarss: - optional: true - terser: - optional: true - tsx: - optional: true - typescript: - optional: true - unplugin-unused: - optional: true - unrun: - optional: true - yaml: - optional: true - '@voidzero-dev/vite-plus-core@0.2.5': resolution: {integrity: sha512-fxMGImIOyOipwCX6udOD1S9Q1xXfaimv6kcRgLWBxLsy7oryAyXqVfoYr7bmmAdSDlIutHRgvA6eiqfJjARTHA==} engines: {node: ^20.19.0 || ^22.18.0 || >=24.11.0} @@ -9299,11 +9235,11 @@ snapshots: dependencies: minipass: 7.1.3 - '@joshwooding/vite-plugin-react-docgen-typescript@0.7.0(@voidzero-dev/vite-plus-core@0.2.2(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0))(typescript@6.0.3)': + '@joshwooding/vite-plugin-react-docgen-typescript@0.7.0(@voidzero-dev/vite-plus-core@0.2.5(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0))(typescript@6.0.3)': dependencies: glob: 13.0.6 react-docgen-typescript: 2.4.0(typescript@6.0.3) - vite: '@voidzero-dev/vite-plus-core@0.2.2(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0)' + vite: '@voidzero-dev/vite-plus-core@0.2.5(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0)' optionalDependencies: typescript: 6.0.3 @@ -9705,12 +9641,12 @@ snapshots: '@netlify/types@2.8.0': {} - '@netlify/vite-plugin-tanstack-start@1.3.17(@tanstack/react-start@1.168.32(@voidzero-dev/vite-plus-core@0.2.2(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0))(crossws@0.4.10(srvx@0.11.22))(esbuild@0.28.1)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(rolldown@1.1.5)(rollup@4.62.2)(supports-color@7.2.0))(@voidzero-dev/vite-plus-core@0.2.2(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0))(rollup@4.62.2)(srvx@0.11.22)(supports-color@7.2.0)': + '@netlify/vite-plugin-tanstack-start@1.3.17(@tanstack/react-start@1.168.32(@voidzero-dev/vite-plus-core@0.2.5(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0))(crossws@0.4.10(srvx@0.11.22))(esbuild@0.28.1)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(rolldown@1.1.5)(rollup@4.62.2)(supports-color@7.2.0))(@voidzero-dev/vite-plus-core@0.2.5(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0))(rollup@4.62.2)(srvx@0.11.22)(supports-color@7.2.0)': dependencies: - '@netlify/vite-plugin': 2.12.9(@voidzero-dev/vite-plus-core@0.2.2(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0))(rollup@4.62.2)(srvx@0.11.22)(supports-color@7.2.0) - vite: '@voidzero-dev/vite-plus-core@0.2.2(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0)' + '@netlify/vite-plugin': 2.12.9(@voidzero-dev/vite-plus-core@0.2.5(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0))(rollup@4.62.2)(srvx@0.11.22)(supports-color@7.2.0) + vite: '@voidzero-dev/vite-plus-core@0.2.5(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0)' optionalDependencies: - '@tanstack/react-start': 1.168.32(@voidzero-dev/vite-plus-core@0.2.2(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0))(crossws@0.4.10(srvx@0.11.22))(esbuild@0.28.1)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(rolldown@1.1.5)(rollup@4.62.2)(supports-color@7.2.0) + '@tanstack/react-start': 1.168.32(@voidzero-dev/vite-plus-core@0.2.5(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0))(crossws@0.4.10(srvx@0.11.22))(esbuild@0.28.1)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(rolldown@1.1.5)(rollup@4.62.2)(supports-color@7.2.0) transitivePeerDependencies: - '@azure/app-configuration' - '@azure/cosmos' @@ -9740,12 +9676,12 @@ snapshots: - supports-color - uploadthing - '@netlify/vite-plugin@2.12.9(@voidzero-dev/vite-plus-core@0.2.2(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0))(rollup@4.62.2)(srvx@0.11.22)(supports-color@7.2.0)': + '@netlify/vite-plugin@2.12.9(@voidzero-dev/vite-plus-core@0.2.5(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0))(rollup@4.62.2)(srvx@0.11.22)(supports-color@7.2.0)': dependencies: '@netlify/dev': 4.18.9(rollup@4.62.2)(srvx@0.11.22)(supports-color@7.2.0) '@netlify/dev-utils': 4.4.6 dedent: 1.7.2 - vite: '@voidzero-dev/vite-plus-core@0.2.2(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0)' + vite: '@voidzero-dev/vite-plus-core@0.2.5(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0)' transitivePeerDependencies: - '@azure/app-configuration' - '@azure/cosmos' @@ -10022,16 +9958,12 @@ snapshots: '@oxc-parser/binding-win32-x64-msvc@0.137.0': optional: true - '@oxc-project/runtime@0.138.0': {} - '@oxc-project/runtime@0.139.0': {} '@oxc-project/types@0.127.0': {} '@oxc-project/types@0.137.0': {} - '@oxc-project/types@0.138.0': {} - '@oxc-project/types@0.139.0': {} '@oxc-resolver/binding-android-arm-eabi@11.21.3': @@ -10860,21 +10792,21 @@ snapshots: '@standard-schema/spec@1.1.0': {} - '@storybook/addon-a11y@10.5.3(storybook@10.5.3(@types/react@19.2.17)(prettier@3.9.5)(react@19.2.7)(vite-plus@0.2.5(@arethetypeswrong/core@0.18.5)(@opentelemetry/api@1.9.0)(@types/node@26.1.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.10)(@voidzero-dev/vite-plus-core@0.2.2(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0))(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0)))': + '@storybook/addon-a11y@10.5.3(storybook@10.5.3(@types/react@19.2.17)(prettier@3.9.5)(react@19.2.7)(vite-plus@0.2.5(@arethetypeswrong/core@0.18.5)(@opentelemetry/api@1.9.0)(@types/node@26.1.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.10)(@voidzero-dev/vite-plus-core@0.2.5(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0))(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0)))': dependencies: '@storybook/global': 5.0.0 axe-core: 4.12.1 - storybook: 10.5.3(@types/react@19.2.17)(prettier@3.9.5)(react@19.2.7)(vite-plus@0.2.5(@arethetypeswrong/core@0.18.5)(@opentelemetry/api@1.9.0)(@types/node@26.1.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.10)(@voidzero-dev/vite-plus-core@0.2.2(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0))(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0)) + storybook: 10.5.3(@types/react@19.2.17)(prettier@3.9.5)(react@19.2.7)(vite-plus@0.2.5(@arethetypeswrong/core@0.18.5)(@opentelemetry/api@1.9.0)(@types/node@26.1.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.10)(@voidzero-dev/vite-plus-core@0.2.5(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0))(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0)) - '@storybook/addon-docs@10.5.3(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(@voidzero-dev/vite-plus-core@0.2.2(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0))(esbuild@0.28.1)(rollup@4.62.2)(storybook@10.5.3(@types/react@19.2.17)(prettier@3.9.5)(react@19.2.7)(vite-plus@0.2.5(@arethetypeswrong/core@0.18.5)(@opentelemetry/api@1.9.0)(@types/node@26.1.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.10)(@voidzero-dev/vite-plus-core@0.2.2(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0))(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0)))': + '@storybook/addon-docs@10.5.3(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(@voidzero-dev/vite-plus-core@0.2.5(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0))(esbuild@0.28.1)(rollup@4.62.2)(storybook@10.5.3(@types/react@19.2.17)(prettier@3.9.5)(react@19.2.7)(vite-plus@0.2.5(@arethetypeswrong/core@0.18.5)(@opentelemetry/api@1.9.0)(@types/node@26.1.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.10)(@voidzero-dev/vite-plus-core@0.2.5(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0))(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0)))': dependencies: '@mdx-js/react': 3.1.1(@types/react@19.2.17)(react@19.2.7) - '@storybook/csf-plugin': 10.5.3(@voidzero-dev/vite-plus-core@0.2.2(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0))(esbuild@0.28.1)(rollup@4.62.2)(storybook@10.5.3(@types/react@19.2.17)(prettier@3.9.5)(react@19.2.7)(vite-plus@0.2.5(@arethetypeswrong/core@0.18.5)(@opentelemetry/api@1.9.0)(@types/node@26.1.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.10)(@voidzero-dev/vite-plus-core@0.2.2(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0))(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0))) + '@storybook/csf-plugin': 10.5.3(@voidzero-dev/vite-plus-core@0.2.5(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0))(esbuild@0.28.1)(rollup@4.62.2)(storybook@10.5.3(@types/react@19.2.17)(prettier@3.9.5)(react@19.2.7)(vite-plus@0.2.5(@arethetypeswrong/core@0.18.5)(@opentelemetry/api@1.9.0)(@types/node@26.1.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.10)(@voidzero-dev/vite-plus-core@0.2.5(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0))(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0))) '@storybook/icons': 2.1.0(react@19.2.7) - '@storybook/react-dom-shim': 10.5.3(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(storybook@10.5.3(@types/react@19.2.17)(prettier@3.9.5)(react@19.2.7)(vite-plus@0.2.5(@arethetypeswrong/core@0.18.5)(@opentelemetry/api@1.9.0)(@types/node@26.1.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.10)(@voidzero-dev/vite-plus-core@0.2.2(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0))(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0))) + '@storybook/react-dom-shim': 10.5.3(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(storybook@10.5.3(@types/react@19.2.17)(prettier@3.9.5)(react@19.2.7)(vite-plus@0.2.5(@arethetypeswrong/core@0.18.5)(@opentelemetry/api@1.9.0)(@types/node@26.1.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.10)(@voidzero-dev/vite-plus-core@0.2.5(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0))(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0))) react: 19.2.7 react-dom: 19.2.7(react@19.2.7) - storybook: 10.5.3(@types/react@19.2.17)(prettier@3.9.5)(react@19.2.7)(vite-plus@0.2.5(@arethetypeswrong/core@0.18.5)(@opentelemetry/api@1.9.0)(@types/node@26.1.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.10)(@voidzero-dev/vite-plus-core@0.2.2(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0))(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0)) + storybook: 10.5.3(@types/react@19.2.17)(prettier@3.9.5)(react@19.2.7)(vite-plus@0.2.5(@arethetypeswrong/core@0.18.5)(@opentelemetry/api@1.9.0)(@types/node@26.1.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.10)(@voidzero-dev/vite-plus-core@0.2.5(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0))(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0)) ts-dedent: 2.3.0 optionalDependencies: '@types/react': 19.2.17 @@ -10885,38 +10817,38 @@ snapshots: - vite - webpack - '@storybook/addon-vitest@10.5.3(@vitest/browser-playwright@4.1.10)(@vitest/browser@4.1.10(@voidzero-dev/vite-plus-core@0.2.2(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0))(vitest@4.1.10))(@vitest/runner@4.1.10)(react@19.2.7)(storybook@10.5.3(@types/react@19.2.17)(prettier@3.9.5)(react@19.2.7)(vite-plus@0.2.5(@arethetypeswrong/core@0.18.5)(@opentelemetry/api@1.9.0)(@types/node@26.1.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.10)(@voidzero-dev/vite-plus-core@0.2.2(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0))(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0)))(vitest@4.1.10)': + '@storybook/addon-vitest@10.5.3(@vitest/browser-playwright@4.1.10)(@vitest/browser@4.1.10(@voidzero-dev/vite-plus-core@0.2.5(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0))(vitest@4.1.10))(@vitest/runner@4.1.10)(react@19.2.7)(storybook@10.5.3(@types/react@19.2.17)(prettier@3.9.5)(react@19.2.7)(vite-plus@0.2.5(@arethetypeswrong/core@0.18.5)(@opentelemetry/api@1.9.0)(@types/node@26.1.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.10)(@voidzero-dev/vite-plus-core@0.2.5(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0))(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0)))(vitest@4.1.10)': dependencies: '@storybook/global': 5.0.0 '@storybook/icons': 2.1.0(react@19.2.7) - storybook: 10.5.3(@types/react@19.2.17)(prettier@3.9.5)(react@19.2.7)(vite-plus@0.2.5(@arethetypeswrong/core@0.18.5)(@opentelemetry/api@1.9.0)(@types/node@26.1.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.10)(@voidzero-dev/vite-plus-core@0.2.2(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0))(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0)) + storybook: 10.5.3(@types/react@19.2.17)(prettier@3.9.5)(react@19.2.7)(vite-plus@0.2.5(@arethetypeswrong/core@0.18.5)(@opentelemetry/api@1.9.0)(@types/node@26.1.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.10)(@voidzero-dev/vite-plus-core@0.2.5(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0))(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0)) optionalDependencies: - '@vitest/browser': 4.1.10(@voidzero-dev/vite-plus-core@0.2.2(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0))(vitest@4.1.10) - '@vitest/browser-playwright': 4.1.10(@voidzero-dev/vite-plus-core@0.2.2(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0))(playwright@1.61.1)(vitest@4.1.10) + '@vitest/browser': 4.1.10(@voidzero-dev/vite-plus-core@0.2.5(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0))(vitest@4.1.10) + '@vitest/browser-playwright': 4.1.10(@voidzero-dev/vite-plus-core@0.2.5(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0))(playwright@1.61.1)(vitest@4.1.10) '@vitest/runner': 4.1.10 - vitest: 4.1.10(@opentelemetry/api@1.9.0)(@types/node@26.1.1)(@vitest/browser-playwright@4.1.10)(@vitest/browser-preview@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.10)(@voidzero-dev/vite-plus-core@0.2.2(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0)) + vitest: 4.1.10(@opentelemetry/api@1.9.0)(@types/node@26.1.1)(@vitest/browser-playwright@4.1.10)(@vitest/browser-preview@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.10)(@voidzero-dev/vite-plus-core@0.2.5(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0)) transitivePeerDependencies: - react - '@storybook/builder-vite@10.5.3(@voidzero-dev/vite-plus-core@0.2.2(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0))(esbuild@0.28.1)(rollup@4.62.2)(storybook@10.5.3(@types/react@19.2.17)(prettier@3.9.5)(react@19.2.7)(vite-plus@0.2.5(@arethetypeswrong/core@0.18.5)(@opentelemetry/api@1.9.0)(@types/node@26.1.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.10)(@voidzero-dev/vite-plus-core@0.2.2(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0))(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0)))': + '@storybook/builder-vite@10.5.3(@voidzero-dev/vite-plus-core@0.2.5(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0))(esbuild@0.28.1)(rollup@4.62.2)(storybook@10.5.3(@types/react@19.2.17)(prettier@3.9.5)(react@19.2.7)(vite-plus@0.2.5(@arethetypeswrong/core@0.18.5)(@opentelemetry/api@1.9.0)(@types/node@26.1.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.10)(@voidzero-dev/vite-plus-core@0.2.5(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0))(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0)))': dependencies: - '@storybook/csf-plugin': 10.5.3(@voidzero-dev/vite-plus-core@0.2.2(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0))(esbuild@0.28.1)(rollup@4.62.2)(storybook@10.5.3(@types/react@19.2.17)(prettier@3.9.5)(react@19.2.7)(vite-plus@0.2.5(@arethetypeswrong/core@0.18.5)(@opentelemetry/api@1.9.0)(@types/node@26.1.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.10)(@voidzero-dev/vite-plus-core@0.2.2(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0))(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0))) - storybook: 10.5.3(@types/react@19.2.17)(prettier@3.9.5)(react@19.2.7)(vite-plus@0.2.5(@arethetypeswrong/core@0.18.5)(@opentelemetry/api@1.9.0)(@types/node@26.1.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.10)(@voidzero-dev/vite-plus-core@0.2.2(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0))(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0)) + '@storybook/csf-plugin': 10.5.3(@voidzero-dev/vite-plus-core@0.2.5(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0))(esbuild@0.28.1)(rollup@4.62.2)(storybook@10.5.3(@types/react@19.2.17)(prettier@3.9.5)(react@19.2.7)(vite-plus@0.2.5(@arethetypeswrong/core@0.18.5)(@opentelemetry/api@1.9.0)(@types/node@26.1.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.10)(@voidzero-dev/vite-plus-core@0.2.5(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0))(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0))) + storybook: 10.5.3(@types/react@19.2.17)(prettier@3.9.5)(react@19.2.7)(vite-plus@0.2.5(@arethetypeswrong/core@0.18.5)(@opentelemetry/api@1.9.0)(@types/node@26.1.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.10)(@voidzero-dev/vite-plus-core@0.2.5(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0))(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0)) ts-dedent: 2.3.0 - vite: '@voidzero-dev/vite-plus-core@0.2.2(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0)' + vite: '@voidzero-dev/vite-plus-core@0.2.5(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0)' transitivePeerDependencies: - esbuild - rollup - webpack - '@storybook/csf-plugin@10.5.3(@voidzero-dev/vite-plus-core@0.2.2(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0))(esbuild@0.28.1)(rollup@4.62.2)(storybook@10.5.3(@types/react@19.2.17)(prettier@3.9.5)(react@19.2.7)(vite-plus@0.2.5(@arethetypeswrong/core@0.18.5)(@opentelemetry/api@1.9.0)(@types/node@26.1.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.10)(@voidzero-dev/vite-plus-core@0.2.2(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0))(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0)))': + '@storybook/csf-plugin@10.5.3(@voidzero-dev/vite-plus-core@0.2.5(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0))(esbuild@0.28.1)(rollup@4.62.2)(storybook@10.5.3(@types/react@19.2.17)(prettier@3.9.5)(react@19.2.7)(vite-plus@0.2.5(@arethetypeswrong/core@0.18.5)(@opentelemetry/api@1.9.0)(@types/node@26.1.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.10)(@voidzero-dev/vite-plus-core@0.2.5(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0))(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0)))': dependencies: - storybook: 10.5.3(@types/react@19.2.17)(prettier@3.9.5)(react@19.2.7)(vite-plus@0.2.5(@arethetypeswrong/core@0.18.5)(@opentelemetry/api@1.9.0)(@types/node@26.1.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.10)(@voidzero-dev/vite-plus-core@0.2.2(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0))(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0)) + storybook: 10.5.3(@types/react@19.2.17)(prettier@3.9.5)(react@19.2.7)(vite-plus@0.2.5(@arethetypeswrong/core@0.18.5)(@opentelemetry/api@1.9.0)(@types/node@26.1.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.10)(@voidzero-dev/vite-plus-core@0.2.5(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0))(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0)) unplugin: 2.3.11 optionalDependencies: esbuild: 0.28.1 rollup: 4.62.2 - vite: '@voidzero-dev/vite-plus-core@0.2.2(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0)' + vite: '@voidzero-dev/vite-plus-core@0.2.5(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0)' '@storybook/global@5.0.0': {} @@ -10924,30 +10856,30 @@ snapshots: dependencies: react: 19.2.7 - '@storybook/react-dom-shim@10.5.3(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(storybook@10.5.3(@types/react@19.2.17)(prettier@3.9.5)(react@19.2.7)(vite-plus@0.2.5(@arethetypeswrong/core@0.18.5)(@opentelemetry/api@1.9.0)(@types/node@26.1.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.10)(@voidzero-dev/vite-plus-core@0.2.2(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0))(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0)))': + '@storybook/react-dom-shim@10.5.3(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(storybook@10.5.3(@types/react@19.2.17)(prettier@3.9.5)(react@19.2.7)(vite-plus@0.2.5(@arethetypeswrong/core@0.18.5)(@opentelemetry/api@1.9.0)(@types/node@26.1.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.10)(@voidzero-dev/vite-plus-core@0.2.5(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0))(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0)))': dependencies: react: 19.2.7 react-dom: 19.2.7(react@19.2.7) - storybook: 10.5.3(@types/react@19.2.17)(prettier@3.9.5)(react@19.2.7)(vite-plus@0.2.5(@arethetypeswrong/core@0.18.5)(@opentelemetry/api@1.9.0)(@types/node@26.1.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.10)(@voidzero-dev/vite-plus-core@0.2.2(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0))(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0)) + storybook: 10.5.3(@types/react@19.2.17)(prettier@3.9.5)(react@19.2.7)(vite-plus@0.2.5(@arethetypeswrong/core@0.18.5)(@opentelemetry/api@1.9.0)(@types/node@26.1.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.10)(@voidzero-dev/vite-plus-core@0.2.5(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0))(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0)) optionalDependencies: '@types/react': 19.2.17 '@types/react-dom': 19.2.3(@types/react@19.2.17) - '@storybook/react-vite@10.5.3(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(@voidzero-dev/vite-plus-core@0.2.2(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0))(esbuild@0.28.1)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(rollup@4.62.2)(storybook@10.5.3(@types/react@19.2.17)(prettier@3.9.5)(react@19.2.7)(vite-plus@0.2.5(@arethetypeswrong/core@0.18.5)(@opentelemetry/api@1.9.0)(@types/node@26.1.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.10)(@voidzero-dev/vite-plus-core@0.2.2(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0))(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0)))(supports-color@7.2.0)(typescript@6.0.3)': + '@storybook/react-vite@10.5.3(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(@voidzero-dev/vite-plus-core@0.2.5(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0))(esbuild@0.28.1)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(rollup@4.62.2)(storybook@10.5.3(@types/react@19.2.17)(prettier@3.9.5)(react@19.2.7)(vite-plus@0.2.5(@arethetypeswrong/core@0.18.5)(@opentelemetry/api@1.9.0)(@types/node@26.1.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.10)(@voidzero-dev/vite-plus-core@0.2.5(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0))(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0)))(supports-color@7.2.0)(typescript@6.0.3)': dependencies: - '@joshwooding/vite-plugin-react-docgen-typescript': 0.7.0(@voidzero-dev/vite-plus-core@0.2.2(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0))(typescript@6.0.3) + '@joshwooding/vite-plugin-react-docgen-typescript': 0.7.0(@voidzero-dev/vite-plus-core@0.2.5(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0))(typescript@6.0.3) '@rollup/pluginutils': 5.4.0(rollup@4.62.2) - '@storybook/builder-vite': 10.5.3(@voidzero-dev/vite-plus-core@0.2.2(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0))(esbuild@0.28.1)(rollup@4.62.2)(storybook@10.5.3(@types/react@19.2.17)(prettier@3.9.5)(react@19.2.7)(vite-plus@0.2.5(@arethetypeswrong/core@0.18.5)(@opentelemetry/api@1.9.0)(@types/node@26.1.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.10)(@voidzero-dev/vite-plus-core@0.2.2(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0))(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0))) - '@storybook/react': 10.5.3(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(storybook@10.5.3(@types/react@19.2.17)(prettier@3.9.5)(react@19.2.7)(vite-plus@0.2.5(@arethetypeswrong/core@0.18.5)(@opentelemetry/api@1.9.0)(@types/node@26.1.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.10)(@voidzero-dev/vite-plus-core@0.2.2(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0))(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0)))(supports-color@7.2.0)(typescript@6.0.3) + '@storybook/builder-vite': 10.5.3(@voidzero-dev/vite-plus-core@0.2.5(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0))(esbuild@0.28.1)(rollup@4.62.2)(storybook@10.5.3(@types/react@19.2.17)(prettier@3.9.5)(react@19.2.7)(vite-plus@0.2.5(@arethetypeswrong/core@0.18.5)(@opentelemetry/api@1.9.0)(@types/node@26.1.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.10)(@voidzero-dev/vite-plus-core@0.2.5(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0))(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0))) + '@storybook/react': 10.5.3(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(storybook@10.5.3(@types/react@19.2.17)(prettier@3.9.5)(react@19.2.7)(vite-plus@0.2.5(@arethetypeswrong/core@0.18.5)(@opentelemetry/api@1.9.0)(@types/node@26.1.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.10)(@voidzero-dev/vite-plus-core@0.2.5(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0))(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0)))(supports-color@7.2.0)(typescript@6.0.3) empathic: 2.0.1 magic-string: 0.30.21 react: 19.2.7 react-docgen: 8.0.3(supports-color@7.2.0) react-dom: 19.2.7(react@19.2.7) resolve: 1.22.12 - storybook: 10.5.3(@types/react@19.2.17)(prettier@3.9.5)(react@19.2.7)(vite-plus@0.2.5(@arethetypeswrong/core@0.18.5)(@opentelemetry/api@1.9.0)(@types/node@26.1.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.10)(@voidzero-dev/vite-plus-core@0.2.2(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0))(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0)) + storybook: 10.5.3(@types/react@19.2.17)(prettier@3.9.5)(react@19.2.7)(vite-plus@0.2.5(@arethetypeswrong/core@0.18.5)(@opentelemetry/api@1.9.0)(@types/node@26.1.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.10)(@voidzero-dev/vite-plus-core@0.2.5(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0))(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0)) tsconfig-paths: 4.2.0 - vite: '@voidzero-dev/vite-plus-core@0.2.2(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0)' + vite: '@voidzero-dev/vite-plus-core@0.2.5(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0)' optionalDependencies: typescript: 6.0.3 transitivePeerDependencies: @@ -10958,15 +10890,15 @@ snapshots: - supports-color - webpack - '@storybook/react@10.5.3(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(storybook@10.5.3(@types/react@19.2.17)(prettier@3.9.5)(react@19.2.7)(vite-plus@0.2.5(@arethetypeswrong/core@0.18.5)(@opentelemetry/api@1.9.0)(@types/node@26.1.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.10)(@voidzero-dev/vite-plus-core@0.2.2(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0))(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0)))(supports-color@7.2.0)(typescript@6.0.3)': + '@storybook/react@10.5.3(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(storybook@10.5.3(@types/react@19.2.17)(prettier@3.9.5)(react@19.2.7)(vite-plus@0.2.5(@arethetypeswrong/core@0.18.5)(@opentelemetry/api@1.9.0)(@types/node@26.1.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.10)(@voidzero-dev/vite-plus-core@0.2.5(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0))(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0)))(supports-color@7.2.0)(typescript@6.0.3)': dependencies: '@storybook/global': 5.0.0 - '@storybook/react-dom-shim': 10.5.3(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(storybook@10.5.3(@types/react@19.2.17)(prettier@3.9.5)(react@19.2.7)(vite-plus@0.2.5(@arethetypeswrong/core@0.18.5)(@opentelemetry/api@1.9.0)(@types/node@26.1.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.10)(@voidzero-dev/vite-plus-core@0.2.2(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0))(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0))) + '@storybook/react-dom-shim': 10.5.3(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(storybook@10.5.3(@types/react@19.2.17)(prettier@3.9.5)(react@19.2.7)(vite-plus@0.2.5(@arethetypeswrong/core@0.18.5)(@opentelemetry/api@1.9.0)(@types/node@26.1.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.10)(@voidzero-dev/vite-plus-core@0.2.5(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0))(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0))) react: 19.2.7 react-docgen: 8.0.3(supports-color@7.2.0) react-docgen-typescript: 2.4.0(typescript@6.0.3) react-dom: 19.2.7(react@19.2.7) - storybook: 10.5.3(@types/react@19.2.17)(prettier@3.9.5)(react@19.2.7)(vite-plus@0.2.5(@arethetypeswrong/core@0.18.5)(@opentelemetry/api@1.9.0)(@types/node@26.1.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.10)(@voidzero-dev/vite-plus-core@0.2.2(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0))(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0)) + storybook: 10.5.3(@types/react@19.2.17)(prettier@3.9.5)(react@19.2.7)(vite-plus@0.2.5(@arethetypeswrong/core@0.18.5)(@opentelemetry/api@1.9.0)(@types/node@26.1.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.10)(@voidzero-dev/vite-plus-core@0.2.5(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0))(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0)) optionalDependencies: '@types/react': 19.2.17 '@types/react-dom': 19.2.3(@types/react@19.2.17) @@ -11043,12 +10975,12 @@ snapshots: '@tailwindcss/oxide-win32-arm64-msvc': 4.3.3 '@tailwindcss/oxide-win32-x64-msvc': 4.3.3 - '@tailwindcss/vite@4.3.3(@voidzero-dev/vite-plus-core@0.2.2(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0))': + '@tailwindcss/vite@4.3.3(@voidzero-dev/vite-plus-core@0.2.5(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0))': dependencies: '@tailwindcss/node': 4.3.3 '@tailwindcss/oxide': 4.3.3 tailwindcss: 4.3.3 - vite: '@voidzero-dev/vite-plus-core@0.2.2(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0)' + vite: '@voidzero-dev/vite-plus-core@0.2.5(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0)' '@tanstack/history@1.162.0': {} @@ -11069,14 +11001,14 @@ snapshots: react: 19.2.7 react-dom: 19.2.7(react@19.2.7) - '@tanstack/react-start-rsc@0.1.31(@voidzero-dev/vite-plus-core@0.2.2(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0))(crossws@0.4.10(srvx@0.11.22))(esbuild@0.28.1)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(rolldown@1.1.5)(rollup@4.62.2)(supports-color@7.2.0)': + '@tanstack/react-start-rsc@0.1.31(@voidzero-dev/vite-plus-core@0.2.5(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0))(crossws@0.4.10(srvx@0.11.22))(esbuild@0.28.1)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(rolldown@1.1.5)(rollup@4.62.2)(supports-color@7.2.0)': dependencies: '@tanstack/react-router': 1.170.18(react-dom@19.2.7(react@19.2.7))(react@19.2.7) '@tanstack/router-core': 1.171.15 '@tanstack/router-utils': 1.162.2(supports-color@7.2.0) '@tanstack/start-client-core': 1.170.14 '@tanstack/start-fn-stubs': 1.162.0 - '@tanstack/start-plugin-core': 1.171.24(@tanstack/react-router@1.170.18(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@voidzero-dev/vite-plus-core@0.2.2(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0))(crossws@0.4.10(srvx@0.11.22))(esbuild@0.28.1)(rolldown@1.1.5)(rollup@4.62.2)(supports-color@7.2.0) + '@tanstack/start-plugin-core': 1.171.24(@tanstack/react-router@1.170.18(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@voidzero-dev/vite-plus-core@0.2.5(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0))(crossws@0.4.10(srvx@0.11.22))(esbuild@0.28.1)(rolldown@1.1.5)(rollup@4.62.2)(supports-color@7.2.0) '@tanstack/start-server-core': 1.169.17(crossws@0.4.10(srvx@0.11.22)) '@tanstack/start-storage-context': 1.167.17 pathe: 2.0.3 @@ -11106,21 +11038,21 @@ snapshots: transitivePeerDependencies: - crossws - '@tanstack/react-start@1.168.32(@voidzero-dev/vite-plus-core@0.2.2(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0))(crossws@0.4.10(srvx@0.11.22))(esbuild@0.28.1)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(rolldown@1.1.5)(rollup@4.62.2)(supports-color@7.2.0)': + '@tanstack/react-start@1.168.32(@voidzero-dev/vite-plus-core@0.2.5(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0))(crossws@0.4.10(srvx@0.11.22))(esbuild@0.28.1)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(rolldown@1.1.5)(rollup@4.62.2)(supports-color@7.2.0)': dependencies: '@tanstack/react-router': 1.170.18(react-dom@19.2.7(react@19.2.7))(react@19.2.7) '@tanstack/react-start-client': 1.168.16(react-dom@19.2.7(react@19.2.7))(react@19.2.7) - '@tanstack/react-start-rsc': 0.1.31(@voidzero-dev/vite-plus-core@0.2.2(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0))(crossws@0.4.10(srvx@0.11.22))(esbuild@0.28.1)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(rolldown@1.1.5)(rollup@4.62.2)(supports-color@7.2.0) + '@tanstack/react-start-rsc': 0.1.31(@voidzero-dev/vite-plus-core@0.2.5(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0))(crossws@0.4.10(srvx@0.11.22))(esbuild@0.28.1)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(rolldown@1.1.5)(rollup@4.62.2)(supports-color@7.2.0) '@tanstack/react-start-server': 1.167.22(crossws@0.4.10(srvx@0.11.22))(react-dom@19.2.7(react@19.2.7))(react@19.2.7) '@tanstack/router-utils': 1.162.2(supports-color@7.2.0) '@tanstack/start-client-core': 1.170.14 - '@tanstack/start-plugin-core': 1.171.24(@tanstack/react-router@1.170.18(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@voidzero-dev/vite-plus-core@0.2.2(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0))(crossws@0.4.10(srvx@0.11.22))(esbuild@0.28.1)(rolldown@1.1.5)(rollup@4.62.2)(supports-color@7.2.0) + '@tanstack/start-plugin-core': 1.171.24(@tanstack/react-router@1.170.18(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@voidzero-dev/vite-plus-core@0.2.5(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0))(crossws@0.4.10(srvx@0.11.22))(esbuild@0.28.1)(rolldown@1.1.5)(rollup@4.62.2)(supports-color@7.2.0) '@tanstack/start-server-core': 1.169.17(crossws@0.4.10(srvx@0.11.22)) pathe: 2.0.3 react: 19.2.7 react-dom: 19.2.7(react@19.2.7) optionalDependencies: - vite: '@voidzero-dev/vite-plus-core@0.2.2(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0)' + vite: '@voidzero-dev/vite-plus-core@0.2.5(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0)' transitivePeerDependencies: - '@farmfe/core' - '@rspack/core' @@ -11170,7 +11102,7 @@ snapshots: transitivePeerDependencies: - supports-color - '@tanstack/router-plugin@1.168.23(@tanstack/react-router@1.170.18(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@voidzero-dev/vite-plus-core@0.2.2(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0))(esbuild@0.28.1)(rolldown@1.1.5)(rollup@4.62.2)(supports-color@7.2.0)': + '@tanstack/router-plugin@1.168.23(@tanstack/react-router@1.170.18(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@voidzero-dev/vite-plus-core@0.2.5(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0))(esbuild@0.28.1)(rolldown@1.1.5)(rollup@4.62.2)(supports-color@7.2.0)': dependencies: '@babel/core': 7.29.7(supports-color@7.2.0) '@babel/template': 7.29.7 @@ -11179,11 +11111,11 @@ snapshots: '@tanstack/router-generator': 1.167.21(supports-color@7.2.0) '@tanstack/router-utils': 1.162.2(supports-color@7.2.0) chokidar: 5.0.0 - unplugin: 3.3.0(@voidzero-dev/vite-plus-core@0.2.2(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0))(esbuild@0.28.1)(rolldown@1.1.5)(rollup@4.62.2) + unplugin: 3.3.0(@voidzero-dev/vite-plus-core@0.2.5(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0))(esbuild@0.28.1)(rolldown@1.1.5)(rollup@4.62.2) zod: 4.4.3 optionalDependencies: '@tanstack/react-router': 1.170.18(react-dom@19.2.7(react@19.2.7))(react@19.2.7) - vite: '@voidzero-dev/vite-plus-core@0.2.2(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0)' + vite: '@voidzero-dev/vite-plus-core@0.2.5(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0)' transitivePeerDependencies: - '@farmfe/core' - '@rspack/core' @@ -11216,14 +11148,14 @@ snapshots: '@tanstack/start-fn-stubs@1.162.0': {} - '@tanstack/start-plugin-core@1.171.24(@tanstack/react-router@1.170.18(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@voidzero-dev/vite-plus-core@0.2.2(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0))(crossws@0.4.10(srvx@0.11.22))(esbuild@0.28.1)(rolldown@1.1.5)(rollup@4.62.2)(supports-color@7.2.0)': + '@tanstack/start-plugin-core@1.171.24(@tanstack/react-router@1.170.18(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@voidzero-dev/vite-plus-core@0.2.5(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0))(crossws@0.4.10(srvx@0.11.22))(esbuild@0.28.1)(rolldown@1.1.5)(rollup@4.62.2)(supports-color@7.2.0)': dependencies: '@babel/code-frame': 7.27.1 '@babel/core': 7.29.7(supports-color@7.2.0) '@babel/types': 7.29.7 '@tanstack/router-core': 1.171.15 '@tanstack/router-generator': 1.167.21(supports-color@7.2.0) - '@tanstack/router-plugin': 1.168.23(@tanstack/react-router@1.170.18(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@voidzero-dev/vite-plus-core@0.2.2(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0))(esbuild@0.28.1)(rolldown@1.1.5)(rollup@4.62.2)(supports-color@7.2.0) + '@tanstack/router-plugin': 1.168.23(@tanstack/react-router@1.170.18(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@voidzero-dev/vite-plus-core@0.2.5(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0))(esbuild@0.28.1)(rolldown@1.1.5)(rollup@4.62.2)(supports-color@7.2.0) '@tanstack/router-utils': 1.162.2(supports-color@7.2.0) '@tanstack/start-server-core': 1.169.17(crossws@0.4.10(srvx@0.11.22)) exsolve: 1.1.0 @@ -11235,11 +11167,11 @@ snapshots: srvx: 0.11.22 tinyglobby: 0.2.17 ufo: 1.6.4 - vitefu: 1.1.3(@voidzero-dev/vite-plus-core@0.2.2(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0)) + vitefu: 1.1.3(@voidzero-dev/vite-plus-core@0.2.5(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0)) xmlbuilder2: 4.0.3 zod: 4.4.3 optionalDependencies: - vite: '@voidzero-dev/vite-plus-core@0.2.2(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0)' + vite: '@voidzero-dev/vite-plus-core@0.2.5(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0)' transitivePeerDependencies: - '@farmfe/core' - '@rspack/core' @@ -11266,12 +11198,12 @@ snapshots: transitivePeerDependencies: - crossws - '@tanstack/start-static-server-functions@1.167.19(@tanstack/react-start@1.168.32(@voidzero-dev/vite-plus-core@0.2.2(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0))(crossws@0.4.10(srvx@0.11.22))(esbuild@0.28.1)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(rolldown@1.1.5)(rollup@4.62.2)(supports-color@7.2.0))': + '@tanstack/start-static-server-functions@1.167.19(@tanstack/react-start@1.168.32(@voidzero-dev/vite-plus-core@0.2.5(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0))(crossws@0.4.10(srvx@0.11.22))(esbuild@0.28.1)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(rolldown@1.1.5)(rollup@4.62.2)(supports-color@7.2.0))': dependencies: '@tanstack/start-client-core': 1.170.14 seroval: 1.5.6 optionalDependencies: - '@tanstack/react-start': 1.168.32(@voidzero-dev/vite-plus-core@0.2.2(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0))(crossws@0.4.10(srvx@0.11.22))(esbuild@0.28.1)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(rolldown@1.1.5)(rollup@4.62.2)(supports-color@7.2.0) + '@tanstack/react-start': 1.168.32(@voidzero-dev/vite-plus-core@0.2.5(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0))(crossws@0.4.10(srvx@0.11.22))(esbuild@0.28.1)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(rolldown@1.1.5)(rollup@4.62.2)(supports-color@7.2.0) '@tanstack/start-storage-context@1.167.17': dependencies: @@ -11484,7 +11416,7 @@ snapshots: dependencies: '@vanilla-extract/css': 1.21.1 '@vanilla-extract/integration': 8.0.10(supports-color@7.2.0) - vite: '@voidzero-dev/vite-plus-core@0.2.2(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0)' + vite: '@voidzero-dev/vite-plus-core@0.2.5(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0)' vite-node: 6.0.0(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0) transitivePeerDependencies: - '@arethetypeswrong/core' @@ -11558,11 +11490,11 @@ snapshots: - babel-plugin-macros - supports-color - '@vanilla-extract/vite-plugin@5.2.5(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(@voidzero-dev/vite-plus-core@0.2.2(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0))(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(supports-color@7.2.0)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0)': + '@vanilla-extract/vite-plugin@5.2.5(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(@voidzero-dev/vite-plus-core@0.2.5(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0))(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(supports-color@7.2.0)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0)': dependencies: '@vanilla-extract/compiler': 0.7.2(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(supports-color@7.2.0)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0) '@vanilla-extract/integration': 8.0.10(supports-color@7.2.0) - vite: '@voidzero-dev/vite-plus-core@0.2.2(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0)' + vite: '@voidzero-dev/vite-plus-core@0.2.5(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0)' transitivePeerDependencies: - '@arethetypeswrong/core' - '@types/node' @@ -11603,20 +11535,20 @@ snapshots: - rollup - supports-color - '@vitejs/plugin-react@6.0.3(@voidzero-dev/vite-plus-core@0.2.2(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0))(babel-plugin-react-compiler@1.0.0)': + '@vitejs/plugin-react@6.0.3(@voidzero-dev/vite-plus-core@0.2.5(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0))(babel-plugin-react-compiler@1.0.0)': dependencies: '@rolldown/pluginutils': 1.0.1 - vite: '@voidzero-dev/vite-plus-core@0.2.2(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0)' + vite: '@voidzero-dev/vite-plus-core@0.2.5(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0)' optionalDependencies: babel-plugin-react-compiler: 1.0.0 - '@vitest/browser-playwright@4.1.10(@voidzero-dev/vite-plus-core@0.2.2(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0))(playwright@1.61.1)(vitest@4.1.10)': + '@vitest/browser-playwright@4.1.10(@voidzero-dev/vite-plus-core@0.2.5(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0))(playwright@1.61.1)(vitest@4.1.10)': dependencies: - '@vitest/browser': 4.1.10(@voidzero-dev/vite-plus-core@0.2.2(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0))(vitest@4.1.10) - '@vitest/mocker': 4.1.10(@voidzero-dev/vite-plus-core@0.2.2(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0)) + '@vitest/browser': 4.1.10(@voidzero-dev/vite-plus-core@0.2.5(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0))(vitest@4.1.10) + '@vitest/mocker': 4.1.10(@voidzero-dev/vite-plus-core@0.2.5(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0)) playwright: 1.61.1 tinyrainbow: 3.1.0 - vitest: 4.1.10(@opentelemetry/api@1.9.0)(@types/node@26.1.1)(@vitest/browser-playwright@4.1.10)(@vitest/browser-preview@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.10)(@voidzero-dev/vite-plus-core@0.2.2(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0)) + vitest: 4.1.10(@opentelemetry/api@1.9.0)(@types/node@26.1.1)(@vitest/browser-playwright@4.1.10)(@vitest/browser-preview@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.10)(@voidzero-dev/vite-plus-core@0.2.5(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0)) transitivePeerDependencies: - bufferutil - msw @@ -11637,12 +11569,12 @@ snapshots: - vite optional: true - '@vitest/browser-preview@4.1.10(@voidzero-dev/vite-plus-core@0.2.2(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0))(vitest@4.1.10)': + '@vitest/browser-preview@4.1.10(@voidzero-dev/vite-plus-core@0.2.5(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0))(vitest@4.1.10)': dependencies: '@testing-library/dom': 10.4.1 '@testing-library/user-event': 14.6.1(@testing-library/dom@10.4.1) - '@vitest/browser': 4.1.10(@voidzero-dev/vite-plus-core@0.2.2(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0))(vitest@4.1.10) - vitest: 4.1.10(@opentelemetry/api@1.9.0)(@types/node@26.1.1)(@vitest/browser-playwright@4.1.10)(@vitest/browser-preview@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.10)(@voidzero-dev/vite-plus-core@0.2.2(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0)) + '@vitest/browser': 4.1.10(@voidzero-dev/vite-plus-core@0.2.5(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0))(vitest@4.1.10) + vitest: 4.1.10(@opentelemetry/api@1.9.0)(@types/node@26.1.1)(@vitest/browser-playwright@4.1.10)(@vitest/browser-preview@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.10)(@voidzero-dev/vite-plus-core@0.2.5(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0)) transitivePeerDependencies: - bufferutil - msw @@ -11661,16 +11593,16 @@ snapshots: - utf-8-validate - vite - '@vitest/browser@4.1.10(@voidzero-dev/vite-plus-core@0.2.2(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0))(vitest@4.1.10)': + '@vitest/browser@4.1.10(@voidzero-dev/vite-plus-core@0.2.5(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0))(vitest@4.1.10)': dependencies: '@blazediff/core': 1.9.1 - '@vitest/mocker': 4.1.10(@voidzero-dev/vite-plus-core@0.2.2(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0)) + '@vitest/mocker': 4.1.10(@voidzero-dev/vite-plus-core@0.2.5(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0)) '@vitest/utils': 4.1.10 magic-string: 0.30.21 pngjs: 7.0.0 sirv: 3.0.2 tinyrainbow: 3.1.0 - vitest: 4.1.10(@opentelemetry/api@1.9.0)(@types/node@26.1.1)(@vitest/browser-playwright@4.1.10)(@vitest/browser-preview@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.10)(@voidzero-dev/vite-plus-core@0.2.2(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0)) + vitest: 4.1.10(@opentelemetry/api@1.9.0)(@types/node@26.1.1)(@vitest/browser-playwright@4.1.10)(@vitest/browser-preview@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.10)(@voidzero-dev/vite-plus-core@0.2.5(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0)) ws: 8.21.1 transitivePeerDependencies: - bufferutil @@ -11724,9 +11656,9 @@ snapshots: obug: 2.1.4 std-env: 4.2.0 tinyrainbow: 3.1.0 - vitest: 4.1.10(@opentelemetry/api@1.9.0)(@types/node@26.1.1)(@vitest/browser-playwright@4.1.10)(@vitest/browser-preview@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.10)(@voidzero-dev/vite-plus-core@0.2.2(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0)) + vitest: 4.1.10(@opentelemetry/api@1.9.0)(@types/node@26.1.1)(@vitest/browser-playwright@4.1.10)(@vitest/browser-preview@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.10)(@voidzero-dev/vite-plus-core@0.2.5(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0)) optionalDependencies: - '@vitest/browser': 4.1.10(@voidzero-dev/vite-plus-core@0.2.2(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0))(vitest@4.1.10) + '@vitest/browser': 4.1.10(@voidzero-dev/vite-plus-core@0.2.5(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0))(vitest@4.1.10) '@vitest/expect@3.2.4': dependencies: @@ -11745,13 +11677,13 @@ snapshots: chai: 6.2.2 tinyrainbow: 3.1.0 - '@vitest/mocker@4.1.10(@voidzero-dev/vite-plus-core@0.2.2(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0))': + '@vitest/mocker@4.1.10(@voidzero-dev/vite-plus-core@0.2.5(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0))': dependencies: '@vitest/spy': 4.1.10 estree-walker: 3.0.3 magic-string: 0.30.21 optionalDependencies: - vite: '@voidzero-dev/vite-plus-core@0.2.2(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0)' + vite: '@voidzero-dev/vite-plus-core@0.2.5(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0)' '@vitest/mocker@4.1.10(vite@8.1.5(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(tsx@4.23.1)(yaml@2.9.0))': dependencies: @@ -11810,23 +11742,6 @@ snapshots: convert-source-map: 2.0.0 tinyrainbow: 3.1.0 - '@voidzero-dev/vite-plus-core@0.2.2(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0)': - dependencies: - '@oxc-project/runtime': 0.138.0 - '@oxc-project/types': 0.138.0 - lightningcss: 1.33.0 - postcss: 8.5.20 - optionalDependencies: - '@arethetypeswrong/core': 0.18.5 - '@types/node': 26.1.1 - esbuild: 0.28.1 - fsevents: 2.3.3 - jiti: 2.7.0 - publint: 0.3.21 - tsx: 4.23.1 - typescript: 6.0.3 - yaml: 2.9.0 - '@voidzero-dev/vite-plus-core@0.2.5(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0)': dependencies: '@oxc-project/runtime': 0.139.0 @@ -13355,7 +13270,7 @@ snapshots: transitivePeerDependencies: - supports-color - fumadocs-mdx@15.2.0(@types/mdast@4.0.4)(@types/mdx@2.0.14)(@types/react@19.2.17)(@voidzero-dev/vite-plus-core@0.2.2(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0))(fumadocs-core@16.11.5(@mdx-js/mdx@3.1.1(supports-color@7.2.0))(@tanstack/react-router@1.170.18(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@types/estree-jsx@1.0.5)(@types/hast@3.0.5)(@types/mdast@4.0.4)(@types/react@19.2.17)(lucide-react@1.25.0(react@19.2.7))(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(supports-color@7.2.0)(zod@4.4.3))(react@19.2.7)(rolldown@1.1.5)(supports-color@7.2.0): + fumadocs-mdx@15.2.0(@types/mdast@4.0.4)(@types/mdx@2.0.14)(@types/react@19.2.17)(@voidzero-dev/vite-plus-core@0.2.5(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0))(fumadocs-core@16.11.5(@mdx-js/mdx@3.1.1(supports-color@7.2.0))(@tanstack/react-router@1.170.18(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@types/estree-jsx@1.0.5)(@types/hast@3.0.5)(@types/mdast@4.0.4)(@types/react@19.2.17)(lucide-react@1.25.0(react@19.2.7))(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(supports-color@7.2.0)(zod@4.4.3))(react@19.2.7)(rolldown@1.1.5)(supports-color@7.2.0): dependencies: '@mdx-js/mdx': 3.1.1(supports-color@7.2.0) '@standard-schema/spec': 1.1.0 @@ -13383,7 +13298,7 @@ snapshots: '@types/react': 19.2.17 react: 19.2.7 rolldown: 1.1.5 - vite: '@voidzero-dev/vite-plus-core@0.2.2(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0)' + vite: '@voidzero-dev/vite-plus-core@0.2.5(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0)' transitivePeerDependencies: - supports-color @@ -15151,7 +15066,7 @@ snapshots: '@oxfmt/binding-win32-x64-msvc': 0.58.0 vite-plus: 0.2.5(@arethetypeswrong/core@0.18.5)(@opentelemetry/api@1.9.0)(@types/node@26.1.1)(@vitest/browser-playwright@4.1.10(playwright@1.61.1)(vite@8.1.5(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(tsx@4.23.1)(yaml@2.9.0))(vitest@4.1.10))(@vitest/coverage-v8@4.1.10(@vitest/browser@4.1.10(vite@8.1.5(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(tsx@4.23.1)(yaml@2.9.0))(vitest@4.1.10))(vitest@4.1.10))(@vitest/ui@4.1.10(vitest@4.1.10))(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(vite@8.1.5(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(tsx@4.23.1)(yaml@2.9.0))(yaml@2.9.0) - oxfmt@0.58.0(vite-plus@0.2.5(@arethetypeswrong/core@0.18.5)(@opentelemetry/api@1.9.0)(@types/node@26.1.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.10)(@voidzero-dev/vite-plus-core@0.2.2(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0))(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0)): + oxfmt@0.58.0(vite-plus@0.2.5(@arethetypeswrong/core@0.18.5)(@opentelemetry/api@1.9.0)(@types/node@26.1.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.10)(@voidzero-dev/vite-plus-core@0.2.5(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0))(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0)): dependencies: tinypool: 2.1.0 optionalDependencies: @@ -15174,7 +15089,7 @@ snapshots: '@oxfmt/binding-win32-arm64-msvc': 0.58.0 '@oxfmt/binding-win32-ia32-msvc': 0.58.0 '@oxfmt/binding-win32-x64-msvc': 0.58.0 - vite-plus: 0.2.5(@arethetypeswrong/core@0.18.5)(@opentelemetry/api@1.9.0)(@types/node@26.1.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.10)(@voidzero-dev/vite-plus-core@0.2.2(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0))(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0) + vite-plus: 0.2.5(@arethetypeswrong/core@0.18.5)(@opentelemetry/api@1.9.0)(@types/node@26.1.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.10)(@voidzero-dev/vite-plus-core@0.2.5(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0))(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0) oxfmt@0.58.0(vite-plus@0.2.5(@arethetypeswrong/core@0.18.5)(@opentelemetry/api@1.9.0)(@types/node@26.1.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.10)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(vite@8.1.5(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(tsx@4.23.1)(yaml@2.9.0))(yaml@2.9.0)): dependencies: @@ -15234,7 +15149,7 @@ snapshots: oxlint-tsgolint: 0.24.0 vite-plus: 0.2.5(@arethetypeswrong/core@0.18.5)(@opentelemetry/api@1.9.0)(@types/node@26.1.1)(@vitest/browser-playwright@4.1.10(playwright@1.61.1)(vite@8.1.5(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(tsx@4.23.1)(yaml@2.9.0))(vitest@4.1.10))(@vitest/coverage-v8@4.1.10(@vitest/browser@4.1.10(vite@8.1.5(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(tsx@4.23.1)(yaml@2.9.0))(vitest@4.1.10))(vitest@4.1.10))(@vitest/ui@4.1.10(vitest@4.1.10))(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(vite@8.1.5(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(tsx@4.23.1)(yaml@2.9.0))(yaml@2.9.0) - oxlint@1.73.0(oxlint-tsgolint@0.24.0)(vite-plus@0.2.5(@arethetypeswrong/core@0.18.5)(@opentelemetry/api@1.9.0)(@types/node@26.1.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.10)(@voidzero-dev/vite-plus-core@0.2.2(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0))(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0)): + oxlint@1.73.0(oxlint-tsgolint@0.24.0)(vite-plus@0.2.5(@arethetypeswrong/core@0.18.5)(@opentelemetry/api@1.9.0)(@types/node@26.1.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.10)(@voidzero-dev/vite-plus-core@0.2.5(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0))(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0)): optionalDependencies: '@oxlint/binding-android-arm-eabi': 1.73.0 '@oxlint/binding-android-arm64': 1.73.0 @@ -15256,7 +15171,7 @@ snapshots: '@oxlint/binding-win32-ia32-msvc': 1.73.0 '@oxlint/binding-win32-x64-msvc': 1.73.0 oxlint-tsgolint: 0.24.0 - vite-plus: 0.2.5(@arethetypeswrong/core@0.18.5)(@opentelemetry/api@1.9.0)(@types/node@26.1.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.10)(@voidzero-dev/vite-plus-core@0.2.2(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0))(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0) + vite-plus: 0.2.5(@arethetypeswrong/core@0.18.5)(@opentelemetry/api@1.9.0)(@types/node@26.1.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.10)(@voidzero-dev/vite-plus-core@0.2.5(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0))(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0) oxlint@1.73.0(oxlint-tsgolint@0.24.0)(vite-plus@0.2.5(@arethetypeswrong/core@0.18.5)(@opentelemetry/api@1.9.0)(@types/node@26.1.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.10)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(vite@8.1.5(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(tsx@4.23.1)(yaml@2.9.0))(yaml@2.9.0)): optionalDependencies: @@ -16169,7 +16084,7 @@ snapshots: es-errors: 1.3.0 internal-slot: 1.1.0 - storybook@10.5.3(@types/react@19.2.17)(prettier@3.9.5)(react@19.2.7)(vite-plus@0.2.5(@arethetypeswrong/core@0.18.5)(@opentelemetry/api@1.9.0)(@types/node@26.1.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.10)(@voidzero-dev/vite-plus-core@0.2.2(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0))(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0)): + storybook@10.5.3(@types/react@19.2.17)(prettier@3.9.5)(react@19.2.7)(vite-plus@0.2.5(@arethetypeswrong/core@0.18.5)(@opentelemetry/api@1.9.0)(@types/node@26.1.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.10)(@voidzero-dev/vite-plus-core@0.2.5(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0))(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0)): dependencies: '@storybook/global': 5.0.0 '@storybook/icons': 2.1.0(react@19.2.7) @@ -16191,7 +16106,7 @@ snapshots: optionalDependencies: '@types/react': 19.2.17 prettier: 3.9.5 - vite-plus: 0.2.5(@arethetypeswrong/core@0.18.5)(@opentelemetry/api@1.9.0)(@types/node@26.1.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.10)(@voidzero-dev/vite-plus-core@0.2.2(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0))(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0) + vite-plus: 0.2.5(@arethetypeswrong/core@0.18.5)(@opentelemetry/api@1.9.0)(@types/node@26.1.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.10)(@voidzero-dev/vite-plus-core@0.2.5(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0))(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0) transitivePeerDependencies: - bufferutil - react @@ -16575,7 +16490,7 @@ snapshots: picomatch: 4.0.5 webpack-virtual-modules: 0.6.2 - unplugin@3.3.0(@voidzero-dev/vite-plus-core@0.2.2(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0))(esbuild@0.28.1)(rolldown@1.1.5)(rollup@4.62.2): + unplugin@3.3.0(@voidzero-dev/vite-plus-core@0.2.5(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0))(esbuild@0.28.1)(rolldown@1.1.5)(rollup@4.62.2): dependencies: '@jridgewell/remapping': 2.3.5 picomatch: 4.0.5 @@ -16584,7 +16499,7 @@ snapshots: esbuild: 0.28.1 rolldown: 1.1.5 rollup: 4.62.2 - vite: '@voidzero-dev/vite-plus-core@0.2.2(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0)' + vite: '@voidzero-dev/vite-plus-core@0.2.5(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0)' unstorage@1.17.5(@netlify/blobs@10.7.9(supports-color@7.2.0)): dependencies: @@ -16673,7 +16588,7 @@ snapshots: es-module-lexer: 2.3.1 obug: 2.1.4 pathe: 2.0.3 - vite: '@voidzero-dev/vite-plus-core@0.2.2(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0)' + vite: '@voidzero-dev/vite-plus-core@0.2.5(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0)' transitivePeerDependencies: - '@arethetypeswrong/core' - '@types/node' @@ -16752,26 +16667,26 @@ snapshots: - vite - yaml - vite-plus@0.2.5(@arethetypeswrong/core@0.18.5)(@opentelemetry/api@1.9.0)(@types/node@26.1.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.10)(@voidzero-dev/vite-plus-core@0.2.2(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0))(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0): + vite-plus@0.2.5(@arethetypeswrong/core@0.18.5)(@opentelemetry/api@1.9.0)(@types/node@26.1.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.10)(@voidzero-dev/vite-plus-core@0.2.5(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0))(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0): dependencies: '@oxc-project/types': 0.139.0 '@oxlint/plugins': 1.73.0 - '@vitest/browser': 4.1.10(@voidzero-dev/vite-plus-core@0.2.2(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0))(vitest@4.1.10) - '@vitest/browser-preview': 4.1.10(@voidzero-dev/vite-plus-core@0.2.2(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0))(vitest@4.1.10) + '@vitest/browser': 4.1.10(@voidzero-dev/vite-plus-core@0.2.5(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0))(vitest@4.1.10) + '@vitest/browser-preview': 4.1.10(@voidzero-dev/vite-plus-core@0.2.5(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0))(vitest@4.1.10) '@vitest/expect': 4.1.10 - '@vitest/mocker': 4.1.10(@voidzero-dev/vite-plus-core@0.2.2(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0)) + '@vitest/mocker': 4.1.10(@voidzero-dev/vite-plus-core@0.2.5(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0)) '@vitest/pretty-format': 4.1.10 '@vitest/runner': 4.1.10 '@vitest/snapshot': 4.1.10 '@vitest/spy': 4.1.10 '@vitest/utils': 4.1.10 '@voidzero-dev/vite-plus-core': 0.2.5(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0) - oxfmt: 0.58.0(vite-plus@0.2.5(@arethetypeswrong/core@0.18.5)(@opentelemetry/api@1.9.0)(@types/node@26.1.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.10)(@voidzero-dev/vite-plus-core@0.2.2(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0))(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0)) - oxlint: 1.73.0(oxlint-tsgolint@0.24.0)(vite-plus@0.2.5(@arethetypeswrong/core@0.18.5)(@opentelemetry/api@1.9.0)(@types/node@26.1.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.10)(@voidzero-dev/vite-plus-core@0.2.2(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0))(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0)) + oxfmt: 0.58.0(vite-plus@0.2.5(@arethetypeswrong/core@0.18.5)(@opentelemetry/api@1.9.0)(@types/node@26.1.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.10)(@voidzero-dev/vite-plus-core@0.2.5(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0))(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0)) + oxlint: 1.73.0(oxlint-tsgolint@0.24.0)(vite-plus@0.2.5(@arethetypeswrong/core@0.18.5)(@opentelemetry/api@1.9.0)(@types/node@26.1.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.10)(@voidzero-dev/vite-plus-core@0.2.5(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0))(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0)) oxlint-tsgolint: 0.24.0 - vitest: 4.1.10(@opentelemetry/api@1.9.0)(@types/node@26.1.1)(@vitest/browser-playwright@4.1.10)(@vitest/browser-preview@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.10)(@voidzero-dev/vite-plus-core@0.2.2(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0)) + vitest: 4.1.10(@opentelemetry/api@1.9.0)(@types/node@26.1.1)(@vitest/browser-playwright@4.1.10)(@vitest/browser-preview@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.10)(@voidzero-dev/vite-plus-core@0.2.5(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0)) optionalDependencies: - '@vitest/browser-playwright': 4.1.10(@voidzero-dev/vite-plus-core@0.2.2(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0))(playwright@1.61.1)(vitest@4.1.10) + '@vitest/browser-playwright': 4.1.10(@voidzero-dev/vite-plus-core@0.2.5(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0))(playwright@1.61.1)(vitest@4.1.10) '@voidzero-dev/vite-plus-darwin-arm64': 0.2.5 '@voidzero-dev/vite-plus-darwin-x64': 0.2.5 '@voidzero-dev/vite-plus-linux-arm64-gnu': 0.2.5 @@ -16885,9 +16800,9 @@ snapshots: tsx: 4.23.1 yaml: 2.9.0 - vitefu@1.1.3(@voidzero-dev/vite-plus-core@0.2.2(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0)): + vitefu@1.1.3(@voidzero-dev/vite-plus-core@0.2.5(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0)): optionalDependencies: - vite: '@voidzero-dev/vite-plus-core@0.2.2(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0)' + vite: '@voidzero-dev/vite-plus-core@0.2.5(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0)' vitest@4.1.10(@opentelemetry/api@1.9.0)(@types/node@26.1.1)(@vitest/browser-playwright@4.1.10(playwright@1.61.1)(vite@8.1.5(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(tsx@4.23.1)(yaml@2.9.0))(vitest@4.1.10))(@vitest/browser-preview@4.1.10)(@vitest/coverage-v8@4.1.10(@vitest/browser@4.1.10(vite@8.1.5(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(tsx@4.23.1)(yaml@2.9.0))(vitest@4.1.10))(vitest@4.1.10))(@vitest/ui@4.1.10(vitest@4.1.10))(vite@8.1.5(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(tsx@4.23.1)(yaml@2.9.0)): dependencies: @@ -16921,10 +16836,10 @@ snapshots: transitivePeerDependencies: - msw - vitest@4.1.10(@opentelemetry/api@1.9.0)(@types/node@26.1.1)(@vitest/browser-playwright@4.1.10)(@vitest/browser-preview@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.10)(@voidzero-dev/vite-plus-core@0.2.2(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0)): + vitest@4.1.10(@opentelemetry/api@1.9.0)(@types/node@26.1.1)(@vitest/browser-playwright@4.1.10)(@vitest/browser-preview@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.10)(@voidzero-dev/vite-plus-core@0.2.5(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0)): dependencies: '@vitest/expect': 4.1.10 - '@vitest/mocker': 4.1.10(@voidzero-dev/vite-plus-core@0.2.2(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0)) + '@vitest/mocker': 4.1.10(@voidzero-dev/vite-plus-core@0.2.5(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0)) '@vitest/pretty-format': 4.1.10 '@vitest/runner': 4.1.10 '@vitest/snapshot': 4.1.10 @@ -16941,13 +16856,13 @@ snapshots: tinyexec: 1.2.4 tinyglobby: 0.2.17 tinyrainbow: 3.1.0 - vite: '@voidzero-dev/vite-plus-core@0.2.2(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0)' + vite: '@voidzero-dev/vite-plus-core@0.2.5(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0)' why-is-node-running: 2.3.0 optionalDependencies: '@opentelemetry/api': 1.9.0 '@types/node': 26.1.1 - '@vitest/browser-playwright': 4.1.10(@voidzero-dev/vite-plus-core@0.2.2(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0))(playwright@1.61.1)(vitest@4.1.10) - '@vitest/browser-preview': 4.1.10(@voidzero-dev/vite-plus-core@0.2.2(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0))(vitest@4.1.10) + '@vitest/browser-playwright': 4.1.10(@voidzero-dev/vite-plus-core@0.2.5(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0))(playwright@1.61.1)(vitest@4.1.10) + '@vitest/browser-preview': 4.1.10(@voidzero-dev/vite-plus-core@0.2.5(@arethetypeswrong/core@0.18.5)(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(publint@0.3.21)(tsx@4.23.1)(typescript@6.0.3)(yaml@2.9.0))(vitest@4.1.10) '@vitest/coverage-v8': 4.1.10(@vitest/browser@4.1.10)(vitest@4.1.10) '@vitest/ui': 4.1.10(vitest@4.1.10) transitivePeerDependencies: diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index 893fee4a..28d6d663 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -120,7 +120,7 @@ catalog: typescript: ^6.0.3 unbarrelify: ^1.1.2 unist-util-visit: ^5.1.0 - vite: npm:@voidzero-dev/vite-plus-core@0.2.2 + vite: npm:@voidzero-dev/vite-plus-core@0.2.5 vite-plus: 0.2.5 vitest: 4.1.10 zod: ^4.4.3