From 514dc2cec5c1a8b115193d9117c7028beb39b740 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kevin=20Dev=20=F0=9F=87=B7=F0=9F=87=BC?= Date: Thu, 20 Aug 2026 14:30:24 +0200 Subject: [PATCH 1/5] feat: toc component implementation (#3850) * feat: toc component implementation * fix: toc components * implemented minor changes on the svelte * rerfactored react components * fix: lint and test errors * chore: update lockfile * storybook fixes * chore: refactored toc examples * updated package * fix the build issues * chore: aded documentation to the toc component * chore: toc component framework polishing * test units * chore: wording categories * fix: style hmr * chore: wip * fix: update toc scroll element prop * feat: add toc showcase examples * docs: add toc showcase patterns * chore: remove toc showcase examples * chore: clean up toc implementation * fix(react): unwrap react.lazy asChild children across the RSC boundary (#3980) * fix(react): unwrap react.lazy asChild children across the RSC boundary React's Flight protocol hands children across the server components boundary wrapped in Symbol(react.lazy), which isValidElement rejects. The factory bailed out and rendered neither the child nor the element it stood in for. Unwrap the lazy child with Children.toArray, gated on the lazy symbol so every non-RSC path keeps its existing behavior. Matches the approach used by Base UI; Radix solves the same bug via use(). Verified end-to-end against a Next.js 15 production build: an async server component passed through asChild prerendered
before, and now renders the child with className and data attributes merged. Refs facebook/react#32392 Claude-Session: https://claude.ai/code/session_0133qcH6rpUR3edEeGJSxsF1 * test(react): cover ref composition through a react.lazy asChild child The factory resolves the lazy child before reading its ref and before merging props, so refs on a child that crossed the RSC boundary still attach. Nothing covered that ordering. Reading the ref or props off the un-unwrapped wrapper fails this test plus the two existing lazy tests, while the nine non-lazy tests keep passing. Claude-Session: https://claude.ai/code/session_0133qcH6rpUR3edEeGJSxsF1 * docs(vue): document Toc RootProps and RootEmits Ports the prop documentation from the pre-rebase branch snapshot. The wording matches the JSDoc on zag's TocProps. Keeps the prop named scrollEl. The snapshot called it getScrollEl, but @zag-js/toc 1.43.1 defines scrollEl, and UseTocProps spreads straight into the machine with no mapping. Claude-Session: https://claude.ai/code/session_0133qcH6rpUR3edEeGJSxsF1 * docs(toc): explain the shape of the items prop Adds a Guides section covering what each entry needs. value must match the heading's id, since the machine resolves it with getElementById, and depth mirrors the heading tag but does not indent anything on its own. Also notes that annotating the array as TocItemData[] rejects extra properties like label, and shows extending the type instead. Claude-Session: https://claude.ai/code/session_0133qcH6rpUR3edEeGJSxsF1 * feat(toc): add a rail example across all frameworks Renders a nested rail beside the navigation. Each item draws a small SVG line offset from its depth, and a bezier joins the two offsets wherever neighbouring items sit at different depths, so the rail steps in and out rather than breaking. The active item strokes its own segment, so a run of active items reads as one highlight. The SVG carries an explicit height. It is a replaced element, so leaving height auto resolves to the intrinsic 150px and the segments stack through each other rather than spanning their row. Adds a Guides entry on the docs page and regenerates the example registry. Claude-Session: https://claude.ai/code/session_0133qcH6rpUR3edEeGJSxsF1 * refactor(toc): use the scrollTo api in the select example The change handler resolved the heading with querySelector and called scrollIntoView. That walks every scrollable ancestor rather than the container passed to scrollEl, hardcodes smooth so the scrollBehavior prop is ignored, and throws on ids that are not valid CSS selectors. api.scrollTo resolves by id, honours scrollBehavior, and scrolls only the element scrollEl returns. Claude-Session: https://claude.ai/code/session_0133qcH6rpUR3edEeGJSxsF1 * refactor(toc): type contentRef as the element Toc.Content renders Toc.Content forwards HTMLElement and renders an article, so the refs were typed as HTMLDivElement for an element that is never a div. It compiled because RefObject is assignable to Ref. Also settles the split over the null union, which four of the examples carried and five did not. Claude-Session: https://claude.ai/code/session_0133qcH6rpUR3edEeGJSxsF1 * chore(toc): add release changeset and mark the docs page as preview The component and its docs page are new on this branch with no changeset, so merging would have added a documented component that never got a version bump. Bumps all four packages at minor. Marks the page Preview alongside Drawer and Splitter, since the prop names are still moving. Claude-Session: https://claude.ai/code/session_0133qcH6rpUR3edEeGJSxsF1 * fix(toc): prefix example heading ids so they stay unique per page The docs page renders every Toc example at once, and zag resolves headings with document.getElementById. Examples shared ids like overview, installation and usage, so an example observed headings belonging to a different example and highlighted the wrong item. Scrolled to the top, the rail example highlighted Package Manager instead of Overview. Each example now prefixes its ids with its own number. Verified on the docs page: every example resolves only its own headings, where two previously resolved four and five foreign ones. * fix(website): generate the missing toc and interaction type docs The API Reference table on the Toc page was empty. generate-type-docs reads built .d.ts files rather than source, and dist predated both components, so it had nothing to read. Adds toc and interaction across all four frameworks, and picks up two stale entries along the way: qr-code gained an overlay id, and date-picker's translations became Partial. Run document:types with document:tags after it. document:types alone drops the tag fields that document:tags adds. * fix(toc): use explicit file extensions in index exports Toc was the only component whose index omitted them; every other component exports from './x.tsx' or './x.ts'. * docs(toc): tighten the page and give the indicator room Cuts the prose from 599 to 434 words, mostly restatement of what each example already shows, and documents that heading ids are global to the page, which is what broke the examples when several rendered together. Moves the indicator 12px from the label instead of 6px. * fix(scripts): skip writing empty type docs Hook-only modules like interaction and collection document no props, so the generator wrote `{}` files that nothing renders. Removes the ten already committed and stops emitting new ones. --------- Co-authored-by: Segun Adebayo --- .changeset/add-toc-component.md | 33 ++ .storybook/modules/toc.module.css | 459 ++++++++++++++++++ bun.lock | 6 + packages/react/package.json | 2 + packages/react/src/components/anatomy.ts | 1 + packages/react/src/components/index.ts | 1 + .../src/components/toc/examples/basic.tsx | 47 ++ .../src/components/toc/examples/nested.tsx | 50 ++ .../components/toc/examples/root-provider.tsx | 55 +++ .../toc/examples/with-collapsible.tsx | 107 ++++ .../components/toc/examples/with-hover.tsx | 59 +++ .../toc/examples/with-indicator.tsx | 48 ++ .../src/components/toc/examples/with-rail.tsx | 97 ++++ .../components/toc/examples/with-select.tsx | 70 +++ .../toc/examples/with-tree-view.tsx | 160 ++++++ packages/react/src/components/toc/index.ts | 16 + .../react/src/components/toc/tests/basic.tsx | 32 ++ .../src/components/toc/tests/toc.test.tsx | 93 ++++ .../react/src/components/toc/toc-content.tsx | 11 + .../react/src/components/toc/toc-context.tsx | 8 + .../src/components/toc/toc-indicator.tsx | 16 + .../react/src/components/toc/toc-item.tsx | 26 + .../react/src/components/toc/toc-link.tsx | 18 + .../react/src/components/toc/toc-list.tsx | 16 + packages/react/src/components/toc/toc-nav.tsx | 19 + .../src/components/toc/toc-root-provider.tsx | 27 ++ .../react/src/components/toc/toc-root.tsx | 38 ++ .../react/src/components/toc/toc-title.tsx | 16 + .../react/src/components/toc/toc.anatomy.ts | 1 + .../react/src/components/toc/toc.stories.tsx | 17 + packages/react/src/components/toc/toc.ts | 27 ++ .../src/components/toc/use-toc-context.ts | 10 + .../toc/use-toc-item-props-context.ts | 10 + packages/react/src/components/toc/use-toc.ts | 26 + packages/solid/package.json | 2 + packages/solid/src/components/anatomy.ts | 1 + packages/solid/src/components/index.tsx | 1 + .../src/components/toc/examples/basic.tsx | 43 ++ .../src/components/toc/examples/nested.tsx | 50 ++ .../components/toc/examples/root-provider.tsx | 48 ++ .../toc/examples/with-collapsible.tsx | 118 +++++ .../components/toc/examples/with-hover.tsx | 92 ++++ .../toc/examples/with-indicator.tsx | 45 ++ .../src/components/toc/examples/with-rail.tsx | 96 ++++ .../toc/examples/with-tree-view.tsx | 156 ++++++ packages/solid/src/components/toc/index.tsx | 16 + .../solid/src/components/toc/tests/basic.tsx | 43 ++ .../src/components/toc/tests/toc.test.tsx | 48 ++ .../solid/src/components/toc/toc-content.tsx | 8 + .../solid/src/components/toc/toc-context.tsx | 8 + .../src/components/toc/toc-indicator.tsx | 12 + .../solid/src/components/toc/toc-item.tsx | 22 + .../solid/src/components/toc/toc-link.tsx | 15 + .../solid/src/components/toc/toc-list.tsx | 13 + packages/solid/src/components/toc/toc-nav.tsx | 15 + .../src/components/toc/toc-root-provider.tsx | 23 + .../solid/src/components/toc/toc-root.tsx | 35 ++ .../solid/src/components/toc/toc-title.tsx | 12 + .../solid/src/components/toc/toc.anatomy.ts | 1 + .../solid/src/components/toc/toc.stories.tsx | 16 + packages/solid/src/components/toc/toc.ts | 27 ++ .../src/components/toc/use-toc-context.ts | 9 + .../toc/use-toc-item-props-context.ts | 9 + packages/solid/src/components/toc/use-toc.ts | 28 ++ packages/solid/src/setup-test.ts | 12 +- packages/svelte/package.json | 2 + packages/svelte/src/lib/components/anatomy.ts | 1 + packages/svelte/src/lib/components/index.ts | 1 + .../lib/components/toc/examples/basic.svelte | 41 ++ .../lib/components/toc/examples/nested.svelte | 46 ++ .../toc/examples/root-provider.svelte | 40 ++ .../toc/examples/with-collapsible.svelte | 112 +++++ .../components/toc/examples/with-hover.svelte | 82 ++++ .../toc/examples/with-indicator.svelte | 40 ++ .../components/toc/examples/with-rail.svelte | 82 ++++ .../toc/examples/with-tree-view.svelte | 157 ++++++ .../svelte/src/lib/components/toc/index.ts | 19 + .../src/lib/components/toc/tests/basic.svelte | 40 ++ .../src/lib/components/toc/toc-content.svelte | 14 + .../src/lib/components/toc/toc-context.svelte | 18 + .../lib/components/toc/toc-indicator.svelte | 18 + .../src/lib/components/toc/toc-item.svelte | 24 + .../src/lib/components/toc/toc-link.svelte | 20 + .../src/lib/components/toc/toc-list.svelte | 18 + .../src/lib/components/toc/toc-nav.svelte | 54 +++ .../components/toc/toc-root-provider.svelte | 21 + .../src/lib/components/toc/toc-root.svelte | 40 ++ .../src/lib/components/toc/toc-title.svelte | 18 + .../src/lib/components/toc/toc.anatomy.ts | 1 + .../src/lib/components/toc/toc.stories.ts | 63 +++ .../svelte/src/lib/components/toc/toc.test.ts | 76 +++ packages/svelte/src/lib/components/toc/toc.ts | 43 ++ .../src/lib/components/toc/use-toc-context.ts | 9 + .../toc/use-toc-item-props-context.ts | 8 + .../src/lib/components/toc/use-toc.svelte.ts | 27 ++ packages/vue/package.json | 2 + packages/vue/src/components/anatomy.ts | 1 + packages/vue/src/components/index.ts | 1 + .../vue/src/components/toc/examples/basic.vue | 37 ++ .../src/components/toc/examples/nested.vue | 45 ++ .../components/toc/examples/root-provider.vue | 38 ++ .../toc/examples/with-collapsible.vue | 120 +++++ .../components/toc/examples/with-hover.vue | 92 ++++ .../toc/examples/with-indicator.vue | 38 ++ .../src/components/toc/examples/with-rail.vue | 80 +++ .../toc/examples/with-tree-view.vue | 144 ++++++ packages/vue/src/components/toc/index.ts | 20 + .../vue/src/components/toc/toc-content.vue | 28 ++ .../vue/src/components/toc/toc-context.vue | 22 + .../vue/src/components/toc/toc-indicator.vue | 30 ++ packages/vue/src/components/toc/toc-item.vue | 36 ++ packages/vue/src/components/toc/toc-link.vue | 32 ++ packages/vue/src/components/toc/toc-list.vue | 30 ++ packages/vue/src/components/toc/toc-nav.vue | 32 ++ .../src/components/toc/toc-root-provider.vue | 37 ++ packages/vue/src/components/toc/toc-root.vue | 36 ++ packages/vue/src/components/toc/toc-title.vue | 30 ++ .../vue/src/components/toc/toc.anatomy.ts | 1 + .../vue/src/components/toc/toc.stories.ts | 72 +++ packages/vue/src/components/toc/toc.ts | 32 ++ packages/vue/src/components/toc/toc.types.ts | 65 +++ .../vue/src/components/toc/use-toc-context.ts | 6 + .../toc/use-toc-item-props-context.ts | 6 + packages/vue/src/components/toc/use-toc.ts | 35 ++ scripts/src/generate-type-docs.ts | 4 + website/src/content/pages/components/toc.mdx | 125 +++++ .../content/types/react/collection.types.json | 1 - .../types/react/date-picker.types.json | 2 +- .../content/types/react/qr-code.types.json | 2 +- .../src/content/types/react/toc.types.json | 173 +++++++ .../content/types/solid/collection.types.json | 1 - .../types/solid/date-picker.types.json | 2 +- .../content/types/solid/qr-code.types.json | 2 +- .../src/content/types/solid/toc.types.json | 137 ++++++ .../types/svelte/collection.types.json | 1 - .../types/svelte/date-picker.types.json | 2 +- .../content/types/svelte/factory.types.json | 1 - .../content/types/svelte/qr-code.types.json | 2 +- .../src/content/types/svelte/toc.types.json | 198 ++++++++ .../content/types/vue/client-only.types.json | 1 - .../content/types/vue/collection.types.json | 1 - website/src/content/types/vue/toc.types.json | 139 ++++++ website/src/demos/index.ts | 1 + website/src/demos/toc.demo.tsx | 72 +++ website/src/lib/example-registry.ts | 18 + website/src/lib/sidebar-config.ts | 1 + 146 files changed, 5797 insertions(+), 18 deletions(-) create mode 100644 .changeset/add-toc-component.md create mode 100644 .storybook/modules/toc.module.css create mode 100644 packages/react/src/components/toc/examples/basic.tsx create mode 100644 packages/react/src/components/toc/examples/nested.tsx create mode 100644 packages/react/src/components/toc/examples/root-provider.tsx create mode 100644 packages/react/src/components/toc/examples/with-collapsible.tsx create mode 100644 packages/react/src/components/toc/examples/with-hover.tsx create mode 100644 packages/react/src/components/toc/examples/with-indicator.tsx create mode 100644 packages/react/src/components/toc/examples/with-rail.tsx create mode 100644 packages/react/src/components/toc/examples/with-select.tsx create mode 100644 packages/react/src/components/toc/examples/with-tree-view.tsx create mode 100644 packages/react/src/components/toc/index.ts create mode 100644 packages/react/src/components/toc/tests/basic.tsx create mode 100644 packages/react/src/components/toc/tests/toc.test.tsx create mode 100644 packages/react/src/components/toc/toc-content.tsx create mode 100644 packages/react/src/components/toc/toc-context.tsx create mode 100644 packages/react/src/components/toc/toc-indicator.tsx create mode 100644 packages/react/src/components/toc/toc-item.tsx create mode 100644 packages/react/src/components/toc/toc-link.tsx create mode 100644 packages/react/src/components/toc/toc-list.tsx create mode 100644 packages/react/src/components/toc/toc-nav.tsx create mode 100644 packages/react/src/components/toc/toc-root-provider.tsx create mode 100644 packages/react/src/components/toc/toc-root.tsx create mode 100644 packages/react/src/components/toc/toc-title.tsx create mode 100644 packages/react/src/components/toc/toc.anatomy.ts create mode 100644 packages/react/src/components/toc/toc.stories.tsx create mode 100644 packages/react/src/components/toc/toc.ts create mode 100644 packages/react/src/components/toc/use-toc-context.ts create mode 100644 packages/react/src/components/toc/use-toc-item-props-context.ts create mode 100644 packages/react/src/components/toc/use-toc.ts create mode 100644 packages/solid/src/components/toc/examples/basic.tsx create mode 100644 packages/solid/src/components/toc/examples/nested.tsx create mode 100644 packages/solid/src/components/toc/examples/root-provider.tsx create mode 100644 packages/solid/src/components/toc/examples/with-collapsible.tsx create mode 100644 packages/solid/src/components/toc/examples/with-hover.tsx create mode 100644 packages/solid/src/components/toc/examples/with-indicator.tsx create mode 100644 packages/solid/src/components/toc/examples/with-rail.tsx create mode 100644 packages/solid/src/components/toc/examples/with-tree-view.tsx create mode 100644 packages/solid/src/components/toc/index.tsx create mode 100644 packages/solid/src/components/toc/tests/basic.tsx create mode 100644 packages/solid/src/components/toc/tests/toc.test.tsx create mode 100644 packages/solid/src/components/toc/toc-content.tsx create mode 100644 packages/solid/src/components/toc/toc-context.tsx create mode 100644 packages/solid/src/components/toc/toc-indicator.tsx create mode 100644 packages/solid/src/components/toc/toc-item.tsx create mode 100644 packages/solid/src/components/toc/toc-link.tsx create mode 100644 packages/solid/src/components/toc/toc-list.tsx create mode 100644 packages/solid/src/components/toc/toc-nav.tsx create mode 100644 packages/solid/src/components/toc/toc-root-provider.tsx create mode 100644 packages/solid/src/components/toc/toc-root.tsx create mode 100644 packages/solid/src/components/toc/toc-title.tsx create mode 100644 packages/solid/src/components/toc/toc.anatomy.ts create mode 100644 packages/solid/src/components/toc/toc.stories.tsx create mode 100644 packages/solid/src/components/toc/toc.ts create mode 100644 packages/solid/src/components/toc/use-toc-context.ts create mode 100644 packages/solid/src/components/toc/use-toc-item-props-context.ts create mode 100644 packages/solid/src/components/toc/use-toc.ts create mode 100644 packages/svelte/src/lib/components/toc/examples/basic.svelte create mode 100644 packages/svelte/src/lib/components/toc/examples/nested.svelte create mode 100644 packages/svelte/src/lib/components/toc/examples/root-provider.svelte create mode 100644 packages/svelte/src/lib/components/toc/examples/with-collapsible.svelte create mode 100644 packages/svelte/src/lib/components/toc/examples/with-hover.svelte create mode 100644 packages/svelte/src/lib/components/toc/examples/with-indicator.svelte create mode 100644 packages/svelte/src/lib/components/toc/examples/with-rail.svelte create mode 100644 packages/svelte/src/lib/components/toc/examples/with-tree-view.svelte create mode 100644 packages/svelte/src/lib/components/toc/index.ts create mode 100644 packages/svelte/src/lib/components/toc/tests/basic.svelte create mode 100644 packages/svelte/src/lib/components/toc/toc-content.svelte create mode 100644 packages/svelte/src/lib/components/toc/toc-context.svelte create mode 100644 packages/svelte/src/lib/components/toc/toc-indicator.svelte create mode 100644 packages/svelte/src/lib/components/toc/toc-item.svelte create mode 100644 packages/svelte/src/lib/components/toc/toc-link.svelte create mode 100644 packages/svelte/src/lib/components/toc/toc-list.svelte create mode 100644 packages/svelte/src/lib/components/toc/toc-nav.svelte create mode 100644 packages/svelte/src/lib/components/toc/toc-root-provider.svelte create mode 100644 packages/svelte/src/lib/components/toc/toc-root.svelte create mode 100644 packages/svelte/src/lib/components/toc/toc-title.svelte create mode 100644 packages/svelte/src/lib/components/toc/toc.anatomy.ts create mode 100644 packages/svelte/src/lib/components/toc/toc.stories.ts create mode 100644 packages/svelte/src/lib/components/toc/toc.test.ts create mode 100644 packages/svelte/src/lib/components/toc/toc.ts create mode 100644 packages/svelte/src/lib/components/toc/use-toc-context.ts create mode 100644 packages/svelte/src/lib/components/toc/use-toc-item-props-context.ts create mode 100644 packages/svelte/src/lib/components/toc/use-toc.svelte.ts create mode 100644 packages/vue/src/components/toc/examples/basic.vue create mode 100644 packages/vue/src/components/toc/examples/nested.vue create mode 100644 packages/vue/src/components/toc/examples/root-provider.vue create mode 100644 packages/vue/src/components/toc/examples/with-collapsible.vue create mode 100644 packages/vue/src/components/toc/examples/with-hover.vue create mode 100644 packages/vue/src/components/toc/examples/with-indicator.vue create mode 100644 packages/vue/src/components/toc/examples/with-rail.vue create mode 100644 packages/vue/src/components/toc/examples/with-tree-view.vue create mode 100644 packages/vue/src/components/toc/index.ts create mode 100644 packages/vue/src/components/toc/toc-content.vue create mode 100644 packages/vue/src/components/toc/toc-context.vue create mode 100644 packages/vue/src/components/toc/toc-indicator.vue create mode 100644 packages/vue/src/components/toc/toc-item.vue create mode 100644 packages/vue/src/components/toc/toc-link.vue create mode 100644 packages/vue/src/components/toc/toc-list.vue create mode 100644 packages/vue/src/components/toc/toc-nav.vue create mode 100644 packages/vue/src/components/toc/toc-root-provider.vue create mode 100644 packages/vue/src/components/toc/toc-root.vue create mode 100644 packages/vue/src/components/toc/toc-title.vue create mode 100644 packages/vue/src/components/toc/toc.anatomy.ts create mode 100644 packages/vue/src/components/toc/toc.stories.ts create mode 100644 packages/vue/src/components/toc/toc.ts create mode 100644 packages/vue/src/components/toc/toc.types.ts create mode 100644 packages/vue/src/components/toc/use-toc-context.ts create mode 100644 packages/vue/src/components/toc/use-toc-item-props-context.ts create mode 100644 packages/vue/src/components/toc/use-toc.ts create mode 100644 website/src/content/pages/components/toc.mdx delete mode 100644 website/src/content/types/react/collection.types.json create mode 100644 website/src/content/types/react/toc.types.json delete mode 100644 website/src/content/types/solid/collection.types.json create mode 100644 website/src/content/types/solid/toc.types.json delete mode 100644 website/src/content/types/svelte/collection.types.json delete mode 100644 website/src/content/types/svelte/factory.types.json create mode 100644 website/src/content/types/svelte/toc.types.json delete mode 100644 website/src/content/types/vue/client-only.types.json delete mode 100644 website/src/content/types/vue/collection.types.json create mode 100644 website/src/content/types/vue/toc.types.json create mode 100644 website/src/demos/toc.demo.tsx diff --git a/.changeset/add-toc-component.md b/.changeset/add-toc-component.md new file mode 100644 index 0000000000..91699740e7 --- /dev/null +++ b/.changeset/add-toc-component.md @@ -0,0 +1,33 @@ +--- +'@ark-ui/react': minor +'@ark-ui/solid': minor +'@ark-ui/svelte': minor +'@ark-ui/vue': minor +--- + +**Toc** [New]: Add a table of contents component that tracks which headings are in view as the reader scrolls. + +Pass the headings to `Toc.Root` as `items`, where each entry needs the heading element's `id` as `value` and its level +as `depth`. Set `scrollEl` when the content scrolls inside a container rather than the page, so tracking observes that +element instead of the viewport. + +```tsx + contentRef.current}> + + + + + + + + + + + +``` + +More than one heading can be active at once, so `Toc.Item` carries `data-first` and `data-last` to mark the ends of the +range, and `Toc.Indicator` spans it. Use `useToc` with `Toc.RootProvider` to reach `activeItems` and `scrollTo` from +outside the tree. + +The API may still change while the component is in preview. diff --git a/.storybook/modules/toc.module.css b/.storybook/modules/toc.module.css new file mode 100644 index 0000000000..3d5029f597 --- /dev/null +++ b/.storybook/modules/toc.module.css @@ -0,0 +1,459 @@ +.Root { + display: flex; + flex-direction: row; + gap: 2rem; + align-items: flex-start; + width: 100%; + max-width: 800px; + position: relative; + + &[data-stacked] { + flex-direction: column; + align-items: stretch; + } +} + +.Title { + font-size: 0.6875rem; + font-weight: 600; + text-transform: uppercase; + letter-spacing: 0.06em; + color: var(--demo-neutral-fg-muted); + padding-inline: 0.5rem; +} + +.Nav { + display: flex; + flex-direction: column; + gap: 0.75rem; + position: sticky; + top: 0; + width: 12rem; + flex-shrink: 0; + align-self: flex-start; + max-height: calc(100vh - 2rem); + overflow-y: auto; + min-height: 0; +} + +.Content { + min-width: 0; + width: 100%; + min-height: 20rem; + height: clamp(20rem, 50vh, 28rem); + overflow-y: auto; + padding-right: 1rem; + overscroll-behavior: contain; + > * + * { + margin-top: 3rem; + } + scrollbar-width: thin; + scrollbar-color: var(--demo-neutral-muted) transparent; +} + +.Heading { + color: var(--demo-neutral-fg); + margin-bottom: 1em; + + &[data-depth='2'] { + font-weight: 600; + font-size: 1.25rem; + } + + &[data-depth='3'] { + font-weight: 500; + font-size: 1rem; + } +} + +.List { + list-style: none; + padding: 0; + margin: 0; + position: relative; +} + +.Item { + padding-inline-start: 0; +} + +.ItemNested { + padding-inline-start: calc((var(--depth) - 2) * 1rem); +} + +.Link, +.LinkNumbered { + padding: 0.3rem 0.5rem; + padding-inline-start: 0.875rem; + font-size: 0.875rem; + color: var(--demo-neutral-fg-muted); + text-decoration: none; + border-radius: 0.375rem; + + &:hover { + color: var(--demo-neutral-fg); + } + + &[data-active] { + color: var(--demo-coral-fg); + font-weight: 500; + } + + &:focus-visible { + outline: 2px solid var(--demo-coral-focus-ring); + outline-offset: 2px; + } +} + +.Link { + display: block; + transition: color 0.15s; +} + +.LinkNumbered { + display: flex; + align-items: center; + gap: 0.5rem; + transition: color 0.15s; +} + +.Number { + font-variant-numeric: tabular-nums; + font-size: 0.6875rem; + color: var(--demo-neutral-fg-muted); + min-width: 1.5rem; + font-weight: 600; +} + +.TreeLink { + text-decoration: none; + color: inherit; + transition: color 0.15s; + + &[data-active] { + color: var(--demo-coral-fg); + font-weight: 500; + } +} + +.Indicator { + position: absolute; + top: var(--top); + left: 0; + height: var(--height); + width: 2px; + background: var(--demo-coral-solid); + border-radius: 9999px; + transition: + top 0.2s ease, + height 0.2s ease; +} + +.DummyText { + display: flex; + flex-direction: column; + gap: 0.75rem; + margin-top: 0.5rem; + min-height: 10rem; +} + +.DummyLine { + height: 0.5rem; + background: var(--demo-neutral-subtle); + &:last-child { + width: 60%; + } +} + +.MobileNav { + display: none; +} + +.NativeSelect { + width: 100%; + padding: 0.4rem 0.75rem; + font-size: 0.875rem; + color: var(--demo-neutral-fg); + background: transparent; + border: 1px solid var(--demo-border-emphasized); + border-radius: 0.5rem; + cursor: pointer; + + &[data-active] { + color: var(--demo-coral-fg); + font-weight: 500; + } + + &:focus-visible { + outline: 2px solid var(--demo-coral-focus-ring); + outline-offset: 2px; + } +} + +.HoverRoot { + gap: 0; + + & .Content { + padding-right: 2rem; + } +} + +.NavHover { + position: absolute; + right: -0.5rem; + top: 50%; + background: var(--colors-bg-default, #fff); + transform: translateY(-50%); + width: 1.5rem; + padding: 1rem; + border-radius: 0.75rem; + overflow: hidden; + z-index: 100; + transition: width 0.2s ease; + cursor: pointer; + + &[data-expanded] { + width: 12rem; + background: var(--colors-bg-default); + box-shadow: + 0 6px 24px 0 rgba(0, 0, 0, 0.13), + 0 3px 12px 0 rgba(0, 0, 0, 0.07); + border-radius: 1rem; + cursor: default; + } +} + +.HoverSwap { + display: grid; + & > * { + grid-area: 1 / 1; + backface-visibility: hidden; + transform-origin: top center; + } +} + +.HoverList { + list-style: none; + padding: 0; + margin: 0; + display: flex; + flex-direction: column; + gap: 0.125rem; + background: var(--demo-bg-popover); + + &[data-state='open'] { + animation-name: fade-in, scale-in; + animation-duration: 0.2s; + animation-timing-function: ease-out; + } + + &[data-state='closed'] { + animation-name: fade-out, scale-out; + animation-duration: 0.1s; + animation-timing-function: ease-in; + } +} + +.HoverSkeleton { + display: flex; + flex-direction: column; + gap: 0.5rem; + padding: 0.125rem 0.25rem; + color: var(--demo-neutral-fg-muted); +} + +.HoverLink { + display: block; + padding: 0.2rem 0.25rem; + font-size: 0.8125rem; + text-decoration: none; + border-radius: 0.3rem; + white-space: nowrap; + color: var(--demo-neutral-fg-muted); + transition: + color 0.15s, + background 0.15s; + + &:hover { + background: var(--demo-neutral-subtle); + } + + &[data-active] { + color: var(--demo-coral-fg); + font-weight: 500; + background: color-mix(in srgb, var(--demo-coral-solid) 12%, transparent); + border-radius: 0.3rem; + } +} + +.SkeletonBar { + display: block; + height: 2px; + border-radius: 9999px; + background: currentColor; + opacity: 0.3; + width: calc(var(--depth) * 12px); +} + +.TriggerContent { + display: flex; + align-items: center; + justify-content: flex-start; + gap: 0.5rem; + flex: 1; + min-width: 0; +} + +.ProgressRing { + flex-shrink: 0; + color: var(--demo-neutral-fg-muted); +} + +.TriggerLabel { + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; +} + +.ProgressIndexText { + transform-origin: center; + transform-box: fill-box; +} + +@keyframes fade-in { + from { + opacity: 0; + } + to { + opacity: 1; + } +} + +@keyframes fade-out { + from { + opacity: 1; + } + to { + opacity: 0; + } +} + +@keyframes scale-in { + from { + transform: scale(0); + } + to { + transform: scale(1); + } +} + +@keyframes scale-out { + from { + transform: scale(1); + } + to { + transform: scale(0); + } +} + +@media (max-width: 640px) { + .Root { + flex-direction: column; + gap: 1rem; + max-width: 100%; + align-items: stretch; + } + + .MobileNav { + display: block; + position: sticky; + top: 0; + padding-block: 0.5rem; + width: 100%; + } + + .Nav { + width: 100%; + order: -1; + position: sticky; + top: 0; + padding-block: 0.5rem; + padding-inline: 1rem; + align-self: stretch; + gap: 0.5rem; + max-height: none; + } + + .RootWithMobileNav .Nav { + display: none; + } + + .Content { + flex: none; + min-height: 16rem; + height: clamp(16rem, 40vh, 22rem); + overflow-y: auto; + padding: 0; + width: 100%; + box-sizing: border-box; + } + + .List { + padding: 0; + } + + .HoverRoot { + overflow: visible; + } + + .NavHover { + right: 0.5rem; + + &[data-expanded] { + width: 12rem; + } + } +} + +.RailList { + list-style: none; + padding: 0; + margin: 0; + position: relative; +} + +.RailItem { + padding-inline-start: 0; +} + +.RailLink { + position: relative; + display: block; + padding-block: 0.35rem; + font-size: 0.8125rem; + line-height: 1.4; + color: var(--demo-neutral-fg-muted); + text-decoration: none; + transition: color 0.15s; + + &:hover { + color: var(--demo-neutral-fg); + } + + &[data-active] { + color: var(--demo-coral-fg); + } +} + +.RailSvg { + position: absolute; + inset-inline-start: 0; + z-index: -1; + stroke: var(--demo-border-emphasized); + stroke-width: 1; + transition: stroke 0.15s; +} + +.RailLink[data-active] .RailSvg { + stroke: var(--demo-coral-solid); +} diff --git a/bun.lock b/bun.lock index 7648f6ec54..28d826d983 100644 --- a/bun.lock +++ b/bun.lock @@ -101,6 +101,7 @@ "@zag-js/tags-input": "1.43.1", "@zag-js/timer": "1.43.1", "@zag-js/toast": "1.43.1", + "@zag-js/toc": "1.43.1", "@zag-js/toggle": "1.43.1", "@zag-js/toggle-group": "1.43.1", "@zag-js/tooltip": "1.43.1", @@ -212,6 +213,7 @@ "@zag-js/tags-input": "1.43.1", "@zag-js/timer": "1.43.1", "@zag-js/toast": "1.43.1", + "@zag-js/toc": "1.43.1", "@zag-js/toggle": "1.43.1", "@zag-js/toggle-group": "1.43.1", "@zag-js/tooltip": "1.43.1", @@ -319,6 +321,7 @@ "@zag-js/tags-input": "1.43.1", "@zag-js/timer": "1.43.1", "@zag-js/toast": "1.43.1", + "@zag-js/toc": "1.43.1", "@zag-js/toggle": "1.43.1", "@zag-js/toggle-group": "1.43.1", "@zag-js/tooltip": "1.43.1", @@ -423,6 +426,7 @@ "@zag-js/tags-input": "1.43.1", "@zag-js/timer": "1.43.1", "@zag-js/toast": "1.43.1", + "@zag-js/toc": "1.43.1", "@zag-js/toggle": "1.43.1", "@zag-js/toggle-group": "1.43.1", "@zag-js/tooltip": "1.43.1", @@ -1925,6 +1929,8 @@ "@zag-js/toast": ["@zag-js/toast@1.43.1", "", { "dependencies": { "@zag-js/anatomy": "1.43.1", "@zag-js/core": "1.43.1", "@zag-js/dismissable": "1.43.1", "@zag-js/dom-query": "1.43.1", "@zag-js/types": "1.43.1", "@zag-js/utils": "1.43.1" } }, "sha512-I3rGEppExDWrhJbpe1UY2HVDTO1wS2BiZf0pStSBjDUNhDohDpYlxpfvL0nL/P6uihUPmwJ4zOjz05mILGViRw=="], + "@zag-js/toc": ["@zag-js/toc@1.43.1", "", { "dependencies": { "@zag-js/anatomy": "1.43.1", "@zag-js/core": "1.43.1", "@zag-js/dom-query": "1.43.1", "@zag-js/types": "1.43.1", "@zag-js/utils": "1.43.1" } }, "sha512-+3CAznlV66qY5/xukht2hq951FgVSTzbbALRlnhS1CCXZJmA7Ufz0ItFZOQ2dRdVQYCyODyay1UHKpKZwvSEkw=="], + "@zag-js/toggle": ["@zag-js/toggle@1.43.1", "", { "dependencies": { "@zag-js/anatomy": "1.43.1", "@zag-js/core": "1.43.1", "@zag-js/dom-query": "1.43.1", "@zag-js/types": "1.43.1", "@zag-js/utils": "1.43.1" } }, "sha512-D3DYsT/lD+OSvGrcUGSxTfLTEJPgoxHKBJszzdLyRQZCBqor9R8y9ZrGQq49/xrED8HIMf7sNPTuitcWK7dMtw=="], "@zag-js/toggle-group": ["@zag-js/toggle-group@1.43.1", "", { "dependencies": { "@zag-js/anatomy": "1.43.1", "@zag-js/core": "1.43.1", "@zag-js/dom-query": "1.43.1", "@zag-js/types": "1.43.1", "@zag-js/utils": "1.43.1" } }, "sha512-j7ZSlAF/kBUfz6Qgbt/wa3XBKTx0aHusZraKAKMZz7QpNzt96IA+QZFBKEMjgPr0JugZr0KXAH9nsQwAc9pvFw=="], diff --git a/packages/react/package.json b/packages/react/package.json index de76e0ad30..cc0abe7baa 100644 --- a/packages/react/package.json +++ b/packages/react/package.json @@ -41,6 +41,7 @@ "tags input", "timer", "toast", + "toc", "toggle group", "tooltip", "tree view", @@ -145,6 +146,7 @@ "@zag-js/tags-input": "1.43.1", "@zag-js/timer": "1.43.1", "@zag-js/toast": "1.43.1", + "@zag-js/toc": "1.43.1", "@zag-js/toggle": "1.43.1", "@zag-js/toggle-group": "1.43.1", "@zag-js/tooltip": "1.43.1", diff --git a/packages/react/src/components/anatomy.ts b/packages/react/src/components/anatomy.ts index 1f6b353f0b..e63b745f99 100644 --- a/packages/react/src/components/anatomy.ts +++ b/packages/react/src/components/anatomy.ts @@ -45,6 +45,7 @@ export { tabsAnatomy } from './tabs/tabs.anatomy.ts' export { tagsInputAnatomy } from './tags-input/tags-input.anatomy.ts' export { timerAnatomy } from './timer/timer.anatomy.ts' export { toastAnatomy } from './toast/toast.anatomy.ts' +export { tocAnatomy } from './toc/toc.anatomy.ts' export { toggleAnatomy } from './toggle/toggle.anatomy.ts' export { toggleGroupAnatomy } from './toggle-group/toggle-group.anatomy.ts' export { tooltipAnatomy } from './tooltip/tooltip.anatomy.ts' diff --git a/packages/react/src/components/index.ts b/packages/react/src/components/index.ts index d854e6e52b..db7dc4fd4d 100644 --- a/packages/react/src/components/index.ts +++ b/packages/react/src/components/index.ts @@ -54,6 +54,7 @@ export * from './tabs/index.ts' export * from './tags-input/index.ts' export * from './timer/index.ts' export * from './toast/index.ts' +export * from './toc/index.ts' export * from './toggle/index.ts' export * from './toggle-group/index.ts' export * from './tooltip/index.ts' diff --git a/packages/react/src/components/toc/examples/basic.tsx b/packages/react/src/components/toc/examples/basic.tsx new file mode 100644 index 0000000000..87b86b3af4 --- /dev/null +++ b/packages/react/src/components/toc/examples/basic.tsx @@ -0,0 +1,47 @@ +import { Toc } from '@ark-ui/react/toc' +import { useRef } from 'react' +import styles from 'styles/toc.module.css' + +const items = [ + { value: '01-introduction', depth: 2, label: 'Introduction', lines: 12 }, + { value: '01-getting-started', depth: 2, label: 'Getting Started', lines: 10 }, + { value: '01-installation', depth: 2, label: 'Installation', lines: 8 }, + { value: '01-usage', depth: 2, label: 'Usage', lines: 14 }, + { value: '01-conclusion', depth: 2, label: 'Conclusion', lines: 10 }, +] + +export const Basic = () => { + const contentRef = useRef(null) + + return ( + contentRef.current}> + + {items.map((item) => ( +
+

+ {item.label} +

+
+ {Array.from({ length: item.lines }).map((_, i) => ( +
+ ))} +
+
+ ))} +
+ + + On this page + + {items.map((item) => ( + + + {item.label} + + + ))} + + +
+ ) +} diff --git a/packages/react/src/components/toc/examples/nested.tsx b/packages/react/src/components/toc/examples/nested.tsx new file mode 100644 index 0000000000..31095efe4f --- /dev/null +++ b/packages/react/src/components/toc/examples/nested.tsx @@ -0,0 +1,50 @@ +import { Toc } from '@ark-ui/react/toc' +import { useRef } from 'react' +import styles from 'styles/toc.module.css' + +const items = [ + { value: '02-importance', depth: 2, label: 'Importance', lines: 10 }, + { value: '02-integrations', depth: 2, label: 'Integrations', lines: 12 }, + { value: '02-free-blocks', depth: 3, label: 'Free Blocks', lines: 8 }, + { value: '02-configuration', depth: 3, label: 'Configuration', lines: 14 }, + { value: '02-api-reference', depth: 2, label: 'API Reference', lines: 10 }, + { value: '02-hooks', depth: 3, label: 'Hooks', lines: 8 }, + { value: '02-components', depth: 3, label: 'Components', lines: 12 }, + { value: '02-examples', depth: 2, label: 'Examples', lines: 10 }, +] + +export const Nested = () => { + const contentRef = useRef(null) + + return ( + contentRef.current}> + + {items.map((item) => ( +
+
+ {item.label} +
+
+ {Array.from({ length: item.lines }).map((_, i) => ( +
+ ))} +
+
+ ))} +
+ + + On this page + + {items.map((item) => ( + 2 ? styles.ItemNested : styles.Item} key={item.value} item={item}> + + {item.label} + + + ))} + + +
+ ) +} diff --git a/packages/react/src/components/toc/examples/root-provider.tsx b/packages/react/src/components/toc/examples/root-provider.tsx new file mode 100644 index 0000000000..e4449c8b34 --- /dev/null +++ b/packages/react/src/components/toc/examples/root-provider.tsx @@ -0,0 +1,55 @@ +import { Toc, useToc } from '@ark-ui/react/toc' +import { useRef } from 'react' +import styles from 'styles/toc.module.css' + +const items = [ + { value: '03-introduction', depth: 2, label: 'Introduction', lines: 12 }, + { value: '03-getting-started', depth: 2, label: 'Getting Started', lines: 10 }, + { value: '03-installation', depth: 2, label: 'Installation', lines: 8 }, + { value: '03-usage', depth: 2, label: 'Usage', lines: 14 }, + { value: '03-conclusion', depth: 2, label: 'Conclusion', lines: 10 }, +] + +export const RootProvider = () => { + const contentRef = useRef(null) + + const toc = useToc({ + items, + scrollEl: () => contentRef.current, + }) + + return ( +
+ activeIds: {JSON.stringify(toc.activeIds)} + + + {items.map((item) => ( +
+

+ {item.label} +

+
+ {Array.from({ length: item.lines }).map((_, i) => ( +
+ ))} +
+
+ ))} +
+ + + On this page + + {items.map((item) => ( + + + {item.label} + + + ))} + + +
+
+ ) +} diff --git a/packages/react/src/components/toc/examples/with-collapsible.tsx b/packages/react/src/components/toc/examples/with-collapsible.tsx new file mode 100644 index 0000000000..5d7df04af1 --- /dev/null +++ b/packages/react/src/components/toc/examples/with-collapsible.tsx @@ -0,0 +1,107 @@ +import { Collapsible } from '@ark-ui/react/collapsible' +import { Toc } from '@ark-ui/react/toc' +import { ChevronRightIcon } from 'lucide-react' +import CollapsibleStyles from 'styles/collapsible.module.css' +import styles from 'styles/toc.module.css' +import { useRef } from 'react' + +const items = [ + { value: '04-overview', depth: 2, label: 'Overview', lines: 8 }, + { value: '04-prerequisites', depth: 2, label: 'Prerequisites', lines: 5 }, + { value: '04-quick-start', depth: 2, label: 'Quick Start', lines: 20 }, + { value: '04-commands', depth: 2, label: 'Core Commands', lines: 15 }, + { value: '04-troubleshooting', depth: 2, label: 'Troubleshooting', lines: 12 }, +] + +export const WithCollapsible = () => { + const contentRef = useRef(null) + + return ( + contentRef.current}> + + + {({ activeItems }) => { + const activeIndex = items.findIndex((i) => i.value === activeItems[0]?.value) + const activeLabel = items[activeIndex]?.label ?? 'On this page' + + return ( + + + + + {activeLabel} + + + + + + + ) + }} + + + + {items.map((item, index) => ( + + + {String(index + 1).padStart(2, '0')} + {item.label} + + + ))} + + + + + + {items.map((item) => ( +
+

+ {item.label} +

+
+ {Array.from({ length: item.lines }).map((_, i) => ( +
+ ))} +
+
+ ))} +
+
+ ) +} + +const Ring = ({ index, total }: { index: number; total: number }) => { + const progress = index >= 0 ? (index + 1) / total : 0 + return ( + + ) +} diff --git a/packages/react/src/components/toc/examples/with-hover.tsx b/packages/react/src/components/toc/examples/with-hover.tsx new file mode 100644 index 0000000000..0ef13f4a48 --- /dev/null +++ b/packages/react/src/components/toc/examples/with-hover.tsx @@ -0,0 +1,59 @@ +import { Swap } from '@ark-ui/react/swap' +import { Toc } from '@ark-ui/react/toc' +import { useRef, useState } from 'react' +import styles from 'styles/toc.module.css' + +const items = [ + { value: '05-analytics-dashboard', depth: 2, label: 'Real-time Analytics', lines: 55 }, + { value: '05-cloud-storage', depth: 2, label: 'S3 Cloud Storage', lines: 14 }, + { value: '05-automation-tools', depth: 2, label: 'Workflow Automation', lines: 32 }, + { value: '05-crm-integration', depth: 2, label: 'Salesforce Sync', lines: 45 }, + { value: '05-report-generator', depth: 2, label: 'Custom PDF Reports', lines: 20 }, +] + +export const WithHover = () => { + const [hovered, setHovered] = useState(false) + const contentRef = useRef(null) + + return ( + contentRef.current}> + + {items.map((item) => ( +
+

+ {item.label} +

+
+ {Array.from({ length: item.lines }).map((_, i) => ( +
+ ))} +
+
+ ))} +
+ setHovered(true)} + onMouseLeave={() => setHovered(false)} + > + + + {items.map((item) => ( + + ))} + + + {items.map((item) => ( + + + {item.label} + + + ))} + + + +
+ ) +} diff --git a/packages/react/src/components/toc/examples/with-indicator.tsx b/packages/react/src/components/toc/examples/with-indicator.tsx new file mode 100644 index 0000000000..36b5533713 --- /dev/null +++ b/packages/react/src/components/toc/examples/with-indicator.tsx @@ -0,0 +1,48 @@ +import { Toc } from '@ark-ui/react/toc' +import styles from 'styles/toc.module.css' +import { useRef } from 'react' + +const items = [ + { value: '06-step-validation', depth: 2, label: 'Validation Pending', lines: 5 }, + { value: '06-upload-progress', depth: 2, label: 'Asset Uploading', lines: 90 }, + { value: '06-deployment-sync', depth: 2, label: 'Server Sync Active', lines: 12 }, + { value: '06-build-pipeline', depth: 2, label: 'CI/CD Running', lines: 105 }, + { value: '06-database-health', depth: 2, label: 'DB Connection Stable', lines: 3 }, +] + +export const WithIndicator = () => { + const contentRef = useRef(null) + + return ( + contentRef.current}> + + {items.map((item) => ( +
+

+ {item.label} +

+
+ {Array.from({ length: item.lines }).map((_, i) => ( +
+ ))} +
+
+ ))} +
+ + + On this page + + + {items.map((item) => ( + + + {item.label} + + + ))} + + +
+ ) +} diff --git a/packages/react/src/components/toc/examples/with-rail.tsx b/packages/react/src/components/toc/examples/with-rail.tsx new file mode 100644 index 0000000000..07f0394b5f --- /dev/null +++ b/packages/react/src/components/toc/examples/with-rail.tsx @@ -0,0 +1,97 @@ +import { Toc } from '@ark-ui/react/toc' +import { useRef } from 'react' +import styles from 'styles/toc.module.css' + +const items = [ + { value: '07-overview', depth: 2, label: 'Overview', lines: 10 }, + { value: '07-installation', depth: 2, label: 'Installation', lines: 8 }, + { value: '07-package-manager', depth: 3, label: 'Package Manager', lines: 12 }, + { value: '07-peer-dependencies', depth: 3, label: 'Peer Dependencies', lines: 6 }, + { value: '07-usage', depth: 2, label: 'Usage', lines: 14 }, + { value: '07-server-components', depth: 3, label: 'Server Components', lines: 9 }, + { value: '07-styling', depth: 3, label: 'Styling', lines: 11 }, + { value: '07-theming', depth: 4, label: 'Theming', lines: 7 }, + { value: '07-api-reference', depth: 2, label: 'API Reference', lines: 12 }, +] + +// h2 sits at level 0; deeper headings step in, clamped so h5+ share h4's indent +const BASE = 8 +const RAIL_STEP = 8 +const TEXT_STEP = 12 +const MAX_LEVEL = 2 + +// the rail overlaps the row above by BRIDGE px so the turn can straddle the boundary +const BRIDGE = 6 + +const levelOf = (depth: number) => Math.min(Math.max(depth - 2, 0), MAX_LEVEL) +const lineOffset = (depth: number) => BASE + levelOf(depth) * RAIL_STEP +const textOffset = (depth: number) => BASE + (levelOf(depth) + 1) * TEXT_STEP + +const Rail = (props: { depth: number; prevDepth?: number; nextDepth?: number }) => { + const { depth, prevDepth = depth, nextDepth = depth } = props + const line = lineOffset(depth) + const prevLine = lineOffset(prevDepth) + const nextLine = lineOffset(nextDepth) + const turns = prevLine !== line + + return ( + + ) +} + +export const WithRail = () => { + const contentRef = useRef(null) + + return ( + contentRef.current}> + + {items.map((item) => ( +
+

+ {item.label} +

+
+ {Array.from({ length: item.lines }).map((_, i) => ( +
+ ))} +
+
+ ))} +
+ + + On this page + + {items.map((item, index) => ( + + + + {item.label} + + + ))} + + +
+ ) +} diff --git a/packages/react/src/components/toc/examples/with-select.tsx b/packages/react/src/components/toc/examples/with-select.tsx new file mode 100644 index 0000000000..8769cf8f7a --- /dev/null +++ b/packages/react/src/components/toc/examples/with-select.tsx @@ -0,0 +1,70 @@ +import { Toc } from '@ark-ui/react/toc' +import { useRef } from 'react' +import styles from 'styles/toc.module.css' + +const items = [ + { value: '08-introduction', depth: 2, label: 'Introduction', lines: 12 }, + { value: '08-getting-started', depth: 2, label: 'Getting Started', lines: 10 }, + { value: '08-installation', depth: 2, label: 'Installation', lines: 8 }, + { value: '08-usage', depth: 2, label: 'Usage', lines: 14 }, + { value: '08-conclusion', depth: 2, label: 'Conclusion', lines: 10 }, +] + +export const WithSelect = () => { + const contentRef = useRef(null) + + return ( + contentRef.current} + > + + {({ activeItems, scrollTo }) => ( +
+ +
+ )} +
+ + + {items.map((item) => ( +
+

+ {item.label} +

+
+ {Array.from({ length: item.lines }).map((_, i) => ( +
+ ))} +
+
+ ))} +
+ + + On this page + + {items.map((item) => ( + + + {item.label} + + + ))} + + +
+ ) +} diff --git a/packages/react/src/components/toc/examples/with-tree-view.tsx b/packages/react/src/components/toc/examples/with-tree-view.tsx new file mode 100644 index 0000000000..0cf863b64e --- /dev/null +++ b/packages/react/src/components/toc/examples/with-tree-view.tsx @@ -0,0 +1,160 @@ +import { Toc, useTocContext } from '@ark-ui/react/toc' +import { TreeView, createTreeCollection } from '@ark-ui/react/tree-view' +import { ChevronRightIcon } from 'lucide-react' +import { useState, useRef } from 'react' +import tocStyles from 'styles/toc.module.css' +import treeStyles from 'styles/tree-view.module.css' + +type TocNode = { + id: string + name: string + depth: number + lines: number + children?: TocNode[] +} + +const sections: TocNode[] = [ + { + id: '09-guides', + name: 'Guides', + depth: 2, + lines: 10, + children: [ + { id: '09-quick-start', name: 'Quick Start', depth: 3, lines: 6 }, + { id: '09-manual-setup', name: 'Manual Setup', depth: 3, lines: 5 }, + ], + }, + { + id: '09-core-concepts', + name: 'Core Concepts', + depth: 2, + lines: 9, + children: [ + { id: '09-toc-props', name: 'Props', depth: 3, lines: 7 }, + { id: '09-toc-events', name: 'Events', depth: 3, lines: 6 }, + { id: '09-toc-context', name: 'Context', depth: 3, lines: 8 }, + ], + }, + { + id: '09-advanced', + name: 'Advanced', + depth: 2, + lines: 11, + children: [ + { id: '09-root-api', name: 'Root Provider', depth: 3, lines: 7 }, + { id: '09-custom-rendering', name: 'Custom Rendering', depth: 3, lines: 6 }, + ], + }, +] + +const collection = createTreeCollection({ + nodeToValue: (node) => node.id, + nodeToString: (node) => node.name, + rootNode: { id: 'ROOT', name: '', depth: 0, lines: 0, children: sections }, +}) + +const allItems = sections.flatMap((section) => [ + { value: section.id, depth: section.depth }, + ...(section.children ?? []).map((child) => ({ value: child.id, depth: child.depth })), +]) + +const TocTreeNode = ({ node, indexPath }: TreeView.NodeProviderProps) => { + const toc = useTocContext() + return ( + + {node.children ? ( + + + + + + + + {node.name} + + + + + + {node.children.map((child, index) => ( + + ))} + + + ) : ( + + + + {node.name} + + + + )} + + ) +} + +export const WithTreeView = () => { + const [expandedValue, setExpandedValue] = useState([]) + const contentRef = useRef(null) + + return ( + contentRef.current} + onActiveChange={({ activeItems }) => { + const activeIds = new Set(activeItems.map((i) => i.value)) + const next = sections + .filter( + (section) => activeIds.has(section.id) || (section.children ?? []).some((child) => activeIds.has(child.id)), + ) + .map((s) => s.id) + setExpandedValue(next) + }} + > + + {sections.map((section) => ( +
+

+ {section.name} +

+
+ {Array.from({ length: section.lines ?? 5 }, (_, i) => ( +
+ ))} +
+ {section.children?.map((child) => ( +
+

+ {child.name} +

+
+ {Array.from({ length: child.lines ?? 3 }, (_, i) => ( +
+ ))} +
+
+ ))} +
+ ))} +
+ + + On this page + setExpandedValue(next)} + > + + {sections.map((node, index) => ( + + ))} + + + +
+ ) +} diff --git a/packages/react/src/components/toc/index.ts b/packages/react/src/components/toc/index.ts new file mode 100644 index 0000000000..db28e57314 --- /dev/null +++ b/packages/react/src/components/toc/index.ts @@ -0,0 +1,16 @@ +export type { ActiveChangeDetails as TocActiveChangeDetails, TocItem as TocItemData } from '@zag-js/toc' +export { TocContent, type TocContentBaseProps, type TocContentProps } from './toc-content.tsx' +export { TocContext, type TocContextProps } from './toc-context.tsx' +export { TocIndicator, type TocIndicatorBaseProps, type TocIndicatorProps } from './toc-indicator.tsx' +export { TocItem, type TocItemBaseProps, type TocItemProps } from './toc-item.tsx' +export { TocLink, type TocLinkBaseProps, type TocLinkProps } from './toc-link.tsx' +export { TocList, type TocListBaseProps, type TocListProps } from './toc-list.tsx' +export { TocNav, type TocNavBaseProps, type TocNavProps } from './toc-nav.tsx' +export { TocRoot, type TocRootBaseProps, type TocRootProps } from './toc-root.tsx' +export { TocRootProvider, type TocRootProviderBaseProps, type TocRootProviderProps } from './toc-root-provider.tsx' +export { TocTitle, type TocTitleBaseProps, type TocTitleProps } from './toc-title.tsx' +export { tocAnatomy } from './toc.anatomy.ts' +export { useToc, type UseTocProps, type UseTocReturn } from './use-toc.ts' +export { useTocContext, type UseTocContext } from './use-toc-context.ts' + +export * as Toc from './toc.ts' diff --git a/packages/react/src/components/toc/tests/basic.tsx b/packages/react/src/components/toc/tests/basic.tsx new file mode 100644 index 0000000000..75a88bb49b --- /dev/null +++ b/packages/react/src/components/toc/tests/basic.tsx @@ -0,0 +1,32 @@ +import { Toc } from '../' + +export const items = [ + { value: 'introduction', depth: 2 }, + { value: 'getting-started', depth: 2 }, + { value: 'installation', depth: 2 }, + { value: 'usage', depth: 2 }, + { value: 'api-reference', depth: 2 }, +] + +export const ComponentUnderTest = (props: Omit) => ( + + +

Introduction

+

Getting Started

+

Installation

+

Usage

+

API Reference

+
+ + On this page + + + {items.map((item) => ( + + {item.value.replace(/-/g, ' ')} + + ))} + + +
+) diff --git a/packages/react/src/components/toc/tests/toc.test.tsx b/packages/react/src/components/toc/tests/toc.test.tsx new file mode 100644 index 0000000000..9fe46f3a43 --- /dev/null +++ b/packages/react/src/components/toc/tests/toc.test.tsx @@ -0,0 +1,93 @@ +import { render, screen } from '@testing-library/react' +import { vi } from 'vitest' +import { axe } from 'vitest-axe' +import { Toc } from '../' +import { ComponentUnderTest, items } from './basic' + +describe('Toc', () => { + it('should have no a11y violations', async () => { + const { container } = render() + const results = await axe(container) + expect(results).toHaveNoViolations() + }) + + it('should render Nav as a nav landmark', () => { + render() + expect(screen.getByRole('navigation')).toBeInTheDocument() + }) + + it('should render Content as an article', () => { + const { container } = render() + expect(container.querySelector('article')).toBeInTheDocument() + }) + + it('should render the title', () => { + render() + expect(screen.getByText('On this page')).toBeInTheDocument() + }) + + it('should render all links with correct hrefs', () => { + render() + expect(screen.getByRole('link', { name: 'introduction' })).toHaveAttribute('href', '#introduction') + expect(screen.getByRole('link', { name: 'usage' })).toHaveAttribute('href', '#usage') + expect(screen.getByRole('link', { name: 'api reference' })).toHaveAttribute('href', '#api-reference') + }) + + it('should render the indicator', () => { + render() + expect(screen.getByTestId('indicator')).toHaveAttribute('data-part', 'indicator') + }) + + it('should apply data-part attributes to all parts', () => { + const { container } = render() + expect(container.querySelector('[data-part="title"]')).toBeInTheDocument() + expect(container.querySelector('[data-part="list"]')).toBeInTheDocument() + expect(container.querySelector('[data-part="item"]')).toBeInTheDocument() + expect(container.querySelector('[data-part="link"]')).toBeInTheDocument() + expect(container.querySelector('[data-part="indicator"]')).toBeInTheDocument() + }) + + it('should set data-active on the link matching defaultActiveIds', () => { + const { container } = render() + expect(container.querySelector('[data-part="link"][data-value="usage"]')).toHaveAttribute('data-active', '') + expect(container.querySelector('[data-part="link"][data-value="introduction"]')).not.toHaveAttribute('data-active') + }) + + it('should support multiple defaultActiveIds', () => { + const { container } = render() + expect(container.querySelector('[data-part="link"][data-value="introduction"]')).toHaveAttribute('data-active', '') + expect(container.querySelector('[data-part="link"][data-value="usage"]')).toHaveAttribute('data-active', '') + expect(container.querySelector('[data-part="link"][data-value="installation"]')).not.toHaveAttribute('data-active') + }) + + it('should reflect controlled activeIds', () => { + const { container } = render() + expect(container.querySelector('[data-part="link"][data-value="installation"]')).toHaveAttribute('data-active', '') + expect(container.querySelector('[data-part="link"][data-value="introduction"]')).not.toHaveAttribute('data-active') + }) + + it('should update active link when controlled activeIds change', () => { + const { container, rerender } = render() + expect(container.querySelector('[data-part="link"][data-value="introduction"]')).toHaveAttribute('data-active', '') + + rerender() + expect(container.querySelector('[data-part="link"][data-value="usage"]')).toHaveAttribute('data-active', '') + expect(container.querySelector('[data-part="link"][data-value="introduction"]')).not.toHaveAttribute('data-active') + }) + + it('should expose activeIds via Context render prop', () => { + render( + + + {(ctx) => {ctx.activeIds.length}} + + + introduction + + + + , + ) + expect(screen.getByTestId('active-count')).toHaveTextContent('1') + }) +}) diff --git a/packages/react/src/components/toc/toc-content.tsx b/packages/react/src/components/toc/toc-content.tsx new file mode 100644 index 0000000000..074267e90c --- /dev/null +++ b/packages/react/src/components/toc/toc-content.tsx @@ -0,0 +1,11 @@ +import { forwardRef } from 'react' +import { type HTMLProps, type PolymorphicProps, ark } from '../factory' + +export interface TocContentBaseProps extends PolymorphicProps {} +export interface TocContentProps extends HTMLProps<'article'>, TocContentBaseProps {} + +export const TocContent = forwardRef((props, ref) => { + return +}) + +TocContent.displayName = 'TocContent' diff --git a/packages/react/src/components/toc/toc-context.tsx b/packages/react/src/components/toc/toc-context.tsx new file mode 100644 index 0000000000..a977b1a1de --- /dev/null +++ b/packages/react/src/components/toc/toc-context.tsx @@ -0,0 +1,8 @@ +import type { ReactNode } from 'react' +import { type UseTocContext, useTocContext } from './use-toc-context' + +export interface TocContextProps { + children: (context: UseTocContext) => ReactNode +} + +export const TocContext = (props: TocContextProps) => props.children(useTocContext()) diff --git a/packages/react/src/components/toc/toc-indicator.tsx b/packages/react/src/components/toc/toc-indicator.tsx new file mode 100644 index 0000000000..8209b48c33 --- /dev/null +++ b/packages/react/src/components/toc/toc-indicator.tsx @@ -0,0 +1,16 @@ +import { mergeProps } from '@zag-js/react' +import { forwardRef } from 'react' +import { type HTMLProps, type PolymorphicProps, ark } from '../factory' +import { useTocContext } from './use-toc-context' + +export interface TocIndicatorBaseProps extends PolymorphicProps {} +export interface TocIndicatorProps extends HTMLProps<'div'>, TocIndicatorBaseProps {} + +export const TocIndicator = forwardRef((props, ref) => { + const toc = useTocContext() + const mergedProps = mergeProps(toc.getIndicatorProps(), props) + + return +}) + +TocIndicator.displayName = 'TocIndicator' diff --git a/packages/react/src/components/toc/toc-item.tsx b/packages/react/src/components/toc/toc-item.tsx new file mode 100644 index 0000000000..4c68ab7952 --- /dev/null +++ b/packages/react/src/components/toc/toc-item.tsx @@ -0,0 +1,26 @@ +import { mergeProps } from '@zag-js/react' +import type { ItemProps } from '@zag-js/toc' +import { forwardRef } from 'react' +import { createSplitProps } from '../../utils/create-split-props' +import { type HTMLProps, type PolymorphicProps, ark } from '../factory' +import { useTocContext } from './use-toc-context' +import { TocItemPropsProvider } from './use-toc-item-props-context' + +export interface TocItemBaseProps extends ItemProps, PolymorphicProps {} +export interface TocItemProps extends HTMLProps<'li'>, TocItemBaseProps {} + +const splitItemProps = createSplitProps() + +export const TocItem = forwardRef((props, ref) => { + const [itemProps, localProps] = splitItemProps(props, ['item']) + const toc = useTocContext() + const mergedProps = mergeProps(toc.getItemProps(itemProps), localProps) + + return ( + + + + ) +}) + +TocItem.displayName = 'TocItem' diff --git a/packages/react/src/components/toc/toc-link.tsx b/packages/react/src/components/toc/toc-link.tsx new file mode 100644 index 0000000000..ca090f8f29 --- /dev/null +++ b/packages/react/src/components/toc/toc-link.tsx @@ -0,0 +1,18 @@ +import { mergeProps } from '@zag-js/react' +import { forwardRef } from 'react' +import { type HTMLProps, type PolymorphicProps, ark } from '../factory' +import { useTocContext } from './use-toc-context' +import { useTocItemPropsContext } from './use-toc-item-props-context' + +export interface TocLinkBaseProps extends PolymorphicProps {} +export interface TocLinkProps extends HTMLProps<'a'>, TocLinkBaseProps {} + +export const TocLink = forwardRef((props, ref) => { + const toc = useTocContext() + const itemProps = useTocItemPropsContext() + const mergedProps = mergeProps(toc.getLinkProps(itemProps), props) + + return +}) + +TocLink.displayName = 'TocLink' diff --git a/packages/react/src/components/toc/toc-list.tsx b/packages/react/src/components/toc/toc-list.tsx new file mode 100644 index 0000000000..2cd7dceb5a --- /dev/null +++ b/packages/react/src/components/toc/toc-list.tsx @@ -0,0 +1,16 @@ +import { mergeProps } from '@zag-js/react' +import { forwardRef } from 'react' +import { type HTMLProps, type PolymorphicProps, ark } from '../factory' +import { useTocContext } from './use-toc-context' + +export interface TocListBaseProps extends PolymorphicProps {} +export interface TocListProps extends HTMLProps<'ul'>, TocListBaseProps {} + +export const TocList = forwardRef((props, ref) => { + const toc = useTocContext() + const mergedProps = mergeProps(toc.getListProps(), props) + + return +}) + +TocList.displayName = 'TocList' diff --git a/packages/react/src/components/toc/toc-nav.tsx b/packages/react/src/components/toc/toc-nav.tsx new file mode 100644 index 0000000000..3bb8172829 --- /dev/null +++ b/packages/react/src/components/toc/toc-nav.tsx @@ -0,0 +1,19 @@ +import { mergeProps } from '@zag-js/react' +import { forwardRef } from 'react' +import { type HTMLProps, type PolymorphicProps, ark } from '../factory' +import { useTocContext } from './use-toc-context' + +export interface TocNavBaseProps extends PolymorphicProps { + placement?: 'left' | 'right' +} +export interface TocNavProps extends HTMLProps<'nav'>, TocNavBaseProps {} + +export const TocNav = forwardRef((props, ref) => { + const { placement, ...rest } = props + const toc = useTocContext() + const mergedProps = mergeProps(toc.getRootProps(), rest) + + return +}) + +TocNav.displayName = 'TocNav' diff --git a/packages/react/src/components/toc/toc-root-provider.tsx b/packages/react/src/components/toc/toc-root-provider.tsx new file mode 100644 index 0000000000..1e99b170d3 --- /dev/null +++ b/packages/react/src/components/toc/toc-root-provider.tsx @@ -0,0 +1,27 @@ +import { forwardRef } from 'react' +import type { Assign } from '../../types' +import { createSplitProps } from '../../utils/create-split-props' +import { type HTMLProps, type PolymorphicProps, ark } from '../factory' +import type { UseTocReturn } from './use-toc' +import { TocProvider } from './use-toc-context' + +interface RootProviderProps { + value: UseTocReturn +} + +export interface TocRootProviderBaseProps extends RootProviderProps, PolymorphicProps {} +export interface TocRootProviderProps extends Assign, TocRootProviderBaseProps> {} + +const splitRootProviderProps = createSplitProps() + +export const TocRootProvider = forwardRef((props, ref) => { + const [{ value: toc }, localProps] = splitRootProviderProps(props, ['value']) + + return ( + + + + ) +}) + +TocRootProvider.displayName = 'TocRootProvider' diff --git a/packages/react/src/components/toc/toc-root.tsx b/packages/react/src/components/toc/toc-root.tsx new file mode 100644 index 0000000000..035cea7692 --- /dev/null +++ b/packages/react/src/components/toc/toc-root.tsx @@ -0,0 +1,38 @@ +import { mergeProps } from '@zag-js/react' +import { forwardRef } from 'react' +import type { Assign } from '../../types' +import { createSplitProps } from '../../utils/create-split-props' +import { type HTMLProps, type PolymorphicProps, ark } from '../factory' +import { type UseTocProps, useToc } from './use-toc' +import { TocProvider } from './use-toc-context' + +export interface TocRootBaseProps extends UseTocProps, PolymorphicProps {} +export interface TocRootProps extends Assign, TocRootBaseProps> {} + +const splitRootProps = createSplitProps() + +export const TocRoot = forwardRef((props, ref) => { + const [useTocProps, localProps] = splitRootProps(props, [ + 'activeIds', + 'autoScroll', + 'defaultActiveIds', + 'scrollEl', + 'id', + 'ids', + 'items', + 'onActiveChange', + 'rootMargin', + 'scrollBehavior', + 'threshold', + ]) + const toc = useToc(useTocProps) + const mergedProps = mergeProps(toc.getRootProps(), localProps) + + return ( + + + + ) +}) + +TocRoot.displayName = 'TocRoot' diff --git a/packages/react/src/components/toc/toc-title.tsx b/packages/react/src/components/toc/toc-title.tsx new file mode 100644 index 0000000000..c092cd67c4 --- /dev/null +++ b/packages/react/src/components/toc/toc-title.tsx @@ -0,0 +1,16 @@ +import { mergeProps } from '@zag-js/react' +import { forwardRef } from 'react' +import { type HTMLProps, type PolymorphicProps, ark } from '../factory' +import { useTocContext } from './use-toc-context' + +export interface TocTitleBaseProps extends PolymorphicProps {} +export interface TocTitleProps extends HTMLProps<'h2'>, TocTitleBaseProps {} + +export const TocTitle = forwardRef((props, ref) => { + const toc = useTocContext() + const mergedProps = mergeProps(toc.getTitleProps(), props) + + return +}) + +TocTitle.displayName = 'TocTitle' diff --git a/packages/react/src/components/toc/toc.anatomy.ts b/packages/react/src/components/toc/toc.anatomy.ts new file mode 100644 index 0000000000..560bfdc21b --- /dev/null +++ b/packages/react/src/components/toc/toc.anatomy.ts @@ -0,0 +1 @@ +export { anatomy as tocAnatomy } from '@zag-js/toc' diff --git a/packages/react/src/components/toc/toc.stories.tsx b/packages/react/src/components/toc/toc.stories.tsx new file mode 100644 index 0000000000..01640c3358 --- /dev/null +++ b/packages/react/src/components/toc/toc.stories.tsx @@ -0,0 +1,17 @@ +import type { Meta } from '@storybook/react-vite' + +const meta: Meta = { + title: 'Components / Toc', +} + +export default meta + +export { Basic } from './examples/basic' +export { Nested } from './examples/nested' +export { RootProvider } from './examples/root-provider' +export { WithCollapsible } from './examples/with-collapsible' +export { WithHover } from './examples/with-hover' +export { WithIndicator } from './examples/with-indicator' +export { WithRail } from './examples/with-rail' +export { WithSelect } from './examples/with-select' +export { WithTreeView } from './examples/with-tree-view' diff --git a/packages/react/src/components/toc/toc.ts b/packages/react/src/components/toc/toc.ts new file mode 100644 index 0000000000..c5813b27fc --- /dev/null +++ b/packages/react/src/components/toc/toc.ts @@ -0,0 +1,27 @@ +export type { ActiveChangeDetails as TocActiveChangeDetails, TocItem as TocItemData } from '@zag-js/toc' +export { + TocContent as Content, + type TocContentBaseProps as ContentBaseProps, + type TocContentProps as ContentProps, +} from './toc-content' +export { TocContext as Context, type TocContextProps as ContextProps } from './toc-context' +export { + TocIndicator as Indicator, + type TocIndicatorBaseProps as IndicatorBaseProps, + type TocIndicatorProps as IndicatorProps, +} from './toc-indicator' +export { TocItem as Item, type TocItemBaseProps as ItemBaseProps, type TocItemProps as ItemProps } from './toc-item' +export { TocLink as Link, type TocLinkBaseProps as LinkBaseProps, type TocLinkProps as LinkProps } from './toc-link' +export { TocList as List, type TocListBaseProps as ListBaseProps, type TocListProps as ListProps } from './toc-list' +export { TocNav as Nav, type TocNavBaseProps as NavBaseProps, type TocNavProps as NavProps } from './toc-nav' +export { TocRoot as Root, type TocRootBaseProps as RootBaseProps, type TocRootProps as RootProps } from './toc-root' +export { + TocRootProvider as RootProvider, + type TocRootProviderBaseProps as RootProviderBaseProps, + type TocRootProviderProps as RootProviderProps, +} from './toc-root-provider' +export { + TocTitle as Title, + type TocTitleBaseProps as TitleBaseProps, + type TocTitleProps as TitleProps, +} from './toc-title' diff --git a/packages/react/src/components/toc/use-toc-context.ts b/packages/react/src/components/toc/use-toc-context.ts new file mode 100644 index 0000000000..b59c7764b5 --- /dev/null +++ b/packages/react/src/components/toc/use-toc-context.ts @@ -0,0 +1,10 @@ +import { createContext } from '../../utils/create-context' +import type { UseTocReturn } from './use-toc' + +export interface UseTocContext extends UseTocReturn {} + +export const [TocProvider, useTocContext] = createContext({ + name: 'TocContext', + hookName: 'useTocContext', + providerName: '', +}) diff --git a/packages/react/src/components/toc/use-toc-item-props-context.ts b/packages/react/src/components/toc/use-toc-item-props-context.ts new file mode 100644 index 0000000000..4b63341aa2 --- /dev/null +++ b/packages/react/src/components/toc/use-toc-item-props-context.ts @@ -0,0 +1,10 @@ +import type { ItemProps } from '@zag-js/toc' +import { createContext } from '../../utils/create-context' + +export interface UseTocItemPropsContext extends ItemProps {} + +export const [TocItemPropsProvider, useTocItemPropsContext] = createContext({ + name: 'TocItemPropsContext', + hookName: 'useTocItemPropsContext', + providerName: '', +}) diff --git a/packages/react/src/components/toc/use-toc.ts b/packages/react/src/components/toc/use-toc.ts new file mode 100644 index 0000000000..c5b047968d --- /dev/null +++ b/packages/react/src/components/toc/use-toc.ts @@ -0,0 +1,26 @@ +import { type PropTypes, normalizeProps, useMachine } from '@zag-js/react' +import * as toc from '@zag-js/toc' +import { useId } from 'react' +import { useEnvironmentContext, useLocaleContext } from '../../providers' +import type { Optional } from '../../types' + +export interface UseTocProps extends Optional, 'id'> {} + +export interface UseTocReturn extends toc.Api {} + +export const useToc = (props?: UseTocProps): UseTocReturn => { + const id = useId() + const { getRootNode } = useEnvironmentContext() + const { dir } = useLocaleContext() + + const machineProps = { + id, + dir, + getRootNode, + items: [], + ...props, + } as toc.Props + + const service = useMachine(toc.machine as any, machineProps) + return toc.connect(service as any, normalizeProps) +} diff --git a/packages/solid/package.json b/packages/solid/package.json index 2e7a16183f..28a312b549 100644 --- a/packages/solid/package.json +++ b/packages/solid/package.json @@ -39,6 +39,7 @@ "tabs", "tags input", "toast", + "toc", "toggle group", "tooltip", "tour", @@ -144,6 +145,7 @@ "@zag-js/tags-input": "1.43.1", "@zag-js/timer": "1.43.1", "@zag-js/toast": "1.43.1", + "@zag-js/toc": "1.43.1", "@zag-js/toggle": "1.43.1", "@zag-js/toggle-group": "1.43.1", "@zag-js/tooltip": "1.43.1", diff --git a/packages/solid/src/components/anatomy.ts b/packages/solid/src/components/anatomy.ts index 1f6b353f0b..e63b745f99 100644 --- a/packages/solid/src/components/anatomy.ts +++ b/packages/solid/src/components/anatomy.ts @@ -45,6 +45,7 @@ export { tabsAnatomy } from './tabs/tabs.anatomy.ts' export { tagsInputAnatomy } from './tags-input/tags-input.anatomy.ts' export { timerAnatomy } from './timer/timer.anatomy.ts' export { toastAnatomy } from './toast/toast.anatomy.ts' +export { tocAnatomy } from './toc/toc.anatomy.ts' export { toggleAnatomy } from './toggle/toggle.anatomy.ts' export { toggleGroupAnatomy } from './toggle-group/toggle-group.anatomy.ts' export { tooltipAnatomy } from './tooltip/tooltip.anatomy.ts' diff --git a/packages/solid/src/components/index.tsx b/packages/solid/src/components/index.tsx index 36a180536a..bed8922cd3 100644 --- a/packages/solid/src/components/index.tsx +++ b/packages/solid/src/components/index.tsx @@ -53,6 +53,7 @@ export * from './tabs/index.tsx' export * from './tags-input/index.tsx' export * from './timer/index.tsx' export * from './toast/index.tsx' +export * from './toc/index.tsx' export * from './toggle-group/index.tsx' export * from './toggle/index.tsx' export * from './tooltip/index.tsx' diff --git a/packages/solid/src/components/toc/examples/basic.tsx b/packages/solid/src/components/toc/examples/basic.tsx new file mode 100644 index 0000000000..f877fb7166 --- /dev/null +++ b/packages/solid/src/components/toc/examples/basic.tsx @@ -0,0 +1,43 @@ +import { Toc } from '@ark-ui/solid/toc' +import styles from 'styles/toc.module.css' + +const items = [ + { value: '01-introduction', depth: 2, label: 'Introduction', lines: 12 }, + { value: '01-getting-started', depth: 2, label: 'Getting Started', lines: 10 }, + { value: '01-installation', depth: 2, label: 'Installation', lines: 8 }, + { value: '01-usage', depth: 2, label: 'Usage', lines: 14 }, + { value: '01-conclusion', depth: 2, label: 'Conclusion', lines: 10 }, +] + +export const Basic = () => { + let contentRef: HTMLElement | null = null + + return ( + contentRef}> + (contentRef = el)}> + {items.map((item) => ( +
+

{item.label}

+
+ {Array.from({ length: item.lines }).map(() => ( +
+ ))} +
+
+ ))} +
+ + On this page + + {items.map((item) => ( + + + {item.label} + + + ))} + + +
+ ) +} diff --git a/packages/solid/src/components/toc/examples/nested.tsx b/packages/solid/src/components/toc/examples/nested.tsx new file mode 100644 index 0000000000..34803db5e9 --- /dev/null +++ b/packages/solid/src/components/toc/examples/nested.tsx @@ -0,0 +1,50 @@ +import { Toc } from '@ark-ui/solid/toc' +import { Dynamic } from 'solid-js/web' +import styles from 'styles/toc.module.css' + +const items = [ + { value: '02-introduction', depth: 2, label: 'Introduction', lines: 10 }, + { value: '02-getting-started', depth: 2, label: 'Getting Started', lines: 12 }, + { value: '02-installation', depth: 3, label: 'Installation', lines: 8 }, + { value: '02-configuration', depth: 3, label: 'Configuration', lines: 14 }, + { value: '02-api-reference', depth: 2, label: 'API Reference', lines: 10 }, + { value: '02-hooks', depth: 3, label: 'Hooks', lines: 8 }, + { value: '02-components', depth: 3, label: 'Components', lines: 12 }, + { value: '02-examples', depth: 2, label: 'Examples', lines: 10 }, +] + +export const Nested = () => { + let contentRef: HTMLElement | null = null + + return ( + contentRef}> + (contentRef = el)}> + {items.map((item) => ( +
+ + {item.label} + +
+ {[...Array(item.lines)].map(() => ( +
+ ))} +
+
+ ))} +
+ + + On this page + + {items.map((item) => ( + 2 ? styles.ItemNested : styles.Item} item={item}> + + {item.label} + + + ))} + + +
+ ) +} diff --git a/packages/solid/src/components/toc/examples/root-provider.tsx b/packages/solid/src/components/toc/examples/root-provider.tsx new file mode 100644 index 0000000000..1c40b4a258 --- /dev/null +++ b/packages/solid/src/components/toc/examples/root-provider.tsx @@ -0,0 +1,48 @@ +import { Toc, useToc } from '@ark-ui/solid/toc' +import { Index } from 'solid-js' +import styles from 'styles/toc.module.css' + +const items = [ + { value: '03-introduction', depth: 2, label: 'Introduction', lines: 12 }, + { value: '03-getting-started', depth: 2, label: 'Getting Started', lines: 10 }, + { value: '03-installation', depth: 2, label: 'Installation', lines: 8 }, + { value: '03-usage', depth: 2, label: 'Usage', lines: 14 }, + { value: '03-conclusion', depth: 2, label: 'Conclusion', lines: 10 }, +] + +export const RootProvider = () => { + let contentRef: HTMLElement | null = null + const toc = useToc({ items, rootMargin: '0px 0px -80% 0px', scrollEl: () => contentRef }) + + return ( + + (contentRef = el)}> + + {(item) => ( +
+

{item().label}

+
+ {() =>
} +
+
+ )} +
+
+ + + On this page + + + {(item) => ( + + + {item().label} + + + )} + + + +
+ ) +} diff --git a/packages/solid/src/components/toc/examples/with-collapsible.tsx b/packages/solid/src/components/toc/examples/with-collapsible.tsx new file mode 100644 index 0000000000..d9169fdaec --- /dev/null +++ b/packages/solid/src/components/toc/examples/with-collapsible.tsx @@ -0,0 +1,118 @@ +import { Collapsible } from '@ark-ui/solid/collapsible' +import { Toc } from '@ark-ui/solid/toc' +import { ChevronRightIcon } from 'lucide-solid' +import CollapsibleStyles from 'styles/Collapsible.module.css' +import styles from 'styles/toc.module.css' + +const items = [ + { value: '04-introduction', depth: 2, label: 'Introduction', lines: 12 }, + { value: '04-getting-started', depth: 2, label: 'Getting Started', lines: 10 }, + { value: '04-installation', depth: 2, label: 'Installation', lines: 8 }, + { value: '04-usage', depth: 2, label: 'Usage', lines: 14 }, + { value: '04-conclusion', depth: 2, label: 'Conclusion', lines: 10 }, +] + +const RADIUS = 14 +const CIRCUMFERENCE = 2 * Math.PI * RADIUS + +export const WithCollapsible = () => { + let contentRef: HTMLElement | null = null + + return ( + contentRef} + > + (contentRef = el)}> + {items.map((item) => ( +
+

{item.label}

+
+ {Array.from({ length: item.lines }).map(() => ( +
+ ))} +
+
+ ))} +
+ + + + + {(toc) => { + const activeIndex = () => { + const activeItems = toc().activeItems + return activeItems[0] ? items.findIndex((i) => i.value === activeItems[0].value) : -1 + } + const activeLabel = () => (activeIndex() >= 0 ? items[activeIndex()].label : undefined) + const dashArray = () => + `${(activeIndex() >= 0 ? (activeIndex() + 1) / items.length : 0) * CIRCUMFERENCE} ${CIRCUMFERENCE}` + + return ( + + + + + + {activeLabel() ?? 'On this page'} + + + + + + ) + }} + + + + {items.map((item, index) => ( + + + {String(index + 1).padStart(2, '0')} + {item.label} + + + ))} + + + + +
+ ) +} diff --git a/packages/solid/src/components/toc/examples/with-hover.tsx b/packages/solid/src/components/toc/examples/with-hover.tsx new file mode 100644 index 0000000000..048bc548b7 --- /dev/null +++ b/packages/solid/src/components/toc/examples/with-hover.tsx @@ -0,0 +1,92 @@ +import { Toc } from '@ark-ui/solid/toc' +import { Swap } from '@ark-ui/solid/swap' +import { Pin, PinOff } from 'lucide-solid' +import { createSignal } from 'solid-js' +import styles from 'styles/toc.module.css' + +const items = [ + { value: '05-introduction', depth: 2, label: 'Introduction', lines: 12 }, + { value: '05-getting-started', depth: 2, label: 'Getting Started', lines: 10 }, + { value: '05-installation', depth: 2, label: 'Installation', lines: 8 }, + { value: '05-usage', depth: 2, label: 'Usage', lines: 14 }, + { value: '05-conclusion', depth: 2, label: 'Conclusion', lines: 10 }, +] + +export const WithHover = () => { + const [pinned, setPinned] = createSignal(false) + const [hovered, setHovered] = createSignal(false) + let contentRef: HTMLElement | null = null + + return ( + contentRef} + > + (contentRef = el)}> + {items.map((item) => ( +
+

{item.label}

+
+ {Array.from({ length: item.lines }).map(() => ( +
+ ))} +
+
+ ))} +
+ setHovered(true)} + onMouseLeave={() => setHovered(false)} + onClick={() => { + if (!hovered() && !pinned()) setPinned(true) + }} + > + + + + +
+ {items.map((item) => ( + + ))} +
+
+ +
+ + {items.map((item) => ( + + + {item.label} + + + ))} + +
+
+
+
+
+ ) +} diff --git a/packages/solid/src/components/toc/examples/with-indicator.tsx b/packages/solid/src/components/toc/examples/with-indicator.tsx new file mode 100644 index 0000000000..9adc579c0f --- /dev/null +++ b/packages/solid/src/components/toc/examples/with-indicator.tsx @@ -0,0 +1,45 @@ +import { Toc } from '@ark-ui/solid/toc' +import styles from 'styles/toc.module.css' + +const items = [ + { value: '06-introduction', depth: 2, label: 'Introduction', lines: 12 }, + { value: '06-getting-started', depth: 2, label: 'Getting Started', lines: 10 }, + { value: '06-installation', depth: 2, label: 'Installation', lines: 8 }, + { value: '06-usage', depth: 2, label: 'Usage', lines: 14 }, + { value: '06-conclusion', depth: 2, label: 'Conclusion', lines: 10 }, +] + +export const WithIndicator = () => { + let contentRef: HTMLElement | null = null + + return ( + contentRef}> + (contentRef = el)}> + {items.map((item) => ( +
+

{item.label}

+
+ {Array.from({ length: item.lines }).map(() => ( +
+ ))} +
+
+ ))} +
+ + + On this page + + + {items.map((item) => ( + + + {item.label} + + + ))} + + +
+ ) +} diff --git a/packages/solid/src/components/toc/examples/with-rail.tsx b/packages/solid/src/components/toc/examples/with-rail.tsx new file mode 100644 index 0000000000..cd838909f9 --- /dev/null +++ b/packages/solid/src/components/toc/examples/with-rail.tsx @@ -0,0 +1,96 @@ +import { Toc } from '@ark-ui/solid/toc' +import { Show } from 'solid-js' +import styles from 'styles/toc.module.css' + +const items = [ + { value: '07-overview', depth: 2, label: 'Overview', lines: 10 }, + { value: '07-installation', depth: 2, label: 'Installation', lines: 8 }, + { value: '07-package-manager', depth: 3, label: 'Package Manager', lines: 12 }, + { value: '07-peer-dependencies', depth: 3, label: 'Peer Dependencies', lines: 6 }, + { value: '07-usage', depth: 2, label: 'Usage', lines: 14 }, + { value: '07-server-components', depth: 3, label: 'Server Components', lines: 9 }, + { value: '07-styling', depth: 3, label: 'Styling', lines: 11 }, + { value: '07-theming', depth: 4, label: 'Theming', lines: 7 }, + { value: '07-api-reference', depth: 2, label: 'API Reference', lines: 12 }, +] + +// h2 sits at level 0; deeper headings step in, clamped so h5+ share h4's indent +const BASE = 8 +const RAIL_STEP = 8 +const TEXT_STEP = 12 +const MAX_LEVEL = 2 + +// the rail overlaps the row above by BRIDGE px so the turn can straddle the boundary +const BRIDGE = 6 + +const levelOf = (depth: number) => Math.min(Math.max(depth - 2, 0), MAX_LEVEL) +const lineOffset = (depth: number) => BASE + levelOf(depth) * RAIL_STEP +const textOffset = (depth: number) => BASE + (levelOf(depth) + 1) * TEXT_STEP + +const Rail = (props: { depth: number; prevDepth?: number; nextDepth?: number }) => { + const line = () => lineOffset(props.depth) + const prevLine = () => lineOffset(props.prevDepth ?? props.depth) + const nextLine = () => lineOffset(props.nextDepth ?? props.depth) + const turns = () => prevLine() !== line() + + return ( + + ) +} + +export const WithRail = () => { + let contentRef: HTMLElement | null = null + + return ( + contentRef}> + (contentRef = el)}> + {items.map((item) => ( +
+

+ {item.label} +

+
+ {[...Array(item.lines)].map(() => ( +
+ ))} +
+
+ ))} +
+ + + On this page + + {items.map((item, index) => ( + + + + {item.label} + + + ))} + + +
+ ) +} diff --git a/packages/solid/src/components/toc/examples/with-tree-view.tsx b/packages/solid/src/components/toc/examples/with-tree-view.tsx new file mode 100644 index 0000000000..d41e5d97ed --- /dev/null +++ b/packages/solid/src/components/toc/examples/with-tree-view.tsx @@ -0,0 +1,156 @@ +import { Toc, useTocContext } from '@ark-ui/solid/toc' +import { TreeView, createTreeCollection } from '@ark-ui/solid/tree-view' +import { ChevronRightIcon } from 'lucide-solid' +import { createSignal } from 'solid-js' +import tocStyles from 'styles/toc.module.css' +import treeStyles from 'styles/tree-view.module.css' + +type TocNode = { + id: string + name: string + depth: number + lines?: number + children?: TocNode[] +} + +const sections: TocNode[] = [ + { + id: '09-guides', + name: 'Guides', + depth: 2, + lines: 10, + children: [ + { id: '09-quick-start', name: 'Quick Start', depth: 3, lines: 6 }, + { id: '09-manual-setup', name: 'Manual Setup', depth: 3, lines: 5 }, + ], + }, + { + id: '09-core-concepts', + name: 'Core Concepts', + depth: 2, + lines: 9, + children: [ + { id: '09-toc-props', name: 'Props', depth: 3, lines: 7 }, + { id: '09-toc-events', name: 'Events', depth: 3, lines: 6 }, + { id: '09-toc-context', name: 'Context', depth: 3, lines: 8 }, + ], + }, + { + id: '09-advanced', + name: 'Advanced', + depth: 2, + lines: 11, + children: [ + { id: '09-root-api', name: 'Root Provider', depth: 3, lines: 7 }, + { id: '09-custom-rendering', name: 'Custom Rendering', depth: 3, lines: 6 }, + ], + }, +] + +const collection = createTreeCollection({ + nodeToValue: (node) => node.id, + nodeToString: (node) => node.name, + rootNode: { id: 'ROOT', name: '', depth: 0, children: sections }, +}) + +const allItems = sections.flatMap((section) => [ + { value: section.id, depth: section.depth }, + ...(section.children ?? []).map((child) => ({ value: child.id, depth: child.depth })), +]) + +const TocTreeNode = ({ node, indexPath }: TreeView.NodeProviderProps) => { + const toc = useTocContext() + return ( + + {node.children ? ( + + + + + + + + {node.name} + + + + + + {node.children.map((child, index) => ( + + ))} + + + ) : ( + + + + {node.name} + + + + )} + + ) +} + +export const WithTreeView = () => { + const [expandedValue, setExpandedValue] = createSignal([]) + let contentRef: HTMLElement | null = null + + return ( + contentRef} + onActiveChange={({ activeItems }) => { + const activeIds = new Set(activeItems.map((i) => i.value)) + const next = sections + .filter( + (section) => activeIds.has(section.id) || (section.children ?? []).some((child) => activeIds.has(child.id)), + ) + .map((s) => s.id) + setExpandedValue(next) + }} + > + (contentRef = el)}> + {sections.map((section) => ( +
+

{section.name}

+
+ {Array.from({ length: section.lines ?? 5 }).map(() => ( +
+ ))} +
+ {section.children?.map((child) => ( +
+

{child.name}

+
+ {Array.from({ length: child.lines ?? 3 }).map(() => ( +
+ ))} +
+
+ ))} +
+ ))} +
+ + + On this page + setExpandedValue(next)} + > + + {sections.map((node, index) => ( + + ))} + + + +
+ ) +} diff --git a/packages/solid/src/components/toc/index.tsx b/packages/solid/src/components/toc/index.tsx new file mode 100644 index 0000000000..db28e57314 --- /dev/null +++ b/packages/solid/src/components/toc/index.tsx @@ -0,0 +1,16 @@ +export type { ActiveChangeDetails as TocActiveChangeDetails, TocItem as TocItemData } from '@zag-js/toc' +export { TocContent, type TocContentBaseProps, type TocContentProps } from './toc-content.tsx' +export { TocContext, type TocContextProps } from './toc-context.tsx' +export { TocIndicator, type TocIndicatorBaseProps, type TocIndicatorProps } from './toc-indicator.tsx' +export { TocItem, type TocItemBaseProps, type TocItemProps } from './toc-item.tsx' +export { TocLink, type TocLinkBaseProps, type TocLinkProps } from './toc-link.tsx' +export { TocList, type TocListBaseProps, type TocListProps } from './toc-list.tsx' +export { TocNav, type TocNavBaseProps, type TocNavProps } from './toc-nav.tsx' +export { TocRoot, type TocRootBaseProps, type TocRootProps } from './toc-root.tsx' +export { TocRootProvider, type TocRootProviderBaseProps, type TocRootProviderProps } from './toc-root-provider.tsx' +export { TocTitle, type TocTitleBaseProps, type TocTitleProps } from './toc-title.tsx' +export { tocAnatomy } from './toc.anatomy.ts' +export { useToc, type UseTocProps, type UseTocReturn } from './use-toc.ts' +export { useTocContext, type UseTocContext } from './use-toc-context.ts' + +export * as Toc from './toc.ts' diff --git a/packages/solid/src/components/toc/tests/basic.tsx b/packages/solid/src/components/toc/tests/basic.tsx new file mode 100644 index 0000000000..af4352c3c9 --- /dev/null +++ b/packages/solid/src/components/toc/tests/basic.tsx @@ -0,0 +1,43 @@ +import { Toc } from '@ark-ui/solid/toc' +import styles from 'styles/toc.module.css' + +const items = [ + { value: 'introduction', depth: 2, label: 'Introduction', lines: 12 }, + { value: 'getting-started', depth: 2, label: 'Getting Started', lines: 10 }, + { value: 'installation', depth: 2, label: 'Installation', lines: 8 }, + { value: 'usage', depth: 2, label: 'Usage', lines: 14 }, + { value: 'conclusion', depth: 2, label: 'Conclusion', lines: 10 }, +] + +export const ComponentUnderTest = () => { + let contentRef: HTMLElement | null = null + + return ( + contentRef}> + (contentRef = el)}> + {items.map((item) => ( +
+

{item.label}

+
+ {Array.from({ length: item.lines }).map(() => ( +
+ ))} +
+
+ ))} +
+ + On this page + + {items.map((item) => ( + + + {item.label} + + + ))} + + +
+ ) +} diff --git a/packages/solid/src/components/toc/tests/toc.test.tsx b/packages/solid/src/components/toc/tests/toc.test.tsx new file mode 100644 index 0000000000..0ec4583a14 --- /dev/null +++ b/packages/solid/src/components/toc/tests/toc.test.tsx @@ -0,0 +1,48 @@ +import { render, screen } from '@solidjs/testing-library' +import { describe, it, expect } from 'vitest' +import { ComponentUnderTest } from './basic' + +describe('Toc', () => { + it('should render correct semantic landmarks', () => { + render(() => ) + expect(screen.getByRole('navigation')).toBeInTheDocument() + expect(screen.getByRole('article')).toBeInTheDocument() + expect(screen.getByText(/on this page/i)).toBeInTheDocument() + }) + + it('should render the correct number of items', () => { + render(() => ) + const items = screen.getAllByRole('listitem') + expect(items.length).toBe(5) + }) + + it('should have correct hrefs for links', () => { + render(() => ) + const links = screen.getAllByRole('link') + expect(links[0]).toHaveAttribute('href', '#introduction') + expect(links[1]).toHaveAttribute('href', '#getting-started') + expect(links[2]).toHaveAttribute('href', '#installation') + expect(links[3]).toHaveAttribute('href', '#usage') + expect(links[4]).toHaveAttribute('href', '#conclusion') + }) + + it('should have correct text content for links', () => { + render(() => ) + const links = screen.getAllByRole('link') + expect(links[0]).toHaveTextContent('Introduction') + expect(links[1]).toHaveTextContent('Getting Started') + expect(links[2]).toHaveTextContent('Installation') + expect(links[3]).toHaveTextContent('Usage') + expect(links[4]).toHaveTextContent('Conclusion') + }) + + it('should have correct heading structure', () => { + render(() => ) + const headings = screen.getAllByRole('heading') + expect(headings[0]).toHaveTextContent('Introduction') + expect(headings[1]).toHaveTextContent('Getting Started') + expect(headings[2]).toHaveTextContent('Installation') + expect(headings[3]).toHaveTextContent('Usage') + expect(headings[4]).toHaveTextContent('Conclusion') + }) +}) diff --git a/packages/solid/src/components/toc/toc-content.tsx b/packages/solid/src/components/toc/toc-content.tsx new file mode 100644 index 0000000000..c5ea251590 --- /dev/null +++ b/packages/solid/src/components/toc/toc-content.tsx @@ -0,0 +1,8 @@ +import { type HTMLProps, type PolymorphicProps, ark } from '../factory' + +export interface TocContentBaseProps extends PolymorphicProps<'article'> {} +export interface TocContentProps extends HTMLProps<'article'>, TocContentBaseProps {} + +export const TocContent = (props: TocContentProps) => { + return +} diff --git a/packages/solid/src/components/toc/toc-context.tsx b/packages/solid/src/components/toc/toc-context.tsx new file mode 100644 index 0000000000..3f99e01247 --- /dev/null +++ b/packages/solid/src/components/toc/toc-context.tsx @@ -0,0 +1,8 @@ +import type { JSX } from 'solid-js' +import { type UseTocContext, useTocContext } from './use-toc-context' + +export interface TocContextProps { + children: (context: UseTocContext) => JSX.Element +} + +export const TocContext = (props: TocContextProps) => props.children(useTocContext()) diff --git a/packages/solid/src/components/toc/toc-indicator.tsx b/packages/solid/src/components/toc/toc-indicator.tsx new file mode 100644 index 0000000000..d8f95812be --- /dev/null +++ b/packages/solid/src/components/toc/toc-indicator.tsx @@ -0,0 +1,12 @@ +import { mergeProps } from '@zag-js/solid' +import { type HTMLProps, type PolymorphicProps, ark } from '../factory' +import { useTocContext } from './use-toc-context' + +export interface TocIndicatorBaseProps extends PolymorphicProps<'div'> {} +export interface TocIndicatorProps extends HTMLProps<'div'>, TocIndicatorBaseProps {} + +export const TocIndicator = (props: TocIndicatorProps) => { + const toc = useTocContext() + const mergedProps = mergeProps(() => toc().getIndicatorProps(), props) + return +} diff --git a/packages/solid/src/components/toc/toc-item.tsx b/packages/solid/src/components/toc/toc-item.tsx new file mode 100644 index 0000000000..a393a23bc8 --- /dev/null +++ b/packages/solid/src/components/toc/toc-item.tsx @@ -0,0 +1,22 @@ +import { mergeProps } from '@zag-js/solid' +import type { ItemProps } from '@zag-js/toc' +import { createSplitProps } from '../../utils/create-split-props' +import { type HTMLProps, type PolymorphicProps, ark } from '../factory' +import { useTocContext } from './use-toc-context' +import { TocItemPropsProvider } from './use-toc-item-props-context' + +export interface TocItemBaseProps extends ItemProps, PolymorphicProps<'li'> {} +export interface TocItemProps extends HTMLProps<'li'>, TocItemBaseProps {} + +const splitItemProps = createSplitProps() + +export const TocItem = (props: TocItemProps) => { + const [itemProps, localProps] = splitItemProps(props, ['item']) + const toc = useTocContext() + const mergedProps = mergeProps(() => toc().getItemProps(itemProps), localProps) + return ( + + + + ) +} diff --git a/packages/solid/src/components/toc/toc-link.tsx b/packages/solid/src/components/toc/toc-link.tsx new file mode 100644 index 0000000000..a1f1b239b6 --- /dev/null +++ b/packages/solid/src/components/toc/toc-link.tsx @@ -0,0 +1,15 @@ +import { mergeProps } from '@zag-js/solid' +import { type HTMLProps, type PolymorphicProps, ark } from '../factory' +import { useTocContext } from './use-toc-context' +import { useTocItemPropsContext } from './use-toc-item-props-context' +import type { Assign } from '../../types' + +export interface TocLinkBaseProps extends PolymorphicProps<'a'> {} +export interface TocLinkProps extends Assign, TocLinkBaseProps> {} + +export const TocLink = (props: TocLinkProps) => { + const toc = useTocContext() + const itemProps = useTocItemPropsContext() + const mergedProps = mergeProps(() => toc().getLinkProps(itemProps), props) + return +} diff --git a/packages/solid/src/components/toc/toc-list.tsx b/packages/solid/src/components/toc/toc-list.tsx new file mode 100644 index 0000000000..735f405b4e --- /dev/null +++ b/packages/solid/src/components/toc/toc-list.tsx @@ -0,0 +1,13 @@ +import { mergeProps } from '@zag-js/solid' +import { type HTMLProps, type PolymorphicProps, ark } from '../factory' +import { useTocContext } from './use-toc-context' + +export interface TocListBaseProps extends PolymorphicProps<'ul'> {} +export interface TocListProps extends HTMLProps<'ul'>, TocListBaseProps {} + +export const TocList = (props: TocListProps) => { + const toc = useTocContext() + const mergedProps = mergeProps(() => toc().getListProps(), props) + + return +} diff --git a/packages/solid/src/components/toc/toc-nav.tsx b/packages/solid/src/components/toc/toc-nav.tsx new file mode 100644 index 0000000000..98c56a166f --- /dev/null +++ b/packages/solid/src/components/toc/toc-nav.tsx @@ -0,0 +1,15 @@ +import { mergeProps } from '@zag-js/solid' +import { type HTMLProps, type PolymorphicProps, ark } from '../factory' +import { useTocContext } from './use-toc-context' + +export interface TocNavBaseProps extends PolymorphicProps<'nav'> { + placement?: 'left' | 'right' +} +export interface TocNavProps extends HTMLProps<'nav'>, TocNavBaseProps {} + +export const TocNav = (props: TocNavProps) => { + const { placement, ...rest } = props + const toc = useTocContext() + const mergedProps = mergeProps(() => toc().getRootProps(), rest) + return +} diff --git a/packages/solid/src/components/toc/toc-root-provider.tsx b/packages/solid/src/components/toc/toc-root-provider.tsx new file mode 100644 index 0000000000..2d8917838f --- /dev/null +++ b/packages/solid/src/components/toc/toc-root-provider.tsx @@ -0,0 +1,23 @@ +import { mergeProps } from '@zag-js/solid' +import { createSplitProps } from '../../utils/create-split-props' +import { type HTMLProps, type PolymorphicProps, ark } from '../factory' +import type { UseTocReturn } from './use-toc' +import { TocProvider } from './use-toc-context' + +interface RootProviderProps { + value: UseTocReturn +} + +export interface TocRootProviderBaseProps extends RootProviderProps, PolymorphicProps<'div'> {} +export interface TocRootProviderProps extends HTMLProps<'div'>, TocRootProviderBaseProps {} + +export const TocRootProvider = (props: TocRootProviderProps) => { + const [{ value: toc }, localProps] = createSplitProps()(props, ['value']) + const mergedProps = mergeProps(() => toc().getRootProps(), localProps) + + return ( + + + + ) +} diff --git a/packages/solid/src/components/toc/toc-root.tsx b/packages/solid/src/components/toc/toc-root.tsx new file mode 100644 index 0000000000..5f9a1b427a --- /dev/null +++ b/packages/solid/src/components/toc/toc-root.tsx @@ -0,0 +1,35 @@ +import { mergeProps } from '@zag-js/solid' +import type { Assign } from '../../types' +import { createSplitProps } from '../../utils/create-split-props' +import { type HTMLProps, type PolymorphicProps, ark } from '../factory' +import { type UseTocProps, useToc } from './use-toc' +import { TocProvider } from './use-toc-context' + +export interface TocRootBaseProps extends UseTocProps, PolymorphicProps<'div'> {} +export interface TocRootProps extends Assign, TocRootBaseProps> {} + +const splitRootProps = createSplitProps() + +export const TocRoot = (props: TocRootProps) => { + const [useTocProps, localProps] = splitRootProps(props, [ + 'activeIds', + 'autoScroll', + 'defaultActiveIds', + 'scrollEl', + 'id', + 'ids', + 'items', + 'onActiveChange', + 'rootMargin', + 'scrollBehavior', + 'threshold', + ]) + const toc = useToc(useTocProps) + const mergedProps = mergeProps(() => toc().getRootProps(), localProps) + + return ( + + + + ) +} diff --git a/packages/solid/src/components/toc/toc-title.tsx b/packages/solid/src/components/toc/toc-title.tsx new file mode 100644 index 0000000000..958f8e032c --- /dev/null +++ b/packages/solid/src/components/toc/toc-title.tsx @@ -0,0 +1,12 @@ +import { mergeProps } from '@zag-js/solid' +import { type HTMLProps, type PolymorphicProps, ark } from '../factory' +import { useTocContext } from './use-toc-context' + +export interface TocTitleBaseProps extends PolymorphicProps<'h2'> {} +export interface TocTitleProps extends HTMLProps<'h2'>, TocTitleBaseProps {} + +export const TocTitle = (props: TocTitleProps) => { + const toc = useTocContext() + const mergedProps = mergeProps(() => toc().getTitleProps(), props) + return +} diff --git a/packages/solid/src/components/toc/toc.anatomy.ts b/packages/solid/src/components/toc/toc.anatomy.ts new file mode 100644 index 0000000000..560bfdc21b --- /dev/null +++ b/packages/solid/src/components/toc/toc.anatomy.ts @@ -0,0 +1 @@ +export { anatomy as tocAnatomy } from '@zag-js/toc' diff --git a/packages/solid/src/components/toc/toc.stories.tsx b/packages/solid/src/components/toc/toc.stories.tsx new file mode 100644 index 0000000000..dd03d88444 --- /dev/null +++ b/packages/solid/src/components/toc/toc.stories.tsx @@ -0,0 +1,16 @@ +import type { Meta } from 'storybook-solidjs-vite' + +const meta: Meta = { + title: 'Components / Toc', +} + +export default meta + +export { Basic } from './examples/basic' +export { Nested } from './examples/nested' +export { RootProvider } from './examples/root-provider' +export { WithCollapsible } from './examples/with-collapsible' +export { WithHover } from './examples/with-hover' +export { WithIndicator } from './examples/with-indicator' +export { WithRail } from './examples/with-rail' +export { WithTreeView } from './examples/with-tree-view' diff --git a/packages/solid/src/components/toc/toc.ts b/packages/solid/src/components/toc/toc.ts new file mode 100644 index 0000000000..c5813b27fc --- /dev/null +++ b/packages/solid/src/components/toc/toc.ts @@ -0,0 +1,27 @@ +export type { ActiveChangeDetails as TocActiveChangeDetails, TocItem as TocItemData } from '@zag-js/toc' +export { + TocContent as Content, + type TocContentBaseProps as ContentBaseProps, + type TocContentProps as ContentProps, +} from './toc-content' +export { TocContext as Context, type TocContextProps as ContextProps } from './toc-context' +export { + TocIndicator as Indicator, + type TocIndicatorBaseProps as IndicatorBaseProps, + type TocIndicatorProps as IndicatorProps, +} from './toc-indicator' +export { TocItem as Item, type TocItemBaseProps as ItemBaseProps, type TocItemProps as ItemProps } from './toc-item' +export { TocLink as Link, type TocLinkBaseProps as LinkBaseProps, type TocLinkProps as LinkProps } from './toc-link' +export { TocList as List, type TocListBaseProps as ListBaseProps, type TocListProps as ListProps } from './toc-list' +export { TocNav as Nav, type TocNavBaseProps as NavBaseProps, type TocNavProps as NavProps } from './toc-nav' +export { TocRoot as Root, type TocRootBaseProps as RootBaseProps, type TocRootProps as RootProps } from './toc-root' +export { + TocRootProvider as RootProvider, + type TocRootProviderBaseProps as RootProviderBaseProps, + type TocRootProviderProps as RootProviderProps, +} from './toc-root-provider' +export { + TocTitle as Title, + type TocTitleBaseProps as TitleBaseProps, + type TocTitleProps as TitleProps, +} from './toc-title' diff --git a/packages/solid/src/components/toc/use-toc-context.ts b/packages/solid/src/components/toc/use-toc-context.ts new file mode 100644 index 0000000000..e8228bea43 --- /dev/null +++ b/packages/solid/src/components/toc/use-toc-context.ts @@ -0,0 +1,9 @@ +import { createContext } from '../../utils/create-context' +import type { UseTocReturn } from './use-toc' + +export interface UseTocContext extends UseTocReturn {} + +export const [TocProvider, useTocContext] = createContext({ + hookName: 'useTocContext', + providerName: '', +}) diff --git a/packages/solid/src/components/toc/use-toc-item-props-context.ts b/packages/solid/src/components/toc/use-toc-item-props-context.ts new file mode 100644 index 0000000000..fdca2143e6 --- /dev/null +++ b/packages/solid/src/components/toc/use-toc-item-props-context.ts @@ -0,0 +1,9 @@ +import type { ItemProps } from '@zag-js/toc' +import { createContext } from '../../utils/create-context' + +export interface UseTocItemPropsContext extends ItemProps {} + +export const [TocItemPropsProvider, useTocItemPropsContext] = createContext({ + hookName: 'useTocItemPropsContext', + providerName: '', +}) diff --git a/packages/solid/src/components/toc/use-toc.ts b/packages/solid/src/components/toc/use-toc.ts new file mode 100644 index 0000000000..5e0b39c9a4 --- /dev/null +++ b/packages/solid/src/components/toc/use-toc.ts @@ -0,0 +1,28 @@ +import { type PropTypes, normalizeProps, useMachine } from '@zag-js/solid' +import * as toc from '@zag-js/toc' +import { type Accessor, createMemo, createUniqueId } from 'solid-js' +import { useEnvironmentContext, useLocaleContext } from '../../providers' +import type { Optional } from '../../types' + +export interface UseTocProps extends Optional, 'id'> {} +export interface UseTocReturn extends Accessor> {} + +export const useToc = (props?: UseTocProps): UseTocReturn => { + const id = createUniqueId() + const locale = useLocaleContext() + const environment = useEnvironmentContext() + + const machineProps = createMemo( + () => + ({ + id: props?.id ?? id, + dir: locale().dir, + getRootNode: environment().getRootNode, + items: props?.items ?? [], + ...props, + }) as toc.Props, + ) + + const service = useMachine(toc.machine as any, machineProps) + return createMemo(() => toc.connect(service as any, normalizeProps)) +} diff --git a/packages/solid/src/setup-test.ts b/packages/solid/src/setup-test.ts index 804f2ee7b7..01fcb4fbe3 100644 --- a/packages/solid/src/setup-test.ts +++ b/packages/solid/src/setup-test.ts @@ -49,11 +49,11 @@ Element.prototype.scrollTo = () => { // no-op } -const IntersectionObserverMock = vi.fn(() => ({ - disconnect: vi.fn(), - observe: vi.fn(), - takeRecords: vi.fn(), - unobserve: vi.fn(), -})) +class IntersectionObserverMock { + observe = vi.fn() + disconnect = vi.fn() + unobserve = vi.fn() + takeRecords = vi.fn() +} vi.stubGlobal('IntersectionObserver', IntersectionObserverMock) diff --git a/packages/svelte/package.json b/packages/svelte/package.json index 7226ff9606..3ce1c323bf 100644 --- a/packages/svelte/package.json +++ b/packages/svelte/package.json @@ -41,6 +41,7 @@ "tags input", "timer", "toast", + "toc", "toggle group", "tooltip", "tree view", @@ -201,6 +202,7 @@ "@zag-js/tags-input": "1.43.1", "@zag-js/timer": "1.43.1", "@zag-js/toast": "1.43.1", + "@zag-js/toc": "1.43.1", "@zag-js/toggle": "1.43.1", "@zag-js/toggle-group": "1.43.1", "@zag-js/tooltip": "1.43.1", diff --git a/packages/svelte/src/lib/components/anatomy.ts b/packages/svelte/src/lib/components/anatomy.ts index 053e3b3c73..ccba291d52 100644 --- a/packages/svelte/src/lib/components/anatomy.ts +++ b/packages/svelte/src/lib/components/anatomy.ts @@ -45,6 +45,7 @@ export { tabsAnatomy } from './tabs/tabs.anatomy.ts' export { tagsInputAnatomy } from './tags-input/tags-input.anatomy.ts' export { timerAnatomy } from './timer/timer.anatomy.ts' export { toastAnatomy } from './toast/toast.anatomy.ts' +export { tocAnatomy } from './toc/toc.anatomy.ts' export { toggleAnatomy } from './toggle/toggle.anatomy.ts' export { toggleGroupAnatomy } from './toggle-group/toggle-group.anatomy.ts' export { tooltipAnatomy } from './tooltip/tooltip.anatomy.ts' diff --git a/packages/svelte/src/lib/components/index.ts b/packages/svelte/src/lib/components/index.ts index 1cbe146165..701d8e0135 100644 --- a/packages/svelte/src/lib/components/index.ts +++ b/packages/svelte/src/lib/components/index.ts @@ -54,6 +54,7 @@ export * from './tabs/index.ts' export * from './tags-input/index.ts' export * from './timer/index.ts' export * from './toast/index.ts' +export * from './toc/index.ts' export * from './toggle/index.ts' export * from './toggle-group/index.ts' export * from './tooltip/index.ts' diff --git a/packages/svelte/src/lib/components/toc/examples/basic.svelte b/packages/svelte/src/lib/components/toc/examples/basic.svelte new file mode 100644 index 0000000000..a5dc3871a7 --- /dev/null +++ b/packages/svelte/src/lib/components/toc/examples/basic.svelte @@ -0,0 +1,41 @@ + + + contentEl}> + + {#each items as item (item.value)} +
+

{item.label}

+
+ {#each { length: item.lines } as _, i} +
+ {/each} +
+
+ {/each} +
+ + On this page + + {#each items as item (item.value)} + + + {item.label} + + + {/each} + + +
diff --git a/packages/svelte/src/lib/components/toc/examples/nested.svelte b/packages/svelte/src/lib/components/toc/examples/nested.svelte new file mode 100644 index 0000000000..48b5d6230c --- /dev/null +++ b/packages/svelte/src/lib/components/toc/examples/nested.svelte @@ -0,0 +1,46 @@ + + + contentEl}> + + {#each items as item (item.value)} +
+ + {item.label} + +
+ {#each { length: item.lines } as _} +
+ {/each} +
+
+ {/each} +
+ + On this page + + {#each items as item (item.value)} + 2 ? styles.ItemNested : styles.Item} {item}> + {item.label} + + {/each} + + +
diff --git a/packages/svelte/src/lib/components/toc/examples/root-provider.svelte b/packages/svelte/src/lib/components/toc/examples/root-provider.svelte new file mode 100644 index 0000000000..90c14af105 --- /dev/null +++ b/packages/svelte/src/lib/components/toc/examples/root-provider.svelte @@ -0,0 +1,40 @@ + + + + + {#each items as item (item.value)} +
+

{item.label}

+
+ {#each { length: item.lines } as _} +
+ {/each} +
+
+ {/each} +
+ + On this page + + {#each items as item (item.value)} + + {item.label} + + {/each} + + +
diff --git a/packages/svelte/src/lib/components/toc/examples/with-collapsible.svelte b/packages/svelte/src/lib/components/toc/examples/with-collapsible.svelte new file mode 100644 index 0000000000..78cf18f068 --- /dev/null +++ b/packages/svelte/src/lib/components/toc/examples/with-collapsible.svelte @@ -0,0 +1,112 @@ + + + contentEl} +> + + {#each items as item (item.value)} +
+

{item.label}

+
+ {#each { length: item.lines } as _} +
+ {/each} +
+
+ {/each} +
+ + + + {#snippet render(toc)} + {@const activeIndex = toc().activeItems[0] + ? items.findIndex((i) => i.value === toc().activeItems[0].value) + : -1} + {@const progress = activeIndex >= 0 ? (activeIndex + 1) / items.length : 0} + {@const dashArray = `${progress * CIRCUMFERENCE} ${CIRCUMFERENCE}`} + + + + + + + {activeIndex >= 0 ? items[activeIndex].label : 'On this page'} + + + + + + + {/snippet} + + + + {#each items as item, index (item.value)} + + + {String(index + 1).padStart(2, '0')} + {item.label} + + + {/each} + + + + +
diff --git a/packages/svelte/src/lib/components/toc/examples/with-hover.svelte b/packages/svelte/src/lib/components/toc/examples/with-hover.svelte new file mode 100644 index 0000000000..dd7af00cbe --- /dev/null +++ b/packages/svelte/src/lib/components/toc/examples/with-hover.svelte @@ -0,0 +1,82 @@ + + + contentEl}> + + {#each items as item (item.value)} +
+

{item.label}

+
+ {#each { length: item.lines } as _} +
+ {/each} +
+
+ {/each} +
+ (hovered = true)} + onmouseleave={() => (hovered = false)} + onclick={() => { + if (!hovered && !pinned) pinned = true + }} + > + + + + +
+ {#each items as item (item.value)} + + {/each} +
+
+ +
+ + {#each items as item (item.value)} + + {item.label} + + {/each} + +
+
+
+
+
diff --git a/packages/svelte/src/lib/components/toc/examples/with-indicator.svelte b/packages/svelte/src/lib/components/toc/examples/with-indicator.svelte new file mode 100644 index 0000000000..d3ccb16c9d --- /dev/null +++ b/packages/svelte/src/lib/components/toc/examples/with-indicator.svelte @@ -0,0 +1,40 @@ + + + contentEl}> + + {#each items as item (item.value)} +
+

{item.label}

+
+ {#each { length: item.lines } as _, i} +
+ {/each} +
+
+ {/each} +
+ + On this page + + + {#each items as item (item.value)} + + {item.label} + + {/each} + + +
diff --git a/packages/svelte/src/lib/components/toc/examples/with-rail.svelte b/packages/svelte/src/lib/components/toc/examples/with-rail.svelte new file mode 100644 index 0000000000..b777faedba --- /dev/null +++ b/packages/svelte/src/lib/components/toc/examples/with-rail.svelte @@ -0,0 +1,82 @@ + + + contentEl}> + + {#each items as item (item.value)} +
+

{item.label}

+
+ {#each { length: item.lines } as _} +
+ {/each} +
+
+ {/each} +
+ + On this page + + {#each items as item, index (item.value)} + + + + {item.label} + + + {/each} + + +
diff --git a/packages/svelte/src/lib/components/toc/examples/with-tree-view.svelte b/packages/svelte/src/lib/components/toc/examples/with-tree-view.svelte new file mode 100644 index 0000000000..ff7c09fce3 --- /dev/null +++ b/packages/svelte/src/lib/components/toc/examples/with-tree-view.svelte @@ -0,0 +1,157 @@ + + + contentEl} + onActiveChange={({ activeItems }) => { + const activeIds = new Set(activeItems.map((i) => i.value)) + expandedValue = sections + .filter( + (section) => activeIds.has(section.id) || (section.children ?? []).some((child) => activeIds.has(child.id)), + ) + .map((s) => s.id) + }} +> + + {#each sections as section (section.id)} +
+

{section.name}

+
+ {#each { length: section.lines ?? 5 } as _} +
+ {/each} +
+ {#each section.children ?? [] as child (child.id)} +
+

{child.name}

+
+ {#each { length: child.lines ?? 3 } as _} +
+ {/each} +
+
+ {/each} +
+ {/each} +
+ + + On this page + (expandedValue = next)} + > + + {#each sections as node, index (node.id)} + {@render renderNode(node, [index])} + {/each} + + + +
+ +{#snippet renderNode(node: TocNode, indexPath: number[])} + + {#if node.children} + + + + + + + + {#snippet render(toc)} + + {node.name} + + {/snippet} + + + + + + {#each node.children as child, i (child.id)} + {@render renderNode(child, [...indexPath, i])} + {/each} + + + {:else} + + + + {#snippet render(toc)} + + {node.name} + + {/snippet} + + + + {/if} + +{/snippet} diff --git a/packages/svelte/src/lib/components/toc/index.ts b/packages/svelte/src/lib/components/toc/index.ts new file mode 100644 index 0000000000..e88fd42a3d --- /dev/null +++ b/packages/svelte/src/lib/components/toc/index.ts @@ -0,0 +1,19 @@ +export type { ActiveChangeDetails as TocActiveChangeDetails, TocItem as TocItemData } from '@zag-js/toc' +export { default as TocContent, type TocContentBaseProps, type TocContentProps } from './toc-content.svelte' +export { default as TocContext, type TocContextProps } from './toc-context.svelte' +export { default as TocIndicator, type TocIndicatorBaseProps, type TocIndicatorProps } from './toc-indicator.svelte' +export { default as TocItem, type TocItemBaseProps, type TocItemProps } from './toc-item.svelte' +export { default as TocLink, type TocLinkBaseProps, type TocLinkProps } from './toc-link.svelte' +export { default as TocList, type TocListBaseProps, type TocListProps } from './toc-list.svelte' +export { default as TocNav, type TocNavBaseProps, type TocNavProps } from './toc-nav.svelte' +export { default as TocRoot, type TocRootBaseProps, type TocRootProps } from './toc-root.svelte' +export { + default as TocRootProvider, + type TocRootProviderBaseProps, + type TocRootProviderProps, +} from './toc-root-provider.svelte' +export { default as TocTitle, type TocTitleBaseProps, type TocTitleProps } from './toc-title.svelte' +export { tocAnatomy } from './toc.anatomy.ts' +export { useToc, type UseTocProps, type UseTocReturn } from './use-toc.svelte.ts' +export { useTocContext, type UseTocContext } from './use-toc-context.ts' +export * as Toc from './toc.ts' diff --git a/packages/svelte/src/lib/components/toc/tests/basic.svelte b/packages/svelte/src/lib/components/toc/tests/basic.svelte new file mode 100644 index 0000000000..51a5e65418 --- /dev/null +++ b/packages/svelte/src/lib/components/toc/tests/basic.svelte @@ -0,0 +1,40 @@ + + + + +

Introduction

+

Getting Started

+

Installation

+

Usage

+

API Reference

+
+ + On this page + + + {#each items as item (item.value)} + + {item.value.replace(/-/g, ' ')} + + {/each} + + +
diff --git a/packages/svelte/src/lib/components/toc/toc-content.svelte b/packages/svelte/src/lib/components/toc/toc-content.svelte new file mode 100644 index 0000000000..9bcc6d9623 --- /dev/null +++ b/packages/svelte/src/lib/components/toc/toc-content.svelte @@ -0,0 +1,14 @@ + + + + + diff --git a/packages/svelte/src/lib/components/toc/toc-context.svelte b/packages/svelte/src/lib/components/toc/toc-context.svelte new file mode 100644 index 0000000000..7a5e676692 --- /dev/null +++ b/packages/svelte/src/lib/components/toc/toc-context.svelte @@ -0,0 +1,18 @@ + + + + +{@render render(toc)} diff --git a/packages/svelte/src/lib/components/toc/toc-indicator.svelte b/packages/svelte/src/lib/components/toc/toc-indicator.svelte new file mode 100644 index 0000000000..67b8636190 --- /dev/null +++ b/packages/svelte/src/lib/components/toc/toc-indicator.svelte @@ -0,0 +1,18 @@ + + + + + diff --git a/packages/svelte/src/lib/components/toc/toc-item.svelte b/packages/svelte/src/lib/components/toc/toc-item.svelte new file mode 100644 index 0000000000..992ea90b7c --- /dev/null +++ b/packages/svelte/src/lib/components/toc/toc-item.svelte @@ -0,0 +1,24 @@ + + + + + diff --git a/packages/svelte/src/lib/components/toc/toc-link.svelte b/packages/svelte/src/lib/components/toc/toc-link.svelte new file mode 100644 index 0000000000..6dc3cc789d --- /dev/null +++ b/packages/svelte/src/lib/components/toc/toc-link.svelte @@ -0,0 +1,20 @@ + + + + + diff --git a/packages/svelte/src/lib/components/toc/toc-list.svelte b/packages/svelte/src/lib/components/toc/toc-list.svelte new file mode 100644 index 0000000000..2f27fb303b --- /dev/null +++ b/packages/svelte/src/lib/components/toc/toc-list.svelte @@ -0,0 +1,18 @@ + + + + + diff --git a/packages/svelte/src/lib/components/toc/toc-nav.svelte b/packages/svelte/src/lib/components/toc/toc-nav.svelte new file mode 100644 index 0000000000..c4d418336a --- /dev/null +++ b/packages/svelte/src/lib/components/toc/toc-nav.svelte @@ -0,0 +1,54 @@ + + + + + diff --git a/packages/svelte/src/lib/components/toc/toc-root-provider.svelte b/packages/svelte/src/lib/components/toc/toc-root-provider.svelte new file mode 100644 index 0000000000..5968293670 --- /dev/null +++ b/packages/svelte/src/lib/components/toc/toc-root-provider.svelte @@ -0,0 +1,21 @@ + + + + + diff --git a/packages/svelte/src/lib/components/toc/toc-root.svelte b/packages/svelte/src/lib/components/toc/toc-root.svelte new file mode 100644 index 0000000000..15a690d120 --- /dev/null +++ b/packages/svelte/src/lib/components/toc/toc-root.svelte @@ -0,0 +1,40 @@ + + + + + diff --git a/packages/svelte/src/lib/components/toc/toc-title.svelte b/packages/svelte/src/lib/components/toc/toc-title.svelte new file mode 100644 index 0000000000..c3fac0a325 --- /dev/null +++ b/packages/svelte/src/lib/components/toc/toc-title.svelte @@ -0,0 +1,18 @@ + + + + + diff --git a/packages/svelte/src/lib/components/toc/toc.anatomy.ts b/packages/svelte/src/lib/components/toc/toc.anatomy.ts new file mode 100644 index 0000000000..560bfdc21b --- /dev/null +++ b/packages/svelte/src/lib/components/toc/toc.anatomy.ts @@ -0,0 +1 @@ +export { anatomy as tocAnatomy } from '@zag-js/toc' diff --git a/packages/svelte/src/lib/components/toc/toc.stories.ts b/packages/svelte/src/lib/components/toc/toc.stories.ts new file mode 100644 index 0000000000..98dce55bcd --- /dev/null +++ b/packages/svelte/src/lib/components/toc/toc.stories.ts @@ -0,0 +1,63 @@ +import type { Meta } from '@storybook/svelte' +import BasicExample from './examples/basic.svelte' +import WithIndicatorExample from './examples/with-indicator.svelte' +import RootProviderExample from './examples/root-provider.svelte' +import NestedExample from './examples/nested.svelte' +import WithHoverExample from './examples/with-hover.svelte' +import WithTreeViewExample from './examples/with-tree-view.svelte' +import WithCollapsibleExample from './examples/with-collapsible.svelte' +import WithRailExample from './examples/with-rail.svelte' + +const meta: Meta = { + title: 'Components / Toc', +} + +export default meta + +export const Basic = { + render: () => ({ + Component: BasicExample, + }), +} + +export const Nested = { + render: () => ({ + Component: NestedExample, + }), +} + +export const RootProvider = { + render: () => ({ + Component: RootProviderExample, + }), +} + +export const WithCollapsible = { + render: () => ({ + Component: WithCollapsibleExample, + }), +} + +export const WithHover = { + render: () => ({ + Component: WithHoverExample, + }), +} + +export const WithIndicator = { + render: () => ({ + Component: WithIndicatorExample, + }), +} + +export const WithTreeView = { + render: () => ({ + Component: WithTreeViewExample, + }), +} + +export const WithRail = { + render: () => ({ + Component: WithRailExample, + }), +} diff --git a/packages/svelte/src/lib/components/toc/toc.test.ts b/packages/svelte/src/lib/components/toc/toc.test.ts new file mode 100644 index 0000000000..befea725a9 --- /dev/null +++ b/packages/svelte/src/lib/components/toc/toc.test.ts @@ -0,0 +1,76 @@ +import { render, screen } from '@testing-library/svelte' +import { describe, expect, it } from 'vitest' +import { axe } from 'vitest-axe' +import BasicComponent from './tests/basic.svelte' + +describe('Toc', () => { + it('should have no a11y violations', async () => { + const { container } = render(BasicComponent) + const results = await axe(container) + expect(results).toHaveNoViolations() + }) + + it('should render Nav as a nav landmark', () => { + render(BasicComponent) + expect(screen.getByRole('navigation')).toBeInTheDocument() + }) + + it('should render Content as an article', () => { + const { container } = render(BasicComponent) + expect(container.querySelector('article')).toBeInTheDocument() + }) + + it('should render the title', () => { + render(BasicComponent) + expect(screen.getByText('On this page')).toBeInTheDocument() + }) + + it('should render all links with correct hrefs', () => { + render(BasicComponent) + expect(screen.getByRole('link', { name: 'introduction' })).toHaveAttribute('href', '#introduction') + expect(screen.getByRole('link', { name: 'usage' })).toHaveAttribute('href', '#usage') + expect(screen.getByRole('link', { name: 'api reference' })).toHaveAttribute('href', '#api-reference') + }) + + it('should render the indicator', () => { + render(BasicComponent) + expect(screen.getByTestId('indicator')).toHaveAttribute('data-part', 'indicator') + }) + + it('should apply data-part attributes to all parts', () => { + const { container } = render(BasicComponent) + expect(container.querySelector('[data-part="title"]')).toBeInTheDocument() + expect(container.querySelector('[data-part="list"]')).toBeInTheDocument() + expect(container.querySelector('[data-part="item"]')).toBeInTheDocument() + expect(container.querySelector('[data-part="link"]')).toBeInTheDocument() + expect(container.querySelector('[data-part="indicator"]')).toBeInTheDocument() + }) + + it('should set data-active on the link matching defaultActiveIds', () => { + const { container } = render(BasicComponent, { props: { defaultActiveIds: ['usage'] } }) + expect(container.querySelector('[data-part="link"][data-value="usage"]')).toHaveAttribute('data-active', '') + expect(container.querySelector('[data-part="link"][data-value="introduction"]')).not.toHaveAttribute('data-active') + }) + + it('should support multiple defaultActiveIds', () => { + const { container } = render(BasicComponent, { props: { defaultActiveIds: ['introduction', 'usage'] } }) + expect(container.querySelector('[data-part="link"][data-value="introduction"]')).toHaveAttribute('data-active', '') + expect(container.querySelector('[data-part="link"][data-value="usage"]')).toHaveAttribute('data-active', '') + expect(container.querySelector('[data-part="link"][data-value="installation"]')).not.toHaveAttribute('data-active') + }) + + it('should reflect controlled activeIds', () => { + const { container } = render(BasicComponent, { props: { activeIds: ['installation'] } }) + expect(container.querySelector('[data-part="link"][data-value="installation"]')).toHaveAttribute('data-active', '') + expect(container.querySelector('[data-part="link"][data-value="introduction"]')).not.toHaveAttribute('data-active') + }) + + it('should update active link when controlled activeIds change', async () => { + const { container, rerender } = render(BasicComponent, { props: { activeIds: ['introduction'] } }) + expect(container.querySelector('[data-part="link"][data-value="introduction"]')).toHaveAttribute('data-active', '') + + await rerender({ activeIds: ['usage'] }) + expect(container.querySelector('[data-part="link"][data-value="usage"]')).toHaveAttribute('data-active', '') + expect(container.querySelector('[data-part="link"][data-value="introduction"]')).not.toHaveAttribute('data-active') + }) +}) diff --git a/packages/svelte/src/lib/components/toc/toc.ts b/packages/svelte/src/lib/components/toc/toc.ts new file mode 100644 index 0000000000..f12300212b --- /dev/null +++ b/packages/svelte/src/lib/components/toc/toc.ts @@ -0,0 +1,43 @@ +export type { ActiveChangeDetails as TocActiveChangeDetails, TocItem as TocItemData } from '@zag-js/toc' +export { + default as Content, + type TocContentBaseProps as ContentBaseProps, + type TocContentProps as ContentProps, +} from './toc-content.svelte' +export { default as Context, type TocContextProps as ContextProps } from './toc-context.svelte' +export { + default as Indicator, + type TocIndicatorBaseProps as IndicatorBaseProps, + type TocIndicatorProps as IndicatorProps, +} from './toc-indicator.svelte' +export { + default as Item, + type TocItemBaseProps as ItemBaseProps, + type TocItemProps as ItemProps, +} from './toc-item.svelte' +export { + default as Link, + type TocLinkBaseProps as LinkBaseProps, + type TocLinkProps as LinkProps, +} from './toc-link.svelte' +export { + default as List, + type TocListBaseProps as ListBaseProps, + type TocListProps as ListProps, +} from './toc-list.svelte' +export { default as Nav, type TocNavBaseProps as NavBaseProps, type TocNavProps as NavProps } from './toc-nav.svelte' +export { + default as Root, + type TocRootBaseProps as RootBaseProps, + type TocRootProps as RootProps, +} from './toc-root.svelte' +export { + default as RootProvider, + type TocRootProviderBaseProps as RootProviderBaseProps, + type TocRootProviderProps as RootProviderProps, +} from './toc-root-provider.svelte' +export { + default as Title, + type TocTitleBaseProps as TitleBaseProps, + type TocTitleProps as TitleProps, +} from './toc-title.svelte' diff --git a/packages/svelte/src/lib/components/toc/use-toc-context.ts b/packages/svelte/src/lib/components/toc/use-toc-context.ts new file mode 100644 index 0000000000..4b210911af --- /dev/null +++ b/packages/svelte/src/lib/components/toc/use-toc-context.ts @@ -0,0 +1,9 @@ +import { createContext } from '../../utils/create-context' +import type { UseTocReturn } from './use-toc.svelte' + +export interface UseTocContext extends UseTocReturn {} +export const [TocProvider, useTocContext, TocContextId] = createContext({ + name: 'TocContext', + hookName: 'useTocContext', + providerName: '', +}) diff --git a/packages/svelte/src/lib/components/toc/use-toc-item-props-context.ts b/packages/svelte/src/lib/components/toc/use-toc-item-props-context.ts new file mode 100644 index 0000000000..d01bbcdd33 --- /dev/null +++ b/packages/svelte/src/lib/components/toc/use-toc-item-props-context.ts @@ -0,0 +1,8 @@ +import { createContext } from '../../utils/create-context' +import type { ItemProps } from '@zag-js/toc' + +export const [TocItemPropsProvider, useTocItemPropsContext] = createContext<() => ItemProps>({ + name: 'TocItemPropsContext', + hookName: 'useTocItemPropsContext', + providerName: '', +}) diff --git a/packages/svelte/src/lib/components/toc/use-toc.svelte.ts b/packages/svelte/src/lib/components/toc/use-toc.svelte.ts new file mode 100644 index 0000000000..5eaec5808f --- /dev/null +++ b/packages/svelte/src/lib/components/toc/use-toc.svelte.ts @@ -0,0 +1,27 @@ +import { useEnvironmentContext } from '$lib/providers/environment' +import { useLocaleContext } from '$lib/providers/locale' +import type { Accessor, Optional } from '$lib/types' +import * as toc from '@zag-js/toc' +import { type PropTypes, normalizeProps, useMachine } from '@zag-js/svelte' +import { type MaybeFunction, runIfFn } from '@zag-js/utils' + +export interface UseTocProps extends Optional, 'id'> {} +export interface UseTocReturn extends Accessor> {} + +export const useToc = (props?: MaybeFunction): UseTocReturn => { + const env = useEnvironmentContext() + const locale = useLocaleContext() + + const machineProps = $derived.by(() => { + const resolvedProps = runIfFn(props) + return { + dir: locale().dir, + getRootNode: env().getRootNode, + ...resolvedProps, + } + }) + + const service = useMachine(toc.machine, () => machineProps) + const api = $derived(toc.connect(service, normalizeProps)) + return () => api +} diff --git a/packages/vue/package.json b/packages/vue/package.json index 620b2cea4c..c8c1e89145 100644 --- a/packages/vue/package.json +++ b/packages/vue/package.json @@ -39,6 +39,7 @@ "tabs", "tags input", "toast", + "toc", "toggle group", "tooltip", "tour", @@ -143,6 +144,7 @@ "@zag-js/tags-input": "1.43.1", "@zag-js/timer": "1.43.1", "@zag-js/toast": "1.43.1", + "@zag-js/toc": "1.43.1", "@zag-js/toggle": "1.43.1", "@zag-js/toggle-group": "1.43.1", "@zag-js/tooltip": "1.43.1", diff --git a/packages/vue/src/components/anatomy.ts b/packages/vue/src/components/anatomy.ts index 592ff0b2e0..2c9b6a7301 100644 --- a/packages/vue/src/components/anatomy.ts +++ b/packages/vue/src/components/anatomy.ts @@ -45,6 +45,7 @@ export { tabsAnatomy } from './tabs/tabs.anatomy.ts' export { tagsInputAnatomy } from './tags-input/tags-input.anatomy.ts' export { timerAnatomy } from './timer/timer.anatomy.ts' export { toastAnatomy } from './toast/toast.anatomy.ts' +export { tocAnatomy } from './toc/toc.anatomy.ts' export { toggleGroupAnatomy } from './toggle-group/toggle-group.anatomy.ts' export { toggleAnatomy } from './toggle/toggle.anatomy.ts' export { tooltipAnatomy } from './tooltip/tooltip.anatomy.ts' diff --git a/packages/vue/src/components/index.ts b/packages/vue/src/components/index.ts index 7aafc7fcd6..142cdada75 100644 --- a/packages/vue/src/components/index.ts +++ b/packages/vue/src/components/index.ts @@ -53,6 +53,7 @@ export * from './tabs/index.ts' export * from './tags-input/index.ts' export * from './timer/index.ts' export * from './toast/index.ts' +export * from './toc/index.ts' export * from './toggle/index.ts' export * from './toggle-group/index.ts' export * from './tooltip/index.ts' diff --git a/packages/vue/src/components/toc/examples/basic.vue b/packages/vue/src/components/toc/examples/basic.vue new file mode 100644 index 0000000000..d236abc843 --- /dev/null +++ b/packages/vue/src/components/toc/examples/basic.vue @@ -0,0 +1,37 @@ + + + diff --git a/packages/vue/src/components/toc/examples/nested.vue b/packages/vue/src/components/toc/examples/nested.vue new file mode 100644 index 0000000000..cc5a64c51a --- /dev/null +++ b/packages/vue/src/components/toc/examples/nested.vue @@ -0,0 +1,45 @@ + + + diff --git a/packages/vue/src/components/toc/examples/root-provider.vue b/packages/vue/src/components/toc/examples/root-provider.vue new file mode 100644 index 0000000000..6226119a7b --- /dev/null +++ b/packages/vue/src/components/toc/examples/root-provider.vue @@ -0,0 +1,38 @@ + + + diff --git a/packages/vue/src/components/toc/examples/with-collapsible.vue b/packages/vue/src/components/toc/examples/with-collapsible.vue new file mode 100644 index 0000000000..2e15d72a54 --- /dev/null +++ b/packages/vue/src/components/toc/examples/with-collapsible.vue @@ -0,0 +1,120 @@ + + + diff --git a/packages/vue/src/components/toc/examples/with-hover.vue b/packages/vue/src/components/toc/examples/with-hover.vue new file mode 100644 index 0000000000..8db1c51dc1 --- /dev/null +++ b/packages/vue/src/components/toc/examples/with-hover.vue @@ -0,0 +1,92 @@ + + + diff --git a/packages/vue/src/components/toc/examples/with-indicator.vue b/packages/vue/src/components/toc/examples/with-indicator.vue new file mode 100644 index 0000000000..60f518350f --- /dev/null +++ b/packages/vue/src/components/toc/examples/with-indicator.vue @@ -0,0 +1,38 @@ + + + diff --git a/packages/vue/src/components/toc/examples/with-rail.vue b/packages/vue/src/components/toc/examples/with-rail.vue new file mode 100644 index 0000000000..9923b51786 --- /dev/null +++ b/packages/vue/src/components/toc/examples/with-rail.vue @@ -0,0 +1,80 @@ + + + diff --git a/packages/vue/src/components/toc/examples/with-tree-view.vue b/packages/vue/src/components/toc/examples/with-tree-view.vue new file mode 100644 index 0000000000..cf2c9f249b --- /dev/null +++ b/packages/vue/src/components/toc/examples/with-tree-view.vue @@ -0,0 +1,144 @@ + + + diff --git a/packages/vue/src/components/toc/index.ts b/packages/vue/src/components/toc/index.ts new file mode 100644 index 0000000000..29b59dc706 --- /dev/null +++ b/packages/vue/src/components/toc/index.ts @@ -0,0 +1,20 @@ +export type { ActiveChangeDetails as TocActiveChangeDetails, TocItem as TocItemData } from '@zag-js/toc' +export { default as TocContent, type TocContentBaseProps, type TocContentProps } from './toc-content.vue' +export { default as TocContext, type TocContextProps } from './toc-context.vue' +export { default as TocIndicator, type TocIndicatorBaseProps, type TocIndicatorProps } from './toc-indicator.vue' +export { default as TocItem, type TocItemBaseProps, type TocItemProps } from './toc-item.vue' +export { default as TocLink, type TocLinkBaseProps, type TocLinkProps } from './toc-link.vue' +export { default as TocList, type TocListBaseProps, type TocListProps } from './toc-list.vue' +export { default as TocNav, type TocNavBaseProps, type TocNavProps } from './toc-nav.vue' +export { default as TocRoot, type TocRootBaseProps, type TocRootEmits, type TocRootProps } from './toc-root.vue' +export { + default as TocRootProvider, + type TocRootProviderBaseProps, + type TocRootProviderProps, +} from './toc-root-provider.vue' +export { default as TocTitle, type TocTitleBaseProps, type TocTitleProps } from './toc-title.vue' +export { tocAnatomy } from './toc.anatomy.ts' +export { useToc, type UseTocProps, type UseTocReturn } from './use-toc.ts' +export { useTocContext, type UseTocContext } from './use-toc-context.ts' + +export * as Toc from './toc.ts' diff --git a/packages/vue/src/components/toc/toc-content.vue b/packages/vue/src/components/toc/toc-content.vue new file mode 100644 index 0000000000..d307cbcfd3 --- /dev/null +++ b/packages/vue/src/components/toc/toc-content.vue @@ -0,0 +1,28 @@ + + + + + diff --git a/packages/vue/src/components/toc/toc-context.vue b/packages/vue/src/components/toc/toc-context.vue new file mode 100644 index 0000000000..994a8a9492 --- /dev/null +++ b/packages/vue/src/components/toc/toc-context.vue @@ -0,0 +1,22 @@ + + + + + diff --git a/packages/vue/src/components/toc/toc-indicator.vue b/packages/vue/src/components/toc/toc-indicator.vue new file mode 100644 index 0000000000..c20b5f37e0 --- /dev/null +++ b/packages/vue/src/components/toc/toc-indicator.vue @@ -0,0 +1,30 @@ + + + + + diff --git a/packages/vue/src/components/toc/toc-item.vue b/packages/vue/src/components/toc/toc-item.vue new file mode 100644 index 0000000000..f526106431 --- /dev/null +++ b/packages/vue/src/components/toc/toc-item.vue @@ -0,0 +1,36 @@ + + + + + diff --git a/packages/vue/src/components/toc/toc-link.vue b/packages/vue/src/components/toc/toc-link.vue new file mode 100644 index 0000000000..cb66bda1ac --- /dev/null +++ b/packages/vue/src/components/toc/toc-link.vue @@ -0,0 +1,32 @@ + + + + + diff --git a/packages/vue/src/components/toc/toc-list.vue b/packages/vue/src/components/toc/toc-list.vue new file mode 100644 index 0000000000..6f0cdeb899 --- /dev/null +++ b/packages/vue/src/components/toc/toc-list.vue @@ -0,0 +1,30 @@ + + + + + diff --git a/packages/vue/src/components/toc/toc-nav.vue b/packages/vue/src/components/toc/toc-nav.vue new file mode 100644 index 0000000000..ecf18f06c3 --- /dev/null +++ b/packages/vue/src/components/toc/toc-nav.vue @@ -0,0 +1,32 @@ + + + + + diff --git a/packages/vue/src/components/toc/toc-root-provider.vue b/packages/vue/src/components/toc/toc-root-provider.vue new file mode 100644 index 0000000000..45e6a42555 --- /dev/null +++ b/packages/vue/src/components/toc/toc-root-provider.vue @@ -0,0 +1,37 @@ + + + + + diff --git a/packages/vue/src/components/toc/toc-root.vue b/packages/vue/src/components/toc/toc-root.vue new file mode 100644 index 0000000000..4c292077fb --- /dev/null +++ b/packages/vue/src/components/toc/toc-root.vue @@ -0,0 +1,36 @@ + + + + + diff --git a/packages/vue/src/components/toc/toc-title.vue b/packages/vue/src/components/toc/toc-title.vue new file mode 100644 index 0000000000..33712a4231 --- /dev/null +++ b/packages/vue/src/components/toc/toc-title.vue @@ -0,0 +1,30 @@ + + + + + diff --git a/packages/vue/src/components/toc/toc.anatomy.ts b/packages/vue/src/components/toc/toc.anatomy.ts new file mode 100644 index 0000000000..560bfdc21b --- /dev/null +++ b/packages/vue/src/components/toc/toc.anatomy.ts @@ -0,0 +1 @@ +export { anatomy as tocAnatomy } from '@zag-js/toc' diff --git a/packages/vue/src/components/toc/toc.stories.ts b/packages/vue/src/components/toc/toc.stories.ts new file mode 100644 index 0000000000..c90ef4744f --- /dev/null +++ b/packages/vue/src/components/toc/toc.stories.ts @@ -0,0 +1,72 @@ +import type { Meta } from '@storybook/vue3-vite' + +import BasicExample from './examples/basic.vue' +import NestedExample from './examples/nested.vue' +import RootProviderExample from './examples/root-provider.vue' +import WithCollapsibleExample from './examples/with-collapsible.vue' +import WithHoverExample from './examples/with-hover.vue' +import WithIndicatorExample from './examples/with-indicator.vue' +import WithRailExample from './examples/with-rail.vue' +import WithTreeViewExample from './examples/with-tree-view.vue' + +const meta: Meta = { + title: 'Components / Toc', +} + +export default meta + +export const Basic = { + render: () => ({ + components: { Component: BasicExample }, + template: '', + }), +} + +export const Nested = { + render: () => ({ + components: { Component: NestedExample }, + template: '', + }), +} + +export const RootProvider = { + render: () => ({ + components: { Component: RootProviderExample }, + template: '', + }), +} + +export const WithCollapsible = { + render: () => ({ + components: { Component: WithCollapsibleExample }, + template: '', + }), +} + +export const WithHover = { + render: () => ({ + components: { Component: WithHoverExample }, + template: '', + }), +} + +export const WithIndicator = { + render: () => ({ + components: { Component: WithIndicatorExample }, + template: '', + }), +} + +export const WithTreeView = { + render: () => ({ + components: { Component: WithTreeViewExample }, + template: '', + }), +} + +export const WithRail = { + render: () => ({ + components: { Component: WithRailExample }, + template: '', + }), +} diff --git a/packages/vue/src/components/toc/toc.ts b/packages/vue/src/components/toc/toc.ts new file mode 100644 index 0000000000..dd96d3f34f --- /dev/null +++ b/packages/vue/src/components/toc/toc.ts @@ -0,0 +1,32 @@ +export type { ActiveChangeDetails as TocActiveChangeDetails, TocItem as TocItemData } from '@zag-js/toc' +export { + default as Content, + type TocContentBaseProps as ContentBaseProps, + type TocContentProps as ContentProps, +} from './toc-content.vue' +export { default as Context, type TocContextProps as ContextProps } from './toc-context.vue' +export { + default as Indicator, + type TocIndicatorBaseProps as IndicatorBaseProps, + type TocIndicatorProps as IndicatorProps, +} from './toc-indicator.vue' +export { default as Item, type TocItemBaseProps as ItemBaseProps, type TocItemProps as ItemProps } from './toc-item.vue' +export { default as Link, type TocLinkBaseProps as LinkBaseProps, type TocLinkProps as LinkProps } from './toc-link.vue' +export { default as List, type TocListBaseProps as ListBaseProps, type TocListProps as ListProps } from './toc-list.vue' +export { default as Nav, type TocNavBaseProps as NavBaseProps, type TocNavProps as NavProps } from './toc-nav.vue' +export { + default as Root, + type TocRootBaseProps as RootBaseProps, + type TocRootEmits as RootEmits, + type TocRootProps as RootProps, +} from './toc-root.vue' +export { + default as RootProvider, + type TocRootProviderBaseProps as RootProviderBaseProps, + type TocRootProviderProps as RootProviderProps, +} from './toc-root-provider.vue' +export { + default as Title, + type TocTitleBaseProps as TitleBaseProps, + type TocTitleProps as TitleProps, +} from './toc-title.vue' diff --git a/packages/vue/src/components/toc/toc.types.ts b/packages/vue/src/components/toc/toc.types.ts new file mode 100644 index 0000000000..0508296584 --- /dev/null +++ b/packages/vue/src/components/toc/toc.types.ts @@ -0,0 +1,65 @@ +import type * as toc from '@zag-js/toc' + +export interface RootProps { + /** + * Whether to auto-scroll the TOC container so the first active item + * is visible when active headings change. + * @default true + */ + autoScroll?: boolean + /** + * The controlled active heading ids. + */ + activeIds?: string[] + /** + * The default active heading ids when rendered. + * Use when you don't need to control the active headings. + */ + defaultActiveIds?: string[] + /** + * Function that returns the scroll container element to observe within. + * Defaults to the document/viewport. + */ + scrollEl?: () => HTMLElement | null + /** + * The unique identifier of the machine. + */ + id?: string + /** + * The ids of the elements in the TOC. Useful for composition. + */ + ids?: Partial<{ + root: string + title: string + list: string + item: (value: string) => string + link: (value: string) => string + indicator: string + }> + /** + * The TOC items with `value` (slug/id) and `depth` (heading level). + */ + items: toc.TocItem[] + /** + * The root margin for the IntersectionObserver. + * @default "-20px 0px -40% 0px" + */ + rootMargin?: string + /** + * The scroll behavior for auto-scrolling the TOC container. + * @default "smooth" + */ + scrollBehavior?: ScrollBehavior + /** + * The IntersectionObserver threshold. + * @default 0 + */ + threshold?: number | number[] +} + +export type RootEmits = { + /** + * Callback when the active (visible) headings change. + */ + activeChange: [details: toc.ActiveChangeDetails] +} diff --git a/packages/vue/src/components/toc/use-toc-context.ts b/packages/vue/src/components/toc/use-toc-context.ts new file mode 100644 index 0000000000..92211cf6ce --- /dev/null +++ b/packages/vue/src/components/toc/use-toc-context.ts @@ -0,0 +1,6 @@ +import { createContext } from '../../utils/create-context' +import type { UseTocReturn } from './use-toc' + +export interface UseTocContext extends UseTocReturn {} + +export const [TocProvider, useTocContext] = createContext('TocContext') diff --git a/packages/vue/src/components/toc/use-toc-item-props-context.ts b/packages/vue/src/components/toc/use-toc-item-props-context.ts new file mode 100644 index 0000000000..e803b5a64a --- /dev/null +++ b/packages/vue/src/components/toc/use-toc-item-props-context.ts @@ -0,0 +1,6 @@ +import type { ItemProps } from '@zag-js/toc' +import type { ComputedRef } from 'vue' +import { createContext } from '../../utils/create-context' + +export const [TocItemPropsProvider, useTocItemPropsContext] = + createContext>('TocItemPropsContext') diff --git a/packages/vue/src/components/toc/use-toc.ts b/packages/vue/src/components/toc/use-toc.ts new file mode 100644 index 0000000000..88d3dcb97f --- /dev/null +++ b/packages/vue/src/components/toc/use-toc.ts @@ -0,0 +1,35 @@ +import * as toc from '@zag-js/toc' +import { type PropTypes, normalizeProps, useMachine } from '@zag-js/vue' +import { type ComputedRef, type MaybeRef, computed, toValue, useId } from 'vue' +import { DEFAULT_ENVIRONMENT, DEFAULT_LOCALE, useEnvironmentContext, useLocaleContext } from '../../providers' +import type { EmitFn, Optional } from '../../types' +import { cleanProps } from '../../utils/clean-props' +import type { RootEmits } from './toc.types' + +export interface UseTocProps extends Optional, 'id'> {} + +export interface UseTocReturn extends ComputedRef> {} + +export const useToc = (props: MaybeRef, emits?: EmitFn): UseTocReturn => { + const id = useId() + const env = useEnvironmentContext(DEFAULT_ENVIRONMENT) + const locale = useLocaleContext(DEFAULT_LOCALE) + + const context = computed(() => { + const localProps = toValue(props) + + return { + id, + dir: locale.value.dir, + getRootNode: env?.value.getRootNode, + ...cleanProps(localProps), + onActiveChange: (details) => { + emits?.('activeChange', details) + localProps.onActiveChange?.(details) + }, + } + }) + + const service = useMachine(toc.machine, context) + return computed(() => toc.connect(service, normalizeProps)) +} diff --git a/scripts/src/generate-type-docs.ts b/scripts/src/generate-type-docs.ts index 53b69f9ba4..1694a08527 100644 --- a/scripts/src/generate-type-docs.ts +++ b/scripts/src/generate-type-docs.ts @@ -295,6 +295,10 @@ const extractTypesForFramework = async (framework: string) => { return { ...acc, ...value } }, {}) + // hook-only modules (interaction, collection) document no props, and + // nothing renders an empty table + if (Object.keys(typeExportsWithElement).length === 0) return + const filename = `${path.basename(component)}.types.json` const filePath = path.join(outDir, framework, filename) diff --git a/website/src/content/pages/components/toc.mdx b/website/src/content/pages/components/toc.mdx new file mode 100644 index 0000000000..9edfc2678f --- /dev/null +++ b/website/src/content/pages/components/toc.mdx @@ -0,0 +1,125 @@ +--- +id: toc +title: Table of Contents +status: Preview +description: + A navigation component that tracks and highlights the active section as users scroll through document content. +--- + + + +## Anatomy + + + +```tsx + scrollContainer}> + + + + + + + + + + + +``` + +## Examples + +### Basic + +Pass headings to `items`, and point `scrollEl` at the scrollable container so the TOC knows what to track. + + + +### Nested Headings + +Read `depth` in your own markup to indent sub-headings. Nothing is indented for you. + + + +### Root Provider + +Use `useToc` with `Toc.RootProvider` to reach `activeIds` from outside the tree, so other parts of your UI can follow +the reading position. + + + +### With Collapsible + +Wrap `Toc.Nav` in a `Collapsible` to let users hide the navigation. `Toc.Context` exposes `activeItems`, here driving a +progress ring. + + + +### With Hover + +Expand the navigation on `onMouseEnter` and collapse it on `onMouseLeave`, with a pin toggle to keep it open. + +> **Note:** Hover does not exist on touch screens. Pair this with a pin button or a disclosure control so the navigation +> stays reachable on mobile. + + + +### With Indicator + +Add `Toc.Indicator` inside `Toc.List` for a marker that slides to the active item. + + + +### With Rail + +Give each item a small SVG offset by `depth`. Where neighbouring items sit at different depths, a bezier joins the two +positions so the rail steps rather than breaks. + + + +### With Tree View + +Pair `Toc.Root` with `TreeView` for hierarchical navigation. `onActiveChange` expands the branch holding the active +heading. + + + +## Guides + +### Items + +Every entry needs `value`, the `id` of the heading element, and `depth`, the heading level. + +```tsx +const items = [ + { value: 'introduction', depth: 2 }, + { value: 'installation', depth: 2 }, + { value: 'peer-dependencies', depth: 3 }, +] +``` + +`value` must match the heading's `id` exactly. The component resolves it with `getElementById` to track visibility, and +`Toc.Link` targets it with `href="#introduction"`. An item whose id is missing renders but never activates. + +Ids are global to the page, so prefix them when a page holds more than one TOC. + +Extra properties are fine, a `label` for link text being the common one. `TocItemData` covers only `value` and `depth`, +so extend it rather than annotating with it directly: + +```tsx +import type { TocItemData } from '@ark-ui/react/toc' + +interface Item extends TocItemData { + label: string +} +``` + +## API Reference + +### Props + + + +### Context + + diff --git a/website/src/content/types/react/collection.types.json b/website/src/content/types/react/collection.types.json deleted file mode 100644 index 0967ef424b..0000000000 --- a/website/src/content/types/react/collection.types.json +++ /dev/null @@ -1 +0,0 @@ -{} diff --git a/website/src/content/types/react/date-picker.types.json b/website/src/content/types/react/date-picker.types.json index ef7cedf093..1b70f70c5a 100644 --- a/website/src/content/types/react/date-picker.types.json +++ b/website/src/content/types/react/date-picker.types.json @@ -385,7 +385,7 @@ "description": "The time zone to use" }, "translations": { - "type": "IntlTranslations", + "type": "Partial", "isRequired": false, "description": "The localized messages to use." }, diff --git a/website/src/content/types/react/qr-code.types.json b/website/src/content/types/react/qr-code.types.json index 99bc6db63d..d7a491da44 100644 --- a/website/src/content/types/react/qr-code.types.json +++ b/website/src/content/types/react/qr-code.types.json @@ -81,7 +81,7 @@ "description": "The unique identifier of the machine." }, "ids": { - "type": "Partial<{ root: string; frame: string }>", + "type": "Partial<{ root: string; frame: string; overlay: string }>", "isRequired": false, "description": "The element ids." }, diff --git a/website/src/content/types/react/toc.types.json b/website/src/content/types/react/toc.types.json new file mode 100644 index 0000000000..0d55d7a381 --- /dev/null +++ b/website/src/content/types/react/toc.types.json @@ -0,0 +1,173 @@ +{ + "Content": { + "props": { + "asChild": { + "type": "boolean", + "isRequired": false, + "description": "Use the provided child element as the default rendered element, combining their props and behavior." + } + }, + "element": "HTMLElement", + "tag": "article" + }, + "Indicator": { + "props": { + "asChild": { + "type": "boolean", + "isRequired": false, + "description": "Use the provided child element as the default rendered element, combining their props and behavior." + } + }, + "element": "HTMLDivElement", + "tag": "div" + }, + "Item": { + "props": { + "item": { + "type": "TocItem", + "isRequired": true, + "description": "The TOC item" + }, + "asChild": { + "type": "boolean", + "isRequired": false, + "description": "Use the provided child element as the default rendered element, combining their props and behavior." + } + }, + "element": "HTMLLIElement", + "tag": "li" + }, + "Link": { + "props": { + "asChild": { + "type": "boolean", + "isRequired": false, + "description": "Use the provided child element as the default rendered element, combining their props and behavior." + } + }, + "element": "HTMLAnchorElement", + "tag": "a" + }, + "List": { + "props": { + "asChild": { + "type": "boolean", + "isRequired": false, + "description": "Use the provided child element as the default rendered element, combining their props and behavior." + } + }, + "element": "HTMLUListElement", + "tag": "ul" + }, + "Nav": { + "props": { + "asChild": { + "type": "boolean", + "isRequired": false, + "description": "Use the provided child element as the default rendered element, combining their props and behavior." + }, + "placement": { + "type": "'left' | 'right'", + "isRequired": false + } + }, + "element": "HTMLElement", + "tag": "nav" + }, + "Root": { + "props": { + "items": { + "type": "TocItem[]", + "isRequired": true, + "description": "The TOC items with `value` (slug/id) and `depth` (heading level)." + }, + "activeIds": { + "type": "string[]", + "isRequired": false, + "description": "The controlled active heading ids." + }, + "asChild": { + "type": "boolean", + "isRequired": false, + "description": "Use the provided child element as the default rendered element, combining their props and behavior." + }, + "autoScroll": { + "type": "boolean", + "defaultValue": "true", + "isRequired": false, + "description": "Whether to auto-scroll the TOC container so the first active item\nis visible when active headings change." + }, + "defaultActiveIds": { + "type": "string[]", + "isRequired": false, + "description": "The default active heading ids when rendered.\nUse when you don't need to control the active headings." + }, + "id": { + "type": "string", + "isRequired": false, + "description": "The unique identifier of the machine." + }, + "ids": { + "type": "Partial<{\n root: string\n title: string\n list: string\n item: (value: string) => string\n link: (value: string) => string\n indicator: string\n}>", + "isRequired": false, + "description": "The ids of the elements in the TOC. Useful for composition." + }, + "onActiveChange": { + "type": "(details: ActiveChangeDetails) => void", + "isRequired": false, + "description": "Callback when the active (visible) headings change." + }, + "rootMargin": { + "type": "string", + "defaultValue": "\"-20px 0px -40% 0px\"", + "isRequired": false, + "description": "The root margin for the IntersectionObserver.\nControls the effective viewport area for determining active headings." + }, + "scrollBehavior": { + "type": "ScrollBehavior", + "defaultValue": "\"smooth\"", + "isRequired": false, + "description": "The default scroll behavior used when auto-scrolling the TOC container\nand when scrolling to a heading (via link click or `api.scrollTo`).\nCan be overridden per-call by passing `behavior` to `api.scrollTo`." + }, + "scrollEl": { + "type": "() => HTMLElement | null", + "isRequired": false, + "description": "Function that returns the scroll container element to observe within.\nDefaults to the document/viewport." + }, + "threshold": { + "type": "number | number[]", + "defaultValue": "0", + "isRequired": false, + "description": "The IntersectionObserver threshold. A value of `0` means the heading is\nactive as soon as even one pixel is visible within the root margin area." + } + }, + "element": "HTMLDivElement", + "tag": "div" + }, + "RootProvider": { + "props": { + "value": { + "type": "UseTocReturn", + "isRequired": true + }, + "asChild": { + "type": "boolean", + "isRequired": false, + "description": "Use the provided child element as the default rendered element, combining their props and behavior." + } + }, + "element": "HTMLDivElement", + "tag": "div" + }, + "Title": { + "props": { + "asChild": { + "type": "boolean", + "isRequired": false, + "description": "Use the provided child element as the default rendered element, combining their props and behavior." + } + }, + "element": "HTMLHeadingElement", + "tag": "h2" + } +} diff --git a/website/src/content/types/solid/collection.types.json b/website/src/content/types/solid/collection.types.json deleted file mode 100644 index 0967ef424b..0000000000 --- a/website/src/content/types/solid/collection.types.json +++ /dev/null @@ -1 +0,0 @@ -{} diff --git a/website/src/content/types/solid/date-picker.types.json b/website/src/content/types/solid/date-picker.types.json index 7ad47534c7..cc23f27ef0 100644 --- a/website/src/content/types/solid/date-picker.types.json +++ b/website/src/content/types/solid/date-picker.types.json @@ -301,7 +301,7 @@ "description": "The time zone to use" }, "translations": { - "type": "IntlTranslations", + "type": "Partial", "isRequired": false, "description": "The localized messages to use." }, diff --git a/website/src/content/types/solid/qr-code.types.json b/website/src/content/types/solid/qr-code.types.json index dbf40e991c..4399d3dfc4 100644 --- a/website/src/content/types/solid/qr-code.types.json +++ b/website/src/content/types/solid/qr-code.types.json @@ -56,7 +56,7 @@ "description": "The qr code encoding options." }, "ids": { - "type": "Partial<{ root: string; frame: string }>", + "type": "Partial<{ root: string; frame: string; overlay: string }>", "isRequired": false, "description": "The element ids." }, diff --git a/website/src/content/types/solid/toc.types.json b/website/src/content/types/solid/toc.types.json new file mode 100644 index 0000000000..dba8ac73af --- /dev/null +++ b/website/src/content/types/solid/toc.types.json @@ -0,0 +1,137 @@ +{ + "Content": { + "props": { + "asChild": { + "type": "(props: ParentProps<'article'>) => Element", + "isRequired": false, + "description": "Use the provided child element as the default rendered element, combining their props and behavior." + } + } + }, + "Indicator": { + "props": { + "asChild": { + "type": "(props: ParentProps<'div'>) => Element", + "isRequired": false, + "description": "Use the provided child element as the default rendered element, combining their props and behavior." + } + } + }, + "Item": { + "props": { + "item": { "type": "TocItem", "isRequired": true, "description": "The TOC item" }, + "asChild": { + "type": "(props: ParentProps<'li'>) => Element", + "isRequired": false, + "description": "Use the provided child element as the default rendered element, combining their props and behavior." + } + } + }, + "Link": { + "props": { + "asChild": { + "type": "(props: ParentProps<'a'>) => Element", + "isRequired": false, + "description": "Use the provided child element as the default rendered element, combining their props and behavior." + } + } + }, + "List": { + "props": { + "asChild": { + "type": "(props: ParentProps<'ul'>) => Element", + "isRequired": false, + "description": "Use the provided child element as the default rendered element, combining their props and behavior." + } + } + }, + "Nav": { + "props": { + "asChild": { + "type": "(props: ParentProps<'nav'>) => Element", + "isRequired": false, + "description": "Use the provided child element as the default rendered element, combining their props and behavior." + }, + "placement": { "type": "'left' | 'right'", "isRequired": false } + } + }, + "Root": { + "props": { + "items": { + "type": "TocItem[]", + "isRequired": true, + "description": "The TOC items with `value` (slug/id) and `depth` (heading level)." + }, + "activeIds": { "type": "string[]", "isRequired": false, "description": "The controlled active heading ids." }, + "asChild": { + "type": "(props: ParentProps<'div'>) => Element", + "isRequired": false, + "description": "Use the provided child element as the default rendered element, combining their props and behavior." + }, + "autoScroll": { + "type": "boolean", + "defaultValue": "true", + "isRequired": false, + "description": "Whether to auto-scroll the TOC container so the first active item\nis visible when active headings change." + }, + "defaultActiveIds": { + "type": "string[]", + "isRequired": false, + "description": "The default active heading ids when rendered.\nUse when you don't need to control the active headings." + }, + "id": { "type": "string", "isRequired": false, "description": "The unique identifier of the machine." }, + "ids": { + "type": "Partial<{\n root: string\n title: string\n list: string\n item: (value: string) => string\n link: (value: string) => string\n indicator: string\n}>", + "isRequired": false, + "description": "The ids of the elements in the TOC. Useful for composition." + }, + "onActiveChange": { + "type": "(details: ActiveChangeDetails) => void", + "isRequired": false, + "description": "Callback when the active (visible) headings change." + }, + "rootMargin": { + "type": "string", + "defaultValue": "\"-20px 0px -40% 0px\"", + "isRequired": false, + "description": "The root margin for the IntersectionObserver.\nControls the effective viewport area for determining active headings." + }, + "scrollBehavior": { + "type": "ScrollBehavior", + "defaultValue": "\"smooth\"", + "isRequired": false, + "description": "The default scroll behavior used when auto-scrolling the TOC container\nand when scrolling to a heading (via link click or `api.scrollTo`).\nCan be overridden per-call by passing `behavior` to `api.scrollTo`." + }, + "scrollEl": { + "type": "() => HTMLElement | null", + "isRequired": false, + "description": "Function that returns the scroll container element to observe within.\nDefaults to the document/viewport." + }, + "threshold": { + "type": "number | number[]", + "defaultValue": "0", + "isRequired": false, + "description": "The IntersectionObserver threshold. A value of `0` means the heading is\nactive as soon as even one pixel is visible within the root margin area." + } + } + }, + "RootProvider": { + "props": { + "value": { "type": "UseTocReturn", "isRequired": true }, + "asChild": { + "type": "(props: ParentProps<'div'>) => Element", + "isRequired": false, + "description": "Use the provided child element as the default rendered element, combining their props and behavior." + } + } + }, + "Title": { + "props": { + "asChild": { + "type": "(props: ParentProps<'h2'>) => Element", + "isRequired": false, + "description": "Use the provided child element as the default rendered element, combining their props and behavior." + } + } + } +} diff --git a/website/src/content/types/svelte/collection.types.json b/website/src/content/types/svelte/collection.types.json deleted file mode 100644 index 0967ef424b..0000000000 --- a/website/src/content/types/svelte/collection.types.json +++ /dev/null @@ -1 +0,0 @@ -{} diff --git a/website/src/content/types/svelte/date-picker.types.json b/website/src/content/types/svelte/date-picker.types.json index 680a876379..392ad485fc 100644 --- a/website/src/content/types/svelte/date-picker.types.json +++ b/website/src/content/types/svelte/date-picker.types.json @@ -315,7 +315,7 @@ "description": "The time zone to use" }, "translations": { - "type": "IntlTranslations", + "type": "Partial", "isRequired": false, "description": "The localized messages to use." }, diff --git a/website/src/content/types/svelte/factory.types.json b/website/src/content/types/svelte/factory.types.json deleted file mode 100644 index 0967ef424b..0000000000 --- a/website/src/content/types/svelte/factory.types.json +++ /dev/null @@ -1 +0,0 @@ -{} diff --git a/website/src/content/types/svelte/qr-code.types.json b/website/src/content/types/svelte/qr-code.types.json index 27a6b8fc56..e45bc60bd5 100644 --- a/website/src/content/types/svelte/qr-code.types.json +++ b/website/src/content/types/svelte/qr-code.types.json @@ -62,7 +62,7 @@ }, "id": { "type": "string", "isRequired": false, "description": "The unique identifier of the machine." }, "ids": { - "type": "Partial<{ root: string; frame: string }>", + "type": "Partial<{ root: string; frame: string; overlay: string }>", "isRequired": false, "description": "The element ids." }, diff --git a/website/src/content/types/svelte/toc.types.json b/website/src/content/types/svelte/toc.types.json new file mode 100644 index 0000000000..4516d9cce0 --- /dev/null +++ b/website/src/content/types/svelte/toc.types.json @@ -0,0 +1,198 @@ +{ + "Content": { + "props": { + "asChild": { + "type": "Snippet<[PropsFn<'article'>]>", + "isRequired": false, + "description": "Use the provided child element as the default rendered element, combining their props and behavior." + }, + "ref": { "type": "Element", "isRequired": false } + } + }, + "Context": { "props": { "render": { "type": "Snippet<[UseTocContext]>", "isRequired": true } } }, + "Indicator": { + "props": { + "asChild": { + "type": "Snippet<[PropsFn<'div'>]>", + "isRequired": false, + "description": "Use the provided child element as the default rendered element, combining their props and behavior." + }, + "ref": { "type": "Element", "isRequired": false } + } + }, + "Item": { + "props": { + "item": { "type": "TocItem", "isRequired": true, "description": "The TOC item" }, + "asChild": { + "type": "Snippet<[PropsFn<'li'>]>", + "isRequired": false, + "description": "Use the provided child element as the default rendered element, combining their props and behavior." + }, + "ref": { "type": "Element", "isRequired": false } + } + }, + "Link": { + "props": { + "asChild": { + "type": "Snippet<[PropsFn<'a'>]>", + "isRequired": false, + "description": "Use the provided child element as the default rendered element, combining their props and behavior." + }, + "ref": { "type": "Element", "isRequired": false } + } + }, + "List": { + "props": { + "asChild": { + "type": "Snippet<[PropsFn<'ul'>]>", + "isRequired": false, + "description": "Use the provided child element as the default rendered element, combining their props and behavior." + }, + "ref": { "type": "Element", "isRequired": false } + } + }, + "Nav": { + "props": { + "activeIds": { "type": "string[]", "isRequired": false, "description": "The controlled active heading ids." }, + "asChild": { + "type": "Snippet<[PropsFn<'nav'>]>", + "isRequired": false, + "description": "Use the provided child element as the default rendered element, combining their props and behavior." + }, + "autoScroll": { + "type": "boolean", + "defaultValue": "true", + "isRequired": false, + "description": "Whether to auto-scroll the TOC container so the first active item\nis visible when active headings change." + }, + "defaultActiveIds": { + "type": "string[]", + "isRequired": false, + "description": "The default active heading ids when rendered.\nUse when you don't need to control the active headings." + }, + "id": { "type": "string", "isRequired": false, "description": "The unique identifier of the machine." }, + "ids": { + "type": "Partial<{\n root: string\n title: string\n list: string\n item: (value: string) => string\n link: (value: string) => string\n indicator: string\n}>", + "isRequired": false, + "description": "The ids of the elements in the TOC. Useful for composition." + }, + "items": { + "type": "TocItem[]", + "isRequired": false, + "description": "The TOC items with `value` (slug/id) and `depth` (heading level)." + }, + "onActiveChange": { + "type": "(details: ActiveChangeDetails) => void", + "isRequired": false, + "description": "Callback when the active (visible) headings change." + }, + "placement": { "type": "'left' | 'right'", "isRequired": false }, + "ref": { "type": "Element", "isRequired": false }, + "rootMargin": { + "type": "string", + "defaultValue": "\"-20px 0px -40% 0px\"", + "isRequired": false, + "description": "The root margin for the IntersectionObserver.\nControls the effective viewport area for determining active headings." + }, + "scrollBehavior": { + "type": "ScrollBehavior", + "defaultValue": "\"smooth\"", + "isRequired": false, + "description": "The default scroll behavior used when auto-scrolling the TOC container\nand when scrolling to a heading (via link click or `api.scrollTo`).\nCan be overridden per-call by passing `behavior` to `api.scrollTo`." + }, + "scrollEl": { + "type": "() => HTMLElement | null", + "isRequired": false, + "description": "Function that returns the scroll container element to observe within.\nDefaults to the document/viewport." + }, + "threshold": { + "type": "number | number[]", + "defaultValue": "0", + "isRequired": false, + "description": "The IntersectionObserver threshold. A value of `0` means the heading is\nactive as soon as even one pixel is visible within the root margin area." + } + } + }, + "Root": { + "props": { + "items": { + "type": "TocItem[]", + "isRequired": true, + "description": "The TOC items with `value` (slug/id) and `depth` (heading level)." + }, + "activeIds": { "type": "string[]", "isRequired": false, "description": "The controlled active heading ids." }, + "asChild": { + "type": "Snippet<[PropsFn<'div'>]>", + "isRequired": false, + "description": "Use the provided child element as the default rendered element, combining their props and behavior." + }, + "autoScroll": { + "type": "boolean", + "defaultValue": "true", + "isRequired": false, + "description": "Whether to auto-scroll the TOC container so the first active item\nis visible when active headings change." + }, + "defaultActiveIds": { + "type": "string[]", + "isRequired": false, + "description": "The default active heading ids when rendered.\nUse when you don't need to control the active headings." + }, + "id": { "type": "string", "isRequired": false, "description": "The unique identifier of the machine." }, + "ids": { + "type": "Partial<{\n root: string\n title: string\n list: string\n item: (value: string) => string\n link: (value: string) => string\n indicator: string\n}>", + "isRequired": false, + "description": "The ids of the elements in the TOC. Useful for composition." + }, + "onActiveChange": { + "type": "(details: ActiveChangeDetails) => void", + "isRequired": false, + "description": "Callback when the active (visible) headings change." + }, + "ref": { "type": "Element", "isRequired": false }, + "rootMargin": { + "type": "string", + "defaultValue": "\"-20px 0px -40% 0px\"", + "isRequired": false, + "description": "The root margin for the IntersectionObserver.\nControls the effective viewport area for determining active headings." + }, + "scrollBehavior": { + "type": "ScrollBehavior", + "defaultValue": "\"smooth\"", + "isRequired": false, + "description": "The default scroll behavior used when auto-scrolling the TOC container\nand when scrolling to a heading (via link click or `api.scrollTo`).\nCan be overridden per-call by passing `behavior` to `api.scrollTo`." + }, + "scrollEl": { + "type": "() => HTMLElement | null", + "isRequired": false, + "description": "Function that returns the scroll container element to observe within.\nDefaults to the document/viewport." + }, + "threshold": { + "type": "number | number[]", + "defaultValue": "0", + "isRequired": false, + "description": "The IntersectionObserver threshold. A value of `0` means the heading is\nactive as soon as even one pixel is visible within the root margin area." + } + } + }, + "RootProvider": { + "props": { + "value": { "type": "UseTocReturn", "isRequired": true }, + "asChild": { + "type": "Snippet<[PropsFn<'div'>]>", + "isRequired": false, + "description": "Use the provided child element as the default rendered element, combining their props and behavior." + }, + "ref": { "type": "Element", "isRequired": false } + } + }, + "Title": { + "props": { + "asChild": { + "type": "Snippet<[PropsFn<'h2'>]>", + "isRequired": false, + "description": "Use the provided child element as the default rendered element, combining their props and behavior." + }, + "ref": { "type": "Element", "isRequired": false } + } + } +} diff --git a/website/src/content/types/vue/client-only.types.json b/website/src/content/types/vue/client-only.types.json deleted file mode 100644 index 0967ef424b..0000000000 --- a/website/src/content/types/vue/client-only.types.json +++ /dev/null @@ -1 +0,0 @@ -{} diff --git a/website/src/content/types/vue/collection.types.json b/website/src/content/types/vue/collection.types.json deleted file mode 100644 index 0967ef424b..0000000000 --- a/website/src/content/types/vue/collection.types.json +++ /dev/null @@ -1 +0,0 @@ -{} diff --git a/website/src/content/types/vue/toc.types.json b/website/src/content/types/vue/toc.types.json new file mode 100644 index 0000000000..011f27cbb2 --- /dev/null +++ b/website/src/content/types/vue/toc.types.json @@ -0,0 +1,139 @@ +{ + "Content": { + "props": { + "asChild": { + "type": "boolean", + "isRequired": false, + "description": "Use the provided child element as the default rendered element, combining their props and behavior." + } + } + }, + "Indicator": { + "props": { + "asChild": { + "type": "boolean", + "isRequired": false, + "description": "Use the provided child element as the default rendered element, combining their props and behavior." + } + } + }, + "Item": { + "props": { + "item": { "type": "TocItem", "isRequired": true, "description": "The TOC item" }, + "asChild": { + "type": "boolean", + "isRequired": false, + "description": "Use the provided child element as the default rendered element, combining their props and behavior." + } + } + }, + "Link": { + "props": { + "asChild": { + "type": "boolean", + "isRequired": false, + "description": "Use the provided child element as the default rendered element, combining their props and behavior." + } + } + }, + "List": { + "props": { + "asChild": { + "type": "boolean", + "isRequired": false, + "description": "Use the provided child element as the default rendered element, combining their props and behavior." + } + } + }, + "Nav": { + "props": { + "asChild": { + "type": "boolean", + "isRequired": false, + "description": "Use the provided child element as the default rendered element, combining their props and behavior." + }, + "placement": { "type": "'left' | 'right'", "isRequired": false } + } + }, + "Root": { + "emits": { + "activeChange": { + "type": "[details: ActiveChangeDetails]", + "isRequired": true, + "description": "Callback when the active (visible) headings change." + } + }, + "props": { + "items": { + "type": "TocItem[]", + "isRequired": true, + "description": "The TOC items with `value` (slug/id) and `depth` (heading level)." + }, + "activeIds": { "type": "string[]", "isRequired": false, "description": "The controlled active heading ids." }, + "asChild": { + "type": "boolean", + "isRequired": false, + "description": "Use the provided child element as the default rendered element, combining their props and behavior." + }, + "autoScroll": { + "type": "boolean", + "defaultValue": "true", + "isRequired": false, + "description": "Whether to auto-scroll the TOC container so the first active item\nis visible when active headings change." + }, + "defaultActiveIds": { + "type": "string[]", + "isRequired": false, + "description": "The default active heading ids when rendered.\nUse when you don't need to control the active headings." + }, + "id": { "type": "string", "isRequired": false, "description": "The unique identifier of the machine." }, + "ids": { + "type": "Partial<{\n root: string\n title: string\n list: string\n item: (value: string) => string\n link: (value: string) => string\n indicator: string\n}>", + "isRequired": false, + "description": "The ids of the elements in the TOC. Useful for composition." + }, + "rootMargin": { + "type": "string", + "defaultValue": "\"-20px 0px -40% 0px\"", + "isRequired": false, + "description": "The root margin for the IntersectionObserver." + }, + "scrollBehavior": { + "type": "ScrollBehavior", + "defaultValue": "\"smooth\"", + "isRequired": false, + "description": "The scroll behavior for auto-scrolling the TOC container." + }, + "scrollEl": { + "type": "() => HTMLElement | null", + "isRequired": false, + "description": "Function that returns the scroll container element to observe within.\nDefaults to the document/viewport." + }, + "threshold": { + "type": "number | number[]", + "defaultValue": "0", + "isRequired": false, + "description": "The IntersectionObserver threshold." + } + } + }, + "RootProvider": { + "props": { + "value": { "type": "TocApi", "isRequired": true }, + "asChild": { + "type": "boolean", + "isRequired": false, + "description": "Use the provided child element as the default rendered element, combining their props and behavior." + } + } + }, + "Title": { + "props": { + "asChild": { + "type": "boolean", + "isRequired": false, + "description": "Use the provided child element as the default rendered element, combining their props and behavior." + } + } + } +} diff --git a/website/src/demos/index.ts b/website/src/demos/index.ts index 9191ddfacd..a4ed0b33b2 100644 --- a/website/src/demos/index.ts +++ b/website/src/demos/index.ts @@ -53,6 +53,7 @@ export { Demo as Tabs } from './tabs.demo' export { Demo as TagsInput } from './tags-input.demo' export { Demo as Timer } from './timer.demo' export { Demo as Toast } from './toast.demo' +export { Demo as Toc } from './toc.demo' export { Demo as ToggleGroup } from './toggle-group.demo' export { Demo as Toggle } from './toggle.demo' export { Demo as Tooltip } from './tooltip.demo' diff --git a/website/src/demos/toc.demo.tsx b/website/src/demos/toc.demo.tsx new file mode 100644 index 0000000000..c0fae23449 --- /dev/null +++ b/website/src/demos/toc.demo.tsx @@ -0,0 +1,72 @@ +'use client' +import { Toc } from '@ark-ui/react/toc' +import { useRef } from 'react' +import styles from 'styles/toc.module.css' + +const items = [ + { value: 'demo-intro', depth: 2, label: 'Introduction', lines: 5 }, + { value: 'demo-setup', depth: 2, label: 'Getting Started', lines: 5 }, + { value: 'demo-config', depth: 2, label: 'Configuration', lines: 5 }, + { value: 'demo-usage', depth: 2, label: 'Usage', lines: 5 }, + { value: 'demo-conclude', depth: 2, label: 'Conclusion', lines: 5 }, +] + +export const Demo = () => { + const contentRef = useRef(null) + + return ( + contentRef.current} + > + + {({ activeItems }) => ( +
+ +
+ )} +
+ + + {items.map((item) => ( +
+

{item.label}

+
+ {Array.from({ length: item.lines }).map((_, i) => ( +
+ ))} +
+
+ ))} +
+ + + On this page + + {items.map((item) => ( + + + {item.label} + + + ))} + + +
+ ) +} diff --git a/website/src/lib/example-registry.ts b/website/src/lib/example-registry.ts index 8a1b7fd29a..42677e8467 100644 --- a/website/src/lib/example-registry.ts +++ b/website/src/lib/example-registry.ts @@ -550,6 +550,15 @@ import * as Toast_PromiseToast from '@examples/toast/examples/promise-toast' import * as Toast_Types from '@examples/toast/examples/types' import * as Toast_Update from '@examples/toast/examples/update' import * as Toast_VaryingHeight from '@examples/toast/examples/varying-height' +import * as Toc_Basic from '@examples/toc/examples/basic' +import * as Toc_Nested from '@examples/toc/examples/nested' +import * as Toc_RootProvider from '@examples/toc/examples/root-provider' +import * as Toc_WithCollapsible from '@examples/toc/examples/with-collapsible' +import * as Toc_WithHover from '@examples/toc/examples/with-hover' +import * as Toc_WithIndicator from '@examples/toc/examples/with-indicator' +import * as Toc_WithRail from '@examples/toc/examples/with-rail' +import * as Toc_WithSelect from '@examples/toc/examples/with-select' +import * as Toc_WithTreeView from '@examples/toc/examples/with-tree-view' import * as ToggleGroup_Basic from '@examples/toggle-group/examples/basic' import * as ToggleGroup_Controlled from '@examples/toggle-group/examples/controlled' import * as ToggleGroup_Multiple from '@examples/toggle-group/examples/multiple' @@ -1156,6 +1165,15 @@ const exampleModules: Record = { 'toast/types': Toast_Types, 'toast/update': Toast_Update, 'toast/varying-height': Toast_VaryingHeight, + 'toc/basic': Toc_Basic, + 'toc/nested': Toc_Nested, + 'toc/root-provider': Toc_RootProvider, + 'toc/with-collapsible': Toc_WithCollapsible, + 'toc/with-hover': Toc_WithHover, + 'toc/with-indicator': Toc_WithIndicator, + 'toc/with-rail': Toc_WithRail, + 'toc/with-select': Toc_WithSelect, + 'toc/with-tree-view': Toc_WithTreeView, 'toggle-group/basic': ToggleGroup_Basic, 'toggle-group/controlled': ToggleGroup_Controlled, 'toggle-group/multiple': ToggleGroup_Multiple, diff --git a/website/src/lib/sidebar-config.ts b/website/src/lib/sidebar-config.ts index dd1ea7aafa..0782423463 100644 --- a/website/src/lib/sidebar-config.ts +++ b/website/src/lib/sidebar-config.ts @@ -79,6 +79,7 @@ export const sidebarConfig: SidebarGroupConfig[] = [ { id: 'tabs' }, { id: 'tags-input' }, { id: 'timer' }, + { id: 'toc' }, { id: 'toast' }, { id: 'toggle' }, { id: 'toggle-group' }, From c7c33ac51497c5e999e35552a8676db09cdca7b0 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 20 Aug 2026 14:32:58 +0200 Subject: [PATCH 2/5] chore(deps): update changesets/action action to v2 (#3975) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .github/workflows/release.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 983e29842c..657410a0f6 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -35,7 +35,7 @@ jobs: - name: Create Release Pull Request or Publish id: changesets - uses: changesets/action@v1 + uses: changesets/action@v2.1.1 with: version: bun run version publish: bun run release From 66e258e546046cd4807498fe649fd798d5aa5444 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 20 Aug 2026 14:33:02 +0200 Subject: [PATCH 3/5] chore(deps): update dependency @changesets/cli to v3 (#3976) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- bun.lock | 268 ++++++++++++++------------------------------------- package.json | 2 +- 2 files changed, 74 insertions(+), 196 deletions(-) diff --git a/bun.lock b/bun.lock index 28d826d983..bb21c54cf1 100644 --- a/bun.lock +++ b/bun.lock @@ -6,7 +6,7 @@ "name": "root", "devDependencies": { "@biomejs/biome": "2.5.8", - "@changesets/cli": "2.31.1", + "@changesets/cli": "3.0.1", "@shikijs/langs": "4.4.3", "@shikijs/themes": "4.4.3", "@types/bun": "1.3.14", @@ -723,43 +723,39 @@ "@chakra-ui/better-auth": ["@chakra-ui/better-auth@0.3.0", "", { "dependencies": { "effect": "^3.17.13", "zod": "^4.1.5" }, "peerDependencies": { "better-auth": ">=1.3.0" } }, "sha512-KoUia4yPIL3WBLtFrF4M5lcMjlzrETX0nJGUNEaRIxzErZ1qBxWzWYNF99n1S+I6TDkKy5flFkDnJ0RrMPC3Dg=="], - "@changesets/apply-release-plan": ["@changesets/apply-release-plan@7.1.1", "", { "dependencies": { "@changesets/config": "^3.1.4", "@changesets/get-version-range-type": "^0.4.0", "@changesets/git": "^3.0.4", "@changesets/should-skip-package": "^0.1.2", "@changesets/types": "^6.1.0", "@manypkg/get-packages": "^1.1.3", "detect-indent": "^6.0.0", "fs-extra": "^7.0.1", "lodash.startcase": "^4.4.0", "outdent": "^0.5.0", "prettier": "^2.7.1", "resolve-from": "^5.0.0", "semver": "^7.5.3" } }, "sha512-9qPCm/rLx/xoOFXIHGB229+4GOL76S4MC+7tyOuTsR6+1jYlfFDQORdvwR5hDA6y4FL2BPt3qpbcQIS+dW85LA=="], + "@changesets/apply-release-plan": ["@changesets/apply-release-plan@8.0.0", "", { "dependencies": { "@changesets/config": "^4.0.0", "@changesets/format": "^0.1.1", "@changesets/git": "^4.0.0", "@changesets/should-skip-package": "^1.0.0", "@changesets/types": "^7.0.0", "import-meta-resolve": "^4.2.0", "jsonc-parser": "^3.3.1", "semver": "^7.8.1" } }, "sha512-kUd2pbf1w5/AYmBMb0Tt+rkIPCjFJdT0SZMrkOjJT/WV/QbtmvkyB5jkV0oaNPheavprZk+SfUiozUti7TIL2w=="], - "@changesets/assemble-release-plan": ["@changesets/assemble-release-plan@6.0.10", "", { "dependencies": { "@changesets/errors": "^0.2.0", "@changesets/get-dependents-graph": "^2.1.4", "@changesets/should-skip-package": "^0.1.2", "@changesets/types": "^6.1.0", "@manypkg/get-packages": "^1.1.3", "semver": "^7.5.3" } }, "sha512-rSDcqdJ9KbVyjpBIuCidhvZNIiVt1XaIYp73ycVQRIA5n/j6wQaEk0ChRLMUQ1vkxZe51PTQ9OIhbg6HQMW45A=="], + "@changesets/assemble-release-plan": ["@changesets/assemble-release-plan@7.0.0", "", { "dependencies": { "@changesets/errors": "^1.0.0", "@changesets/get-dependents-graph": "^3.0.0", "@changesets/should-skip-package": "^1.0.0", "@changesets/types": "^7.0.0", "semver": "^7.8.1" } }, "sha512-oEW8BxdA604kGGtDSCiHr5w9Tv4UWe9I2k61IBNZzCOE1kbYaJj4v+lFQNgcEZFkUc2pV/+hASErGDvpJOZCTg=="], - "@changesets/changelog-git": ["@changesets/changelog-git@0.2.1", "", { "dependencies": { "@changesets/types": "^6.1.0" } }, "sha512-x/xEleCFLH28c3bQeQIyeZf8lFXyDFVn1SgcBiR2Tw/r4IAWlk1fzxCEZ6NxQAjF2Nwtczoen3OA2qR+UawQ8Q=="], + "@changesets/changelog-git": ["@changesets/changelog-git@1.0.0", "", { "dependencies": { "@changesets/types": "^7.0.0" } }, "sha512-3Dst2Ime2Op5nd4XmWJLPIgp11ZFqJqSkVug9izK6TDcIV4YlhPS4ECbEVR+eGI0bk0r1ItogD4j2Oli87bJrA=="], - "@changesets/cli": ["@changesets/cli@2.31.1", "", { "dependencies": { "@changesets/apply-release-plan": "^7.1.1", "@changesets/assemble-release-plan": "^6.0.10", "@changesets/changelog-git": "^0.2.1", "@changesets/config": "^3.1.4", "@changesets/errors": "^0.2.0", "@changesets/get-dependents-graph": "^2.1.4", "@changesets/get-release-plan": "^4.0.16", "@changesets/git": "^3.0.4", "@changesets/logger": "^0.1.1", "@changesets/pre": "^2.0.2", "@changesets/read": "^0.6.7", "@changesets/should-skip-package": "^0.1.2", "@changesets/types": "^6.1.0", "@changesets/write": "^0.4.0", "@inquirer/external-editor": "^1.0.2", "@manypkg/get-packages": "^1.1.3", "ansi-colors": "^4.1.3", "enquirer": "^2.4.1", "fs-extra": "^7.0.1", "mri": "^1.2.0", "package-manager-detector": "^0.2.0", "picocolors": "^1.1.0", "resolve-from": "^5.0.0", "semver": "^7.5.3", "spawndamnit": "^3.0.1", "term-size": "^2.1.0" }, "bin": { "changeset": "bin.js" } }, "sha512-uO05WTcRBwuVOJVSW8Cmpqw6q0WDL53ajGCMyszutvOe5toOnunbpM4jZzf+qxBOz7i0AzopZ8diBuewjmF40w=="], + "@changesets/cli": ["@changesets/cli@3.0.1", "", { "dependencies": { "@changesets/apply-release-plan": "^8.0.0", "@changesets/assemble-release-plan": "^7.0.0", "@changesets/changelog-git": "^1.0.0", "@changesets/config": "^4.0.0", "@changesets/errors": "^1.0.0", "@changesets/get-dependents-graph": "^3.0.0", "@changesets/git": "^4.0.0", "@changesets/pre": "^3.0.0", "@changesets/read": "^1.0.0", "@changesets/should-skip-package": "^1.0.0", "@changesets/types": "^7.0.0", "@changesets/write": "^1.0.1", "@clack/prompts": "^1.7.0", "@manypkg/get-packages": "^3.1.0", "@pnpm/deps.graph-sequencer": "^1100.0.1", "cac": "^7.0.0", "import-meta-resolve": "^4.2.0", "launch-editor": "^2.14.1", "package-manager-detector": "^1.6.0", "semver": "^7.8.1", "tinyexec": "^1.3.0" }, "bin": { "changeset": "bin.js" } }, "sha512-3IVpRSgiKDj2aRbBHKtWTXSRH2/iR3bWxau9iQUoEsZjDhRIj9nhl90k7FWMxZAJvLgJBbgMq8+qS0xQsenYsQ=="], - "@changesets/config": ["@changesets/config@3.1.4", "", { "dependencies": { "@changesets/errors": "^0.2.0", "@changesets/get-dependents-graph": "^2.1.4", "@changesets/logger": "^0.1.1", "@changesets/should-skip-package": "^0.1.2", "@changesets/types": "^6.1.0", "@manypkg/get-packages": "^1.1.3", "fs-extra": "^7.0.1", "micromatch": "^4.0.8" } }, "sha512-pf0bvD/v6WI2cRlZ6hzpjtZdSlXDXMAJ+Iz7xfFzV4ZxJ8OGGAON+1qYc99ZPrijnt4xp3VGG7eNvAOGS24V1Q=="], + "@changesets/config": ["@changesets/config@4.0.0", "", { "dependencies": { "@changesets/get-dependents-graph": "^3.0.0", "@changesets/should-skip-package": "^1.0.0", "@changesets/types": "^7.0.0", "@manypkg/get-packages": "^3.1.0", "picomatch": "^4.0.4" } }, "sha512-mw95/YrkOuhZZxfnVAA4bSXOFUi+KlhzOBTM8C4x777NhUU6HWIl9Z+K+nME+E4PVsv5NQVQwTfiHihAS1A/ow=="], - "@changesets/errors": ["@changesets/errors@0.2.0", "", { "dependencies": { "extendable-error": "^0.1.5" } }, "sha512-6BLOQUscTpZeGljvyQXlWOItQyU71kCdGz7Pi8H8zdw6BI0g3m43iL4xKUVPWtG+qrrL9DTjpdn8eYuCQSRpow=="], + "@changesets/errors": ["@changesets/errors@1.0.0", "", {}, "sha512-ElN/mEzn6zmETgjwf5MclCMa9ef59sAR0lfO8VSYIsiRvbC2FbLB/92EoYw10Sl0kGixxHFiJZUSv7dA+YpR8g=="], - "@changesets/get-dependents-graph": ["@changesets/get-dependents-graph@2.1.4", "", { "dependencies": { "@changesets/types": "^6.1.0", "@manypkg/get-packages": "^1.1.3", "picocolors": "^1.1.0", "semver": "^7.5.3" } }, "sha512-ZsS00x6WvmHq3sQv8oCMwL0f/z3wbXCVuSVTJwCnnmbC/iBdNJGFx1EcbMG4PC6sXRyH69liM4A2WKXzn/kRPg=="], + "@changesets/format": ["@changesets/format@0.1.2", "", { "dependencies": { "package-manager-detector": "^1.8.0", "tinyexec": "^1.3.0" } }, "sha512-Caez5XtNXCFS/G5bwyav3wuXL0tMxVd2ZGbaumWbzN08tyzO21asCw7JZhNtVsAZDCvDRUzZN+Iit9SyRITSYA=="], - "@changesets/get-release-plan": ["@changesets/get-release-plan@4.0.16", "", { "dependencies": { "@changesets/assemble-release-plan": "^6.0.10", "@changesets/config": "^3.1.4", "@changesets/pre": "^2.0.2", "@changesets/read": "^0.6.7", "@changesets/types": "^6.1.0", "@manypkg/get-packages": "^1.1.3" } }, "sha512-2K5Om6CrMPm45rtvckfzWo7e9jOVCKLCnXia5eUPaURH7/LWzri7pK1TycdzAuAtehLkW7VPbWLCSExTHmiI6g=="], + "@changesets/get-dependents-graph": ["@changesets/get-dependents-graph@3.0.0", "", { "dependencies": { "@changesets/types": "^7.0.0", "semver": "^7.8.1" } }, "sha512-ji/t5wFA1zREKXRUePE6Qi+Qu2UgxCeSSGQrphezwvQZrp49B7sJ+8+wvM0tA7zPeSxYKCojDy3WWgrl+s+awg=="], - "@changesets/get-version-range-type": ["@changesets/get-version-range-type@0.4.0", "", {}, "sha512-hwawtob9DryoGTpixy1D3ZXbGgJu1Rhr+ySH2PvTLHvkZuQ7sRT4oQwMh0hbqZH1weAooedEjRsbrWcGLCeyVQ=="], + "@changesets/git": ["@changesets/git@4.0.0", "", { "dependencies": { "@changesets/errors": "^1.0.0", "@changesets/types": "^7.0.0", "@manypkg/get-packages": "^3.1.0", "picomatch": "^4.0.4", "tinyexec": "^1.3.0" } }, "sha512-uIEswpPUgzBBqrC0qg13byNaPorzhf05LE2T+gRizEKCXvMsJC6NPJp5iNDSV/gYj4Viqh09UiOF5E7XWeH5lQ=="], - "@changesets/git": ["@changesets/git@3.0.4", "", { "dependencies": { "@changesets/errors": "^0.2.0", "@manypkg/get-packages": "^1.1.3", "is-subdir": "^1.1.1", "micromatch": "^4.0.8", "spawndamnit": "^3.0.1" } }, "sha512-BXANzRFkX+XcC1q/d27NKvlJ1yf7PSAgi8JG6dt8EfbHFHi4neau7mufcSca5zRhwOL8j9s6EqsxmT+s+/E6Sw=="], + "@changesets/parse": ["@changesets/parse@1.0.0", "", { "dependencies": { "@changesets/types": "^7.0.0", "yaml": "^2.9.0" } }, "sha512-P0iaMb9p9CRYZiTgAllEIF9AUMQHIy1G72tKlcIqJp61icZSsKQNiOPdxAMZG8m/DvZwt/oz5xEbTpike//dWg=="], - "@changesets/logger": ["@changesets/logger@0.1.1", "", { "dependencies": { "picocolors": "^1.1.0" } }, "sha512-OQtR36ZlnuTxKqoW4Sv6x5YIhOmClRd5pWsjZsddYxpWs517R0HkyiefQPIytCVh4ZcC5x9XaG8KTdd5iRQUfg=="], + "@changesets/pre": ["@changesets/pre@3.0.0", "", { "dependencies": { "@changesets/errors": "^1.0.0", "@changesets/types": "^7.0.0", "@manypkg/get-packages": "^3.1.0" } }, "sha512-Zm/6YliV/a2oeWTqHJf6KxLrQwgcK1i/BRDl2m0EKZvbnxV5fG9QRhwJJGshjsZTUTS6dkfURQ2K6aAvgNw/3Q=="], - "@changesets/parse": ["@changesets/parse@0.4.3", "", { "dependencies": { "@changesets/types": "^6.1.0", "js-yaml": "^4.1.1" } }, "sha512-ZDmNc53+dXdWEv7fqIUSgRQOLYoUom5Z40gmLgmATmYR9NbL6FJJHwakcCpzaeCy+1D0m0n7mT4jj2B/MQPl7A=="], + "@changesets/read": ["@changesets/read@1.0.0", "", { "dependencies": { "@changesets/git": "^4.0.0", "@changesets/parse": "^1.0.0", "@changesets/types": "^7.0.0" } }, "sha512-8TdE2PwG6yArPt5Ozej83Z6iHz1G8BDBKvIEKZ455MccR4K3GNbLR2XqjBxa+5yLFnEd3xAOPXYboBg1pt8stQ=="], - "@changesets/pre": ["@changesets/pre@2.0.2", "", { "dependencies": { "@changesets/errors": "^0.2.0", "@changesets/types": "^6.1.0", "@manypkg/get-packages": "^1.1.3", "fs-extra": "^7.0.1" } }, "sha512-HaL/gEyFVvkf9KFg6484wR9s0qjAXlZ8qWPDkTyKF6+zqjBe/I2mygg3MbpZ++hdi0ToqNUF8cjj7fBy0dg8Ug=="], + "@changesets/should-skip-package": ["@changesets/should-skip-package@1.0.0", "", { "dependencies": { "@changesets/types": "^7.0.0" } }, "sha512-pwqoJmbONn1XgXmZXPEExgAaT+HdZLjALFTDgIm+PnS5KeO2nLtzA2/Q+4aMFY14kFMuXKG30MObhvDzWgzDgg=="], - "@changesets/read": ["@changesets/read@0.6.7", "", { "dependencies": { "@changesets/git": "^3.0.4", "@changesets/logger": "^0.1.1", "@changesets/parse": "^0.4.3", "@changesets/types": "^6.1.0", "fs-extra": "^7.0.1", "p-filter": "^2.1.0", "picocolors": "^1.1.0" } }, "sha512-D1G4AUYGrBEk8vj8MGwf75k9GpN6XL3wg8i42P2jZZwFLXnlr2Pn7r9yuQNbaMCarP7ZQWNJbV6XLeysAIMhTA=="], + "@changesets/types": ["@changesets/types@7.0.0", "", {}, "sha512-c5GoiQyt3pxiXjrWSNoP8/GRf4kG+VnKzovx1OQM8dYYALlSwgedmkPmJ+ZqGxqwg9D3Bkj85Uo4KLd5BN3A0w=="], - "@changesets/should-skip-package": ["@changesets/should-skip-package@0.1.2", "", { "dependencies": { "@changesets/types": "^6.1.0", "@manypkg/get-packages": "^1.1.3" } }, "sha512-qAK/WrqWLNCP22UDdBTMPH5f41elVDlsNyat180A33dWxuUDyNpg6fPi/FyTZwRriVjg0L8gnjJn2F9XAoF0qw=="], + "@changesets/write": ["@changesets/write@1.0.1", "", { "dependencies": { "@changesets/format": "^0.1.1", "@changesets/types": "^7.0.0", "human-id": "^4.2.0" } }, "sha512-q/ThtP9gcnEP6xlv7LrY26C2mHqdGBti/MmOVngt/M/oIGYkssmQGxPK9WzBNt2juVcH/vml2WQ+ra8LXYOTaA=="], - "@changesets/types": ["@changesets/types@6.1.0", "", {}, "sha512-rKQcJ+o1nKNgeoYRHKOS07tAMNd3YSN0uHaJOZYjBAgxfV7TUE7JE+z4BzZdQwb5hKaYbayKN5KrYV7ODb2rAA=="], + "@clack/core": ["@clack/core@1.4.3", "", { "dependencies": { "fast-wrap-ansi": "^0.2.0", "sisteransi": "^1.0.5" } }, "sha512-/kr3UWNtdJfxZtPgDqUOmG2pvwlmcLGheex5yiZKdwbzZJxhV+HMNR9QNmyY5cGwTNV6LrR7Jtp+KjhUAP1qBQ=="], - "@changesets/write": ["@changesets/write@0.4.0", "", { "dependencies": { "@changesets/types": "^6.1.0", "fs-extra": "^7.0.1", "human-id": "^4.1.1", "prettier": "^2.7.1" } }, "sha512-CdTLvIOPiCNuH71pyDu3rA+Q0n65cmAbXnwWH84rKGiFumFzkmHNT8KHTMEchcxN+Kl8I54xGUhJ7l3E7X396Q=="], - - "@clack/core": ["@clack/core@1.4.2", "", { "dependencies": { "fast-wrap-ansi": "^0.2.0", "sisteransi": "^1.0.5" } }, "sha512-0Ty/1Gfm+Kb07sXcuESjyKfwEhSy4Ns1AgeEisHb/bDY5fWme0tTeTkU14T1Gmcs17YIjB/teiDe4uaCghbYqQ=="], - - "@clack/prompts": ["@clack/prompts@1.6.0", "", { "dependencies": { "@clack/core": "1.4.2", "fast-string-width": "^3.0.2", "fast-wrap-ansi": "^0.2.0", "sisteransi": "^1.0.5" } }, "sha512-EYlRokl8szrP9Z25qT5aepMdBjzBvHF9ZEhzIiUBc9guz/T31EqRgvD0QSgZcpE93xiwrr+OkB4nz0BZyF6fSA=="], + "@clack/prompts": ["@clack/prompts@1.7.0", "", { "dependencies": { "@clack/core": "1.4.3", "fast-string-width": "^3.0.2", "fast-wrap-ansi": "^0.2.0", "sisteransi": "^1.0.5" } }, "sha512-y7/yvZ2TPAnR9+jnc00klvNNLkJiXFFrQA/hlLCcxA9a2A4zQIOimyFQ9XfwYKiGD1fb5GY8vbKIIgO8d5Tb2A=="], "@cloudflare/kv-asset-handler": ["@cloudflare/kv-asset-handler@0.4.2", "", {}, "sha512-SIOD2DxrRRwQ+jgzlXCqoEFiKOFqaPjhnNTGKXSRLvp1HiOvapLaFG2kEr9dYQTYe8rKrd9uvDUzmAITeNyaHQ=="], @@ -925,8 +921,6 @@ "@img/sharp-win32-x64": ["@img/sharp-win32-x64@0.34.5", "", { "os": "win32", "cpu": "x64" }, "sha512-+29YMsqY2/9eFEiW93eqWnuLcWcufowXewwSNIT6UwZdUUCrM3oFjMWH/Z6/TMmb4hlFenmfAVbpWeup2jryCw=="], - "@inquirer/external-editor": ["@inquirer/external-editor@1.0.3", "", { "dependencies": { "chardet": "^2.1.1", "iconv-lite": "^0.7.0" }, "peerDependencies": { "@types/node": ">=18" }, "optionalPeers": ["@types/node"] }, "sha512-RWbSrDiYmO4LbejWY7ttpxczuwQyZLBUyygsA9Nsv95hpzUWwnNTVQmAq3xuh7vNwCp07UTmE5i11XAEExx4RA=="], - "@internationalized/date": ["@internationalized/date@3.12.3", "", { "dependencies": { "@swc/helpers": "^0.5.0" } }, "sha512-fuLX+3ZKLsxI73y8b01EG/WjHb6gE6weCqlfawPO27kBWGMh9G1yH6Csv1uU7/cac9H2GHmOMt6CjmuQ1aia4Q=="], "@internationalized/number": ["@internationalized/number@3.6.7", "", { "dependencies": { "@swc/helpers": "^0.5.0" } }, "sha512-3ji1fcrT+FPAK86UqEhB/psHixYo6niWPJtt7+qRaYFynt/BaJG8GhAPimtWUpEiVSTq8ZM8L5psMxGquiB/Vg=="], @@ -959,9 +953,11 @@ "@kwsites/promise-deferred": ["@kwsites/promise-deferred@1.1.1", "", {}, "sha512-GaHYm+c0O9MjZRu0ongGBRbinu8gVAMd2UZjji6jVmqKtZluZnptXGWhz1E8j8D2HJ3f/yMxKAUC0b+57wncIw=="], - "@manypkg/find-root": ["@manypkg/find-root@1.1.0", "", { "dependencies": { "@babel/runtime": "^7.5.5", "@types/node": "^12.7.1", "find-up": "^4.1.0", "fs-extra": "^8.1.0" } }, "sha512-mki5uBvhHzO8kYYix/WRy2WX8S3B5wdVSc9D6KcU5lQNglP2yt58/VfLuAK49glRXChosY8ap2oJ1qgma3GUVA=="], + "@manypkg/find-root": ["@manypkg/find-root@3.1.0", "", { "dependencies": { "@manypkg/tools": "^2.1.0" } }, "sha512-BcSqCyKhBVZ5YkSzOiheMCV41kqAFptW6xGqYSTjkVTl9XQpr+pqHhwgGCOHQtjDCv7Is6EFyA14Sm5GVbVABA=="], + + "@manypkg/get-packages": ["@manypkg/get-packages@3.1.0", "", { "dependencies": { "@manypkg/find-root": "^3.1.0", "@manypkg/tools": "^2.1.0" } }, "sha512-0TbBVyvPrP7xGYBI/cP8UP+yl/z+HtbTttAD7FMAJgn/kXOTwh5/60TsqP9ZYY710forNfyV0N8P/IE/ujGZJg=="], - "@manypkg/get-packages": ["@manypkg/get-packages@1.1.3", "", { "dependencies": { "@babel/runtime": "^7.5.5", "@changesets/types": "^4.0.1", "@manypkg/find-root": "^1.1.0", "fs-extra": "^8.1.0", "globby": "^11.0.0", "read-yaml-file": "^1.1.0" } }, "sha512-fo+QhuU3qE/2TQMQmbVMqaQ6EWbMhi4ABWP+O4AM1NqPBuy0OrApV5LO6BrrgnhtAHS2NH6RrVk9OL181tTi8A=="], + "@manypkg/tools": ["@manypkg/tools@2.1.2", "", { "dependencies": { "jju": "^1.4.0", "tinyglobby": "^0.2.13", "yaml": "^2.9.0" } }, "sha512-6QEf6yqFbETdwGITKq57aYoPfX/3K8XFNwsAlx0C1M7o8cb79sv1M3w+tWuWvIcSbNqrLF7OD7YpZMVVz335hQ=="], "@mapbox/node-pre-gyp": ["@mapbox/node-pre-gyp@2.0.3", "", { "dependencies": { "consola": "^3.2.3", "detect-libc": "^2.0.0", "https-proxy-agent": "^7.0.5", "node-fetch": "^2.6.7", "nopt": "^8.0.0", "semver": "^7.5.3", "tar": "^7.4.0" }, "bin": { "node-pre-gyp": "bin/node-pre-gyp" } }, "sha512-uwPAhccfFJlsfCxMYTwOdVfOz3xqyj8xYL3zJj8f0pb30tLohnnFPhLuqp4/qoEz8sNxe4SESZedcBojRefIzg=="], @@ -1241,6 +1237,8 @@ "@pnpm/constants": ["@pnpm/constants@6.1.0", "", {}, "sha512-L6AiU3OXv9kjKGTJN9j8n1TeJGDcLX9atQlZvAkthlvbXjvKc5SKNWESc/eXhr5nEfuMWhQhiKHDJCpYejmeCQ=="], + "@pnpm/deps.graph-sequencer": ["@pnpm/deps.graph-sequencer@1100.0.1", "", {}, "sha512-pOr5+q1fLYKwFN3LAJuGZEnfXDcQ73zqgDHMtGy+K+uIoUqyY+6MeDCWFwfu+4EFuq76I5EPFofoNAI+Bmmq4A=="], + "@pnpm/error": ["@pnpm/error@4.0.0", "", { "dependencies": { "@pnpm/constants": "6.1.0" } }, "sha512-NI4DFCMF6xb1SA0bZiiV5KrMCaJM2QmPJFC6p78FXujn7FpiRSWhT9r032wpuQumsl7DEmN4s3wl/P8TA+bL8w=="], "@pnpm/graceful-fs": ["@pnpm/graceful-fs@2.0.0", "", { "dependencies": { "graceful-fs": "^4.2.6" } }, "sha512-ogUZCGf0/UILZt6d8PsO4gA4pXh7f0BumXeFkcCe4AQ65PXPKfAkHC0C30Lheh2EgFOpLZm3twDP1Eiww18gew=="], @@ -1997,8 +1995,6 @@ "array-buffer-byte-length": ["array-buffer-byte-length@1.0.2", "", { "dependencies": { "call-bound": "^1.0.3", "is-array-buffer": "^3.0.5" } }, "sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw=="], - "array-union": ["array-union@2.1.0", "", {}, "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw=="], - "asap": ["asap@2.0.6", "", {}, "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA=="], "assert-never": ["assert-never@1.4.0", "", {}, "sha512-5oJg84os6NMQNl27T9LnZkvvqzvAnHu03ShCnoj6bsJwS7L8AO4lf+C/XjK/nvzEqQB744moC6V128RucQd1jA=="], @@ -2057,8 +2053,6 @@ "better-call": ["better-call@1.1.8", "", { "dependencies": { "@better-auth/utils": "^0.3.0", "@better-fetch/fetch": "^1.1.4", "rou3": "^0.7.10", "set-cookie-parser": "^2.7.1" }, "peerDependencies": { "zod": "^4.0.0" }, "optionalPeers": ["zod"] }, "sha512-XMQ2rs6FNXasGNfMjzbyroSwKwYbZ/T3IxruSS6U2MJRsSYh3wYtG3o6H00ZlKZ/C/UPOAD97tqgQJNsxyeTXw=="], - "better-path-resolve": ["better-path-resolve@1.0.0", "", { "dependencies": { "is-windows": "^1.0.0" } }, "sha512-pbnl5XzGBdrFU/wT4jqmJVPn2B6UHPBOhzMQkY/SPUPB6QtUXtmBHBIwCbXJol93mOpGMnQyP/+BB19q04xj7g=="], - "bidi-js": ["bidi-js@1.0.3", "", { "dependencies": { "require-from-string": "^2.0.2" } }, "sha512-RKshQI1R3YQ+n9YJz2QQ147P66ELpa1FQEg20Dk8oW9t2KgLbpDLLp9aGZ7y8WHSshDknG0bknqGw5/tyCs5tw=="], "binary-extensions": ["binary-extensions@2.3.0", "", {}, "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw=="], @@ -2097,7 +2091,7 @@ "c12": ["c12@3.3.4", "", { "dependencies": { "chokidar": "^5.0.0", "confbox": "^0.2.4", "defu": "^6.1.6", "dotenv": "^17.3.1", "exsolve": "^1.0.8", "giget": "^3.2.0", "jiti": "^2.6.1", "ohash": "^2.0.11", "pathe": "^2.0.3", "perfect-debounce": "^2.1.0", "pkg-types": "^2.3.0", "rc9": "^3.0.1" }, "peerDependencies": { "magicast": "*" }, "optionalPeers": ["magicast"] }, "sha512-cM0ApFQSBXuourJejzwv/AuPRvAxordTyParRVcHjjtXirtkzM0uK2L9TTn9s0cXZbG7E55jCivRQzoxYmRAlA=="], - "cac": ["cac@6.7.14", "", {}, "sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ=="], + "cac": ["cac@7.0.0", "", {}, "sha512-tixWYgm5ZoOD+3g6UTea91eow5z6AAHaho3g0V9CNSNb45gM8SmflpAc+GRd1InC4AqN/07Unrgp56Y94N9hJQ=="], "call-bind": ["call-bind@1.0.9", "", { "dependencies": { "call-bind-apply-helpers": "^1.0.2", "es-define-property": "^1.0.1", "get-intrinsic": "^1.3.0", "set-function-length": "^1.2.2" } }, "sha512-a/hy+pNsFUTR+Iz8TCJvXudKVLAnz/DyeSUo10I5yvFDQJBFU2s9uqQpoSrJlroHUKoKqzg+epxyP9lqFdzfBQ=="], @@ -2131,8 +2125,6 @@ "character-reference-invalid": ["character-reference-invalid@2.0.1", "", {}, "sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw=="], - "chardet": ["chardet@2.2.0", "", {}, "sha512-rddelWYNPRrXq6PtNEN2S3f6t9ILzvqaN5pVgi4kqt9jHQaXIial9PznB5iSPVlQSLNaaH22ItWz3EJtQ10+OA=="], - "check-error": ["check-error@2.1.3", "", {}, "sha512-PAJdDJusoxnwm1VwW07VWwUN1sl7smmC3OKggvndJFadxxDRyFJBX/ggnu/KE4kQAB7a3Dp8f/YXC1FlUprWmA=="], "check-password-strength": ["check-password-strength@3.0.0", "", { "dependencies": { "escape-string-regexp": "^5.0.0" } }, "sha512-XIBvWpb7/RI2DO05tMixE4WbFFvEC7ls/jr1VSrWgXvlCmdiH2fsdkixG0cNGs1uIXwoSqJ75T3s9H/TlJV6Cw=="], @@ -2291,8 +2283,6 @@ "destroy": ["destroy@1.2.0", "", {}, "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg=="], - "detect-indent": ["detect-indent@6.1.0", "", {}, "sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA=="], - "detect-libc": ["detect-libc@2.1.2", "", {}, "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ=="], "devalue": ["devalue@5.9.0", "", {}, "sha512-RWrqdArjvPbsATEhOPUo6Wndc/iWnkWKlhIrdlF3zMMYo/c3CVtoaVAyLtWxz5h8nSlkHzxnzV2uLydPXmtF+A=="], @@ -2303,8 +2293,6 @@ "diff": ["diff@8.0.4", "", {}, "sha512-DPi0FmjiSU5EvQV0++GFDOJ9ASQUVFh5kD+OzOnYdi7n3Wpm9hWWGfB/O2blfHcMVTL5WkQXSnRiK9makhrcnw=="], - "dir-glob": ["dir-glob@3.0.1", "", { "dependencies": { "path-type": "^4.0.0" } }, "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA=="], - "dlv": ["dlv@1.1.3", "", {}, "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA=="], "doctrine": ["doctrine@3.0.0", "", { "dependencies": { "esutils": "^2.0.2" } }, "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w=="], @@ -2353,8 +2341,6 @@ "end-of-stream": ["end-of-stream@1.1.0", "", { "dependencies": { "once": "~1.3.0" } }, "sha512-EoulkdKF/1xa92q25PbjuDcgJ9RDHYU2Rs3SCIvs2/dSQ3BpmxneNHmA/M7fe60M3PrV7nNGTTNbkK62l6vXiQ=="], - "enquirer": ["enquirer@2.4.1", "", { "dependencies": { "ansi-colors": "^4.1.1", "strip-ansi": "^6.0.1" } }, "sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ=="], - "entities": ["entities@7.0.1", "", {}, "sha512-TWrgLOFUQTH994YUyl1yT4uyavY5nNB5muff+RtWaqNVCAK408b5ZnnbNAUEWLTCpum9w6arT70i1XdQ4UeOPA=="], "error-ex": ["error-ex@1.3.4", "", { "dependencies": { "is-arrayish": "^0.2.1" } }, "sha512-sqQamAnR14VgCr1A618A3sGrygcpK+HEbenA/HiEAkkUwcZIIB/tgWqHFxWgOyDh4nB4JCRimh79dR5Ywc9MDQ=="], @@ -2441,8 +2427,6 @@ "extend": ["extend@3.0.2", "", {}, "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g=="], - "extendable-error": ["extendable-error@0.1.7", "", {}, "sha512-UOiS2in6/Q0FK0R0q6UY9vYpQ21mr/Qn1KOnte7vsACuNJf514WvCCUHSRCPcgjPT2bAhNIJdlE6bVap1GKmeg=="], - "fast-check": ["fast-check@3.23.2", "", { "dependencies": { "pure-rand": "^6.1.0" } }, "sha512-h5+1OzzfCC3Ef7VbtKdcv7zsstUQwUDlYpUTvjeUsJAssPgLn7QzbboPtL5ro04Mq0rPOsMzl7q5hIbRs2wD1A=="], "fast-deep-equal": ["fast-deep-equal@3.1.3", "", {}, "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q=="], @@ -2627,6 +2611,8 @@ "import-fresh": ["import-fresh@3.3.1", "", { "dependencies": { "parent-module": "^1.0.0", "resolve-from": "^4.0.0" } }, "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ=="], + "import-meta-resolve": ["import-meta-resolve@4.2.0", "", {}, "sha512-Iqv2fzaTQN28s/FwZAoFq0ZSs/7hMAHJVX+w8PZl3cY19Pxk6jFFalxQoIfW2826i/fDLXv8IiEZRIT0lDuWcg=="], + "impound": ["impound@1.1.7", "", { "dependencies": { "@jridgewell/trace-mapping": "^0.3.31", "es-module-lexer": "^2.0.0", "pathe": "^2.0.3", "unplugin": "^3.0.0", "unplugin-utils": "^0.3.1" } }, "sha512-v/7sJ+2BX17U5VV9J1H72ExlRtfGoieRpYZG9DTos6gtCbB65C1l0CPehXCXq9phYZn6viphV5XayyZFHi85zg=="], "imurmurhash": ["imurmurhash@0.1.4", "", {}, "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA=="], @@ -2727,8 +2713,6 @@ "is-string": ["is-string@1.1.1", "", { "dependencies": { "call-bound": "^1.0.3", "has-tostringtag": "^1.0.2" } }, "sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA=="], - "is-subdir": ["is-subdir@1.2.0", "", { "dependencies": { "better-path-resolve": "1.0.0" } }, "sha512-2AT6j+gXe/1ueqbW6fLZJiIw3F8iXGJtt0yDrZaBhAZEG1raiTxKWU+IPqMCzQAXOUCKdA4UDMgacKH25XG2Cw=="], - "is-symbol": ["is-symbol@1.1.1", "", { "dependencies": { "call-bound": "^1.0.2", "has-symbols": "^1.1.0", "safe-regex-test": "^1.1.0" } }, "sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w=="], "is-typedarray": ["is-typedarray@1.0.0", "", {}, "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA=="], @@ -2761,6 +2745,8 @@ "jiti": ["jiti@2.7.0", "", { "bin": { "jiti": "lib/jiti-cli.mjs" } }, "sha512-AC/7JofJvZGrrneWNaEnJeOLUx+JlGt7tNa0wZiRPT4MY1wmfKjt2+6O2p2uz2+skll8OZZmJMNqeke7kKbNgQ=="], + "jju": ["jju@1.4.0", "", {}, "sha512-8wb9Yw966OSxApiCt0K3yNJL8pnNeIv+OEq2YMidz4FKP6nonSRoOXc80iXY4JaN2FC11B9qsNmDsm+ZOfMROA=="], + "jose": ["jose@5.9.6", "", {}, "sha512-AMlnetc9+CV9asI19zHmrgS/WYsWUwCn2R7RzlbJWD7F9eWYUTGyBmU9o6PxngtLGOiDGPRu+Uc4fhKzbpteZQ=="], "joycon": ["joycon@3.1.1", "", {}, "sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw=="], @@ -2879,8 +2865,6 @@ "lodash.merge": ["lodash.merge@4.6.2", "", {}, "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ=="], - "lodash.startcase": ["lodash.startcase@4.4.0", "", {}, "sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg=="], - "lodash.truncate": ["lodash.truncate@4.4.2", "", {}, "sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw=="], "longest-streak": ["longest-streak@3.1.0", "", {}, "sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g=="], @@ -3133,7 +3117,7 @@ "os-paths": ["os-paths@4.4.0", "", {}, "sha512-wrAwOeXp1RRMFfQY8Sy7VaGVmPocaLwSFOYCGKSyo8qmJ+/yaafCl5BCA1IQZWqFSRBrKDYFeR9d/VyQzfH/jg=="], - "outdent": ["outdent@0.5.0", "", {}, "sha512-/jHxFIzoMXdqPzTaCpFzAAWhpkSjZPF4Vsn6jAfNpmbH/ymsmd7Qc6VE9BGn0L6YMj6uwpQLxCECpus4ukKS9Q=="], + "outdent": ["outdent@0.8.0", "", {}, "sha512-KiOAIsdpUTcAXuykya5fnVVT+/5uS0Q1mrkRHcF89tpieSmY33O/tmc54CqwA+bfhbtEfZUNLHaPUiB9X3jt1A=="], "oxc-parser": ["oxc-parser@0.127.0", "", { "dependencies": { "@oxc-project/types": "^0.127.0" }, "optionalDependencies": { "@oxc-parser/binding-android-arm-eabi": "0.127.0", "@oxc-parser/binding-android-arm64": "0.127.0", "@oxc-parser/binding-darwin-arm64": "0.127.0", "@oxc-parser/binding-darwin-x64": "0.127.0", "@oxc-parser/binding-freebsd-x64": "0.127.0", "@oxc-parser/binding-linux-arm-gnueabihf": "0.127.0", "@oxc-parser/binding-linux-arm-musleabihf": "0.127.0", "@oxc-parser/binding-linux-arm64-gnu": "0.127.0", "@oxc-parser/binding-linux-arm64-musl": "0.127.0", "@oxc-parser/binding-linux-ppc64-gnu": "0.127.0", "@oxc-parser/binding-linux-riscv64-gnu": "0.127.0", "@oxc-parser/binding-linux-riscv64-musl": "0.127.0", "@oxc-parser/binding-linux-s390x-gnu": "0.127.0", "@oxc-parser/binding-linux-x64-gnu": "0.127.0", "@oxc-parser/binding-linux-x64-musl": "0.127.0", "@oxc-parser/binding-openharmony-arm64": "0.127.0", "@oxc-parser/binding-wasm32-wasi": "0.127.0", "@oxc-parser/binding-win32-arm64-msvc": "0.127.0", "@oxc-parser/binding-win32-ia32-msvc": "0.127.0", "@oxc-parser/binding-win32-x64-msvc": "0.127.0" } }, "sha512-bkgD4qHlN7WxLdX8bLXdaU54TtQtAIg/ZBAfm0aje/mo3MRDo3P0hZSgr4U7O3xfX+fQmR5AP04JS/TGcZLcFA=="], @@ -3153,11 +3137,9 @@ "p-map": ["p-map@2.1.0", "", {}, "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw=="], - "p-try": ["p-try@2.2.0", "", {}, "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ=="], - "package-json-from-dist": ["package-json-from-dist@1.0.1", "", {}, "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw=="], - "package-manager-detector": ["package-manager-detector@0.2.11", "", { "dependencies": { "quansync": "^0.2.7" } }, "sha512-BEnLolu+yuz22S56CU1SUKq3XC3PkwD5wv4ikR4MfGvnRVcmzXR9DwSlW2fEamyTPyXHomBJRzgapeuBvRNzJQ=="], + "package-manager-detector": ["package-manager-detector@1.6.0", "", {}, "sha512-61A5ThoTiDG/C8s8UMZwSorAGwMJ0ERVGj2OjoW5pAalsNOg15+iQiPzrLJ4jhZ1HJzmC2PIHT2oEiH3R5fzNA=="], "pandacss-preset-typography": ["pandacss-preset-typography@0.1.6", "", { "dependencies": { "@tailwindcss/typography": "^0.5.13", "tailwindcss": "^3.4.4" }, "peerDependencies": { "@pandacss/dev": ">=0.9.0" } }, "sha512-iZl+tGtA5xohW4NefjH2GOWXDJAE3FWkgf+hhNm7Ze6XDzpouEvOEEElMBCiFnim6Fj/AyyGhvNJymE4A25qWg=="], @@ -3175,8 +3157,6 @@ "path-browserify": ["path-browserify@1.0.1", "", {}, "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g=="], - "path-exists": ["path-exists@4.0.0", "", {}, "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w=="], - "path-key": ["path-key@3.1.1", "", {}, "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q=="], "path-parse": ["path-parse@1.0.7", "", {}, "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw=="], @@ -3219,7 +3199,7 @@ "picomatch": ["picomatch@4.0.5", "", {}, "sha512-RvwwcruNjI1ncT5xRakeyS9Lf8lcItv34KD+aif+VH9kduAyfYBipGh12274xtenIPZ119/R9BdTBa8gAwSh0A=="], - "pify": ["pify@4.0.1", "", {}, "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g=="], + "pify": ["pify@2.3.0", "", {}, "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog=="], "pirates": ["pirates@4.0.7", "", {}, "sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA=="], @@ -3411,7 +3391,7 @@ "read-cache": ["read-cache@1.0.0", "", { "dependencies": { "pify": "^2.3.0" } }, "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA=="], - "read-yaml-file": ["read-yaml-file@1.1.0", "", { "dependencies": { "graceful-fs": "^4.1.5", "js-yaml": "^3.6.1", "pify": "^4.0.1", "strip-bom": "^3.0.0" } }, "sha512-VIMnQi/Z4HT2Fxuwg5KrY174U1VdUIASQVWXXyqtNRtxSr9IYkn1rsI6Tb6HsrHCmB7gVpNwX6JxPTHcH6IoTA=="], + "read-yaml-file": ["read-yaml-file@2.1.0", "", { "dependencies": { "js-yaml": "^4.0.0", "strip-bom": "^4.0.0" } }, "sha512-UkRNRIwnhG+y7hpqnycCL/xbTk7+ia9VuVTC0S+zVbwd65DI9eUpRMfsWIGrCWxTU/mi+JW8cHQCrv+zfCbEPQ=="], "readable-stream": ["readable-stream@4.7.0", "", { "dependencies": { "abort-controller": "^3.0.0", "buffer": "^6.0.3", "events": "^3.3.0", "process": "^0.11.10", "string_decoder": "^1.3.0" } }, "sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg=="], @@ -3559,7 +3539,7 @@ "siginfo": ["siginfo@2.0.0", "", {}, "sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g=="], - "signal-exit": ["signal-exit@4.1.0", "", {}, "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw=="], + "signal-exit": ["signal-exit@3.0.7", "", {}, "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ=="], "simple-git": ["simple-git@3.36.0", "", { "dependencies": { "@kwsites/file-exists": "^1.1.1", "@kwsites/promise-deferred": "^1.1.1", "@simple-git/args-pathspec": "^1.0.3", "@simple-git/argv-parser": "^1.1.0", "debug": "^4.4.0" } }, "sha512-cGQjLjK8bxJw4QuYT7gxHw3/IouVESbhahSsHrX97MzCL1gu2u7oy38W6L2ZIGECEfIBG4BabsWDPjBxJENv9Q=="], @@ -3593,14 +3573,10 @@ "space-separated-tokens": ["space-separated-tokens@2.0.2", "", {}, "sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q=="], - "spawndamnit": ["spawndamnit@3.0.1", "", { "dependencies": { "cross-spawn": "^7.0.5", "signal-exit": "^4.0.1" } }, "sha512-MmnduQUuHCoFckZoWnXsTg7JaiLBJrKFj9UI2MbRPGaJeVpsLcVBu6P/IGZovziM/YBsellCmsprgNA+w0CzVg=="], - "speakingurl": ["speakingurl@14.0.1", "", {}, "sha512-1POYv7uv2gXoyGFpBCmpDVSNV74IfsWlDW216UPjbWufNf+bSU6GdbDsxdcxtfwb4xlI3yxzOTKClUosxARYrQ=="], "split2": ["split2@4.2.0", "", {}, "sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg=="], - "sprintf-js": ["sprintf-js@1.0.3", "", {}, "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g=="], - "srvx": ["srvx@0.11.16", "", { "bin": { "srvx": "bin/srvx.mjs" } }, "sha512-bp07zRuycfTY43IjAvvTFnmnJi8ikW0VFiHwOhhYcVW/L4xQ1XY4PAd4Nuum1rsA17C39zL7x+CDhrn5AL32Rw=="], "stack-generator": ["stack-generator@2.0.10", "", { "dependencies": { "stackframe": "^1.3.4" } }, "sha512-mwnua/hkqM6pF4k8SnmZ2zfETsRUpWXREfA/goT8SLCV4iOFa4bzOX2nDipWAZFPTjLvQB82f5yaodMVhK0yJQ=="], @@ -3641,7 +3617,7 @@ "stringify-entities": ["stringify-entities@4.0.4", "", { "dependencies": { "character-entities-html4": "^2.0.0", "character-entities-legacy": "^3.0.0" } }, "sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg=="], - "strip-ansi": ["strip-ansi@6.0.1", "", { "dependencies": { "ansi-regex": "^5.0.1" } }, "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A=="], + "strip-ansi": ["strip-ansi@7.2.0", "", { "dependencies": { "ansi-regex": "^6.2.2" } }, "sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w=="], "strip-ansi-cjs": ["strip-ansi@6.0.1", "", { "dependencies": { "ansi-regex": "^5.0.1" } }, "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A=="], @@ -3701,8 +3677,6 @@ "tar-stream": ["tar-stream@3.1.7", "", { "dependencies": { "b4a": "^1.6.4", "fast-fifo": "^1.2.0", "streamx": "^2.15.0" } }, "sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ=="], - "term-size": ["term-size@2.2.1", "", {}, "sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg=="], - "terracotta": ["terracotta@1.1.1", "", { "dependencies": { "solid-use": "^0.9.1" }, "peerDependencies": { "solid-js": "^1.8" } }, "sha512-Sa6wnvkGMFmPq8N/wQb2aKkIW2eXH0LJvUOEk6QZLBEjqy+LsbzAOpDuqEfOmfA/hexssE6eQve2i1IIOeOh4g=="], "terser": ["terser@5.50.0", "", { "dependencies": { "@jridgewell/source-map": "^0.3.3", "acorn": "^8.15.0", "commander": "^2.20.0", "source-map-support": "~0.5.20" }, "bin": { "terser": "bin/terser" } }, "sha512-CN9BVxWhgS/hRxtUMjtC2uRWSTcSfQFHMDWma6sKKfIivCD91sM+FOPfvwoaRMqCSrUpe1nv3jDamd9eEQ4y+w=="], @@ -3725,7 +3699,7 @@ "tinyclip": ["tinyclip@0.1.15", "", {}, "sha512-uo33abH+Ays0xYaDysoBt494Hb3hsEczMpcC0MwFl773pazORx4fmvKhclhR1wonUbB6vvpRsvVMwnhfqeMc+A=="], - "tinyexec": ["tinyexec@0.3.2", "", {}, "sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA=="], + "tinyexec": ["tinyexec@1.3.0", "", {}, "sha512-QKAl9m8gWWGHV8jZcPeym6j+XULi6tOf1mT83WYJ4Lk2ytW/uwAWkrP0uFsdoYMdueVJ0qs26wZ+23xeB4ibNQ=="], "tinyglobby": ["tinyglobby@0.2.17", "", { "dependencies": { "fdir": "^6.5.0", "picomatch": "^4.0.4" } }, "sha512-wXR/dYpcqKmfWpEdZjiKJOwCNFndD0DMnrW/cYjVGttEkBfVgcLFHoNrlj47mjOVic9yyNu65alsgF4NQyTa2g=="], @@ -4049,23 +4023,9 @@ "@better-auth/core/jose": ["jose@6.2.9", "", {}, "sha512-XrchZOFZUl/T3vTwRe8XK+cJrGtMF4th1ARnDfwbBXFKThGhlsxEE4Zu03AD/bjJSt/9jT/mxrOCkJWOg77aPA=="], - "@changesets/apply-release-plan/fs-extra": ["fs-extra@7.0.1", "", { "dependencies": { "graceful-fs": "^4.1.2", "jsonfile": "^4.0.0", "universalify": "^0.1.0" } }, "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw=="], - - "@changesets/apply-release-plan/prettier": ["prettier@2.8.8", "", { "bin": { "prettier": "bin-prettier.js" } }, "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q=="], - - "@changesets/cli/fs-extra": ["fs-extra@7.0.1", "", { "dependencies": { "graceful-fs": "^4.1.2", "jsonfile": "^4.0.0", "universalify": "^0.1.0" } }, "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw=="], - - "@changesets/config/fs-extra": ["fs-extra@7.0.1", "", { "dependencies": { "graceful-fs": "^4.1.2", "jsonfile": "^4.0.0", "universalify": "^0.1.0" } }, "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw=="], - - "@changesets/parse/js-yaml": ["js-yaml@4.3.1", "", { "dependencies": { "argparse": "^2.0.1" }, "bin": { "js-yaml": "bin/js-yaml.js" } }, "sha512-CY6crGq313MX8GkwvB7tzgp99vjQxY1++5y10/BKN/GUfHqWaOGQMNZkBvqSzsZKWk/ijwHlWzzkLulsGHhjWQ=="], - - "@changesets/pre/fs-extra": ["fs-extra@7.0.1", "", { "dependencies": { "graceful-fs": "^4.1.2", "jsonfile": "^4.0.0", "universalify": "^0.1.0" } }, "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw=="], + "@bomb.sh/tab/cac": ["cac@6.7.14", "", {}, "sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ=="], - "@changesets/read/fs-extra": ["fs-extra@7.0.1", "", { "dependencies": { "graceful-fs": "^4.1.2", "jsonfile": "^4.0.0", "universalify": "^0.1.0" } }, "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw=="], - - "@changesets/write/fs-extra": ["fs-extra@7.0.1", "", { "dependencies": { "graceful-fs": "^4.1.2", "jsonfile": "^4.0.0", "universalify": "^0.1.0" } }, "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw=="], - - "@changesets/write/prettier": ["prettier@2.8.8", "", { "bin": { "prettier": "bin-prettier.js" } }, "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q=="], + "@changesets/format/package-manager-detector": ["package-manager-detector@1.8.0", "", {}, "sha512-yQA4H19AmPEoMUeavPMDIe1higySl/gH/yaQrkT/s07Qp+7pp2hYz30N3z2l5BkjVkF9Ow6o0wjJamm2y7Sn0A=="], "@csstools/postcss-cascade-layers/postcss-selector-parser": ["postcss-selector-parser@7.1.1", "", { "dependencies": { "cssesc": "^3.0.0", "util-deprecate": "^1.0.2" } }, "sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg=="], @@ -4077,22 +4037,8 @@ "@isaacs/cliui/string-width": ["string-width@5.1.2", "", { "dependencies": { "eastasianwidth": "^0.2.0", "emoji-regex": "^9.2.2", "strip-ansi": "^7.0.1" } }, "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA=="], - "@isaacs/cliui/strip-ansi": ["strip-ansi@7.2.0", "", { "dependencies": { "ansi-regex": "^6.2.2" } }, "sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w=="], - "@isaacs/cliui/wrap-ansi": ["wrap-ansi@8.1.0", "", { "dependencies": { "ansi-styles": "^6.1.0", "string-width": "^5.0.1", "strip-ansi": "^7.0.1" } }, "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ=="], - "@manypkg/find-root/@types/node": ["@types/node@12.20.55", "", {}, "sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ=="], - - "@manypkg/find-root/find-up": ["find-up@4.1.0", "", { "dependencies": { "locate-path": "^5.0.0", "path-exists": "^4.0.0" } }, "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw=="], - - "@manypkg/find-root/fs-extra": ["fs-extra@8.1.0", "", { "dependencies": { "graceful-fs": "^4.2.0", "jsonfile": "^4.0.0", "universalify": "^0.1.0" } }, "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g=="], - - "@manypkg/get-packages/@changesets/types": ["@changesets/types@4.1.0", "", {}, "sha512-LDQvVDv5Kb50ny2s25Fhm3d9QSZimsoUGBsUioj6MC3qbMUCuC8GPIvk/M6IvXx3lYhAs0lwWUQLb+VIEUCECw=="], - - "@manypkg/get-packages/fs-extra": ["fs-extra@8.1.0", "", { "dependencies": { "graceful-fs": "^4.2.0", "jsonfile": "^4.0.0", "universalify": "^0.1.0" } }, "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g=="], - - "@manypkg/get-packages/globby": ["globby@11.1.0", "", { "dependencies": { "array-union": "^2.1.0", "dir-glob": "^3.0.1", "fast-glob": "^3.2.9", "ignore": "^5.2.0", "merge2": "^1.4.1", "slash": "^3.0.0" } }, "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g=="], - "@mapbox/node-pre-gyp/node-fetch": ["node-fetch@2.6.9", "", { "dependencies": { "whatwg-url": "^5.0.0" }, "peerDependencies": { "encoding": "^0.1.0" }, "optionalPeers": ["encoding"] }, "sha512-DJm/CJkZkRjKKj4Zi4BsKVZh3ValV5IR5s7LVZnW+6YMh0W1BfNA8XSs6DLMGYlId5F3KnA70uu2qepcR08Qqg=="], "@mapbox/node-pre-gyp/nopt": ["nopt@8.1.0", "", { "dependencies": { "abbrev": "^3.0.0" }, "bin": { "nopt": "bin/nopt.js" } }, "sha512-ieGu42u/Qsa4TFktmaKEwM6MQH0pOWnaB3htzh0JRtx84+Mebc0cbZYN5bC+6WTZ4+77xrL9Pn5m7CV6VIkV7A=="], @@ -4101,22 +4047,16 @@ "@modelcontextprotocol/sdk/jose": ["jose@6.2.9", "", {}, "sha512-XrchZOFZUl/T3vTwRe8XK+cJrGtMF4th1ARnDfwbBXFKThGhlsxEE4Zu03AD/bjJSt/9jT/mxrOCkJWOg77aPA=="], - "@nuxt/cli/@clack/prompts": ["@clack/prompts@1.7.0", "", { "dependencies": { "@clack/core": "1.4.3", "fast-string-width": "^3.0.2", "fast-wrap-ansi": "^0.2.0", "sisteransi": "^1.0.5" } }, "sha512-y7/yvZ2TPAnR9+jnc00klvNNLkJiXFFrQA/hlLCcxA9a2A4zQIOimyFQ9XfwYKiGD1fb5GY8vbKIIgO8d5Tb2A=="], - "@nuxt/cli/citty": ["citty@0.2.2", "", {}, "sha512-+6vJA3L98yv+IdfKGZHBNiGW5KHn22e/JwID0Strsz8h4S/csAu/OuICwxrg44k5MRiZHWIo8XXuJgQTriRP4w=="], "@nuxt/cli/srvx": ["srvx@0.11.22", "", { "bin": { "srvx": "bin/srvx.mjs" } }, "sha512-LqZxxBDMKuMAZzFzJnDCkFOrs9MZQZr0LvHiO/SuSZVdQaXD7xQ5UWTUxheJrQPve1qk9MG2B/yttUvJxw8egQ=="], - "@nuxt/cli/tinyexec": ["tinyexec@1.3.0", "", {}, "sha512-QKAl9m8gWWGHV8jZcPeym6j+XULi6tOf1mT83WYJ4Lk2ytW/uwAWkrP0uFsdoYMdueVJ0qs26wZ+23xeB4ibNQ=="], - "@nuxt/devtools/execa": ["execa@8.0.1", "", { "dependencies": { "cross-spawn": "^7.0.3", "get-stream": "^8.0.1", "human-signals": "^5.0.0", "is-stream": "^3.0.0", "merge-stream": "^2.0.0", "npm-run-path": "^5.1.0", "onetime": "^6.0.0", "signal-exit": "^4.1.0", "strip-final-newline": "^3.0.0" } }, "sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg=="], "@nuxt/devtools/which": ["which@6.0.1", "", { "dependencies": { "isexe": "^4.0.0" }, "bin": { "node-which": "bin/which.js" } }, "sha512-oGLe46MIrCRqX7ytPUf66EAYvdeMIZYn3WaocqqKZAxrBpkqHfL/qvTyJ/bTk5+AqHCjXmrv3CEWgy368zhRUg=="], "@nuxt/devtools-kit/execa": ["execa@8.0.1", "", { "dependencies": { "cross-spawn": "^7.0.3", "get-stream": "^8.0.1", "human-signals": "^5.0.0", "is-stream": "^3.0.0", "merge-stream": "^2.0.0", "npm-run-path": "^5.1.0", "onetime": "^6.0.0", "signal-exit": "^4.1.0", "strip-final-newline": "^3.0.0" } }, "sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg=="], - "@nuxt/devtools-wizard/@clack/prompts": ["@clack/prompts@1.7.0", "", { "dependencies": { "@clack/core": "1.4.3", "fast-string-width": "^3.0.2", "fast-wrap-ansi": "^0.2.0", "sisteransi": "^1.0.5" } }, "sha512-y7/yvZ2TPAnR9+jnc00klvNNLkJiXFFrQA/hlLCcxA9a2A4zQIOimyFQ9XfwYKiGD1fb5GY8vbKIIgO8d5Tb2A=="], - "@nuxt/devtools-wizard/execa": ["execa@8.0.1", "", { "dependencies": { "cross-spawn": "^7.0.3", "get-stream": "^8.0.1", "human-signals": "^5.0.0", "is-stream": "^3.0.0", "merge-stream": "^2.0.0", "npm-run-path": "^5.1.0", "onetime": "^6.0.0", "signal-exit": "^4.1.0", "strip-final-newline": "^3.0.0" } }, "sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg=="], "@nuxt/nitro-server/h3": ["h3@1.15.11", "", { "dependencies": { "cookie-es": "^1.2.3", "crossws": "^0.3.5", "defu": "^6.1.6", "destr": "^2.0.5", "iron-webcrypto": "^1.2.1", "node-mock-http": "^1.0.4", "radix3": "^1.1.2", "ufo": "^1.6.3", "uncrypto": "^0.1.3" } }, "sha512-L3THSe2MPeBwgIZVSH5zLdBBU90TOxarvhK9d04IDY2AmVS8j2Jz2LIWtwsGOU3lu2I5jCN7FNvVfY2+XyF+mg=="], @@ -4141,15 +4081,15 @@ "@pandacss/config/typescript": ["typescript@6.0.2", "", { "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" } }, "sha512-bGdAIrZ0wiGDo5l8c++HWtbaNCWTS4UTv7RaTH/ThVIgjkveJt83m74bBHMJkuCbslY8ixgLBVZJIOiQlQTjfQ=="], - "@pandacss/core/outdent": ["outdent@0.8.0", "", {}, "sha512-KiOAIsdpUTcAXuykya5fnVVT+/5uS0Q1mrkRHcF89tpieSmY33O/tmc54CqwA+bfhbtEfZUNLHaPUiB9X3jt1A=="], - "@pandacss/core/postcss": ["postcss@8.5.14", "", { "dependencies": { "nanoid": "^3.3.11", "picocolors": "^1.1.1", "source-map-js": "^1.2.1" } }, "sha512-SoSL4+OSEtR99LHFZQiJLkT59C5B1amGO1NzTwj7TT1qCUgUO6hxOvzkOYxD+vMrXBM3XJIKzokoERdqQq/Zmg=="], "@pandacss/core/postcss-nested": ["postcss-nested@7.0.2", "", { "dependencies": { "postcss-selector-parser": "^7.0.0" }, "peerDependencies": { "postcss": "^8.2.14" } }, "sha512-5osppouFc0VR9/VYzYxO03VaDa3e8F23Kfd6/9qcZTUI8P58GIYlArOET2Wq0ywSl2o2PjELhYOFI4W7l5QHKw=="], "@pandacss/core/postcss-selector-parser": ["postcss-selector-parser@7.1.1", "", { "dependencies": { "cssesc": "^3.0.0", "util-deprecate": "^1.0.2" } }, "sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg=="], - "@pandacss/generator/outdent": ["outdent@0.8.0", "", {}, "sha512-KiOAIsdpUTcAXuykya5fnVVT+/5uS0Q1mrkRHcF89tpieSmY33O/tmc54CqwA+bfhbtEfZUNLHaPUiB9X3jt1A=="], + "@pandacss/dev/@clack/prompts": ["@clack/prompts@1.6.0", "", { "dependencies": { "@clack/core": "1.4.2", "fast-string-width": "^3.0.2", "fast-wrap-ansi": "^0.2.0", "sisteransi": "^1.0.5" } }, "sha512-EYlRokl8szrP9Z25qT5aepMdBjzBvHF9ZEhzIiUBc9guz/T31EqRgvD0QSgZcpE93xiwrr+OkB4nz0BZyF6fSA=="], + + "@pandacss/dev/cac": ["cac@6.7.14", "", {}, "sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ=="], "@pandacss/generator/postcss": ["postcss@8.5.14", "", { "dependencies": { "nanoid": "^3.3.11", "picocolors": "^1.1.1", "source-map-js": "^1.2.1" } }, "sha512-SoSL4+OSEtR99LHFZQiJLkT59C5B1amGO1NzTwj7TT1qCUgUO6hxOvzkOYxD+vMrXBM3XJIKzokoERdqQq/Zmg=="], @@ -4159,10 +4099,6 @@ "@pandacss/node/glob-parent": ["glob-parent@6.0.2", "", { "dependencies": { "is-glob": "^4.0.3" } }, "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A=="], - "@pandacss/node/outdent": ["outdent@0.8.0", "", {}, "sha512-KiOAIsdpUTcAXuykya5fnVVT+/5uS0Q1mrkRHcF89tpieSmY33O/tmc54CqwA+bfhbtEfZUNLHaPUiB9X3jt1A=="], - - "@pandacss/node/package-manager-detector": ["package-manager-detector@1.6.0", "", {}, "sha512-61A5ThoTiDG/C8s8UMZwSorAGwMJ0ERVGj2OjoW5pAalsNOg15+iQiPzrLJ4jhZ1HJzmC2PIHT2oEiH3R5fzNA=="], - "@pandacss/node/perfect-debounce": ["perfect-debounce@1.0.0", "", {}, "sha512-xCy9V055GLEqoFaHoC1SoLIaLmWctgCUaBaWxDZ7/Zx4CTyX7cJQLJOok/orfjZAh9kEYpjJa4d0KcJmCbctZA=="], "@pandacss/node/picomatch": ["picomatch@4.0.4", "", {}, "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A=="], @@ -4187,8 +4123,6 @@ "@parcel/watcher-wasm/napi-wasm": ["napi-wasm@1.1.3", "", { "bundled": true }, "sha512-h/4nMGsHjZDCYmQVNODIrYACVJ+I9KItbG+0si6W/jSjdA9JbWDoU4LLeMXVcEQGHjttI2tuXqDrbGF7qkUHHg=="], - "@pnpm/read-project-manifest/read-yaml-file": ["read-yaml-file@2.1.0", "", { "dependencies": { "js-yaml": "^4.0.0", "strip-bom": "^4.0.0" } }, "sha512-UkRNRIwnhG+y7hpqnycCL/xbTk7+ia9VuVTC0S+zVbwd65DI9eUpRMfsWIGrCWxTU/mi+JW8cHQCrv+zfCbEPQ=="], - "@pnpm/read-project-manifest/strip-bom": ["strip-bom@4.0.0", "", {}, "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w=="], "@poppinss/dumper/supports-color": ["supports-color@10.2.2", "", {}, "sha512-SS+jx45GF1QjgEXQx4NJZV9ImqmO2NPz5FNsIHrsDjh2YsHnawpan7SNQ1o8NuhrbHZy9AZhIoCUiCeaW/C80g=="], @@ -4297,6 +4231,8 @@ "@vercel/fun/semver": ["semver@7.5.4", "", { "dependencies": { "lru-cache": "^6.0.0" }, "bin": { "semver": "bin/semver.js" } }, "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA=="], + "@vercel/fun/tinyexec": ["tinyexec@0.3.2", "", {}, "sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA=="], + "@vercel/gatsby-plugin-vercel-builder/fs-extra": ["fs-extra@11.1.0", "", { "dependencies": { "graceful-fs": "^4.2.0", "jsonfile": "^6.0.1", "universalify": "^2.0.0" } }, "sha512-0rcTq621PD5jM/e0a3EJoGC/1TC5ZBCERW82LQuwfGnCa1V8w7dpYH1yNu+SLb6E5dkeCBzKEyLGlFrnr+dUyw=="], "@vercel/hono/fs-extra": ["fs-extra@11.1.0", "", { "dependencies": { "graceful-fs": "^4.2.0", "jsonfile": "^6.0.1", "universalify": "^2.0.0" } }, "sha512-0rcTq621PD5jM/e0a3EJoGC/1TC5ZBCERW82LQuwfGnCa1V8w7dpYH1yNu+SLb6E5dkeCBzKEyLGlFrnr+dUyw=="], @@ -4431,8 +4367,6 @@ "clipboardy/is-wsl": ["is-wsl@3.1.1", "", { "dependencies": { "is-inside-container": "^1.0.0" } }, "sha512-e6rvdUCiQCAuumZslxRJWR/Doq4VpPR82kqclvcS0efgt430SlGIk05vdCN58+VrzgtIcfNODjozVielycD4Sw=="], - "cliui/strip-ansi": ["strip-ansi@7.2.0", "", { "dependencies": { "ansi-regex": "^6.2.2" } }, "sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w=="], - "config-chain/ini": ["ini@1.3.8", "", {}, "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew=="], "constantinople/@babel/types": ["@babel/types@7.29.8", "", { "dependencies": { "@babel/helper-string-parser": "^7.29.7", "@babel/helper-validator-identifier": "^7.29.7" } }, "sha512-Vj1jF3cPfxg7OAfoI7QnVKLoILlm2JF9pnVHrX8qx7AHMiYWT+NDAA7jChlNgRS4WTLc/fD1lXLmPixluj+3Gg=="], @@ -4485,14 +4419,12 @@ "estree-util-build-jsx/estree-walker": ["estree-walker@3.0.3", "", { "dependencies": { "@types/estree": "^1.0.0" } }, "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g=="], - "execa/signal-exit": ["signal-exit@3.0.7", "", {}, "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ=="], - - "fast-npm-meta/cac": ["cac@7.0.0", "", {}, "sha512-tixWYgm5ZoOD+3g6UTea91eow5z6AAHaho3g0V9CNSNb45gM8SmflpAc+GRd1InC4AqN/07Unrgp56Y94N9hJQ=="], - "find-up/unicorn-magic": ["unicorn-magic@0.3.0", "", {}, "sha512-+QBBXBCvifc56fsbuxZQ6Sic3wqqc3WWaqxs58gvJrcOuN83HGTCwz3oS5phzU9LthRNE9VrJCFCLUgHeeFnfA=="], "fix-dts-default-cjs-exports/magic-string": ["magic-string@0.30.21", "", { "dependencies": { "@jridgewell/sourcemap-codec": "^1.5.5" } }, "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ=="], + "foreground-child/signal-exit": ["signal-exit@4.1.0", "", {}, "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw=="], + "h3/cookie-es": ["cookie-es@1.2.3", "", {}, "sha512-lXVyvUvrNXblMqzIRrxHb57UUVmqsSWlxqt3XIjCkUP0wDAf6uicO6KMbEgYrMNtEvWgWHwe42CKxPu9MYAnWw=="], "import-fresh/resolve-from": ["resolve-from@4.0.0", "", {}, "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g=="], @@ -4567,8 +4499,6 @@ "nypm/citty": ["citty@0.2.2", "", {}, "sha512-+6vJA3L98yv+IdfKGZHBNiGW5KHn22e/JwID0Strsz8h4S/csAu/OuICwxrg44k5MRiZHWIo8XXuJgQTriRP4w=="], - "nypm/tinyexec": ["tinyexec@1.3.0", "", {}, "sha512-QKAl9m8gWWGHV8jZcPeym6j+XULi6tOf1mT83WYJ4Lk2ytW/uwAWkrP0uFsdoYMdueVJ0qs26wZ+23xeB4ibNQ=="], - "oxc-parser/@oxc-project/types": ["@oxc-project/types@0.127.0", "", {}, "sha512-aIYXQBo4lCbO4z0R3FHeucQHpF46l2LbMdxRvqvuRuW2OxdnSkcng5B8+K12spgLDj93rtN3+J2Vac/TIO+ciQ=="], "p-locate/p-limit": ["p-limit@4.0.0", "", { "dependencies": { "yocto-queue": "^1.0.0" } }, "sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ=="], @@ -4659,13 +4589,11 @@ "proper-lockfile/retry": ["retry@0.12.0", "", {}, "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow=="], - "proper-lockfile/signal-exit": ["signal-exit@3.0.7", "", {}, "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ=="], - "react-docgen/@babel/types": ["@babel/types@7.29.8", "", { "dependencies": { "@babel/helper-string-parser": "^7.29.7", "@babel/helper-validator-identifier": "^7.29.7" } }, "sha512-Vj1jF3cPfxg7OAfoI7QnVKLoILlm2JF9pnVHrX8qx7AHMiYWT+NDAA7jChlNgRS4WTLc/fD1lXLmPixluj+3Gg=="], - "read-cache/pify": ["pify@2.3.0", "", {}, "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog=="], + "read-yaml-file/js-yaml": ["js-yaml@4.3.1", "", { "dependencies": { "argparse": "^2.0.1" }, "bin": { "js-yaml": "bin/js-yaml.js" } }, "sha512-CY6crGq313MX8GkwvB7tzgp99vjQxY1++5y10/BKN/GUfHqWaOGQMNZkBvqSzsZKWk/ijwHlWzzkLulsGHhjWQ=="], - "read-yaml-file/js-yaml": ["js-yaml@3.15.1", "", { "dependencies": { "argparse": "^1.0.7", "esprima": "^4.0.0" }, "bin": { "js-yaml": "bin/js-yaml.js" } }, "sha512-S99WuO3HlhO3XN41EtYUNl9zzXjoJx7QvmipxsJVxtCBT0YHEFy+iOJhjSvrmV12nYhWpZaM8lPHkJm0yUMbag=="], + "read-yaml-file/strip-bom": ["strip-bom@4.0.0", "", {}, "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w=="], "readdir-glob/minimatch": ["minimatch@5.1.9", "", { "dependencies": { "brace-expansion": "^2.0.1" } }, "sha512-7o1wEA2RyMP7Iu7GNba9vc0RWWGACJOCZBJX2GJWip0ikV+wcOsgVuY9uE8CPiyQhkGFSlhuSkZPavN7u1c2Fw=="], @@ -4701,10 +4629,12 @@ "storybook-solidjs-vite/semver": ["semver@7.8.1", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-rkVq3IXh+4FDGch+KwzX3aV9W3kO54GyEgpvBzSyctDA6Xtd7RJQV1xmXbeQp5v7+VzLOfVqiutSE6GICgPFvg=="], - "string-width/strip-ansi": ["strip-ansi@7.2.0", "", { "dependencies": { "ansi-regex": "^6.2.2" } }, "sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w=="], - "string-width-cjs/emoji-regex": ["emoji-regex@8.0.0", "", {}, "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="], + "string-width-cjs/strip-ansi": ["strip-ansi@6.0.1", "", { "dependencies": { "ansi-regex": "^5.0.1" } }, "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A=="], + + "strip-ansi/ansi-regex": ["ansi-regex@6.3.0", "", {}, "sha512-WpDfL7NO6j7tH88IDBNVdUJxDh9nmCteAVW9dsep846XdwF4naCBK+/tGLX3KJgcpgMRXCFlTM2hKGoK9FsdrQ=="], + "stylehacks/browserslist": ["browserslist@4.28.8", "", { "dependencies": { "baseline-browser-mapping": "^2.11.12", "caniuse-lite": "^1.0.30001809", "electron-to-chromium": "^1.5.402", "node-releases": "^2.0.53", "update-browserslist-db": "^1.3.0" }, "bin": { "browserslist": "cli.js" } }, "sha512-V2NpofLblG64mfOtSgDhOJESZEGogzDMBv/q+W6oc4LXWP/q75eOXoOaaOu1EOadB9U4Bwx/e0yzbvwKH8zalA=="], "stylehacks/postcss": ["postcss@8.5.26", "", { "dependencies": { "nanoid": "^3.3.17", "picocolors": "^1.1.1", "source-map-js": "^1.2.1" } }, "sha512-u82N74LFzG8ca+dD8puPnplTXoGH4fTPpVGuIbt36G3qvNlkvfD0lEAZSxaly3KX8TS/L1A1gsCEmvKmBcVbkQ=="], @@ -4721,6 +4651,8 @@ "table/string-width": ["string-width@4.2.3", "", { "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", "strip-ansi": "^6.0.1" } }, "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g=="], + "table/strip-ansi": ["strip-ansi@6.0.1", "", { "dependencies": { "ansi-regex": "^5.0.1" } }, "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A=="], + "tailwindcss/chokidar": ["chokidar@3.6.0", "", { "dependencies": { "anymatch": "~3.1.2", "braces": "~3.0.2", "glob-parent": "~5.1.2", "is-binary-path": "~2.1.0", "is-glob": "~4.0.1", "normalize-path": "~3.0.0", "readdirp": "~3.6.0" }, "optionalDependencies": { "fsevents": "~2.3.2" } }, "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw=="], "tailwindcss/glob-parent": ["glob-parent@6.0.2", "", { "dependencies": { "is-glob": "^4.0.3" } }, "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A=="], @@ -4733,8 +4665,12 @@ "terser/commander": ["commander@2.20.3", "", {}, "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ=="], + "tsup/cac": ["cac@6.7.14", "", {}, "sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ=="], + "tsup/chokidar": ["chokidar@4.0.3", "", { "dependencies": { "readdirp": "^4.0.1" } }, "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA=="], + "tsup/tinyexec": ["tinyexec@0.3.2", "", {}, "sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA=="], + "tsx/esbuild": ["esbuild@0.28.2", "", { "optionalDependencies": { "@esbuild/aix-ppc64": "0.28.2", "@esbuild/android-arm": "0.28.2", "@esbuild/android-arm64": "0.28.2", "@esbuild/android-x64": "0.28.2", "@esbuild/darwin-arm64": "0.28.2", "@esbuild/darwin-x64": "0.28.2", "@esbuild/freebsd-arm64": "0.28.2", "@esbuild/freebsd-x64": "0.28.2", "@esbuild/linux-arm": "0.28.2", "@esbuild/linux-arm64": "0.28.2", "@esbuild/linux-ia32": "0.28.2", "@esbuild/linux-loong64": "0.28.2", "@esbuild/linux-mips64el": "0.28.2", "@esbuild/linux-ppc64": "0.28.2", "@esbuild/linux-riscv64": "0.28.2", "@esbuild/linux-s390x": "0.28.2", "@esbuild/linux-x64": "0.28.2", "@esbuild/netbsd-arm64": "0.28.2", "@esbuild/netbsd-x64": "0.28.2", "@esbuild/openbsd-arm64": "0.28.2", "@esbuild/openbsd-x64": "0.28.2", "@esbuild/openharmony-arm64": "0.28.2", "@esbuild/sunos-x64": "0.28.2", "@esbuild/win32-arm64": "0.28.2", "@esbuild/win32-ia32": "0.28.2", "@esbuild/win32-x64": "0.28.2" }, "bin": { "esbuild": "bin/esbuild" } }, "sha512-HKVLS8dvII+xoKW9kmqxbRKrnWEXfJJr/FZhhJmiqIB0e053QNYFqOBouTMO/k5sID4MvCiUCvv8b9M4h32wIA=="], "type-is/content-type": ["content-type@2.1.0", "", {}, "sha512-mj7UPXE0jaqaOsukNZRUEfEi2AcL7C/vwmwcHV0O97eO1E1pxBZuyjlZrx5seTaNBg1U6+o35wpa35Qfcc+7ag=="], @@ -4781,8 +4717,6 @@ "vite/postcss": ["postcss@8.5.26", "", { "dependencies": { "nanoid": "^3.3.17", "picocolors": "^1.1.1", "source-map-js": "^1.2.1" } }, "sha512-u82N74LFzG8ca+dD8puPnplTXoGH4fTPpVGuIbt36G3qvNlkvfD0lEAZSxaly3KX8TS/L1A1gsCEmvKmBcVbkQ=="], - "vite-node/cac": ["cac@7.0.0", "", {}, "sha512-tixWYgm5ZoOD+3g6UTea91eow5z6AAHaho3g0V9CNSNb45gM8SmflpAc+GRd1InC4AqN/07Unrgp56Y94N9hJQ=="], - "vite-plugin-checker/chokidar": ["chokidar@5.0.0", "", { "dependencies": { "readdirp": "^5.0.0" } }, "sha512-TQMmc3w+5AxjpL8iIiwebF73dRDF4fBIieAqGn9RGCWaEVwQ6Fb2cGe31Yns0RRIzii5goJ1Y7xbMwo1TxMplw=="], "vite-plugin-checker/npm-run-path": ["npm-run-path@6.0.0", "", { "dependencies": { "path-key": "^4.0.0", "unicorn-magic": "^0.3.0" } }, "sha512-9qny7Z9DsQU8Ou39ERsPU4OZQlSTP47ShQzuKZ6PRXpYLtIFgl/DEBYEXKlvcEa+9tHVcK8CF81Y2V72qaZhWA=="], @@ -4799,8 +4733,6 @@ "vitest/magic-string": ["magic-string@0.30.21", "", { "dependencies": { "@jridgewell/sourcemap-codec": "^1.5.5" } }, "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ=="], - "vitest/tinyexec": ["tinyexec@1.3.0", "", {}, "sha512-QKAl9m8gWWGHV8jZcPeym6j+XULi6tOf1mT83WYJ4Lk2ytW/uwAWkrP0uFsdoYMdueVJ0qs26wZ+23xeB4ibNQ=="], - "vitest-axe/@vitest/pretty-format": ["@vitest/pretty-format@3.2.7", "", { "dependencies": { "tinyrainbow": "^2.0.0" } }, "sha512-KUHlwqVu0sRlhCdyPdQ/wBoTfRahjUky1MubOmYw9fWfIZy1gNoHpuaaQBPAaMaVYdQYHJLurzj8ECCj5OwTqA=="], "vue-docgen-api/@babel/types": ["@babel/types@7.29.8", "", { "dependencies": { "@babel/helper-string-parser": "^7.29.7", "@babel/helper-validator-identifier": "^7.29.7" } }, "sha512-Vj1jF3cPfxg7OAfoI7QnVKLoILlm2JF9pnVHrX8qx7AHMiYWT+NDAA7jChlNgRS4WTLc/fD1lXLmPixluj+3Gg=="], @@ -4815,12 +4747,14 @@ "wrap-ansi/ansi-styles": ["ansi-styles@6.2.3", "", {}, "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg=="], - "wrap-ansi/strip-ansi": ["strip-ansi@7.2.0", "", { "dependencies": { "ansi-regex": "^6.2.2" } }, "sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w=="], - "wrap-ansi-cjs/ansi-styles": ["ansi-styles@4.3.0", "", { "dependencies": { "color-convert": "^2.0.1" } }, "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg=="], "wrap-ansi-cjs/string-width": ["string-width@4.2.3", "", { "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", "strip-ansi": "^6.0.1" } }, "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g=="], + "wrap-ansi-cjs/strip-ansi": ["strip-ansi@6.0.1", "", { "dependencies": { "ansi-regex": "^5.0.1" } }, "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A=="], + + "write-file-atomic/signal-exit": ["signal-exit@4.1.0", "", {}, "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw=="], + "write-yaml-file/js-yaml": ["js-yaml@4.3.1", "", { "dependencies": { "argparse": "^2.0.1" }, "bin": { "js-yaml": "bin/js-yaml.js" } }, "sha512-CY6crGq313MX8GkwvB7tzgp99vjQxY1++5y10/BKN/GUfHqWaOGQMNZkBvqSzsZKWk/ijwHlWzzkLulsGHhjWQ=="], "write-yaml-file/write-file-atomic": ["write-file-atomic@3.0.3", "", { "dependencies": { "imurmurhash": "^0.1.4", "is-typedarray": "^1.0.0", "signal-exit": "^3.0.2", "typedarray-to-buffer": "^3.1.5" } }, "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q=="], @@ -4855,60 +4789,18 @@ "@babel/traverse/@babel/types/@babel/helper-string-parser": ["@babel/helper-string-parser@7.29.7", "", {}, "sha512-Pb5ijPrZ89GDH8223L4UP8i6QApWxs04RbPQJTeWDV0/keR2E36MeKnyr6LYmUUvqRRI+Iv87SuF1W6ErINzYw=="], - "@changesets/apply-release-plan/fs-extra/jsonfile": ["jsonfile@4.0.0", "", { "optionalDependencies": { "graceful-fs": "^4.1.6" } }, "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg=="], - - "@changesets/apply-release-plan/fs-extra/universalify": ["universalify@0.1.2", "", {}, "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg=="], - - "@changesets/cli/fs-extra/jsonfile": ["jsonfile@4.0.0", "", { "optionalDependencies": { "graceful-fs": "^4.1.6" } }, "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg=="], - - "@changesets/cli/fs-extra/universalify": ["universalify@0.1.2", "", {}, "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg=="], - - "@changesets/config/fs-extra/jsonfile": ["jsonfile@4.0.0", "", { "optionalDependencies": { "graceful-fs": "^4.1.6" } }, "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg=="], - - "@changesets/config/fs-extra/universalify": ["universalify@0.1.2", "", {}, "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg=="], - - "@changesets/pre/fs-extra/jsonfile": ["jsonfile@4.0.0", "", { "optionalDependencies": { "graceful-fs": "^4.1.6" } }, "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg=="], - - "@changesets/pre/fs-extra/universalify": ["universalify@0.1.2", "", {}, "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg=="], - - "@changesets/read/fs-extra/jsonfile": ["jsonfile@4.0.0", "", { "optionalDependencies": { "graceful-fs": "^4.1.6" } }, "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg=="], - - "@changesets/read/fs-extra/universalify": ["universalify@0.1.2", "", {}, "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg=="], - - "@changesets/write/fs-extra/jsonfile": ["jsonfile@4.0.0", "", { "optionalDependencies": { "graceful-fs": "^4.1.6" } }, "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg=="], - - "@changesets/write/fs-extra/universalify": ["universalify@0.1.2", "", {}, "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg=="], - "@deno/shim-deno/which/isexe": ["isexe@3.1.5", "", {}, "sha512-6B3tLtFqtQS4ekarvLVMZ+X+VlvQekbe4taUkf/rhVO3d/h0M2rfARm/pXLcPEsjjMsFgrFgSrhQIxcSVrBz8w=="], "@dxup/nuxt/chokidar/readdirp": ["readdirp@5.1.1", "", {}, "sha512-Kko+Y5XQ6fM+Ce3dq3m9YGxnacYZYl9cA1wZjaF3Vbry2L3i1qVg8+CAgNPsXRArPMUMCaOR7oa9Nqntc43JKA=="], "@isaacs/cliui/string-width/emoji-regex": ["emoji-regex@9.2.2", "", {}, "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg=="], - "@isaacs/cliui/strip-ansi/ansi-regex": ["ansi-regex@6.3.0", "", {}, "sha512-WpDfL7NO6j7tH88IDBNVdUJxDh9nmCteAVW9dsep846XdwF4naCBK+/tGLX3KJgcpgMRXCFlTM2hKGoK9FsdrQ=="], - "@isaacs/cliui/wrap-ansi/ansi-styles": ["ansi-styles@6.2.3", "", {}, "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg=="], - "@manypkg/find-root/find-up/locate-path": ["locate-path@5.0.0", "", { "dependencies": { "p-locate": "^4.1.0" } }, "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g=="], - - "@manypkg/find-root/fs-extra/jsonfile": ["jsonfile@4.0.0", "", { "optionalDependencies": { "graceful-fs": "^4.1.6" } }, "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg=="], - - "@manypkg/find-root/fs-extra/universalify": ["universalify@0.1.2", "", {}, "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg=="], - - "@manypkg/get-packages/fs-extra/jsonfile": ["jsonfile@4.0.0", "", { "optionalDependencies": { "graceful-fs": "^4.1.6" } }, "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg=="], - - "@manypkg/get-packages/fs-extra/universalify": ["universalify@0.1.2", "", {}, "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg=="], - - "@manypkg/get-packages/globby/ignore": ["ignore@5.3.2", "", {}, "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g=="], - - "@manypkg/get-packages/globby/slash": ["slash@3.0.0", "", {}, "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q=="], - "@mapbox/node-pre-gyp/node-fetch/whatwg-url": ["whatwg-url@5.0.0", "", { "dependencies": { "tr46": "~0.0.3", "webidl-conversions": "^3.0.0" } }, "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw=="], "@mapbox/node-pre-gyp/nopt/abbrev": ["abbrev@3.0.1", "", {}, "sha512-AO2ac6pjRB3SJmGJo+v5/aK6Omggp6fsLrs6wN9bd35ulu4cCwaAU9+7ZhXjeqHVkaHThLuzH0nZr0YpCDhygg=="], - "@nuxt/cli/@clack/prompts/@clack/core": ["@clack/core@1.4.3", "", { "dependencies": { "fast-wrap-ansi": "^0.2.0", "sisteransi": "^1.0.5" } }, "sha512-/kr3UWNtdJfxZtPgDqUOmG2pvwlmcLGheex5yiZKdwbzZJxhV+HMNR9QNmyY5cGwTNV6LrR7Jtp+KjhUAP1qBQ=="], - "@nuxt/devtools-kit/execa/get-stream": ["get-stream@8.0.1", "", {}, "sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA=="], "@nuxt/devtools-kit/execa/human-signals": ["human-signals@5.0.0", "", {}, "sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ=="], @@ -4919,9 +4811,9 @@ "@nuxt/devtools-kit/execa/onetime": ["onetime@6.0.0", "", { "dependencies": { "mimic-fn": "^4.0.0" } }, "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ=="], - "@nuxt/devtools-kit/execa/strip-final-newline": ["strip-final-newline@3.0.0", "", {}, "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw=="], + "@nuxt/devtools-kit/execa/signal-exit": ["signal-exit@4.1.0", "", {}, "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw=="], - "@nuxt/devtools-wizard/@clack/prompts/@clack/core": ["@clack/core@1.4.3", "", { "dependencies": { "fast-wrap-ansi": "^0.2.0", "sisteransi": "^1.0.5" } }, "sha512-/kr3UWNtdJfxZtPgDqUOmG2pvwlmcLGheex5yiZKdwbzZJxhV+HMNR9QNmyY5cGwTNV6LrR7Jtp+KjhUAP1qBQ=="], + "@nuxt/devtools-kit/execa/strip-final-newline": ["strip-final-newline@3.0.0", "", {}, "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw=="], "@nuxt/devtools-wizard/execa/get-stream": ["get-stream@8.0.1", "", {}, "sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA=="], @@ -4933,6 +4825,8 @@ "@nuxt/devtools-wizard/execa/onetime": ["onetime@6.0.0", "", { "dependencies": { "mimic-fn": "^4.0.0" } }, "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ=="], + "@nuxt/devtools-wizard/execa/signal-exit": ["signal-exit@4.1.0", "", {}, "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw=="], + "@nuxt/devtools-wizard/execa/strip-final-newline": ["strip-final-newline@3.0.0", "", {}, "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw=="], "@nuxt/devtools/execa/get-stream": ["get-stream@8.0.1", "", {}, "sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA=="], @@ -4945,6 +4839,8 @@ "@nuxt/devtools/execa/onetime": ["onetime@6.0.0", "", { "dependencies": { "mimic-fn": "^4.0.0" } }, "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ=="], + "@nuxt/devtools/execa/signal-exit": ["signal-exit@4.1.0", "", {}, "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw=="], + "@nuxt/devtools/execa/strip-final-newline": ["strip-final-newline@3.0.0", "", {}, "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw=="], "@nuxt/devtools/which/isexe": ["isexe@4.0.0", "", {}, "sha512-FFUtZMpoZ8RqHS3XeXEmHWLA4thH+ZxCv2lOiPIn1Xc7CxrqhWzNSDzD+/chS/zbYezmiwWLdQC09JdQKmthOw=="], @@ -5005,6 +4901,8 @@ "@pandacss/config/esbuild/@esbuild/win32-x64": ["@esbuild/win32-x64@0.25.12", "", { "os": "win32", "cpu": "x64" }, "sha512-alJC0uCZpTFrSL0CCDjcgleBXPnCrEAhTBILpeAp7M/OFgoqtAetfBzX0xM00MUsVVPpVjlPuMbREqnZCXaTnA=="], + "@pandacss/dev/@clack/prompts/@clack/core": ["@clack/core@1.4.2", "", { "dependencies": { "fast-wrap-ansi": "^0.2.0", "sisteransi": "^1.0.5" } }, "sha512-0Ty/1Gfm+Kb07sXcuESjyKfwEhSy4Ns1AgeEisHb/bDY5fWme0tTeTkU14T1Gmcs17YIjB/teiDe4uaCghbYqQ=="], + "@pandacss/plugin-lightningcss/lightningcss/lightningcss-android-arm64": ["lightningcss-android-arm64@1.31.1", "", { "os": "android", "cpu": "arm64" }, "sha512-HXJF3x8w9nQ4jbXRiNppBCqeZPIAfUo8zE/kOEGbW5NZvGc/K7nMxbhIr+YlFlHW5mpbg/YFPdbnCh1wAXCKFg=="], "@pandacss/plugin-lightningcss/lightningcss/lightningcss-darwin-arm64": ["lightningcss-darwin-arm64@1.31.1", "", { "os": "darwin", "cpu": "arm64" }, "sha512-02uTEqf3vIfNMq3h/z2cJfcOXnQ0GRwQrkmPafhueLb2h7mqEidiCzkE4gBMEH65abHRiQvhdcQ+aP0D0g67sg=="], @@ -5037,8 +4935,6 @@ "@pandacss/plugin-vue/@vue/compiler-sfc/postcss": ["postcss@8.5.26", "", { "dependencies": { "nanoid": "^3.3.17", "picocolors": "^1.1.1", "source-map-js": "^1.2.1" } }, "sha512-u82N74LFzG8ca+dD8puPnplTXoGH4fTPpVGuIbt36G3qvNlkvfD0lEAZSxaly3KX8TS/L1A1gsCEmvKmBcVbkQ=="], - "@pnpm/read-project-manifest/read-yaml-file/js-yaml": ["js-yaml@4.3.1", "", { "dependencies": { "argparse": "^2.0.1" }, "bin": { "js-yaml": "bin/js-yaml.js" } }, "sha512-CY6crGq313MX8GkwvB7tzgp99vjQxY1++5y10/BKN/GUfHqWaOGQMNZkBvqSzsZKWk/ijwHlWzzkLulsGHhjWQ=="], - "@solidjs/start/shiki/@shikijs/core": ["@shikijs/core@1.29.2", "", { "dependencies": { "@shikijs/engine-javascript": "1.29.2", "@shikijs/engine-oniguruma": "1.29.2", "@shikijs/types": "1.29.2", "@shikijs/vscode-textmate": "^10.0.1", "@types/hast": "^3.0.4", "hast-util-to-html": "^9.0.4" } }, "sha512-vju0lY9r27jJfOY4Z7+Rt/nIOjzJpZ3y+nYpqtUZInVoXQ/TJZcfGnNOGnKjFdVZb8qexiCuSlZRKcGfhhTTZQ=="], "@solidjs/start/shiki/@shikijs/engine-javascript": ["@shikijs/engine-javascript@1.29.2", "", { "dependencies": { "@shikijs/types": "1.29.2", "@shikijs/vscode-textmate": "^10.0.1", "oniguruma-to-es": "^2.2.0" } }, "sha512-iNEZv4IrLYPv64Q6k7EPpOCE/nuvGiKl7zxdq0WFuRPF5PAE9PRo2JGq/d8crLusM59BRemJ4eOqrFrC4wiQ+A=="], @@ -5115,8 +5011,6 @@ "@vercel/cli-exec/execa/human-signals": ["human-signals@2.1.0", "", {}, "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw=="], - "@vercel/cli-exec/execa/signal-exit": ["signal-exit@3.0.7", "", {}, "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ=="], - "@vercel/express/ts-morph/@ts-morph/common": ["@ts-morph/common@0.11.1", "", { "dependencies": { "fast-glob": "^3.2.7", "minimatch": "^3.0.4", "mkdirp": "^1.0.4", "path-browserify": "^1.0.1" } }, "sha512-7hWZS0NRpEsNV8vWJzg7FEz6V8MaLNeJOmwmghqUXTpzk16V1LLZhdo+4QvE/+zv4cVci0OviuJFnqhEfoV3+g=="], "@vercel/express/ts-morph/code-block-writer": ["code-block-writer@10.1.1", "", {}, "sha512-67ueh2IRGst/51p0n6FvPrnRjAGHY5F8xdjkgrYE7DDzpJe6qA07RYQ9VcoUeo5ATOjSOiWpSL3SWBRRbempMw=="], @@ -5155,8 +5049,6 @@ "@vercel/rust/execa/human-signals": ["human-signals@2.1.0", "", {}, "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw=="], - "@vercel/rust/execa/signal-exit": ["signal-exit@3.0.7", "", {}, "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ=="], - "@vercel/static-build/ts-morph/@ts-morph/common": ["@ts-morph/common@0.11.1", "", { "dependencies": { "fast-glob": "^3.2.7", "minimatch": "^3.0.4", "mkdirp": "^1.0.4", "path-browserify": "^1.0.1" } }, "sha512-7hWZS0NRpEsNV8vWJzg7FEz6V8MaLNeJOmwmghqUXTpzk16V1LLZhdo+4QvE/+zv4cVci0OviuJFnqhEfoV3+g=="], "@vercel/static-build/ts-morph/code-block-writer": ["code-block-writer@10.1.1", "", {}, "sha512-67ueh2IRGst/51p0n6FvPrnRjAGHY5F8xdjkgrYE7DDzpJe6qA07RYQ9VcoUeo5ATOjSOiWpSL3SWBRRbempMw=="], @@ -5177,6 +5069,8 @@ "ansi-align/string-width/emoji-regex": ["emoji-regex@8.0.0", "", {}, "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="], + "ansi-align/string-width/strip-ansi": ["strip-ansi@6.0.1", "", { "dependencies": { "ansi-regex": "^5.0.1" } }, "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A=="], + "archiver-utils/glob/minimatch": ["minimatch@9.0.9", "", { "dependencies": { "brace-expansion": "^2.0.2" } }, "sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg=="], "archiver-utils/glob/path-scurry": ["path-scurry@1.11.1", "", { "dependencies": { "lru-cache": "^10.2.0", "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" } }, "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA=="], @@ -5203,9 +5097,9 @@ "clipboardy/execa/onetime": ["onetime@6.0.0", "", { "dependencies": { "mimic-fn": "^4.0.0" } }, "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ=="], - "clipboardy/execa/strip-final-newline": ["strip-final-newline@3.0.0", "", {}, "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw=="], + "clipboardy/execa/signal-exit": ["signal-exit@4.1.0", "", {}, "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw=="], - "cliui/strip-ansi/ansi-regex": ["ansi-regex@6.3.0", "", {}, "sha512-WpDfL7NO6j7tH88IDBNVdUJxDh9nmCteAVW9dsep846XdwF4naCBK+/tGLX3KJgcpgMRXCFlTM2hKGoK9FsdrQ=="], + "clipboardy/execa/strip-final-newline": ["strip-final-newline@3.0.0", "", {}, "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw=="], "constantinople/@babel/types/@babel/helper-string-parser": ["@babel/helper-string-parser@7.29.7", "", {}, "sha512-Pb5ijPrZ89GDH8223L4UP8i6QApWxs04RbPQJTeWDV0/keR2E36MeKnyr6LYmUUvqRRI+Iv87SuF1W6ErINzYw=="], @@ -5313,8 +5207,6 @@ "react-docgen/@babel/types/@babel/helper-string-parser": ["@babel/helper-string-parser@7.29.7", "", {}, "sha512-Pb5ijPrZ89GDH8223L4UP8i6QApWxs04RbPQJTeWDV0/keR2E36MeKnyr6LYmUUvqRRI+Iv87SuF1W6ErINzYw=="], - "read-yaml-file/js-yaml/argparse": ["argparse@1.0.10", "", { "dependencies": { "sprintf-js": "~1.0.2" } }, "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg=="], - "readdir-glob/minimatch/brace-expansion": ["brace-expansion@2.1.4", "", { "dependencies": { "balanced-match": "^1.0.0" } }, "sha512-hGfVzPxthbf3+2yjg/RBs60cB0FhqBS/zvdV/4wn4/BmN0bNMMHPc4V/BbFieqf1TKAGGAHnY4eSjajCl0f2Xg=="], "rollup-plugin-visualizer/open/wsl-utils": ["wsl-utils@1.0.0", "", { "dependencies": { "is-wsl": "^3.1.0", "powershell-utils": "^0.1.0" } }, "sha512-Hl0ZOAs672vg+06kfujwRhoS6/jehvULrlFkuF2dRu6pHgA8U06h3xqNIqNNU1LTXPcedxByAR4GS6pwQK0mgA=="], @@ -5379,8 +5271,6 @@ "storybook/esbuild/@esbuild/win32-x64": ["@esbuild/win32-x64@0.28.2", "", { "os": "win32", "cpu": "x64" }, "sha512-5ebpxr3nWMzrL/rnUI755Jkuee0bHL/Gq0WTF9lvcpv73wAp5eu8MfBUgWK9bhWvZjj7yX8etf/8tI8Ney695g=="], - "string-width/strip-ansi/ansi-regex": ["ansi-regex@6.3.0", "", {}, "sha512-WpDfL7NO6j7tH88IDBNVdUJxDh9nmCteAVW9dsep846XdwF4naCBK+/tGLX3KJgcpgMRXCFlTM2hKGoK9FsdrQ=="], - "table/string-width/emoji-regex": ["emoji-regex@8.0.0", "", {}, "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="], "tailwindcss/chokidar/glob-parent": ["glob-parent@5.1.2", "", { "dependencies": { "is-glob": "^4.0.1" } }, "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow=="], @@ -5577,14 +5467,6 @@ "wrap-ansi-cjs/string-width/emoji-regex": ["emoji-regex@8.0.0", "", {}, "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="], - "wrap-ansi/strip-ansi/ansi-regex": ["ansi-regex@6.3.0", "", {}, "sha512-WpDfL7NO6j7tH88IDBNVdUJxDh9nmCteAVW9dsep846XdwF4naCBK+/tGLX3KJgcpgMRXCFlTM2hKGoK9FsdrQ=="], - - "write-yaml-file/write-file-atomic/signal-exit": ["signal-exit@3.0.7", "", {}, "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ=="], - - "yargs/string-width/strip-ansi": ["strip-ansi@7.2.0", "", { "dependencies": { "ansi-regex": "^6.2.2" } }, "sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w=="], - - "@manypkg/find-root/find-up/locate-path/p-locate": ["p-locate@4.1.0", "", { "dependencies": { "p-limit": "^2.2.0" } }, "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A=="], - "@mapbox/node-pre-gyp/node-fetch/whatwg-url/tr46": ["tr46@0.0.3", "", {}, "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw=="], "@mapbox/node-pre-gyp/node-fetch/whatwg-url/webidl-conversions": ["webidl-conversions@3.0.1", "", {}, "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ=="], @@ -5689,10 +5571,6 @@ "vite-plugin-inspect/open/wsl-utils/powershell-utils": ["powershell-utils@0.1.0", "", {}, "sha512-dM0jVuXJPsDN6DvRpea484tCUaMiXWjuCn++HGTqUWzGDjv5tZkEZldAJ/UMlqRYGFrD/etByo4/xOuC/snX2A=="], - "yargs/string-width/strip-ansi/ansi-regex": ["ansi-regex@6.3.0", "", {}, "sha512-WpDfL7NO6j7tH88IDBNVdUJxDh9nmCteAVW9dsep846XdwF4naCBK+/tGLX3KJgcpgMRXCFlTM2hKGoK9FsdrQ=="], - - "@manypkg/find-root/find-up/locate-path/p-locate/p-limit": ["p-limit@2.3.0", "", { "dependencies": { "p-try": "^2.0.0" } }, "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w=="], - "@solidjs/start/shiki/@shikijs/engine-javascript/oniguruma-to-es/regex": ["regex@5.1.1", "", { "dependencies": { "regex-utilities": "^2.3.0" } }, "sha512-dN5I359AVGPnwzJm2jN1k0W9LPZ+ePvoOeVMMfqIMFz53sSwXkxaJoxr50ptnsC771lK95BnTrVSZxq0b9yCGw=="], "@solidjs/start/shiki/@shikijs/engine-javascript/oniguruma-to-es/regex-recursion": ["regex-recursion@5.1.1", "", { "dependencies": { "regex": "^5.1.1", "regex-utilities": "^2.3.0" } }, "sha512-ae7SBCbzVNrIjgSbh7wMznPcQel1DNlDtzensnFxpiNpXt1U2ju/bHugH422r+4LAVS1FpW1YCwilmnNsjum9w=="], diff --git a/package.json b/package.json index 0637b7656f..002bd0c0ac 100644 --- a/package.json +++ b/package.json @@ -38,7 +38,7 @@ }, "devDependencies": { "@biomejs/biome": "2.5.8", - "@changesets/cli": "2.31.1", + "@changesets/cli": "3.0.1", "@shikijs/langs": "4.4.3", "@shikijs/themes": "4.4.3", "@types/bun": "1.3.14", From df05f5acf902a88b205768f41a2c8e4f5de21475 Mon Sep 17 00:00:00 2001 From: Segun Adebayo Date: Thu, 20 Aug 2026 14:47:00 +0200 Subject: [PATCH 4/5] fix(ci): rename changesets action inputs for v2 (#3984) changesets/action@v2 renamed every input this workflow passes, and the renovate bump only changed the version. Releases have been failing since with "The following inputs have been renamed". version -> version-script, publish -> publish-script, title -> pr-title, commit -> commit-message. --- .github/workflows/release.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 657410a0f6..dfa74627ab 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -37,9 +37,9 @@ jobs: id: changesets uses: changesets/action@v2.1.1 with: - version: bun run version - publish: bun run release - title: 'chore: release packages' - commit: 'chore: release packages' + version-script: bun run version + publish-script: bun run release + pr-title: 'chore: release packages' + commit-message: 'chore: release packages' env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} From 7c0ef206e54ddc233b33d2bac90bd77b6c4ac918 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 20 Aug 2026 15:16:15 +0200 Subject: [PATCH 5/5] chore(deps): update dependency @solidjs/start to v2 (#3969) * chore(deps): update dependency @solidjs/start to v2 * chore(templates): migrate solid-start template to SolidStart v2 SolidStart v2 drops Vinxi and moves framework config into Vite, so the version bump alone left the template unbuildable. - replace app.config.ts with vite.config.ts using solidStart() + nitro() - switch scripts from vinxi to vite dev/build/preview - drop vinxi, add nitro and vite, require node >= 24 - point tsconfig types at @solidjs/start/env - update README build instructions for the nitro preset Claude-Session: https://claude.ai/code/session_01Dgb9GVYPukRxv3xUaZaLjd --------- Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Segun Adebayo --- bun.lock | 515 +++++++-------------------- templates/solid-start/README.md | 4 +- templates/solid-start/app.config.ts | 3 - templates/solid-start/package.json | 19 +- templates/solid-start/tsconfig.json | 2 +- templates/solid-start/vite.config.ts | 7 + 6 files changed, 146 insertions(+), 404 deletions(-) delete mode 100644 templates/solid-start/app.config.ts create mode 100644 templates/solid-start/vite.config.ts diff --git a/bun.lock b/bun.lock index bb21c54cf1..5058cf316a 100644 --- a/bun.lock +++ b/bun.lock @@ -523,10 +523,13 @@ "@ark-ui/solid": "workspace*", "@solidjs/meta": "0.29.4", "@solidjs/router": "1.0.0", - "@solidjs/start": "1.3.2", + "@solidjs/start": "2.0.2", "lucide-solid": "1.31.0", + "nitro": "3.0.260610-beta", "solid-js": "1.9.14", - "vinxi": "0.5.11", + }, + "devDependencies": { + "vite": "8.2.1", }, }, "templates/svelte-kit": { @@ -659,7 +662,7 @@ "@babel/helper-skip-transparent-expression-wrappers": ["@babel/helper-skip-transparent-expression-wrappers@7.29.7", "", { "dependencies": { "@babel/traverse": "^7.29.7", "@babel/types": "^7.29.7" } }, "sha512-brcMGQaVzIeUb+6/bs1Av0f8YuNNjKY2JyvfRCsFuFsdKccEQ5Ges2y74D74NZ1Rz8lKJ9ksJkfqwQFJ/iNEyQ=="], - "@babel/helper-string-parser": ["@babel/helper-string-parser@8.0.0", "", {}, "sha512-6mJgmFFFIIO82vvoLt9XtRC7/TkzXfts1t/SpRX4IHSzMgqoPYCWesVu1udUPUWioAE/2fcG6WuI8zrkE1gwrg=="], + "@babel/helper-string-parser": ["@babel/helper-string-parser@7.29.7", "", {}, "sha512-Pb5ijPrZ89GDH8223L4UP8i6QApWxs04RbPQJTeWDV0/keR2E36MeKnyr6LYmUUvqRRI+Iv87SuF1W6ErINzYw=="], "@babel/helper-validator-identifier": ["@babel/helper-validator-identifier@7.29.7", "", {}, "sha512-qehxGkRj55h/ff8EMaJ+cYhyaKlHIxqYDn682wQD7RNp9UujOQsHog2uS0r2vzr4pW+sXf90NeeayjcNaX3fFg=="], @@ -685,7 +688,7 @@ "@babel/traverse": ["@babel/traverse@7.29.8", "", { "dependencies": { "@babel/code-frame": "^7.29.7", "@babel/generator": "^7.29.8", "@babel/helper-globals": "^7.29.7", "@babel/parser": "^7.29.8", "@babel/template": "^7.29.7", "@babel/types": "^7.29.8", "debug": "^4.3.1" } }, "sha512-I5z7H3bf/41ktsNVLtpN0wAa336HkqIHQ5BuPLEhTkt1jVSyZpeNKIzTgEWmlxjdg81R0IgUCcaE+Ok3NvrfZg=="], - "@babel/types": ["@babel/types@8.0.4", "", { "dependencies": { "@babel/helper-string-parser": "^8.0.0", "@babel/helper-validator-identifier": "^8.0.4" } }, "sha512-eY+Yn3dCqTGmyiq2QRU66lA5FL8lqqqvecHt0fF3uHONIa7ToYsaCiWV8lOKqAs0Rb2SjixiKFROngnulPtt2g=="], + "@babel/types": ["@babel/types@7.29.8", "", { "dependencies": { "@babel/helper-string-parser": "^7.29.7", "@babel/helper-validator-identifier": "^7.29.7" } }, "sha512-Vj1jF3cPfxg7OAfoI7QnVKLoILlm2JF9pnVHrX8qx7AHMiYWT+NDAA7jChlNgRS4WTLc/fD1lXLmPixluj+3Gg=="], "@bcoe/v8-coverage": ["@bcoe/v8-coverage@1.0.2", "", {}, "sha512-6zABk/ECA/QYSCQ1NGiVwwbQerUCZ+TQbp64Q3AgmfNvurHH0j8TtXa1qbShXA6qqkpAj4V5W8pP6mLe1mcMqA=="], @@ -777,10 +780,6 @@ "@csstools/selector-specificity": ["@csstools/selector-specificity@5.0.0", "", { "peerDependencies": { "postcss-selector-parser": "^7.0.0" } }, "sha512-PCqQV3c4CoVm3kdPhyeZ07VmBRdH2EpMFA/pd9OASpOEC3aXNGoqPDAZ80D0cLpMBxnmk0+yNhGsEx31hq7Gtw=="], - "@deno/shim-deno": ["@deno/shim-deno@0.19.2", "", { "dependencies": { "@deno/shim-deno-test": "^0.5.0", "which": "^4.0.0" } }, "sha512-q3VTHl44ad8T2Tw2SpeAvghdGOjlnLPDNO2cpOxwMrBE/PVas6geWpbpIgrM+czOCH0yejp0yi8OaTuB+NU40Q=="], - - "@deno/shim-deno-test": ["@deno/shim-deno-test@0.5.0", "", {}, "sha512-4nMhecpGlPi0cSzT67L+Tm+GOJqvuk8gqHBziqcUQOarnuIax1z96/gJHCSIz2Z0zhxE6Rzwb3IZXPtFh51j+w=="], - "@dxup/nuxt": ["@dxup/nuxt@0.5.7", "", { "dependencies": { "@dxup/unimport": "^0.1.2", "@nuxt/kit": "^4.5.2", "@vue/compiler-dom": "^3.5.41", "chokidar": "^5.0.0", "knitwork": "^1.3.0", "magic-string": "^1.2.0", "pathe": "^2.0.3", "tinyglobby": "^0.2.17", "unplugin": "^3.3.0" } }, "sha512-JLa4Xfr3s1ToCl4eSipyR+5eXeT7wyeqMRkKsSWXID04o8FdT0cSqKQxTuVNBk/UrW1mQIZ1Q3t4CAFFiV90Kw=="], "@dxup/unimport": ["@dxup/unimport@0.1.2", "", {}, "sha512-/B8YJGPzaYq1NbsQmwgP8EZqg40NpTw4ZB3suuI0TplbxKHeK94jeaawLmVhCv+YwUnOpiWEz9U6SeThku/8JQ=="], @@ -1227,7 +1226,7 @@ "@parcel/watcher-linux-x64-musl": ["@parcel/watcher-linux-x64-musl@2.6.0", "", { "os": "linux", "cpu": "x64" }, "sha512-tkBYKt7YQrjIJWYDnto2YgO8MRkjlMTSNoRHzsXinBqbLdeOM3L32wPZJvIZxqaLMfSlS/4sUjH/6STVP/XDLw=="], - "@parcel/watcher-wasm": ["@parcel/watcher-wasm@2.3.0", "", { "dependencies": { "is-glob": "^4.0.3", "micromatch": "^4.0.5", "napi-wasm": "^1.1.0" } }, "sha512-ejBAX8H0ZGsD8lSICDNyMbSEtPMWgDL0WFCt/0z7hyf5v8Imz4rAM8xY379mBsECkq/Wdqa5WEDLqtjZ+6NxfA=="], + "@parcel/watcher-wasm": ["@parcel/watcher-wasm@2.6.0", "", { "dependencies": { "is-glob": "^4.0.3", "napi-wasm": "^1.1.0", "picomatch": "^4.0.4" } }, "sha512-dtjbDxKSDPQ8AmA+pS4OFaHE1FKrjtGpLGBxw85uKFkRorjNbvDM/aFPgqosu40wprbp1xw2ZSxIKqghCUHe2w=="], "@parcel/watcher-win32-arm64": ["@parcel/watcher-win32-arm64@2.6.0", "", { "os": "win32", "cpu": "arm64" }, "sha512-gIZAP23jaHjGWasY/TY6yL7NHFClf0Ga7FN+iINvk+KN94rhm94lYZhFsbYFNcA04/onvGD9kKmiJLJB2HbNwQ=="], @@ -1397,7 +1396,7 @@ "@solidjs/router": ["@solidjs/router@1.0.0", "", { "peerDependencies": { "solid-js": "^1.8.6" } }, "sha512-cCSk1hvgCowiMa9bzzYWHiLu1U4E22+DfJe6/rOwAyECKrxc3jrd5QnoW3sDDJtW+e077cz/M67bPl3DqOBw1Q=="], - "@solidjs/start": ["@solidjs/start@1.3.2", "", { "dependencies": { "@tanstack/server-functions-plugin": "1.121.21", "@vinxi/plugin-directives": "^0.5.0", "@vinxi/server-components": "^0.5.0", "cookie-es": "^2.0.0", "defu": "^6.1.2", "error-stack-parser": "^2.1.4", "html-to-image": "^1.11.11", "radix3": "^1.1.0", "seroval": "^1.5.0", "seroval-plugins": "^1.5.0", "shiki": "^1.26.1", "source-map-js": "^1.0.2", "terracotta": "^1.0.4", "tinyglobby": "^0.2.2", "vite-plugin-solid": "^2.11.10" }, "peerDependencies": { "vinxi": "^0.5.7" } }, "sha512-tasDl3utVbtP0rr4InB3ntBIFV2upvEiFrOOCkRrAA3yBfjx9elpxnc94sJQXo65PNYdAAAkPIC6h93vLrtwHg=="], + "@solidjs/start": ["@solidjs/start@2.0.2", "", { "dependencies": { "@babel/core": "^7.29.7", "@babel/traverse": "^7.29.7", "@babel/types": "^7.29.7", "@solidjs/meta": "^0.29.4", "@types/babel__traverse": "^7.28.0", "@types/micromatch": "^4.0.10", "cookie-es": "^3.1.1", "defu": "^6.1.7", "error-stack-parser": "^2.1.4", "fast-glob": "^3.3.3", "h3": "^2.0.1-rc.26", "html-to-image": "^1.11.13", "micromatch": "^4.0.8", "oxc-parser": "^0.141.0", "path-to-regexp": "^8.4.2", "pathe": "^2.0.3", "radix3": "^1.1.2", "seroval": "^1.6.0", "seroval-plugins": "^1.6.0", "shiki": "^4.3.1", "solid-js": "^1.9.14", "source-map-js": "^1.2.1", "srvx": "^0.12.4", "terracotta": "^1.1.1", "vite-plugin-solid": "^2.11.13" }, "peerDependencies": { "@solidjs/router": ">=0.16.0 <2.0.0-0", "vite": "^8 || ^9" }, "optionalPeers": ["@solidjs/router"] }, "sha512-GubWk3pz4ZbamcIGg4viq7/cF2M3F08E3xhiTAXO1k6M1tSn2F3dCb46DLgpj9iBzmNebtZG5GjekqZJI77a3w=="], "@solidjs/testing-library": ["@solidjs/testing-library@0.8.10", "", { "dependencies": { "@testing-library/dom": "^10.4.0" }, "peerDependencies": { "@solidjs/router": ">=0.9.0", "solid-js": ">=1.0.0" }, "optionalPeers": ["@solidjs/router"] }, "sha512-qdeuIerwyq7oQTIrrKvV0aL9aFeuwTd86VYD3afdq5HYEwoox1OBTJy4y8A3TFZr8oAR0nujYgCzY/8wgHGfeQ=="], @@ -1479,18 +1478,12 @@ "@tanstack/devtools-event-client": ["@tanstack/devtools-event-client@0.4.4", "", { "bin": { "intent": "./bin/intent.js" } }, "sha512-6T5Yop/793YI+H+5J8Hsyj4kCih9sl4t3ElLgKioW5hk3ocn+ZdSJ94tT7vL7uabxSugWYBZlOTMPzEw2puvQw=="], - "@tanstack/directive-functions-plugin": ["@tanstack/directive-functions-plugin@1.121.21", "", { "dependencies": { "@babel/code-frame": "7.26.2", "@babel/core": "^7.26.8", "@babel/traverse": "^7.26.8", "@babel/types": "^7.26.8", "@tanstack/router-utils": "^1.121.21", "babel-dead-code-elimination": "^1.0.10", "tiny-invariant": "^1.3.3" }, "peerDependencies": { "vite": ">=6.0.0" } }, "sha512-B9z/HbF7gJBaRHieyX7f2uQ4LpLLAVAEutBZipH6w+CYD6RHRJvSVPzECGHF7icFhNWTiJQL2QR6K07s59yzEw=="], - "@tanstack/form-core": ["@tanstack/form-core@1.33.5", "", { "dependencies": { "@tanstack/devtools-event-client": "^0.4.1", "@tanstack/pacer-lite": "^0.1.1", "@tanstack/store": "^0.11.0" } }, "sha512-3dfx9MBP0aq5sXKteikG629X9oviptrQj0IFRk9YGcb+lB7Kv5x8S17oOSk1wUWgjQZ4xVJEMbKwOAODymocgA=="], "@tanstack/pacer-lite": ["@tanstack/pacer-lite@0.1.1", "", {}, "sha512-y/xtNPNt/YeyoVxE/JCx+T7yjEzpezmbb+toK8DDD1P4m7Kzs5YR956+7OKexG3f8aXgC3rLZl7b1V+yNUSy5w=="], "@tanstack/react-virtual": ["@tanstack/react-virtual@3.14.9", "", { "dependencies": { "@tanstack/virtual-core": "3.17.7" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" } }, "sha512-qZyr0FZDP8rDC4WBhsryIZmAd9bveJvFGUJJtskWaew6/0dTRS6wZxnR6VQ5bY2KwL3LjerrHqQLk3a0GKcPXQ=="], - "@tanstack/router-utils": ["@tanstack/router-utils@1.162.2", "", { "dependencies": { "@babel/generator": "^7.28.5", "@babel/parser": "^7.28.5", "@babel/types": "^7.28.5", "ansis": "^4.1.0", "babel-dead-code-elimination": "^1.0.12", "diff": "^8.0.2", "pathe": "^2.0.3", "tinyglobby": "^0.2.15" } }, "sha512-hTWqJtqIFFdvuCl8WXNyrodp2L9zo2G37xKRrcVmVRWpAB2h+U1LuRAfS4tsFTiWOIoE/B+WDVFB8JpoEdw6jQ=="], - - "@tanstack/server-functions-plugin": ["@tanstack/server-functions-plugin@1.121.21", "", { "dependencies": { "@babel/code-frame": "7.26.2", "@babel/core": "^7.26.8", "@babel/plugin-syntax-jsx": "^7.25.9", "@babel/plugin-syntax-typescript": "^7.25.9", "@babel/template": "^7.26.8", "@babel/traverse": "^7.26.8", "@babel/types": "^7.26.8", "@tanstack/directive-functions-plugin": "1.121.21", "babel-dead-code-elimination": "^1.0.9", "tiny-invariant": "^1.3.3" } }, "sha512-a05fzK+jBGacsSAc1vE8an7lpBh4H0PyIEcivtEyHLomgSeElAJxm9E2It/0nYRZ5Lh23m0okbhzJNaYWZpAOg=="], - "@tanstack/solid-virtual": ["@tanstack/solid-virtual@3.13.36", "", { "dependencies": { "@tanstack/virtual-core": "3.17.7" }, "peerDependencies": { "solid-js": "^1.3.0" } }, "sha512-9x4Eg3M+t7cY0/lswB6JnK1C/3YcsdBttUYQgSre+5zcwVJMZnp0Gy3mT++jeSN1bi7M5pxUPnAVoD1YE9DuLQ=="], "@tanstack/store": ["@tanstack/store@0.11.1", "", {}, "sha512-mzTOBhypOuDJAy/D8n2MfUZ1HFkXnmSETviRyhqEC8LUE7/IZQExOTxMANj3KjTofYTkFNpBY67qaVrT41YccA=="], @@ -1705,12 +1698,6 @@ "@vercel/vc-native-linux-x64": ["@vercel/vc-native-linux-x64@59.1.4", "", { "os": "linux", "cpu": "x64" }, "sha512-y8XjBbyJMBZQVRkJTO2XK6hubbW8Hv0o/UNvN4OFWU7qpdcyDflYJw4FhaLuS63dYtdTK9k6NT5/RBDLxRSwYQ=="], - "@vinxi/listhen": ["@vinxi/listhen@1.5.6", "", { "dependencies": { "@parcel/watcher": "^2.3.0", "@parcel/watcher-wasm": "2.3.0", "citty": "^0.1.5", "clipboardy": "^4.0.0", "consola": "^3.2.3", "defu": "^6.1.4", "get-port-please": "^3.1.2", "h3": "^1.10.0", "http-shutdown": "^1.2.2", "jiti": "^1.21.0", "mlly": "^1.5.0", "node-forge": "^1.3.1", "pathe": "^1.1.2", "std-env": "^3.7.0", "ufo": "^1.3.2", "untun": "^0.1.3", "uqr": "^0.1.2" }, "bin": { "listen": "bin/listhen.mjs", "listhen": "bin/listhen.mjs" } }, "sha512-WSN1z931BtasZJlgPp704zJFnQFRg7yzSjkm3MzAWQYe4uXFXlFr1hc5Ac2zae5/HDOz5x1/zDM5Cb54vTCnWw=="], - - "@vinxi/plugin-directives": ["@vinxi/plugin-directives@0.5.1", "", { "dependencies": { "@babel/parser": "^7.23.5", "acorn": "^8.10.0", "acorn-jsx": "^5.3.2", "acorn-loose": "^8.3.0", "acorn-typescript": "^1.4.3", "astring": "^1.8.6", "magicast": "^0.2.10", "recast": "^0.23.4", "tslib": "^2.6.2" }, "peerDependencies": { "vinxi": "^0.5.5" } }, "sha512-pH/KIVBvBt7z7cXrUH/9uaqcdxjegFC7+zvkZkdOyWzs+kQD5KPf3cl8kC+5ayzXHT+OMlhGhyitytqN3cGmHg=="], - - "@vinxi/server-components": ["@vinxi/server-components@0.5.1", "", { "dependencies": { "@vinxi/plugin-directives": "0.5.1", "acorn": "^8.10.0", "acorn-loose": "^8.3.0", "acorn-typescript": "^1.4.3", "astring": "^1.8.6", "magicast": "^0.2.10", "recast": "^0.23.4" }, "peerDependencies": { "vinxi": "^0.5.5" } }, "sha512-0BsG95qac3dkhfdRZxqzqYWJE4NvPL7ILlV43B6K6ho1etXWB2e5b0IxsUAUbyqpqiXM7mSRivojuXjb2G4OsQ=="], - "@vitejs/plugin-react": ["@vitejs/plugin-react@6.0.5", "", { "dependencies": { "@rolldown/pluginutils": "^1.0.1" }, "peerDependencies": { "@rolldown/plugin-babel": "^0.1.7 || ^0.2.0", "babel-plugin-react-compiler": "^1.0.0", "vite": "^8.0.0" }, "optionalPeers": ["@rolldown/plugin-babel", "babel-plugin-react-compiler"] }, "sha512-BOVzne/NL162sMdResB25mUv+vWMF5NoAjNf09TeGlE7ZpszZWSD3winycicLJw72yeVsoCn/2kOhEuCvEShMA=="], "@vitejs/plugin-vue": ["@vitejs/plugin-vue@6.0.8", "", { "dependencies": { "@rolldown/pluginutils": "^1.0.1" }, "peerDependencies": { "vite": "^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0", "vue": "^3.2.25" } }, "sha512-0ZjgOg7oO6farnNGup7yvoM/YXZV84OZxHAwtflItNa/6zzQyVb5LNxyea3FEKEX2XlagIKzrlH7wwxkKgtiew=="], @@ -1957,10 +1944,6 @@ "acorn-jsx": ["acorn-jsx@5.3.2", "", { "peerDependencies": { "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ=="], - "acorn-loose": ["acorn-loose@8.5.2", "", { "dependencies": { "acorn": "^8.15.0" } }, "sha512-PPvV6g8UGMGgjrMu+n/f9E/tCSkNQ2Y97eFvuVdJfG11+xdIeDcLyNdC8SHcrHbRqkfwLASdplyR6B6sKM1U4A=="], - - "acorn-typescript": ["acorn-typescript@1.4.13", "", { "peerDependencies": { "acorn": ">=8.9.0" } }, "sha512-xsc9Xv0xlVfwp2o7sQ+GCQ1PgbkdcpWdTzrwXxO3xDMTAywVS3oXVOcOHuRjAPkS4P9b+yc/qNF15460v+jp4Q=="], - "agent-base": ["agent-base@7.1.4", "", {}, "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ=="], "ajv": ["ajv@8.20.0", "", { "dependencies": { "fast-deep-equal": "^3.1.3", "fast-uri": "^3.0.1", "json-schema-traverse": "^1.0.0", "require-from-string": "^2.0.2" } }, "sha512-Thbli+OlOj+iMPYFBVBfJ3OmCAnaSyNn4M1vz9T6Gka5Jt9ba/HIR56joy65tY6kx/FCF5VXNB819Y7/GUrBGA=="], @@ -1969,8 +1952,6 @@ "alien-signals": ["alien-signals@3.2.1", "", {}, "sha512-I8FjmltrfnDFoZedi5CG8DghVYNhzb/Ijluz7tCSJH0xpd0484Kowhbb1XDYOxfJpU1p5wnM2X54dA+IfGyD1g=="], - "ansi-align": ["ansi-align@3.0.1", "", { "dependencies": { "string-width": "^4.1.0" } }, "sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w=="], - "ansi-colors": ["ansi-colors@4.1.3", "", {}, "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw=="], "ansi-regex": ["ansi-regex@5.0.1", "", {}, "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ=="], @@ -2031,8 +2012,6 @@ "b4a": ["b4a@1.8.1", "", { "peerDependencies": { "react-native-b4a": "*" }, "optionalPeers": ["react-native-b4a"] }, "sha512-aiqre1Nr0B/6DgE2N5vwTc+2/oQZ4Wh1t4NznYY4E00y8LCt6NqdRv81so00oo27D8MVKTpUa/MwUUtBLXCoDw=="], - "babel-dead-code-elimination": ["babel-dead-code-elimination@1.0.12", "", { "dependencies": { "@babel/core": "^7.23.7", "@babel/parser": "^7.23.6", "@babel/traverse": "^7.23.7", "@babel/types": "^7.23.6" } }, "sha512-GERT7L2TiYcYDtYk1IpD+ASAYXjKbLTDPhBtYj7X1NuRMDTMtAx9kyBenub1Ev41lo91OHCKdmP+egTDmfQ7Ig=="], - "babel-plugin-jsx-dom-expressions": ["babel-plugin-jsx-dom-expressions@0.40.7", "", { "dependencies": { "@babel/helper-module-imports": "7.18.6", "@babel/plugin-syntax-jsx": "^7.18.6", "@babel/types": "^7.20.7", "html-entities": "2.3.3", "parse5": "^7.1.2" }, "peerDependencies": { "@babel/core": "^7.20.12" } }, "sha512-/O6JWUmjv03OI9lL2ry9bUjpD5S3PclM55RRJEyCdcFZ5W2SEA/59d+l2hNsk3gI6kiWRdRPdOtqZmsQzFN1pQ=="], "babel-preset-solid": ["babel-preset-solid@1.9.12", "", { "dependencies": { "babel-plugin-jsx-dom-expressions": "^0.40.6" }, "peerDependencies": { "@babel/core": "^7.0.0", "solid-js": "^1.9.12" }, "optionalPeers": ["solid-js"] }, "sha512-LLqnuKVDlKpyBlMPcH6qEvs/wmS9a+NczppxJ3ryS/c0O5IiSFOIBQi9GzyiGDSbcJpx4Gr87jyFTos1MyEuWg=="], @@ -2065,8 +2044,6 @@ "boolbase": ["boolbase@1.0.0", "", {}, "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww=="], - "boxen": ["boxen@8.0.1", "", { "dependencies": { "ansi-align": "^3.0.1", "camelcase": "^8.0.0", "chalk": "^5.3.0", "cli-boxes": "^3.0.0", "string-width": "^7.2.0", "type-fest": "^4.21.0", "widest-line": "^5.0.0", "wrap-ansi": "^9.0.0" } }, "sha512-F3PH5k5juxom4xktynS7MoFY+NUWH5LC4CnH11YB8NPew+HLpmBLCybSAEyb2F+4pRXhuhWqFesoQd6DAyc2hw=="], - "brace-expansion": ["brace-expansion@5.0.9", "", { "dependencies": { "balanced-match": "^4.0.2" } }, "sha512-ScQ4IuvIEF1TMlP7Zt+vjJ//9zlPb2SDcxWxM3bk8s6t6GGdJ7KO1dCcTidOPJKePW30LE/2cT7wCyPho9/Wxg=="], "braces": ["braces@3.0.3", "", { "dependencies": { "fill-range": "^7.1.1" } }, "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA=="], @@ -2075,7 +2052,7 @@ "buffer": ["buffer@6.0.3", "", { "dependencies": { "base64-js": "^1.3.1", "ieee754": "^1.2.1" } }, "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA=="], - "buffer-crc32": ["buffer-crc32@1.0.0", "", {}, "sha512-Db1SbgBS/fg/392AblrMJk97KggmvYhr4pB5ZIMTWtaivCPMWLkmb7m21cJvpvgK+J3nsU2CmmixNBZx4vFj/w=="], + "buffer-crc32": ["buffer-crc32@0.2.13", "", {}, "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ=="], "buffer-from": ["buffer-from@1.1.2", "", {}, "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ=="], @@ -2101,7 +2078,7 @@ "callsites": ["callsites@3.1.0", "", {}, "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ=="], - "camelcase": ["camelcase@8.0.0", "", {}, "sha512-8WB3Jcas3swSvjIeA2yvCJ+Miyz5l1ZmB6HFb9R1317dt9LCQoswg/BGrmAmkWVEszSrrg4RwmO46qIm2OEnSA=="], + "camelcase": ["camelcase@6.3.0", "", {}, "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA=="], "camelcase-css": ["camelcase-css@2.0.1", "", {}, "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA=="], @@ -2133,18 +2110,14 @@ "chownr": ["chownr@3.0.0", "", {}, "sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g=="], - "citty": ["citty@0.1.6", "", { "dependencies": { "consola": "^3.2.3" } }, "sha512-tskPPKEs8D2KPafUypv2gxwJP8h/OaJmC82QQGGDQcHvXX43xF2VDACcJVmZ0EuSxkpO9Kc4MlrA3q0+FG58AQ=="], + "citty": ["citty@0.2.2", "", {}, "sha512-+6vJA3L98yv+IdfKGZHBNiGW5KHn22e/JwID0Strsz8h4S/csAu/OuICwxrg44k5MRiZHWIo8XXuJgQTriRP4w=="], "cjs-module-lexer": ["cjs-module-lexer@1.2.3", "", {}, "sha512-0TNiGstbQmCFwt4akjjBg5pLRTSyj/PkWQ1ZoO2zntmg9yLqSRxwEa4iCfQLGjqhiqBfOJa7W/E8wfGrTDmlZQ=="], "clean-package": ["clean-package@2.2.0", "", { "dependencies": { "dot-prop": "^6.0.1" }, "bin": { "clean-package": "bin/main.js" } }, "sha512-vLv8kRqvh4smPDpqAYFPLEijTppAd/cfCz4yBcUGoVl/JKu6ZWKhlo+G/cAmwlSa29RudfBeuyiNEzas8bTwEQ=="], - "cli-boxes": ["cli-boxes@3.0.0", "", {}, "sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g=="], - "client-only": ["client-only@0.0.1", "", {}, "sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA=="], - "clipboardy": ["clipboardy@4.0.0", "", { "dependencies": { "execa": "^8.0.1", "is-wsl": "^3.1.0", "is64bit": "^2.0.0" } }, "sha512-5mOlNS0mhX0707P2I0aZ2V/cmHUEO/fL7VFLqszkhUsxt7RwnmrInf/eEQKlf5GzvYeHIjT+Ov1HRfNmymlG0w=="], - "cliui": ["cliui@9.0.1", "", { "dependencies": { "string-width": "^7.2.0", "strip-ansi": "^7.1.0", "wrap-ansi": "^9.0.0" } }, "sha512-k7ndgKhwoQveBL+/1tqGJYNz097I7WOvwbmmU2AR5+magtbjPWQTS1C5vzGkBC8Ym8UWRzfKUzUUqFLypY4Q+w=="], "clsx": ["clsx@2.1.1", "", {}, "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA=="], @@ -2217,7 +2190,7 @@ "crosspath": ["crosspath@2.0.0", "", { "dependencies": { "@types/node": "^17.0.36" } }, "sha512-ju88BYCQ2uvjO2bR+SsgLSTwTSctU+6Vp2ePbKPgSCZyy4MWZxYsT738DlKVRE5utUjobjPRm1MkTYKJxCmpTA=="], - "crossws": ["crossws@0.3.5", "", { "dependencies": { "uncrypto": "^0.1.3" } }, "sha512-ojKiDvcmByhwa8YYqbQI/hg7MEU0NC03+pSdEq4ZUnZR9xXpwk7E43SMNGkn+JxJGPFtNvQ48+vV2p+P1ml5PA=="], + "crossws": ["crossws@0.4.10", "", { "peerDependencies": { "srvx": ">=0.11.5" }, "optionalPeers": ["srvx"] }, "sha512-pz3oubH/dt12KjqsUB0IuXW4nwRDQ583iDsP4555Cpdqx0NoU7pGlWBcayyFI8f/l/idRpgjMEfwuOxSWJYlIA=="], "css-in-js-utils": ["css-in-js-utils@3.1.0", "", { "dependencies": { "hyphenate-style-name": "^1.0.3" } }, "sha512-fJAcud6B3rRu+KHYk+Bwf+WFL2MDCJJ1XG9x137tJQ0xYxor7XziQtuGFbWNdqrvF4Tk26O3H73nfVqXt/fW1A=="], @@ -2243,8 +2216,6 @@ "data-urls": ["data-urls@7.0.0", "", { "dependencies": { "whatwg-mimetype": "^5.0.0", "whatwg-url": "^16.0.0" } }, "sha512-23XHcCF+coGYevirZceTVD7NdJOqVn+49IHyxgszm+JIiHLoB2TkmPtsYkNWT1pvRSGkc35L6NHs0yHkN2SumA=="], - "dax-sh": ["dax-sh@0.43.2", "", { "dependencies": { "@deno/shim-deno": "~0.19.0", "undici-types": "^5.26" } }, "sha512-uULa1sSIHgXKGCqJ/pA0zsnzbHlVnuq7g8O2fkHokWFNwEGIhh5lAJlxZa1POG5En5ba7AU4KcBAvGQWMMf8rg=="], - "db0": ["db0@0.3.4", "", { "peerDependencies": { "@electric-sql/pglite": "*", "@libsql/client": "*", "better-sqlite3": "*", "drizzle-orm": "*", "mysql2": "*", "sqlite3": "*" }, "optionalPeers": ["@electric-sql/pglite", "@libsql/client", "better-sqlite3", "drizzle-orm", "mysql2", "sqlite3"] }, "sha512-RiXXi4WaNzPTHEOu8UPQKMooIbqOEyqA1t7Z6MsdxSCeb8iUC9ko3LcmsLmeUt2SM5bctfArZKkRQggKZz7JNw=="], "debug": ["debug@4.4.3", "", { "dependencies": { "ms": "^2.1.3" }, "peerDependencies": { "supports-color": "*" }, "optionalPeers": ["supports-color"] }, "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA=="], @@ -2281,8 +2252,6 @@ "destr": ["destr@2.0.5", "", {}, "sha512-ugFTXCtDZunbzasqBxrK93Ik/DRYsO6S/fedkWEMKqt04xZ4csmnmwGDBAb07QWNaGMAmnTIemsYZCksjATwsA=="], - "destroy": ["destroy@1.2.0", "", {}, "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg=="], - "detect-libc": ["detect-libc@2.1.2", "", {}, "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ=="], "devalue": ["devalue@5.9.0", "", {}, "sha512-RWrqdArjvPbsATEhOPUo6Wndc/iWnkWKlhIrdlF3zMMYo/c3CVtoaVAyLtWxz5h8nSlkHzxnzV2uLydPXmtF+A=="], @@ -2331,9 +2300,7 @@ "electron-to-chromium": ["electron-to-chromium@1.5.407", "", {}, "sha512-4R8XgQOdfxexCd/u63lRm6wCHjECwI45MV9wxAs2ggtfWe2hwlo1ql97jKsju2IcJ+jFSTwBssyYoiWhh7mauQ=="], - "emoji-regex": ["emoji-regex@10.6.0", "", {}, "sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A=="], - - "emoji-regex-xs": ["emoji-regex-xs@1.0.0", "", {}, "sha512-LRlerrMYoIDrT6jgpeZ2YYl/L8EulRTt5hQcYjy5AInh7HWXKimpqx68aknBFpGL2+/IcogTcaydJEgaTmOpDg=="], + "emoji-regex": ["emoji-regex@8.0.0", "", {}, "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="], "empathic": ["empathic@2.0.1", "", {}, "sha512-YGRs8knHhKHVShLkFET/rWAU8kmHbOV5LwN938RHI0pljAJ1Gf6SzXsSmRaEzcXTtOOmVqJ5+WtQPL5uigY50Q=="], @@ -2343,6 +2310,8 @@ "entities": ["entities@7.0.1", "", {}, "sha512-TWrgLOFUQTH994YUyl1yT4uyavY5nNB5muff+RtWaqNVCAK408b5ZnnbNAUEWLTCpum9w6arT70i1XdQ4UeOPA=="], + "env-runner": ["env-runner@0.1.16", "", { "dependencies": { "crossws": "^0.4.8", "exsolve": "^1.1.0", "httpxy": "^0.5.4", "srvx": "^0.11.19" }, "peerDependencies": { "@netlify/runtime": "^4.1.23", "@vercel/queue": ">=0.2.0", "miniflare": "^4.20260515.0", "wrangler": "^4.0.0" }, "optionalPeers": ["@netlify/runtime", "@vercel/queue", "miniflare", "wrangler"], "bin": { "env-runner": "dist/cli.mjs" } }, "sha512-2LRJM4P2KLX6J83QZZrMqvgCDt/D5ea7wPcI3yYiy5cG/9rX5QwdwZFx0D7ktWnjdRyZxYjttGGorb5nFqb1CA=="], + "error-ex": ["error-ex@1.3.4", "", { "dependencies": { "is-arrayish": "^0.2.1" } }, "sha512-sqQamAnR14VgCr1A618A3sGrygcpK+HEbenA/HiEAkkUwcZIIB/tgWqHFxWgOyDh4nB4JCRimh79dR5Ywc9MDQ=="], "error-stack-parser": ["error-stack-parser@2.1.4", "", { "dependencies": { "stackframe": "^1.3.4" } }, "sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ=="], @@ -2403,8 +2372,6 @@ "event-target-shim": ["event-target-shim@5.0.1", "", {}, "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ=="], - "eventemitter3": ["eventemitter3@4.0.7", "", {}, "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw=="], - "events": ["events@3.3.0", "", {}, "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q=="], "events-intercept": ["events-intercept@2.0.0", "", {}, "sha512-blk1va0zol9QOrdZt0rFXo5KMkNPVSp92Eju/Qz8THwKWKRKeE0T8Br/1aW6+Edkyq9xHYgYxn2QtOnUKPUp+Q=="], @@ -2471,8 +2438,6 @@ "fnv1a-64": ["fnv1a-64@0.1.2", "", {}, "sha512-mJbcILTPybAR1jdOwt/lVv8N2cffeJFFP+gVbSAwLEx1ujXH27RpPd8Rokec/KX9c76UYIB6Co+H4lQzxPnJfA=="], - "follow-redirects": ["follow-redirects@1.16.0", "", { "peerDependencies": { "debug": "*" }, "optionalPeers": ["debug"] }, "sha512-y5rN/uOsadFT/JfYwhxRS5R7Qce+g3zG97+JrtFZlC9klX/W5hD7iiLzScI4nZqUS7DNUdhPgw4xI8W2LuXlUw=="], - "for-each": ["for-each@0.3.5", "", { "dependencies": { "is-callable": "^1.2.7" } }, "sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg=="], "foreground-child": ["foreground-child@3.3.1", "", { "dependencies": { "cross-spawn": "^7.0.6", "signal-exit": "^4.0.1" } }, "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw=="], @@ -2535,7 +2500,7 @@ "gzip-size": ["gzip-size@7.0.0", "", { "dependencies": { "duplexer": "^0.1.2" } }, "sha512-O1Ld7Dr+nqPnmGpdhzLmMTQ4vAsD+rHwMm1NLUmoUFFymBOMKxCCrtDxqdBRYXdeEPEi3SyoR4TizJLQrnKBNA=="], - "h3": ["h3@1.15.3", "", { "dependencies": { "cookie-es": "^1.2.2", "crossws": "^0.3.4", "defu": "^6.1.4", "destr": "^2.0.5", "iron-webcrypto": "^1.2.1", "node-mock-http": "^1.0.0", "radix3": "^1.1.2", "ufo": "^1.6.1", "uncrypto": "^0.1.3" } }, "sha512-z6GknHqyX0h9aQaTx22VZDf6QyZn+0Nh+Ym8O/u0SGSkyF5cuTJYKlc8MkzW3Nzf9LE1ivcpmYC3FUGpywhuUQ=="], + "h3": ["h3@2.0.1-rc.28", "", { "dependencies": { "rou3": "^0.9.2", "srvx": "^0.12.7" }, "peerDependencies": { "crossws": "^0.4.11", "ocache": ">=0.3.0" }, "optionalPeers": ["crossws", "ocache"], "bin": { "h3": "bin/h3.mjs" } }, "sha512-WRP8f/X9J4tfmgjungKaeJU+ONcuzRR3Q/JpJ7317haVRZJ/vNc7niVWRbch5m3815zQbSj4Y8Mjr+Tdzng82A=="], "happy-dom": ["happy-dom@20.11.2", "", { "dependencies": { "@types/node": ">=20.0.0", "@types/whatwg-mimetype": "^3.0.2", "@types/ws": "^8.18.1", "buffer-image-size": "^0.6.4", "entities": "^7.0.1", "whatwg-mimetype": "^3.0.0", "ws": "^8.21.0" } }, "sha512-7MB+bJLkxu3SowAfBJbjW+c55kNz5tkR45gu2qzrxznezhLeN5YIlJbwUgSzlGc+qWoZ8Ykg71H5ezz69xixrw=="], @@ -2583,8 +2548,6 @@ "http-errors": ["http-errors@2.0.1", "", { "dependencies": { "depd": "~2.0.0", "inherits": "~2.0.4", "setprototypeof": "~1.2.0", "statuses": "~2.0.2", "toidentifier": "~1.0.1" } }, "sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ=="], - "http-proxy": ["http-proxy@1.18.1", "", { "dependencies": { "eventemitter3": "^4.0.0", "follow-redirects": "^1.0.0", "requires-port": "^1.0.0" } }, "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ=="], - "http-shutdown": ["http-shutdown@1.2.2", "", {}, "sha512-S9wWkJ/VSY9/k4qcjG318bqJNruzE4HySUhFYknwmu6LBP97KLLfwNf+n4V1BHurvFNkSKLFnK/RsuUnRTf9Vw=="], "https-proxy-agent": ["https-proxy-agent@7.0.6", "", { "dependencies": { "agent-base": "^7.1.2", "debug": "4" } }, "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw=="], @@ -2727,8 +2690,6 @@ "is-wsl": ["is-wsl@2.2.0", "", { "dependencies": { "is-docker": "^2.0.0" } }, "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww=="], - "is64bit": ["is64bit@2.0.0", "", { "dependencies": { "system-architecture": "^0.1.0" } }, "sha512-jv+8jaWCl0g2lSBkNSVXdzfBA0npK1HGC2KtWM9FumFRoGS94g3NbCCLVnCYHLjp4GrW2KZeeSTMo5ddtznmGw=="], - "isarray": ["isarray@2.0.5", "", {}, "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw=="], "isexe": ["isexe@2.0.0", "", {}, "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw=="], @@ -3047,6 +3008,10 @@ "next-themes": ["next-themes@0.4.6", "", { "peerDependencies": { "react": "^16.8 || ^17 || ^18 || ^19 || ^19.0.0-rc", "react-dom": "^16.8 || ^17 || ^18 || ^19 || ^19.0.0-rc" } }, "sha512-pZvgD5L0IEvX5/9GWyHMf3m8BKiVQwsCMHfoFosXtXBMnaS0ZnIJ9ST4b4NqLVKDEm8QBxoNNGNaBv2JNF6XNA=="], + "nf3": ["nf3@0.3.23", "", {}, "sha512-RWVLAWozmVD3AaDmaU3qMGB3v+yNlH5d9qqStI4e/WLlNQVnJ4YErGDbYCIrGFyrHdbF6I6Baf0Ae6c7tFYmSg=="], + + "nitro": ["nitro@3.0.260610-beta", "", { "dependencies": { "consola": "^3.4.2", "crossws": "^0.4.6", "db0": "^0.3.4", "env-runner": "^0.1.12", "h3": "2.0.1-rc.22", "hookable": "^6.1.1", "nf3": "^0.3.17", "ocache": "^0.1.5", "ofetch": "2.0.0-alpha.3", "ohash": "^2.0.11", "rolldown": "^1.1.0", "srvx": "^0.11.16", "unenv": "2.0.0-rc.24", "unstorage": "2.0.0-alpha.7" }, "peerDependencies": { "@vercel/queue": "^0.3.0", "dotenv": "*", "giget": "*", "jiti": "^2.7.0", "rollup": "^4.61.1", "vite": "^7 || ^8", "xml2js": "^0.6.2", "zephyr-agent": "^0.2.0" }, "optionalPeers": ["@vercel/queue", "dotenv", "giget", "jiti", "rollup", "vite", "xml2js", "zephyr-agent"], "bin": { "nitro": "dist/cli/index.mjs" } }, "sha512-KPb4L5yaF/Rx/xoGMpgHRJvZhbhGiqbRKOwwPLCH9jKTKTsEUHLjnJas85AeCzaswqa8Wi52eQBtRsODC4PS0Q=="], + "nitropack": ["nitropack@2.13.4", "", { "dependencies": { "@cloudflare/kv-asset-handler": "^0.4.2", "@rollup/plugin-alias": "^6.0.0", "@rollup/plugin-commonjs": "^29.0.2", "@rollup/plugin-inject": "^5.0.5", "@rollup/plugin-json": "^6.1.0", "@rollup/plugin-node-resolve": "^16.0.3", "@rollup/plugin-replace": "^6.0.3", "@rollup/plugin-terser": "^1.0.0", "@vercel/nft": "^1.5.0", "archiver": "^7.0.1", "c12": "^3.3.4", "chokidar": "^5.0.0", "citty": "^0.2.2", "compatx": "^0.2.0", "confbox": "^0.2.4", "consola": "^3.4.2", "cookie-es": "^2.0.1", "croner": "^10.0.1", "crossws": "^0.3.5", "db0": "^0.3.4", "defu": "^6.1.7", "destr": "^2.0.5", "dot-prop": "^10.1.0", "esbuild": "^0.28.0", "escape-string-regexp": "^5.0.0", "etag": "^1.8.1", "exsolve": "^1.0.8", "globby": "^16.2.0", "gzip-size": "^7.0.0", "h3": "^1.15.11", "hookable": "^5.5.3", "httpxy": "^0.5.1", "ioredis": "^5.10.1", "jiti": "^2.6.1", "klona": "^2.0.6", "knitwork": "^1.3.0", "listhen": "^1.9.1", "magic-string": "^0.30.21", "magicast": "^0.5.2", "mime": "^4.1.0", "mlly": "^1.8.2", "node-fetch-native": "^1.6.7", "node-mock-http": "^1.0.4", "ofetch": "^1.5.1", "ohash": "^2.0.11", "pathe": "^2.0.3", "perfect-debounce": "^2.1.0", "pkg-types": "^2.3.1", "pretty-bytes": "^7.1.0", "radix3": "^1.1.2", "rollup": "^4.60.2", "rollup-plugin-visualizer": "^7.0.1", "scule": "^1.3.0", "semver": "^7.7.4", "serve-placeholder": "^2.0.2", "serve-static": "^2.2.1", "source-map": "^0.7.6", "std-env": "^4.1.0", "ufo": "^1.6.4", "ultrahtml": "^1.6.0", "uncrypto": "^0.1.3", "unctx": "^2.5.0", "unenv": "2.0.0-rc.24", "unimport": "^6.2.0", "unplugin-utils": "^0.3.1", "unstorage": "^1.17.5", "untyped": "^2.0.0", "unwasm": "^0.5.3", "youch": "^4.1.1", "youch-core": "^0.3.3" }, "peerDependencies": { "xml2js": "^0.6.2" }, "optionalPeers": ["xml2js"], "bin": { "nitro": "dist/cli/index.mjs", "nitropack": "dist/cli/index.mjs" } }, "sha512-tX7bT6zxNeMwkc6hxHiZeUoTOjVrcjoh1Z3cmxOlodIqjl4HISgqfGOmkWSayky3Nv9Z5+KQH52F8nmXJY5AAA=="], "no-case": ["no-case@3.0.4", "", { "dependencies": { "lower-case": "^2.0.2", "tslib": "^2.0.3" } }, "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg=="], @@ -3097,6 +3062,8 @@ "obug": ["obug@2.1.4", "", {}, "sha512-4a+OsYv9UktOJKE+l1A4OufDgdRF9PifWj+tJnHURo/P+WOxpG4GzUFL9qCalmWauao6ogiG+QvnCovwPoyAWA=="], + "ocache": ["ocache@0.1.5", "", { "dependencies": { "ohash": "^2.0.11" } }, "sha512-kNNnkkVQup/QDvmTz8Q84wc2ntiyoVHDxa6eHWKt5qdGAmFRBIxy83rxgCYEjW0x06UJ9E3P6VgM2yY4rOBH4w=="], + "ofetch": ["ofetch@1.5.1", "", { "dependencies": { "destr": "^2.0.5", "node-fetch-native": "^1.6.7", "ufo": "^1.6.1" } }, "sha512-2W4oUZlVaqAPAil6FUg/difl6YhqhUR7x2eZY4bQCko22UXg3hptq9KLQdqFClV+Wu85UX7hNtdGTngi/1BxcA=="], "ohash": ["ohash@2.0.12", "", {}, "sha512-65S/5gk9YSsaRjcyf7Nfa6h/d3E8/1gslpXfI4W7Dxn/oap8IKRuNT5VXkLQ1YFKIEg4apRY4Pj6aiwFzrDdmw=="], @@ -3163,7 +3130,7 @@ "path-scurry": ["path-scurry@2.0.2", "", { "dependencies": { "lru-cache": "^11.0.0", "minipass": "^7.1.2" } }, "sha512-3O/iVVsJAPsOnpwWIeD+d6z/7PmqApyQePUtCndjatj/9I5LylHvt5qluFaBT3I5h3r1ejfR056c+FCv+NnNXg=="], - "path-to-regexp": ["path-to-regexp@6.3.0", "", {}, "sha512-Yhpw4T9C6hPpgPeA28us07OJeqZ5EzQTkbfwuhsUg0c237RomFoETJgmp2sa3F/41gfLE6G5cqcYwznmeEeOlQ=="], + "path-to-regexp": ["path-to-regexp@8.4.2", "", {}, "sha512-qRcuIdP69NPm4qbACK+aDogI5CBDMi1jKe0ry5rSQJz8JVLsC7jV8XpiJjGRLLol3N+R5ihGYcrPLTno6pAdBA=="], "path-to-regexp-updated": ["path-to-regexp@6.3.0", "", {}, "sha512-Yhpw4T9C6hPpgPeA28us07OJeqZ5EzQTkbfwuhsUg0c237RomFoETJgmp2sa3F/41gfLE6G5cqcYwznmeEeOlQ=="], @@ -3439,8 +3406,6 @@ "require-from-string": ["require-from-string@2.0.2", "", {}, "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw=="], - "requires-port": ["requires-port@1.0.0", "", {}, "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ=="], - "resize-observer-polyfill": ["resize-observer-polyfill@1.5.1", "", {}, "sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg=="], "resolve": ["resolve@1.22.12", "", { "dependencies": { "es-errors": "^1.3.0", "is-core-module": "^2.16.1", "path-parse": "^1.0.7", "supports-preserve-symlinks-flag": "^1.0.0" }, "bin": { "resolve": "bin/resolve" } }, "sha512-TyeJ1zif53BPfHootBGwPRYT1RUt6oGWsaQr8UyZW/eAm9bKoijtvruSDEmZHm92CwS9nj7/fWttqPCgzep8CA=="], @@ -3577,7 +3542,7 @@ "split2": ["split2@4.2.0", "", {}, "sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg=="], - "srvx": ["srvx@0.11.16", "", { "bin": { "srvx": "bin/srvx.mjs" } }, "sha512-bp07zRuycfTY43IjAvvTFnmnJi8ikW0VFiHwOhhYcVW/L4xQ1XY4PAd4Nuum1rsA17C39zL7x+CDhrn5AL32Rw=="], + "srvx": ["srvx@0.12.7", "", { "bin": { "srvx": "bin/srvx.mjs" } }, "sha512-PIaq1pDGg3EU2OGSN3pzRfYVu9MJDzLdojlGN6E3lvhAdxqn/lNMJFMA1xGA38jYkBb0V9xw02QEVVMDb0PExA=="], "stack-generator": ["stack-generator@2.0.10", "", { "dependencies": { "stackframe": "^1.3.4" } }, "sha512-mwnua/hkqM6pF4k8SnmZ2zfETsRUpWXREfA/goT8SLCV4iOFa4bzOX2nDipWAZFPTjLvQB82f5yaodMVhK0yJQ=="], @@ -3609,7 +3574,7 @@ "streamx": ["streamx@2.28.0", "", { "dependencies": { "events-universal": "^1.0.0", "fast-fifo": "^1.3.2", "text-decoder": "^1.1.0" } }, "sha512-1Yowhzjf0ivGMrTIkY9hav5TxobO9qIVqUE41fiCGMGgc3CLlf4MY+9AHmZqBWgDTue0fY9zWjYFVyf6Diuobw=="], - "string-width": ["string-width@7.2.0", "", { "dependencies": { "emoji-regex": "^10.3.0", "get-east-asian-width": "^1.0.0", "strip-ansi": "^7.1.0" } }, "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ=="], + "string-width": ["string-width@8.2.2", "", { "dependencies": { "get-east-asian-width": "^1.5.0", "strip-ansi": "^7.1.2" } }, "sha512-GaPUh5gfdrYzqeVNZvUfT23vYYxXzKYidUcnMtJg/3rxRV63EFZy3k6xfKlmfeJD0176lnUV/Usr3XcwSvFzpg=="], "string-width-cjs": ["string-width@4.2.3", "", { "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", "strip-ansi": "^6.0.1" } }, "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g=="], @@ -3617,7 +3582,7 @@ "stringify-entities": ["stringify-entities@4.0.4", "", { "dependencies": { "character-entities-html4": "^2.0.0", "character-entities-legacy": "^3.0.0" } }, "sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg=="], - "strip-ansi": ["strip-ansi@7.2.0", "", { "dependencies": { "ansi-regex": "^6.2.2" } }, "sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w=="], + "strip-ansi": ["strip-ansi@6.0.1", "", { "dependencies": { "ansi-regex": "^5.0.1" } }, "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A=="], "strip-ansi-cjs": ["strip-ansi@6.0.1", "", { "dependencies": { "ansi-regex": "^5.0.1" } }, "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A=="], @@ -3665,8 +3630,6 @@ "symbol-tree": ["symbol-tree@3.2.4", "", {}, "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw=="], - "system-architecture": ["system-architecture@0.1.0", "", {}, "sha512-ulAk51I9UVUyJgxlv9M6lFot2WP3e7t8Kz9+IS6D4rVba1tR9kON+Ey69f+1R4Q8cd45Lod6a4IcJIxnzGc/zA=="], - "table": ["table@6.9.0", "", { "dependencies": { "ajv": "^8.0.1", "lodash.truncate": "^4.4.2", "slice-ansi": "^4.0.0", "string-width": "^4.2.3", "strip-ansi": "^6.0.1" } }, "sha512-9kY+CygyYM6j02t5YFHbNz2FN5QmYGv9zAjVp4lCDjlCw7amdckXlEt/bjMhUIfj4ThGRE4gCUH5+yGnNuPo5A=="], "tagged-tag": ["tagged-tag@1.0.0", "", {}, "sha512-yEFYrVhod+hdNyx7g5Bnkkb0G6si8HJurOoOEgC8B/O0uXLHlaey/65KRv6cuWBNhBgHKAROVpc7QyYqE5gFng=="], @@ -3777,7 +3740,7 @@ "undici-types": ["undici-types@8.3.0", "", {}, "sha512-j375ScV60dom+YkPFIfTLcOiPxkN/buHz5GobjLhixFuANaNs3C9l4GmrWqejgXWJ7BbJcFYpTEUkS1Ge8bpZQ=="], - "unenv": ["unenv@1.10.0", "", { "dependencies": { "consola": "^3.2.3", "defu": "^6.1.4", "mime": "^3.0.0", "node-fetch-native": "^1.6.4", "pathe": "^1.1.2" } }, "sha512-wY5bskBQFL9n3Eca5XnhH6KbUo/tfvkwm9OpcdCvLaeA7piBNbavbOKJySEwQ1V0RH6HvNlSAFRTpvTqgKRQXQ=="], + "unenv": ["unenv@2.0.0-rc.24", "", { "dependencies": { "pathe": "^2.0.3" } }, "sha512-i7qRCmY42zmCwnYlh9H2SvLEypEFGye5iRmEMKjcGi7zk9UquigRjFtTLz0TYqr0ZGLZhaMHl/foy1bZR+Cwlw=="], "unhead": ["unhead@3.3.2", "", { "dependencies": { "hookable": "^6.1.1", "unplugin": "^3.3.0" }, "peerDependencies": { "vite": ">=6.4.2" }, "optionalPeers": ["vite"] }, "sha512-nys63ms9LcERQX4Z6UV5jrGDiHMhccKb8Jsm9Q7uCWGqYKSKNygiIGi0AsEBTDz5mmaS8J4yXva6U3qZg4FdBQ=="], @@ -3811,9 +3774,9 @@ "unrouting": ["unrouting@0.2.3", "", { "dependencies": { "escape-string-regexp": "^5.0.0", "ufo": "^1.6.3" } }, "sha512-8wOFT/fBh8YeeDr1aVmkXCqYVTMbQ6vzfNzwzybKmSfXdRhGCq1Y2B1e9YeB0JEf85gbvSwJHAMu3D2IEcLGKA=="], - "unstorage": ["unstorage@1.17.5", "", { "dependencies": { "anymatch": "^3.1.3", "chokidar": "^5.0.0", "destr": "^2.0.5", "h3": "^1.15.10", "lru-cache": "^11.2.7", "node-fetch-native": "^1.6.7", "ofetch": "^1.5.1", "ufo": "^1.6.3" }, "peerDependencies": { "@azure/app-configuration": "^1.8.0", "@azure/cosmos": "^4.2.0", "@azure/data-tables": "^13.3.0", "@azure/identity": "^4.6.0", "@azure/keyvault-secrets": "^4.9.0", "@azure/storage-blob": "^12.26.0", "@capacitor/preferences": "^6 || ^7 || ^8", "@deno/kv": ">=0.9.0", "@netlify/blobs": "^6.5.0 || ^7.0.0 || ^8.1.0 || ^9.0.0 || ^10.0.0", "@planetscale/database": "^1.19.0", "@upstash/redis": "^1.34.3", "@vercel/blob": ">=0.27.1", "@vercel/functions": "^2.2.12 || ^3.0.0", "@vercel/kv": "^1 || ^2 || ^3", "aws4fetch": "^1.0.20", "db0": ">=0.2.1", "idb-keyval": "^6.2.1", "ioredis": "^5.4.2", "uploadthing": "^7.4.4" }, "optionalPeers": ["@azure/app-configuration", "@azure/cosmos", "@azure/data-tables", "@azure/identity", "@azure/keyvault-secrets", "@azure/storage-blob", "@capacitor/preferences", "@deno/kv", "@netlify/blobs", "@planetscale/database", "@upstash/redis", "@vercel/blob", "@vercel/functions", "@vercel/kv", "aws4fetch", "db0", "idb-keyval", "ioredis", "uploadthing"] }, "sha512-0i3iqvRfx29hkNntHyQvJTpf5W9dQ9ZadSoRU8+xVlhVtT7jAX57fazYO9EHvcRCfBCyi5YRya7XCDOsbTgkPg=="], + "unstorage": ["unstorage@2.0.0-alpha.7", "", { "peerDependencies": { "@azure/app-configuration": "^1.11.0", "@azure/cosmos": "^4.9.1", "@azure/data-tables": "^13.3.2", "@azure/identity": "^4.13.0", "@azure/keyvault-secrets": "^4.10.0", "@azure/storage-blob": "^12.31.0", "@capacitor/preferences": "^6 || ^7 || ^8", "@deno/kv": ">=0.13.0", "@netlify/blobs": "^6.5.0 || ^7.0.0 || ^8.1.0 || ^9.0.0 || ^10.0.0", "@planetscale/database": "^1.19.0", "@upstash/redis": "^1.36.2", "@vercel/blob": ">=0.27.3", "@vercel/functions": "^2.2.12 || ^3.0.0", "@vercel/kv": "^1.0.1", "aws4fetch": "^1.0.20", "chokidar": "^4 || ^5", "db0": ">=0.3.4", "idb-keyval": "^6.2.2", "ioredis": "^5.9.3", "lru-cache": "^11.2.6", "mongodb": "^6 || ^7", "ofetch": "*", "uploadthing": "^7.7.4" }, "optionalPeers": ["@azure/app-configuration", "@azure/cosmos", "@azure/data-tables", "@azure/identity", "@azure/keyvault-secrets", "@azure/storage-blob", "@capacitor/preferences", "@deno/kv", "@netlify/blobs", "@planetscale/database", "@upstash/redis", "@vercel/blob", "@vercel/functions", "@vercel/kv", "aws4fetch", "chokidar", "db0", "idb-keyval", "ioredis", "lru-cache", "mongodb", "ofetch", "uploadthing"] }, "sha512-ELPztchk2zgFJnakyodVY3vJWGW9jy//keJ32IOJVGUMyaPydwcA1FtVvWqT0TNRch9H+cMNEGllfVFfScImog=="], - "untun": ["untun@0.1.3", "", { "dependencies": { "citty": "^0.1.5", "consola": "^3.2.3", "pathe": "^1.1.1" }, "bin": { "untun": "bin/untun.mjs" } }, "sha512-4luGP9LMYszMRZwsvyUd9MrxgEGZdZuZgpVQHEEX0lCYFESasVRvZd0EYpCkOIbJKHMuv0LskpXc/8Un+MJzEQ=="], + "untun": ["untun@0.2.2", "", { "bin": { "untun": "dist/cli.mjs" } }, "sha512-+NnOJcSiEtYsVgJmXUzQbJeRAFXJC4yPJYuh6kF9B0Rm6zunXcs/3GZOTllyocSbUDIxD6Bj7e/4ATw7sph1Sw=="], "untyped": ["untyped@2.0.0", "", { "dependencies": { "citty": "^0.1.6", "defu": "^6.1.4", "jiti": "^2.4.2", "knitwork": "^1.2.0", "scule": "^1.3.0" }, "bin": { "untyped": "dist/cli.mjs" } }, "sha512-nwNCjxJTjNuLCgFr42fEak5OcLuB3ecca+9ksPFNvtfYSLpjf+iJqSIaSnIile6ZPbKYxI5k2AfXqeopGudK/g=="], @@ -3847,8 +3810,6 @@ "vfile-message": ["vfile-message@4.0.3", "", { "dependencies": { "@types/unist": "^3.0.0", "unist-util-stringify-position": "^4.0.0" } }, "sha512-QTHzsGd1EhbZs4AsQ20JX1rC3cOlt/IWJruk893DfLRr57lcnOeMaWG4K0JrRta4mIJZKth2Au3mM3u03/JWKw=="], - "vinxi": ["vinxi@0.5.11", "", { "dependencies": { "@babel/core": "^7.22.11", "@babel/plugin-syntax-jsx": "^7.22.5", "@babel/plugin-syntax-typescript": "^7.22.5", "@types/micromatch": "^4.0.2", "@vinxi/listhen": "^1.5.6", "boxen": "^8.0.1", "chokidar": "^4.0.3", "citty": "^0.1.6", "consola": "^3.4.2", "crossws": "^0.3.4", "dax-sh": "^0.43.0", "defu": "^6.1.4", "es-module-lexer": "^1.7.0", "esbuild": "^0.25.3", "get-port-please": "^3.1.2", "h3": "1.15.3", "hookable": "^5.5.3", "http-proxy": "^1.18.1", "micromatch": "^4.0.8", "nitropack": "^2.11.10", "node-fetch-native": "^1.6.6", "path-to-regexp": "^6.2.1", "pathe": "^1.1.1", "radix3": "^1.1.2", "resolve": "^1.22.10", "serve-placeholder": "^2.0.1", "serve-static": "^1.15.0", "tinyglobby": "^0.2.14", "ufo": "^1.6.1", "unctx": "^2.4.1", "unenv": "^1.10.0", "unstorage": "^1.16.0", "vite": "^6.4.1", "zod": "^4.0.0" }, "bin": { "vinxi": "bin/cli.mjs" } }, "sha512-82Qm+EG/b2PRFBvXBbz1lgWBGcd9totIL6SJhnrZYfakjloTVG9+5l6gfO6dbCCtztm5pqWFzLY0qpZ3H3ww/w=="], - "vite": ["vite@8.2.1", "", { "dependencies": { "lightningcss": "^1.33.0", "picomatch": "^4.0.5", "postcss": "^8.5.25", "rolldown": "~1.2.1", "tinyglobby": "^0.2.17" }, "optionalDependencies": { "fsevents": "~2.3.3" }, "peerDependencies": { "@types/node": "^20.19.0 || >=22.12.0", "@vitejs/devtools": "^0.4.0", "esbuild": "^0.27.0 || ^0.28.0", "jiti": ">=1.21.0", "less": "^4.0.0", "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", "yaml": "^2.4.2" }, "optionalPeers": ["@types/node", "@vitejs/devtools", "esbuild", "jiti", "less", "sass", "sass-embedded", "stylus", "sugarss", "terser", "tsx", "yaml"], "bin": { "vite": "bin/vite.js" } }, "sha512-EU/eS7BH3XROHh2YnBefjM6DBKA6ZeMZEYQbj7NLWg5wHYlhB8B/Mayd5XsgWq+NFYccDOTemRpdETWR6Ka/lw=="], "vite-dev-rpc": ["vite-dev-rpc@2.0.0", "", { "dependencies": { "birpc": "^4.0.0", "vite-hot-client": "^2.2.0" }, "peerDependencies": { "vite": "^2.9.0 || ^3.0.0-0 || ^4.0.0-0 || ^5.0.0-0 || ^6.0.1 || ^7.0.0-0 || ^8.0.0" } }, "sha512-yKwbTwdHKSD2k/aGqyWpPHepo45OQc8lH3/6IfT4ZqeKE26ooKvi4WIEKzqWav8v+9Is8u1k8q54hvOmqASazA=="], @@ -3919,8 +3880,6 @@ "why-is-node-running": ["why-is-node-running@2.3.0", "", { "dependencies": { "siginfo": "^2.0.0", "stackback": "0.0.2" }, "bin": { "why-is-node-running": "cli.js" } }, "sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w=="], - "widest-line": ["widest-line@5.0.0", "", { "dependencies": { "string-width": "^7.0.0" } }, "sha512-c9bZp7b5YtRj2wOe6dlj32MK+Bx/M/d+9VB2SHM1OtsUHR0aV0tdP6DWh/iMt0kWi1t5g1Iudu6hQRNd1A4PVA=="], - "with": ["with@7.0.2", "", { "dependencies": { "@babel/parser": "^7.9.6", "@babel/types": "^7.9.6", "assert-never": "^1.2.1", "babel-walk": "3.0.0-canary-5" } }, "sha512-RNGKj82nUPg3g5ygxkQl0R937xLyho1J24ItRCBTr/m1YnZkzJy1hUiHUJrc/VlsDQzsCnInEGSg3bci0Lmd4w=="], "wordwrapjs": ["wordwrapjs@5.1.1", "", {}, "sha512-0yweIbkINJodk27gX9LBGMzyQdBDan3s/dEAiwBOj+Mf0PPyWL6/rikalkv8EeD0E8jm4o5RXEOrFTP3NXbhJg=="], @@ -3985,13 +3944,11 @@ "@babel/core/@babel/generator": ["@babel/generator@7.29.8", "", { "dependencies": { "@babel/parser": "^7.29.8", "@babel/types": "^7.29.8", "@jridgewell/gen-mapping": "^0.3.12", "@jridgewell/trace-mapping": "^0.3.28", "jsesc": "^3.0.2" } }, "sha512-gZbepsdh3WDtgZKWL+vTPh71LSBrm/Y4/QDZBVCcYfmeTEEuoOYwlSy+G1StfJg+/Zy550u/3TATbm7qDbbMtg=="], - "@babel/core/@babel/types": ["@babel/types@7.29.8", "", { "dependencies": { "@babel/helper-string-parser": "^7.29.7", "@babel/helper-validator-identifier": "^7.29.7" } }, "sha512-Vj1jF3cPfxg7OAfoI7QnVKLoILlm2JF9pnVHrX8qx7AHMiYWT+NDAA7jChlNgRS4WTLc/fD1lXLmPixluj+3Gg=="], - "@babel/core/semver": ["semver@6.3.1", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA=="], "@babel/generator/@babel/parser": ["@babel/parser@8.0.4", "", { "dependencies": { "@babel/types": "^8.0.4" }, "bin": "./bin/babel-parser.js" }, "sha512-srpptsAkEbbNIC/q8nT7o+m6CQe8CJUTV/t7MYc9NnWlgYVtHOb7JH6SorxMhN0kuRJjVqXbKClG6xSbPtzz+g=="], - "@babel/helper-annotate-as-pure/@babel/types": ["@babel/types@7.29.8", "", { "dependencies": { "@babel/helper-string-parser": "^7.29.7", "@babel/helper-validator-identifier": "^7.29.7" } }, "sha512-Vj1jF3cPfxg7OAfoI7QnVKLoILlm2JF9pnVHrX8qx7AHMiYWT+NDAA7jChlNgRS4WTLc/fD1lXLmPixluj+3Gg=="], + "@babel/generator/@babel/types": ["@babel/types@8.0.4", "", { "dependencies": { "@babel/helper-string-parser": "^8.0.0", "@babel/helper-validator-identifier": "^8.0.4" } }, "sha512-eY+Yn3dCqTGmyiq2QRU66lA5FL8lqqqvecHt0fF3uHONIa7ToYsaCiWV8lOKqAs0Rb2SjixiKFROngnulPtt2g=="], "@babel/helper-compilation-targets/browserslist": ["browserslist@4.28.8", "", { "dependencies": { "baseline-browser-mapping": "^2.11.12", "caniuse-lite": "^1.0.30001809", "electron-to-chromium": "^1.5.402", "node-releases": "^2.0.53", "update-browserslist-db": "^1.3.0" }, "bin": { "browserslist": "cli.js" } }, "sha512-V2NpofLblG64mfOtSgDhOJESZEGogzDMBv/q+W6oc4LXWP/q75eOXoOaaOu1EOadB9U4Bwx/e0yzbvwKH8zalA=="], @@ -4001,26 +3958,8 @@ "@babel/helper-create-class-features-plugin/semver": ["semver@6.3.1", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA=="], - "@babel/helper-member-expression-to-functions/@babel/types": ["@babel/types@7.29.8", "", { "dependencies": { "@babel/helper-string-parser": "^7.29.7", "@babel/helper-validator-identifier": "^7.29.7" } }, "sha512-Vj1jF3cPfxg7OAfoI7QnVKLoILlm2JF9pnVHrX8qx7AHMiYWT+NDAA7jChlNgRS4WTLc/fD1lXLmPixluj+3Gg=="], - - "@babel/helper-module-imports/@babel/types": ["@babel/types@7.29.8", "", { "dependencies": { "@babel/helper-string-parser": "^7.29.7", "@babel/helper-validator-identifier": "^7.29.7" } }, "sha512-Vj1jF3cPfxg7OAfoI7QnVKLoILlm2JF9pnVHrX8qx7AHMiYWT+NDAA7jChlNgRS4WTLc/fD1lXLmPixluj+3Gg=="], - - "@babel/helper-optimise-call-expression/@babel/types": ["@babel/types@7.29.8", "", { "dependencies": { "@babel/helper-string-parser": "^7.29.7", "@babel/helper-validator-identifier": "^7.29.7" } }, "sha512-Vj1jF3cPfxg7OAfoI7QnVKLoILlm2JF9pnVHrX8qx7AHMiYWT+NDAA7jChlNgRS4WTLc/fD1lXLmPixluj+3Gg=="], - - "@babel/helper-skip-transparent-expression-wrappers/@babel/types": ["@babel/types@7.29.8", "", { "dependencies": { "@babel/helper-string-parser": "^7.29.7", "@babel/helper-validator-identifier": "^7.29.7" } }, "sha512-Vj1jF3cPfxg7OAfoI7QnVKLoILlm2JF9pnVHrX8qx7AHMiYWT+NDAA7jChlNgRS4WTLc/fD1lXLmPixluj+3Gg=="], - - "@babel/helpers/@babel/types": ["@babel/types@7.29.8", "", { "dependencies": { "@babel/helper-string-parser": "^7.29.7", "@babel/helper-validator-identifier": "^7.29.7" } }, "sha512-Vj1jF3cPfxg7OAfoI7QnVKLoILlm2JF9pnVHrX8qx7AHMiYWT+NDAA7jChlNgRS4WTLc/fD1lXLmPixluj+3Gg=="], - - "@babel/parser/@babel/types": ["@babel/types@7.29.8", "", { "dependencies": { "@babel/helper-string-parser": "^7.29.7", "@babel/helper-validator-identifier": "^7.29.7" } }, "sha512-Vj1jF3cPfxg7OAfoI7QnVKLoILlm2JF9pnVHrX8qx7AHMiYWT+NDAA7jChlNgRS4WTLc/fD1lXLmPixluj+3Gg=="], - - "@babel/template/@babel/types": ["@babel/types@7.29.8", "", { "dependencies": { "@babel/helper-string-parser": "^7.29.7", "@babel/helper-validator-identifier": "^7.29.7" } }, "sha512-Vj1jF3cPfxg7OAfoI7QnVKLoILlm2JF9pnVHrX8qx7AHMiYWT+NDAA7jChlNgRS4WTLc/fD1lXLmPixluj+3Gg=="], - "@babel/traverse/@babel/generator": ["@babel/generator@7.29.8", "", { "dependencies": { "@babel/parser": "^7.29.8", "@babel/types": "^7.29.8", "@jridgewell/gen-mapping": "^0.3.12", "@jridgewell/trace-mapping": "^0.3.28", "jsesc": "^3.0.2" } }, "sha512-gZbepsdh3WDtgZKWL+vTPh71LSBrm/Y4/QDZBVCcYfmeTEEuoOYwlSy+G1StfJg+/Zy550u/3TATbm7qDbbMtg=="], - "@babel/traverse/@babel/types": ["@babel/types@7.29.8", "", { "dependencies": { "@babel/helper-string-parser": "^7.29.7", "@babel/helper-validator-identifier": "^7.29.7" } }, "sha512-Vj1jF3cPfxg7OAfoI7QnVKLoILlm2JF9pnVHrX8qx7AHMiYWT+NDAA7jChlNgRS4WTLc/fD1lXLmPixluj+3Gg=="], - - "@babel/types/@babel/helper-validator-identifier": ["@babel/helper-validator-identifier@8.0.4", "", {}, "sha512-4wFaiLd0bVo4cIoTXI3zKI038NIWE/cr3jvBjejOVYVxV/m8Ltav1USiGzG1fmS5J2RhgEOgXNNK46cRPnRsrg=="], - "@better-auth/core/jose": ["jose@6.2.9", "", {}, "sha512-XrchZOFZUl/T3vTwRe8XK+cJrGtMF4th1ARnDfwbBXFKThGhlsxEE4Zu03AD/bjJSt/9jT/mxrOCkJWOg77aPA=="], "@bomb.sh/tab/cac": ["cac@6.7.14", "", {}, "sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ=="], @@ -4031,12 +3970,12 @@ "@csstools/selector-specificity/postcss-selector-parser": ["postcss-selector-parser@7.1.5", "", { "dependencies": { "cssesc": "^3.0.0", "util-deprecate": "^1.0.2" } }, "sha512-KvvtD7SrlBP7dlgkBghEE3r84CABm5SmV2aNcG4oCA+qDnJ/tvKonFVvwWAyyWUEwxuNawdfEAZKP9zM3oZ2Uw=="], - "@deno/shim-deno/which": ["which@4.0.0", "", { "dependencies": { "isexe": "^3.1.1" }, "bin": { "node-which": "bin/which.js" } }, "sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg=="], - "@dxup/nuxt/chokidar": ["chokidar@5.0.0", "", { "dependencies": { "readdirp": "^5.0.0" } }, "sha512-TQMmc3w+5AxjpL8iIiwebF73dRDF4fBIieAqGn9RGCWaEVwQ6Fb2cGe31Yns0RRIzii5goJ1Y7xbMwo1TxMplw=="], "@isaacs/cliui/string-width": ["string-width@5.1.2", "", { "dependencies": { "eastasianwidth": "^0.2.0", "emoji-regex": "^9.2.2", "strip-ansi": "^7.0.1" } }, "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA=="], + "@isaacs/cliui/strip-ansi": ["strip-ansi@7.2.0", "", { "dependencies": { "ansi-regex": "^6.2.2" } }, "sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w=="], + "@isaacs/cliui/wrap-ansi": ["wrap-ansi@8.1.0", "", { "dependencies": { "ansi-styles": "^6.1.0", "string-width": "^5.0.1", "strip-ansi": "^7.0.1" } }, "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ=="], "@mapbox/node-pre-gyp/node-fetch": ["node-fetch@2.6.9", "", { "dependencies": { "whatwg-url": "^5.0.0" }, "peerDependencies": { "encoding": "^0.1.0" }, "optionalPeers": ["encoding"] }, "sha512-DJm/CJkZkRjKKj4Zi4BsKVZh3ValV5IR5s7LVZnW+6YMh0W1BfNA8XSs6DLMGYlId5F3KnA70uu2qepcR08Qqg=="], @@ -4047,12 +3986,12 @@ "@modelcontextprotocol/sdk/jose": ["jose@6.2.9", "", {}, "sha512-XrchZOFZUl/T3vTwRe8XK+cJrGtMF4th1ARnDfwbBXFKThGhlsxEE4Zu03AD/bjJSt/9jT/mxrOCkJWOg77aPA=="], - "@nuxt/cli/citty": ["citty@0.2.2", "", {}, "sha512-+6vJA3L98yv+IdfKGZHBNiGW5KHn22e/JwID0Strsz8h4S/csAu/OuICwxrg44k5MRiZHWIo8XXuJgQTriRP4w=="], - "@nuxt/cli/srvx": ["srvx@0.11.22", "", { "bin": { "srvx": "bin/srvx.mjs" } }, "sha512-LqZxxBDMKuMAZzFzJnDCkFOrs9MZQZr0LvHiO/SuSZVdQaXD7xQ5UWTUxheJrQPve1qk9MG2B/yttUvJxw8egQ=="], "@nuxt/devtools/execa": ["execa@8.0.1", "", { "dependencies": { "cross-spawn": "^7.0.3", "get-stream": "^8.0.1", "human-signals": "^5.0.0", "is-stream": "^3.0.0", "merge-stream": "^2.0.0", "npm-run-path": "^5.1.0", "onetime": "^6.0.0", "signal-exit": "^4.1.0", "strip-final-newline": "^3.0.0" } }, "sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg=="], + "@nuxt/devtools/unstorage": ["unstorage@1.17.5", "", { "dependencies": { "anymatch": "^3.1.3", "chokidar": "^5.0.0", "destr": "^2.0.5", "h3": "^1.15.10", "lru-cache": "^11.2.7", "node-fetch-native": "^1.6.7", "ofetch": "^1.5.1", "ufo": "^1.6.3" }, "peerDependencies": { "@azure/app-configuration": "^1.8.0", "@azure/cosmos": "^4.2.0", "@azure/data-tables": "^13.3.0", "@azure/identity": "^4.6.0", "@azure/keyvault-secrets": "^4.9.0", "@azure/storage-blob": "^12.26.0", "@capacitor/preferences": "^6 || ^7 || ^8", "@deno/kv": ">=0.9.0", "@netlify/blobs": "^6.5.0 || ^7.0.0 || ^8.1.0 || ^9.0.0 || ^10.0.0", "@planetscale/database": "^1.19.0", "@upstash/redis": "^1.34.3", "@vercel/blob": ">=0.27.1", "@vercel/functions": "^2.2.12 || ^3.0.0", "@vercel/kv": "^1 || ^2 || ^3", "aws4fetch": "^1.0.20", "db0": ">=0.2.1", "idb-keyval": "^6.2.1", "ioredis": "^5.4.2", "uploadthing": "^7.4.4" }, "optionalPeers": ["@azure/app-configuration", "@azure/cosmos", "@azure/data-tables", "@azure/identity", "@azure/keyvault-secrets", "@azure/storage-blob", "@capacitor/preferences", "@deno/kv", "@netlify/blobs", "@planetscale/database", "@upstash/redis", "@vercel/blob", "@vercel/functions", "@vercel/kv", "aws4fetch", "db0", "idb-keyval", "ioredis", "uploadthing"] }, "sha512-0i3iqvRfx29hkNntHyQvJTpf5W9dQ9ZadSoRU8+xVlhVtT7jAX57fazYO9EHvcRCfBCyi5YRya7XCDOsbTgkPg=="], + "@nuxt/devtools/which": ["which@6.0.1", "", { "dependencies": { "isexe": "^4.0.0" }, "bin": { "node-which": "bin/which.js" } }, "sha512-oGLe46MIrCRqX7ytPUf66EAYvdeMIZYn3WaocqqKZAxrBpkqHfL/qvTyJ/bTk5+AqHCjXmrv3CEWgy368zhRUg=="], "@nuxt/devtools-kit/execa": ["execa@8.0.1", "", { "dependencies": { "cross-spawn": "^7.0.3", "get-stream": "^8.0.1", "human-signals": "^5.0.0", "is-stream": "^3.0.0", "merge-stream": "^2.0.0", "npm-run-path": "^5.1.0", "onetime": "^6.0.0", "signal-exit": "^4.1.0", "strip-final-newline": "^3.0.0" } }, "sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg=="], @@ -4061,7 +4000,7 @@ "@nuxt/nitro-server/h3": ["h3@1.15.11", "", { "dependencies": { "cookie-es": "^1.2.3", "crossws": "^0.3.5", "defu": "^6.1.6", "destr": "^2.0.5", "iron-webcrypto": "^1.2.1", "node-mock-http": "^1.0.4", "radix3": "^1.1.2", "ufo": "^1.6.3", "uncrypto": "^0.1.3" } }, "sha512-L3THSe2MPeBwgIZVSH5zLdBBU90TOxarvhK9d04IDY2AmVS8j2Jz2LIWtwsGOU3lu2I5jCN7FNvVfY2+XyF+mg=="], - "@nuxt/telemetry/citty": ["citty@0.2.2", "", {}, "sha512-+6vJA3L98yv+IdfKGZHBNiGW5KHn22e/JwID0Strsz8h4S/csAu/OuICwxrg44k5MRiZHWIo8XXuJgQTriRP4w=="], + "@nuxt/nitro-server/unstorage": ["unstorage@1.17.5", "", { "dependencies": { "anymatch": "^3.1.3", "chokidar": "^5.0.0", "destr": "^2.0.5", "h3": "^1.15.10", "lru-cache": "^11.2.7", "node-fetch-native": "^1.6.7", "ofetch": "^1.5.1", "ufo": "^1.6.3" }, "peerDependencies": { "@azure/app-configuration": "^1.8.0", "@azure/cosmos": "^4.2.0", "@azure/data-tables": "^13.3.0", "@azure/identity": "^4.6.0", "@azure/keyvault-secrets": "^4.9.0", "@azure/storage-blob": "^12.26.0", "@capacitor/preferences": "^6 || ^7 || ^8", "@deno/kv": ">=0.9.0", "@netlify/blobs": "^6.5.0 || ^7.0.0 || ^8.1.0 || ^9.0.0 || ^10.0.0", "@planetscale/database": "^1.19.0", "@upstash/redis": "^1.34.3", "@vercel/blob": ">=0.27.1", "@vercel/functions": "^2.2.12 || ^3.0.0", "@vercel/kv": "^1 || ^2 || ^3", "aws4fetch": "^1.0.20", "db0": ">=0.2.1", "idb-keyval": "^6.2.1", "ioredis": "^5.4.2", "uploadthing": "^7.4.4" }, "optionalPeers": ["@azure/app-configuration", "@azure/cosmos", "@azure/data-tables", "@azure/identity", "@azure/keyvault-secrets", "@azure/storage-blob", "@capacitor/preferences", "@deno/kv", "@netlify/blobs", "@planetscale/database", "@upstash/redis", "@vercel/blob", "@vercel/functions", "@vercel/kv", "aws4fetch", "db0", "idb-keyval", "ioredis", "uploadthing"] }, "sha512-0i3iqvRfx29hkNntHyQvJTpf5W9dQ9ZadSoRU8+xVlhVtT7jAX57fazYO9EHvcRCfBCyi5YRya7XCDOsbTgkPg=="], "@nuxt/telemetry/ofetch": ["ofetch@2.0.0-alpha.3", "", {}, "sha512-zpYTCs2byOuft65vI3z43Dd6iSdFbOZZLb9/d21aCpx2rGastVU9dOCv0lu4ykc1Ur1anAYjDi3SUvR0vq50JA=="], @@ -4069,8 +4008,6 @@ "@nuxt/vite-builder/seroval": ["seroval@1.6.2", "", {}, "sha512-mPT+SD2TrlB6wvte1KkYOYUkubaTbd6pZ/6Kk3C9nxzrHmCZyhxOO7XGAeL7f+yLKZglzGtM9odUVvg/EhO+vQ=="], - "@nuxt/vite-builder/unenv": ["unenv@2.0.0-rc.24", "", { "dependencies": { "pathe": "^2.0.3" } }, "sha512-i7qRCmY42zmCwnYlh9H2SvLEypEFGye5iRmEMKjcGi7zk9UquigRjFtTLz0TYqr0ZGLZhaMHl/foy1bZR+Cwlw=="], - "@oxc-parser/binding-wasm32-wasi/@emnapi/runtime": ["@emnapi/runtime@1.9.2", "", { "dependencies": { "tslib": "^2.4.0" } }, "sha512-3U4+MIWHImeyu1wnmVygh5WlgfYDtyf0k8AbLhMFxOipihf6nrWC4syIm/SwEeec0mNSafiiNnMJwbza/Is6Lw=="], "@oxc-resolver/binding-wasm32-wasi/@emnapi/core": ["@emnapi/core@1.11.2", "", { "dependencies": { "@emnapi/wasi-threads": "1.2.2", "tslib": "^2.4.0" } }, "sha512-TC8MkTuZUtcTSiFeuC0ksCh9QIJ5+F21MvZ4Wn4ORfYaFJ/0dsiudv5tVkejgwZlwQ39jL9WWDe2lz8x0WglOA=="], @@ -4137,9 +4074,11 @@ "@rollup/plugin-replace/magic-string": ["magic-string@0.30.21", "", { "dependencies": { "@jridgewell/sourcemap-codec": "^1.5.5" } }, "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ=="], - "@solidjs/start/cookie-es": ["cookie-es@2.0.1", "", {}, "sha512-aVf4A4hI2w70LnF7GG+7xDQUkliwiXWXFvTjkip4+b64ygDQ2sJPRSKFDHbxn8o0xu9QzPkMuuiWIXyFSE2slA=="], + "@solidjs/start/oxc-parser": ["oxc-parser@0.141.0", "", { "dependencies": { "@oxc-project/types": "^0.141.0" }, "optionalDependencies": { "@oxc-parser/binding-android-arm-eabi": "0.141.0", "@oxc-parser/binding-android-arm64": "0.141.0", "@oxc-parser/binding-darwin-arm64": "0.141.0", "@oxc-parser/binding-darwin-x64": "0.141.0", "@oxc-parser/binding-freebsd-x64": "0.141.0", "@oxc-parser/binding-linux-arm-gnueabihf": "0.141.0", "@oxc-parser/binding-linux-arm-musleabihf": "0.141.0", "@oxc-parser/binding-linux-arm64-gnu": "0.141.0", "@oxc-parser/binding-linux-arm64-musl": "0.141.0", "@oxc-parser/binding-linux-ppc64-gnu": "0.141.0", "@oxc-parser/binding-linux-riscv64-gnu": "0.141.0", "@oxc-parser/binding-linux-riscv64-musl": "0.141.0", "@oxc-parser/binding-linux-s390x-gnu": "0.141.0", "@oxc-parser/binding-linux-x64-gnu": "0.141.0", "@oxc-parser/binding-linux-x64-musl": "0.141.0", "@oxc-parser/binding-openharmony-arm64": "0.141.0", "@oxc-parser/binding-wasm32-wasi": "0.141.0", "@oxc-parser/binding-win32-arm64-msvc": "0.141.0", "@oxc-parser/binding-win32-ia32-msvc": "0.141.0", "@oxc-parser/binding-win32-x64-msvc": "0.141.0" } }, "sha512-uFkGGr1KMWd6aWv9UAqooYrN78trw8MWWmoPvgWokfBEUq1+eiIQ+qfj3wokhy0fxtZWZk+0dHoS7/yRTJtd6w=="], + + "@solidjs/start/seroval": ["seroval@1.6.2", "", {}, "sha512-mPT+SD2TrlB6wvte1KkYOYUkubaTbd6pZ/6Kk3C9nxzrHmCZyhxOO7XGAeL7f+yLKZglzGtM9odUVvg/EhO+vQ=="], - "@solidjs/start/shiki": ["shiki@1.29.2", "", { "dependencies": { "@shikijs/core": "1.29.2", "@shikijs/engine-javascript": "1.29.2", "@shikijs/engine-oniguruma": "1.29.2", "@shikijs/langs": "1.29.2", "@shikijs/themes": "1.29.2", "@shikijs/types": "1.29.2", "@shikijs/vscode-textmate": "^10.0.1", "@types/hast": "^3.0.4" } }, "sha512-njXuliz/cP+67jU2hukkxCNuH1yUi4QfdZZY+sMr5PPrIyXSu5iTb/qYC4BiWWB0vZ+7TbdvYUCeL23zpwCfbg=="], + "@solidjs/start/seroval-plugins": ["seroval-plugins@1.6.2", "", { "peerDependencies": { "seroval": "^1.0" } }, "sha512-TfxuUjlbBESzUOWdTkTKqvSmav0ABym+itetDXLK6mDz8SmrpdI30aF8RTXE8Bvq+tH/1yIDkvy3W0lfQb1ipQ=="], "@storybook/csf-plugin/unplugin": ["unplugin@2.3.11", "", { "dependencies": { "@jridgewell/remapping": "^2.3.5", "acorn": "^8.15.0", "picomatch": "^4.0.3", "webpack-virtual-modules": "^0.6.2" } }, "sha512-5uKD0nqiYVzlmCRs01Fhs2BdkEgBS3SAVP6ndrBsuK42iC2+JHyxM05Rm9G8+5mkmRtzMZGY8Ct5+mliZxU/Ww=="], @@ -4159,36 +4098,12 @@ "@sveltejs/package/chokidar": ["chokidar@5.0.0", "", { "dependencies": { "readdirp": "^5.0.0" } }, "sha512-TQMmc3w+5AxjpL8iIiwebF73dRDF4fBIieAqGn9RGCWaEVwQ6Fb2cGe31Yns0RRIzii5goJ1Y7xbMwo1TxMplw=="], - "@svgr/core/camelcase": ["camelcase@6.3.0", "", {}, "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA=="], - - "@svgr/hast-util-to-babel-ast/@babel/types": ["@babel/types@7.29.8", "", { "dependencies": { "@babel/helper-string-parser": "^7.29.7", "@babel/helper-validator-identifier": "^7.29.7" } }, "sha512-Vj1jF3cPfxg7OAfoI7QnVKLoILlm2JF9pnVHrX8qx7AHMiYWT+NDAA7jChlNgRS4WTLc/fD1lXLmPixluj+3Gg=="], - "@svgr/hast-util-to-babel-ast/entities": ["entities@4.5.0", "", {}, "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw=="], - "@tanstack/directive-functions-plugin/@babel/code-frame": ["@babel/code-frame@7.26.2", "", { "dependencies": { "@babel/helper-validator-identifier": "^7.25.9", "js-tokens": "^4.0.0", "picocolors": "^1.0.0" } }, "sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ=="], - - "@tanstack/directive-functions-plugin/@babel/types": ["@babel/types@7.29.8", "", { "dependencies": { "@babel/helper-string-parser": "^7.29.7", "@babel/helper-validator-identifier": "^7.29.7" } }, "sha512-Vj1jF3cPfxg7OAfoI7QnVKLoILlm2JF9pnVHrX8qx7AHMiYWT+NDAA7jChlNgRS4WTLc/fD1lXLmPixluj+3Gg=="], - - "@tanstack/router-utils/@babel/generator": ["@babel/generator@7.29.8", "", { "dependencies": { "@babel/parser": "^7.29.8", "@babel/types": "^7.29.8", "@jridgewell/gen-mapping": "^0.3.12", "@jridgewell/trace-mapping": "^0.3.28", "jsesc": "^3.0.2" } }, "sha512-gZbepsdh3WDtgZKWL+vTPh71LSBrm/Y4/QDZBVCcYfmeTEEuoOYwlSy+G1StfJg+/Zy550u/3TATbm7qDbbMtg=="], - - "@tanstack/router-utils/@babel/types": ["@babel/types@7.29.8", "", { "dependencies": { "@babel/helper-string-parser": "^7.29.7", "@babel/helper-validator-identifier": "^7.29.7" } }, "sha512-Vj1jF3cPfxg7OAfoI7QnVKLoILlm2JF9pnVHrX8qx7AHMiYWT+NDAA7jChlNgRS4WTLc/fD1lXLmPixluj+3Gg=="], - - "@tanstack/server-functions-plugin/@babel/code-frame": ["@babel/code-frame@7.26.2", "", { "dependencies": { "@babel/helper-validator-identifier": "^7.25.9", "js-tokens": "^4.0.0", "picocolors": "^1.0.0" } }, "sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ=="], - - "@tanstack/server-functions-plugin/@babel/types": ["@babel/types@7.29.8", "", { "dependencies": { "@babel/helper-string-parser": "^7.29.7", "@babel/helper-validator-identifier": "^7.29.7" } }, "sha512-Vj1jF3cPfxg7OAfoI7QnVKLoILlm2JF9pnVHrX8qx7AHMiYWT+NDAA7jChlNgRS4WTLc/fD1lXLmPixluj+3Gg=="], - "@testing-library/jest-dom/dom-accessibility-api": ["dom-accessibility-api@0.6.3", "", {}, "sha512-7ZgogeTnjuHbo+ct10G9Ffp0mif17idi0IyWNVA/wcwcm7NPOD/WEHVP3n7n3MhXqxoIYm8d6MuZohYWIZ4T3w=="], "@testing-library/vue/@testing-library/dom": ["@testing-library/dom@9.3.4", "", { "dependencies": { "@babel/code-frame": "^7.10.4", "@babel/runtime": "^7.12.5", "@types/aria-query": "^5.0.1", "aria-query": "5.1.3", "chalk": "^4.1.0", "dom-accessibility-api": "^0.5.9", "lz-string": "^1.5.0", "pretty-format": "^27.0.2" } }, "sha512-FlS4ZWlp97iiNWig0Muq8p+3rVDjRiYE+YKGbAqXOu9nwJFFOdL00kFpz42M+4huzYi86vAK1sOOfyOG45muIQ=="], - "@types/babel__core/@babel/types": ["@babel/types@7.29.8", "", { "dependencies": { "@babel/helper-string-parser": "^7.29.7", "@babel/helper-validator-identifier": "^7.29.7" } }, "sha512-Vj1jF3cPfxg7OAfoI7QnVKLoILlm2JF9pnVHrX8qx7AHMiYWT+NDAA7jChlNgRS4WTLc/fD1lXLmPixluj+3Gg=="], - - "@types/babel__generator/@babel/types": ["@babel/types@7.29.8", "", { "dependencies": { "@babel/helper-string-parser": "^7.29.7", "@babel/helper-validator-identifier": "^7.29.7" } }, "sha512-Vj1jF3cPfxg7OAfoI7QnVKLoILlm2JF9pnVHrX8qx7AHMiYWT+NDAA7jChlNgRS4WTLc/fD1lXLmPixluj+3Gg=="], - - "@types/babel__template/@babel/types": ["@babel/types@7.29.8", "", { "dependencies": { "@babel/helper-string-parser": "^7.29.7", "@babel/helper-validator-identifier": "^7.29.7" } }, "sha512-Vj1jF3cPfxg7OAfoI7QnVKLoILlm2JF9pnVHrX8qx7AHMiYWT+NDAA7jChlNgRS4WTLc/fD1lXLmPixluj+3Gg=="], - - "@types/babel__traverse/@babel/types": ["@babel/types@7.29.8", "", { "dependencies": { "@babel/helper-string-parser": "^7.29.7", "@babel/helper-validator-identifier": "^7.29.7" } }, "sha512-Vj1jF3cPfxg7OAfoI7QnVKLoILlm2JF9pnVHrX8qx7AHMiYWT+NDAA7jChlNgRS4WTLc/fD1lXLmPixluj+3Gg=="], - "@types/jsdom/undici-types": ["undici-types@8.10.0", "", {}, "sha512-ibvdovq3nCFs8Msrd95BW+zUOq+aOVbT+wpHUoPWhztbHEoPc6oof51iFDB6Es8lTKvNvVW9jNSAB8dwrKTMGg=="], "@vercel/backends/fs-extra": ["fs-extra@11.1.0", "", { "dependencies": { "graceful-fs": "^4.2.0", "jsonfile": "^6.0.1", "universalify": "^2.0.0" } }, "sha512-0rcTq621PD5jM/e0a3EJoGC/1TC5ZBCERW82LQuwfGnCa1V8w7dpYH1yNu+SLb6E5dkeCBzKEyLGlFrnr+dUyw=="], @@ -4197,6 +4112,8 @@ "@vercel/backends/rolldown": ["rolldown@1.0.0-rc.1", "", { "dependencies": { "@oxc-project/types": "=0.110.0", "@rolldown/pluginutils": "1.0.0-rc.1" }, "optionalDependencies": { "@rolldown/binding-android-arm64": "1.0.0-rc.1", "@rolldown/binding-darwin-arm64": "1.0.0-rc.1", "@rolldown/binding-darwin-x64": "1.0.0-rc.1", "@rolldown/binding-freebsd-x64": "1.0.0-rc.1", "@rolldown/binding-linux-arm-gnueabihf": "1.0.0-rc.1", "@rolldown/binding-linux-arm64-gnu": "1.0.0-rc.1", "@rolldown/binding-linux-arm64-musl": "1.0.0-rc.1", "@rolldown/binding-linux-x64-gnu": "1.0.0-rc.1", "@rolldown/binding-linux-x64-musl": "1.0.0-rc.1", "@rolldown/binding-openharmony-arm64": "1.0.0-rc.1", "@rolldown/binding-wasm32-wasi": "1.0.0-rc.1", "@rolldown/binding-win32-arm64-msvc": "1.0.0-rc.1", "@rolldown/binding-win32-x64-msvc": "1.0.0-rc.1" }, "bin": { "rolldown": "bin/cli.mjs" } }, "sha512-M3AeZjYE6UclblEf531Hch0WfVC/NOL43Cc+WdF3J50kk5/fvouHhDumSGTh0oRjbZ8C4faaVr5r6Nx1xMqDGg=="], + "@vercel/backends/srvx": ["srvx@0.11.16", "", { "bin": { "srvx": "bin/srvx.mjs" } }, "sha512-bp07zRuycfTY43IjAvvTFnmnJi8ikW0VFiHwOhhYcVW/L4xQ1XY4PAd4Nuum1rsA17C39zL7x+CDhrn5AL32Rw=="], + "@vercel/backends/ts-morph": ["ts-morph@12.0.0", "", { "dependencies": { "@ts-morph/common": "~0.11.0", "code-block-writer": "^10.1.1" } }, "sha512-VHC8XgU2fFW7yO1f/b3mxKDje1vmyzFXHWzOYmKEkCEwcLjDtbdLgBQviqj4ZwP4MJkQtRo6Ha2I29lq/B+VxA=="], "@vercel/backends/tsx": ["tsx@4.21.0", "", { "dependencies": { "esbuild": "~0.27.0", "get-tsconfig": "^4.7.5" }, "optionalDependencies": { "fsevents": "~2.3.3" }, "bin": { "tsx": "dist/cli.mjs" } }, "sha512-5C1sg4USs1lfG0GFb2RLXsdpXqBSEhAaA/0kPL01wxzpMqLILNxIxIOKiILz+cdg/pLnOUxFYOR5yhHU666wbw=="], @@ -4293,18 +4210,6 @@ "@vercel/static-config/ts-morph": ["ts-morph@12.0.0", "", { "dependencies": { "@ts-morph/common": "~0.11.0", "code-block-writer": "^10.1.1" } }, "sha512-VHC8XgU2fFW7yO1f/b3mxKDje1vmyzFXHWzOYmKEkCEwcLjDtbdLgBQviqj4ZwP4MJkQtRo6Ha2I29lq/B+VxA=="], - "@vinxi/listhen/h3": ["h3@1.15.11", "", { "dependencies": { "cookie-es": "^1.2.3", "crossws": "^0.3.5", "defu": "^6.1.6", "destr": "^2.0.5", "iron-webcrypto": "^1.2.1", "node-mock-http": "^1.0.4", "radix3": "^1.1.2", "ufo": "^1.6.3", "uncrypto": "^0.1.3" } }, "sha512-L3THSe2MPeBwgIZVSH5zLdBBU90TOxarvhK9d04IDY2AmVS8j2Jz2LIWtwsGOU3lu2I5jCN7FNvVfY2+XyF+mg=="], - - "@vinxi/listhen/jiti": ["jiti@1.21.7", "", { "bin": { "jiti": "bin/jiti.js" } }, "sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A=="], - - "@vinxi/listhen/pathe": ["pathe@1.1.2", "", {}, "sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ=="], - - "@vinxi/listhen/std-env": ["std-env@3.10.0", "", {}, "sha512-5GS12FdOZNliM5mAOxFRg7Ir0pWz8MdpYm6AY6VPkGpbA7ZzmbzNcBJQ0GPvvyWgcY7QAhCgf9Uy89I03faLkg=="], - - "@vinxi/plugin-directives/magicast": ["magicast@0.2.11", "", { "dependencies": { "@babel/parser": "^7.22.16", "@babel/types": "^7.22.17", "recast": "^0.23.4" } }, "sha512-6saXbRDA1HMkqbsvHOU6HBjCVgZT460qheRkLhJQHWAbhXoWESI3Kn/dGGXyKs15FFKR85jsUqFx2sMK0wy/5g=="], - - "@vinxi/server-components/magicast": ["magicast@0.2.11", "", { "dependencies": { "@babel/parser": "^7.22.16", "@babel/types": "^7.22.17", "recast": "^0.23.4" } }, "sha512-6saXbRDA1HMkqbsvHOU6HBjCVgZT460qheRkLhJQHWAbhXoWESI3Kn/dGGXyKs15FFKR85jsUqFx2sMK0wy/5g=="], - "@vitest/expect/@vitest/utils": ["@vitest/utils@3.2.4", "", { "dependencies": { "@vitest/pretty-format": "3.2.4", "loupe": "^3.1.4", "tinyrainbow": "^2.0.0" } }, "sha512-fB2V0JFrQSMsCo9HiSq3Ezpdv4iYaXRG1Sx8edX3MwxfyNn83mKiGzOcH+Fkxt4MHxr3y42fQi1oeAInqgX2QA=="], "@vitest/expect/tinyrainbow": ["tinyrainbow@2.0.0", "", {}, "sha512-op4nsTR47R6p0vMUUoYl/a+ljLFVtlfaXkLQmqfLR1qHma1h/ysYk4hEXZ880bf2CYgTskvTa/e196Vd5dDQXw=="], @@ -4317,8 +4222,6 @@ "@vitest/snapshot/magic-string": ["magic-string@0.30.21", "", { "dependencies": { "@jridgewell/sourcemap-codec": "^1.5.5" } }, "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ=="], - "@vue/babel-plugin-jsx/@babel/types": ["@babel/types@7.29.8", "", { "dependencies": { "@babel/helper-string-parser": "^7.29.7", "@babel/helper-validator-identifier": "^7.29.7" } }, "sha512-Vj1jF3cPfxg7OAfoI7QnVKLoILlm2JF9pnVHrX8qx7AHMiYWT+NDAA7jChlNgRS4WTLc/fD1lXLmPixluj+3Gg=="], - "@vue/compiler-sfc/magic-string": ["magic-string@0.30.21", "", { "dependencies": { "@jridgewell/sourcemap-codec": "^1.5.5" } }, "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ=="], "@vue/compiler-sfc/postcss": ["postcss@8.5.26", "", { "dependencies": { "nanoid": "^3.3.17", "picocolors": "^1.1.1", "source-map-js": "^1.2.1" } }, "sha512-u82N74LFzG8ca+dD8puPnplTXoGH4fTPpVGuIbt36G3qvNlkvfD0lEAZSxaly3KX8TS/L1A1gsCEmvKmBcVbkQ=="], @@ -4327,28 +4230,20 @@ "@vue/devtools-kit/hookable": ["hookable@5.5.3", "", {}, "sha512-Yc+BQe8SvoXH1643Qez1zqLRmbA5rCL+sSmk6TVos0LWVfNIB7PGncdlId77WzLGSIB5KaWgTaNTs2lNVEI6VQ=="], - "ansi-align/string-width": ["string-width@4.2.3", "", { "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", "strip-ansi": "^6.0.1" } }, "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g=="], - "anymatch/picomatch": ["picomatch@2.3.2", "", {}, "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA=="], + "archiver/buffer-crc32": ["buffer-crc32@1.0.0", "", {}, "sha512-Db1SbgBS/fg/392AblrMJk97KggmvYhr4pB5ZIMTWtaivCPMWLkmb7m21cJvpvgK+J3nsU2CmmixNBZx4vFj/w=="], + "archiver-utils/glob": ["glob@10.5.0", "", { "dependencies": { "foreground-child": "^3.1.0", "jackspeak": "^3.1.2", "minimatch": "^9.0.4", "minipass": "^7.1.2", "package-json-from-dist": "^1.0.0", "path-scurry": "^1.11.1" }, "bin": { "glob": "dist/esm/bin.mjs" } }, "sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg=="], "ast-v8-to-istanbul/estree-walker": ["estree-walker@3.0.3", "", { "dependencies": { "@types/estree": "^1.0.0" } }, "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g=="], - "ast-walker-scope/@babel/types": ["@babel/types@7.29.8", "", { "dependencies": { "@babel/helper-string-parser": "^7.29.7", "@babel/helper-validator-identifier": "^7.29.7" } }, "sha512-Vj1jF3cPfxg7OAfoI7QnVKLoILlm2JF9pnVHrX8qx7AHMiYWT+NDAA7jChlNgRS4WTLc/fD1lXLmPixluj+3Gg=="], - "autoprefixer/browserslist": ["browserslist@4.28.8", "", { "dependencies": { "baseline-browser-mapping": "^2.11.12", "caniuse-lite": "^1.0.30001809", "electron-to-chromium": "^1.5.402", "node-releases": "^2.0.53", "update-browserslist-db": "^1.3.0" }, "bin": { "browserslist": "cli.js" } }, "sha512-V2NpofLblG64mfOtSgDhOJESZEGogzDMBv/q+W6oc4LXWP/q75eOXoOaaOu1EOadB9U4Bwx/e0yzbvwKH8zalA=="], - "babel-dead-code-elimination/@babel/types": ["@babel/types@7.29.8", "", { "dependencies": { "@babel/helper-string-parser": "^7.29.7", "@babel/helper-validator-identifier": "^7.29.7" } }, "sha512-Vj1jF3cPfxg7OAfoI7QnVKLoILlm2JF9pnVHrX8qx7AHMiYWT+NDAA7jChlNgRS4WTLc/fD1lXLmPixluj+3Gg=="], - "babel-plugin-jsx-dom-expressions/@babel/helper-module-imports": ["@babel/helper-module-imports@7.18.6", "", { "dependencies": { "@babel/types": "^7.18.6" } }, "sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA=="], - "babel-plugin-jsx-dom-expressions/@babel/types": ["@babel/types@7.29.8", "", { "dependencies": { "@babel/helper-string-parser": "^7.29.7", "@babel/helper-validator-identifier": "^7.29.7" } }, "sha512-Vj1jF3cPfxg7OAfoI7QnVKLoILlm2JF9pnVHrX8qx7AHMiYWT+NDAA7jChlNgRS4WTLc/fD1lXLmPixluj+3Gg=="], - "babel-plugin-jsx-dom-expressions/parse5": ["parse5@7.3.0", "", { "dependencies": { "entities": "^6.0.0" } }, "sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw=="], - "babel-walk/@babel/types": ["@babel/types@7.29.8", "", { "dependencies": { "@babel/helper-string-parser": "^7.29.7", "@babel/helper-validator-identifier": "^7.29.7" } }, "sha512-Vj1jF3cPfxg7OAfoI7QnVKLoILlm2JF9pnVHrX8qx7AHMiYWT+NDAA7jChlNgRS4WTLc/fD1lXLmPixluj+3Gg=="], - "better-auth/jose": ["jose@6.2.9", "", {}, "sha512-XrchZOFZUl/T3vTwRe8XK+cJrGtMF4th1ARnDfwbBXFKThGhlsxEE4Zu03AD/bjJSt/9jT/mxrOCkJWOg77aPA=="], "better-call/rou3": ["rou3@0.7.12", "", {}, "sha512-iFE4hLDuloSWcD7mjdCDhx2bKcIsYbtOTpfH5MHHLSKMOUyjqQXTeZVa289uuwEGEKFoE/BAPbhaU4B774nceg=="], @@ -4357,20 +4252,16 @@ "body-parser/content-type": ["content-type@2.1.0", "", {}, "sha512-mj7UPXE0jaqaOsukNZRUEfEi2AcL7C/vwmwcHV0O97eO1E1pxBZuyjlZrx5seTaNBg1U6+o35wpa35Qfcc+7ag=="], - "boxen/type-fest": ["type-fest@4.41.0", "", {}, "sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA=="], - "c12/chokidar": ["chokidar@5.0.0", "", { "dependencies": { "readdirp": "^5.0.0" } }, "sha512-TQMmc3w+5AxjpL8iIiwebF73dRDF4fBIieAqGn9RGCWaEVwQ6Fb2cGe31Yns0RRIzii5goJ1Y7xbMwo1TxMplw=="], "caniuse-api/browserslist": ["browserslist@4.28.8", "", { "dependencies": { "baseline-browser-mapping": "^2.11.12", "caniuse-lite": "^1.0.30001809", "electron-to-chromium": "^1.5.402", "node-releases": "^2.0.53", "update-browserslist-db": "^1.3.0" }, "bin": { "browserslist": "cli.js" } }, "sha512-V2NpofLblG64mfOtSgDhOJESZEGogzDMBv/q+W6oc4LXWP/q75eOXoOaaOu1EOadB9U4Bwx/e0yzbvwKH8zalA=="], - "clipboardy/execa": ["execa@8.0.1", "", { "dependencies": { "cross-spawn": "^7.0.3", "get-stream": "^8.0.1", "human-signals": "^5.0.0", "is-stream": "^3.0.0", "merge-stream": "^2.0.0", "npm-run-path": "^5.1.0", "onetime": "^6.0.0", "signal-exit": "^4.1.0", "strip-final-newline": "^3.0.0" } }, "sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg=="], + "cliui/string-width": ["string-width@7.2.0", "", { "dependencies": { "emoji-regex": "^10.3.0", "get-east-asian-width": "^1.0.0", "strip-ansi": "^7.1.0" } }, "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ=="], - "clipboardy/is-wsl": ["is-wsl@3.1.1", "", { "dependencies": { "is-inside-container": "^1.0.0" } }, "sha512-e6rvdUCiQCAuumZslxRJWR/Doq4VpPR82kqclvcS0efgt430SlGIk05vdCN58+VrzgtIcfNODjozVielycD4Sw=="], + "cliui/strip-ansi": ["strip-ansi@7.2.0", "", { "dependencies": { "ansi-regex": "^6.2.2" } }, "sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w=="], "config-chain/ini": ["ini@1.3.8", "", {}, "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew=="], - "constantinople/@babel/types": ["@babel/types@7.29.8", "", { "dependencies": { "@babel/helper-string-parser": "^7.29.7", "@babel/helper-validator-identifier": "^7.29.7" } }, "sha512-Vj1jF3cPfxg7OAfoI7QnVKLoILlm2JF9pnVHrX8qx7AHMiYWT+NDAA7jChlNgRS4WTLc/fD1lXLmPixluj+3Gg=="], - "copy-anything/is-what": ["is-what@5.5.0", "", {}, "sha512-oG7cgbmg5kLYae2N5IVd3jm2s+vldjxJzK1pcu9LfpGuQ93MQSzo0okvRna+7y5ifrD+20FE8FvjusyGaz14fw=="], "cosmiconfig/js-yaml": ["js-yaml@4.3.1", "", { "dependencies": { "argparse": "^2.0.1" }, "bin": { "js-yaml": "bin/js-yaml.js" } }, "sha512-CY6crGq313MX8GkwvB7tzgp99vjQxY1++5y10/BKN/GUfHqWaOGQMNZkBvqSzsZKWk/ijwHlWzzkLulsGHhjWQ=="], @@ -4399,8 +4290,6 @@ "data-urls/whatwg-url": ["whatwg-url@16.0.1", "", { "dependencies": { "@exodus/bytes": "^1.11.0", "tr46": "^6.0.0", "webidl-conversions": "^8.0.1" } }, "sha512-1to4zXBxmXHV3IiSSEInrreIlu02vUOvrhxJJH5vcxYTBDAx51cqZiKdyTxlecdKNSjj8EcxGBxNf6Vg+945gw=="], - "dax-sh/undici-types": ["undici-types@5.28.4", "", {}, "sha512-3OeMF5Lyowe8VW0skf5qaIE7Or3yS9LS7fvMUI0gg4YxpIBVg0L8BxCmROw2CcYhSkpR68Epz7CGc8MPj94Uww=="], - "debug/ms": ["ms@2.1.3", "", {}, "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="], "dom-serializer/entities": ["entities@4.5.0", "", {}, "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw=="], @@ -4417,6 +4306,8 @@ "end-of-stream/once": ["once@1.3.3", "", { "dependencies": { "wrappy": "1" } }, "sha512-6vaNInhu+CHxtONf3zw3vq4SP2DOQhjBvIa3rNcG0+P7eKWlYH6Peu7rHizSloRU2EwMz6GraLieis9Ac9+p1w=="], + "env-runner/srvx": ["srvx@0.11.22", "", { "bin": { "srvx": "bin/srvx.mjs" } }, "sha512-LqZxxBDMKuMAZzFzJnDCkFOrs9MZQZr0LvHiO/SuSZVdQaXD7xQ5UWTUxheJrQPve1qk9MG2B/yttUvJxw8egQ=="], + "estree-util-build-jsx/estree-walker": ["estree-walker@3.0.3", "", { "dependencies": { "@types/estree": "^1.0.0" } }, "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g=="], "find-up/unicorn-magic": ["unicorn-magic@0.3.0", "", {}, "sha512-+QBBXBCvifc56fsbuxZQ6Sic3wqqc3WWaqxs58gvJrcOuN83HGTCwz3oS5phzU9LthRNE9VrJCFCLUgHeeFnfA=="], @@ -4425,7 +4316,7 @@ "foreground-child/signal-exit": ["signal-exit@4.1.0", "", {}, "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw=="], - "h3/cookie-es": ["cookie-es@1.2.3", "", {}, "sha512-lXVyvUvrNXblMqzIRrxHb57UUVmqsSWlxqt3XIjCkUP0wDAf6uicO6KMbEgYrMNtEvWgWHwe42CKxPu9MYAnWw=="], + "h3/crossws": ["crossws@0.3.5", "", { "dependencies": { "uncrypto": "^0.1.3" } }, "sha512-ojKiDvcmByhwa8YYqbQI/hg7MEU0NC03+pSdEq4ZUnZR9xXpwk7E43SMNGkn+JxJGPFtNvQ48+vV2p+P1ml5PA=="], "import-fresh/resolve-from": ["resolve-from@4.0.0", "", {}, "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g=="], @@ -4443,22 +4334,12 @@ "lazystream/readable-stream": ["readable-stream@2.3.8", "", { "dependencies": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", "isarray": "~1.0.0", "process-nextick-args": "~2.0.0", "safe-buffer": "~5.1.1", "string_decoder": "~1.1.1", "util-deprecate": "~1.0.1" } }, "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA=="], - "listhen/@parcel/watcher-wasm": ["@parcel/watcher-wasm@2.6.0", "", { "dependencies": { "is-glob": "^4.0.3", "napi-wasm": "^1.1.0", "picomatch": "^4.0.4" } }, "sha512-dtjbDxKSDPQ8AmA+pS4OFaHE1FKrjtGpLGBxw85uKFkRorjNbvDM/aFPgqosu40wprbp1xw2ZSxIKqghCUHe2w=="], - - "listhen/citty": ["citty@0.2.2", "", {}, "sha512-+6vJA3L98yv+IdfKGZHBNiGW5KHn22e/JwID0Strsz8h4S/csAu/OuICwxrg44k5MRiZHWIo8XXuJgQTriRP4w=="], - - "listhen/crossws": ["crossws@0.4.10", "", { "peerDependencies": { "srvx": ">=0.11.5" }, "optionalPeers": ["srvx"] }, "sha512-pz3oubH/dt12KjqsUB0IuXW4nwRDQ583iDsP4555Cpdqx0NoU7pGlWBcayyFI8f/l/idRpgjMEfwuOxSWJYlIA=="], - "listhen/h3": ["h3@1.15.11", "", { "dependencies": { "cookie-es": "^1.2.3", "crossws": "^0.3.5", "defu": "^6.1.6", "destr": "^2.0.5", "iron-webcrypto": "^1.2.1", "node-mock-http": "^1.0.4", "radix3": "^1.1.2", "ufo": "^1.6.3", "uncrypto": "^0.1.3" } }, "sha512-L3THSe2MPeBwgIZVSH5zLdBBU90TOxarvhK9d04IDY2AmVS8j2Jz2LIWtwsGOU3lu2I5jCN7FNvVfY2+XyF+mg=="], - "listhen/untun": ["untun@0.2.2", "", { "bin": { "untun": "dist/cli.mjs" } }, "sha512-+NnOJcSiEtYsVgJmXUzQbJeRAFXJC4yPJYuh6kF9B0Rm6zunXcs/3GZOTllyocSbUDIxD6Bj7e/4ATw7sph1Sw=="], - "loose-envify/js-tokens": ["js-tokens@4.0.0", "", {}, "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="], "magic-string-ast/magic-string": ["magic-string@0.30.21", "", { "dependencies": { "@jridgewell/sourcemap-codec": "^1.5.5" } }, "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ=="], - "magicast/@babel/types": ["@babel/types@7.29.8", "", { "dependencies": { "@babel/helper-string-parser": "^7.29.7", "@babel/helper-validator-identifier": "^7.29.7" } }, "sha512-Vj1jF3cPfxg7OAfoI7QnVKLoILlm2JF9pnVHrX8qx7AHMiYWT+NDAA7jChlNgRS4WTLc/fD1lXLmPixluj+3Gg=="], - "micro/arg": ["arg@4.1.0", "", {}, "sha512-ZWc51jO3qegGkVh8Hwpv636EkbesNV5ZNQPCtRa+0qytRYPEs9IYT9qITY9buezqUH5uqyzlWLcufrzU2rffdg=="], "micro/content-type": ["content-type@1.0.4", "", {}, "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA=="], @@ -4471,12 +4352,18 @@ "nano-css/css-tree": ["css-tree@1.1.3", "", { "dependencies": { "mdn-data": "2.0.14", "source-map": "^0.6.1" } }, "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q=="], - "nitropack/chokidar": ["chokidar@5.0.0", "", { "dependencies": { "readdirp": "^5.0.0" } }, "sha512-TQMmc3w+5AxjpL8iIiwebF73dRDF4fBIieAqGn9RGCWaEVwQ6Fb2cGe31Yns0RRIzii5goJ1Y7xbMwo1TxMplw=="], + "nitro/h3": ["h3@2.0.1-rc.22", "", { "dependencies": { "rou3": "^0.8.1", "srvx": "^0.11.15" }, "peerDependencies": { "crossws": "^0.4.1" }, "optionalPeers": ["crossws"], "bin": { "h3": "bin/h3.mjs" } }, "sha512-Esv0DMIuPkCTSWCA0vO73vcTqwzH1wjSrAO1TXNu/K3up1sZHa9EKMapbmxCDYBeymC3fVTk4qxp7ogQWQ+KgA=="], - "nitropack/citty": ["citty@0.2.2", "", {}, "sha512-+6vJA3L98yv+IdfKGZHBNiGW5KHn22e/JwID0Strsz8h4S/csAu/OuICwxrg44k5MRiZHWIo8XXuJgQTriRP4w=="], + "nitro/ofetch": ["ofetch@2.0.0-alpha.3", "", {}, "sha512-zpYTCs2byOuft65vI3z43Dd6iSdFbOZZLb9/d21aCpx2rGastVU9dOCv0lu4ykc1Ur1anAYjDi3SUvR0vq50JA=="], + + "nitro/srvx": ["srvx@0.11.22", "", { "bin": { "srvx": "bin/srvx.mjs" } }, "sha512-LqZxxBDMKuMAZzFzJnDCkFOrs9MZQZr0LvHiO/SuSZVdQaXD7xQ5UWTUxheJrQPve1qk9MG2B/yttUvJxw8egQ=="], + + "nitropack/chokidar": ["chokidar@5.0.0", "", { "dependencies": { "readdirp": "^5.0.0" } }, "sha512-TQMmc3w+5AxjpL8iIiwebF73dRDF4fBIieAqGn9RGCWaEVwQ6Fb2cGe31Yns0RRIzii5goJ1Y7xbMwo1TxMplw=="], "nitropack/cookie-es": ["cookie-es@2.0.1", "", {}, "sha512-aVf4A4hI2w70LnF7GG+7xDQUkliwiXWXFvTjkip4+b64ygDQ2sJPRSKFDHbxn8o0xu9QzPkMuuiWIXyFSE2slA=="], + "nitropack/crossws": ["crossws@0.3.5", "", { "dependencies": { "uncrypto": "^0.1.3" } }, "sha512-ojKiDvcmByhwa8YYqbQI/hg7MEU0NC03+pSdEq4ZUnZR9xXpwk7E43SMNGkn+JxJGPFtNvQ48+vV2p+P1ml5PA=="], + "nitropack/dot-prop": ["dot-prop@10.2.0", "", { "dependencies": { "type-fest": "^5.0.0" } }, "sha512-BTJ9aZYL3vCfZlZOBLy9v8TUqWGQ0pzFnygKwFZt5udj6viBoFIBviKPUoZLDCPn1FoXffv6McQFDenrm5Krfw=="], "nitropack/esbuild": ["esbuild@0.28.2", "", { "optionalDependencies": { "@esbuild/aix-ppc64": "0.28.2", "@esbuild/android-arm": "0.28.2", "@esbuild/android-arm64": "0.28.2", "@esbuild/android-x64": "0.28.2", "@esbuild/darwin-arm64": "0.28.2", "@esbuild/darwin-x64": "0.28.2", "@esbuild/freebsd-arm64": "0.28.2", "@esbuild/freebsd-x64": "0.28.2", "@esbuild/linux-arm": "0.28.2", "@esbuild/linux-arm64": "0.28.2", "@esbuild/linux-ia32": "0.28.2", "@esbuild/linux-loong64": "0.28.2", "@esbuild/linux-mips64el": "0.28.2", "@esbuild/linux-ppc64": "0.28.2", "@esbuild/linux-riscv64": "0.28.2", "@esbuild/linux-s390x": "0.28.2", "@esbuild/linux-x64": "0.28.2", "@esbuild/netbsd-arm64": "0.28.2", "@esbuild/netbsd-x64": "0.28.2", "@esbuild/openbsd-arm64": "0.28.2", "@esbuild/openbsd-x64": "0.28.2", "@esbuild/openharmony-arm64": "0.28.2", "@esbuild/sunos-x64": "0.28.2", "@esbuild/win32-arm64": "0.28.2", "@esbuild/win32-ia32": "0.28.2", "@esbuild/win32-x64": "0.28.2" }, "bin": { "esbuild": "bin/esbuild" } }, "sha512-HKVLS8dvII+xoKW9kmqxbRKrnWEXfJJr/FZhhJmiqIB0e053QNYFqOBouTMO/k5sID4MvCiUCvv8b9M4h32wIA=="], @@ -4489,7 +4376,7 @@ "nitropack/unctx": ["unctx@2.5.0", "", { "dependencies": { "acorn": "^8.15.0", "estree-walker": "^3.0.3", "magic-string": "^0.30.21", "unplugin": "^2.3.11" } }, "sha512-p+Rz9x0R7X+CYDkT+Xg8/GhpcShTlU8n+cf9OtOEf7zEQsNcCZO1dPKNRDqvUTaq+P32PMMkxWHwfrxkqfqAYg=="], - "nitropack/unenv": ["unenv@2.0.0-rc.24", "", { "dependencies": { "pathe": "^2.0.3" } }, "sha512-i7qRCmY42zmCwnYlh9H2SvLEypEFGye5iRmEMKjcGi7zk9UquigRjFtTLz0TYqr0ZGLZhaMHl/foy1bZR+Cwlw=="], + "nitropack/unstorage": ["unstorage@1.17.5", "", { "dependencies": { "anymatch": "^3.1.3", "chokidar": "^5.0.0", "destr": "^2.0.5", "h3": "^1.15.10", "lru-cache": "^11.2.7", "node-fetch-native": "^1.6.7", "ofetch": "^1.5.1", "ufo": "^1.6.3" }, "peerDependencies": { "@azure/app-configuration": "^1.8.0", "@azure/cosmos": "^4.2.0", "@azure/data-tables": "^13.3.0", "@azure/identity": "^4.6.0", "@azure/keyvault-secrets": "^4.9.0", "@azure/storage-blob": "^12.26.0", "@capacitor/preferences": "^6 || ^7 || ^8", "@deno/kv": ">=0.9.0", "@netlify/blobs": "^6.5.0 || ^7.0.0 || ^8.1.0 || ^9.0.0 || ^10.0.0", "@planetscale/database": "^1.19.0", "@upstash/redis": "^1.34.3", "@vercel/blob": ">=0.27.1", "@vercel/functions": "^2.2.12 || ^3.0.0", "@vercel/kv": "^1 || ^2 || ^3", "aws4fetch": "^1.0.20", "db0": ">=0.2.1", "idb-keyval": "^6.2.1", "ioredis": "^5.4.2", "uploadthing": "^7.4.4" }, "optionalPeers": ["@azure/app-configuration", "@azure/cosmos", "@azure/data-tables", "@azure/identity", "@azure/keyvault-secrets", "@azure/storage-blob", "@capacitor/preferences", "@deno/kv", "@netlify/blobs", "@planetscale/database", "@upstash/redis", "@vercel/blob", "@vercel/functions", "@vercel/kv", "aws4fetch", "db0", "idb-keyval", "ioredis", "uploadthing"] }, "sha512-0i3iqvRfx29hkNntHyQvJTpf5W9dQ9ZadSoRU8+xVlhVtT7jAX57fazYO9EHvcRCfBCyi5YRya7XCDOsbTgkPg=="], "node-fetch/whatwg-url": ["whatwg-url@5.0.0", "", { "dependencies": { "tr46": "~0.0.3", "webidl-conversions": "^3.0.0" } }, "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw=="], @@ -4497,8 +4384,6 @@ "nuxt/undici": ["undici@8.10.0", "", {}, "sha512-HvltHd7avK13QIw/oLe4qoOLyoVSoafqJ2jYOrtMRBkbYT31eiBQ8O0ehRKZiEZCMEyLFQNIADpgCWC5fALvYQ=="], - "nypm/citty": ["citty@0.2.2", "", {}, "sha512-+6vJA3L98yv+IdfKGZHBNiGW5KHn22e/JwID0Strsz8h4S/csAu/OuICwxrg44k5MRiZHWIo8XXuJgQTriRP4w=="], - "oxc-parser/@oxc-project/types": ["@oxc-project/types@0.127.0", "", {}, "sha512-aIYXQBo4lCbO4z0R3FHeucQHpF46l2LbMdxRvqvuRuW2OxdnSkcng5B8+K12spgLDj93rtN3+J2Vac/TIO+ciQ=="], "p-locate/p-limit": ["p-limit@4.0.0", "", { "dependencies": { "yocto-queue": "^1.0.0" } }, "sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ=="], @@ -4589,8 +4474,6 @@ "proper-lockfile/retry": ["retry@0.12.0", "", {}, "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow=="], - "react-docgen/@babel/types": ["@babel/types@7.29.8", "", { "dependencies": { "@babel/helper-string-parser": "^7.29.7", "@babel/helper-validator-identifier": "^7.29.7" } }, "sha512-Vj1jF3cPfxg7OAfoI7QnVKLoILlm2JF9pnVHrX8qx7AHMiYWT+NDAA7jChlNgRS4WTLc/fD1lXLmPixluj+3Gg=="], - "read-yaml-file/js-yaml": ["js-yaml@4.3.1", "", { "dependencies": { "argparse": "^2.0.1" }, "bin": { "js-yaml": "bin/js-yaml.js" } }, "sha512-CY6crGq313MX8GkwvB7tzgp99vjQxY1++5y10/BKN/GUfHqWaOGQMNZkBvqSzsZKWk/ijwHlWzzkLulsGHhjWQ=="], "read-yaml-file/strip-bom": ["strip-bom@4.0.0", "", {}, "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w=="], @@ -4613,8 +4496,6 @@ "solid-refresh/@babel/generator": ["@babel/generator@7.29.8", "", { "dependencies": { "@babel/parser": "^7.29.8", "@babel/types": "^7.29.8", "@jridgewell/gen-mapping": "^0.3.12", "@jridgewell/trace-mapping": "^0.3.28", "jsesc": "^3.0.2" } }, "sha512-gZbepsdh3WDtgZKWL+vTPh71LSBrm/Y4/QDZBVCcYfmeTEEuoOYwlSy+G1StfJg+/Zy550u/3TATbm7qDbbMtg=="], - "solid-refresh/@babel/types": ["@babel/types@7.29.8", "", { "dependencies": { "@babel/helper-string-parser": "^7.29.7", "@babel/helper-validator-identifier": "^7.29.7" } }, "sha512-Vj1jF3cPfxg7OAfoI7QnVKLoILlm2JF9pnVHrX8qx7AHMiYWT+NDAA7jChlNgRS4WTLc/fD1lXLmPixluj+3Gg=="], - "sort-keys/is-plain-obj": ["is-plain-obj@2.1.0", "", {}, "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA=="], "source-map-support/source-map": ["source-map@0.6.1", "", {}, "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="], @@ -4629,11 +4510,7 @@ "storybook-solidjs-vite/semver": ["semver@7.8.1", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-rkVq3IXh+4FDGch+KwzX3aV9W3kO54GyEgpvBzSyctDA6Xtd7RJQV1xmXbeQp5v7+VzLOfVqiutSE6GICgPFvg=="], - "string-width-cjs/emoji-regex": ["emoji-regex@8.0.0", "", {}, "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="], - - "string-width-cjs/strip-ansi": ["strip-ansi@6.0.1", "", { "dependencies": { "ansi-regex": "^5.0.1" } }, "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A=="], - - "strip-ansi/ansi-regex": ["ansi-regex@6.3.0", "", {}, "sha512-WpDfL7NO6j7tH88IDBNVdUJxDh9nmCteAVW9dsep846XdwF4naCBK+/tGLX3KJgcpgMRXCFlTM2hKGoK9FsdrQ=="], + "string-width/strip-ansi": ["strip-ansi@7.2.0", "", { "dependencies": { "ansi-regex": "^6.2.2" } }, "sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w=="], "stylehacks/browserslist": ["browserslist@4.28.8", "", { "dependencies": { "baseline-browser-mapping": "^2.11.12", "caniuse-lite": "^1.0.30001809", "electron-to-chromium": "^1.5.402", "node-releases": "^2.0.53", "update-browserslist-db": "^1.3.0" }, "bin": { "browserslist": "cli.js" } }, "sha512-V2NpofLblG64mfOtSgDhOJESZEGogzDMBv/q+W6oc4LXWP/q75eOXoOaaOu1EOadB9U4Bwx/e0yzbvwKH8zalA=="], @@ -4651,8 +4528,6 @@ "table/string-width": ["string-width@4.2.3", "", { "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", "strip-ansi": "^6.0.1" } }, "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g=="], - "table/strip-ansi": ["strip-ansi@6.0.1", "", { "dependencies": { "ansi-regex": "^5.0.1" } }, "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A=="], - "tailwindcss/chokidar": ["chokidar@3.6.0", "", { "dependencies": { "anymatch": "~3.1.2", "braces": "~3.0.2", "glob-parent": "~5.1.2", "is-binary-path": "~2.1.0", "is-glob": "~4.0.1", "normalize-path": "~3.0.0", "readdirp": "~3.6.0" }, "optionalDependencies": { "fsevents": "~2.3.2" } }, "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw=="], "tailwindcss/glob-parent": ["glob-parent@6.0.2", "", { "dependencies": { "is-glob": "^4.0.3" } }, "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A=="], @@ -4675,21 +4550,13 @@ "type-is/content-type": ["content-type@2.1.0", "", {}, "sha512-mj7UPXE0jaqaOsukNZRUEfEi2AcL7C/vwmwcHV0O97eO1E1pxBZuyjlZrx5seTaNBg1U6+o35wpa35Qfcc+7ag=="], - "unenv/mime": ["mime@3.0.0", "", { "bin": { "mime": "cli.js" } }, "sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A=="], - - "unenv/pathe": ["pathe@1.1.2", "", {}, "sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ=="], - "unimport/estree-walker": ["estree-walker@3.0.3", "", { "dependencies": { "@types/estree": "^1.0.0" } }, "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g=="], "unplugin-dts/magic-string": ["magic-string@0.30.21", "", { "dependencies": { "@jridgewell/sourcemap-codec": "^1.5.5" } }, "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ=="], "unplugin-dts/unplugin": ["unplugin@2.3.11", "", { "dependencies": { "@jridgewell/remapping": "^2.3.5", "acorn": "^8.15.0", "picomatch": "^4.0.3", "webpack-virtual-modules": "^0.6.2" } }, "sha512-5uKD0nqiYVzlmCRs01Fhs2BdkEgBS3SAVP6ndrBsuK42iC2+JHyxM05Rm9G8+5mkmRtzMZGY8Ct5+mliZxU/Ww=="], - "unstorage/chokidar": ["chokidar@5.0.0", "", { "dependencies": { "readdirp": "^5.0.0" } }, "sha512-TQMmc3w+5AxjpL8iIiwebF73dRDF4fBIieAqGn9RGCWaEVwQ6Fb2cGe31Yns0RRIzii5goJ1Y7xbMwo1TxMplw=="], - - "unstorage/h3": ["h3@1.15.11", "", { "dependencies": { "cookie-es": "^1.2.3", "crossws": "^0.3.5", "defu": "^6.1.6", "destr": "^2.0.5", "iron-webcrypto": "^1.2.1", "node-mock-http": "^1.0.4", "radix3": "^1.1.2", "ufo": "^1.6.3", "uncrypto": "^0.1.3" } }, "sha512-L3THSe2MPeBwgIZVSH5zLdBBU90TOxarvhK9d04IDY2AmVS8j2Jz2LIWtwsGOU3lu2I5jCN7FNvVfY2+XyF+mg=="], - - "untun/pathe": ["pathe@1.1.2", "", {}, "sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ=="], + "untyped/citty": ["citty@0.1.6", "", { "dependencies": { "consola": "^3.2.3" } }, "sha512-tskPPKEs8D2KPafUypv2gxwJP8h/OaJmC82QQGGDQcHvXX43xF2VDACcJVmZ0EuSxkpO9Kc4MlrA3q0+FG58AQ=="], "unwasm/magic-string": ["magic-string@0.30.21", "", { "dependencies": { "@jridgewell/sourcemap-codec": "^1.5.5" } }, "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ=="], @@ -4701,20 +4568,6 @@ "vercel/zod": ["zod@4.1.11", "", {}, "sha512-WPsqwxITS2tzx1bzhIKsEs19ABD5vmCVa4xBo2tq/SrV4RNZtfws1EnCWQXM6yh8bD08a1idvkB5MZSBiZsjwg=="], - "vinxi/chokidar": ["chokidar@4.0.3", "", { "dependencies": { "readdirp": "^4.0.1" } }, "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA=="], - - "vinxi/es-module-lexer": ["es-module-lexer@1.7.0", "", {}, "sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA=="], - - "vinxi/esbuild": ["esbuild@0.25.12", "", { "optionalDependencies": { "@esbuild/aix-ppc64": "0.25.12", "@esbuild/android-arm": "0.25.12", "@esbuild/android-arm64": "0.25.12", "@esbuild/android-x64": "0.25.12", "@esbuild/darwin-arm64": "0.25.12", "@esbuild/darwin-x64": "0.25.12", "@esbuild/freebsd-arm64": "0.25.12", "@esbuild/freebsd-x64": "0.25.12", "@esbuild/linux-arm": "0.25.12", "@esbuild/linux-arm64": "0.25.12", "@esbuild/linux-ia32": "0.25.12", "@esbuild/linux-loong64": "0.25.12", "@esbuild/linux-mips64el": "0.25.12", "@esbuild/linux-ppc64": "0.25.12", "@esbuild/linux-riscv64": "0.25.12", "@esbuild/linux-s390x": "0.25.12", "@esbuild/linux-x64": "0.25.12", "@esbuild/netbsd-arm64": "0.25.12", "@esbuild/netbsd-x64": "0.25.12", "@esbuild/openbsd-arm64": "0.25.12", "@esbuild/openbsd-x64": "0.25.12", "@esbuild/openharmony-arm64": "0.25.12", "@esbuild/sunos-x64": "0.25.12", "@esbuild/win32-arm64": "0.25.12", "@esbuild/win32-ia32": "0.25.12", "@esbuild/win32-x64": "0.25.12" }, "bin": { "esbuild": "bin/esbuild" } }, "sha512-bbPBYYrtZbkt6Os6FiTLCTFxvq4tt3JKall1vRwshA3fdVztsLAatFaZobhkBC8/BrPetoa0oksYoKXoG4ryJg=="], - - "vinxi/hookable": ["hookable@5.5.3", "", {}, "sha512-Yc+BQe8SvoXH1643Qez1zqLRmbA5rCL+sSmk6TVos0LWVfNIB7PGncdlId77WzLGSIB5KaWgTaNTs2lNVEI6VQ=="], - - "vinxi/pathe": ["pathe@1.1.2", "", {}, "sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ=="], - - "vinxi/serve-static": ["serve-static@1.16.3", "", { "dependencies": { "encodeurl": "~2.0.0", "escape-html": "~1.0.3", "parseurl": "~1.3.3", "send": "~0.19.1" } }, "sha512-x0RTqQel6g5SY7Lg6ZreMmsOzncHFU7nhnRWkKgWuMTu5NN0DR5oruckMqRvacAN9d5w6ARnRBXl9xhDCgfMeA=="], - - "vinxi/unctx": ["unctx@2.5.0", "", { "dependencies": { "acorn": "^8.15.0", "estree-walker": "^3.0.3", "magic-string": "^0.30.21", "unplugin": "^2.3.11" } }, "sha512-p+Rz9x0R7X+CYDkT+Xg8/GhpcShTlU8n+cf9OtOEf7zEQsNcCZO1dPKNRDqvUTaq+P32PMMkxWHwfrxkqfqAYg=="], - "vite/postcss": ["postcss@8.5.26", "", { "dependencies": { "nanoid": "^3.3.17", "picocolors": "^1.1.1", "source-map-js": "^1.2.1" } }, "sha512-u82N74LFzG8ca+dD8puPnplTXoGH4fTPpVGuIbt36G3qvNlkvfD0lEAZSxaly3KX8TS/L1A1gsCEmvKmBcVbkQ=="], "vite-plugin-checker/chokidar": ["chokidar@5.0.0", "", { "dependencies": { "readdirp": "^5.0.0" } }, "sha512-TQMmc3w+5AxjpL8iIiwebF73dRDF4fBIieAqGn9RGCWaEVwQ6Fb2cGe31Yns0RRIzii5goJ1Y7xbMwo1TxMplw=="], @@ -4735,24 +4588,22 @@ "vitest-axe/@vitest/pretty-format": ["@vitest/pretty-format@3.2.7", "", { "dependencies": { "tinyrainbow": "^2.0.0" } }, "sha512-KUHlwqVu0sRlhCdyPdQ/wBoTfRahjUky1MubOmYw9fWfIZy1gNoHpuaaQBPAaMaVYdQYHJLurzj8ECCj5OwTqA=="], - "vue-docgen-api/@babel/types": ["@babel/types@7.29.8", "", { "dependencies": { "@babel/helper-string-parser": "^7.29.7", "@babel/helper-validator-identifier": "^7.29.7" } }, "sha512-Vj1jF3cPfxg7OAfoI7QnVKLoILlm2JF9pnVHrX8qx7AHMiYWT+NDAA7jChlNgRS4WTLc/fD1lXLmPixluj+3Gg=="], - "vue-docgen-api/lru-cache": ["lru-cache@8.0.5", "", {}, "sha512-MhWWlVnuab1RG5/zMRRcVGXZLCXrZTgfwMikgzCegsPnG62yDQo5JnqKkrK4jO5iKqDAZGItAqN5CtKBCBWRUA=="], "vue-router/chokidar": ["chokidar@5.0.0", "", { "dependencies": { "readdirp": "^5.0.0" } }, "sha512-TQMmc3w+5AxjpL8iIiwebF73dRDF4fBIieAqGn9RGCWaEVwQ6Fb2cGe31Yns0RRIzii5goJ1Y7xbMwo1TxMplw=="], "vue-router/magic-string": ["magic-string@0.30.21", "", { "dependencies": { "@jridgewell/sourcemap-codec": "^1.5.5" } }, "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ=="], - "with/@babel/types": ["@babel/types@7.29.8", "", { "dependencies": { "@babel/helper-string-parser": "^7.29.7", "@babel/helper-validator-identifier": "^7.29.7" } }, "sha512-Vj1jF3cPfxg7OAfoI7QnVKLoILlm2JF9pnVHrX8qx7AHMiYWT+NDAA7jChlNgRS4WTLc/fD1lXLmPixluj+3Gg=="], - "wrap-ansi/ansi-styles": ["ansi-styles@6.2.3", "", {}, "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg=="], + "wrap-ansi/string-width": ["string-width@7.2.0", "", { "dependencies": { "emoji-regex": "^10.3.0", "get-east-asian-width": "^1.0.0", "strip-ansi": "^7.1.0" } }, "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ=="], + + "wrap-ansi/strip-ansi": ["strip-ansi@7.2.0", "", { "dependencies": { "ansi-regex": "^6.2.2" } }, "sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w=="], + "wrap-ansi-cjs/ansi-styles": ["ansi-styles@4.3.0", "", { "dependencies": { "color-convert": "^2.0.1" } }, "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg=="], "wrap-ansi-cjs/string-width": ["string-width@4.2.3", "", { "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", "strip-ansi": "^6.0.1" } }, "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g=="], - "wrap-ansi-cjs/strip-ansi": ["strip-ansi@6.0.1", "", { "dependencies": { "ansi-regex": "^5.0.1" } }, "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A=="], - "write-file-atomic/signal-exit": ["signal-exit@4.1.0", "", {}, "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw=="], "write-yaml-file/js-yaml": ["js-yaml@4.3.1", "", { "dependencies": { "argparse": "^2.0.1" }, "bin": { "js-yaml": "bin/js-yaml.js" } }, "sha512-CY6crGq313MX8GkwvB7tzgp99vjQxY1++5y10/BKN/GUfHqWaOGQMNZkBvqSzsZKWk/ijwHlWzzkLulsGHhjWQ=="], @@ -4761,40 +4612,20 @@ "wsl-utils/is-wsl": ["is-wsl@3.1.1", "", { "dependencies": { "is-inside-container": "^1.0.0" } }, "sha512-e6rvdUCiQCAuumZslxRJWR/Doq4VpPR82kqclvcS0efgt430SlGIk05vdCN58+VrzgtIcfNODjozVielycD4Sw=="], - "yargs/string-width": ["string-width@8.2.2", "", { "dependencies": { "get-east-asian-width": "^1.5.0", "strip-ansi": "^7.1.2" } }, "sha512-GaPUh5gfdrYzqeVNZvUfT23vYYxXzKYidUcnMtJg/3rxRV63EFZy3k6xfKlmfeJD0176lnUV/Usr3XcwSvFzpg=="], - - "yauzl/buffer-crc32": ["buffer-crc32@0.2.13", "", {}, "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ=="], - "youch-core/error-stack-parser-es": ["error-stack-parser-es@1.0.5", "", {}, "sha512-5qucVt2XcuGMcEGgWI7i+yZpmpByQ8J1lHhcL7PwqCwu9FPP3VUXzT4ltHe5i2z9dePwEHcDVOAfSnHsOlCXRA=="], - "@babel/core/@babel/types/@babel/helper-string-parser": ["@babel/helper-string-parser@7.29.7", "", {}, "sha512-Pb5ijPrZ89GDH8223L4UP8i6QApWxs04RbPQJTeWDV0/keR2E36MeKnyr6LYmUUvqRRI+Iv87SuF1W6ErINzYw=="], + "@babel/generator/@babel/types/@babel/helper-string-parser": ["@babel/helper-string-parser@8.0.0", "", {}, "sha512-6mJgmFFFIIO82vvoLt9XtRC7/TkzXfts1t/SpRX4IHSzMgqoPYCWesVu1udUPUWioAE/2fcG6WuI8zrkE1gwrg=="], - "@babel/helper-annotate-as-pure/@babel/types/@babel/helper-string-parser": ["@babel/helper-string-parser@7.29.7", "", {}, "sha512-Pb5ijPrZ89GDH8223L4UP8i6QApWxs04RbPQJTeWDV0/keR2E36MeKnyr6LYmUUvqRRI+Iv87SuF1W6ErINzYw=="], + "@babel/generator/@babel/types/@babel/helper-validator-identifier": ["@babel/helper-validator-identifier@8.0.4", "", {}, "sha512-4wFaiLd0bVo4cIoTXI3zKI038NIWE/cr3jvBjejOVYVxV/m8Ltav1USiGzG1fmS5J2RhgEOgXNNK46cRPnRsrg=="], "@babel/helper-compilation-targets/lru-cache/yallist": ["yallist@3.1.1", "", {}, "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g=="], - "@babel/helper-member-expression-to-functions/@babel/types/@babel/helper-string-parser": ["@babel/helper-string-parser@7.29.7", "", {}, "sha512-Pb5ijPrZ89GDH8223L4UP8i6QApWxs04RbPQJTeWDV0/keR2E36MeKnyr6LYmUUvqRRI+Iv87SuF1W6ErINzYw=="], - - "@babel/helper-module-imports/@babel/types/@babel/helper-string-parser": ["@babel/helper-string-parser@7.29.7", "", {}, "sha512-Pb5ijPrZ89GDH8223L4UP8i6QApWxs04RbPQJTeWDV0/keR2E36MeKnyr6LYmUUvqRRI+Iv87SuF1W6ErINzYw=="], - - "@babel/helper-optimise-call-expression/@babel/types/@babel/helper-string-parser": ["@babel/helper-string-parser@7.29.7", "", {}, "sha512-Pb5ijPrZ89GDH8223L4UP8i6QApWxs04RbPQJTeWDV0/keR2E36MeKnyr6LYmUUvqRRI+Iv87SuF1W6ErINzYw=="], - - "@babel/helper-skip-transparent-expression-wrappers/@babel/types/@babel/helper-string-parser": ["@babel/helper-string-parser@7.29.7", "", {}, "sha512-Pb5ijPrZ89GDH8223L4UP8i6QApWxs04RbPQJTeWDV0/keR2E36MeKnyr6LYmUUvqRRI+Iv87SuF1W6ErINzYw=="], - - "@babel/helpers/@babel/types/@babel/helper-string-parser": ["@babel/helper-string-parser@7.29.7", "", {}, "sha512-Pb5ijPrZ89GDH8223L4UP8i6QApWxs04RbPQJTeWDV0/keR2E36MeKnyr6LYmUUvqRRI+Iv87SuF1W6ErINzYw=="], - - "@babel/parser/@babel/types/@babel/helper-string-parser": ["@babel/helper-string-parser@7.29.7", "", {}, "sha512-Pb5ijPrZ89GDH8223L4UP8i6QApWxs04RbPQJTeWDV0/keR2E36MeKnyr6LYmUUvqRRI+Iv87SuF1W6ErINzYw=="], - - "@babel/template/@babel/types/@babel/helper-string-parser": ["@babel/helper-string-parser@7.29.7", "", {}, "sha512-Pb5ijPrZ89GDH8223L4UP8i6QApWxs04RbPQJTeWDV0/keR2E36MeKnyr6LYmUUvqRRI+Iv87SuF1W6ErINzYw=="], - - "@babel/traverse/@babel/types/@babel/helper-string-parser": ["@babel/helper-string-parser@7.29.7", "", {}, "sha512-Pb5ijPrZ89GDH8223L4UP8i6QApWxs04RbPQJTeWDV0/keR2E36MeKnyr6LYmUUvqRRI+Iv87SuF1W6ErINzYw=="], - - "@deno/shim-deno/which/isexe": ["isexe@3.1.5", "", {}, "sha512-6B3tLtFqtQS4ekarvLVMZ+X+VlvQekbe4taUkf/rhVO3d/h0M2rfARm/pXLcPEsjjMsFgrFgSrhQIxcSVrBz8w=="], - "@dxup/nuxt/chokidar/readdirp": ["readdirp@5.1.1", "", {}, "sha512-Kko+Y5XQ6fM+Ce3dq3m9YGxnacYZYl9cA1wZjaF3Vbry2L3i1qVg8+CAgNPsXRArPMUMCaOR7oa9Nqntc43JKA=="], "@isaacs/cliui/string-width/emoji-regex": ["emoji-regex@9.2.2", "", {}, "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg=="], + "@isaacs/cliui/strip-ansi/ansi-regex": ["ansi-regex@6.3.0", "", {}, "sha512-WpDfL7NO6j7tH88IDBNVdUJxDh9nmCteAVW9dsep846XdwF4naCBK+/tGLX3KJgcpgMRXCFlTM2hKGoK9FsdrQ=="], + "@isaacs/cliui/wrap-ansi/ansi-styles": ["ansi-styles@6.2.3", "", {}, "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg=="], "@mapbox/node-pre-gyp/node-fetch/whatwg-url": ["whatwg-url@5.0.0", "", { "dependencies": { "tr46": "~0.0.3", "webidl-conversions": "^3.0.0" } }, "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw=="], @@ -4843,10 +4674,18 @@ "@nuxt/devtools/execa/strip-final-newline": ["strip-final-newline@3.0.0", "", {}, "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw=="], + "@nuxt/devtools/unstorage/chokidar": ["chokidar@5.0.0", "", { "dependencies": { "readdirp": "^5.0.0" } }, "sha512-TQMmc3w+5AxjpL8iIiwebF73dRDF4fBIieAqGn9RGCWaEVwQ6Fb2cGe31Yns0RRIzii5goJ1Y7xbMwo1TxMplw=="], + + "@nuxt/devtools/unstorage/h3": ["h3@1.15.11", "", { "dependencies": { "cookie-es": "^1.2.3", "crossws": "^0.3.5", "defu": "^6.1.6", "destr": "^2.0.5", "iron-webcrypto": "^1.2.1", "node-mock-http": "^1.0.4", "radix3": "^1.1.2", "ufo": "^1.6.3", "uncrypto": "^0.1.3" } }, "sha512-L3THSe2MPeBwgIZVSH5zLdBBU90TOxarvhK9d04IDY2AmVS8j2Jz2LIWtwsGOU3lu2I5jCN7FNvVfY2+XyF+mg=="], + "@nuxt/devtools/which/isexe": ["isexe@4.0.0", "", {}, "sha512-FFUtZMpoZ8RqHS3XeXEmHWLA4thH+ZxCv2lOiPIn1Xc7CxrqhWzNSDzD+/chS/zbYezmiwWLdQC09JdQKmthOw=="], "@nuxt/nitro-server/h3/cookie-es": ["cookie-es@1.2.3", "", {}, "sha512-lXVyvUvrNXblMqzIRrxHb57UUVmqsSWlxqt3XIjCkUP0wDAf6uicO6KMbEgYrMNtEvWgWHwe42CKxPu9MYAnWw=="], + "@nuxt/nitro-server/h3/crossws": ["crossws@0.3.5", "", { "dependencies": { "uncrypto": "^0.1.3" } }, "sha512-ojKiDvcmByhwa8YYqbQI/hg7MEU0NC03+pSdEq4ZUnZR9xXpwk7E43SMNGkn+JxJGPFtNvQ48+vV2p+P1ml5PA=="], + + "@nuxt/nitro-server/unstorage/chokidar": ["chokidar@5.0.0", "", { "dependencies": { "readdirp": "^5.0.0" } }, "sha512-TQMmc3w+5AxjpL8iIiwebF73dRDF4fBIieAqGn9RGCWaEVwQ6Fb2cGe31Yns0RRIzii5goJ1Y7xbMwo1TxMplw=="], + "@oxc-resolver/binding-wasm32-wasi/@emnapi/core/@emnapi/wasi-threads": ["@emnapi/wasi-threads@1.2.2", "", { "dependencies": { "tslib": "^2.4.0" } }, "sha512-c95qOXkHdydNKhscBTebqEC1CVAZpyqOfVfBzQ1qgzyl3gfeldUjIggDbIZgDKsHLgnsM+igH7TJ/eAasaVuMA=="], "@pandacss/config/esbuild/@esbuild/aix-ppc64": ["@esbuild/aix-ppc64@0.25.12", "", { "os": "aix", "cpu": "ppc64" }, "sha512-Hhmwd6CInZ3dwpuGTF8fJG6yoWmsToE+vYgD4nytZVxcu1ulHpUQRAB1UJ8+N1Am3Mz4+xOByoQoSZf4D+CpkA=="], @@ -4935,43 +4774,53 @@ "@pandacss/plugin-vue/@vue/compiler-sfc/postcss": ["postcss@8.5.26", "", { "dependencies": { "nanoid": "^3.3.17", "picocolors": "^1.1.1", "source-map-js": "^1.2.1" } }, "sha512-u82N74LFzG8ca+dD8puPnplTXoGH4fTPpVGuIbt36G3qvNlkvfD0lEAZSxaly3KX8TS/L1A1gsCEmvKmBcVbkQ=="], - "@solidjs/start/shiki/@shikijs/core": ["@shikijs/core@1.29.2", "", { "dependencies": { "@shikijs/engine-javascript": "1.29.2", "@shikijs/engine-oniguruma": "1.29.2", "@shikijs/types": "1.29.2", "@shikijs/vscode-textmate": "^10.0.1", "@types/hast": "^3.0.4", "hast-util-to-html": "^9.0.4" } }, "sha512-vju0lY9r27jJfOY4Z7+Rt/nIOjzJpZ3y+nYpqtUZInVoXQ/TJZcfGnNOGnKjFdVZb8qexiCuSlZRKcGfhhTTZQ=="], + "@solidjs/start/oxc-parser/@oxc-parser/binding-android-arm-eabi": ["@oxc-parser/binding-android-arm-eabi@0.141.0", "", { "os": "android", "cpu": "arm" }, "sha512-jk7086MFvR/T4DG9IY7MKBVt1PMxvSZoz/TvnifodvS0pjghVwJHRttnAExhlwdMOgHv1TmLdENnbNpYk2zjvA=="], - "@solidjs/start/shiki/@shikijs/engine-javascript": ["@shikijs/engine-javascript@1.29.2", "", { "dependencies": { "@shikijs/types": "1.29.2", "@shikijs/vscode-textmate": "^10.0.1", "oniguruma-to-es": "^2.2.0" } }, "sha512-iNEZv4IrLYPv64Q6k7EPpOCE/nuvGiKl7zxdq0WFuRPF5PAE9PRo2JGq/d8crLusM59BRemJ4eOqrFrC4wiQ+A=="], + "@solidjs/start/oxc-parser/@oxc-parser/binding-android-arm64": ["@oxc-parser/binding-android-arm64@0.141.0", "", { "os": "android", "cpu": "arm64" }, "sha512-a4XDQ27ZT7e7zwAlxJDTiCA7IBGWDuy2+MhFq85Of7XlBSmpkfcBFml11q0Zx6f7RMuI0B4xCtt2ytBS4yOptg=="], - "@solidjs/start/shiki/@shikijs/engine-oniguruma": ["@shikijs/engine-oniguruma@1.29.2", "", { "dependencies": { "@shikijs/types": "1.29.2", "@shikijs/vscode-textmate": "^10.0.1" } }, "sha512-7iiOx3SG8+g1MnlzZVDYiaeHe7Ez2Kf2HrJzdmGwkRisT7r4rak0e655AcM/tF9JG/kg5fMNYlLLKglbN7gBqA=="], + "@solidjs/start/oxc-parser/@oxc-parser/binding-darwin-arm64": ["@oxc-parser/binding-darwin-arm64@0.141.0", "", { "os": "darwin", "cpu": "arm64" }, "sha512-m/kVk6rzYmBeHYnz+1Y5fod00AVTTxMbC71azFfm/zjx1j9XxwKtA0+VfkKuVMC8rbghb9TtfevnuWZa9OuPEg=="], - "@solidjs/start/shiki/@shikijs/langs": ["@shikijs/langs@1.29.2", "", { "dependencies": { "@shikijs/types": "1.29.2" } }, "sha512-FIBA7N3LZ+223U7cJDUYd5shmciFQlYkFXlkKVaHsCPgfVLiO+e12FmQE6Tf9vuyEsFe3dIl8qGWKXgEHL9wmQ=="], + "@solidjs/start/oxc-parser/@oxc-parser/binding-darwin-x64": ["@oxc-parser/binding-darwin-x64@0.141.0", "", { "os": "darwin", "cpu": "x64" }, "sha512-o0X+6KZlfucWU/v5oKRQPwdFXsXAjW8jmpo/Gpw/qyKsbKtlfkHoeH9Bjp/m13TwjewvJnCkwF0DWzgpC4HjTQ=="], - "@solidjs/start/shiki/@shikijs/themes": ["@shikijs/themes@1.29.2", "", { "dependencies": { "@shikijs/types": "1.29.2" } }, "sha512-i9TNZlsq4uoyqSbluIcZkmPL9Bfi3djVxRnofUHwvx/h6SRW3cwgBC5SML7vsDcWyukY0eCzVN980rqP6qNl9g=="], + "@solidjs/start/oxc-parser/@oxc-parser/binding-freebsd-x64": ["@oxc-parser/binding-freebsd-x64@0.141.0", "", { "os": "freebsd", "cpu": "x64" }, "sha512-W5KbTnNkTMMMylqj6dYqnsXvkmESVPodPKYLJ5zdzIPdl9fUJtolkpUeSzYEbGGYB4a4A4avl3EePnZ/wLIdJg=="], - "@solidjs/start/shiki/@shikijs/types": ["@shikijs/types@1.29.2", "", { "dependencies": { "@shikijs/vscode-textmate": "^10.0.1", "@types/hast": "^3.0.4" } }, "sha512-VJjK0eIijTZf0QSTODEXCqinjBn0joAHQ+aPSBzrv4O2d/QSbsMw+ZeSRx03kV34Hy7NzUvV/7NqfYGRLrASmw=="], + "@solidjs/start/oxc-parser/@oxc-parser/binding-linux-arm-gnueabihf": ["@oxc-parser/binding-linux-arm-gnueabihf@0.141.0", "", { "os": "linux", "cpu": "arm" }, "sha512-g3dtbJa8zeOGK36Sr9cQavsdi5H/ie2hVjrSjIxsNAR1qZA40ZYVXnfdfoMAlq8CmB9qFL1yhsSCUHeNmdmt8w=="], - "@sveltejs/package/chokidar/readdirp": ["readdirp@5.1.1", "", {}, "sha512-Kko+Y5XQ6fM+Ce3dq3m9YGxnacYZYl9cA1wZjaF3Vbry2L3i1qVg8+CAgNPsXRArPMUMCaOR7oa9Nqntc43JKA=="], + "@solidjs/start/oxc-parser/@oxc-parser/binding-linux-arm-musleabihf": ["@oxc-parser/binding-linux-arm-musleabihf@0.141.0", "", { "os": "linux", "cpu": "arm" }, "sha512-e6hwQqd+3lvP13G2jxvFpoA7dzHcFLN+Mq47JCVMtdNHbbyBRo756JCtbbJH6ca8inTfyqZoqBmS3vhQlzAK2w=="], - "@svgr/hast-util-to-babel-ast/@babel/types/@babel/helper-string-parser": ["@babel/helper-string-parser@7.29.7", "", {}, "sha512-Pb5ijPrZ89GDH8223L4UP8i6QApWxs04RbPQJTeWDV0/keR2E36MeKnyr6LYmUUvqRRI+Iv87SuF1W6ErINzYw=="], + "@solidjs/start/oxc-parser/@oxc-parser/binding-linux-arm64-gnu": ["@oxc-parser/binding-linux-arm64-gnu@0.141.0", "", { "os": "linux", "cpu": "arm64" }, "sha512-vXz2BLAuypA+4MLyBg94pzEo6THVnzYnCtAjXoihIIQo0t2pnp/AmW+SH1EI+4VbuJnC//KplIJ5yyaCGua4jA=="], - "@tanstack/directive-functions-plugin/@babel/code-frame/js-tokens": ["js-tokens@4.0.0", "", {}, "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="], + "@solidjs/start/oxc-parser/@oxc-parser/binding-linux-arm64-musl": ["@oxc-parser/binding-linux-arm64-musl@0.141.0", "", { "os": "linux", "cpu": "arm64" }, "sha512-jMkS/EztNW34HKsXIaT/SoHcmtocq/vWhwFOVduF9kduuuRIVwfwQ6uxzIO+qPKSXdd2TXt54of0BJ2zFMXnmw=="], - "@tanstack/directive-functions-plugin/@babel/types/@babel/helper-string-parser": ["@babel/helper-string-parser@7.29.7", "", {}, "sha512-Pb5ijPrZ89GDH8223L4UP8i6QApWxs04RbPQJTeWDV0/keR2E36MeKnyr6LYmUUvqRRI+Iv87SuF1W6ErINzYw=="], + "@solidjs/start/oxc-parser/@oxc-parser/binding-linux-ppc64-gnu": ["@oxc-parser/binding-linux-ppc64-gnu@0.141.0", "", { "os": "linux", "cpu": "ppc64" }, "sha512-vo+MR+n3zQJ6Mq92hiP084NZcgDv5iJlVR02gMf28neMvVT1tKVm7VeiW/DxhdqOi3QLeaXIk9cUcLL1qrkngw=="], - "@tanstack/router-utils/@babel/types/@babel/helper-string-parser": ["@babel/helper-string-parser@7.29.7", "", {}, "sha512-Pb5ijPrZ89GDH8223L4UP8i6QApWxs04RbPQJTeWDV0/keR2E36MeKnyr6LYmUUvqRRI+Iv87SuF1W6ErINzYw=="], + "@solidjs/start/oxc-parser/@oxc-parser/binding-linux-riscv64-gnu": ["@oxc-parser/binding-linux-riscv64-gnu@0.141.0", "", { "os": "linux", "cpu": "none" }, "sha512-oh80w+7RuiO5gBp9Jnoa/H8Qlt3JsHL2MkW+0dwEdlDMdslVZX/YsekSK6EeyEenY66/mhCfypsNATQ7Ph3qlQ=="], - "@tanstack/server-functions-plugin/@babel/code-frame/js-tokens": ["js-tokens@4.0.0", "", {}, "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="], + "@solidjs/start/oxc-parser/@oxc-parser/binding-linux-riscv64-musl": ["@oxc-parser/binding-linux-riscv64-musl@0.141.0", "", { "os": "linux", "cpu": "none" }, "sha512-LOyEmFA8sCnYbEXP1+iQvCC/P1YXHMA/t6x1Ksp0Y9VwhLFsiBJFzV1zIxrOIE2LKaGGhDjQ29xq9cbq6omDXA=="], - "@tanstack/server-functions-plugin/@babel/types/@babel/helper-string-parser": ["@babel/helper-string-parser@7.29.7", "", {}, "sha512-Pb5ijPrZ89GDH8223L4UP8i6QApWxs04RbPQJTeWDV0/keR2E36MeKnyr6LYmUUvqRRI+Iv87SuF1W6ErINzYw=="], + "@solidjs/start/oxc-parser/@oxc-parser/binding-linux-s390x-gnu": ["@oxc-parser/binding-linux-s390x-gnu@0.141.0", "", { "os": "linux", "cpu": "s390x" }, "sha512-3wnwk/l1CvszVE5TJR1wSl/zSEfydRqrNhn6s7Vr9IzSJpUQIroqVsIoPARHRFA+FQwkxAFDAHDAasa7v8OobQ=="], - "@testing-library/vue/@testing-library/dom/aria-query": ["aria-query@5.1.3", "", { "dependencies": { "deep-equal": "^2.0.5" } }, "sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ=="], + "@solidjs/start/oxc-parser/@oxc-parser/binding-linux-x64-gnu": ["@oxc-parser/binding-linux-x64-gnu@0.141.0", "", { "os": "linux", "cpu": "x64" }, "sha512-qtyQVAAebFq57B2tifTlel3TgGqUtsYNI/e+p6aya9rN9lOZVTDvr215fGYSA9XWooxzMxDiVxkBLk2jQHbsOQ=="], - "@testing-library/vue/@testing-library/dom/chalk": ["chalk@4.1.2", "", { "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" } }, "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA=="], + "@solidjs/start/oxc-parser/@oxc-parser/binding-linux-x64-musl": ["@oxc-parser/binding-linux-x64-musl@0.141.0", "", { "os": "linux", "cpu": "x64" }, "sha512-SkGV1nKw40roEc94pv5EaaeH2ay14G6+roe8Q0wIUC1LcEKxzKW921h7+ZuZX0D3q2Mb/7aSFmxEVqnko3lPRw=="], - "@types/babel__core/@babel/types/@babel/helper-string-parser": ["@babel/helper-string-parser@7.29.7", "", {}, "sha512-Pb5ijPrZ89GDH8223L4UP8i6QApWxs04RbPQJTeWDV0/keR2E36MeKnyr6LYmUUvqRRI+Iv87SuF1W6ErINzYw=="], + "@solidjs/start/oxc-parser/@oxc-parser/binding-openharmony-arm64": ["@oxc-parser/binding-openharmony-arm64@0.141.0", "", { "os": "none", "cpu": "arm64" }, "sha512-cVgDM7n8QziQqOaP5hNgUYfMG7S/ZeuPxFWXnnHRv7rh025COk0rfQ6eEdKG3j/GaUuyvNZN4ifF1J8KmuXLLA=="], - "@types/babel__generator/@babel/types/@babel/helper-string-parser": ["@babel/helper-string-parser@7.29.7", "", {}, "sha512-Pb5ijPrZ89GDH8223L4UP8i6QApWxs04RbPQJTeWDV0/keR2E36MeKnyr6LYmUUvqRRI+Iv87SuF1W6ErINzYw=="], + "@solidjs/start/oxc-parser/@oxc-parser/binding-wasm32-wasi": ["@oxc-parser/binding-wasm32-wasi@0.141.0", "", { "dependencies": { "@emnapi/core": "1.11.2", "@emnapi/runtime": "1.11.2", "@napi-rs/wasm-runtime": "^1.1.6" }, "cpu": "none" }, "sha512-HggH++Fkn3OilBn+bs3jpgIFQa34oMAyUUHy0vpGum+gt1Eb5nyLc8dNU/RAPSw6lsLrx7ncKtHSZE+3Sp0l2g=="], - "@types/babel__template/@babel/types/@babel/helper-string-parser": ["@babel/helper-string-parser@7.29.7", "", {}, "sha512-Pb5ijPrZ89GDH8223L4UP8i6QApWxs04RbPQJTeWDV0/keR2E36MeKnyr6LYmUUvqRRI+Iv87SuF1W6ErINzYw=="], + "@solidjs/start/oxc-parser/@oxc-parser/binding-win32-arm64-msvc": ["@oxc-parser/binding-win32-arm64-msvc@0.141.0", "", { "os": "win32", "cpu": "arm64" }, "sha512-KLSEH9GwgbrqbJOjtGHt9STw96s+78yDzp7IDN8Lno+7Ut9sNBfZ4jYZIz4mD50qmWUjoOI7i9I6UENbhNbMZQ=="], - "@types/babel__traverse/@babel/types/@babel/helper-string-parser": ["@babel/helper-string-parser@7.29.7", "", {}, "sha512-Pb5ijPrZ89GDH8223L4UP8i6QApWxs04RbPQJTeWDV0/keR2E36MeKnyr6LYmUUvqRRI+Iv87SuF1W6ErINzYw=="], + "@solidjs/start/oxc-parser/@oxc-parser/binding-win32-ia32-msvc": ["@oxc-parser/binding-win32-ia32-msvc@0.141.0", "", { "os": "win32", "cpu": "ia32" }, "sha512-9UVWUOOCI/1YkiSSNjg2zyBJYM9E/t1A/8GNobd48JDn/fQ6mzxcVO3H08jb3rAaW/B1VBf8eCORTvSsO9T08g=="], + + "@solidjs/start/oxc-parser/@oxc-parser/binding-win32-x64-msvc": ["@oxc-parser/binding-win32-x64-msvc@0.141.0", "", { "os": "win32", "cpu": "x64" }, "sha512-HI/wsvbWT5RHHw5c37D0fEgeTd8/1Q4OJs5jUmEBc17VZFG6SsCIe4barq7NsAPPks/JW+3ayi3Rp+PQI5h4Kg=="], + + "@solidjs/start/oxc-parser/@oxc-project/types": ["@oxc-project/types@0.141.0", "", {}, "sha512-S4as7z0j0xQkXcJlyY5ehntwK8/wRkQb9Cyqw+J/N2rkWGQGK0SxD6X6DhQTc7qsxVTBxXbxZtBJh3mr3PtIzQ=="], + + "@sveltejs/package/chokidar/readdirp": ["readdirp@5.1.1", "", {}, "sha512-Kko+Y5XQ6fM+Ce3dq3m9YGxnacYZYl9cA1wZjaF3Vbry2L3i1qVg8+CAgNPsXRArPMUMCaOR7oa9Nqntc43JKA=="], + + "@testing-library/vue/@testing-library/dom/aria-query": ["aria-query@5.1.3", "", { "dependencies": { "deep-equal": "^2.0.5" } }, "sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ=="], + + "@testing-library/vue/@testing-library/dom/chalk": ["chalk@4.1.2", "", { "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" } }, "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA=="], "@vercel/backends/rolldown/@oxc-project/types": ["@oxc-project/types@0.110.0", "", {}, "sha512-6Ct21OIlrEnFEJk5LT4e63pk3btsI6/TusD/GStLi7wYlGJNOl1GI9qvXAnRAxQU9zqA2Oz+UwhfTOU2rPZVow=="], @@ -5057,51 +4906,19 @@ "@vercel/static-config/ts-morph/code-block-writer": ["code-block-writer@10.1.1", "", {}, "sha512-67ueh2IRGst/51p0n6FvPrnRjAGHY5F8xdjkgrYE7DDzpJe6qA07RYQ9VcoUeo5ATOjSOiWpSL3SWBRRbempMw=="], - "@vinxi/listhen/h3/cookie-es": ["cookie-es@1.2.3", "", {}, "sha512-lXVyvUvrNXblMqzIRrxHb57UUVmqsSWlxqt3XIjCkUP0wDAf6uicO6KMbEgYrMNtEvWgWHwe42CKxPu9MYAnWw=="], - - "@vinxi/plugin-directives/magicast/@babel/types": ["@babel/types@7.29.8", "", { "dependencies": { "@babel/helper-string-parser": "^7.29.7", "@babel/helper-validator-identifier": "^7.29.7" } }, "sha512-Vj1jF3cPfxg7OAfoI7QnVKLoILlm2JF9pnVHrX8qx7AHMiYWT+NDAA7jChlNgRS4WTLc/fD1lXLmPixluj+3Gg=="], - - "@vinxi/server-components/magicast/@babel/types": ["@babel/types@7.29.8", "", { "dependencies": { "@babel/helper-string-parser": "^7.29.7", "@babel/helper-validator-identifier": "^7.29.7" } }, "sha512-Vj1jF3cPfxg7OAfoI7QnVKLoILlm2JF9pnVHrX8qx7AHMiYWT+NDAA7jChlNgRS4WTLc/fD1lXLmPixluj+3Gg=="], - "@vitest/expect/@vitest/utils/@vitest/pretty-format": ["@vitest/pretty-format@3.2.4", "", { "dependencies": { "tinyrainbow": "^2.0.0" } }, "sha512-IVNZik8IVRJRTr9fxlitMKeJeXFFFN0JaB9PHPGQ8NKQbGpfjlTx9zO4RefN8gp7eqjNy8nyK3NZmBzOPeIxtA=="], - "@vue/babel-plugin-jsx/@babel/types/@babel/helper-string-parser": ["@babel/helper-string-parser@7.29.7", "", {}, "sha512-Pb5ijPrZ89GDH8223L4UP8i6QApWxs04RbPQJTeWDV0/keR2E36MeKnyr6LYmUUvqRRI+Iv87SuF1W6ErINzYw=="], - - "ansi-align/string-width/emoji-regex": ["emoji-regex@8.0.0", "", {}, "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="], - - "ansi-align/string-width/strip-ansi": ["strip-ansi@6.0.1", "", { "dependencies": { "ansi-regex": "^5.0.1" } }, "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A=="], - "archiver-utils/glob/minimatch": ["minimatch@9.0.9", "", { "dependencies": { "brace-expansion": "^2.0.2" } }, "sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg=="], "archiver-utils/glob/path-scurry": ["path-scurry@1.11.1", "", { "dependencies": { "lru-cache": "^10.2.0", "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" } }, "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA=="], - "ast-walker-scope/@babel/types/@babel/helper-string-parser": ["@babel/helper-string-parser@7.29.7", "", {}, "sha512-Pb5ijPrZ89GDH8223L4UP8i6QApWxs04RbPQJTeWDV0/keR2E36MeKnyr6LYmUUvqRRI+Iv87SuF1W6ErINzYw=="], - - "babel-dead-code-elimination/@babel/types/@babel/helper-string-parser": ["@babel/helper-string-parser@7.29.7", "", {}, "sha512-Pb5ijPrZ89GDH8223L4UP8i6QApWxs04RbPQJTeWDV0/keR2E36MeKnyr6LYmUUvqRRI+Iv87SuF1W6ErINzYw=="], - - "babel-plugin-jsx-dom-expressions/@babel/types/@babel/helper-string-parser": ["@babel/helper-string-parser@7.29.7", "", {}, "sha512-Pb5ijPrZ89GDH8223L4UP8i6QApWxs04RbPQJTeWDV0/keR2E36MeKnyr6LYmUUvqRRI+Iv87SuF1W6ErINzYw=="], - "babel-plugin-jsx-dom-expressions/parse5/entities": ["entities@6.0.1", "", {}, "sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g=="], - "babel-walk/@babel/types/@babel/helper-string-parser": ["@babel/helper-string-parser@7.29.7", "", {}, "sha512-Pb5ijPrZ89GDH8223L4UP8i6QApWxs04RbPQJTeWDV0/keR2E36MeKnyr6LYmUUvqRRI+Iv87SuF1W6ErINzYw=="], - "c12/chokidar/readdirp": ["readdirp@5.1.1", "", {}, "sha512-Kko+Y5XQ6fM+Ce3dq3m9YGxnacYZYl9cA1wZjaF3Vbry2L3i1qVg8+CAgNPsXRArPMUMCaOR7oa9Nqntc43JKA=="], - "clipboardy/execa/get-stream": ["get-stream@8.0.1", "", {}, "sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA=="], - - "clipboardy/execa/human-signals": ["human-signals@5.0.0", "", {}, "sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ=="], - - "clipboardy/execa/is-stream": ["is-stream@3.0.0", "", {}, "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA=="], + "cliui/string-width/emoji-regex": ["emoji-regex@10.6.0", "", {}, "sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A=="], - "clipboardy/execa/npm-run-path": ["npm-run-path@5.3.0", "", { "dependencies": { "path-key": "^4.0.0" } }, "sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ=="], - - "clipboardy/execa/onetime": ["onetime@6.0.0", "", { "dependencies": { "mimic-fn": "^4.0.0" } }, "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ=="], - - "clipboardy/execa/signal-exit": ["signal-exit@4.1.0", "", {}, "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw=="], - - "clipboardy/execa/strip-final-newline": ["strip-final-newline@3.0.0", "", {}, "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw=="], - - "constantinople/@babel/types/@babel/helper-string-parser": ["@babel/helper-string-parser@7.29.7", "", {}, "sha512-Pb5ijPrZ89GDH8223L4UP8i6QApWxs04RbPQJTeWDV0/keR2E36MeKnyr6LYmUUvqRRI+Iv87SuF1W6ErINzYw=="], + "cliui/strip-ansi/ansi-regex": ["ansi-regex@6.3.0", "", {}, "sha512-WpDfL7NO6j7tH88IDBNVdUJxDh9nmCteAVW9dsep846XdwF4naCBK+/tGLX3KJgcpgMRXCFlTM2hKGoK9FsdrQ=="], "cssnano-preset-default/postcss-minify-selectors/postcss-selector-parser": ["postcss-selector-parser@7.1.5", "", { "dependencies": { "cssesc": "^3.0.0", "util-deprecate": "^1.0.2" } }, "sha512-KvvtD7SrlBP7dlgkBghEE3r84CABm5SmV2aNcG4oCA+qDnJ/tvKonFVvwWAyyWUEwxuNawdfEAZKP9zM3oZ2Uw=="], @@ -5119,14 +4936,10 @@ "lazystream/readable-stream/string_decoder": ["string_decoder@1.1.1", "", { "dependencies": { "safe-buffer": "~5.1.0" } }, "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg=="], - "listhen/@parcel/watcher-wasm/napi-wasm": ["napi-wasm@1.1.3", "", { "bundled": true }, "sha512-h/4nMGsHjZDCYmQVNODIrYACVJ+I9KItbG+0si6W/jSjdA9JbWDoU4LLeMXVcEQGHjttI2tuXqDrbGF7qkUHHg=="], - "listhen/h3/cookie-es": ["cookie-es@1.2.3", "", {}, "sha512-lXVyvUvrNXblMqzIRrxHb57UUVmqsSWlxqt3XIjCkUP0wDAf6uicO6KMbEgYrMNtEvWgWHwe42CKxPu9MYAnWw=="], "listhen/h3/crossws": ["crossws@0.3.5", "", { "dependencies": { "uncrypto": "^0.1.3" } }, "sha512-ojKiDvcmByhwa8YYqbQI/hg7MEU0NC03+pSdEq4ZUnZR9xXpwk7E43SMNGkn+JxJGPFtNvQ48+vV2p+P1ml5PA=="], - "magicast/@babel/types/@babel/helper-string-parser": ["@babel/helper-string-parser@7.29.7", "", {}, "sha512-Pb5ijPrZ89GDH8223L4UP8i6QApWxs04RbPQJTeWDV0/keR2E36MeKnyr6LYmUUvqRRI+Iv87SuF1W6ErINzYw=="], - "micro/raw-body/bytes": ["bytes@3.1.0", "", {}, "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg=="], "micro/raw-body/http-errors": ["http-errors@1.7.3", "", { "dependencies": { "depd": "~1.1.2", "inherits": "2.0.4", "setprototypeof": "1.1.1", "statuses": ">= 1.5.0 < 2", "toidentifier": "1.0.0" } }, "sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw=="], @@ -5139,6 +4952,8 @@ "nano-css/css-tree/source-map": ["source-map@0.6.1", "", {}, "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="], + "nitro/h3/rou3": ["rou3@0.8.1", "", {}, "sha512-ePa+XGk00/3HuCqrEnK3LxJW7I0SdNg6EFzKUJG73hMAdDcOUC/i/aSz7LSDwLrGr33kal/rqOGydzwl6U7zBA=="], + "nitropack/chokidar/readdirp": ["readdirp@5.1.1", "", {}, "sha512-Kko+Y5XQ6fM+Ce3dq3m9YGxnacYZYl9cA1wZjaF3Vbry2L3i1qVg8+CAgNPsXRArPMUMCaOR7oa9Nqntc43JKA=="], "nitropack/esbuild/@esbuild/aix-ppc64": ["@esbuild/aix-ppc64@0.28.2", "", { "os": "aix", "cpu": "ppc64" }, "sha512-XExcO+dvLKvVtNTibSTBej1NCAbaGhWn9Ww1ZPx80qsahhPFe/8jgWP0IchNe0F3HwkU7n8ejhH8bjonqht8mQ=="], @@ -5205,14 +5020,10 @@ "nuxt/chokidar/readdirp": ["readdirp@5.1.1", "", {}, "sha512-Kko+Y5XQ6fM+Ce3dq3m9YGxnacYZYl9cA1wZjaF3Vbry2L3i1qVg8+CAgNPsXRArPMUMCaOR7oa9Nqntc43JKA=="], - "react-docgen/@babel/types/@babel/helper-string-parser": ["@babel/helper-string-parser@7.29.7", "", {}, "sha512-Pb5ijPrZ89GDH8223L4UP8i6QApWxs04RbPQJTeWDV0/keR2E36MeKnyr6LYmUUvqRRI+Iv87SuF1W6ErINzYw=="], - "readdir-glob/minimatch/brace-expansion": ["brace-expansion@2.1.4", "", { "dependencies": { "balanced-match": "^1.0.0" } }, "sha512-hGfVzPxthbf3+2yjg/RBs60cB0FhqBS/zvdV/4wn4/BmN0bNMMHPc4V/BbFieqf1TKAGGAHnY4eSjajCl0f2Xg=="], "rollup-plugin-visualizer/open/wsl-utils": ["wsl-utils@1.0.0", "", { "dependencies": { "is-wsl": "^3.1.0", "powershell-utils": "^0.1.0" } }, "sha512-Hl0ZOAs672vg+06kfujwRhoS6/jehvULrlFkuF2dRu6pHgA8U06h3xqNIqNNU1LTXPcedxByAR4GS6pwQK0mgA=="], - "solid-refresh/@babel/types/@babel/helper-string-parser": ["@babel/helper-string-parser@7.29.7", "", {}, "sha512-Pb5ijPrZ89GDH8223L4UP8i6QApWxs04RbPQJTeWDV0/keR2E36MeKnyr6LYmUUvqRRI+Iv87SuF1W6ErINzYw=="], - "storybook-solidjs-vite/@storybook/builder-vite/@storybook/csf-plugin": ["@storybook/csf-plugin@10.5.7", "", { "dependencies": { "unplugin": "^2.3.5" }, "peerDependencies": { "esbuild": "*", "rollup": "*", "storybook": "^10.5.7", "vite": "*", "webpack": "*" }, "optionalPeers": ["esbuild", "rollup", "vite", "webpack"] }, "sha512-IaX8FlM0H36HNFhJ2+4L9bCldqfvHGqcLg841SJNyK/DhfMlM7JsvY/GDH2ZFuWrUf8FSOx96GRRnHq6XfRKag=="], "storybook/@testing-library/jest-dom/aria-query": ["aria-query@5.3.1", "", {}, "sha512-Z/ZeOgVl7bcSYZ/u/rh0fOpvEpq//LZmdbkXyc7syVzjPAhfOa9ebsdTSjEBDU4vs5nC98Kfduj1uFo0qyET3g=="], @@ -5271,7 +5082,7 @@ "storybook/esbuild/@esbuild/win32-x64": ["@esbuild/win32-x64@0.28.2", "", { "os": "win32", "cpu": "x64" }, "sha512-5ebpxr3nWMzrL/rnUI755Jkuee0bHL/Gq0WTF9lvcpv73wAp5eu8MfBUgWK9bhWvZjj7yX8etf/8tI8Ney695g=="], - "table/string-width/emoji-regex": ["emoji-regex@8.0.0", "", {}, "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="], + "string-width/strip-ansi/ansi-regex": ["ansi-regex@6.3.0", "", {}, "sha512-WpDfL7NO6j7tH88IDBNVdUJxDh9nmCteAVW9dsep846XdwF4naCBK+/tGLX3KJgcpgMRXCFlTM2hKGoK9FsdrQ=="], "tailwindcss/chokidar/glob-parent": ["glob-parent@5.1.2", "", { "dependencies": { "is-glob": "^4.0.1" } }, "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow=="], @@ -5329,10 +5140,6 @@ "tsx/esbuild/@esbuild/win32-x64": ["@esbuild/win32-x64@0.28.2", "", { "os": "win32", "cpu": "x64" }, "sha512-5ebpxr3nWMzrL/rnUI755Jkuee0bHL/Gq0WTF9lvcpv73wAp5eu8MfBUgWK9bhWvZjj7yX8etf/8tI8Ney695g=="], - "unstorage/chokidar/readdirp": ["readdirp@5.1.1", "", {}, "sha512-Kko+Y5XQ6fM+Ce3dq3m9YGxnacYZYl9cA1wZjaF3Vbry2L3i1qVg8+CAgNPsXRArPMUMCaOR7oa9Nqntc43JKA=="], - - "unstorage/h3/cookie-es": ["cookie-es@1.2.3", "", {}, "sha512-lXVyvUvrNXblMqzIRrxHb57UUVmqsSWlxqt3XIjCkUP0wDAf6uicO6KMbEgYrMNtEvWgWHwe42CKxPu9MYAnWw=="], - "vee-validate/@vue/devtools-api/@vue/devtools-kit": ["@vue/devtools-kit@7.7.10", "", { "dependencies": { "@vue/devtools-shared": "^7.7.10", "birpc": "^2.3.0", "hookable": "^5.5.3", "mitt": "^3.0.1", "perfect-debounce": "^1.0.0", "speakingurl": "^14.0.1", "superjson": "^2.2.2" } }, "sha512-3WNi2Kq4tbpVbmhml7RiphmAt0279oh3fKNeWMQIrltfX8Q91b4i5PL8DtyNKdwmcsGrV4fg+erwWOmD05CLIw=="], "velite/esbuild/@esbuild/aix-ppc64": ["@esbuild/aix-ppc64@0.25.12", "", { "os": "aix", "cpu": "ppc64" }, "sha512-Hhmwd6CInZ3dwpuGTF8fJG6yoWmsToE+vYgD4nytZVxcu1ulHpUQRAB1UJ8+N1Am3Mz4+xOByoQoSZf4D+CpkA=="], @@ -5387,66 +5194,6 @@ "velite/esbuild/@esbuild/win32-x64": ["@esbuild/win32-x64@0.25.12", "", { "os": "win32", "cpu": "x64" }, "sha512-alJC0uCZpTFrSL0CCDjcgleBXPnCrEAhTBILpeAp7M/OFgoqtAetfBzX0xM00MUsVVPpVjlPuMbREqnZCXaTnA=="], - "vinxi/esbuild/@esbuild/aix-ppc64": ["@esbuild/aix-ppc64@0.25.12", "", { "os": "aix", "cpu": "ppc64" }, "sha512-Hhmwd6CInZ3dwpuGTF8fJG6yoWmsToE+vYgD4nytZVxcu1ulHpUQRAB1UJ8+N1Am3Mz4+xOByoQoSZf4D+CpkA=="], - - "vinxi/esbuild/@esbuild/android-arm": ["@esbuild/android-arm@0.25.12", "", { "os": "android", "cpu": "arm" }, "sha512-VJ+sKvNA/GE7Ccacc9Cha7bpS8nyzVv0jdVgwNDaR4gDMC/2TTRc33Ip8qrNYUcpkOHUT5OZ0bUcNNVZQ9RLlg=="], - - "vinxi/esbuild/@esbuild/android-arm64": ["@esbuild/android-arm64@0.25.12", "", { "os": "android", "cpu": "arm64" }, "sha512-6AAmLG7zwD1Z159jCKPvAxZd4y/VTO0VkprYy+3N2FtJ8+BQWFXU+OxARIwA46c5tdD9SsKGZ/1ocqBS/gAKHg=="], - - "vinxi/esbuild/@esbuild/android-x64": ["@esbuild/android-x64@0.25.12", "", { "os": "android", "cpu": "x64" }, "sha512-5jbb+2hhDHx5phYR2By8GTWEzn6I9UqR11Kwf22iKbNpYrsmRB18aX/9ivc5cabcUiAT/wM+YIZ6SG9QO6a8kg=="], - - "vinxi/esbuild/@esbuild/darwin-arm64": ["@esbuild/darwin-arm64@0.25.12", "", { "os": "darwin", "cpu": "arm64" }, "sha512-N3zl+lxHCifgIlcMUP5016ESkeQjLj/959RxxNYIthIg+CQHInujFuXeWbWMgnTo4cp5XVHqFPmpyu9J65C1Yg=="], - - "vinxi/esbuild/@esbuild/darwin-x64": ["@esbuild/darwin-x64@0.25.12", "", { "os": "darwin", "cpu": "x64" }, "sha512-HQ9ka4Kx21qHXwtlTUVbKJOAnmG1ipXhdWTmNXiPzPfWKpXqASVcWdnf2bnL73wgjNrFXAa3yYvBSd9pzfEIpA=="], - - "vinxi/esbuild/@esbuild/freebsd-arm64": ["@esbuild/freebsd-arm64@0.25.12", "", { "os": "freebsd", "cpu": "arm64" }, "sha512-gA0Bx759+7Jve03K1S0vkOu5Lg/85dou3EseOGUes8flVOGxbhDDh/iZaoek11Y8mtyKPGF3vP8XhnkDEAmzeg=="], - - "vinxi/esbuild/@esbuild/freebsd-x64": ["@esbuild/freebsd-x64@0.25.12", "", { "os": "freebsd", "cpu": "x64" }, "sha512-TGbO26Yw2xsHzxtbVFGEXBFH0FRAP7gtcPE7P5yP7wGy7cXK2oO7RyOhL5NLiqTlBh47XhmIUXuGciXEqYFfBQ=="], - - "vinxi/esbuild/@esbuild/linux-arm": ["@esbuild/linux-arm@0.25.12", "", { "os": "linux", "cpu": "arm" }, "sha512-lPDGyC1JPDou8kGcywY0YILzWlhhnRjdof3UlcoqYmS9El818LLfJJc3PXXgZHrHCAKs/Z2SeZtDJr5MrkxtOw=="], - - "vinxi/esbuild/@esbuild/linux-arm64": ["@esbuild/linux-arm64@0.25.12", "", { "os": "linux", "cpu": "arm64" }, "sha512-8bwX7a8FghIgrupcxb4aUmYDLp8pX06rGh5HqDT7bB+8Rdells6mHvrFHHW2JAOPZUbnjUpKTLg6ECyzvas2AQ=="], - - "vinxi/esbuild/@esbuild/linux-ia32": ["@esbuild/linux-ia32@0.25.12", "", { "os": "linux", "cpu": "ia32" }, "sha512-0y9KrdVnbMM2/vG8KfU0byhUN+EFCny9+8g202gYqSSVMonbsCfLjUO+rCci7pM0WBEtz+oK/PIwHkzxkyharA=="], - - "vinxi/esbuild/@esbuild/linux-loong64": ["@esbuild/linux-loong64@0.25.12", "", { "os": "linux", "cpu": "none" }, "sha512-h///Lr5a9rib/v1GGqXVGzjL4TMvVTv+s1DPoxQdz7l/AYv6LDSxdIwzxkrPW438oUXiDtwM10o9PmwS/6Z0Ng=="], - - "vinxi/esbuild/@esbuild/linux-mips64el": ["@esbuild/linux-mips64el@0.25.12", "", { "os": "linux", "cpu": "none" }, "sha512-iyRrM1Pzy9GFMDLsXn1iHUm18nhKnNMWscjmp4+hpafcZjrr2WbT//d20xaGljXDBYHqRcl8HnxbX6uaA/eGVw=="], - - "vinxi/esbuild/@esbuild/linux-ppc64": ["@esbuild/linux-ppc64@0.25.12", "", { "os": "linux", "cpu": "ppc64" }, "sha512-9meM/lRXxMi5PSUqEXRCtVjEZBGwB7P/D4yT8UG/mwIdze2aV4Vo6U5gD3+RsoHXKkHCfSxZKzmDssVlRj1QQA=="], - - "vinxi/esbuild/@esbuild/linux-riscv64": ["@esbuild/linux-riscv64@0.25.12", "", { "os": "linux", "cpu": "none" }, "sha512-Zr7KR4hgKUpWAwb1f3o5ygT04MzqVrGEGXGLnj15YQDJErYu/BGg+wmFlIDOdJp0PmB0lLvxFIOXZgFRrdjR0w=="], - - "vinxi/esbuild/@esbuild/linux-s390x": ["@esbuild/linux-s390x@0.25.12", "", { "os": "linux", "cpu": "s390x" }, "sha512-MsKncOcgTNvdtiISc/jZs/Zf8d0cl/t3gYWX8J9ubBnVOwlk65UIEEvgBORTiljloIWnBzLs4qhzPkJcitIzIg=="], - - "vinxi/esbuild/@esbuild/linux-x64": ["@esbuild/linux-x64@0.25.12", "", { "os": "linux", "cpu": "x64" }, "sha512-uqZMTLr/zR/ed4jIGnwSLkaHmPjOjJvnm6TVVitAa08SLS9Z0VM8wIRx7gWbJB5/J54YuIMInDquWyYvQLZkgw=="], - - "vinxi/esbuild/@esbuild/netbsd-arm64": ["@esbuild/netbsd-arm64@0.25.12", "", { "os": "none", "cpu": "arm64" }, "sha512-xXwcTq4GhRM7J9A8Gv5boanHhRa/Q9KLVmcyXHCTaM4wKfIpWkdXiMog/KsnxzJ0A1+nD+zoecuzqPmCRyBGjg=="], - - "vinxi/esbuild/@esbuild/netbsd-x64": ["@esbuild/netbsd-x64@0.25.12", "", { "os": "none", "cpu": "x64" }, "sha512-Ld5pTlzPy3YwGec4OuHh1aCVCRvOXdH8DgRjfDy/oumVovmuSzWfnSJg+VtakB9Cm0gxNO9BzWkj6mtO1FMXkQ=="], - - "vinxi/esbuild/@esbuild/openbsd-arm64": ["@esbuild/openbsd-arm64@0.25.12", "", { "os": "openbsd", "cpu": "arm64" }, "sha512-fF96T6KsBo/pkQI950FARU9apGNTSlZGsv1jZBAlcLL1MLjLNIWPBkj5NlSz8aAzYKg+eNqknrUJ24QBybeR5A=="], - - "vinxi/esbuild/@esbuild/openbsd-x64": ["@esbuild/openbsd-x64@0.25.12", "", { "os": "openbsd", "cpu": "x64" }, "sha512-MZyXUkZHjQxUvzK7rN8DJ3SRmrVrke8ZyRusHlP+kuwqTcfWLyqMOE3sScPPyeIXN/mDJIfGXvcMqCgYKekoQw=="], - - "vinxi/esbuild/@esbuild/openharmony-arm64": ["@esbuild/openharmony-arm64@0.25.12", "", { "os": "none", "cpu": "arm64" }, "sha512-rm0YWsqUSRrjncSXGA7Zv78Nbnw4XL6/dzr20cyrQf7ZmRcsovpcRBdhD43Nuk3y7XIoW2OxMVvwuRvk9XdASg=="], - - "vinxi/esbuild/@esbuild/sunos-x64": ["@esbuild/sunos-x64@0.25.12", "", { "os": "sunos", "cpu": "x64" }, "sha512-3wGSCDyuTHQUzt0nV7bocDy72r2lI33QL3gkDNGkod22EsYl04sMf0qLb8luNKTOmgF/eDEDP5BFNwoBKH441w=="], - - "vinxi/esbuild/@esbuild/win32-arm64": ["@esbuild/win32-arm64@0.25.12", "", { "os": "win32", "cpu": "arm64" }, "sha512-rMmLrur64A7+DKlnSuwqUdRKyd3UE7oPJZmnljqEptesKM8wx9J8gx5u0+9Pq0fQQW8vqeKebwNXdfOyP+8Bsg=="], - - "vinxi/esbuild/@esbuild/win32-ia32": ["@esbuild/win32-ia32@0.25.12", "", { "os": "win32", "cpu": "ia32" }, "sha512-HkqnmmBoCbCwxUKKNPBixiWDGCpQGVsrQfJoVGYLPT41XWF8lHuE5N6WhVia2n4o5QK5M4tYr21827fNhi4byQ=="], - - "vinxi/esbuild/@esbuild/win32-x64": ["@esbuild/win32-x64@0.25.12", "", { "os": "win32", "cpu": "x64" }, "sha512-alJC0uCZpTFrSL0CCDjcgleBXPnCrEAhTBILpeAp7M/OFgoqtAetfBzX0xM00MUsVVPpVjlPuMbREqnZCXaTnA=="], - - "vinxi/serve-static/send": ["send@0.19.2", "", { "dependencies": { "debug": "2.6.9", "depd": "2.0.0", "destroy": "1.2.0", "encodeurl": "~2.0.0", "escape-html": "~1.0.3", "etag": "~1.8.1", "fresh": "~0.5.2", "http-errors": "~2.0.1", "mime": "1.6.0", "ms": "2.1.3", "on-finished": "~2.4.1", "range-parser": "~1.2.1", "statuses": "~2.0.2" } }, "sha512-VMbMxbDeehAxpOtWJXlcUS5E8iXh6QmN+BkRX1GARS3wRaXEEgzCcB10gTQazO42tpNIya8xIyNx8fll1OFPrg=="], - - "vinxi/unctx/estree-walker": ["estree-walker@3.0.3", "", { "dependencies": { "@types/estree": "^1.0.0" } }, "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g=="], - - "vinxi/unctx/magic-string": ["magic-string@0.30.21", "", { "dependencies": { "@jridgewell/sourcemap-codec": "^1.5.5" } }, "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ=="], - - "vinxi/unctx/unplugin": ["unplugin@2.3.11", "", { "dependencies": { "@jridgewell/remapping": "^2.3.5", "acorn": "^8.15.0", "picomatch": "^4.0.3", "webpack-virtual-modules": "^0.6.2" } }, "sha512-5uKD0nqiYVzlmCRs01Fhs2BdkEgBS3SAVP6ndrBsuK42iC2+JHyxM05Rm9G8+5mkmRtzMZGY8Ct5+mliZxU/Ww=="], - "vite-plugin-checker/chokidar/readdirp": ["readdirp@5.1.1", "", {}, "sha512-Kko+Y5XQ6fM+Ce3dq3m9YGxnacYZYl9cA1wZjaF3Vbry2L3i1qVg8+CAgNPsXRArPMUMCaOR7oa9Nqntc43JKA=="], "vite-plugin-checker/npm-run-path/path-key": ["path-key@4.0.0", "", {}, "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ=="], @@ -5459,13 +5206,11 @@ "vitest/@vitest/expect/chai": ["chai@6.2.2", "", {}, "sha512-NUPRluOfOiTKBKvWPtSD4PhFvWCqOi0BGStNWs57X9js7XGTprSmFoz5F0tWhR4WPjNeR9jXqdC7/UpSJTnlRg=="], - "vue-docgen-api/@babel/types/@babel/helper-string-parser": ["@babel/helper-string-parser@7.29.7", "", {}, "sha512-Pb5ijPrZ89GDH8223L4UP8i6QApWxs04RbPQJTeWDV0/keR2E36MeKnyr6LYmUUvqRRI+Iv87SuF1W6ErINzYw=="], - "vue-router/chokidar/readdirp": ["readdirp@5.1.1", "", {}, "sha512-Kko+Y5XQ6fM+Ce3dq3m9YGxnacYZYl9cA1wZjaF3Vbry2L3i1qVg8+CAgNPsXRArPMUMCaOR7oa9Nqntc43JKA=="], - "with/@babel/types/@babel/helper-string-parser": ["@babel/helper-string-parser@7.29.7", "", {}, "sha512-Pb5ijPrZ89GDH8223L4UP8i6QApWxs04RbPQJTeWDV0/keR2E36MeKnyr6LYmUUvqRRI+Iv87SuF1W6ErINzYw=="], + "wrap-ansi/string-width/emoji-regex": ["emoji-regex@10.6.0", "", {}, "sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A=="], - "wrap-ansi-cjs/string-width/emoji-regex": ["emoji-regex@8.0.0", "", {}, "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="], + "wrap-ansi/strip-ansi/ansi-regex": ["ansi-regex@6.3.0", "", {}, "sha512-WpDfL7NO6j7tH88IDBNVdUJxDh9nmCteAVW9dsep846XdwF4naCBK+/tGLX3KJgcpgMRXCFlTM2hKGoK9FsdrQ=="], "@mapbox/node-pre-gyp/node-fetch/whatwg-url/tr46": ["tr46@0.0.3", "", {}, "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw=="], @@ -5483,9 +5228,19 @@ "@nuxt/devtools/execa/onetime/mimic-fn": ["mimic-fn@4.0.0", "", {}, "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw=="], + "@nuxt/devtools/unstorage/chokidar/readdirp": ["readdirp@5.1.1", "", {}, "sha512-Kko+Y5XQ6fM+Ce3dq3m9YGxnacYZYl9cA1wZjaF3Vbry2L3i1qVg8+CAgNPsXRArPMUMCaOR7oa9Nqntc43JKA=="], + + "@nuxt/devtools/unstorage/h3/cookie-es": ["cookie-es@1.2.3", "", {}, "sha512-lXVyvUvrNXblMqzIRrxHb57UUVmqsSWlxqt3XIjCkUP0wDAf6uicO6KMbEgYrMNtEvWgWHwe42CKxPu9MYAnWw=="], + + "@nuxt/devtools/unstorage/h3/crossws": ["crossws@0.3.5", "", { "dependencies": { "uncrypto": "^0.1.3" } }, "sha512-ojKiDvcmByhwa8YYqbQI/hg7MEU0NC03+pSdEq4ZUnZR9xXpwk7E43SMNGkn+JxJGPFtNvQ48+vV2p+P1ml5PA=="], + + "@nuxt/nitro-server/unstorage/chokidar/readdirp": ["readdirp@5.1.1", "", {}, "sha512-Kko+Y5XQ6fM+Ce3dq3m9YGxnacYZYl9cA1wZjaF3Vbry2L3i1qVg8+CAgNPsXRArPMUMCaOR7oa9Nqntc43JKA=="], + "@pandacss/plugin-vue/@vue/compiler-sfc/@vue/compiler-core/entities": ["entities@4.5.0", "", {}, "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw=="], - "@solidjs/start/shiki/@shikijs/engine-javascript/oniguruma-to-es": ["oniguruma-to-es@2.3.0", "", { "dependencies": { "emoji-regex-xs": "^1.0.0", "regex": "^5.1.1", "regex-recursion": "^5.1.1" } }, "sha512-bwALDxriqfKGfUufKGGepCzu9x7nJQuoRoAFp4AnwehhC2crqrDIAP/uN2qdlsAvSMpeRC3+Yzhqc7hLmle5+g=="], + "@solidjs/start/oxc-parser/@oxc-parser/binding-wasm32-wasi/@emnapi/core": ["@emnapi/core@1.11.2", "", { "dependencies": { "@emnapi/wasi-threads": "1.2.2", "tslib": "^2.4.0" } }, "sha512-TC8MkTuZUtcTSiFeuC0ksCh9QIJ5+F21MvZ4Wn4ORfYaFJ/0dsiudv5tVkejgwZlwQ39jL9WWDe2lz8x0WglOA=="], + + "@solidjs/start/oxc-parser/@oxc-parser/binding-wasm32-wasi/@emnapi/runtime": ["@emnapi/runtime@1.11.2", "", { "dependencies": { "tslib": "^2.4.0" } }, "sha512-kyOl3X0DuTiT1h2ft8r2fYO8JYtU9a9Xis/zBSiGArNaagCOWx90N1k2wxp18czFDH+OgcWGb5ZP/XMt3dcyPA=="], "@testing-library/vue/@testing-library/dom/chalk/ansi-styles": ["ansi-styles@4.3.0", "", { "dependencies": { "color-convert": "^2.0.1" } }, "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg=="], @@ -5513,18 +5268,10 @@ "@vercel/static-config/ts-morph/@ts-morph/common/minimatch": ["minimatch@3.1.5", "", { "dependencies": { "brace-expansion": "^1.1.7" } }, "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w=="], - "@vinxi/plugin-directives/magicast/@babel/types/@babel/helper-string-parser": ["@babel/helper-string-parser@7.29.7", "", {}, "sha512-Pb5ijPrZ89GDH8223L4UP8i6QApWxs04RbPQJTeWDV0/keR2E36MeKnyr6LYmUUvqRRI+Iv87SuF1W6ErINzYw=="], - - "@vinxi/server-components/magicast/@babel/types/@babel/helper-string-parser": ["@babel/helper-string-parser@7.29.7", "", {}, "sha512-Pb5ijPrZ89GDH8223L4UP8i6QApWxs04RbPQJTeWDV0/keR2E36MeKnyr6LYmUUvqRRI+Iv87SuF1W6ErINzYw=="], - "archiver-utils/glob/minimatch/brace-expansion": ["brace-expansion@2.1.4", "", { "dependencies": { "balanced-match": "^1.0.0" } }, "sha512-hGfVzPxthbf3+2yjg/RBs60cB0FhqBS/zvdV/4wn4/BmN0bNMMHPc4V/BbFieqf1TKAGGAHnY4eSjajCl0f2Xg=="], "archiver-utils/glob/path-scurry/lru-cache": ["lru-cache@10.4.3", "", {}, "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ=="], - "clipboardy/execa/npm-run-path/path-key": ["path-key@4.0.0", "", {}, "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ=="], - - "clipboardy/execa/onetime/mimic-fn": ["mimic-fn@4.0.0", "", {}, "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw=="], - "editorconfig/minimatch/brace-expansion/balanced-match": ["balanced-match@1.0.2", "", {}, "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="], "js-beautify/glob/minimatch/brace-expansion": ["brace-expansion@2.1.4", "", { "dependencies": { "balanced-match": "^1.0.0" } }, "sha512-hGfVzPxthbf3+2yjg/RBs60cB0FhqBS/zvdV/4wn4/BmN0bNMMHPc4V/BbFieqf1TKAGGAHnY4eSjajCl0f2Xg=="], @@ -5557,23 +5304,11 @@ "vee-validate/@vue/devtools-api/@vue/devtools-kit/perfect-debounce": ["perfect-debounce@1.0.0", "", {}, "sha512-xCy9V055GLEqoFaHoC1SoLIaLmWctgCUaBaWxDZ7/Zx4CTyX7cJQLJOok/orfjZAh9kEYpjJa4d0KcJmCbctZA=="], - "vinxi/serve-static/send/debug": ["debug@2.6.9", "", { "dependencies": { "ms": "2.0.0" } }, "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA=="], - - "vinxi/serve-static/send/fresh": ["fresh@0.5.2", "", {}, "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q=="], - - "vinxi/serve-static/send/mime": ["mime@1.6.0", "", { "bin": { "mime": "cli.js" } }, "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg=="], - - "vinxi/serve-static/send/ms": ["ms@2.1.3", "", {}, "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="], - - "vinxi/serve-static/send/range-parser": ["range-parser@1.2.1", "", {}, "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg=="], - "vite-plugin-inspect/open/wsl-utils/is-wsl": ["is-wsl@3.1.1", "", { "dependencies": { "is-inside-container": "^1.0.0" } }, "sha512-e6rvdUCiQCAuumZslxRJWR/Doq4VpPR82kqclvcS0efgt430SlGIk05vdCN58+VrzgtIcfNODjozVielycD4Sw=="], "vite-plugin-inspect/open/wsl-utils/powershell-utils": ["powershell-utils@0.1.0", "", {}, "sha512-dM0jVuXJPsDN6DvRpea484tCUaMiXWjuCn++HGTqUWzGDjv5tZkEZldAJ/UMlqRYGFrD/etByo4/xOuC/snX2A=="], - "@solidjs/start/shiki/@shikijs/engine-javascript/oniguruma-to-es/regex": ["regex@5.1.1", "", { "dependencies": { "regex-utilities": "^2.3.0" } }, "sha512-dN5I359AVGPnwzJm2jN1k0W9LPZ+ePvoOeVMMfqIMFz53sSwXkxaJoxr50ptnsC771lK95BnTrVSZxq0b9yCGw=="], - - "@solidjs/start/shiki/@shikijs/engine-javascript/oniguruma-to-es/regex-recursion": ["regex-recursion@5.1.1", "", { "dependencies": { "regex": "^5.1.1", "regex-utilities": "^2.3.0" } }, "sha512-ae7SBCbzVNrIjgSbh7wMznPcQel1DNlDtzensnFxpiNpXt1U2ju/bHugH422r+4LAVS1FpW1YCwilmnNsjum9w=="], + "@solidjs/start/oxc-parser/@oxc-parser/binding-wasm32-wasi/@emnapi/core/@emnapi/wasi-threads": ["@emnapi/wasi-threads@1.2.2", "", { "dependencies": { "tslib": "^2.4.0" } }, "sha512-c95qOXkHdydNKhscBTebqEC1CVAZpyqOfVfBzQ1qgzyl3gfeldUjIggDbIZgDKsHLgnsM+igH7TJ/eAasaVuMA=="], "@vercel/backends/ts-morph/@ts-morph/common/minimatch/brace-expansion": ["brace-expansion@1.1.18", "", { "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" } }, "sha512-Edep/X9fGqVNmzKBVsDYIOtD+z1tuezV70LBjdCst9Tqu76lsnvRiZ6oTic1n+/BIwX6QDGAO94PN4N2SADvtw=="], @@ -5597,8 +5332,6 @@ "js-beautify/glob/minimatch/brace-expansion/balanced-match": ["balanced-match@1.0.2", "", {}, "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="], - "vinxi/serve-static/send/debug/ms": ["ms@2.0.0", "", {}, "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="], - "@vercel/backends/ts-morph/@ts-morph/common/minimatch/brace-expansion/balanced-match": ["balanced-match@1.0.2", "", {}, "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="], "@vercel/express/ts-morph/@ts-morph/common/minimatch/brace-expansion/balanced-match": ["balanced-match@1.0.2", "", {}, "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="], diff --git a/templates/solid-start/README.md b/templates/solid-start/README.md index 2b2846ee4a..22e02f8c23 100644 --- a/templates/solid-start/README.md +++ b/templates/solid-start/README.md @@ -28,7 +28,7 @@ npm run dev -- --open Solid apps are built with _presets_, which optimise your project for deployment to different environments. -By default, `npm run build` will generate a Node app that you can run with `npm start`. To use a different preset, add -it to the `devDependencies` in `package.json` and specify in your `app.config.js`. +By default, `npm run build` will generate a Node app that you can preview with `npm run preview`. To use a different +preset, set `nitro.preset` in `vite.config.ts`. ## This project was created with the [Solid CLI](https://solid-cli.netlify.app) diff --git a/templates/solid-start/app.config.ts b/templates/solid-start/app.config.ts deleted file mode 100644 index 62a4a0500c..0000000000 --- a/templates/solid-start/app.config.ts +++ /dev/null @@ -1,3 +0,0 @@ -import { defineConfig } from '@solidjs/start/config' - -export default defineConfig({}) diff --git a/templates/solid-start/package.json b/templates/solid-start/package.json index 40d421dac4..23e185e12f 100644 --- a/templates/solid-start/package.json +++ b/templates/solid-start/package.json @@ -2,19 +2,24 @@ "name": "@ark-ui/solid-start", "type": "module", "private": true, + "engines": { + "node": ">=24" + }, "scripts": { - "dev": "vinxi dev", - "build": "vinxi build", - "start": "vinxi start", - "version": "vinxi version" + "dev": "vite dev", + "build": "vite build", + "preview": "vite preview" }, "dependencies": { "@ark-ui/solid": "workspace*", "@solidjs/meta": "0.29.4", "@solidjs/router": "1.0.0", - "@solidjs/start": "1.3.2", + "@solidjs/start": "2.0.2", "lucide-solid": "1.31.0", - "solid-js": "1.9.14", - "vinxi": "0.5.11" + "nitro": "3.0.260610-beta", + "solid-js": "1.9.14" + }, + "devDependencies": { + "vite": "8.2.1" } } diff --git a/templates/solid-start/tsconfig.json b/templates/solid-start/tsconfig.json index 7d5871a07a..25c55c1602 100644 --- a/templates/solid-start/tsconfig.json +++ b/templates/solid-start/tsconfig.json @@ -10,7 +10,7 @@ "allowJs": true, "strict": true, "noEmit": true, - "types": ["vinxi/types/client"], + "types": ["@solidjs/start/env"], "isolatedModules": true, "paths": { "~/*": ["./src/*"] diff --git a/templates/solid-start/vite.config.ts b/templates/solid-start/vite.config.ts new file mode 100644 index 0000000000..5f8ef8a01e --- /dev/null +++ b/templates/solid-start/vite.config.ts @@ -0,0 +1,7 @@ +import { solidStart } from '@solidjs/start/config' +import { nitro } from 'nitro/vite' +import { defineConfig } from 'vite' + +export default defineConfig({ + plugins: [solidStart(), nitro()], +})