From 2ce66f7a2246e029f84b0f58ffec4d2263a68c20 Mon Sep 17 00:00:00 2001 From: Thomas Yuill Date: Fri, 10 Jul 2026 11:05:24 -0400 Subject: [PATCH 1/3] refactor(shadcn): replace ai-elements chat components with shadcn base primitives Drops the external @ai-elements registry dependency in agents-ui, rebuilding the chat transcript and pre-connect shimmer on shadcn's native MessageScroller, Message, and Bubble components plus the shimmer CSS utility. Also bumps Tailwind to 4.3.2 so the scroll button's logical-inset centering utility (inset-s-*, added in 4.2.0) actually resolves. --- docs/storybook/.storybook/tailwind.css | 1 + docs/storybook/package.json | 7 +- packages/shadcn/README.md | 3 +- packages/shadcn/components.json | 5 +- .../agents-ui/agent-chat-indicator.tsx | 4 +- .../agents-ui/agent-chat-transcript.tsx | 69 +- .../components/agent-session-block.tsx | 10 +- .../components/ai-elements/conversation.tsx | 87 -- .../shadcn/components/ai-elements/message.tsx | 367 -------- .../shadcn/components/ai-elements/shimmer.tsx | 53 -- packages/shadcn/components/ui/bubble.tsx | 125 +++ .../shadcn/components/ui/message-scroller.tsx | 130 +++ packages/shadcn/components/ui/message.tsx | 92 ++ packages/shadcn/package.json | 8 +- packages/shadcn/registry.json | 8 +- .../tests/agent-chat-transcript.test.tsx | 27 +- .../shadcn/tests/agent-session-block.test.tsx | 12 +- pnpm-lock.yaml | 813 +++++++++++------- 18 files changed, 908 insertions(+), 913 deletions(-) delete mode 100644 packages/shadcn/components/ai-elements/conversation.tsx delete mode 100644 packages/shadcn/components/ai-elements/message.tsx delete mode 100644 packages/shadcn/components/ai-elements/shimmer.tsx create mode 100644 packages/shadcn/components/ui/bubble.tsx create mode 100644 packages/shadcn/components/ui/message-scroller.tsx create mode 100644 packages/shadcn/components/ui/message.tsx diff --git a/docs/storybook/.storybook/tailwind.css b/docs/storybook/.storybook/tailwind.css index 768e35784..8ec02c689 100644 --- a/docs/storybook/.storybook/tailwind.css +++ b/docs/storybook/.storybook/tailwind.css @@ -1,4 +1,5 @@ @import 'tailwindcss'; +@import 'shadcn/tailwind.css'; /* where to source the shadcn styles from */ @source './**/*.{js,ts,jsx,tsx}'; diff --git a/docs/storybook/package.json b/docs/storybook/package.json index 02aa8dc63..d8b1c4d12 100644 --- a/docs/storybook/package.json +++ b/docs/storybook/package.json @@ -27,16 +27,17 @@ "@storybook/react": "^10.1.4", "@storybook/react-vite": "^10.1.11", "@storybook/testing-library": "^0.2.2", - "@tailwindcss/postcss": "^4", - "@tailwindcss/vite": "^4.1.17", + "@tailwindcss/postcss": "^4.3.2", + "@tailwindcss/vite": "^4.3.2", "autoprefixer": "^10.4.22", "babel-loader": "^9.0.0", "eslint-config-lk-custom": "workspace:*", "eslint-plugin-storybook": "10.1.4", "next-themes": "^0.4.6", "postcss": "^8.5.15", + "shadcn": "^4.13.0", "storybook": "^10.1.4", - "tailwindcss": "^4.1.17", + "tailwindcss": "^4.3.2", "tsx": "^4.0.0", "typescript": "5.8.2", "vite": "^7.3.5", diff --git a/packages/shadcn/README.md b/packages/shadcn/README.md index 3c76b4839..a9b7d772a 100644 --- a/packages/shadcn/README.md +++ b/packages/shadcn/README.md @@ -2,7 +2,7 @@ Agents UI is the easiest way to build agentic voice applications faster on top of LiveKit primitives. -Agents UI is a component library built on top of [shadcn/ui](https://ui.shadcn.com/) and [AI Elements](https://ai-sdk.dev/elements) to accelerate building agentic applications on top of LiveKit's real-time platform. It provides pre-built components like controling IO, managing sessions, rendering transcripts, visualing audio streams, and more. +Agents UI is a component library built on top of [shadcn/ui](https://ui.shadcn.com/) to accelerate building agentic applications on top of LiveKit's real-time platform. It provides pre-built components like controling IO, managing sessions, rendering transcripts, visualing audio streams, and more. ## Components @@ -103,7 +103,6 @@ After installation, no additional setup is needed. The component's styles (Tailw packages/shadcn/ ├── components/ │ ├── agents-ui/ # LiveKit agent-specific components -│ ├── ai-elements/ # Reusable AI conversation components │ ├── ui/ # Base UI primitives (shadcn/ui style) │ └── session-provider.tsx ├── hooks/ diff --git a/packages/shadcn/components.json b/packages/shadcn/components.json index 9094cdde7..d1eb749aa 100644 --- a/packages/shadcn/components.json +++ b/packages/shadcn/components.json @@ -17,8 +17,5 @@ "lib": "@/lib", "hooks": "@/hooks" }, - "iconLibrary": "lucide", - "registries": { - "@ai-elements": "https://registry.ai-sdk.dev/{name}.json" - } + "iconLibrary": "lucide" } diff --git a/packages/shadcn/components/agents-ui/agent-chat-indicator.tsx b/packages/shadcn/components/agents-ui/agent-chat-indicator.tsx index d4f845c96..984b43385 100644 --- a/packages/shadcn/components/agents-ui/agent-chat-indicator.tsx +++ b/packages/shadcn/components/agents-ui/agent-chat-indicator.tsx @@ -16,7 +16,7 @@ const motionAnimationProps = { }, visible: { opacity: [0.5, 1], - scale: [1, 1.2], + scale: [0.9, 1], transition: { type: 'spring' as const, bounce: 0, @@ -34,7 +34,7 @@ const motionAnimationProps = { const agentChatIndicatorVariants = cva('bg-muted-foreground inline-block size-2.5 rounded-full', { variants: { size: { - sm: 'size-2.5', + sm: 'size-3', md: 'size-4', lg: 'size-6', }, diff --git a/packages/shadcn/components/agents-ui/agent-chat-transcript.tsx b/packages/shadcn/components/agents-ui/agent-chat-transcript.tsx index 1cd0749b9..f0c79d32d 100644 --- a/packages/shadcn/components/agents-ui/agent-chat-transcript.tsx +++ b/packages/shadcn/components/agents-ui/agent-chat-transcript.tsx @@ -2,12 +2,17 @@ import { type ComponentProps } from 'react'; import { type AgentState, type ReceivedMessage } from '@livekit/components-react'; +import { Streamdown } from 'streamdown'; +import { Bubble, BubbleContent } from '@/components/ui/bubble'; +import { Message, MessageContent } from '@/components/ui/message'; import { - Conversation, - ConversationContent, - ConversationScrollButton, -} from '@/components/ai-elements/conversation'; -import { Message, MessageContent, MessageResponse } from '@/components/ai-elements/message'; + MessageScroller, + MessageScrollerButton, + MessageScrollerContent, + MessageScrollerItem, + MessageScrollerProvider, + MessageScrollerViewport, +} from '@/components/ui/message-scroller'; import { AgentChatIndicator } from '@/components/agents-ui/agent-chat-indicator'; import { AnimatePresence } from 'motion/react'; @@ -52,28 +57,38 @@ export function AgentChatTranscript({ ...props }: AgentChatTranscriptProps) { return ( - - - {messages.map((receivedMessage) => { - const { id, timestamp, from, message } = receivedMessage; - const time = new Date(timestamp); - const messageOrigin = from?.isLocal ? 'user' : 'assistant'; - const locale = typeof navigator !== 'undefined' ? navigator.language : 'en-US'; - const title = time.toLocaleTimeString(locale, { timeStyle: 'full' }); + + + + + {messages.map((receivedMessage) => { + const { id, timestamp, from, message } = receivedMessage; + const time = new Date(timestamp); + const isUser = from?.isLocal; + const locale = typeof navigator !== 'undefined' ? navigator.language : 'en-US'; + const title = time.toLocaleTimeString(locale, { timeStyle: 'full' }); - return ( - - - {message} - - - ); - })} - - {agentState === 'thinking' && } - - - - + return ( + + + + + + {message} + + + + + + ); + })} + + {agentState === 'thinking' && } + + + + + + ); } diff --git a/packages/shadcn/components/agents-ui/blocks/agent-session-view-01/components/agent-session-block.tsx b/packages/shadcn/components/agents-ui/blocks/agent-session-view-01/components/agent-session-block.tsx index ca7e26cc3..1d23250d0 100644 --- a/packages/shadcn/components/agents-ui/blocks/agent-session-view-01/components/agent-session-block.tsx +++ b/packages/shadcn/components/agents-ui/blocks/agent-session-view-01/components/agent-session-block.tsx @@ -8,12 +8,9 @@ import { AgentControlBar, type AgentControlBarControls, } from '@/components/agents-ui/agent-control-bar'; -import { Shimmer } from '@/components/ai-elements/shimmer'; import { cn } from '@/lib/utils'; import { TileLayout } from './tile-view'; -const MotionMessage = motion.create(Shimmer); - const BOTTOM_VIEW_MOTION_PROPS: MotionProps = { variants: { visible: { @@ -252,15 +249,14 @@ export function AgentSessionView_01({ {isPreConnectBufferEnabled && ( {messages.length === 0 && ( - 0} {...SHIMMER_MOTION_PROPS} - className="pointer-events-none mx-auto block w-full max-w-2xl pb-4 text-center text-sm font-semibold" + className="shimmer shimmer-duration-2000 pointer-events-none mx-auto block w-full max-w-2xl pb-4 text-center text-sm font-semibold" > {preConnectMessage} - + )} )} diff --git a/packages/shadcn/components/ai-elements/conversation.tsx b/packages/shadcn/components/ai-elements/conversation.tsx deleted file mode 100644 index bf911361b..000000000 --- a/packages/shadcn/components/ai-elements/conversation.tsx +++ /dev/null @@ -1,87 +0,0 @@ -'use client'; - -import { Button } from '@/components/ui/button'; -import { cn } from '@/lib/utils'; -import { ArrowDownIcon } from 'lucide-react'; -import type { ComponentProps } from 'react'; -import { useCallback } from 'react'; -import { StickToBottom, useStickToBottomContext } from 'use-stick-to-bottom'; - -export type ConversationProps = ComponentProps; - -export const Conversation = ({ className, ...props }: ConversationProps) => ( - -); - -export type ConversationContentProps = ComponentProps; - -export const ConversationContent = ({ className, ...props }: ConversationContentProps) => ( - -); - -export type ConversationEmptyStateProps = ComponentProps<'div'> & { - title?: string; - description?: string; - icon?: React.ReactNode; -}; - -export const ConversationEmptyState = ({ - className, - title = 'No messages yet', - description = 'Start a conversation to see messages here', - icon, - children, - ...props -}: ConversationEmptyStateProps) => ( -
- {children ?? ( - <> - {icon &&
{icon}
} -
-

{title}

- {description &&

{description}

} -
- - )} -
-); - -export type ConversationScrollButtonProps = ComponentProps; - -export const ConversationScrollButton = ({ - className, - ...props -}: ConversationScrollButtonProps) => { - const { isAtBottom, scrollToBottom } = useStickToBottomContext(); - - const handleScrollToBottom = useCallback(() => { - scrollToBottom(); - }, [scrollToBottom]); - - return ( - !isAtBottom && ( - - ) - ); -}; diff --git a/packages/shadcn/components/ai-elements/message.tsx b/packages/shadcn/components/ai-elements/message.tsx deleted file mode 100644 index b1642b0a2..000000000 --- a/packages/shadcn/components/ai-elements/message.tsx +++ /dev/null @@ -1,367 +0,0 @@ -'use client'; - -import { Button } from '@/components/ui/button'; -import { ButtonGroup, ButtonGroupText } from '@/components/ui/button-group'; -import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from '@/components/ui/tooltip'; -import { cn } from '@/lib/utils'; -import type { FileUIPart, UIMessage } from 'ai'; -import { ChevronLeftIcon, ChevronRightIcon, PaperclipIcon, XIcon } from 'lucide-react'; -import type { ComponentProps, HTMLAttributes, ReactElement } from 'react'; -import { createContext, memo, useContext, useEffect, useState } from 'react'; -import { Streamdown } from 'streamdown'; - -export type MessageProps = HTMLAttributes & { - from: UIMessage['role']; -}; - -export const Message = ({ className, from, ...props }: MessageProps) => ( -
-); - -export type MessageContentProps = HTMLAttributes; - -export const MessageContent = ({ children, className, ...props }: MessageContentProps) => ( -
- {children} -
-); - -export type MessageActionsProps = ComponentProps<'div'>; - -export const MessageActions = ({ className, children, ...props }: MessageActionsProps) => ( -
- {children} -
-); - -export type MessageActionProps = ComponentProps & { - tooltip?: string; - label?: string; -}; - -export const MessageAction = ({ - tooltip, - children, - label, - variant = 'ghost', - size = 'icon-sm', - ...props -}: MessageActionProps) => { - const button = ( - - ); - - if (tooltip) { - return ( - - - {button} - -

{tooltip}

-
-
-
- ); - } - - return button; -}; - -type MessageBranchContextType = { - currentBranch: number; - totalBranches: number; - goToPrevious: () => void; - goToNext: () => void; - branches: ReactElement[]; - setBranches: (branches: ReactElement[]) => void; -}; - -const MessageBranchContext = createContext(null); - -const useMessageBranch = () => { - const context = useContext(MessageBranchContext); - - if (!context) { - throw new Error('MessageBranch components must be used within MessageBranch'); - } - - return context; -}; - -export type MessageBranchProps = HTMLAttributes & { - defaultBranch?: number; - onBranchChange?: (branchIndex: number) => void; -}; - -export const MessageBranch = ({ - defaultBranch = 0, - onBranchChange, - className, - ...props -}: MessageBranchProps) => { - const [currentBranch, setCurrentBranch] = useState(defaultBranch); - const [branches, setBranches] = useState([]); - - const handleBranchChange = (newBranch: number) => { - setCurrentBranch(newBranch); - onBranchChange?.(newBranch); - }; - - const goToPrevious = () => { - const newBranch = currentBranch > 0 ? currentBranch - 1 : branches.length - 1; - handleBranchChange(newBranch); - }; - - const goToNext = () => { - const newBranch = currentBranch < branches.length - 1 ? currentBranch + 1 : 0; - handleBranchChange(newBranch); - }; - - const contextValue: MessageBranchContextType = { - currentBranch, - totalBranches: branches.length, - goToPrevious, - goToNext, - branches, - setBranches, - }; - - return ( - -
div]:pb-0', className)} {...props} /> - - ); -}; - -export type MessageBranchContentProps = HTMLAttributes; - -export const MessageBranchContent = ({ children, ...props }: MessageBranchContentProps) => { - const { currentBranch, setBranches, branches } = useMessageBranch(); - const childrenArray = Array.isArray(children) ? children : [children]; - - // Use useEffect to update branches when they change - useEffect(() => { - if (branches.length !== childrenArray.length) { - setBranches(childrenArray); - } - }, [childrenArray, branches, setBranches]); - - return childrenArray.map((branch, index) => ( -
div]:pb-0', - index === currentBranch ? 'block' : 'hidden', - )} - key={branch.key} - {...props} - > - {branch} -
- )); -}; - -export type MessageBranchSelectorProps = HTMLAttributes & { - from: UIMessage['role']; -}; - -export const MessageBranchSelector = ({ - className, - from, - ...props -}: MessageBranchSelectorProps) => { - const { totalBranches } = useMessageBranch(); - - // Don't render if there's only one branch - if (totalBranches <= 1) { - return null; - } - - return ( - - ); -}; - -export type MessageBranchPreviousProps = ComponentProps; - -export const MessageBranchPrevious = ({ children, ...props }: MessageBranchPreviousProps) => { - const { goToPrevious, totalBranches } = useMessageBranch(); - - return ( - - ); -}; - -export type MessageBranchNextProps = ComponentProps; - -export const MessageBranchNext = ({ children, className, ...props }: MessageBranchNextProps) => { - const { goToNext, totalBranches } = useMessageBranch(); - - return ( - - ); -}; - -export type MessageBranchPageProps = HTMLAttributes; - -export const MessageBranchPage = ({ className, ...props }: MessageBranchPageProps) => { - const { currentBranch, totalBranches } = useMessageBranch(); - - return ( - - {currentBranch + 1} of {totalBranches} - - ); -}; - -export type MessageResponseProps = ComponentProps; - -export const MessageResponse = memo( - ({ className, ...props }: MessageResponseProps) => ( - *:first-child]:mt-0 [&>*:last-child]:mb-0', className)} - {...props} - /> - ), - (prevProps, nextProps) => prevProps.children === nextProps.children, -); - -MessageResponse.displayName = 'MessageResponse'; - -export type MessageAttachmentProps = HTMLAttributes & { - data: FileUIPart; - className?: string; - onRemove?: () => void; -}; - -export function MessageAttachment({ data, className, onRemove, ...props }: MessageAttachmentProps) { - const filename = data.filename || ''; - const mediaType = data.mediaType?.startsWith('image/') && data.url ? 'image' : 'file'; - const isImage = mediaType === 'image'; - const attachmentLabel = filename || (isImage ? 'Image' : 'Attachment'); - - return ( -
- {isImage ? ( - <> - {filename - {onRemove && ( - - )} - - ) : ( - <> - - -
- -
-
- -

{attachmentLabel}

-
-
- {onRemove && ( - - )} - - )} -
- ); -} - -export type MessageAttachmentsProps = ComponentProps<'div'>; - -export function MessageAttachments({ children, className, ...props }: MessageAttachmentsProps) { - if (!children) { - return null; - } - - return ( -
- {children} -
- ); -} - -export type MessageToolbarProps = ComponentProps<'div'>; - -export const MessageToolbar = ({ className, children, ...props }: MessageToolbarProps) => ( -
- {children} -
-); diff --git a/packages/shadcn/components/ai-elements/shimmer.tsx b/packages/shadcn/components/ai-elements/shimmer.tsx deleted file mode 100644 index 2509f5a83..000000000 --- a/packages/shadcn/components/ai-elements/shimmer.tsx +++ /dev/null @@ -1,53 +0,0 @@ -'use client'; - -import { cn } from '@/lib/utils'; -import { motion } from 'motion/react'; -import { type CSSProperties, type ElementType, type JSX, memo, useMemo } from 'react'; - -export type TextShimmerProps = { - children: string; - as?: ElementType; - className?: string; - duration?: number; - spread?: number; -}; - -const ShimmerComponent = ({ - children, - as: Component = 'p', - className, - duration = 2, - spread = 2, -}: TextShimmerProps) => { - const MotionComponent = motion.create(Component as keyof JSX.IntrinsicElements); - - const dynamicSpread = useMemo(() => (children?.length ?? 0) * spread, [children, spread]); - - return ( - - {children} - - ); -}; - -export const Shimmer = memo(ShimmerComponent); diff --git a/packages/shadcn/components/ui/bubble.tsx b/packages/shadcn/components/ui/bubble.tsx new file mode 100644 index 000000000..792146e61 --- /dev/null +++ b/packages/shadcn/components/ui/bubble.tsx @@ -0,0 +1,125 @@ +import * as React from "react" +import { cva, type VariantProps } from "class-variance-authority" +import { Slot } from "radix-ui" + +import { cn } from "@/lib/utils" + +function BubbleGroup({ className, ...props }: React.ComponentProps<"div">) { + return ( +
+ ) +} + +const bubbleVariants = cva( + "group/bubble relative flex w-fit max-w-[80%] min-w-0 flex-col gap-1 group-data-[align=end]/message:self-end data-[align=end]:self-end data-[variant=ghost]:max-w-full", + { + variants: { + variant: { + default: + "*:data-[slot=bubble-content]:bg-primary *:data-[slot=bubble-content]:text-primary-foreground [&>[data-slot=bubble-content]:is(button,a):hover]:bg-primary/80", + secondary: + "*:data-[slot=bubble-content]:bg-secondary *:data-[slot=bubble-content]:text-secondary-foreground [&>[data-slot=bubble-content]:is(button,a):hover]:bg-[color-mix(in_oklch,var(--secondary),var(--foreground)_5%)]", + muted: + "*:data-[slot=bubble-content]:bg-muted [&>[data-slot=bubble-content]:is(button,a):hover]:bg-[color-mix(in_oklch,var(--muted),var(--foreground)_5%)]", + tinted: + "*:data-[slot=bubble-content]:bg-[oklch(from_var(--primary)_0.93_calc(c*0.4)_h)] *:data-[slot=bubble-content]:text-foreground dark:*:data-[slot=bubble-content]:bg-[oklch(from_var(--primary)_0.3_calc(c*0.4)_h)] [&>[data-slot=bubble-content]:is(button,a):hover]:bg-[oklch(from_var(--primary)_0.88_calc(c*0.5)_h)] dark:[&>[data-slot=bubble-content]:is(button,a):hover]:bg-[oklch(from_var(--primary)_0.35_calc(c*0.5)_h)]", + outline: + "*:data-[slot=bubble-content]:border-border *:data-[slot=bubble-content]:bg-background [&>[data-slot=bubble-content]:is(button,a):hover]:bg-muted [&>[data-slot=bubble-content]:is(button,a):hover]:text-foreground dark:[&>[data-slot=bubble-content]:is(button,a):hover]:bg-input/30", + ghost: + "border-none *:data-[slot=bubble-content]:rounded-none *:data-[slot=bubble-content]:bg-transparent *:data-[slot=bubble-content]:p-0 [&>[data-slot=bubble-content]:is(button,a):hover]:bg-muted [&>[data-slot=bubble-content]:is(button,a):hover]:text-foreground dark:[&>[data-slot=bubble-content]:is(button,a):hover]:bg-muted/50", + destructive: + "*:data-[slot=bubble-content]:bg-destructive/10 *:data-[slot=bubble-content]:text-destructive dark:*:data-[slot=bubble-content]:bg-destructive/20 [&>[data-slot=bubble-content]:is(button,a):hover]:bg-destructive/20 dark:[&>[data-slot=bubble-content]:is(button,a):hover]:bg-destructive/30", + }, + }, + defaultVariants: { + variant: "default", + }, + } +) + +function Bubble({ + variant = "default", + align = "start", + className, + ...props +}: React.ComponentProps<"div"> & + VariantProps & { + align?: "start" | "end" + }) { + return ( +
+ ) +} + +function BubbleContent({ + asChild = false, + className, + ...props +}: React.ComponentProps<"div"> & { + asChild?: boolean +}) { + const Comp = asChild ? Slot.Root : "div" + + return ( + + ) +} + +const bubbleReactionsVariants = cva( + "absolute z-10 flex w-fit shrink-0 items-center justify-center gap-1 rounded-full bg-muted px-1.5 py-0.5 text-sm ring-3 ring-card has-[button]:p-0", + { + variants: { + side: { + top: "top-0 -translate-y-3/4", + bottom: "bottom-0 translate-y-3/4", + }, + align: { + start: "left-3", + end: "right-3", + }, + }, + defaultVariants: { + side: "bottom", + align: "end", + }, + } +) + +function BubbleReactions({ + side = "bottom", + align = "end", + className, + ...props +}: React.ComponentProps<"div"> & { + align?: "start" | "end" + side?: "top" | "bottom" +}) { + return ( +
+ ) +} + +export { BubbleGroup, Bubble, BubbleContent, BubbleReactions } diff --git a/packages/shadcn/components/ui/message-scroller.tsx b/packages/shadcn/components/ui/message-scroller.tsx new file mode 100644 index 000000000..0b0501125 --- /dev/null +++ b/packages/shadcn/components/ui/message-scroller.tsx @@ -0,0 +1,130 @@ +"use client" + +import * as React from "react" +import { + MessageScroller as MessageScrollerPrimitive, + useMessageScroller, + useMessageScrollerScrollable, + useMessageScrollerVisibility, +} from "@shadcn/react/message-scroller" +import { ArrowDownIcon } from "lucide-react" + +import { cn } from "@/lib/utils" +import { Button } from "@/components/ui/button" + +function MessageScrollerProvider( + props: React.ComponentProps +) { + return +} + +function MessageScroller({ + className, + ...props +}: React.ComponentProps) { + return ( + + ) +} + +function MessageScrollerViewport({ + className, + ...props +}: React.ComponentProps) { + return ( + + ) +} + +function MessageScrollerContent({ + className, + ...props +}: React.ComponentProps) { + return ( + + ) +} + +function MessageScrollerItem({ + className, + scrollAnchor = false, + ...props +}: React.ComponentProps) { + return ( + + ) +} + +function MessageScrollerButton({ + direction = "end", + className, + children, + render, + variant = "secondary", + size = "icon-sm", + ...props +}: React.ComponentProps & + Pick, "variant" | "size">) { + return ( + } + {...props} + > + {children ?? ( + <> + + + {direction === "end" ? "Scroll to end" : "Scroll to start"} + + + )} + + ) +} + +export { + MessageScrollerProvider, + MessageScroller, + MessageScrollerViewport, + MessageScrollerContent, + MessageScrollerItem, + MessageScrollerButton, + useMessageScroller, + useMessageScrollerScrollable, + useMessageScrollerVisibility, +} diff --git a/packages/shadcn/components/ui/message.tsx b/packages/shadcn/components/ui/message.tsx new file mode 100644 index 000000000..53437e8db --- /dev/null +++ b/packages/shadcn/components/ui/message.tsx @@ -0,0 +1,92 @@ +import * as React from "react" + +import { cn } from "@/lib/utils" + +function MessageGroup({ className, ...props }: React.ComponentProps<"div">) { + return ( +
+ ) +} + +function Message({ + className, + align = "start", + ...props +}: React.ComponentProps<"div"> & { align?: "start" | "end" }) { + return ( +
+ ) +} + +function MessageAvatar({ className, ...props }: React.ComponentProps<"div">) { + return ( +
+ ) +} + +function MessageContent({ className, ...props }: React.ComponentProps<"div">) { + return ( +
+ ) +} + +function MessageHeader({ className, ...props }: React.ComponentProps<"div">) { + return ( +
+ ) +} + +function MessageFooter({ className, ...props }: React.ComponentProps<"div">) { + return ( +
+ ) +} + +export { + MessageGroup, + Message, + MessageAvatar, + MessageContent, + MessageFooter, + MessageHeader, +} diff --git a/packages/shadcn/package.json b/packages/shadcn/package.json index 9e7c0a974..954a69e89 100644 --- a/packages/shadcn/package.json +++ b/packages/shadcn/package.json @@ -10,7 +10,7 @@ "registry:serve": "python3 -m http.server 3210 -d ./dist", "registry:doc-gen": "node --experimental-strip-types --env-file=.env.local ./scripts/doc-gen.ts", "registry:update": "pnpm registry:build && node --experimental-strip-types --env-file=.env.local ./scripts/update.ts", - "shadcn:update": "pnpm dlx shadcn@latest add alert button button-group select separator sonner toggle tooltip @ai-elements/conversation @ai-elements/message @ai-elements/shimmer && pnpm format", + "shadcn:update": "pnpm dlx shadcn@latest add alert button button-group select separator sonner toggle tooltip message-scroller message bubble && pnpm format", "test": "vitest --run", "test:watch": "vitest", "test:coverage": "vitest --coverage", @@ -32,6 +32,7 @@ "@radix-ui/react-slot": "^1.2.3", "@radix-ui/react-toggle": "^1.1.10", "@radix-ui/react-tooltip": "^1.2.8", + "@shadcn/react": "^0.2.1", "ai": "^5.0.105", "class-variance-authority": "^0.7.1", "clsx": "^2.1.1", @@ -43,8 +44,7 @@ "radix-ui": "^1.6.2", "sonner": "^2.0.7", "streamdown": "^2.3.0", - "tailwind-merge": "^3.3.0", - "use-stick-to-bottom": "^1.1.1" + "tailwind-merge": "^3.3.0" }, "devDependencies": { "@eslint/eslintrc": "^3", @@ -67,7 +67,7 @@ "prettier": "^3.4.2", "prettier-plugin-tailwindcss": "^0.6.11", "react-docgen-typescript": "^2.4.0", - "shadcn": "^3.8.5", + "shadcn": "^4.13.0", "tailwindcss": "^4", "typescript": "^5", "vite": "^7.3.5", diff --git a/packages/shadcn/registry.json b/packages/shadcn/registry.json index dde08e928..99ab231a6 100644 --- a/packages/shadcn/registry.json +++ b/packages/shadcn/registry.json @@ -211,10 +211,11 @@ "type": "registry:component" } ], - "dependencies": ["@livekit/components-react@^2.0.0", "motion"], + "dependencies": ["@livekit/components-react@^2.0.0", "motion", "streamdown"], "registryDependencies": [ - "@ai-elements/message", - "@ai-elements/conversation", + "message", + "bubble", + "message-scroller", "@agents-ui/agent-chat-indicator" ] }, @@ -315,7 +316,6 @@ ], "registryDependencies": [ "utils", - "@ai-elements/shimmer", "@agents-ui/agent-control-bar", "@agents-ui/agent-chat-transcript", "@agents-ui/agent-audio-visualizer-aura", diff --git a/packages/shadcn/tests/agent-chat-transcript.test.tsx b/packages/shadcn/tests/agent-chat-transcript.test.tsx index c8c6bf49c..afcec95af 100644 --- a/packages/shadcn/tests/agent-chat-transcript.test.tsx +++ b/packages/shadcn/tests/agent-chat-transcript.test.tsx @@ -2,26 +2,37 @@ import { describe, it, expect, vi } from 'vitest'; import { render, screen, fireEvent } from '@testing-library/react'; import { AgentChatTranscript } from '@/components/agents-ui/agent-chat-transcript'; -vi.mock('@/components/ai-elements/conversation', () => ({ - Conversation: ({ children, ...props }: any) => ( +vi.mock('@/components/ui/message-scroller', () => ({ + MessageScrollerProvider: ({ children }: any) => <>{children}, + MessageScroller: ({ children, ...props }: any) => (
{children}
), - ConversationContent: ({ children }: any) => ( + MessageScrollerViewport: ({ children }: any) => <>{children}, + MessageScrollerContent: ({ children }: any) => (
{children}
), - ConversationScrollButton: () =>
, + MessageScrollerItem: ({ children }: any) => <>{children}, + MessageScrollerButton: () =>
, })); -vi.mock('@/components/ai-elements/message', () => ({ - Message: ({ children, from, title }: any) => ( -
+vi.mock('@/components/ui/message', () => ({ + Message: ({ children, align, title }: any) => ( +
{children}
), MessageContent: ({ children }: any) =>
{children}
, - MessageResponse: ({ children }: any) =>
{children}
, +})); + +vi.mock('@/components/ui/bubble', () => ({ + Bubble: ({ children }: any) => <>{children}, + BubbleContent: ({ children }: any) =>
{children}
, +})); + +vi.mock('streamdown', () => ({ + Streamdown: ({ children }: any) => <>{children}, })); vi.mock('@/components/agents-ui/agent-chat-indicator', () => ({ diff --git a/packages/shadcn/tests/agent-session-block.test.tsx b/packages/shadcn/tests/agent-session-block.test.tsx index 43414a92d..b9b7e8f86 100644 --- a/packages/shadcn/tests/agent-session-block.test.tsx +++ b/packages/shadcn/tests/agent-session-block.test.tsx @@ -38,20 +38,10 @@ vi.mock('@/components/agents-ui/agent-chat-transcript', () => ({ ), })); -vi.mock('@/components/ai-elements/shimmer', () => ({ - Shimmer: ({ children, ...props }: any) => ( -
- {children} -
- ), -})); - vi.mock('motion/react', () => ({ motion: { div: ({ children, ...props }: any) =>
{children}
, - create: (Component: any) => (props: any) => ( - - ), + p: ({ children, ...props }: any) =>

{children}

, }, AnimatePresence: ({ children }: any) => <>{children}, })); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 7110a9633..89eedbe14 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -55,7 +55,7 @@ importers: version: 5.8.2 typescript-eslint: specifier: ^8.24.0 - version: 8.29.0(eslint@9.39.3(jiti@2.6.1))(typescript@5.8.2) + version: 8.29.0(eslint@9.39.3(jiti@2.7.0))(typescript@5.8.2) docs/docs: dependencies: @@ -89,13 +89,13 @@ importers: version: 7.29.7 '@storybook/addon-docs': specifier: ^10.1.4 - version: 10.1.4(@types/react@19.2.14)(esbuild@0.27.3)(rollup@4.59.0)(storybook@10.1.10(@testing-library/dom@9.3.4)(prettier@3.9.5)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(vite@7.3.5(@types/node@25.9.3)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.84.0)(terser@5.48.0)(tsx@4.19.2)(yaml@2.4.5))(webpack@5.107.2(esbuild@0.27.3)(lightningcss@1.31.1)(postcss@8.5.15)) + version: 10.1.4(@types/react@19.2.14)(esbuild@0.27.3)(rollup@4.59.0)(storybook@10.1.10(@testing-library/dom@9.3.4)(prettier@3.9.5)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(vite@7.3.5(@types/node@25.9.3)(jiti@2.7.0)(lightningcss@1.32.0)(sass@1.84.0)(terser@5.48.0)(tsx@4.19.2)(yaml@2.4.5))(webpack@5.107.2(esbuild@0.27.3)(lightningcss@1.32.0)(postcss@8.5.15)) '@storybook/addon-links': specifier: ^10.1.4 version: 10.1.4(react@19.2.4)(storybook@10.1.10(@testing-library/dom@9.3.4)(prettier@3.9.5)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)) '@storybook/addon-styling-webpack': specifier: ^3.0.0 - version: 3.0.0(storybook@10.1.10(@testing-library/dom@9.3.4)(prettier@3.9.5)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(webpack@5.107.2(esbuild@0.27.3)(lightningcss@1.31.1)(postcss@8.5.15)) + version: 3.0.0(storybook@10.1.10(@testing-library/dom@9.3.4)(prettier@3.9.5)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(webpack@5.107.2(esbuild@0.27.3)(lightningcss@1.32.0)(postcss@8.5.15)) '@storybook/addon-themes': specifier: ^10.1.4 version: 10.1.4(storybook@10.1.10(@testing-library/dom@9.3.4)(prettier@3.9.5)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)) @@ -104,40 +104,43 @@ importers: version: 10.1.11(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(storybook@10.1.10(@testing-library/dom@9.3.4)(prettier@3.9.5)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(typescript@5.8.2) '@storybook/react-vite': specifier: ^10.1.11 - version: 10.1.11(esbuild@0.27.3)(msw@2.12.3(@types/node@25.9.3)(typescript@5.8.2))(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(rollup@4.59.0)(storybook@10.1.10(@testing-library/dom@9.3.4)(prettier@3.9.5)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(typescript@5.8.2)(vite@7.3.5(@types/node@25.9.3)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.84.0)(terser@5.48.0)(tsx@4.19.2)(yaml@2.4.5))(webpack@5.107.2(esbuild@0.27.3)(lightningcss@1.31.1)(postcss@8.5.15)) + version: 10.1.11(esbuild@0.27.3)(msw@2.12.3(@types/node@25.9.3)(typescript@5.8.2))(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(rollup@4.59.0)(storybook@10.1.10(@testing-library/dom@9.3.4)(prettier@3.9.5)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(typescript@5.8.2)(vite@7.3.5(@types/node@25.9.3)(jiti@2.7.0)(lightningcss@1.32.0)(sass@1.84.0)(terser@5.48.0)(tsx@4.19.2)(yaml@2.4.5))(webpack@5.107.2(esbuild@0.27.3)(lightningcss@1.32.0)(postcss@8.5.15)) '@storybook/testing-library': specifier: ^0.2.2 version: 0.2.2 '@tailwindcss/postcss': - specifier: ^4 - version: 4.1.17 + specifier: ^4.3.2 + version: 4.3.2 '@tailwindcss/vite': - specifier: ^4.1.17 - version: 4.1.17(vite@7.3.5(@types/node@25.9.3)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.84.0)(terser@5.48.0)(tsx@4.19.2)(yaml@2.4.5)) + specifier: ^4.3.2 + version: 4.3.2(vite@7.3.5(@types/node@25.9.3)(jiti@2.7.0)(lightningcss@1.32.0)(sass@1.84.0)(terser@5.48.0)(tsx@4.19.2)(yaml@2.4.5)) autoprefixer: specifier: ^10.4.22 version: 10.4.22(postcss@8.5.15) babel-loader: specifier: ^9.0.0 - version: 9.2.1(@babel/core@7.29.7)(webpack@5.107.2(esbuild@0.27.3)(lightningcss@1.31.1)(postcss@8.5.15)) + version: 9.2.1(@babel/core@7.29.7)(webpack@5.107.2(esbuild@0.27.3)(lightningcss@1.32.0)(postcss@8.5.15)) eslint-config-lk-custom: specifier: workspace:* version: link:../../tooling/eslint-config-custom eslint-plugin-storybook: specifier: 10.1.4 - version: 10.1.4(eslint@9.39.3(jiti@2.6.1))(storybook@10.1.10(@testing-library/dom@9.3.4)(prettier@3.9.5)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(typescript@5.8.2) + version: 10.1.4(eslint@9.39.3(jiti@2.7.0))(storybook@10.1.10(@testing-library/dom@9.3.4)(prettier@3.9.5)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(typescript@5.8.2) next-themes: specifier: ^0.4.6 version: 0.4.6(react-dom@19.2.4(react@19.2.4))(react@19.2.4) postcss: specifier: ^8.5.15 version: 8.5.15 + shadcn: + specifier: ^4.13.0 + version: 4.13.0(typescript@5.8.2) storybook: specifier: ^10.1.4 version: 10.1.10(@testing-library/dom@9.3.4)(prettier@3.9.5)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) tailwindcss: - specifier: ^4.1.17 - version: 4.1.17 + specifier: ^4.3.2 + version: 4.3.2 tsx: specifier: ^4.0.0 version: 4.19.2 @@ -146,10 +149,10 @@ importers: version: 5.8.2 vite: specifier: ^7.3.5 - version: 7.3.5(@types/node@25.9.3)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.84.0)(terser@5.48.0)(tsx@4.19.2)(yaml@2.4.5) + version: 7.3.5(@types/node@25.9.3)(jiti@2.7.0)(lightningcss@1.32.0)(sass@1.84.0)(terser@5.48.0)(tsx@4.19.2)(yaml@2.4.5) webpack: specifier: ^5.107.2 - version: 5.107.2(esbuild@0.27.3)(lightningcss@1.31.1)(postcss@8.5.15) + version: 5.107.2(esbuild@0.27.3)(lightningcss@1.32.0)(postcss@8.5.15) examples/nextjs: dependencies: @@ -232,7 +235,7 @@ importers: version: 11.1.6(size-limit@11.1.6) '@size-limit/webpack': specifier: ^11.0.2 - version: 11.1.6(esbuild@0.27.3)(lightningcss@1.31.1)(postcss@8.5.15)(size-limit@11.1.6) + version: 11.1.6(esbuild@0.27.3)(lightningcss@1.32.0)(postcss@8.5.15)(size-limit@11.1.6) eslint: specifier: 'catalog:' version: 8.57.1 @@ -244,13 +247,13 @@ importers: version: 11.1.6 tsup: specifier: ^8.5.1 - version: 8.5.1(@microsoft/api-extractor@7.58.8(@types/node@25.9.3))(jiti@2.6.1)(postcss@8.5.15)(tsx@4.19.2)(typescript@5.8.2)(yaml@2.4.5) + version: 8.5.1(@microsoft/api-extractor@7.58.8(@types/node@25.9.3))(jiti@2.7.0)(postcss@8.5.15)(tsx@4.19.2)(typescript@5.8.2)(yaml@2.4.5) typescript: specifier: 5.8.2 version: 5.8.2 vitest: specifier: ^4.1.8 - version: 4.1.8(@opentelemetry/api@1.9.0)(@types/node@25.9.3)(jsdom@26.1.0)(msw@2.12.3(@types/node@25.9.3)(typescript@5.8.2))(vite@7.3.5(@types/node@25.9.3)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.84.0)(terser@5.48.0)(tsx@4.19.2)(yaml@2.4.5)) + version: 4.1.8(@opentelemetry/api@1.9.0)(@types/node@25.9.3)(jsdom@26.1.0)(msw@2.12.3(@types/node@25.9.3)(typescript@5.8.2))(vite@7.3.5(@types/node@25.9.3)(jiti@2.7.0)(lightningcss@1.32.0)(sass@1.84.0)(terser@5.48.0)(tsx@4.19.2)(yaml@2.4.5)) packages/react: dependencies: @@ -290,10 +293,10 @@ importers: version: 11.1.6(size-limit@11.1.6) '@size-limit/webpack': specifier: ^11.0.2 - version: 11.1.6(lightningcss@1.31.1)(size-limit@11.1.6) + version: 11.1.6(lightningcss@1.32.0)(size-limit@11.1.6) '@size-limit/webpack-why': specifier: ^11.1.6 - version: 11.1.6(lightningcss@1.31.1)(size-limit@11.1.6)(webpack@5.107.2(lightningcss@1.31.1)) + version: 11.1.6(lightningcss@1.32.0)(size-limit@11.1.6)(webpack@5.107.2(lightningcss@1.32.0)) '@svgr/cli': specifier: ^8.0.0 version: 8.1.0(typescript@5.9.3) @@ -314,7 +317,7 @@ importers: version: 18.3.5(@types/react@18.3.18) '@vitejs/plugin-react': specifier: ^4.3.2 - version: 4.3.4(vite@7.3.5(@types/node@24.7.0)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.84.0)(terser@5.48.0)(tsx@4.19.2)(yaml@2.4.5)) + version: 4.3.4(vite@7.3.5(@types/node@24.7.0)(jiti@2.7.0)(lightningcss@1.32.0)(sass@1.84.0)(terser@5.48.0)(tsx@4.19.2)(yaml@2.4.5)) eslint: specifier: 'catalog:' version: 8.57.1 @@ -341,13 +344,13 @@ importers: version: 2.1.0 vite: specifier: ^7.3.5 - version: 7.3.5(@types/node@24.7.0)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.84.0)(terser@5.48.0)(tsx@4.19.2)(yaml@2.4.5) + version: 7.3.5(@types/node@24.7.0)(jiti@2.7.0)(lightningcss@1.32.0)(sass@1.84.0)(terser@5.48.0)(tsx@4.19.2)(yaml@2.4.5) vite-plugin-dts: specifier: ^4.5.4 - version: 4.5.4(@types/node@24.7.0)(rollup@4.59.0)(typescript@5.9.3)(vite@7.3.5(@types/node@24.7.0)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.84.0)(terser@5.48.0)(tsx@4.19.2)(yaml@2.4.5)) + version: 4.5.4(@types/node@24.7.0)(rollup@4.59.0)(typescript@5.9.3)(vite@7.3.5(@types/node@24.7.0)(jiti@2.7.0)(lightningcss@1.32.0)(sass@1.84.0)(terser@5.48.0)(tsx@4.19.2)(yaml@2.4.5)) vitest: specifier: ^4.1.8 - version: 4.1.8(@opentelemetry/api@1.9.0)(@types/node@24.7.0)(jsdom@26.1.0)(msw@2.12.3(@types/node@24.7.0)(typescript@5.9.3))(vite@7.3.5(@types/node@24.7.0)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.84.0)(terser@5.48.0)(tsx@4.19.2)(yaml@2.4.5)) + version: 4.1.8(@opentelemetry/api@1.9.0)(@types/node@24.7.0)(jsdom@26.1.0)(msw@2.12.3(@types/node@24.7.0)(typescript@5.9.3))(vite@7.3.5(@types/node@24.7.0)(jiti@2.7.0)(lightningcss@1.32.0)(sass@1.84.0)(terser@5.48.0)(tsx@4.19.2)(yaml@2.4.5)) packages/shadcn: dependencies: @@ -372,6 +375,9 @@ importers: '@radix-ui/react-tooltip': specifier: ^1.2.8 version: 1.2.12(@types/react-dom@19.1.9(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@shadcn/react': + specifier: ^0.2.1 + version: 0.2.1(@types/react@19.2.14)(react@19.2.4) ai: specifier: ^5.0.105 version: 5.0.199(zod@3.25.76) @@ -417,9 +423,6 @@ importers: tailwind-merge: specifier: ^3.3.0 version: 3.5.0 - use-stick-to-bottom: - specifier: ^1.1.1 - version: 1.1.6(react@19.2.4) devDependencies: '@eslint/eslintrc': specifier: ^3 @@ -450,7 +453,7 @@ importers: version: 19.1.9(@types/react@19.2.14) '@vitejs/plugin-react': specifier: ^4.3.2 - version: 4.3.4(vite@7.3.5(@types/node@22.19.1)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.84.0)(terser@5.48.0)(tsx@4.19.2)(yaml@2.4.5)) + version: 4.3.4(vite@7.3.5(@types/node@22.19.1)(jiti@2.7.0)(lightningcss@1.32.0)(sass@1.84.0)(terser@5.48.0)(tsx@4.19.2)(yaml@2.4.5)) '@vitest/coverage-v8': specifier: ^3.2.4 version: 3.2.4(vitest@4.1.8) @@ -482,8 +485,8 @@ importers: specifier: ^2.4.0 version: 2.4.0(typescript@5.8.2) shadcn: - specifier: ^3.8.5 - version: 3.8.5(@types/node@22.19.1)(typescript@5.8.2) + specifier: ^4.13.0 + version: 4.13.0(typescript@5.8.2) tailwindcss: specifier: ^4 version: 4.1.17 @@ -492,10 +495,10 @@ importers: version: 5.8.2 vite: specifier: ^7.3.5 - version: 7.3.5(@types/node@22.19.1)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.84.0)(terser@5.48.0)(tsx@4.19.2)(yaml@2.4.5) + version: 7.3.5(@types/node@22.19.1)(jiti@2.7.0)(lightningcss@1.32.0)(sass@1.84.0)(terser@5.48.0)(tsx@4.19.2)(yaml@2.4.5) vitest: specifier: ^4.1.8 - version: 4.1.8(@opentelemetry/api@1.9.0)(@types/node@22.19.1)(@vitest/coverage-v8@3.2.4)(jsdom@26.1.0)(msw@2.12.3(@types/node@22.19.1)(typescript@5.8.2))(vite@7.3.5(@types/node@22.19.1)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.84.0)(terser@5.48.0)(tsx@4.19.2)(yaml@2.4.5)) + version: 4.1.8(@opentelemetry/api@1.9.0)(@types/node@22.19.1)(@vitest/coverage-v8@3.2.4)(jsdom@26.1.0)(msw@2.12.3(@types/node@22.19.1)(typescript@5.8.2))(vite@7.3.5(@types/node@22.19.1)(jiti@2.7.0)(lightningcss@1.32.0)(sass@1.84.0)(terser@5.48.0)(tsx@4.19.2)(yaml@2.4.5)) packages/styles: devDependencies: @@ -510,7 +513,7 @@ importers: version: 8.5.15 postcss-cli: specifier: ^11.0.0 - version: 11.0.0(jiti@2.6.1)(postcss@8.5.15) + version: 11.0.0(jiti@2.7.0)(postcss@8.5.15) postcss-prefixer: specifier: ^3.0.0 version: 3.0.0(postcss@8.5.15) @@ -528,7 +531,7 @@ importers: version: 8.1.1(sass@1.84.0) vitest: specifier: ^4.0.0 - version: 4.1.8(@opentelemetry/api@1.9.0)(@types/node@25.9.3)(jsdom@26.1.0)(msw@2.12.3(@types/node@25.9.3)(typescript@5.9.3))(vite@7.3.5(@types/node@25.9.3)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.84.0)(terser@5.48.0)(tsx@4.19.2)(yaml@2.4.5)) + version: 4.1.8(@opentelemetry/api@1.9.0)(@types/node@25.9.3)(jsdom@26.1.0)(msw@2.12.3(@types/node@25.9.3)(typescript@5.9.3))(vite@7.3.5(@types/node@25.9.3)(jiti@2.7.0)(lightningcss@1.32.0)(sass@1.84.0)(terser@5.48.0)(tsx@4.19.2)(yaml@2.4.5)) tooling/api-documenter: dependencies: @@ -690,10 +693,6 @@ packages: resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} engines: {node: '>=6.0.0'} - '@antfu/ni@25.0.0': - resolution: {integrity: sha512-9q/yCljni37pkMr4sPrI3G4jqdIk074+iukc5aFJl7kmDCCsiJrbZ6zKxnES1Gwg+i9RcDZwvktl23puGslmvA==} - hasBin: true - '@asamuzakjp/css-color@2.8.3': resolution: {integrity: sha512-GIc76d9UI1hCvOATjZPyHFmE5qhRccp3/zGfMPapK3jBi+yocEzp6BBB0UnfRYP9NP4FANqUZYb0hnfs3TM3hw==} @@ -3149,6 +3148,17 @@ packages: '@sec-ant/readable-stream@0.4.1': resolution: {integrity: sha512-831qok9r2t8AlxLko40y2ebgSDhenenCatLVeW/uBtnHPyhHOvG0C7TvfgecV+wHzIm5KUICgzmVpWS+IMEAeg==} + '@shadcn/react@0.2.1': + resolution: {integrity: sha512-5krgi3dRMKb5jH6a+qPzVJUy/54s0kKE4Rw4LjDfLqOdVQTWKUgxWf1kW8r912I0jX/Lzxqc+pgjkjWxUIK5BQ==} + peerDependencies: + '@types/react': '>=19' + react: '>=19' + peerDependenciesMeta: + '@types/react': + optional: true + react: + optional: true + '@sinclair/typebox@0.27.10': resolution: {integrity: sha512-MTBk/3jGLNB2tVxv6uLlFh1iu64iYOQ2PbdOSK3NW8JZsmlaOh2q6sdtKowBhfw8QFLmYNzTW4/oK4uATIi6ZA==} @@ -3443,60 +3453,117 @@ packages: '@tailwindcss/node@4.1.17': resolution: {integrity: sha512-csIkHIgLb3JisEFQ0vxr2Y57GUNYh447C8xzwj89U/8fdW8LhProdxvnVH6U8M2Y73QKiTIH+LWbK3V2BBZsAg==} + '@tailwindcss/node@4.3.2': + resolution: {integrity: sha512-yWP/sqEcBLaD8JuA6zNwxoYKr75qxTioYwlRwekj5Jr/I5GXnoJfjetH/psLUIv74cYTH2lBUEzBkinthoYcBg==} + '@tailwindcss/oxide-android-arm64@4.1.17': resolution: {integrity: sha512-BMqpkJHgOZ5z78qqiGE6ZIRExyaHyuxjgrJ6eBO5+hfrfGkuya0lYfw8fRHG77gdTjWkNWEEm+qeG2cDMxArLQ==} engines: {node: '>= 10'} cpu: [arm64] os: [android] + '@tailwindcss/oxide-android-arm64@4.3.2': + resolution: {integrity: sha512-WHxqIuHpvZ5VtdX6GTl1Ik/Vp2YuN42Et+0CdeaVd/frQ9jAvGmvR8vLT+jk3e8/Q3x8kECB9+R17pgpp2BulA==} + engines: {node: '>= 20'} + cpu: [arm64] + os: [android] + '@tailwindcss/oxide-darwin-arm64@4.1.17': resolution: {integrity: sha512-EquyumkQweUBNk1zGEU/wfZo2qkp/nQKRZM8bUYO0J+Lums5+wl2CcG1f9BgAjn/u9pJzdYddHWBiFXJTcxmOg==} engines: {node: '>= 10'} cpu: [arm64] os: [darwin] + '@tailwindcss/oxide-darwin-arm64@4.3.2': + resolution: {integrity: sha512-GZypeUY/IDJW3877KeM+O67vbXr3MBnbtEL4aYhNErv/JWZhye2vGSWWG9tB6iiqR2MqRNkY8IOUy4NdSZV26w==} + engines: {node: '>= 20'} + cpu: [arm64] + os: [darwin] + '@tailwindcss/oxide-darwin-x64@4.1.17': resolution: {integrity: sha512-gdhEPLzke2Pog8s12oADwYu0IAw04Y2tlmgVzIN0+046ytcgx8uZmCzEg4VcQh+AHKiS7xaL8kGo/QTiNEGRog==} engines: {node: '>= 10'} cpu: [x64] os: [darwin] + '@tailwindcss/oxide-darwin-x64@4.3.2': + resolution: {integrity: sha512-UIIzmefR6KO1sDU7MzRqAxC8iBpft/VhkGjTjnhoS6k7Z3rQ9wEgA1ODSiyH/tcSYssulNm4Ci3hOeK1jH7ccQ==} + engines: {node: '>= 20'} + cpu: [x64] + os: [darwin] + '@tailwindcss/oxide-freebsd-x64@4.1.17': resolution: {integrity: sha512-hxGS81KskMxML9DXsaXT1H0DyA+ZBIbyG/sSAjWNe2EDl7TkPOBI42GBV3u38itzGUOmFfCzk1iAjDXds8Oh0g==} engines: {node: '>= 10'} cpu: [x64] os: [freebsd] + '@tailwindcss/oxide-freebsd-x64@4.3.2': + resolution: {integrity: sha512-GN+uAmcI6DNspnCDwtOAZrTz6oukJnp337qZvxqCGLd3BHBzJpO0ZbTLRvJNdztOeAmTzewewGIMPb0tk2R4WA==} + engines: {node: '>= 20'} + cpu: [x64] + os: [freebsd] + '@tailwindcss/oxide-linux-arm-gnueabihf@4.1.17': resolution: {integrity: sha512-k7jWk5E3ldAdw0cNglhjSgv501u7yrMf8oeZ0cElhxU6Y2o7f8yqelOp3fhf7evjIS6ujTI3U8pKUXV2I4iXHQ==} engines: {node: '>= 10'} cpu: [arm] os: [linux] + '@tailwindcss/oxide-linux-arm-gnueabihf@4.3.2': + resolution: {integrity: sha512-4ABn7qSbdHRwTiDiuWNegCyb5+2FJ4vKIKc3DmKrvAFw7MU1Lm11dIkTPwUaFdTzc7IsOpDbqBrlh0x6y36U/w==} + engines: {node: '>= 20'} + cpu: [arm] + os: [linux] + '@tailwindcss/oxide-linux-arm64-gnu@4.1.17': resolution: {integrity: sha512-HVDOm/mxK6+TbARwdW17WrgDYEGzmoYayrCgmLEw7FxTPLcp/glBisuyWkFz/jb7ZfiAXAXUACfyItn+nTgsdQ==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] + '@tailwindcss/oxide-linux-arm64-gnu@4.3.2': + resolution: {integrity: sha512-wDgEIGwoM8w8pufh9LVt1PahDgNdKXrLC2qfAnV3vAmococ9RWbxeAw4pxPttd/TsJfwjyLf90Dg1y9y8I6Emw==} + engines: {node: '>= 20'} + cpu: [arm64] + os: [linux] + '@tailwindcss/oxide-linux-arm64-musl@4.1.17': resolution: {integrity: sha512-HvZLfGr42i5anKtIeQzxdkw/wPqIbpeZqe7vd3V9vI3RQxe3xU1fLjss0TjyhxWcBaipk7NYwSrwTwK1hJARMg==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] + '@tailwindcss/oxide-linux-arm64-musl@4.3.2': + resolution: {integrity: sha512-J5Nuk0uZQIiMTJj3LEx4sAA9tMFUoXQZFv1J6An+QGYe53HKRJuFDi0rpq/tuouCZeAbOBY3kQ6g8qeD4TUjtA==} + engines: {node: '>= 20'} + cpu: [arm64] + os: [linux] + '@tailwindcss/oxide-linux-x64-gnu@4.1.17': resolution: {integrity: sha512-M3XZuORCGB7VPOEDH+nzpJ21XPvK5PyjlkSFkFziNHGLc5d6g3di2McAAblmaSUNl8IOmzYwLx9NsE7bplNkwQ==} engines: {node: '>= 10'} cpu: [x64] os: [linux] + '@tailwindcss/oxide-linux-x64-gnu@4.3.2': + resolution: {integrity: sha512-kqCZpSKOBEJO4mz7OqWoofBZeXTAwaVGPj0ErAj7CojmhKpWVWVOnrt9dE8odoIraZq4oj3ausM37kXi+Tow8w==} + engines: {node: '>= 20'} + cpu: [x64] + os: [linux] + '@tailwindcss/oxide-linux-x64-musl@4.1.17': resolution: {integrity: sha512-k7f+pf9eXLEey4pBlw+8dgfJHY4PZ5qOUFDyNf7SI6lHjQ9Zt7+NcscjpwdCEbYi6FI5c2KDTDWyf2iHcCSyyQ==} engines: {node: '>= 10'} cpu: [x64] os: [linux] + '@tailwindcss/oxide-linux-x64-musl@4.3.2': + resolution: {integrity: sha512-cixpqbh2toJDmkuCRI68nXA8ZxNmdK9Y+9v5h3MC3ZQKy/0BO8AWzlkWyRM7JAFSGBlfig4YVTPsK6MVgqz1uw==} + engines: {node: '>= 20'} + cpu: [x64] + os: [linux] + '@tailwindcss/oxide-wasm32-wasi@4.1.17': resolution: {integrity: sha512-cEytGqSSoy7zK4JRWiTCx43FsKP/zGr0CsuMawhH67ONlH+T79VteQeJQRO/X7L0juEUA8ZyuYikcRBf0vsxhg==} engines: {node: '>=14.0.0'} @@ -3509,29 +3576,60 @@ packages: - '@emnapi/wasi-threads' - tslib + '@tailwindcss/oxide-wasm32-wasi@4.3.2': + resolution: {integrity: sha512-4ec2Z/LOmRsAgU23CS4xeJfcJlmRg94A/XrbGRCF1gyU/zdDfRLYDVsS+ynSZCmGNxQ1jQriQOKMQeQxBA3Isw==} + engines: {node: '>=14.0.0'} + cpu: [wasm32] + bundledDependencies: + - '@napi-rs/wasm-runtime' + - '@emnapi/core' + - '@emnapi/runtime' + - '@tybys/wasm-util' + - '@emnapi/wasi-threads' + - tslib + '@tailwindcss/oxide-win32-arm64-msvc@4.1.17': resolution: {integrity: sha512-JU5AHr7gKbZlOGvMdb4722/0aYbU+tN6lv1kONx0JK2cGsh7g148zVWLM0IKR3NeKLv+L90chBVYcJ8uJWbC9A==} engines: {node: '>= 10'} cpu: [arm64] os: [win32] + '@tailwindcss/oxide-win32-arm64-msvc@4.3.2': + resolution: {integrity: sha512-Zyr/M0+XcYZu3bZrUytc7TXvrk0ftWfl8gN2MwekNDzhqhKRUucMPSeOzM0o0wH5AWOU49BsKRrfKxI2atCPMQ==} + engines: {node: '>= 20'} + cpu: [arm64] + os: [win32] + '@tailwindcss/oxide-win32-x64-msvc@4.1.17': resolution: {integrity: sha512-SKWM4waLuqx0IH+FMDUw6R66Hu4OuTALFgnleKbqhgGU30DY20NORZMZUKgLRjQXNN2TLzKvh48QXTig4h4bGw==} engines: {node: '>= 10'} cpu: [x64] os: [win32] + '@tailwindcss/oxide-win32-x64-msvc@4.3.2': + resolution: {integrity: sha512-QI9BO7KlNZsp2GuO0jwAAj5jCDABOKXRkCk2XuKTSaNEFSdfzqswYVTtCHBNKHLsqyjFyFkqlDiwkNbTYSssMQ==} + engines: {node: '>= 20'} + cpu: [x64] + os: [win32] + '@tailwindcss/oxide@4.1.17': resolution: {integrity: sha512-F0F7d01fmkQhsTjXezGBLdrl1KresJTcI3DB8EkScCldyKp3Msz4hub4uyYaVnk88BAS1g5DQjjF6F5qczheLA==} engines: {node: '>= 10'} + '@tailwindcss/oxide@4.3.2': + resolution: {integrity: sha512-z8ZgnzX8gdNoWLBLqBPoh/sjnxkwvf9ZuWjnO0l0yIzbLa5/9S+eC5QxGZKRobVHIC3/1BoMWjHblqWjcgFgag==} + engines: {node: '>= 20'} + '@tailwindcss/postcss@4.1.17': resolution: {integrity: sha512-+nKl9N9mN5uJ+M7dBOOCzINw94MPstNR/GtIhz1fpZysxL/4a+No64jCBD6CPN+bIHWFx3KWuu8XJRrj/572Dw==} - '@tailwindcss/vite@4.1.17': - resolution: {integrity: sha512-4+9w8ZHOiGnpcGI6z1TVVfWaX/koK7fKeSYF3qlYg2xpBtbteP2ddBxiarL+HVgfSJGeK5RIxRQmKm4rTJJAwA==} + '@tailwindcss/postcss@4.3.2': + resolution: {integrity: sha512-rjVWYCa7Ngbi5AarT6k8TkxUG3Wl1QKzHdIZVsjZSzf36Jmo2IKZt/NHRAwly8oDkbBOH0YTu+CHuf9jPxMc+g==} + + '@tailwindcss/vite@4.3.2': + resolution: {integrity: sha512-eHpMeX4JXfVNJDEcsouTeCBubJBTcTLigeaw/NTUW6PB5ATKKXdyonnXgTBX2VuRbjz1hjfz6C5XAhr52ImQXA==} peerDependencies: - vite: ^5.2.0 || ^6 || ^7 + vite: ^5.2.0 || ^6 || ^7 || ^8 '@testing-library/dom@10.1.0': resolution: {integrity: sha512-wdsYKy5zupPyLCW2Je5DLHSxSfbIp6h80WoHOQc+RPtmPGA52O9x5MJEkv92Sjonpq+poOAtUKhh1kBGAXBrNA==} @@ -4267,10 +4365,6 @@ packages: resolution: {integrity: sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==} engines: {node: '>=12'} - ansis@4.2.0: - resolution: {integrity: sha512-HqZ5rWlFjGiV0tDm3UxxgNRqsOTniqoKZu0pIAfh7TZQMGuZK+hH0drySty0si0QXj1ieop4+SkSfPZBPPkHig==} - engines: {node: '>=14'} - any-promise@1.3.0: resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} @@ -4792,10 +4886,6 @@ packages: resolution: {integrity: sha512-hpA5C/YrPjucXypHPPc0oJ1l9Hf6wWbiOL7Ik42cxnsUOhWiCB/fylKbKqqJalW9FgkNQCw16YO8uW9Hs0Iy1A==} engines: {node: '>=4'} - data-uri-to-buffer@4.0.1: - resolution: {integrity: sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==} - engines: {node: '>= 12'} - data-urls@5.0.0: resolution: {integrity: sha512-ZYP5VBHshaDAiVZxjbRVcFJpc+4xGgT0bK3vzy1HLN8jTO975HEbuYzZJcHoQEY5K1a0z8YayJkyVETa08eNTg==} engines: {node: '>=18'} @@ -5017,6 +5107,10 @@ packages: resolution: {integrity: sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==} engines: {node: '>= 0.8'} + enhanced-resolve@5.21.6: + resolution: {integrity: sha512-aNnGCvbJ/RIyWo1IuhNdVjnNF+EjH9wpzpNHt+ci/m9He9LJvUN8wrCcXjp9cWsGNAuvSpVFTx/vraAFQ8qGjQ==} + engines: {node: '>=10.13.0'} + enhanced-resolve@5.24.0: resolution: {integrity: sha512-SkE2t82KlkkxQRVMVLAGKxLfORGQfrkx5dkj+vlgXRVNEdPc4eZcR+J/Fvj8C+yKSFH5L0q3NFlyufOVQnCcYQ==} engines: {node: '>=10.13.0'} @@ -5488,10 +5582,6 @@ packages: picomatch: optional: true - fetch-blob@3.2.0: - resolution: {integrity: sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==} - engines: {node: ^12.20 || >= 14.13} - figures@6.1.0: resolution: {integrity: sha512-d+l3qxjSesT4V7v2fh+QnmFnUWv9lSpjarhShNTgBOfA0ttejbQUAlHLitbjkoRiDulW0OPoQPYIGhIC8ohejg==} engines: {node: '>=18'} @@ -5550,10 +5640,6 @@ packages: resolution: {integrity: sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==} engines: {node: '>=14'} - formdata-polyfill@4.0.10: - resolution: {integrity: sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==} - engines: {node: '>=12.20.0'} - forwarded@0.2.0: resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==} engines: {node: '>= 0.6'} @@ -5612,9 +5698,6 @@ packages: fuzzysort@3.1.0: resolution: {integrity: sha512-sR9BNCjBg6LNgwvxlBd0sBABvQitkLzoVY9MYYROQVX/FvfJ4Mai9LsGhDgd8qYdds0bY77VzYd5iuB+v5rwQQ==} - fzf@0.5.2: - resolution: {integrity: sha512-Tt4kuxLXFKHy8KT40zwsUPUkg1CrsgY25FxA2U/j/0WgEDCk3ddc/zLTCCcbSHX9FcKtLuVaDGtGE/STWC+j3Q==} - generic-names@4.0.0: resolution: {integrity: sha512-ySFolZQfw9FoDb3ed9d80Cm9f0+r7qj+HJkWjeD9RBfpxEVTlVhol+gvaQB/78WbwYfbnNh8nWHHBSlg072y6A==} @@ -6353,6 +6436,10 @@ packages: resolution: {integrity: sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ==} hasBin: true + jiti@2.7.0: + resolution: {integrity: sha512-AC/7JofJvZGrrneWNaEnJeOLUx+JlGt7tNa0wZiRPT4MY1wmfKjt2+6O2p2uz2+skll8OZZmJMNqeke7kKbNgQ==} + hasBin: true + jju@1.4.0: resolution: {integrity: sha512-8wb9Yw966OSxApiCt0K3yNJL8pnNeIv+OEq2YMidz4FKP6nonSRoOXc80iXY4JaN2FC11B9qsNmDsm+ZOfMROA==} @@ -6482,8 +6569,8 @@ packages: cpu: [arm64] os: [android] - lightningcss-android-arm64@1.31.1: - resolution: {integrity: sha512-HXJF3x8w9nQ4jbXRiNppBCqeZPIAfUo8zE/kOEGbW5NZvGc/K7nMxbhIr+YlFlHW5mpbg/YFPdbnCh1wAXCKFg==} + lightningcss-android-arm64@1.32.0: + resolution: {integrity: sha512-YK7/ClTt4kAK0vo6w3X+Pnm0D2cf2vPHbhOXdoNti1Ga0al1P4TBZhwjATvjNwLEBCnKvjJc2jQgHXH0NEwlAg==} engines: {node: '>= 12.0.0'} cpu: [arm64] os: [android] @@ -6494,8 +6581,8 @@ packages: cpu: [arm64] os: [darwin] - lightningcss-darwin-arm64@1.31.1: - resolution: {integrity: sha512-02uTEqf3vIfNMq3h/z2cJfcOXnQ0GRwQrkmPafhueLb2h7mqEidiCzkE4gBMEH65abHRiQvhdcQ+aP0D0g67sg==} + lightningcss-darwin-arm64@1.32.0: + resolution: {integrity: sha512-RzeG9Ju5bag2Bv1/lwlVJvBE3q6TtXskdZLLCyfg5pt+HLz9BqlICO7LZM7VHNTTn/5PRhHFBSjk5lc4cmscPQ==} engines: {node: '>= 12.0.0'} cpu: [arm64] os: [darwin] @@ -6506,8 +6593,8 @@ packages: cpu: [x64] os: [darwin] - lightningcss-darwin-x64@1.31.1: - resolution: {integrity: sha512-1ObhyoCY+tGxtsz1lSx5NXCj3nirk0Y0kB/g8B8DT+sSx4G9djitg9ejFnjb3gJNWo7qXH4DIy2SUHvpoFwfTA==} + lightningcss-darwin-x64@1.32.0: + resolution: {integrity: sha512-U+QsBp2m/s2wqpUYT/6wnlagdZbtZdndSmut/NJqlCcMLTWp5muCrID+K5UJ6jqD2BFshejCYXniPDbNh73V8w==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [darwin] @@ -6518,8 +6605,8 @@ packages: cpu: [x64] os: [freebsd] - lightningcss-freebsd-x64@1.31.1: - resolution: {integrity: sha512-1RINmQKAItO6ISxYgPwszQE1BrsVU5aB45ho6O42mu96UiZBxEXsuQ7cJW4zs4CEodPUioj/QrXW1r9pLUM74A==} + lightningcss-freebsd-x64@1.32.0: + resolution: {integrity: sha512-JCTigedEksZk3tHTTthnMdVfGf61Fky8Ji2E4YjUTEQX14xiy/lTzXnu1vwiZe3bYe0q+SpsSH/CTeDXK6WHig==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [freebsd] @@ -6530,8 +6617,8 @@ packages: cpu: [arm] os: [linux] - lightningcss-linux-arm-gnueabihf@1.31.1: - resolution: {integrity: sha512-OOCm2//MZJ87CdDK62rZIu+aw9gBv4azMJuA8/KB74wmfS3lnC4yoPHm0uXZ/dvNNHmnZnB8XLAZzObeG0nS1g==} + lightningcss-linux-arm-gnueabihf@1.32.0: + resolution: {integrity: sha512-x6rnnpRa2GL0zQOkt6rts3YDPzduLpWvwAF6EMhXFVZXD4tPrBkEFqzGowzCsIWsPjqSK+tyNEODUBXeeVHSkw==} engines: {node: '>= 12.0.0'} cpu: [arm] os: [linux] @@ -6542,8 +6629,8 @@ packages: cpu: [arm64] os: [linux] - lightningcss-linux-arm64-gnu@1.31.1: - resolution: {integrity: sha512-WKyLWztD71rTnou4xAD5kQT+982wvca7E6QoLpoawZ1gP9JM0GJj4Tp5jMUh9B3AitHbRZ2/H3W5xQmdEOUlLg==} + lightningcss-linux-arm64-gnu@1.32.0: + resolution: {integrity: sha512-0nnMyoyOLRJXfbMOilaSRcLH3Jw5z9HDNGfT/gwCPgaDjnx0i8w7vBzFLFR1f6CMLKF8gVbebmkUN3fa/kQJpQ==} engines: {node: '>= 12.0.0'} cpu: [arm64] os: [linux] @@ -6554,8 +6641,8 @@ packages: cpu: [arm64] os: [linux] - lightningcss-linux-arm64-musl@1.31.1: - resolution: {integrity: sha512-mVZ7Pg2zIbe3XlNbZJdjs86YViQFoJSpc41CbVmKBPiGmC4YrfeOyz65ms2qpAobVd7WQsbW4PdsSJEMymyIMg==} + lightningcss-linux-arm64-musl@1.32.0: + resolution: {integrity: sha512-UpQkoenr4UJEzgVIYpI80lDFvRmPVg6oqboNHfoH4CQIfNA+HOrZ7Mo7KZP02dC6LjghPQJeBsvXhJod/wnIBg==} engines: {node: '>= 12.0.0'} cpu: [arm64] os: [linux] @@ -6566,8 +6653,8 @@ packages: cpu: [x64] os: [linux] - lightningcss-linux-x64-gnu@1.31.1: - resolution: {integrity: sha512-xGlFWRMl+0KvUhgySdIaReQdB4FNudfUTARn7q0hh/V67PVGCs3ADFjw+6++kG1RNd0zdGRlEKa+T13/tQjPMA==} + lightningcss-linux-x64-gnu@1.32.0: + resolution: {integrity: sha512-V7Qr52IhZmdKPVr+Vtw8o+WLsQJYCTd8loIfpDaMRWGUZfBOYEJeyJIkqGIDMZPwPx24pUMfwSxxI8phr/MbOA==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [linux] @@ -6578,8 +6665,8 @@ packages: cpu: [x64] os: [linux] - lightningcss-linux-x64-musl@1.31.1: - resolution: {integrity: sha512-eowF8PrKHw9LpoZii5tdZwnBcYDxRw2rRCyvAXLi34iyeYfqCQNA9rmUM0ce62NlPhCvof1+9ivRaTY6pSKDaA==} + lightningcss-linux-x64-musl@1.32.0: + resolution: {integrity: sha512-bYcLp+Vb0awsiXg/80uCRezCYHNg1/l3mt0gzHnWV9XP1W5sKa5/TCdGWaR/zBM2PeF/HbsQv/j2URNOiVuxWg==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [linux] @@ -6590,8 +6677,8 @@ packages: cpu: [arm64] os: [win32] - lightningcss-win32-arm64-msvc@1.31.1: - resolution: {integrity: sha512-aJReEbSEQzx1uBlQizAOBSjcmr9dCdL3XuC/6HLXAxmtErsj2ICo5yYggg1qOODQMtnjNQv2UHb9NpOuFtYe4w==} + lightningcss-win32-arm64-msvc@1.32.0: + resolution: {integrity: sha512-8SbC8BR40pS6baCM8sbtYDSwEVQd4JlFTOlaD3gWGHfThTcABnNDBda6eTZeqbofalIJhFx0qKzgHJmcPTnGdw==} engines: {node: '>= 12.0.0'} cpu: [arm64] os: [win32] @@ -6602,8 +6689,8 @@ packages: cpu: [x64] os: [win32] - lightningcss-win32-x64-msvc@1.31.1: - resolution: {integrity: sha512-I9aiFrbd7oYHwlnQDqr1Roz+fTz61oDDJX7n9tYF9FJymH1cIN1DtKw3iYt6b8WZgEjoNwVSncwF4wx/ZedMhw==} + lightningcss-win32-x64-msvc@1.32.0: + resolution: {integrity: sha512-Amq9B/SoZYdDi1kFrojnoqPLxYhQ4Wo5XiL8EVJrVsB8ARoC1PWW6VGtT0WKCemjy8aC+louJnjS7U18x3b06Q==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [win32] @@ -6612,8 +6699,8 @@ packages: resolution: {integrity: sha512-utfs7Pr5uJyyvDETitgsaqSyjCb2qNRAtuqUeWIAKztsOYdcACf2KtARYXg2pSvhkt+9NfoaNY7fxjl6nuMjIQ==} engines: {node: '>= 12.0.0'} - lightningcss@1.31.1: - resolution: {integrity: sha512-l51N2r93WmGUye3WuFoN5k10zyvrVs0qfKBhyC5ogUQ6Ew6JUSswh78mbSO+IU3nTWsyOArqPCcShdQSadghBQ==} + lightningcss@1.32.0: + resolution: {integrity: sha512-NXYBzinNrblfraPGyrbPoD19C1h9lfI/1mzgWYvXUTe414Gz/X1FD2XBZSZM7rRTrMA8JL3OtAaGifrIKhQ5yQ==} engines: {node: '>= 12.0.0'} lilconfig@3.1.3: @@ -7075,11 +7162,6 @@ packages: node-addon-api@7.1.1: resolution: {integrity: sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==} - node-domexception@1.0.0: - resolution: {integrity: sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==} - engines: {node: '>=10.5.0'} - deprecated: Use your platform's native DOMException instead - node-exports-info@1.6.0: resolution: {integrity: sha512-pyFS63ptit/P5WqUkt+UUfe+4oevH+bFeIiPPdfb0pFeYEu/1ELnJu5l+5EcTKYL5M7zaAa7S8ddywgXypqKCw==} engines: {node: '>= 0.4'} @@ -7093,10 +7175,6 @@ packages: encoding: optional: true - node-fetch@3.3.2: - resolution: {integrity: sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - node-int64@0.4.0: resolution: {integrity: sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==} @@ -7265,9 +7343,6 @@ packages: package-manager-detector@0.2.11: resolution: {integrity: sha512-BEnLolu+yuz22S56CU1SUKq3XC3PkwD5wv4ikR4MfGvnRVcmzXR9DwSlW2fEamyTPyXHomBJRzgapeuBvRNzJQ==} - package-manager-detector@1.6.0: - resolution: {integrity: sha512-61A5ThoTiDG/C8s8UMZwSorAGwMJ0ERVGj2OjoW5pAalsNOg15+iQiPzrLJ4jhZ1HJzmC2PIHT2oEiH3R5fzNA==} - pako@2.1.0: resolution: {integrity: sha512-w+eufiZ1WuJYgPXbV/PO3NCMEc3xqylkKHzp8bxp1uW4qaSNQUkwmLLEc3kKsfz8lpV1F8Ht3U1Cm+9Srog2ug==} @@ -7962,8 +8037,9 @@ packages: setprototypeof@1.2.0: resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} - shadcn@3.8.5: - resolution: {integrity: sha512-jPRx44e+eyeV7xwY3BLJXcfrks00+M0h5BGB9l6DdcBW4BpAj4x3lVmVy0TXPEs2iHEisxejr62sZAAw6B1EVA==} + shadcn@4.13.0: + resolution: {integrity: sha512-5fuJ4jI/GcPeA/iTL4cJivCZuYQGXz/N3bIzyd+Gd/FM6xUCy2MxGG+LaDQuw2cjNy9zGPSFPTEmI048UwPTZA==} + engines: {node: '>=20.18.1'} hasBin: true sharp@0.34.5: @@ -8266,6 +8342,9 @@ packages: tailwindcss@4.1.17: resolution: {integrity: sha512-j9Ee2YjuQqYT9bbRTfTZht9W/ytp5H+jJpZKiYdP/bpnXARAuELt9ofP0lPnmHjbga7SNQIxdTAXCmtKVYjN+Q==} + tailwindcss@4.3.2: + resolution: {integrity: sha512-WtctNNSH8A9jlMIqxzuYumOHU5uGZyRv0Q5svQl+oEPy5w84YpBxdb7MdqyiSPQge5jTJ6zFQLq0PFygdccSBA==} + tapable@1.1.3: resolution: {integrity: sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==} engines: {node: '>=6'} @@ -8611,6 +8690,10 @@ packages: undici-types@7.24.6: resolution: {integrity: sha512-WRNW+sJgj5OBN4/0JpHFqtqzhpbnV0GuB+OozA9gCL7a993SmU+1JBZCzLNxYsbMfIeDL+lTsphD5jN5N+n0zg==} + undici@7.28.0: + resolution: {integrity: sha512-cRZYrTDwWznlnRiPjggAGxZXanty6M8RV1ff8Wm4LWXBp7/IG8v5DnOm74DtUBp9OONpK75YlPnIjQqX0dBDtA==} + engines: {node: '>=20.18.1'} + unicorn-magic@0.1.0: resolution: {integrity: sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ==} engines: {node: '>=18'} @@ -8691,11 +8774,6 @@ packages: '@types/react': optional: true - use-stick-to-bottom@1.1.6: - resolution: {integrity: sha512-z3Up8jYQGTkUCsGBnwg6/wj70KgXoW5Kz1AAc1j8MtQuYMBo6ZsdhrIXoegxa7gaMMilgQYyTohTrt3p94jHog==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 - use-sync-external-store@1.6.0: resolution: {integrity: sha512-Pp6GSwGP/NrPIrxVFAIkOQeyw8lFenOHijQWkUTrDvrF4ALqylP2C/KCkeS9dpUM3KvYRQhna5vt7IL95+ZQ9w==} peerDependencies: @@ -8842,10 +8920,6 @@ packages: web-namespaces@2.0.1: resolution: {integrity: sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ==} - web-streams-polyfill@3.3.3: - resolution: {integrity: sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==} - engines: {node: '>= 8'} - webidl-conversions@3.0.1: resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} @@ -9050,13 +9124,6 @@ snapshots: '@jridgewell/gen-mapping': 0.3.13 '@jridgewell/trace-mapping': 0.3.31 - '@antfu/ni@25.0.0': - dependencies: - ansis: 4.2.0 - fzf: 0.5.2 - package-manager-detector: 1.6.0 - tinyexec: 1.0.2 - '@asamuzakjp/css-color@2.8.3': dependencies: '@csstools/css-calc': 2.1.1(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) @@ -9762,9 +9829,9 @@ snapshots: eslint: 8.57.1 eslint-visitor-keys: 3.4.3 - '@eslint-community/eslint-utils@4.9.1(eslint@9.39.3(jiti@2.6.1))': + '@eslint-community/eslint-utils@4.9.1(eslint@9.39.3(jiti@2.7.0))': dependencies: - eslint: 9.39.3(jiti@2.6.1) + eslint: 9.39.3(jiti@2.7.0) eslint-visitor-keys: 3.4.3 '@eslint-community/regexpp@4.12.2': {} @@ -9968,7 +10035,8 @@ snapshots: '@img/sharp-win32-x64@0.34.5': optional: true - '@inquirer/ansi@1.0.2': {} + '@inquirer/ansi@1.0.2': + optional: true '@inquirer/confirm@5.1.21(@types/node@22.19.1)': dependencies: @@ -9976,6 +10044,7 @@ snapshots: '@inquirer/type': 3.0.10(@types/node@22.19.1) optionalDependencies: '@types/node': 22.19.1 + optional: true '@inquirer/confirm@5.1.21(@types/node@24.7.0)': dependencies: @@ -10005,6 +10074,7 @@ snapshots: yoctocolors-cjs: 2.1.3 optionalDependencies: '@types/node': 22.19.1 + optional: true '@inquirer/core@10.3.2(@types/node@24.7.0)': dependencies: @@ -10041,11 +10111,13 @@ snapshots: optionalDependencies: '@types/node': 25.9.3 - '@inquirer/figures@1.0.15': {} + '@inquirer/figures@1.0.15': + optional: true '@inquirer/type@3.0.10(@types/node@22.19.1)': optionalDependencies: '@types/node': 22.19.1 + optional: true '@inquirer/type@3.0.10(@types/node@24.7.0)': optionalDependencies: @@ -10287,11 +10359,11 @@ snapshots: '@types/yargs': 17.0.35 chalk: 4.1.2 - '@joshwooding/vite-plugin-react-docgen-typescript@0.6.4(typescript@5.8.2)(vite@7.3.5(@types/node@25.9.3)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.84.0)(terser@5.48.0)(tsx@4.19.2)(yaml@2.4.5))': + '@joshwooding/vite-plugin-react-docgen-typescript@0.6.4(typescript@5.8.2)(vite@7.3.5(@types/node@25.9.3)(jiti@2.7.0)(lightningcss@1.32.0)(sass@1.84.0)(terser@5.48.0)(tsx@4.19.2)(yaml@2.4.5))': dependencies: glob: 13.0.6 react-docgen-typescript: 2.4.0(typescript@5.8.2) - vite: 7.3.5(@types/node@25.9.3)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.84.0)(terser@5.48.0)(tsx@4.19.2)(yaml@2.4.5) + vite: 7.3.5(@types/node@25.9.3)(jiti@2.7.0)(lightningcss@1.32.0)(sass@1.84.0)(terser@5.48.0)(tsx@4.19.2)(yaml@2.4.5) optionalDependencies: typescript: 5.8.2 @@ -10515,6 +10587,7 @@ snapshots: is-node-process: 1.2.0 outvariant: 1.4.3 strict-event-emitter: 0.5.1 + optional: true '@next/env@15.5.19': {} @@ -10572,14 +10645,17 @@ snapshots: '@nolyfill/is-core-module@1.0.39': {} - '@open-draft/deferred-promise@2.2.0': {} + '@open-draft/deferred-promise@2.2.0': + optional: true '@open-draft/logger@0.3.0': dependencies: is-node-process: 1.2.0 outvariant: 1.4.3 + optional: true - '@open-draft/until@2.1.0': {} + '@open-draft/until@2.1.0': + optional: true '@opentelemetry/api@1.9.0': {} @@ -11858,6 +11934,11 @@ snapshots: '@sec-ant/readable-stream@0.4.1': {} + '@shadcn/react@0.2.1(@types/react@19.2.14)(react@19.2.4)': + optionalDependencies: + '@types/react': 19.2.14 + react: 19.2.4 + '@sinclair/typebox@0.27.10': {} '@sinclair/typebox@0.34.48': {} @@ -11878,11 +11959,11 @@ snapshots: dependencies: size-limit: 11.1.6 - '@size-limit/webpack-why@11.1.6(lightningcss@1.31.1)(size-limit@11.1.6)(webpack@5.107.2(lightningcss@1.31.1))': + '@size-limit/webpack-why@11.1.6(lightningcss@1.32.0)(size-limit@11.1.6)(webpack@5.107.2(lightningcss@1.32.0))': dependencies: - '@statoscope/webpack-plugin': 5.28.2(lightningcss@1.31.1)(webpack@5.107.2(lightningcss@1.31.1)) + '@statoscope/webpack-plugin': 5.28.2(lightningcss@1.32.0)(webpack@5.107.2(lightningcss@1.32.0)) size-limit: 11.1.6 - webpack: 5.107.2(lightningcss@1.31.1) + webpack: 5.107.2(lightningcss@1.32.0) transitivePeerDependencies: - '@minify-html/node' - '@swc/core' @@ -11898,11 +11979,11 @@ snapshots: - uglify-js - webpack-cli - '@size-limit/webpack@11.1.6(esbuild@0.27.3)(lightningcss@1.31.1)(postcss@8.5.15)(size-limit@11.1.6)': + '@size-limit/webpack@11.1.6(esbuild@0.27.3)(lightningcss@1.32.0)(postcss@8.5.15)(size-limit@11.1.6)': dependencies: nanoid: 5.0.9 size-limit: 11.1.6 - webpack: 5.107.2(esbuild@0.27.3)(lightningcss@1.31.1)(postcss@8.5.15) + webpack: 5.107.2(esbuild@0.27.3)(lightningcss@1.32.0)(postcss@8.5.15) transitivePeerDependencies: - '@minify-html/node' - '@swc/core' @@ -11918,11 +11999,11 @@ snapshots: - uglify-js - webpack-cli - '@size-limit/webpack@11.1.6(lightningcss@1.31.1)(size-limit@11.1.6)': + '@size-limit/webpack@11.1.6(lightningcss@1.32.0)(size-limit@11.1.6)': dependencies: nanoid: 5.0.9 size-limit: 11.1.6 - webpack: 5.107.2(lightningcss@1.31.1) + webpack: 5.107.2(lightningcss@1.32.0) transitivePeerDependencies: - '@minify-html/node' - '@swc/core' @@ -11990,7 +12071,7 @@ snapshots: dependencies: '@statoscope/stats': 5.28.1 - '@statoscope/webpack-model@5.28.2(lightningcss@1.31.1)': + '@statoscope/webpack-model@5.28.2(lightningcss@1.32.0)': dependencies: '@statoscope/extensions': 5.28.1 '@statoscope/helpers': 5.28.1 @@ -12001,7 +12082,7 @@ snapshots: '@statoscope/stats-extension-stats-validation-result': 5.28.1 '@statoscope/types': 5.28.1 '@types/md5': 2.3.5 - '@types/webpack': 5.28.5(lightningcss@1.31.1) + '@types/webpack': 5.28.5(lightningcss@1.32.0) md5: 2.3.0 transitivePeerDependencies: - '@minify-html/node' @@ -12018,7 +12099,7 @@ snapshots: - uglify-js - webpack-cli - '@statoscope/webpack-plugin@5.28.2(lightningcss@1.31.1)(webpack@5.107.2(lightningcss@1.31.1))': + '@statoscope/webpack-plugin@5.28.2(lightningcss@1.32.0)(webpack@5.107.2(lightningcss@1.32.0))': dependencies: '@discoveryjs/json-ext': 0.5.7 '@statoscope/report-writer': 5.28.1 @@ -12026,14 +12107,14 @@ snapshots: '@statoscope/stats-extension-compressed': 5.28.1 '@statoscope/stats-extension-custom-reports': 5.28.1 '@statoscope/types': 5.28.1 - '@statoscope/webpack-model': 5.28.2(lightningcss@1.31.1) - '@statoscope/webpack-stats-extension-compressed': 5.28.2(lightningcss@1.31.1)(webpack@5.107.2(lightningcss@1.31.1)) - '@statoscope/webpack-stats-extension-package-info': 5.28.2(lightningcss@1.31.1)(webpack@5.107.2(lightningcss@1.31.1)) + '@statoscope/webpack-model': 5.28.2(lightningcss@1.32.0) + '@statoscope/webpack-stats-extension-compressed': 5.28.2(lightningcss@1.32.0)(webpack@5.107.2(lightningcss@1.32.0)) + '@statoscope/webpack-stats-extension-package-info': 5.28.2(lightningcss@1.32.0)(webpack@5.107.2(lightningcss@1.32.0)) '@statoscope/webpack-ui': 5.28.2 '@types/node': 18.19.130 - '@types/webpack': 5.28.5(lightningcss@1.31.1) + '@types/webpack': 5.28.5(lightningcss@1.32.0) open: 8.4.2 - webpack: 5.107.2(lightningcss@1.31.1) + webpack: 5.107.2(lightningcss@1.32.0) transitivePeerDependencies: - '@minify-html/node' - '@swc/core' @@ -12049,13 +12130,13 @@ snapshots: - uglify-js - webpack-cli - '@statoscope/webpack-stats-extension-compressed@5.28.2(lightningcss@1.31.1)(webpack@5.107.2(lightningcss@1.31.1))': + '@statoscope/webpack-stats-extension-compressed@5.28.2(lightningcss@1.32.0)(webpack@5.107.2(lightningcss@1.32.0))': dependencies: '@statoscope/stats': 5.28.1 '@statoscope/stats-extension-compressed': 5.28.1 - '@statoscope/webpack-model': 5.28.2(lightningcss@1.31.1) - '@types/webpack': 5.28.5(lightningcss@1.31.1) - webpack: 5.107.2(lightningcss@1.31.1) + '@statoscope/webpack-model': 5.28.2(lightningcss@1.32.0) + '@types/webpack': 5.28.5(lightningcss@1.32.0) + webpack: 5.107.2(lightningcss@1.32.0) transitivePeerDependencies: - '@minify-html/node' - '@swc/core' @@ -12071,13 +12152,13 @@ snapshots: - uglify-js - webpack-cli - '@statoscope/webpack-stats-extension-package-info@5.28.2(lightningcss@1.31.1)(webpack@5.107.2(lightningcss@1.31.1))': + '@statoscope/webpack-stats-extension-package-info@5.28.2(lightningcss@1.32.0)(webpack@5.107.2(lightningcss@1.32.0))': dependencies: '@statoscope/stats': 5.28.1 '@statoscope/stats-extension-package-info': 5.28.1 - '@statoscope/webpack-model': 5.28.2(lightningcss@1.31.1) - '@types/webpack': 5.28.5(lightningcss@1.31.1) - webpack: 5.107.2(lightningcss@1.31.1) + '@statoscope/webpack-model': 5.28.2(lightningcss@1.32.0) + '@types/webpack': 5.28.5(lightningcss@1.32.0) + webpack: 5.107.2(lightningcss@1.32.0) transitivePeerDependencies: - '@minify-html/node' - '@swc/core' @@ -12098,10 +12179,10 @@ snapshots: '@statoscope/types': 5.28.1 '@types/md5': 2.3.5 - '@storybook/addon-docs@10.1.4(@types/react@19.2.14)(esbuild@0.27.3)(rollup@4.59.0)(storybook@10.1.10(@testing-library/dom@9.3.4)(prettier@3.9.5)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(vite@7.3.5(@types/node@25.9.3)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.84.0)(terser@5.48.0)(tsx@4.19.2)(yaml@2.4.5))(webpack@5.107.2(esbuild@0.27.3)(lightningcss@1.31.1)(postcss@8.5.15))': + '@storybook/addon-docs@10.1.4(@types/react@19.2.14)(esbuild@0.27.3)(rollup@4.59.0)(storybook@10.1.10(@testing-library/dom@9.3.4)(prettier@3.9.5)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(vite@7.3.5(@types/node@25.9.3)(jiti@2.7.0)(lightningcss@1.32.0)(sass@1.84.0)(terser@5.48.0)(tsx@4.19.2)(yaml@2.4.5))(webpack@5.107.2(esbuild@0.27.3)(lightningcss@1.32.0)(postcss@8.5.15))': dependencies: '@mdx-js/react': 3.1.1(@types/react@19.2.14)(react@19.2.4) - '@storybook/csf-plugin': 10.1.4(esbuild@0.27.3)(rollup@4.59.0)(storybook@10.1.10(@testing-library/dom@9.3.4)(prettier@3.9.5)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(vite@7.3.5(@types/node@25.9.3)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.84.0)(terser@5.48.0)(tsx@4.19.2)(yaml@2.4.5))(webpack@5.107.2(esbuild@0.27.3)(lightningcss@1.31.1)(postcss@8.5.15)) + '@storybook/csf-plugin': 10.1.4(esbuild@0.27.3)(rollup@4.59.0)(storybook@10.1.10(@testing-library/dom@9.3.4)(prettier@3.9.5)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(vite@7.3.5(@types/node@25.9.3)(jiti@2.7.0)(lightningcss@1.32.0)(sass@1.84.0)(terser@5.48.0)(tsx@4.19.2)(yaml@2.4.5))(webpack@5.107.2(esbuild@0.27.3)(lightningcss@1.32.0)(postcss@8.5.15)) '@storybook/icons': 2.0.1(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@storybook/react-dom-shim': 10.1.4(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(storybook@10.1.10(@testing-library/dom@9.3.4)(prettier@3.9.5)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)) react: 19.2.4 @@ -12122,48 +12203,48 @@ snapshots: optionalDependencies: react: 19.2.4 - '@storybook/addon-styling-webpack@3.0.0(storybook@10.1.10(@testing-library/dom@9.3.4)(prettier@3.9.5)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(webpack@5.107.2(esbuild@0.27.3)(lightningcss@1.31.1)(postcss@8.5.15))': + '@storybook/addon-styling-webpack@3.0.0(storybook@10.1.10(@testing-library/dom@9.3.4)(prettier@3.9.5)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(webpack@5.107.2(esbuild@0.27.3)(lightningcss@1.32.0)(postcss@8.5.15))': dependencies: storybook: 10.1.10(@testing-library/dom@9.3.4)(prettier@3.9.5)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - webpack: 5.107.2(esbuild@0.27.3)(lightningcss@1.31.1)(postcss@8.5.15) + webpack: 5.107.2(esbuild@0.27.3)(lightningcss@1.32.0)(postcss@8.5.15) '@storybook/addon-themes@10.1.4(storybook@10.1.10(@testing-library/dom@9.3.4)(prettier@3.9.5)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))': dependencies: storybook: 10.1.10(@testing-library/dom@9.3.4)(prettier@3.9.5)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) ts-dedent: 2.2.0 - '@storybook/builder-vite@10.1.11(esbuild@0.27.3)(msw@2.12.3(@types/node@25.9.3)(typescript@5.8.2))(rollup@4.59.0)(storybook@10.1.10(@testing-library/dom@9.3.4)(prettier@3.9.5)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(vite@7.3.5(@types/node@25.9.3)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.84.0)(terser@5.48.0)(tsx@4.19.2)(yaml@2.4.5))(webpack@5.107.2(esbuild@0.27.3)(lightningcss@1.31.1)(postcss@8.5.15))': + '@storybook/builder-vite@10.1.11(esbuild@0.27.3)(msw@2.12.3(@types/node@25.9.3)(typescript@5.8.2))(rollup@4.59.0)(storybook@10.1.10(@testing-library/dom@9.3.4)(prettier@3.9.5)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(vite@7.3.5(@types/node@25.9.3)(jiti@2.7.0)(lightningcss@1.32.0)(sass@1.84.0)(terser@5.48.0)(tsx@4.19.2)(yaml@2.4.5))(webpack@5.107.2(esbuild@0.27.3)(lightningcss@1.32.0)(postcss@8.5.15))': dependencies: - '@storybook/csf-plugin': 10.1.11(esbuild@0.27.3)(rollup@4.59.0)(storybook@10.1.10(@testing-library/dom@9.3.4)(prettier@3.9.5)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(vite@7.3.5(@types/node@25.9.3)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.84.0)(terser@5.48.0)(tsx@4.19.2)(yaml@2.4.5))(webpack@5.107.2(esbuild@0.27.3)(lightningcss@1.31.1)(postcss@8.5.15)) - '@vitest/mocker': 3.2.4(msw@2.12.3(@types/node@25.9.3)(typescript@5.8.2))(vite@7.3.5(@types/node@25.9.3)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.84.0)(terser@5.48.0)(tsx@4.19.2)(yaml@2.4.5)) + '@storybook/csf-plugin': 10.1.11(esbuild@0.27.3)(rollup@4.59.0)(storybook@10.1.10(@testing-library/dom@9.3.4)(prettier@3.9.5)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(vite@7.3.5(@types/node@25.9.3)(jiti@2.7.0)(lightningcss@1.32.0)(sass@1.84.0)(terser@5.48.0)(tsx@4.19.2)(yaml@2.4.5))(webpack@5.107.2(esbuild@0.27.3)(lightningcss@1.32.0)(postcss@8.5.15)) + '@vitest/mocker': 3.2.4(msw@2.12.3(@types/node@25.9.3)(typescript@5.8.2))(vite@7.3.5(@types/node@25.9.3)(jiti@2.7.0)(lightningcss@1.32.0)(sass@1.84.0)(terser@5.48.0)(tsx@4.19.2)(yaml@2.4.5)) storybook: 10.1.10(@testing-library/dom@9.3.4)(prettier@3.9.5)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) ts-dedent: 2.2.0 - vite: 7.3.5(@types/node@25.9.3)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.84.0)(terser@5.48.0)(tsx@4.19.2)(yaml@2.4.5) + vite: 7.3.5(@types/node@25.9.3)(jiti@2.7.0)(lightningcss@1.32.0)(sass@1.84.0)(terser@5.48.0)(tsx@4.19.2)(yaml@2.4.5) transitivePeerDependencies: - esbuild - msw - rollup - webpack - '@storybook/csf-plugin@10.1.11(esbuild@0.27.3)(rollup@4.59.0)(storybook@10.1.10(@testing-library/dom@9.3.4)(prettier@3.9.5)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(vite@7.3.5(@types/node@25.9.3)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.84.0)(terser@5.48.0)(tsx@4.19.2)(yaml@2.4.5))(webpack@5.107.2(esbuild@0.27.3)(lightningcss@1.31.1)(postcss@8.5.15))': + '@storybook/csf-plugin@10.1.11(esbuild@0.27.3)(rollup@4.59.0)(storybook@10.1.10(@testing-library/dom@9.3.4)(prettier@3.9.5)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(vite@7.3.5(@types/node@25.9.3)(jiti@2.7.0)(lightningcss@1.32.0)(sass@1.84.0)(terser@5.48.0)(tsx@4.19.2)(yaml@2.4.5))(webpack@5.107.2(esbuild@0.27.3)(lightningcss@1.32.0)(postcss@8.5.15))': dependencies: storybook: 10.1.10(@testing-library/dom@9.3.4)(prettier@3.9.5)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) unplugin: 2.3.11 optionalDependencies: esbuild: 0.27.3 rollup: 4.59.0 - vite: 7.3.5(@types/node@25.9.3)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.84.0)(terser@5.48.0)(tsx@4.19.2)(yaml@2.4.5) - webpack: 5.107.2(esbuild@0.27.3)(lightningcss@1.31.1)(postcss@8.5.15) + vite: 7.3.5(@types/node@25.9.3)(jiti@2.7.0)(lightningcss@1.32.0)(sass@1.84.0)(terser@5.48.0)(tsx@4.19.2)(yaml@2.4.5) + webpack: 5.107.2(esbuild@0.27.3)(lightningcss@1.32.0)(postcss@8.5.15) - '@storybook/csf-plugin@10.1.4(esbuild@0.27.3)(rollup@4.59.0)(storybook@10.1.10(@testing-library/dom@9.3.4)(prettier@3.9.5)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(vite@7.3.5(@types/node@25.9.3)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.84.0)(terser@5.48.0)(tsx@4.19.2)(yaml@2.4.5))(webpack@5.107.2(esbuild@0.27.3)(lightningcss@1.31.1)(postcss@8.5.15))': + '@storybook/csf-plugin@10.1.4(esbuild@0.27.3)(rollup@4.59.0)(storybook@10.1.10(@testing-library/dom@9.3.4)(prettier@3.9.5)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(vite@7.3.5(@types/node@25.9.3)(jiti@2.7.0)(lightningcss@1.32.0)(sass@1.84.0)(terser@5.48.0)(tsx@4.19.2)(yaml@2.4.5))(webpack@5.107.2(esbuild@0.27.3)(lightningcss@1.32.0)(postcss@8.5.15))': dependencies: storybook: 10.1.10(@testing-library/dom@9.3.4)(prettier@3.9.5)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) unplugin: 2.3.11 optionalDependencies: esbuild: 0.27.3 rollup: 4.59.0 - vite: 7.3.5(@types/node@25.9.3)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.84.0)(terser@5.48.0)(tsx@4.19.2)(yaml@2.4.5) - webpack: 5.107.2(esbuild@0.27.3)(lightningcss@1.31.1)(postcss@8.5.15) + vite: 7.3.5(@types/node@25.9.3)(jiti@2.7.0)(lightningcss@1.32.0)(sass@1.84.0)(terser@5.48.0)(tsx@4.19.2)(yaml@2.4.5) + webpack: 5.107.2(esbuild@0.27.3)(lightningcss@1.32.0)(postcss@8.5.15) '@storybook/global@5.0.0': {} @@ -12184,11 +12265,11 @@ snapshots: react-dom: 19.2.4(react@19.2.4) storybook: 10.1.10(@testing-library/dom@9.3.4)(prettier@3.9.5)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@storybook/react-vite@10.1.11(esbuild@0.27.3)(msw@2.12.3(@types/node@25.9.3)(typescript@5.8.2))(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(rollup@4.59.0)(storybook@10.1.10(@testing-library/dom@9.3.4)(prettier@3.9.5)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(typescript@5.8.2)(vite@7.3.5(@types/node@25.9.3)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.84.0)(terser@5.48.0)(tsx@4.19.2)(yaml@2.4.5))(webpack@5.107.2(esbuild@0.27.3)(lightningcss@1.31.1)(postcss@8.5.15))': + '@storybook/react-vite@10.1.11(esbuild@0.27.3)(msw@2.12.3(@types/node@25.9.3)(typescript@5.8.2))(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(rollup@4.59.0)(storybook@10.1.10(@testing-library/dom@9.3.4)(prettier@3.9.5)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(typescript@5.8.2)(vite@7.3.5(@types/node@25.9.3)(jiti@2.7.0)(lightningcss@1.32.0)(sass@1.84.0)(terser@5.48.0)(tsx@4.19.2)(yaml@2.4.5))(webpack@5.107.2(esbuild@0.27.3)(lightningcss@1.32.0)(postcss@8.5.15))': dependencies: - '@joshwooding/vite-plugin-react-docgen-typescript': 0.6.4(typescript@5.8.2)(vite@7.3.5(@types/node@25.9.3)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.84.0)(terser@5.48.0)(tsx@4.19.2)(yaml@2.4.5)) + '@joshwooding/vite-plugin-react-docgen-typescript': 0.6.4(typescript@5.8.2)(vite@7.3.5(@types/node@25.9.3)(jiti@2.7.0)(lightningcss@1.32.0)(sass@1.84.0)(terser@5.48.0)(tsx@4.19.2)(yaml@2.4.5)) '@rollup/pluginutils': 5.3.0(rollup@4.59.0) - '@storybook/builder-vite': 10.1.11(esbuild@0.27.3)(msw@2.12.3(@types/node@25.9.3)(typescript@5.8.2))(rollup@4.59.0)(storybook@10.1.10(@testing-library/dom@9.3.4)(prettier@3.9.5)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(vite@7.3.5(@types/node@25.9.3)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.84.0)(terser@5.48.0)(tsx@4.19.2)(yaml@2.4.5))(webpack@5.107.2(esbuild@0.27.3)(lightningcss@1.31.1)(postcss@8.5.15)) + '@storybook/builder-vite': 10.1.11(esbuild@0.27.3)(msw@2.12.3(@types/node@25.9.3)(typescript@5.8.2))(rollup@4.59.0)(storybook@10.1.10(@testing-library/dom@9.3.4)(prettier@3.9.5)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(vite@7.3.5(@types/node@25.9.3)(jiti@2.7.0)(lightningcss@1.32.0)(sass@1.84.0)(terser@5.48.0)(tsx@4.19.2)(yaml@2.4.5))(webpack@5.107.2(esbuild@0.27.3)(lightningcss@1.32.0)(postcss@8.5.15)) '@storybook/react': 10.1.11(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(storybook@10.1.10(@testing-library/dom@9.3.4)(prettier@3.9.5)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(typescript@5.8.2) empathic: 2.0.0 magic-string: 0.30.21 @@ -12198,7 +12279,7 @@ snapshots: resolve: 1.22.11 storybook: 10.1.10(@testing-library/dom@9.3.4)(prettier@3.9.5)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) tsconfig-paths: 4.2.0 - vite: 7.3.5(@types/node@25.9.3)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.84.0)(terser@5.48.0)(tsx@4.19.2)(yaml@2.4.5) + vite: 7.3.5(@types/node@25.9.3)(jiti@2.7.0)(lightningcss@1.32.0)(sass@1.84.0)(terser@5.48.0)(tsx@4.19.2)(yaml@2.4.5) transitivePeerDependencies: - esbuild - msw @@ -12341,42 +12422,88 @@ snapshots: source-map-js: 1.2.1 tailwindcss: 4.1.17 + '@tailwindcss/node@4.3.2': + dependencies: + '@jridgewell/remapping': 2.3.5 + enhanced-resolve: 5.21.6 + jiti: 2.7.0 + lightningcss: 1.32.0 + magic-string: 0.30.21 + source-map-js: 1.2.1 + tailwindcss: 4.3.2 + '@tailwindcss/oxide-android-arm64@4.1.17': optional: true + '@tailwindcss/oxide-android-arm64@4.3.2': + optional: true + '@tailwindcss/oxide-darwin-arm64@4.1.17': optional: true + '@tailwindcss/oxide-darwin-arm64@4.3.2': + optional: true + '@tailwindcss/oxide-darwin-x64@4.1.17': optional: true + '@tailwindcss/oxide-darwin-x64@4.3.2': + optional: true + '@tailwindcss/oxide-freebsd-x64@4.1.17': optional: true + '@tailwindcss/oxide-freebsd-x64@4.3.2': + optional: true + '@tailwindcss/oxide-linux-arm-gnueabihf@4.1.17': optional: true + '@tailwindcss/oxide-linux-arm-gnueabihf@4.3.2': + optional: true + '@tailwindcss/oxide-linux-arm64-gnu@4.1.17': optional: true + '@tailwindcss/oxide-linux-arm64-gnu@4.3.2': + optional: true + '@tailwindcss/oxide-linux-arm64-musl@4.1.17': optional: true + '@tailwindcss/oxide-linux-arm64-musl@4.3.2': + optional: true + '@tailwindcss/oxide-linux-x64-gnu@4.1.17': optional: true + '@tailwindcss/oxide-linux-x64-gnu@4.3.2': + optional: true + '@tailwindcss/oxide-linux-x64-musl@4.1.17': optional: true + '@tailwindcss/oxide-linux-x64-musl@4.3.2': + optional: true + '@tailwindcss/oxide-wasm32-wasi@4.1.17': optional: true + '@tailwindcss/oxide-wasm32-wasi@4.3.2': + optional: true + '@tailwindcss/oxide-win32-arm64-msvc@4.1.17': optional: true + '@tailwindcss/oxide-win32-arm64-msvc@4.3.2': + optional: true + '@tailwindcss/oxide-win32-x64-msvc@4.1.17': optional: true + '@tailwindcss/oxide-win32-x64-msvc@4.3.2': + optional: true + '@tailwindcss/oxide@4.1.17': optionalDependencies: '@tailwindcss/oxide-android-arm64': 4.1.17 @@ -12392,6 +12519,21 @@ snapshots: '@tailwindcss/oxide-win32-arm64-msvc': 4.1.17 '@tailwindcss/oxide-win32-x64-msvc': 4.1.17 + '@tailwindcss/oxide@4.3.2': + optionalDependencies: + '@tailwindcss/oxide-android-arm64': 4.3.2 + '@tailwindcss/oxide-darwin-arm64': 4.3.2 + '@tailwindcss/oxide-darwin-x64': 4.3.2 + '@tailwindcss/oxide-freebsd-x64': 4.3.2 + '@tailwindcss/oxide-linux-arm-gnueabihf': 4.3.2 + '@tailwindcss/oxide-linux-arm64-gnu': 4.3.2 + '@tailwindcss/oxide-linux-arm64-musl': 4.3.2 + '@tailwindcss/oxide-linux-x64-gnu': 4.3.2 + '@tailwindcss/oxide-linux-x64-musl': 4.3.2 + '@tailwindcss/oxide-wasm32-wasi': 4.3.2 + '@tailwindcss/oxide-win32-arm64-msvc': 4.3.2 + '@tailwindcss/oxide-win32-x64-msvc': 4.3.2 + '@tailwindcss/postcss@4.1.17': dependencies: '@alloc/quick-lru': 5.2.0 @@ -12400,12 +12542,20 @@ snapshots: postcss: 8.5.15 tailwindcss: 4.1.17 - '@tailwindcss/vite@4.1.17(vite@7.3.5(@types/node@25.9.3)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.84.0)(terser@5.48.0)(tsx@4.19.2)(yaml@2.4.5))': + '@tailwindcss/postcss@4.3.2': dependencies: - '@tailwindcss/node': 4.1.17 - '@tailwindcss/oxide': 4.1.17 - tailwindcss: 4.1.17 - vite: 7.3.5(@types/node@25.9.3)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.84.0)(terser@5.48.0)(tsx@4.19.2)(yaml@2.4.5) + '@alloc/quick-lru': 5.2.0 + '@tailwindcss/node': 4.3.2 + '@tailwindcss/oxide': 4.3.2 + postcss: 8.5.15 + tailwindcss: 4.3.2 + + '@tailwindcss/vite@4.3.2(vite@7.3.5(@types/node@25.9.3)(jiti@2.7.0)(lightningcss@1.32.0)(sass@1.84.0)(terser@5.48.0)(tsx@4.19.2)(yaml@2.4.5))': + dependencies: + '@tailwindcss/node': 4.3.2 + '@tailwindcss/oxide': 4.3.2 + tailwindcss: 4.3.2 + vite: 7.3.5(@types/node@25.9.3)(jiti@2.7.0)(lightningcss@1.32.0)(sass@1.84.0)(terser@5.48.0)(tsx@4.19.2)(yaml@2.4.5) '@testing-library/dom@10.1.0': dependencies: @@ -12661,7 +12811,8 @@ snapshots: '@types/stack-utils@2.0.3': {} - '@types/statuses@2.0.6': {} + '@types/statuses@2.0.6': + optional: true '@types/tapable@1.0.6': {} @@ -12671,11 +12822,11 @@ snapshots: '@types/validate-npm-package-name@4.0.2': {} - '@types/webpack@5.28.5(lightningcss@1.31.1)': + '@types/webpack@5.28.5(lightningcss@1.32.0)': dependencies: '@types/node': 24.7.0 tapable: 2.3.3 - webpack: 5.107.2(lightningcss@1.31.1) + webpack: 5.107.2(lightningcss@1.32.0) transitivePeerDependencies: - '@minify-html/node' - '@swc/core' @@ -12733,15 +12884,15 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/eslint-plugin@8.29.0(@typescript-eslint/parser@8.29.0(eslint@9.39.3(jiti@2.6.1))(typescript@5.8.2))(eslint@9.39.3(jiti@2.6.1))(typescript@5.8.2)': + '@typescript-eslint/eslint-plugin@8.29.0(@typescript-eslint/parser@8.29.0(eslint@9.39.3(jiti@2.7.0))(typescript@5.8.2))(eslint@9.39.3(jiti@2.7.0))(typescript@5.8.2)': dependencies: '@eslint-community/regexpp': 4.12.2 - '@typescript-eslint/parser': 8.29.0(eslint@9.39.3(jiti@2.6.1))(typescript@5.8.2) + '@typescript-eslint/parser': 8.29.0(eslint@9.39.3(jiti@2.7.0))(typescript@5.8.2) '@typescript-eslint/scope-manager': 8.29.0 - '@typescript-eslint/type-utils': 8.29.0(eslint@9.39.3(jiti@2.6.1))(typescript@5.8.2) - '@typescript-eslint/utils': 8.29.0(eslint@9.39.3(jiti@2.6.1))(typescript@5.8.2) + '@typescript-eslint/type-utils': 8.29.0(eslint@9.39.3(jiti@2.7.0))(typescript@5.8.2) + '@typescript-eslint/utils': 8.29.0(eslint@9.39.3(jiti@2.7.0))(typescript@5.8.2) '@typescript-eslint/visitor-keys': 8.29.0 - eslint: 9.39.3(jiti@2.6.1) + eslint: 9.39.3(jiti@2.7.0) graphemer: 1.4.0 ignore: 5.3.2 natural-compare: 1.4.0 @@ -12788,14 +12939,14 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.29.0(eslint@9.39.3(jiti@2.6.1))(typescript@5.8.2)': + '@typescript-eslint/parser@8.29.0(eslint@9.39.3(jiti@2.7.0))(typescript@5.8.2)': dependencies: '@typescript-eslint/scope-manager': 8.29.0 '@typescript-eslint/types': 8.29.0 '@typescript-eslint/typescript-estree': 8.29.0(typescript@5.8.2) '@typescript-eslint/visitor-keys': 8.29.0 debug: 4.4.3(supports-color@5.5.0) - eslint: 9.39.3(jiti@2.6.1) + eslint: 9.39.3(jiti@2.7.0) typescript: 5.8.2 transitivePeerDependencies: - supports-color @@ -12849,12 +13000,12 @@ snapshots: - eslint - supports-color - '@typescript-eslint/type-utils@8.29.0(eslint@9.39.3(jiti@2.6.1))(typescript@5.8.2)': + '@typescript-eslint/type-utils@8.29.0(eslint@9.39.3(jiti@2.7.0))(typescript@5.8.2)': dependencies: '@typescript-eslint/typescript-estree': 8.29.0(typescript@5.8.2) - '@typescript-eslint/utils': 8.29.0(eslint@9.39.3(jiti@2.6.1))(typescript@5.8.2) + '@typescript-eslint/utils': 8.29.0(eslint@9.39.3(jiti@2.7.0))(typescript@5.8.2) debug: 4.4.3(supports-color@5.5.0) - eslint: 9.39.3(jiti@2.6.1) + eslint: 9.39.3(jiti@2.7.0) ts-api-utils: 2.1.0(typescript@5.8.2) typescript: 5.8.2 transitivePeerDependencies: @@ -12979,13 +13130,13 @@ snapshots: - supports-color - typescript - '@typescript-eslint/utils@8.29.0(eslint@9.39.3(jiti@2.6.1))(typescript@5.8.2)': + '@typescript-eslint/utils@8.29.0(eslint@9.39.3(jiti@2.7.0))(typescript@5.8.2)': dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.3(jiti@2.6.1)) + '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.3(jiti@2.7.0)) '@typescript-eslint/scope-manager': 8.29.0 '@typescript-eslint/types': 8.29.0 '@typescript-eslint/typescript-estree': 8.29.0(typescript@5.8.2) - eslint: 9.39.3(jiti@2.6.1) + eslint: 9.39.3(jiti@2.7.0) typescript: 5.8.2 transitivePeerDependencies: - supports-color @@ -13019,25 +13170,25 @@ snapshots: '@vercel/oidc@3.1.0': {} - '@vitejs/plugin-react@4.3.4(vite@7.3.5(@types/node@22.19.1)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.84.0)(terser@5.48.0)(tsx@4.19.2)(yaml@2.4.5))': + '@vitejs/plugin-react@4.3.4(vite@7.3.5(@types/node@22.19.1)(jiti@2.7.0)(lightningcss@1.32.0)(sass@1.84.0)(terser@5.48.0)(tsx@4.19.2)(yaml@2.4.5))': dependencies: '@babel/core': 7.29.7 '@babel/plugin-transform-react-jsx-self': 7.25.9(@babel/core@7.29.7) '@babel/plugin-transform-react-jsx-source': 7.25.9(@babel/core@7.29.7) '@types/babel__core': 7.20.5 react-refresh: 0.14.2 - vite: 7.3.5(@types/node@22.19.1)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.84.0)(terser@5.48.0)(tsx@4.19.2)(yaml@2.4.5) + vite: 7.3.5(@types/node@22.19.1)(jiti@2.7.0)(lightningcss@1.32.0)(sass@1.84.0)(terser@5.48.0)(tsx@4.19.2)(yaml@2.4.5) transitivePeerDependencies: - supports-color - '@vitejs/plugin-react@4.3.4(vite@7.3.5(@types/node@24.7.0)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.84.0)(terser@5.48.0)(tsx@4.19.2)(yaml@2.4.5))': + '@vitejs/plugin-react@4.3.4(vite@7.3.5(@types/node@24.7.0)(jiti@2.7.0)(lightningcss@1.32.0)(sass@1.84.0)(terser@5.48.0)(tsx@4.19.2)(yaml@2.4.5))': dependencies: '@babel/core': 7.29.7 '@babel/plugin-transform-react-jsx-self': 7.25.9(@babel/core@7.29.7) '@babel/plugin-transform-react-jsx-source': 7.25.9(@babel/core@7.29.7) '@types/babel__core': 7.20.5 react-refresh: 0.14.2 - vite: 7.3.5(@types/node@24.7.0)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.84.0)(terser@5.48.0)(tsx@4.19.2)(yaml@2.4.5) + vite: 7.3.5(@types/node@24.7.0)(jiti@2.7.0)(lightningcss@1.32.0)(sass@1.84.0)(terser@5.48.0)(tsx@4.19.2)(yaml@2.4.5) transitivePeerDependencies: - supports-color @@ -13056,7 +13207,7 @@ snapshots: std-env: 3.10.0 test-exclude: 7.0.1 tinyrainbow: 2.0.0 - vitest: 4.1.8(@opentelemetry/api@1.9.0)(@types/node@22.19.1)(@vitest/coverage-v8@3.2.4)(jsdom@26.1.0)(msw@2.12.3(@types/node@22.19.1)(typescript@5.8.2))(vite@7.3.5(@types/node@22.19.1)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.84.0)(terser@5.48.0)(tsx@4.19.2)(yaml@2.4.5)) + vitest: 4.1.8(@opentelemetry/api@1.9.0)(@types/node@22.19.1)(@vitest/coverage-v8@3.2.4)(jsdom@26.1.0)(msw@2.12.3(@types/node@22.19.1)(typescript@5.8.2))(vite@7.3.5(@types/node@22.19.1)(jiti@2.7.0)(lightningcss@1.32.0)(sass@1.84.0)(terser@5.48.0)(tsx@4.19.2)(yaml@2.4.5)) transitivePeerDependencies: - supports-color @@ -13077,50 +13228,50 @@ snapshots: chai: 6.2.2 tinyrainbow: 3.1.0 - '@vitest/mocker@3.2.4(msw@2.12.3(@types/node@25.9.3)(typescript@5.8.2))(vite@7.3.5(@types/node@25.9.3)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.84.0)(terser@5.48.0)(tsx@4.19.2)(yaml@2.4.5))': + '@vitest/mocker@3.2.4(msw@2.12.3(@types/node@25.9.3)(typescript@5.8.2))(vite@7.3.5(@types/node@25.9.3)(jiti@2.7.0)(lightningcss@1.32.0)(sass@1.84.0)(terser@5.48.0)(tsx@4.19.2)(yaml@2.4.5))': dependencies: '@vitest/spy': 3.2.4 estree-walker: 3.0.3 magic-string: 0.30.21 optionalDependencies: msw: 2.12.3(@types/node@25.9.3)(typescript@5.8.2) - vite: 7.3.5(@types/node@25.9.3)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.84.0)(terser@5.48.0)(tsx@4.19.2)(yaml@2.4.5) + vite: 7.3.5(@types/node@25.9.3)(jiti@2.7.0)(lightningcss@1.32.0)(sass@1.84.0)(terser@5.48.0)(tsx@4.19.2)(yaml@2.4.5) - '@vitest/mocker@4.1.8(msw@2.12.3(@types/node@22.19.1)(typescript@5.8.2))(vite@7.3.5(@types/node@22.19.1)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.84.0)(terser@5.48.0)(tsx@4.19.2)(yaml@2.4.5))': + '@vitest/mocker@4.1.8(msw@2.12.3(@types/node@22.19.1)(typescript@5.8.2))(vite@7.3.5(@types/node@22.19.1)(jiti@2.7.0)(lightningcss@1.32.0)(sass@1.84.0)(terser@5.48.0)(tsx@4.19.2)(yaml@2.4.5))': dependencies: '@vitest/spy': 4.1.8 estree-walker: 3.0.3 magic-string: 0.30.21 optionalDependencies: msw: 2.12.3(@types/node@22.19.1)(typescript@5.8.2) - vite: 7.3.5(@types/node@22.19.1)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.84.0)(terser@5.48.0)(tsx@4.19.2)(yaml@2.4.5) + vite: 7.3.5(@types/node@22.19.1)(jiti@2.7.0)(lightningcss@1.32.0)(sass@1.84.0)(terser@5.48.0)(tsx@4.19.2)(yaml@2.4.5) - '@vitest/mocker@4.1.8(msw@2.12.3(@types/node@24.7.0)(typescript@5.9.3))(vite@7.3.5(@types/node@24.7.0)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.84.0)(terser@5.48.0)(tsx@4.19.2)(yaml@2.4.5))': + '@vitest/mocker@4.1.8(msw@2.12.3(@types/node@24.7.0)(typescript@5.9.3))(vite@7.3.5(@types/node@24.7.0)(jiti@2.7.0)(lightningcss@1.32.0)(sass@1.84.0)(terser@5.48.0)(tsx@4.19.2)(yaml@2.4.5))': dependencies: '@vitest/spy': 4.1.8 estree-walker: 3.0.3 magic-string: 0.30.21 optionalDependencies: msw: 2.12.3(@types/node@24.7.0)(typescript@5.9.3) - vite: 7.3.5(@types/node@24.7.0)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.84.0)(terser@5.48.0)(tsx@4.19.2)(yaml@2.4.5) + vite: 7.3.5(@types/node@24.7.0)(jiti@2.7.0)(lightningcss@1.32.0)(sass@1.84.0)(terser@5.48.0)(tsx@4.19.2)(yaml@2.4.5) - '@vitest/mocker@4.1.8(msw@2.12.3(@types/node@25.9.3)(typescript@5.8.2))(vite@7.3.5(@types/node@25.9.3)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.84.0)(terser@5.48.0)(tsx@4.19.2)(yaml@2.4.5))': + '@vitest/mocker@4.1.8(msw@2.12.3(@types/node@25.9.3)(typescript@5.8.2))(vite@7.3.5(@types/node@25.9.3)(jiti@2.7.0)(lightningcss@1.32.0)(sass@1.84.0)(terser@5.48.0)(tsx@4.19.2)(yaml@2.4.5))': dependencies: '@vitest/spy': 4.1.8 estree-walker: 3.0.3 magic-string: 0.30.21 optionalDependencies: msw: 2.12.3(@types/node@25.9.3)(typescript@5.8.2) - vite: 7.3.5(@types/node@25.9.3)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.84.0)(terser@5.48.0)(tsx@4.19.2)(yaml@2.4.5) + vite: 7.3.5(@types/node@25.9.3)(jiti@2.7.0)(lightningcss@1.32.0)(sass@1.84.0)(terser@5.48.0)(tsx@4.19.2)(yaml@2.4.5) - '@vitest/mocker@4.1.8(msw@2.12.3(@types/node@25.9.3)(typescript@5.9.3))(vite@7.3.5(@types/node@25.9.3)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.84.0)(terser@5.48.0)(tsx@4.19.2)(yaml@2.4.5))': + '@vitest/mocker@4.1.8(msw@2.12.3(@types/node@25.9.3)(typescript@5.9.3))(vite@7.3.5(@types/node@25.9.3)(jiti@2.7.0)(lightningcss@1.32.0)(sass@1.84.0)(terser@5.48.0)(tsx@4.19.2)(yaml@2.4.5))': dependencies: '@vitest/spy': 4.1.8 estree-walker: 3.0.3 magic-string: 0.30.21 optionalDependencies: msw: 2.12.3(@types/node@25.9.3)(typescript@5.9.3) - vite: 7.3.5(@types/node@25.9.3)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.84.0)(terser@5.48.0)(tsx@4.19.2)(yaml@2.4.5) + vite: 7.3.5(@types/node@25.9.3)(jiti@2.7.0)(lightningcss@1.32.0)(sass@1.84.0)(terser@5.48.0)(tsx@4.19.2)(yaml@2.4.5) '@vitest/pretty-format@3.2.4': dependencies: @@ -13383,8 +13534,6 @@ snapshots: ansi-styles@6.2.3: {} - ansis@4.2.0: {} - any-promise@1.3.0: {} anymatch@3.1.3: @@ -13530,12 +13679,12 @@ snapshots: transitivePeerDependencies: - supports-color - babel-loader@9.2.1(@babel/core@7.29.7)(webpack@5.107.2(esbuild@0.27.3)(lightningcss@1.31.1)(postcss@8.5.15)): + babel-loader@9.2.1(@babel/core@7.29.7)(webpack@5.107.2(esbuild@0.27.3)(lightningcss@1.32.0)(postcss@8.5.15)): dependencies: '@babel/core': 7.29.7 find-cache-dir: 4.0.0 schema-utils: 4.3.3 - webpack: 5.107.2(esbuild@0.27.3)(lightningcss@1.31.1)(postcss@8.5.15) + webpack: 5.107.2(esbuild@0.27.3)(lightningcss@1.32.0)(postcss@8.5.15) babel-plugin-istanbul@6.1.1: dependencies: @@ -13789,7 +13938,8 @@ snapshots: cli-spinners@2.9.2: {} - cli-width@4.1.0: {} + cli-width@4.1.0: + optional: true client-only@0.0.1: {} @@ -13857,7 +14007,8 @@ snapshots: cookie@0.7.2: {} - cookie@1.1.1: {} + cookie@1.1.1: + optional: true cors@2.8.6: dependencies: @@ -13934,8 +14085,6 @@ snapshots: dashify@2.0.0: {} - data-uri-to-buffer@4.0.1: {} - data-urls@5.0.0: dependencies: whatwg-mimetype: 4.0.0 @@ -14134,6 +14283,11 @@ snapshots: encodeurl@2.0.0: {} + enhanced-resolve@5.21.6: + dependencies: + graceful-fs: 4.2.11 + tapable: 2.3.3 + enhanced-resolve@5.24.0: dependencies: graceful-fs: 4.2.11 @@ -14375,7 +14529,7 @@ snapshots: eslint: 8.57.1 eslint-import-resolver-node: 0.3.9 eslint-import-resolver-typescript: 2.7.1(eslint-plugin-import@2.32.0)(eslint@8.57.1) - eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.29.0(eslint@9.39.3(jiti@2.6.1))(typescript@5.8.2))(eslint@8.57.1) + eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.29.0(eslint@9.39.3(jiti@2.7.0))(typescript@5.8.2))(eslint@8.57.1) eslint-plugin-jsx-a11y: 6.10.2(eslint@8.57.1) eslint-plugin-react: 7.37.4(eslint@8.57.1) eslint-plugin-react-hooks: 4.6.2(eslint@8.57.1) @@ -14440,7 +14594,7 @@ snapshots: dependencies: debug: 4.4.3(supports-color@5.5.0) eslint: 8.57.1 - eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.29.0(eslint@9.39.3(jiti@2.6.1))(typescript@5.8.2))(eslint@8.57.1) + eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.29.0(eslint@9.39.3(jiti@2.7.0))(typescript@5.8.2))(eslint@8.57.1) glob: 7.2.3 is-glob: 4.0.3 resolve: 1.22.11 @@ -14475,11 +14629,11 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-module-utils@2.12.1(@typescript-eslint/parser@8.29.0(eslint@9.39.3(jiti@2.6.1))(typescript@5.8.2))(eslint-import-resolver-node@0.3.9)(eslint@8.57.1): + eslint-module-utils@2.12.1(@typescript-eslint/parser@8.29.0(eslint@9.39.3(jiti@2.7.0))(typescript@5.8.2))(eslint-import-resolver-node@0.3.9)(eslint@8.57.1): dependencies: debug: 3.2.7 optionalDependencies: - '@typescript-eslint/parser': 8.29.0(eslint@9.39.3(jiti@2.6.1))(typescript@5.8.2) + '@typescript-eslint/parser': 8.29.0(eslint@9.39.3(jiti@2.7.0))(typescript@5.8.2) eslint: 8.57.1 eslint-import-resolver-node: 0.3.9 transitivePeerDependencies: @@ -14550,7 +14704,7 @@ snapshots: - eslint-import-resolver-webpack - supports-color - eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.29.0(eslint@9.39.3(jiti@2.6.1))(typescript@5.8.2))(eslint@8.57.1): + eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.29.0(eslint@9.39.3(jiti@2.7.0))(typescript@5.8.2))(eslint@8.57.1): dependencies: '@rtsao/scc': 1.1.0 array-includes: 3.1.9 @@ -14561,7 +14715,7 @@ snapshots: doctrine: 2.1.0 eslint: 8.57.1 eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.29.0(eslint@9.39.3(jiti@2.6.1))(typescript@5.8.2))(eslint-import-resolver-node@0.3.9)(eslint@8.57.1) + eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.29.0(eslint@9.39.3(jiti@2.7.0))(typescript@5.8.2))(eslint-import-resolver-node@0.3.9)(eslint@8.57.1) hasown: 2.0.2 is-core-module: 2.16.1 is-glob: 4.0.3 @@ -14573,7 +14727,7 @@ snapshots: string.prototype.trimend: 1.0.9 tsconfig-paths: 3.15.0 optionalDependencies: - '@typescript-eslint/parser': 8.29.0(eslint@9.39.3(jiti@2.6.1))(typescript@5.8.2) + '@typescript-eslint/parser': 8.29.0(eslint@9.39.3(jiti@2.7.0))(typescript@5.8.2) transitivePeerDependencies: - eslint-import-resolver-typescript - eslint-import-resolver-webpack @@ -14683,10 +14837,10 @@ snapshots: dependencies: eslint: 8.57.1 - eslint-plugin-storybook@10.1.4(eslint@9.39.3(jiti@2.6.1))(storybook@10.1.10(@testing-library/dom@9.3.4)(prettier@3.9.5)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(typescript@5.8.2): + eslint-plugin-storybook@10.1.4(eslint@9.39.3(jiti@2.7.0))(storybook@10.1.10(@testing-library/dom@9.3.4)(prettier@3.9.5)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(typescript@5.8.2): dependencies: - '@typescript-eslint/utils': 8.29.0(eslint@9.39.3(jiti@2.6.1))(typescript@5.8.2) - eslint: 9.39.3(jiti@2.6.1) + '@typescript-eslint/utils': 8.29.0(eslint@9.39.3(jiti@2.7.0))(typescript@5.8.2) + eslint: 9.39.3(jiti@2.7.0) storybook: 10.1.10(@testing-library/dom@9.3.4)(prettier@3.9.5)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) transitivePeerDependencies: - supports-color @@ -14765,9 +14919,9 @@ snapshots: transitivePeerDependencies: - supports-color - eslint@9.39.3(jiti@2.6.1): + eslint@9.39.3(jiti@2.7.0): dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.3(jiti@2.6.1)) + '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.3(jiti@2.7.0)) '@eslint-community/regexpp': 4.12.2 '@eslint/config-array': 0.21.2 '@eslint/config-helpers': 0.4.2 @@ -14802,7 +14956,7 @@ snapshots: natural-compare: 1.4.0 optionator: 0.9.4 optionalDependencies: - jiti: 2.6.1 + jiti: 2.7.0 transitivePeerDependencies: - supports-color @@ -14984,11 +15138,6 @@ snapshots: optionalDependencies: picomatch: 4.0.4 - fetch-blob@3.2.0: - dependencies: - node-domexception: 1.0.0 - web-streams-polyfill: 3.3.3 - figures@6.1.0: dependencies: is-unicode-supported: 2.1.0 @@ -15064,10 +15213,6 @@ snapshots: cross-spawn: 7.0.6 signal-exit: 4.1.0 - formdata-polyfill@4.0.10: - dependencies: - fetch-blob: 3.2.0 - forwarded@0.2.0: {} fraction.js@5.3.4: {} @@ -15121,8 +15266,6 @@ snapshots: fuzzysort@3.1.0: {} - fzf@0.5.2: {} - generic-names@4.0.0: dependencies: loader-utils: 3.3.1 @@ -15277,7 +15420,8 @@ snapshots: graphemer@1.4.0: {} - graphql@16.12.0: {} + graphql@16.12.0: + optional: true gzip-size@6.0.0: dependencies: @@ -15393,7 +15537,8 @@ snapshots: capital-case: 1.0.4 tslib: 2.8.1 - headers-polyfill@4.0.3: {} + headers-polyfill@4.0.3: + optional: true hono@4.12.25: {} @@ -15592,7 +15737,8 @@ snapshots: is-negative-zero@2.0.3: {} - is-node-process@1.2.0: {} + is-node-process@1.2.0: + optional: true is-number-object@1.1.1: dependencies: @@ -16151,6 +16297,8 @@ snapshots: jiti@2.6.1: {} + jiti@2.7.0: {} + jju@1.4.0: {} jora@1.0.0-beta.8: @@ -16276,67 +16424,67 @@ snapshots: lightningcss-android-arm64@1.30.2: optional: true - lightningcss-android-arm64@1.31.1: + lightningcss-android-arm64@1.32.0: optional: true lightningcss-darwin-arm64@1.30.2: optional: true - lightningcss-darwin-arm64@1.31.1: + lightningcss-darwin-arm64@1.32.0: optional: true lightningcss-darwin-x64@1.30.2: optional: true - lightningcss-darwin-x64@1.31.1: + lightningcss-darwin-x64@1.32.0: optional: true lightningcss-freebsd-x64@1.30.2: optional: true - lightningcss-freebsd-x64@1.31.1: + lightningcss-freebsd-x64@1.32.0: optional: true lightningcss-linux-arm-gnueabihf@1.30.2: optional: true - lightningcss-linux-arm-gnueabihf@1.31.1: + lightningcss-linux-arm-gnueabihf@1.32.0: optional: true lightningcss-linux-arm64-gnu@1.30.2: optional: true - lightningcss-linux-arm64-gnu@1.31.1: + lightningcss-linux-arm64-gnu@1.32.0: optional: true lightningcss-linux-arm64-musl@1.30.2: optional: true - lightningcss-linux-arm64-musl@1.31.1: + lightningcss-linux-arm64-musl@1.32.0: optional: true lightningcss-linux-x64-gnu@1.30.2: optional: true - lightningcss-linux-x64-gnu@1.31.1: + lightningcss-linux-x64-gnu@1.32.0: optional: true lightningcss-linux-x64-musl@1.30.2: optional: true - lightningcss-linux-x64-musl@1.31.1: + lightningcss-linux-x64-musl@1.32.0: optional: true lightningcss-win32-arm64-msvc@1.30.2: optional: true - lightningcss-win32-arm64-msvc@1.31.1: + lightningcss-win32-arm64-msvc@1.32.0: optional: true lightningcss-win32-x64-msvc@1.30.2: optional: true - lightningcss-win32-x64-msvc@1.31.1: + lightningcss-win32-x64-msvc@1.32.0: optional: true lightningcss@1.30.2: @@ -16355,22 +16503,21 @@ snapshots: lightningcss-win32-arm64-msvc: 1.30.2 lightningcss-win32-x64-msvc: 1.30.2 - lightningcss@1.31.1: + lightningcss@1.32.0: dependencies: detect-libc: 2.1.2 optionalDependencies: - lightningcss-android-arm64: 1.31.1 - lightningcss-darwin-arm64: 1.31.1 - lightningcss-darwin-x64: 1.31.1 - lightningcss-freebsd-x64: 1.31.1 - lightningcss-linux-arm-gnueabihf: 1.31.1 - lightningcss-linux-arm64-gnu: 1.31.1 - lightningcss-linux-arm64-musl: 1.31.1 - lightningcss-linux-x64-gnu: 1.31.1 - lightningcss-linux-x64-musl: 1.31.1 - lightningcss-win32-arm64-msvc: 1.31.1 - lightningcss-win32-x64-msvc: 1.31.1 - optional: true + lightningcss-android-arm64: 1.32.0 + lightningcss-darwin-arm64: 1.32.0 + lightningcss-darwin-x64: 1.32.0 + lightningcss-freebsd-x64: 1.32.0 + lightningcss-linux-arm-gnueabihf: 1.32.0 + lightningcss-linux-arm64-gnu: 1.32.0 + lightningcss-linux-arm64-musl: 1.32.0 + lightningcss-linux-x64-gnu: 1.32.0 + lightningcss-linux-x64-musl: 1.32.0 + lightningcss-win32-arm64-msvc: 1.32.0 + lightningcss-win32-x64-msvc: 1.32.0 lilconfig@3.1.3: {} @@ -16959,6 +17106,7 @@ snapshots: typescript: 5.8.2 transitivePeerDependencies: - '@types/node' + optional: true msw@2.12.3(@types/node@24.7.0)(typescript@5.9.3): dependencies: @@ -17040,7 +17188,8 @@ snapshots: muggle-string@0.4.1: {} - mute-stream@2.0.0: {} + mute-stream@2.0.0: + optional: true mz@2.7.0: dependencies: @@ -17100,8 +17249,6 @@ snapshots: node-addon-api@7.1.1: optional: true - node-domexception@1.0.0: {} - node-exports-info@1.6.0: dependencies: array.prototype.flatmap: 1.3.3 @@ -17113,12 +17260,6 @@ snapshots: dependencies: whatwg-url: 5.0.0 - node-fetch@3.3.2: - dependencies: - data-uri-to-buffer: 4.0.1 - fetch-blob: 3.2.0 - formdata-polyfill: 4.0.10 - node-int64@0.4.0: {} node-releases@2.0.48: {} @@ -17273,7 +17414,8 @@ snapshots: outdent@0.5.0: {} - outvariant@1.4.3: {} + outvariant@1.4.3: + optional: true own-keys@1.0.1: dependencies: @@ -17319,8 +17461,6 @@ snapshots: dependencies: quansync: 0.2.11 - package-manager-detector@1.6.0: {} - pako@2.1.0: {} param-case@3.0.4: @@ -17397,7 +17537,8 @@ snapshots: lru-cache: 11.2.6 minipass: 7.1.3 - path-to-regexp@6.3.0: {} + path-to-regexp@6.3.0: + optional: true path-to-regexp@8.4.2: {} @@ -17441,7 +17582,7 @@ snapshots: possible-typed-array-names@1.1.0: {} - postcss-cli@11.0.0(jiti@2.6.1)(postcss@8.5.15): + postcss-cli@11.0.0(jiti@2.7.0)(postcss@8.5.15): dependencies: chokidar: 3.6.0 dependency-graph: 0.11.0 @@ -17450,7 +17591,7 @@ snapshots: globby: 14.0.1 picocolors: 1.1.1 postcss: 8.5.15 - postcss-load-config: 5.0.2(jiti@2.6.1)(postcss@8.5.15) + postcss-load-config: 5.0.2(jiti@2.7.0)(postcss@8.5.15) postcss-reporter: 7.0.5(postcss@8.5.15) pretty-hrtime: 1.0.3 read-cache: 1.0.0 @@ -17459,19 +17600,19 @@ snapshots: transitivePeerDependencies: - jiti - postcss-load-config@5.0.2(jiti@2.6.1)(postcss@8.5.15): + postcss-load-config@5.0.2(jiti@2.7.0)(postcss@8.5.15): dependencies: lilconfig: 3.1.3 yaml: 2.4.5 optionalDependencies: - jiti: 2.6.1 + jiti: 2.7.0 postcss: 8.5.15 - postcss-load-config@6.0.1(jiti@2.6.1)(postcss@8.5.15)(tsx@4.19.2)(yaml@2.4.5): + postcss-load-config@6.0.1(jiti@2.7.0)(postcss@8.5.15)(tsx@4.19.2)(yaml@2.4.5): dependencies: lilconfig: 3.1.3 optionalDependencies: - jiti: 2.6.1 + jiti: 2.7.0 postcss: 8.5.15 tsx: 4.19.2 yaml: 2.4.5 @@ -17899,7 +18040,8 @@ snapshots: onetime: 7.0.0 signal-exit: 4.1.0 - rettime@0.7.0: {} + rettime@0.7.0: + optional: true reusify@1.0.4: {} @@ -18082,9 +18224,8 @@ snapshots: setprototypeof@1.2.0: {} - shadcn@3.8.5(@types/node@22.19.1)(typescript@5.8.2): + shadcn@4.13.0(typescript@5.8.2): dependencies: - '@antfu/ni': 25.0.0 '@babel/core': 7.29.7 '@babel/parser': 7.29.7 '@babel/plugin-transform-typescript': 7.28.5(@babel/core@7.29.7) @@ -18102,10 +18243,7 @@ snapshots: fast-glob: 3.3.3 fs-extra: 11.3.5 fuzzysort: 3.1.0 - https-proxy-agent: 7.0.6 kleur: 4.1.5 - msw: 2.12.3(@types/node@22.19.1)(typescript@5.8.2) - node-fetch: 3.3.2 open: 11.0.0 ora: 8.2.0 postcss: 8.5.15 @@ -18116,12 +18254,12 @@ snapshots: tailwind-merge: 3.5.0 ts-morph: 26.0.0 tsconfig-paths: 4.2.0 + undici: 7.28.0 validate-npm-package-name: 7.0.2 zod: 3.25.76 zod-to-json-schema: 3.25.1(zod@3.25.76) transitivePeerDependencies: - '@cfworker/json-schema' - - '@types/node' - babel-plugin-macros - supports-color - typescript @@ -18325,7 +18463,8 @@ snapshots: transitivePeerDependencies: - supports-color - strict-event-emitter@0.5.1: {} + strict-event-emitter@0.5.1: + optional: true string-argv@0.3.2: {} @@ -18496,39 +18635,42 @@ snapshots: dependencies: '@pkgr/core': 0.2.9 - tagged-tag@1.0.0: {} + tagged-tag@1.0.0: + optional: true tailwind-merge@3.5.0: {} tailwindcss@4.1.17: {} + tailwindcss@4.3.2: {} + tapable@1.1.3: {} tapable@2.3.3: {} term-size@2.2.1: {} - terser-webpack-plugin@5.6.1(esbuild@0.27.3)(lightningcss@1.31.1)(postcss@8.5.15)(webpack@5.107.2(esbuild@0.27.3)(lightningcss@1.31.1)(postcss@8.5.15)): + terser-webpack-plugin@5.6.1(esbuild@0.27.3)(lightningcss@1.32.0)(postcss@8.5.15)(webpack@5.107.2(esbuild@0.27.3)(lightningcss@1.32.0)(postcss@8.5.15)): dependencies: '@jridgewell/trace-mapping': 0.3.31 jest-worker: 27.5.1 schema-utils: 4.3.3 terser: 5.48.0 - webpack: 5.107.2(esbuild@0.27.3)(lightningcss@1.31.1)(postcss@8.5.15) + webpack: 5.107.2(esbuild@0.27.3)(lightningcss@1.32.0)(postcss@8.5.15) optionalDependencies: esbuild: 0.27.3 - lightningcss: 1.31.1 + lightningcss: 1.32.0 postcss: 8.5.15 - terser-webpack-plugin@5.6.1(lightningcss@1.31.1)(webpack@5.107.2(lightningcss@1.31.1)): + terser-webpack-plugin@5.6.1(lightningcss@1.32.0)(webpack@5.107.2(lightningcss@1.32.0)): dependencies: '@jridgewell/trace-mapping': 0.3.31 jest-worker: 27.5.1 schema-utils: 4.3.3 terser: 5.48.0 - webpack: 5.107.2(lightningcss@1.31.1) + webpack: 5.107.2(lightningcss@1.32.0) optionalDependencies: - lightningcss: 1.31.1 + lightningcss: 1.32.0 terser-webpack-plugin@5.6.1(webpack@5.107.2): dependencies: @@ -18590,7 +18732,8 @@ snapshots: tldts-core@6.1.86: {} - tldts-core@7.0.23: {} + tldts-core@7.0.23: + optional: true tldts@6.1.86: dependencies: @@ -18599,6 +18742,7 @@ snapshots: tldts@7.0.23: dependencies: tldts-core: 7.0.23 + optional: true tmpl@1.0.5: {} @@ -18617,6 +18761,7 @@ snapshots: tough-cookie@6.0.0: dependencies: tldts: 7.0.23 + optional: true tr46@0.0.3: {} @@ -18668,7 +18813,7 @@ snapshots: tslib@2.8.1: {} - tsup@8.5.1(@microsoft/api-extractor@7.58.8(@types/node@25.9.3))(jiti@2.6.1)(postcss@8.5.15)(tsx@4.19.2)(typescript@5.8.2)(yaml@2.4.5): + tsup@8.5.1(@microsoft/api-extractor@7.58.8(@types/node@25.9.3))(jiti@2.7.0)(postcss@8.5.15)(tsx@4.19.2)(typescript@5.8.2)(yaml@2.4.5): dependencies: bundle-require: 5.1.0(esbuild@0.27.3) cac: 6.7.14 @@ -18679,7 +18824,7 @@ snapshots: fix-dts-default-cjs-exports: 1.0.1 joycon: 3.1.1 picocolors: 1.1.1 - postcss-load-config: 6.0.1(jiti@2.6.1)(postcss@8.5.15)(tsx@4.19.2)(yaml@2.4.5) + postcss-load-config: 6.0.1(jiti@2.7.0)(postcss@8.5.15)(tsx@4.19.2)(yaml@2.4.5) resolve-from: 5.0.0 rollup: 4.59.0 source-map: 0.7.6 @@ -18733,6 +18878,7 @@ snapshots: type-fest@5.3.0: dependencies: tagged-tag: 1.0.0 + optional: true type-is@2.0.1: dependencies: @@ -18794,12 +18940,12 @@ snapshots: optionalDependencies: sass: 1.84.0 - typescript-eslint@8.29.0(eslint@9.39.3(jiti@2.6.1))(typescript@5.8.2): + typescript-eslint@8.29.0(eslint@9.39.3(jiti@2.7.0))(typescript@5.8.2): dependencies: - '@typescript-eslint/eslint-plugin': 8.29.0(@typescript-eslint/parser@8.29.0(eslint@9.39.3(jiti@2.6.1))(typescript@5.8.2))(eslint@9.39.3(jiti@2.6.1))(typescript@5.8.2) - '@typescript-eslint/parser': 8.29.0(eslint@9.39.3(jiti@2.6.1))(typescript@5.8.2) - '@typescript-eslint/utils': 8.29.0(eslint@9.39.3(jiti@2.6.1))(typescript@5.8.2) - eslint: 9.39.3(jiti@2.6.1) + '@typescript-eslint/eslint-plugin': 8.29.0(@typescript-eslint/parser@8.29.0(eslint@9.39.3(jiti@2.7.0))(typescript@5.8.2))(eslint@9.39.3(jiti@2.7.0))(typescript@5.8.2) + '@typescript-eslint/parser': 8.29.0(eslint@9.39.3(jiti@2.7.0))(typescript@5.8.2) + '@typescript-eslint/utils': 8.29.0(eslint@9.39.3(jiti@2.7.0))(typescript@5.8.2) + eslint: 9.39.3(jiti@2.7.0) typescript: 5.8.2 transitivePeerDependencies: - supports-color @@ -18834,6 +18980,8 @@ snapshots: undici-types@7.24.6: optional: true + undici@7.28.0: {} + unicorn-magic@0.1.0: {} unicorn-magic@0.3.0: {} @@ -18884,7 +19032,8 @@ snapshots: picomatch: 4.0.4 webpack-virtual-modules: 0.6.2 - until-async@3.0.2: {} + until-async@3.0.2: + optional: true update-browserslist-db@1.2.3(browserslist@4.28.2): dependencies: @@ -18919,10 +19068,6 @@ snapshots: optionalDependencies: '@types/react': 19.2.14 - use-stick-to-bottom@1.1.6(react@19.2.4): - dependencies: - react: 19.2.4 - use-sync-external-store@1.6.0(react@19.2.4): dependencies: react: 19.2.4 @@ -18959,7 +19104,7 @@ snapshots: '@types/unist': 3.0.3 vfile-message: 4.0.3 - vite-plugin-dts@4.5.4(@types/node@24.7.0)(rollup@4.59.0)(typescript@5.9.3)(vite@7.3.5(@types/node@24.7.0)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.84.0)(terser@5.48.0)(tsx@4.19.2)(yaml@2.4.5)): + vite-plugin-dts@4.5.4(@types/node@24.7.0)(rollup@4.59.0)(typescript@5.9.3)(vite@7.3.5(@types/node@24.7.0)(jiti@2.7.0)(lightningcss@1.32.0)(sass@1.84.0)(terser@5.48.0)(tsx@4.19.2)(yaml@2.4.5)): dependencies: '@microsoft/api-extractor': 7.58.8(@types/node@24.7.0) '@rollup/pluginutils': 5.3.0(rollup@4.59.0) @@ -18972,13 +19117,13 @@ snapshots: magic-string: 0.30.21 typescript: 5.9.3 optionalDependencies: - vite: 7.3.5(@types/node@24.7.0)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.84.0)(terser@5.48.0)(tsx@4.19.2)(yaml@2.4.5) + vite: 7.3.5(@types/node@24.7.0)(jiti@2.7.0)(lightningcss@1.32.0)(sass@1.84.0)(terser@5.48.0)(tsx@4.19.2)(yaml@2.4.5) transitivePeerDependencies: - '@types/node' - rollup - supports-color - vite@7.3.5(@types/node@22.19.1)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.84.0)(terser@5.48.0)(tsx@4.19.2)(yaml@2.4.5): + vite@7.3.5(@types/node@22.19.1)(jiti@2.7.0)(lightningcss@1.32.0)(sass@1.84.0)(terser@5.48.0)(tsx@4.19.2)(yaml@2.4.5): dependencies: esbuild: 0.27.3 fdir: 6.5.0(picomatch@4.0.4) @@ -18989,14 +19134,14 @@ snapshots: optionalDependencies: '@types/node': 22.19.1 fsevents: 2.3.3 - jiti: 2.6.1 - lightningcss: 1.31.1 + jiti: 2.7.0 + lightningcss: 1.32.0 sass: 1.84.0 terser: 5.48.0 tsx: 4.19.2 yaml: 2.4.5 - vite@7.3.5(@types/node@24.7.0)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.84.0)(terser@5.48.0)(tsx@4.19.2)(yaml@2.4.5): + vite@7.3.5(@types/node@24.7.0)(jiti@2.7.0)(lightningcss@1.32.0)(sass@1.84.0)(terser@5.48.0)(tsx@4.19.2)(yaml@2.4.5): dependencies: esbuild: 0.27.3 fdir: 6.5.0(picomatch@4.0.4) @@ -19007,14 +19152,14 @@ snapshots: optionalDependencies: '@types/node': 24.7.0 fsevents: 2.3.3 - jiti: 2.6.1 - lightningcss: 1.31.1 + jiti: 2.7.0 + lightningcss: 1.32.0 sass: 1.84.0 terser: 5.48.0 tsx: 4.19.2 yaml: 2.4.5 - vite@7.3.5(@types/node@25.9.3)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.84.0)(terser@5.48.0)(tsx@4.19.2)(yaml@2.4.5): + vite@7.3.5(@types/node@25.9.3)(jiti@2.7.0)(lightningcss@1.32.0)(sass@1.84.0)(terser@5.48.0)(tsx@4.19.2)(yaml@2.4.5): dependencies: esbuild: 0.27.3 fdir: 6.5.0(picomatch@4.0.4) @@ -19025,17 +19170,17 @@ snapshots: optionalDependencies: '@types/node': 25.9.3 fsevents: 2.3.3 - jiti: 2.6.1 - lightningcss: 1.31.1 + jiti: 2.7.0 + lightningcss: 1.32.0 sass: 1.84.0 terser: 5.48.0 tsx: 4.19.2 yaml: 2.4.5 - vitest@4.1.8(@opentelemetry/api@1.9.0)(@types/node@22.19.1)(@vitest/coverage-v8@3.2.4)(jsdom@26.1.0)(msw@2.12.3(@types/node@22.19.1)(typescript@5.8.2))(vite@7.3.5(@types/node@22.19.1)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.84.0)(terser@5.48.0)(tsx@4.19.2)(yaml@2.4.5)): + vitest@4.1.8(@opentelemetry/api@1.9.0)(@types/node@22.19.1)(@vitest/coverage-v8@3.2.4)(jsdom@26.1.0)(msw@2.12.3(@types/node@22.19.1)(typescript@5.8.2))(vite@7.3.5(@types/node@22.19.1)(jiti@2.7.0)(lightningcss@1.32.0)(sass@1.84.0)(terser@5.48.0)(tsx@4.19.2)(yaml@2.4.5)): dependencies: '@vitest/expect': 4.1.8 - '@vitest/mocker': 4.1.8(msw@2.12.3(@types/node@22.19.1)(typescript@5.8.2))(vite@7.3.5(@types/node@22.19.1)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.84.0)(terser@5.48.0)(tsx@4.19.2)(yaml@2.4.5)) + '@vitest/mocker': 4.1.8(msw@2.12.3(@types/node@22.19.1)(typescript@5.8.2))(vite@7.3.5(@types/node@22.19.1)(jiti@2.7.0)(lightningcss@1.32.0)(sass@1.84.0)(terser@5.48.0)(tsx@4.19.2)(yaml@2.4.5)) '@vitest/pretty-format': 4.1.8 '@vitest/runner': 4.1.8 '@vitest/snapshot': 4.1.8 @@ -19052,7 +19197,7 @@ snapshots: tinyexec: 1.0.2 tinyglobby: 0.2.15 tinyrainbow: 3.1.0 - vite: 7.3.5(@types/node@22.19.1)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.84.0)(terser@5.48.0)(tsx@4.19.2)(yaml@2.4.5) + vite: 7.3.5(@types/node@22.19.1)(jiti@2.7.0)(lightningcss@1.32.0)(sass@1.84.0)(terser@5.48.0)(tsx@4.19.2)(yaml@2.4.5) why-is-node-running: 2.3.0 optionalDependencies: '@opentelemetry/api': 1.9.0 @@ -19062,10 +19207,10 @@ snapshots: transitivePeerDependencies: - msw - vitest@4.1.8(@opentelemetry/api@1.9.0)(@types/node@24.7.0)(jsdom@26.1.0)(msw@2.12.3(@types/node@24.7.0)(typescript@5.9.3))(vite@7.3.5(@types/node@24.7.0)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.84.0)(terser@5.48.0)(tsx@4.19.2)(yaml@2.4.5)): + vitest@4.1.8(@opentelemetry/api@1.9.0)(@types/node@24.7.0)(jsdom@26.1.0)(msw@2.12.3(@types/node@24.7.0)(typescript@5.9.3))(vite@7.3.5(@types/node@24.7.0)(jiti@2.7.0)(lightningcss@1.32.0)(sass@1.84.0)(terser@5.48.0)(tsx@4.19.2)(yaml@2.4.5)): dependencies: '@vitest/expect': 4.1.8 - '@vitest/mocker': 4.1.8(msw@2.12.3(@types/node@24.7.0)(typescript@5.9.3))(vite@7.3.5(@types/node@24.7.0)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.84.0)(terser@5.48.0)(tsx@4.19.2)(yaml@2.4.5)) + '@vitest/mocker': 4.1.8(msw@2.12.3(@types/node@24.7.0)(typescript@5.9.3))(vite@7.3.5(@types/node@24.7.0)(jiti@2.7.0)(lightningcss@1.32.0)(sass@1.84.0)(terser@5.48.0)(tsx@4.19.2)(yaml@2.4.5)) '@vitest/pretty-format': 4.1.8 '@vitest/runner': 4.1.8 '@vitest/snapshot': 4.1.8 @@ -19082,7 +19227,7 @@ snapshots: tinyexec: 1.0.2 tinyglobby: 0.2.15 tinyrainbow: 3.1.0 - vite: 7.3.5(@types/node@24.7.0)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.84.0)(terser@5.48.0)(tsx@4.19.2)(yaml@2.4.5) + vite: 7.3.5(@types/node@24.7.0)(jiti@2.7.0)(lightningcss@1.32.0)(sass@1.84.0)(terser@5.48.0)(tsx@4.19.2)(yaml@2.4.5) why-is-node-running: 2.3.0 optionalDependencies: '@opentelemetry/api': 1.9.0 @@ -19091,10 +19236,10 @@ snapshots: transitivePeerDependencies: - msw - vitest@4.1.8(@opentelemetry/api@1.9.0)(@types/node@25.9.3)(jsdom@26.1.0)(msw@2.12.3(@types/node@25.9.3)(typescript@5.8.2))(vite@7.3.5(@types/node@25.9.3)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.84.0)(terser@5.48.0)(tsx@4.19.2)(yaml@2.4.5)): + vitest@4.1.8(@opentelemetry/api@1.9.0)(@types/node@25.9.3)(jsdom@26.1.0)(msw@2.12.3(@types/node@25.9.3)(typescript@5.8.2))(vite@7.3.5(@types/node@25.9.3)(jiti@2.7.0)(lightningcss@1.32.0)(sass@1.84.0)(terser@5.48.0)(tsx@4.19.2)(yaml@2.4.5)): dependencies: '@vitest/expect': 4.1.8 - '@vitest/mocker': 4.1.8(msw@2.12.3(@types/node@25.9.3)(typescript@5.8.2))(vite@7.3.5(@types/node@25.9.3)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.84.0)(terser@5.48.0)(tsx@4.19.2)(yaml@2.4.5)) + '@vitest/mocker': 4.1.8(msw@2.12.3(@types/node@25.9.3)(typescript@5.8.2))(vite@7.3.5(@types/node@25.9.3)(jiti@2.7.0)(lightningcss@1.32.0)(sass@1.84.0)(terser@5.48.0)(tsx@4.19.2)(yaml@2.4.5)) '@vitest/pretty-format': 4.1.8 '@vitest/runner': 4.1.8 '@vitest/snapshot': 4.1.8 @@ -19111,7 +19256,7 @@ snapshots: tinyexec: 1.0.2 tinyglobby: 0.2.15 tinyrainbow: 3.1.0 - vite: 7.3.5(@types/node@25.9.3)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.84.0)(terser@5.48.0)(tsx@4.19.2)(yaml@2.4.5) + vite: 7.3.5(@types/node@25.9.3)(jiti@2.7.0)(lightningcss@1.32.0)(sass@1.84.0)(terser@5.48.0)(tsx@4.19.2)(yaml@2.4.5) why-is-node-running: 2.3.0 optionalDependencies: '@opentelemetry/api': 1.9.0 @@ -19120,10 +19265,10 @@ snapshots: transitivePeerDependencies: - msw - vitest@4.1.8(@opentelemetry/api@1.9.0)(@types/node@25.9.3)(jsdom@26.1.0)(msw@2.12.3(@types/node@25.9.3)(typescript@5.9.3))(vite@7.3.5(@types/node@25.9.3)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.84.0)(terser@5.48.0)(tsx@4.19.2)(yaml@2.4.5)): + vitest@4.1.8(@opentelemetry/api@1.9.0)(@types/node@25.9.3)(jsdom@26.1.0)(msw@2.12.3(@types/node@25.9.3)(typescript@5.9.3))(vite@7.3.5(@types/node@25.9.3)(jiti@2.7.0)(lightningcss@1.32.0)(sass@1.84.0)(terser@5.48.0)(tsx@4.19.2)(yaml@2.4.5)): dependencies: '@vitest/expect': 4.1.8 - '@vitest/mocker': 4.1.8(msw@2.12.3(@types/node@25.9.3)(typescript@5.9.3))(vite@7.3.5(@types/node@25.9.3)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.84.0)(terser@5.48.0)(tsx@4.19.2)(yaml@2.4.5)) + '@vitest/mocker': 4.1.8(msw@2.12.3(@types/node@25.9.3)(typescript@5.9.3))(vite@7.3.5(@types/node@25.9.3)(jiti@2.7.0)(lightningcss@1.32.0)(sass@1.84.0)(terser@5.48.0)(tsx@4.19.2)(yaml@2.4.5)) '@vitest/pretty-format': 4.1.8 '@vitest/runner': 4.1.8 '@vitest/snapshot': 4.1.8 @@ -19140,7 +19285,7 @@ snapshots: tinyexec: 1.0.2 tinyglobby: 0.2.15 tinyrainbow: 3.1.0 - vite: 7.3.5(@types/node@25.9.3)(jiti@2.6.1)(lightningcss@1.31.1)(sass@1.84.0)(terser@5.48.0)(tsx@4.19.2)(yaml@2.4.5) + vite: 7.3.5(@types/node@25.9.3)(jiti@2.7.0)(lightningcss@1.32.0)(sass@1.84.0)(terser@5.48.0)(tsx@4.19.2)(yaml@2.4.5) why-is-node-running: 2.3.0 optionalDependencies: '@opentelemetry/api': 1.9.0 @@ -19171,8 +19316,6 @@ snapshots: web-namespaces@2.0.1: {} - web-streams-polyfill@3.3.3: {} - webidl-conversions@3.0.1: {} webidl-conversions@7.0.0: {} @@ -19220,7 +19363,7 @@ snapshots: - postcss - uglify-js - webpack@5.107.2(esbuild@0.27.3)(lightningcss@1.31.1)(postcss@8.5.15): + webpack@5.107.2(esbuild@0.27.3)(lightningcss@1.32.0)(postcss@8.5.15): dependencies: '@types/estree': 1.0.9 '@types/json-schema': 7.0.15 @@ -19242,7 +19385,7 @@ snapshots: neo-async: 2.6.2 schema-utils: 4.3.3 tapable: 2.3.3 - terser-webpack-plugin: 5.6.1(esbuild@0.27.3)(lightningcss@1.31.1)(postcss@8.5.15)(webpack@5.107.2(esbuild@0.27.3)(lightningcss@1.31.1)(postcss@8.5.15)) + terser-webpack-plugin: 5.6.1(esbuild@0.27.3)(lightningcss@1.32.0)(postcss@8.5.15)(webpack@5.107.2(esbuild@0.27.3)(lightningcss@1.32.0)(postcss@8.5.15)) watchpack: 2.5.1 webpack-sources: 3.5.0 transitivePeerDependencies: @@ -19259,7 +19402,7 @@ snapshots: - postcss - uglify-js - webpack@5.107.2(lightningcss@1.31.1): + webpack@5.107.2(lightningcss@1.32.0): dependencies: '@types/estree': 1.0.9 '@types/json-schema': 7.0.15 @@ -19281,7 +19424,7 @@ snapshots: neo-async: 2.6.2 schema-utils: 4.3.3 tapable: 2.3.3 - terser-webpack-plugin: 5.6.1(lightningcss@1.31.1)(webpack@5.107.2(lightningcss@1.31.1)) + terser-webpack-plugin: 5.6.1(lightningcss@1.32.0)(webpack@5.107.2(lightningcss@1.32.0)) watchpack: 2.5.1 webpack-sources: 3.5.0 transitivePeerDependencies: @@ -19379,6 +19522,7 @@ snapshots: ansi-styles: 4.3.0 string-width: 4.2.3 strip-ansi: 6.0.1 + optional: true wrap-ansi@7.0.0: dependencies: @@ -19438,7 +19582,8 @@ snapshots: yocto-queue@1.1.1: {} - yoctocolors-cjs@2.1.3: {} + yoctocolors-cjs@2.1.3: + optional: true yoctocolors@2.1.2: {} From ba59596397b77d0d9c933c30c1adde4910861931 Mon Sep 17 00:00:00 2001 From: Thomas Yuill Date: Fri, 10 Jul 2026 14:21:07 -0400 Subject: [PATCH 2/3] feat(shadcn): add conversational AgentSessionView-01 story, fix transcript hit-testing Adds a WithConversation story that populates the transcript with a scripted conversation by emitting fake chat events onto the session's Room, plus a play function to open the panel. Extends the sample conversation to 20 messages so the transcript overflows and scrolls. While verifying it, found that TileLayout's absolutely positioned wrapper (z-50, rendered after the transcript in DOM order) intercepts all pointer/wheel events over the transcript whenever the chat panel is open, even with no messages -- confirmed via AgentSessionView_01's Default story. Fixes it with pointer-events-none, since nothing in that layer is interactive today. --- .../lk-decorators/MockConversation.tsx | 56 +++++++++++++++++++ docs/storybook/package.json | 1 + .../agents-ui/AgentSessionView-01.stories.tsx | 37 +++++++++++- .../components/tile-view.tsx | 2 +- pnpm-lock.yaml | 3 + 5 files changed, 95 insertions(+), 4 deletions(-) create mode 100644 docs/storybook/.storybook/lk-decorators/MockConversation.tsx diff --git a/docs/storybook/.storybook/lk-decorators/MockConversation.tsx b/docs/storybook/.storybook/lk-decorators/MockConversation.tsx new file mode 100644 index 000000000..63a66ac72 --- /dev/null +++ b/docs/storybook/.storybook/lk-decorators/MockConversation.tsx @@ -0,0 +1,56 @@ +import * as React from 'react'; +import { Decorator } from '@storybook/react-vite'; +import { useSessionContext } from '@livekit/components-react'; +import { DataPacket_Kind, Participant, type RemoteParticipant, RoomEvent } from 'livekit-client'; + +/** + * Mirrors `LegacyDataTopic.CHAT` from `@livekit/components-core` (not re-exported from + * `@livekit/components-react`, so it's inlined here rather than adding a new dependency). + */ +const LEGACY_CHAT_TOPIC = 'lk-chat-topic'; + +const MOCK_AGENT_PARTICIPANT = new Participant('mock-agent-sid', 'agent', 'Agent'); + +export type MockConversationMessage = { + id: string; + from: 'user' | 'agent'; + message: string; +}; + +/** + * Populates the current session's transcript with a scripted conversation, without a real + * connection or backend agent. Works by emitting fake `RoomEvent.DataReceived` events on the + * legacy chat topic -- the same public SDK event the chat pipeline listens on -- so any + * component reading messages via `useSessionMessages()` renders them as if they were received + * for real. + * + * Must be nested inside a decorator that provides `SessionContext` (e.g. `AgentSessionProvider`). + */ +export function withMockConversation(messages: MockConversationMessage[]): Decorator { + return (Story) => { + const { room } = useSessionContext(); + + React.useEffect(() => { + messages.forEach(({ id, from, message }) => { + const payload = new TextEncoder().encode( + JSON.stringify({ id, timestamp: Date.now(), message }), + ) as Uint8Array; + // `RoomEvent.DataReceived` is typed as remote-only, but `setupChat` (the only consumer of + // this event) reads `from` as a plain `Participant`, so this cast is safe -- the real + // local participant is a `LocalParticipant`, not a `RemoteParticipant` either. + const participant = (from === 'user' + ? room.localParticipant + : MOCK_AGENT_PARTICIPANT) as unknown as RemoteParticipant; + room.emit( + RoomEvent.DataReceived, + payload, + participant, + DataPacket_Kind.RELIABLE, + LEGACY_CHAT_TOPIC, + ); + }); + }, [room]); + + return <>{Story()}; + }; +} diff --git a/docs/storybook/package.json b/docs/storybook/package.json index d8b1c4d12..2f7ec0690 100644 --- a/docs/storybook/package.json +++ b/docs/storybook/package.json @@ -38,6 +38,7 @@ "shadcn": "^4.13.0", "storybook": "^10.1.4", "tailwindcss": "^4.3.2", + "tslib": "^2.6.2", "tsx": "^4.0.0", "typescript": "5.8.2", "vite": "^7.3.5", diff --git a/docs/storybook/stories/agents-ui/AgentSessionView-01.stories.tsx b/docs/storybook/stories/agents-ui/AgentSessionView-01.stories.tsx index b3695739b..478f06d6f 100644 --- a/docs/storybook/stories/agents-ui/AgentSessionView-01.stories.tsx +++ b/docs/storybook/stories/agents-ui/AgentSessionView-01.stories.tsx @@ -1,17 +1,38 @@ import React from 'react'; import { StoryObj } from '@storybook/react-vite'; +import { within, userEvent } from 'storybook/test'; import { useTheme } from 'next-themes'; import { AgentSessionProvider } from '../../.storybook/lk-decorators/AgentSessionProvider'; +import { + MockConversationMessage, + withMockConversation, +} from '../../.storybook/lk-decorators/MockConversation'; import { AgentSessionView_01, AgentSessionView_01Props } from '@agents-ui'; +const SAMPLE_CONVERSATION: MockConversationMessage[] = [ + { id: '1', from: 'agent', message: 'Hi, how can I help you today?' }, + { id: '2', from: 'user', message: 'Hi, how are you?' }, + { id: '3', from: 'agent', message: "I'm good, thank you!" }, + { id: '4', from: 'user', message: 'This is a longer message that should wrap to the next line.' }, + { + id: '5', + from: 'agent', + message: "Great, I'm responding with an even longer message to see how it wraps.", + }, + ...Array.from({ length: 15 }, (_, index) => ({ + id: `${6 + index}`, + from: (index % 2 === 0 ? 'user' : 'agent') as MockConversationMessage['from'], + message: + 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.', + })), +]; + export default { component: AgentSessionView_01, decorators: [AgentSessionProvider], render: (args: AgentSessionView_01Props) => { const { resolvedTheme = 'dark' } = useTheme(); - return ( - - ); + return ; }, args: { className: 'h-screen w-screen', @@ -57,3 +78,13 @@ export default { export const Default: StoryObj = { args: {}, }; + +export const WithConversation: StoryObj = { + decorators: [withMockConversation(SAMPLE_CONVERSATION)], + args: {}, + play: async ({ canvasElement }) => { + const canvas = within(canvasElement); + const transcriptToggle = await canvas.findByRole('button', { name: 'Toggle transcript' }); + await userEvent.click(transcriptToggle); + }, +}; diff --git a/packages/shadcn/components/agents-ui/blocks/agent-session-view-01/components/tile-view.tsx b/packages/shadcn/components/agents-ui/blocks/agent-session-view-01/components/tile-view.tsx index 49f5434a4..f6d23d04d 100644 --- a/packages/shadcn/components/agents-ui/blocks/agent-session-view-01/components/tile-view.tsx +++ b/packages/shadcn/components/agents-ui/blocks/agent-session-view-01/components/tile-view.tsx @@ -109,7 +109,7 @@ export function TileLayout({ const videoHeight = agentVideoTrack?.publication.dimensions?.height ?? 0; return ( -
+
{/* Agent */} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 89eedbe14..d2e221e67 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -141,6 +141,9 @@ importers: tailwindcss: specifier: ^4.3.2 version: 4.3.2 + tslib: + specifier: ^2.6.2 + version: 2.8.1 tsx: specifier: ^4.0.0 version: 4.19.2 From 633ee88a1e09e2a37c559ca009ccb0382847d227 Mon Sep 17 00:00:00 2001 From: Thomas Yuill Date: Fri, 10 Jul 2026 14:38:28 -0400 Subject: [PATCH 3/3] fixing chat transcript in seesion block --- .../agent-session-view-01/components/agent-session-block.tsx | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/packages/shadcn/components/agents-ui/blocks/agent-session-view-01/components/agent-session-block.tsx b/packages/shadcn/components/agents-ui/blocks/agent-session-view-01/components/agent-session-block.tsx index 1d23250d0..64ec68be9 100644 --- a/packages/shadcn/components/agents-ui/blocks/agent-session-view-01/components/agent-session-block.tsx +++ b/packages/shadcn/components/agents-ui/blocks/agent-session-view-01/components/agent-session-block.tsx @@ -215,12 +215,12 @@ export function AgentSessionView_01({ {isChatOpen && ( )} @@ -261,7 +261,6 @@ export function AgentSessionView_01({ )}
-