+ {/* Backdrop */}
+
setIsOpen(false)}
+ aria-hidden="true"
+ />
+
+ {/* Drawer Content */}
+
+
+ )}
+ >
+ );
+}
diff --git a/app/components/AIAssistant/Composer.tsx b/app/components/AIAssistant/Composer.tsx
new file mode 100644
index 0000000..57eb1ae
--- /dev/null
+++ b/app/components/AIAssistant/Composer.tsx
@@ -0,0 +1,68 @@
+"use client";
+
+import { ComposerPrimitive } from "@assistant-ui/react";
+import { Send, Square, Mic, MicOff } from "lucide-react";
+import { useSpeechToText } from "@/hooks/use-speech-to-text";
+
+export function Composer() {
+ const { isListening, toggleListening, isSupported } = useSpeechToText();
+
+ return (
+
+
+
+
+
+ {isSupported && (
+
+ )}
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Enter to send,{" "}
+ Shift+Enter for newline
+
+ {isListening && (
+
+
+ Listening...
+
+ )}
+
+
+ );
+}
diff --git a/app/components/AIAssistant/Thread.tsx b/app/components/AIAssistant/Thread.tsx
new file mode 100644
index 0000000..d72111b
--- /dev/null
+++ b/app/components/AIAssistant/Thread.tsx
@@ -0,0 +1,274 @@
+"use client";
+
+import { useState } from "react";
+import {
+ ThreadPrimitive,
+ MessagePrimitive,
+ ActionBarPrimitive,
+ BranchPickerPrimitive,
+ AuiIf,
+} from "@assistant-ui/react";
+import { MarkdownTextPrimitive } from "@assistant-ui/react-markdown";
+import { Bot, User, Copy, Check, RotateCcw, ChevronLeft, ChevronRight, Sparkles, BookOpen, Sun, Cpu } from "lucide-react";
+import { Composer } from "@/components/AIAssistant/Composer";
+
+export interface CodeBlockProps {
+ readonly code: string;
+ readonly language?: string;
+}
+
+export function CodeBlock({ code, language }: Readonly
) {
+ const [copied, setCopied] = useState(false);
+
+ const handleCopy = async () => {
+ try {
+ await navigator.clipboard.writeText(code);
+ setCopied(true);
+ setTimeout(() => setCopied(false), 2000);
+ } catch {
+ // Fallback ignore
+ }
+ };
+
+ return (
+
+
+ {language || "text"}
+
+
+
+ {code}
+
+
+ );
+}
+
+export function SuggestedPrompts() {
+ const prompts = [
+ {
+ label: "Search documentation",
+ prompt: "Search documentation for getting started",
+ icon: BookOpen,
+ },
+ {
+ label: "Switch to dark mode",
+ prompt: "Switch theme to dark mode",
+ icon: Sun,
+ },
+ {
+ label: "Show system info",
+ prompt: "What is the cur8d stack and system info?",
+ icon: Cpu,
+ },
+ {
+ label: "How to test",
+ prompt: "How do I run tests and check 80% coverage?",
+ icon: Sparkles,
+ },
+ ];
+
+ return (
+
+
+
+
+
How can I assist you today?
+
+ Ask about the template, search docs, toggle themes, or run tools with AI.
+
+
+
+ {prompts.map((p) => {
+ const Icon = p.icon;
+ return (
+
+
+
+ );
+ })}
+
+
+ );
+}
+
+export function UserMessage() {
+ return (
+
+
+
+
+
+
+
+
+ /
+
+
+
+
+
+
+ );
+}
+
+export interface MarkdownCodeProps extends React.ComponentPropsWithoutRef<"code"> {
+ readonly inline?: boolean;
+}
+
+export function MarkdownCode({ inline, className, children, ...props }: Readonly) {
+ const match = /language-(\w+)/.exec(className || "");
+ if (!inline && match) {
+ let codeString = "";
+ if (Array.isArray(children)) {
+ codeString = children.join("");
+ } else if (typeof children === "string") {
+ codeString = children;
+ }
+ return ;
+ }
+ return (
+
+ {children}
+
+ );
+}
+
+export function MarkdownParagraph({ children }: Readonly<{ readonly children?: React.ReactNode }>) {
+ return {children}
;
+}
+
+export function MarkdownUnorderedList({ children }: Readonly<{ readonly children?: React.ReactNode }>) {
+ return ;
+}
+
+export function MarkdownOrderedList({ children }: Readonly<{ readonly children?: React.ReactNode }>) {
+ return {children}
;
+}
+
+export function MarkdownListItem({ children }: Readonly<{ readonly children?: React.ReactNode }>) {
+ return {children};
+}
+
+export function MarkdownLink({ href, children }: Readonly<{ readonly href?: string; readonly children?: React.ReactNode }>) {
+ return (
+
+ {children}
+
+ );
+}
+
+export const markdownComponents = {
+ code: MarkdownCode,
+ p: MarkdownParagraph,
+ ul: MarkdownUnorderedList,
+ ol: MarkdownOrderedList,
+ li: MarkdownListItem,
+ a: MarkdownLink,
+};
+
+export function AssistantMessageContent() {
+ return ;
+}
+
+export const assistantMessageComponents = {
+ Text: AssistantMessageContent,
+};
+
+export function AssistantMessage() {
+ return (
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ );
+}
+
+export function Thread() {
+ return (
+
+
+ s.thread.isEmpty}>
+
+
+
+
+
+
+
+
+
+ );
+}
diff --git a/app/components/AIAssistant/index.tsx b/app/components/AIAssistant/index.tsx
new file mode 100644
index 0000000..72596b5
--- /dev/null
+++ b/app/components/AIAssistant/index.tsx
@@ -0,0 +1,31 @@
+"use client";
+
+import { useChatRuntime, AssistantChatTransport } from "@assistant-ui/react-ai-sdk";
+import { AssistantRuntimeProvider, AuiConfig, Tools } from "@assistant-ui/react";
+import { AssistantTrigger } from "@/components/AIAssistant/AssistantTrigger";
+import { assistantToolkit } from "@/components/AIAssistant/toolkit";
+
+export interface AIAssistantProps {
+ readonly api?: string;
+}
+
+export function AIAssistant({ api = "/api/chat" }: Readonly) {
+ const runtime = useChatRuntime({
+ transport: new AssistantChatTransport({ api }),
+ });
+
+ const config = AuiConfig({
+ tools: Tools({ toolkit: assistantToolkit }),
+ });
+
+ return (
+
+
+
+ );
+}
+
+export { useAIAssistant, AIAssistantProvider, AssistantTrigger } from "@/components/AIAssistant/AssistantTrigger";
+export { Thread } from "@/components/AIAssistant/Thread";
+export { Composer } from "@/components/AIAssistant/Composer";
+export { assistantToolkit } from "@/components/AIAssistant/toolkit";
diff --git a/app/components/AIAssistant/toolkit.ts b/app/components/AIAssistant/toolkit.ts
new file mode 100644
index 0000000..2e6cc88
--- /dev/null
+++ b/app/components/AIAssistant/toolkit.ts
@@ -0,0 +1,23 @@
+import { defineToolkit } from "@assistant-ui/react";
+import { DocSearchTool } from "@/components/AIAssistant/tools/DocSearchTool";
+import { ThemeTool } from "@/components/AIAssistant/tools/ThemeTool";
+import { SystemInfoTool } from "@/components/AIAssistant/tools/SystemInfoTool";
+import { NavigatePageTool } from "@/components/AIAssistant/tools/NavigatePageTool";
+
+export const assistantToolkit = defineToolkit({
+ searchDocumentation: {
+ render: DocSearchTool,
+ },
+ setTheme: {
+ render: ThemeTool,
+ },
+ getSystemInfo: {
+ render: SystemInfoTool,
+ },
+ navigatePage: {
+ render: NavigatePageTool,
+ },
+});
+
+export default assistantToolkit;
+
diff --git a/app/components/AIAssistant/tools/DocSearchTool.tsx b/app/components/AIAssistant/tools/DocSearchTool.tsx
new file mode 100644
index 0000000..9c9d8e8
--- /dev/null
+++ b/app/components/AIAssistant/tools/DocSearchTool.tsx
@@ -0,0 +1,74 @@
+"use client";
+
+import type { ToolCallMessagePartComponent } from "@assistant-ui/react";
+import Link from "next/link";
+import { BookOpen, ArrowRight } from "lucide-react";
+import type { DocItem } from "@/lib/ai/tools";
+
+export type DocSearchArgs = {
+ query?: string;
+};
+
+export type DocSearchResult = {
+ query: string;
+ results: DocItem[];
+};
+
+export const DocSearchTool: ToolCallMessagePartComponent = ({
+ args,
+ result,
+ status,
+}) => {
+ if (status.type === "running") {
+ return (
+
+
+ Searching documentation for "{args?.query || "topics"}"...
+
+ );
+ }
+
+ if (!result?.results?.length) {
+ return (
+
+ No documentation matches found for "{args?.query}".
+
+ );
+ }
+
+ return (
+
+
+
+
+ Documentation Results ({result.results.length})
+
+ Query: {result.query}
+
+
+
+ {result.results.map((item) => (
+
+
+
+ {item.title}
+
+
+ {item.category}
+
+
+
{item.description}
+
+
+ ))}
+
+
+ );
+};
diff --git a/app/components/AIAssistant/tools/NavigatePageTool.tsx b/app/components/AIAssistant/tools/NavigatePageTool.tsx
new file mode 100644
index 0000000..c55d460
--- /dev/null
+++ b/app/components/AIAssistant/tools/NavigatePageTool.tsx
@@ -0,0 +1,49 @@
+"use client";
+
+import { useEffect } from "react";
+import type { ToolCallMessagePartComponent } from "@assistant-ui/react";
+import { useRouter } from "next/navigation";
+import { Navigation, ArrowRight } from "lucide-react";
+import Link from "next/link";
+
+export type NavigatePageArgs = {
+ route?: string;
+};
+
+export type NavigatePageResult = {
+ success: boolean;
+ route: string;
+ message: string;
+};
+
+export const NavigatePageTool: ToolCallMessagePartComponent = ({
+ args,
+ result,
+ status,
+}) => {
+ const router = useRouter();
+ const targetRoute = result?.route || args?.route;
+
+ useEffect(() => {
+ if (status.type === "complete" && targetRoute) {
+ router.push(targetRoute);
+ }
+ }, [status.type, targetRoute, router]);
+
+ return (
+
+
+
+ Navigating to {targetRoute}
+
+ {targetRoute && (
+
+ Go now
+
+ )}
+
+ );
+};
diff --git a/app/components/AIAssistant/tools/SystemInfoTool.tsx b/app/components/AIAssistant/tools/SystemInfoTool.tsx
new file mode 100644
index 0000000..47bded9
--- /dev/null
+++ b/app/components/AIAssistant/tools/SystemInfoTool.tsx
@@ -0,0 +1,83 @@
+"use client";
+
+import type { ToolCallMessagePartComponent } from "@assistant-ui/react";
+import { Cpu, CheckCircle, Layers, Palette, Bot } from "lucide-react";
+
+export type SystemInfoArgs = Record;
+
+export type SystemInfoResult = {
+ name: string;
+ version: string;
+ framework: string;
+ runtime: string;
+ designSystem: string;
+ aiStack: string;
+ environment: string;
+ provider?: string;
+ status: string;
+};
+
+export const SystemInfoTool: ToolCallMessagePartComponent = ({
+ result,
+ status,
+}) => {
+ if (status.type === "running") {
+ return (
+
+
+ Querying system metrics and runtime info...
+
+ );
+ }
+
+ if (!result) return null;
+
+ return (
+
+
+
+
+ System Information
+
+
+
+ {result.status}
+
+
+
+
+
+
+
+
Framework
+
{result.framework}
+
+
+
+
+
+
+
Design System
+
{result.designSystem}
+
+
+
+
+
+
+
AI Stack
+
{result.aiStack}
+
+
+
+
+
+
+
Environment
+
{result.environment} ({result.provider || "mock"})
+
+
+
+
+ );
+};
diff --git a/app/components/AIAssistant/tools/ThemeTool.tsx b/app/components/AIAssistant/tools/ThemeTool.tsx
new file mode 100644
index 0000000..1ec3d55
--- /dev/null
+++ b/app/components/AIAssistant/tools/ThemeTool.tsx
@@ -0,0 +1,59 @@
+"use client";
+
+import { useEffect } from "react";
+import type { ToolCallMessagePartComponent } from "@assistant-ui/react";
+import { useTheme } from "next-themes";
+import { Sun, Moon, Laptop, CheckCircle2 } from "lucide-react";
+
+export type ThemeArgs = {
+ theme?: "light" | "dark" | "system";
+};
+
+export type ThemeResult = {
+ success: boolean;
+ theme: "light" | "dark" | "system";
+ message: string;
+};
+
+export const ThemeTool: ToolCallMessagePartComponent = ({
+ args,
+ result,
+ status,
+}) => {
+ const { setTheme } = useTheme();
+ const targetTheme = result?.theme || args?.theme;
+
+ useEffect(() => {
+ if (targetTheme) {
+ setTheme(targetTheme);
+ }
+ }, [targetTheme, setTheme]);
+
+ const getIcon = (theme?: string) => {
+ switch (theme) {
+ case "light":
+ return ;
+ case "dark":
+ return ;
+ default:
+ return ;
+ }
+ };
+
+ if (status.type === "running") {
+ return (
+
+ {getIcon(targetTheme)}
+ Switching theme to {targetTheme || "system"}...
+
+ );
+ }
+
+ return (
+
+ {getIcon(targetTheme)}
+ {targetTheme || "Theme"} applied
+
+
+ );
+};
diff --git a/app/components/Navbar/index.tsx b/app/components/Navbar/index.tsx
index f4b8086..8a58a62 100644
--- a/app/components/Navbar/index.tsx
+++ b/app/components/Navbar/index.tsx
@@ -1,8 +1,14 @@
+"use client";
+
import Link from "next/link";
import { ThemeToggle } from "@/components/ThemeToggle";
-import { ExternalLink } from "lucide-react";
+import { ExternalLink, Bot } from "lucide-react";
+import { useAIAssistant } from "@/components/AIAssistant";
+import { Button } from "@heroui/react";
export function Navbar() {
+ const { toggle } = useAIAssistant();
+
return (
@@ -15,7 +21,7 @@ export function Navbar() {
-
+
+
diff --git a/app/components/Providers/index.tsx b/app/components/Providers/index.tsx
index af3a92e..aedb606 100644
--- a/app/components/Providers/index.tsx
+++ b/app/components/Providers/index.tsx
@@ -4,6 +4,7 @@ import { RouterProvider } from "@heroui/react";
import { ThemeProvider as NextThemesProvider } from "next-themes";
import { useRouter } from "next/navigation";
import { SearchProvider } from "@/hooks/use-search-state";
+import { AIAssistantProvider } from "@/components/AIAssistant";
interface ProvidersProps {
children: React.ReactNode;
@@ -16,7 +17,9 @@ export function Providers({ children }: ProvidersProps) {
- {children}
+
+ {children}
+
diff --git a/app/globals.css b/app/globals.css
index dd15226..c4a5e3b 100644
--- a/app/globals.css
+++ b/app/globals.css
@@ -114,5 +114,308 @@
.btn-secondary {
@apply focus-ring inline-flex items-center justify-center gap-2 rounded-xl border border-border bg-background px-8 py-3 text-sm font-medium transition-colors hover:bg-secondary;
+ /* AI Assistant Components */
+ .ai-trigger {
+ @apply fixed bottom-6 right-6 z-40;
+ }
+ .ai-trigger__button {
+ @apply focus-ring relative flex items-center gap-2 rounded-full bg-primary px-4 py-3 text-primary-foreground shadow-lg shadow-primary/25 transition-all hover:scale-105 hover:shadow-xl hover:shadow-primary/30;
+ }
+ .ai-trigger__button:hover .ai-trigger__icon {
+ @apply rotate-12;
+ }
+ .ai-trigger__icon {
+ @apply size-5 transition-transform;
+ }
+ .ai-trigger__sparkles {
+ @apply absolute -top-1 -right-1 size-2.5 text-amber-300 animate-pulse;
+ }
+ .ai-trigger__label {
+ @apply text-xs font-semibold tracking-wide;
+ }
+ .ai-trigger__shortcut {
+ @apply hidden sm:inline-flex items-center rounded bg-primary-foreground/15 px-1.5 py-0.5 text-[10px] font-mono;
+ }
+
+ .ai-modal {
+ @apply fixed inset-0 z-50 flex justify-end;
+ }
+ .ai-modal__backdrop {
+ @apply fixed inset-0 bg-black/40 backdrop-blur-xs transition-opacity animate-in fade-in;
+ }
+ .ai-modal__dialog {
+ @apply relative z-10 flex h-full w-full flex-col border-l border-border bg-background shadow-2xl sm:max-w-md md:max-w-lg animate-in slide-in-from-right duration-200 p-0 m-0 max-h-none text-foreground;
+ }
+ .ai-modal__body {
+ @apply flex-1 overflow-hidden;
+ }
+
+ .ai-header {
+ @apply flex h-14 items-center justify-between border-b border-border px-4 bg-background/95 backdrop-blur-xs;
+ }
+ .ai-header__left {
+ @apply flex items-center gap-2.5;
+ }
+ .ai-header__icon {
+ @apply flex size-8 items-center justify-center rounded-xl bg-primary/10 text-primary;
+ }
+ .ai-header__title {
+ @apply flex items-center gap-1.5 font-semibold text-sm text-foreground;
+ }
+ .ai-header__badge {
+ @apply inline-flex items-center rounded-full bg-primary/10 px-2 py-0.5 text-[10px] font-medium text-primary;
+ }
+ .ai-header__subtitle {
+ @apply text-[11px] text-muted-foreground;
+ }
+ .ai-header__right {
+ @apply flex items-center gap-1;
+ }
+ .ai-header__shortcut {
+ @apply hidden sm:inline-flex items-center rounded border border-border bg-secondary/50 px-1.5 py-0.5 text-[10px] font-mono text-muted-foreground;
+ }
+ .ai-header__close {
+ @apply flex size-8 items-center justify-center rounded-lg text-muted-foreground transition-colors hover:bg-secondary hover:text-foreground;
+ }
+
+ .ai-composer {
+ @apply relative flex w-full flex-col rounded-2xl border border-border bg-secondary/30 p-2.5 shadow-xs transition-all focus-within:border-primary/50 focus-within:ring-1 focus-within:ring-primary/20;
+ }
+ .ai-composer__row {
+ @apply flex w-full items-end gap-2;
+ }
+ .ai-composer__input {
+ @apply max-h-32 min-h-[40px] flex-1 resize-none bg-transparent px-2 py-1.5 text-sm text-foreground placeholder:text-muted-foreground focus:outline-none;
+ }
+ .ai-composer__actions {
+ @apply flex items-center gap-1 shrink-0 pb-0.5;
+ }
+ .ai-composer__mic {
+ @apply rounded-lg p-2 text-muted-foreground transition-colors hover:bg-secondary hover:text-foreground;
+ }
+ .ai-composer__mic--active {
+ @apply bg-danger text-danger-foreground animate-pulse;
+ }
+ .ai-composer__cancel {
+ @apply rounded-lg bg-secondary p-2 text-muted-foreground transition-colors hover:bg-secondary/80 hover:text-foreground;
+ }
+ .ai-composer__send {
+ @apply rounded-lg bg-primary p-2 text-primary-foreground transition-colors hover:bg-primary/90 disabled:opacity-50 disabled:cursor-not-allowed;
+ }
+ .ai-composer__footer {
+ @apply mt-1.5 flex items-center justify-between px-2 text-[11px] text-muted-foreground;
+ }
+ .ai-composer__kbd {
+ @apply rounded border border-border bg-secondary/60 px-1 py-0.5 font-mono text-[10px];
+ }
+ .ai-composer__listening {
+ @apply flex items-center gap-1 font-medium text-danger;
+ }
+ .ai-composer__listening-dot {
+ @apply size-1.5 rounded-full bg-danger animate-ping;
+ }
+
+ .ai-thread {
+ @apply flex h-full w-full flex-col overflow-hidden bg-background;
+ }
+ .ai-thread__viewport {
+ @apply flex-1 overflow-y-auto px-4 py-3;
+ }
+ .ai-thread__composer {
+ @apply p-4 border-t border-border bg-background/95 backdrop-blur-xs;
+ }
+
+ .ai-suggestions {
+ @apply flex flex-col items-center justify-center p-6 text-center;
+ }
+ .ai-suggestions__icon {
+ @apply flex size-12 items-center justify-center rounded-2xl bg-primary/10 text-primary shadow-xs mb-3;
+ }
+ .ai-suggestions__title {
+ @apply text-base font-semibold text-foreground;
+ }
+ .ai-suggestions__desc {
+ @apply mt-1 max-w-sm text-xs text-muted-foreground;
+ }
+ .ai-suggestions__grid {
+ @apply mt-5 grid grid-cols-1 sm:grid-cols-2 gap-2 w-full max-w-md;
+ }
+ .ai-suggestion-button {
+ @apply focus-ring flex items-center gap-2 rounded-xl border border-border bg-secondary/30 p-2.5 text-left text-xs font-medium text-foreground transition-all hover:border-primary/40 hover:bg-secondary/60;
+ }
+
+ .ai-message {
+ @apply flex flex-col gap-1.5 py-2;
+ }
+ .ai-message--user {
+ @apply items-end;
+ }
+ .ai-message--assistant {
+ @apply items-start;
+ }
+ .ai-message__wrapper--user {
+ @apply flex items-start gap-2 max-w-[85%] flex-row-reverse;
+ }
+ .ai-message__wrapper--assistant {
+ @apply flex items-start gap-2 max-w-[90%];
+ }
+ .ai-message__avatar--user {
+ @apply flex size-7 shrink-0 items-center justify-center rounded-full bg-primary text-primary-foreground shadow-xs;
+ }
+ .ai-message__avatar--assistant {
+ @apply flex size-7 shrink-0 items-center justify-center rounded-full bg-secondary border border-border text-primary shadow-xs;
+ }
+ .ai-message__bubble--user {
+ @apply rounded-2xl rounded-tr-sm bg-primary px-3.5 py-2 text-sm text-primary-foreground shadow-xs;
+ }
+ .ai-message__bubble--assistant {
+ @apply flex flex-col gap-2 rounded-2xl rounded-tl-sm border border-border/80 bg-secondary/20 px-4 py-3 text-sm text-foreground shadow-xs;
+ }
+
+ .ai-branch-picker {
+ @apply flex items-center gap-1 text-[11px] text-muted-foreground mr-9;
+ }
+ .ai-branch-picker__button {
+ @apply rounded p-0.5 hover:bg-secondary;
+ }
+
+ .ai-action-bar {
+ @apply flex items-center gap-1 text-muted-foreground pt-1;
+ }
+ .ai-action-bar__button {
+ @apply flex items-center gap-1 rounded px-1.5 py-0.5 text-[11px] hover:bg-secondary hover:text-foreground transition-colors;
+ }
+
+ .ai-code-block {
+ @apply relative my-3 overflow-hidden rounded-xl border border-border bg-secondary/50 font-mono text-xs shadow-xs;
+ }
+ .ai-code-block__header {
+ @apply flex items-center justify-between border-b border-border/60 bg-secondary/70 px-3.5 py-1.5 text-muted-foreground;
+ }
+ .ai-code-block__lang {
+ @apply text-[11px] font-medium lowercase;
+ }
+ .ai-code-block__copy {
+ @apply flex items-center gap-1 rounded px-1.5 py-0.5 text-[11px] hover:bg-secondary hover:text-foreground transition-colors;
+ }
+ .ai-code-block__pre {
+ @apply overflow-x-auto p-3 text-foreground font-mono leading-relaxed;
+ }
+
+ .ai-markdown__code {
+ @apply rounded bg-secondary/80 px-1 py-0.5 font-mono text-[12px] text-primary;
+ }
+ .ai-markdown__p {
+ @apply mb-2 last:mb-0 leading-relaxed;
+ }
+ .ai-markdown__ul {
+ @apply mb-2 list-disc pl-5 space-y-1;
+ }
+ .ai-markdown__ol {
+ @apply mb-2 list-decimal pl-5 space-y-1;
+ }
+ .ai-markdown__li {
+ @apply leading-relaxed;
+ }
+ .ai-markdown__a {
+ @apply text-primary underline hover:text-primary/80;
+ }
+
+ /* AI Generative UI Tools */
+ .ai-tool-navigate {
+ @apply my-2 flex items-center justify-between rounded-lg border border-border bg-secondary/40 p-2.5 text-xs text-foreground shadow-xs;
+ }
+ .ai-tool-navigate__content {
+ @apply flex items-center gap-2;
+ }
+ .ai-tool-navigate__code {
+ @apply font-mono text-primary;
+ }
+ .ai-tool-navigate__link {
+ @apply flex items-center gap-1 font-medium text-primary hover:underline;
+ }
+
+ .ai-tool-docsearch {
+ @apply my-2 space-y-2 rounded-xl border border-border bg-secondary/30 p-3 shadow-xs;
+ }
+ .ai-tool-docsearch--loading {
+ @apply flex items-center gap-2 rounded-lg border border-border bg-secondary/40 p-3 text-sm text-muted-foreground animate-pulse;
+ }
+ .ai-tool-docsearch--empty {
+ @apply rounded-lg border border-border bg-secondary/20 p-3 text-sm text-muted-foreground;
+ }
+ .ai-tool-docsearch__header {
+ @apply flex items-center justify-between text-xs font-semibold text-muted-foreground uppercase tracking-wider;
+ }
+ .ai-tool-docsearch__query {
+ @apply text-[11px] font-normal text-muted-foreground;
+ }
+ .ai-tool-docsearch__grid {
+ @apply grid gap-2;
+ }
+ .ai-tool-docsearch__card {
+ @apply focus-ring flex flex-col justify-between rounded-lg border border-border/60 bg-background/80 p-2.5 transition-colors hover:border-primary/50 hover:bg-secondary/60;
+ }
+ .ai-tool-docsearch__card:hover .ai-tool-docsearch__card-title {
+ @apply text-primary;
+ }
+ .ai-tool-docsearch__card:hover .ai-tool-docsearch__card-arrow {
+ @apply translate-x-0.5;
+ }
+ .ai-tool-docsearch__card-header {
+ @apply flex items-start justify-between gap-2;
+ }
+ .ai-tool-docsearch__card-title {
+ @apply font-medium text-sm text-foreground transition-colors;
+ }
+ .ai-tool-docsearch__card-badge {
+ @apply inline-flex items-center rounded-full bg-secondary px-2 py-0.5 text-[10px] font-medium text-muted-foreground;
+ }
+ .ai-tool-docsearch__card-desc {
+ @apply mt-1 line-clamp-2 text-xs text-muted-foreground;
+ }
+ .ai-tool-docsearch__card-action {
+ @apply mt-2 flex items-center gap-1 text-[11px] font-medium text-primary;
+ }
+ .ai-tool-docsearch__card-arrow {
+ @apply size-3 transition-transform;
+ }
+
+ .ai-tool-system-info {
+ @apply my-2 rounded-xl border border-border bg-secondary/30 p-3.5 shadow-xs;
+ }
+ .ai-tool-system-info--loading {
+ @apply flex items-center gap-2 rounded-lg border border-border bg-secondary/40 p-3 text-sm text-muted-foreground animate-pulse;
+ }
+ .ai-tool-system-info__header {
+ @apply flex items-center justify-between border-b border-border/60 pb-2 mb-2.5;
+ }
+ .ai-tool-system-info__title-wrap {
+ @apply flex items-center gap-2;
+ }
+ .ai-tool-system-info__title {
+ @apply font-semibold text-xs text-foreground tracking-wide uppercase;
+ }
+ .ai-tool-system-info__status {
+ @apply inline-flex items-center gap-1 rounded-full bg-emerald-500/10 px-2 py-0.5 text-[10px] font-semibold text-emerald-500;
+ }
+ .ai-tool-system-info__grid {
+ @apply grid grid-cols-2 gap-2 text-xs;
+ }
+ .ai-tool-system-info__item {
+ @apply flex items-start gap-1.5 rounded-md bg-background/60 p-2 border border-border/40;
+ }
+ .ai-tool-system-info__label {
+ @apply text-[10px] font-medium text-muted-foreground;
+ }
+ .ai-tool-system-info__val {
+ @apply font-semibold text-foreground;
+ }
+
+ .ai-tool-theme--running {
+ @apply my-2 inline-flex items-center gap-2 rounded-full border border-border bg-secondary/50 px-3 py-1.5 text-xs text-muted-foreground animate-pulse;
+ }
+ .ai-tool-theme--complete {
+ @apply my-2 inline-flex items-center gap-2 rounded-full border border-emerald-500/30 bg-emerald-500/10 px-3.5 py-1.5 text-xs text-foreground font-medium shadow-xs;
}
}
diff --git a/app/hooks/use-speech-to-text.ts b/app/hooks/use-speech-to-text.ts
new file mode 100644
index 0000000..81d577f
--- /dev/null
+++ b/app/hooks/use-speech-to-text.ts
@@ -0,0 +1,156 @@
+"use client";
+
+import { useState, useEffect, useCallback, useRef } from "react";
+
+interface SpeechRecognitionEventLike {
+ resultIndex: number;
+ results: {
+ length: number;
+ [index: number]: {
+ [index: number]: {
+ transcript: string;
+ };
+ isFinal?: boolean;
+ };
+ };
+}
+
+interface SpeechRecognitionErrorEventLike {
+ error: string;
+}
+
+interface SpeechRecognitionLike {
+ continuous: boolean;
+ interimResults: boolean;
+ lang: string;
+ start: () => void;
+ stop: () => void;
+ abort: () => void;
+ onstart: (() => void) | null;
+ onresult: ((event: SpeechRecognitionEventLike) => void) | null;
+ onerror: ((event: SpeechRecognitionErrorEventLike) => void) | null;
+ onend: (() => void) | null;
+}
+
+type SpeechRecognitionConstructor = new () => SpeechRecognitionLike;
+
+interface SpeechRecognitionWindow {
+ SpeechRecognition?: SpeechRecognitionConstructor;
+ webkitSpeechRecognition?: SpeechRecognitionConstructor;
+}
+
+export interface UseSpeechToTextOptions {
+ lang?: string;
+ continuous?: boolean;
+ interimResults?: boolean;
+ onResult?: (transcript: string) => void;
+}
+
+export function useSpeechToText(options: UseSpeechToTextOptions = {}) {
+ const { lang = "en-US", continuous = false, interimResults = true, onResult } = options;
+
+ const [isListening, setIsListening] = useState(false);
+ const [transcript, setTranscript] = useState("");
+ const [isSupported, setIsSupported] = useState(false);
+ const [error, setError] = useState(null);
+
+ const recognitionRef = useRef(null);
+ const onResultRef = useRef(onResult);
+ onResultRef.current = onResult;
+
+ useEffect(() => {
+ if (typeof window !== "undefined") {
+ const speechWindow = window as unknown as SpeechRecognitionWindow;
+ const SpeechRecognitionClass =
+ speechWindow.SpeechRecognition || speechWindow.webkitSpeechRecognition;
+ if (SpeechRecognitionClass) {
+ setIsSupported(true);
+ const recognition: SpeechRecognitionLike = new SpeechRecognitionClass();
+ recognition.continuous = continuous;
+ recognition.interimResults = interimResults;
+ recognition.lang = lang;
+
+ recognition.onstart = () => {
+ setIsListening(true);
+ setError(null);
+ };
+
+ recognition.onresult = (event: SpeechRecognitionEventLike) => {
+ let currentTranscript = "";
+ for (let i = event.resultIndex; i < event.results.length; i++) {
+ currentTranscript += event.results[i][0].transcript;
+ }
+ setTranscript(currentTranscript);
+ if (onResultRef.current && currentTranscript) {
+ onResultRef.current(currentTranscript);
+ }
+ };
+
+ recognition.onerror = (event: SpeechRecognitionErrorEventLike) => {
+ setError(event.error);
+ setIsListening(false);
+ };
+
+ recognition.onend = () => {
+ setIsListening(false);
+ };
+
+ recognitionRef.current = recognition;
+ } else {
+ setIsSupported(false);
+ }
+ }
+
+ return () => {
+ if (recognitionRef.current) {
+ recognitionRef.current.abort();
+ }
+ };
+ }, [lang, continuous, interimResults]);
+
+ const startListening = useCallback(() => {
+ if (!recognitionRef.current) return;
+ try {
+ setTranscript("");
+ setError(null);
+ recognitionRef.current.start();
+ setIsListening(true);
+ } catch (err) {
+ setError(err instanceof Error ? err.message : "Failed to start speech recognition");
+ }
+ }, []);
+
+ const stopListening = useCallback(() => {
+ if (!recognitionRef.current) return;
+ try {
+ recognitionRef.current.stop();
+ setIsListening(false);
+ } catch {
+ // Ignore stop errors
+ }
+ }, []);
+
+ const toggleListening = useCallback(() => {
+ if (isListening) {
+ stopListening();
+ } else {
+ startListening();
+ }
+ }, [isListening, startListening, stopListening]);
+
+ const resetTranscript = useCallback(() => {
+ setTranscript("");
+ setError(null);
+ }, []);
+
+ return {
+ isListening,
+ transcript,
+ isSupported,
+ error,
+ startListening,
+ stopListening,
+ toggleListening,
+ resetTranscript,
+ };
+}
diff --git a/app/layout.tsx b/app/layout.tsx
index 64cc256..514896c 100644
--- a/app/layout.tsx
+++ b/app/layout.tsx
@@ -4,8 +4,9 @@ import { Analytics } from "@vercel/analytics/next";
import { Providers } from "@/components/Providers";
import { Navbar } from "@/components/Navbar";
import { Footer } from "@/components/Footer";
+import { AIAssistant } from "@/components/AIAssistant";
import { SpeedInsights } from "@vercel/speed-insights/next";
-import "./globals.css";
+import "@/globals.css";
const geistSans = Geist({
variable: "--font-geist-sans",
@@ -45,6 +46,7 @@ export default function RootLayout({ children }: RootLayoutProps) {
{children}
+
diff --git a/app/lib/ai/config.ts b/app/lib/ai/config.ts
new file mode 100644
index 0000000..689c2b6
--- /dev/null
+++ b/app/lib/ai/config.ts
@@ -0,0 +1,65 @@
+import type { LanguageModel } from "ai";
+import { createGoogleGenerativeAI } from "@ai-sdk/google";
+import { createOpenAI } from "@ai-sdk/openai";
+import { createAnthropic } from "@ai-sdk/anthropic";
+import { env } from "@/lib/env";
+import { mockModel } from "@/lib/ai/mock-provider";
+
+export type AIProvider = "mock" | "google" | "openai" | "anthropic" | "custom" | (string & {});
+
+export interface ModelResolutionOptions {
+ provider?: AIProvider;
+ model?: string;
+ apiKey?: string;
+ baseURL?: string;
+}
+
+export function getModel(options: ModelResolutionOptions = {}): LanguageModel {
+ const provider = options.provider || env.AI_PROVIDER || "mock";
+ const modelName = options.model || env.AI_MODEL;
+ const apiKey = options.apiKey;
+ const baseURL = options.baseURL || env.AI_BASE_URL;
+
+ switch (provider) {
+ case "google": {
+ const key = apiKey || env.GOOGLE_GENERATIVE_AI_API_KEY;
+ if (!key) return mockModel;
+ const google = createGoogleGenerativeAI({ apiKey: key });
+ return google(modelName || "gemini-2.5-flash");
+ }
+
+ case "openai": {
+ const key = apiKey || env.OPENAI_API_KEY;
+ if (!key) return mockModel;
+ const openai = createOpenAI({
+ apiKey: key,
+ baseURL: baseURL || undefined,
+ });
+ return openai(modelName || "gpt-4o-mini");
+ }
+
+ case "anthropic": {
+ const key = apiKey || env.ANTHROPIC_API_KEY;
+ if (!key) return mockModel;
+ const anthropic = createAnthropic({
+ apiKey: key,
+ baseURL: baseURL || undefined,
+ });
+ return anthropic(modelName || "claude-3-7-sonnet-20250219");
+ }
+
+ case "custom": {
+ const customOpenAI = createOpenAI({
+ apiKey: apiKey || env.OPENAI_API_KEY || "custom",
+ baseURL: baseURL || "http://localhost:11434/v1",
+ });
+ return customOpenAI(modelName || "llama3.2");
+ }
+
+ case "mock":
+ default:
+ return mockModel;
+ }
+}
+
+export const defaultModel = getModel();
diff --git a/app/lib/ai/env.ts b/app/lib/ai/env.ts
new file mode 100644
index 0000000..5fcfc21
--- /dev/null
+++ b/app/lib/ai/env.ts
@@ -0,0 +1,23 @@
+import { z } from "zod";
+
+export const aiEnvSchema = z.object({
+ AI_PROVIDER: z
+ .enum(["mock", "google", "openai", "anthropic", "custom"])
+ .default("mock"),
+ AI_MODEL: z.string().optional(),
+ GOOGLE_GENERATIVE_AI_API_KEY: z.string().optional(),
+ OPENAI_API_KEY: z.string().optional(),
+ ANTHROPIC_API_KEY: z.string().optional(),
+ AI_BASE_URL: z.url().optional().or(z.literal("")),
+});
+
+export const aiEnv = aiEnvSchema.parse({
+ AI_PROVIDER: process.env.AI_PROVIDER,
+ AI_MODEL: process.env.AI_MODEL,
+ GOOGLE_GENERATIVE_AI_API_KEY: process.env.GOOGLE_GENERATIVE_AI_API_KEY,
+ OPENAI_API_KEY: process.env.OPENAI_API_KEY,
+ ANTHROPIC_API_KEY: process.env.ANTHROPIC_API_KEY,
+ AI_BASE_URL: process.env.AI_BASE_URL,
+});
+
+export type AIEnv = z.infer;
diff --git a/app/lib/ai/mock-provider.ts b/app/lib/ai/mock-provider.ts
new file mode 100644
index 0000000..0734025
--- /dev/null
+++ b/app/lib/ai/mock-provider.ts
@@ -0,0 +1,172 @@
+import { MockLanguageModelV3 } from "ai/test";
+import type { LanguageModel } from "ai";
+
+export interface MockModelOptions {
+ customResponses?: Record;
+ simulateTools?: boolean;
+}
+
+function extractPromptText(prompt: unknown): string {
+ if (typeof prompt === "string") return prompt.toLowerCase();
+ if (Array.isArray(prompt)) {
+ return prompt
+ .map((msg) => {
+ if (typeof msg === "string") return msg;
+ if (typeof msg === "object" && msg !== null) {
+ if ("content" in msg) {
+ const content = (msg as { content: unknown }).content;
+ if (typeof content === "string") return content;
+ if (Array.isArray(content)) {
+ return content
+ .map((part) => (typeof part === "object" && part && "text" in part ? String((part as { text: unknown }).text) : ""))
+ .join(" ");
+ }
+ }
+ }
+ return "";
+ })
+ .join(" ")
+ .toLowerCase();
+ }
+ return "";
+}
+
+export function createMockModel(options: MockModelOptions = {}): LanguageModel {
+ const { simulateTools = true } = options;
+
+ return new MockLanguageModelV3({
+ modelId: "cur8d-mock-model",
+ doGenerate: async ({ prompt }) => {
+ const text = extractPromptText(prompt);
+ const content = `Mock AI response for query: "${text}". cur8d is configured with Next.js 16, HeroUI v3, Tailwind CSS v4, and assistant-ui.`;
+ return {
+ content: [{ type: "text", text: content }],
+ finishReason: { unified: "stop", raw: "stop" },
+ usage: {
+ inputTokens: { total: 10, noCache: 10, cacheRead: 0, cacheWrite: 0 },
+ outputTokens: { total: 25, text: 25, reasoning: 0 },
+ },
+ warnings: [],
+ rawCall: { rawPrompt: prompt, rawSettings: {} },
+ };
+ },
+ doStream: async ({ prompt }) => {
+ const text = extractPromptText(prompt);
+
+ // Check for tool triggers if simulateTools is true
+ if (simulateTools && (text.includes("theme") || text.includes("dark") || text.includes("light"))) {
+ const theme = text.includes("light") ? "light" : "dark";
+ return {
+ stream: new ReadableStream({
+ start(controller) {
+ controller.enqueue({
+ type: "tool-call",
+ toolCallId: "call_theme_1",
+ toolName: "setTheme",
+ input: JSON.stringify({ theme }),
+ });
+ controller.enqueue({
+ type: "finish",
+ finishReason: { unified: "tool-calls", raw: "tool-calls" },
+ usage: {
+ inputTokens: { total: 12, noCache: 12, cacheRead: 0, cacheWrite: 0 },
+ outputTokens: { total: 18, text: 18, reasoning: 0 },
+ },
+ });
+ controller.close();
+ },
+ }),
+ rawCall: { rawPrompt: prompt, rawSettings: {} },
+ };
+ }
+
+ if (simulateTools && (text.includes("system") || text.includes("info") || text.includes("stack"))) {
+ return {
+ stream: new ReadableStream({
+ start(controller) {
+ controller.enqueue({
+ type: "tool-call",
+ toolCallId: "call_sysinfo_1",
+ toolName: "getSystemInfo",
+ input: JSON.stringify({}),
+ });
+ controller.enqueue({
+ type: "finish",
+ finishReason: { unified: "tool-calls", raw: "tool-calls" },
+ usage: {
+ inputTokens: { total: 10, noCache: 10, cacheRead: 0, cacheWrite: 0 },
+ outputTokens: { total: 15, text: 15, reasoning: 0 },
+ },
+ });
+ controller.close();
+ },
+ }),
+ rawCall: { rawPrompt: prompt, rawSettings: {} },
+ };
+ }
+
+ if (simulateTools && (text.includes("search") || text.includes("doc") || text.includes("guide"))) {
+ return {
+ stream: new ReadableStream({
+ start(controller) {
+ controller.enqueue({
+ type: "tool-call",
+ toolCallId: "call_docs_1",
+ toolName: "searchDocumentation",
+ input: JSON.stringify({ query: text.includes("search") ? text.replace("search", "").trim() : "overview" }),
+ });
+ controller.enqueue({
+ type: "finish",
+ finishReason: { unified: "tool-calls", raw: "tool-calls" },
+ usage: {
+ inputTokens: { total: 15, noCache: 15, cacheRead: 0, cacheWrite: 0 },
+ outputTokens: { total: 20, text: 20, reasoning: 0 },
+ },
+ });
+ controller.close();
+ },
+ }),
+ rawCall: { rawPrompt: prompt, rawSettings: {} },
+ };
+ }
+
+ // Default mock streaming response
+ const chunks = [
+ "👋 **Welcome to cur8d AI Assistant!**\n\n",
+ "I am your built-in developer copilot running in **Zero-Config Mock Mode**. Here is what makes `cur8d` special:\n\n",
+ "- ⚡ **Next.js 16 & React 19**: App Router, Server Components & Turbopack\n",
+ "- 🎨 **HeroUI v3 & Tailwind CSS v4**: Accessible compound components and theme variables\n",
+ "- 🤖 **assistant-ui & Vercel AI SDK**: Production-ready streaming chat and generative UI\n",
+ "- 🧪 **Vitest & Playwright**: Unit tests, $\\ge 80\\%$ coverage, and accessibility audits\n\n",
+ "```bash\n# Verify your project anytime\nmise run verify\n```\n\n",
+ "Ask me anything about components, routing, or tools!",
+ ];
+
+ return {
+ stream: new ReadableStream({
+ start(controller) {
+ for (let i = 0; i < chunks.length; i++) {
+ controller.enqueue({
+ type: "text-delta",
+ id: `chunk_${i}`,
+ delta: chunks[i],
+ });
+ }
+ controller.enqueue({
+ type: "finish",
+ finishReason: { unified: "stop", raw: "stop" },
+ usage: {
+ inputTokens: { total: 20, noCache: 20, cacheRead: 0, cacheWrite: 0 },
+ outputTokens: { total: chunks.join("").length, text: chunks.join("").length, reasoning: 0 },
+ },
+ });
+ controller.close();
+ },
+ }),
+ rawCall: { rawPrompt: prompt, rawSettings: {} },
+ };
+ },
+ });
+}
+
+export const mockModel = createMockModel();
diff --git a/app/lib/ai/system-prompt.ts b/app/lib/ai/system-prompt.ts
new file mode 100644
index 0000000..00f2967
--- /dev/null
+++ b/app/lib/ai/system-prompt.ts
@@ -0,0 +1,21 @@
+export const SYSTEM_PROMPT = `You are the AI developer assistant for cur8d, a production-ready Next.js starter optimized for performance, accessibility, and type safety.
+
+## Technical Context & Guidelines:
+- **Framework**: Next.js 16 (App Router, Turbopack, React 19 Server Components by default; "use client" only for interactive leaf components).
+- **Design System**: HeroUI v3 with compound components using dot notation (e.g. , , ).
+- **Styling**: Tailwind CSS v4 with CSS-first variables and next-themes dark mode support.
+- **Icons**: Named imports from 'lucide-react' with size-* or h-* w-* utility classes.
+- **Toolchain**: Managed with mise (e.g. 'mise run verify', 'mise run dev', 'mise run test', 'mise run build').
+- **Testing**: Vitest for unit tests (>= 80% coverage required) and Playwright for E2E and axe-core accessibility audits.
+- **Data & Utilities**: Zod schemas in app/lib/env.ts, centralized error reporting in app/lib/error-reporting.ts.
+
+## Available Tools:
+1. \`searchDocumentation\`: Use whenever the user asks about documentation, guides, setup steps, or API references.
+2. \`setTheme\`: Use when the user requests switching theme (light, dark, or system).
+3. \`getSystemInfo\`: Use when the user asks about current project stack, versions, or health status.
+4. \`navigatePage\`: Use when the user asks to navigate to a specific page or route.
+
+## Response Style:
+- Be concise, friendly, precise, and practical.
+- Use GitHub-flavored Markdown with syntax-highlighted code blocks where helpful.
+- Suggest mise commands (e.g., 'mise run verify') when giving build/test guidance.`;
diff --git a/app/lib/ai/tools.ts b/app/lib/ai/tools.ts
new file mode 100644
index 0000000..e9d5ec5
--- /dev/null
+++ b/app/lib/ai/tools.ts
@@ -0,0 +1,141 @@
+import { tool } from "ai";
+import { z } from "zod";
+import { env } from "@/lib/env";
+
+export interface DocItem {
+ title: string;
+ path: string;
+ description: string;
+ category: string;
+}
+
+export interface SystemInfo {
+ name: string;
+ version: string;
+ framework: string;
+ runtime: string;
+ designSystem: string;
+ aiStack: string;
+ environment: string;
+ provider: string;
+ status: string;
+}
+
+export const DOCS_CATALOG: DocItem[] = [
+ {
+ title: "Project Overview",
+ path: "/docs",
+ description: "Learn about the cur8d starter architecture, philosophy, and features.",
+ category: "Getting Started",
+ },
+ {
+ title: "Environment Variables",
+ path: "/docs/getting-started/environment-variables",
+ description: "Manage and validate environment variables with Zod.",
+ category: "Getting Started",
+ },
+ {
+ title: "AI Assistant",
+ path: "/docs/features/ai-assistant",
+ description: "assistant-ui and Vercel AI SDK integration with zero-config mock mode.",
+ category: "Features",
+ },
+ {
+ title: "Theme & Dark Mode",
+ path: "/docs/features/theme",
+ description: "next-themes and Tailwind CSS v4 CSS variables integration.",
+ category: "Features",
+ },
+ {
+ title: "Testing Guide",
+ path: "/docs/reference/testing",
+ description: "Vitest unit tests (80% coverage) and Playwright a11y testing.",
+ category: "Reference",
+ },
+ {
+ title: "CLI & Mise Commands",
+ path: "/docs/reference/commands",
+ description: "Toolchain commands for dev, verify, test, lint, and build.",
+ category: "Reference",
+ },
+ {
+ title: "Deployment",
+ path: "/docs/deployment",
+ description: "Deploy cur8d to Vercel, Render, or Firebase Hosting.",
+ category: "Deployment",
+ },
+];
+
+export const searchDocumentation = tool({
+ description: "Search documentation and feature guides for cur8d.",
+ inputSchema: z.object({
+ query: z.string().describe("Search keywords or topic to find"),
+ }),
+ execute: async ({ query }: { query: string }) => {
+ const q = query.toLowerCase();
+ const results = DOCS_CATALOG.filter(
+ (item) =>
+ item.title.toLowerCase().includes(q) ||
+ item.description.toLowerCase().includes(q) ||
+ item.category.toLowerCase().includes(q)
+ );
+
+ return {
+ query,
+ results: results.length > 0 ? results : DOCS_CATALOG.slice(0, 3),
+ };
+ },
+});
+
+export const setTheme = tool({
+ description: "Set the active color theme of the application (light, dark, or system).",
+ inputSchema: z.object({
+ theme: z.enum(["light", "dark", "system"]).describe("The desired theme"),
+ }),
+ execute: async ({ theme }: { theme: "light" | "dark" | "system" }) => {
+ return {
+ success: true,
+ theme,
+ message: `Theme has been requested to be set to '${theme}'.`,
+ };
+ },
+});
+
+export const getSystemInfo = tool({
+ description: "Get technical specifications and version metadata for the cur8d stack.",
+ inputSchema: z.object({}),
+ execute: async () => {
+ return {
+ name: "cur8d",
+ version: "0.1.0",
+ framework: "Next.js 16 (App Router / Turbopack)",
+ runtime: "React 19 Server Components",
+ designSystem: "HeroUI v3 + Tailwind CSS v4",
+ aiStack: "assistant-ui + Vercel AI SDK",
+ environment: env.NODE_ENV,
+ provider: env.AI_PROVIDER,
+ status: "operational",
+ };
+ },
+});
+
+export const navigatePage = tool({
+ description: "Navigate to a specific page or route within the cur8d application.",
+ inputSchema: z.object({
+ route: z.string().describe("Target route path (e.g., '/', '/docs', '/docs/features/ai-assistant')"),
+ }),
+ execute: async ({ route }: { route: string }) => {
+ return {
+ success: true,
+ route,
+ message: `Navigating to ${route}`,
+ };
+ },
+});
+
+export const aiTools = {
+ searchDocumentation,
+ setTheme,
+ getSystemInfo,
+ navigatePage,
+};
diff --git a/app/lib/env.ts b/app/lib/env.ts
index 857682a..d761c64 100644
--- a/app/lib/env.ts
+++ b/app/lib/env.ts
@@ -1,6 +1,7 @@
import { z } from "zod";
+import { aiEnvSchema } from "@/lib/ai/env";
-const envSchema = z.object({
+const baseEnvSchema = z.object({
NODE_ENV: z.enum(["development", "production", "test"]).default("development"),
BLOB_READ_WRITE_TOKEN: z
.string()
@@ -9,9 +10,17 @@ const envSchema = z.object({
.optional(),
});
+const envSchema = baseEnvSchema.extend(aiEnvSchema.shape);
+
export const env = envSchema.parse({
NODE_ENV: process.env.NODE_ENV,
BLOB_READ_WRITE_TOKEN: process.env.BLOB_READ_WRITE_TOKEN,
+ AI_PROVIDER: process.env.AI_PROVIDER,
+ AI_MODEL: process.env.AI_MODEL,
+ GOOGLE_GENERATIVE_AI_API_KEY: process.env.GOOGLE_GENERATIVE_AI_API_KEY,
+ OPENAI_API_KEY: process.env.OPENAI_API_KEY,
+ ANTHROPIC_API_KEY: process.env.ANTHROPIC_API_KEY,
+ AI_BASE_URL: process.env.AI_BASE_URL,
});
export type Env = z.infer;
diff --git a/docs/app/[[...mdxPath]]/page.tsx b/docs/app/[[...mdxPath]]/page.tsx
index 2244f7c..bab62cb 100644
--- a/docs/app/[[...mdxPath]]/page.tsx
+++ b/docs/app/[[...mdxPath]]/page.tsx
@@ -1,5 +1,5 @@
import { generateStaticParamsFor, importPage } from 'nextra/pages'
-import { useMDXComponents as getMDXComponents } from '../../mdx-components'
+import { useMDXComponents as getMDXComponents } from '@docs/mdx-components'
export const generateStaticParams = generateStaticParamsFor('mdxPath')
diff --git a/docs/content/_meta.js b/docs/content/_meta.js
index 449778a..34961d6 100644
--- a/docs/content/_meta.js
+++ b/docs/content/_meta.js
@@ -1,6 +1,7 @@
export default {
"index": "Introduction",
"getting-started": "Getting Started",
+ "features": "Features",
"guides": "Guides",
"reference": "Reference",
"deployment": "Deployment",
diff --git a/docs/content/features/_meta.js b/docs/content/features/_meta.js
new file mode 100644
index 0000000..d553dd1
--- /dev/null
+++ b/docs/content/features/_meta.js
@@ -0,0 +1,3 @@
+export default {
+ "ai-assistant": "AI Assistant"
+}
diff --git a/docs/content/features/ai-assistant.mdx b/docs/content/features/ai-assistant.mdx
new file mode 100644
index 0000000..7b28f84
--- /dev/null
+++ b/docs/content/features/ai-assistant.mdx
@@ -0,0 +1,138 @@
+# AI Assistant
+
+cur8d includes a production-ready, accessible, and extensible **AI Assistant** interface powered by **[`assistant-ui`](https://www.assistant-ui.com/)** (`@assistant-ui/react`) and the **[Vercel AI SDK](https://sdk.vercel.ai/)** (`ai`).
+
+---
+
+## Highlights
+
+- ⚡ **Zero-Config Default**: Works instantly in development and CI/CD without requiring third-party API keys using our built-in realistic mock provider.
+- 🎨 **HeroUI v3 & Tailwind CSS v4**: Beautiful, accessible slide-over drawer shell, floating trigger badge, and compound component styling.
+- 🛠️ **Generative UI & Tool Calling**: Interactive tool cards for searching documentation, switching theme, and inspecting system metrics.
+- 🎙️ **Voice Input**: Speech-to-text dictation powered by the Web Speech API with microphone indicator.
+- ⌨️ **Keyboard Accessibility**: Full keyboard support with `⌘J` / `Ctrl+J` toggle, `Escape` dismissal, and ARIA attributes.
+- 🔄 **Multi-Provider Switching**: Dynamic model resolution for Google Gemini, OpenAI GPT-4o, Anthropic Claude, and local LLMs (Ollama).
+
+---
+
+## Architecture
+
+```
+User (⌘J / Click Trigger)
+ │
+ ▼
+AssistantTrigger (Floating Action Button & Modal Shell)
+ │
+ ▼
+Thread & Composer (@assistant-ui/react)
+ │
+ ▼
+useChatRuntime (@assistant-ui/react-ai-sdk)
+ │ (POST /api/chat - SSE Stream)
+ ▼
+App Router Route Handler (streamText())
+ ┌─────┴─────────────────────────┐
+ │ │
+ ▼ ▼
+Provider Resolver Tool Registry
+ - Mock (Zero-Config) - searchDocumentation
+ - Google Gemini 2.5 - setTheme
+ - OpenAI GPT-4o - getSystemInfo
+ - Anthropic Claude 3.7 - navigatePage
+ - Local Ollama / Custom
+```
+
+---
+
+## Environment Variables
+
+Configure your preferred AI provider in `.env`:
+
+```bash
+# Provider: "mock" (default) | "google" | "openai" | "anthropic" | "custom"
+AI_PROVIDER=mock
+
+# Model name override (optional)
+AI_MODEL=
+
+# API Keys (required when provider is not "mock")
+GOOGLE_GENERATIVE_AI_API_KEY=
+OPENAI_API_KEY=
+ANTHROPIC_API_KEY=
+
+# Base URL for custom or local OpenAI-compatible endpoints (e.g., Ollama)
+AI_BASE_URL=http://localhost:11434/v1
+```
+
+---
+
+## Generative UI Tools
+
+The AI assistant can invoke client and server tools to render rich generative cards:
+
+### 1. `searchDocumentation`
+Searches project guides and docs catalog, rendering interactive cards with direct navigation links.
+
+### 2. `setTheme`
+Changes active theme (`light`, `dark`, `system`) on the client using `next-themes` and displays confirmation feedback.
+
+### 3. `getSystemInfo`
+Queries framework versions (Next.js 16, React 19, HeroUI v3, Tailwind CSS v4) and reports environment health.
+
+### 4. `navigatePage`
+Navigates the user to a target URL or route within the application.
+
+---
+
+## Adding Custom Tools
+
+To add a new server tool and generative UI card:
+
+1. **Define the Server Tool** in `app/lib/ai/tools.ts`:
+ ```typescript
+ import { tool } from "ai";
+ import { z } from "zod";
+
+ export const myCustomTool = tool({
+ description: "Description of what this tool does",
+ inputSchema: z.object({
+ query: z.string(),
+ }),
+ execute: async ({ query }) => {
+ return { success: true, data: query };
+ },
+ });
+ ```
+
+2. **Create the Generative UI Component** in `app/components/AIAssistant/tools/`:
+ ```typescript
+ "use client";
+ import type { ToolCallMessagePartComponent } from "@assistant-ui/react";
+
+ export interface MyCustomToolArgs {
+ query: string;
+ }
+
+ export interface MyCustomToolResult {
+ success: boolean;
+ data: string;
+ }
+
+ export const MyCustomToolUI: ToolCallMessagePartComponent = ({ result, status }) => {
+ if (status.type === "running") return Running...
;
+ return Result: {JSON.stringify(result)}
;
+ };
+ ```
+
+3. **Register the Tool in Toolkit** in `app/components/AIAssistant/toolkit.ts`:
+ ```typescript
+ import { defineToolkit } from "@assistant-ui/react";
+ import { MyCustomToolUI } from "@/components/AIAssistant/tools/MyCustomTool";
+
+ export const assistantToolkit = defineToolkit({
+ // ...other tools
+ myCustomTool: {
+ render: MyCustomToolUI,
+ },
+ });
+ ```
diff --git a/docs/tsconfig.json b/docs/tsconfig.json
index c1a1454..20ee82d 100644
--- a/docs/tsconfig.json
+++ b/docs/tsconfig.json
@@ -21,7 +21,12 @@
{
"name": "next"
}
- ]
+ ],
+ "paths": {
+ "@docs/*": [
+ "./*"
+ ]
+ }
},
"include": [
"next-env.d.ts",
diff --git a/package.json b/package.json
index f00c635..7084078 100644
--- a/package.json
+++ b/package.json
@@ -21,6 +21,15 @@
"deploy:render": "curl -f -X POST $RENDER_DEPLOY_HOOK"
},
"dependencies": {
+ "@ai-sdk/anthropic": "^4.0.41",
+ "@ai-sdk/google": "^4.0.50",
+ "@ai-sdk/openai": "^4.0.46",
+ "@ai-sdk/provider": "^4.0.7",
+ "@ai-sdk/react": "^4.0.80",
+ "@assistant-ui/react": "^0.15.16",
+ "@assistant-ui/react-ai-sdk": "^1.4.7",
+ "@assistant-ui/react-markdown": "^0.14.12",
+ "@assistant-ui/react-syntax-highlighter": "^0.14.5",
"@heroui/react": "3.2.6",
"@heroui/styles": "^3.2.6",
"@icons-pack/react-simple-icons": "^13.15.1",
@@ -28,6 +37,7 @@
"@vercel/analytics": "^2.0.1",
"@vercel/blob": "2.8.0",
"@vercel/speed-insights": "^2.0.0",
+ "ai": "^7.0.77",
"cmdk": "1.1.1",
"framer-motion": "13.4.3",
"lucide-react": "1.48.0",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index ee2104d..a6ff418 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -31,6 +31,33 @@ importers:
.:
dependencies:
+ '@ai-sdk/anthropic':
+ specifier: ^4.0.41
+ version: 4.0.41(zod@4.6.5)
+ '@ai-sdk/google':
+ specifier: ^4.0.50
+ version: 4.0.50(zod@4.6.5)
+ '@ai-sdk/openai':
+ specifier: ^4.0.46
+ version: 4.0.46(zod@4.6.5)
+ '@ai-sdk/provider':
+ specifier: ^4.0.7
+ version: 4.0.7
+ '@ai-sdk/react':
+ specifier: ^4.0.80
+ version: 4.0.80(react@19.3.0)(zod@4.6.5)
+ '@assistant-ui/react':
+ specifier: ^0.15.16
+ version: 0.15.16(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)(use-sync-external-store@1.6.0(react@19.3.0))
+ '@assistant-ui/react-ai-sdk':
+ specifier: ^1.4.7
+ version: 1.4.7(@types/react@19.3.0)(react@19.3.0)(zod@4.6.5)(zustand@5.0.15(@types/react@19.3.0)(react@19.3.0)(use-sync-external-store@1.6.0(react@19.3.0)))
+ '@assistant-ui/react-markdown':
+ specifier: ^0.14.12
+ version: 0.14.12(@assistant-ui/react@0.15.16(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)(use-sync-external-store@1.6.0(react@19.3.0)))(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)(supports-color@7.2.0)
+ '@assistant-ui/react-syntax-highlighter':
+ specifier: ^0.14.5
+ version: 0.14.5(@assistant-ui/react-markdown@0.14.12(@assistant-ui/react@0.15.16(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)(use-sync-external-store@1.6.0(react@19.3.0)))(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)(supports-color@7.2.0))(@assistant-ui/react@0.15.16(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)(use-sync-external-store@1.6.0(react@19.3.0)))(@types/react@19.3.0)(react-syntax-highlighter@16.1.1(react@19.3.0))(react@19.3.0)
'@heroui/react':
specifier: 3.2.6
version: 3.2.6(@internationalized/date@3.12.4)(@react-aria/ssr@3.10.1(react-dom@19.3.0(react@19.3.0))(react@19.3.0))(@react-aria/utils@3.34.1(react-dom@19.3.0(react@19.3.0))(react@19.3.0))(@react-spectrum/provider@3.11.0(react-dom@19.3.0(react@19.3.0))(react@19.3.0))(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-aria-components@1.21.1(react-dom@19.3.0(react@19.3.0))(react@19.3.0))(react-aria@3.52.1(react-dom@19.3.0(react@19.3.0))(react@19.3.0))(react-dom@19.3.0(react@19.3.0))(react@19.3.0)(tailwind-merge@3.4.0)(tailwindcss@4.3.3)
@@ -52,6 +79,9 @@ importers:
'@vercel/speed-insights':
specifier: ^2.0.0
version: 2.0.0(next@16.3.6(@babel/core@7.29.7(supports-color@7.2.0))(@opentelemetry/api@1.9.1)(@playwright/test@1.63.0)(@types/node@26.6.2)(react-dom@19.3.0(react@19.3.0))(react@19.3.0))(react@19.3.0)
+ ai:
+ specifier: ^7.0.77
+ version: 7.0.77(zod@4.6.5)
cmdk:
specifier: 1.1.1
version: 1.1.1(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)
@@ -124,7 +154,7 @@ importers:
version: 8.70.1(eslint@10.11.0(jiti@2.7.0)(supports-color@7.2.0))(supports-color@7.2.0)(typescript@6.0.3)
'@vitejs/plugin-react':
specifier: 6.1.1
- version: 6.1.1(vite@8.3.0(@types/node@26.6.2)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.15)(yaml@2.9.1))
+ version: 6.1.1(vite@8.3.1(@types/node@26.6.2)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.15)(yaml@2.9.0))
'@vitest/coverage-v8':
specifier: 4.1.11
version: 4.1.11(vitest@4.1.11)
@@ -163,10 +193,10 @@ importers:
version: 59.26.0(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.3)(rollup@4.62.2)(supports-color@7.2.0)
vite:
specifier: ^8.3.0
- version: 8.3.0(@types/node@26.6.2)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.15)(yaml@2.9.1)
+ version: 8.3.1(@types/node@26.6.2)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.15)(yaml@2.9.0)
vitest:
specifier: 4.1.11
- version: 4.1.11(@edge-runtime/vm@3.2.0)(@opentelemetry/api@1.9.1)(@types/node@26.6.2)(@vitest/coverage-v8@4.1.11)(jsdom@30.1.1)(vite@8.3.0(@types/node@26.6.2)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.15)(yaml@2.9.1))
+ version: 4.1.11(@edge-runtime/vm@3.2.0)(@opentelemetry/api@1.9.1)(@types/node@26.6.2)(@vitest/coverage-v8@4.1.11)(jsdom@30.1.1)(vite@8.3.1(@types/node@26.6.2)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.15)(yaml@2.9.0))
docs:
dependencies:
@@ -187,7 +217,7 @@ importers:
version: 4.6.1(next@16.3.4(@babel/core@7.29.7(supports-color@7.2.0))(@opentelemetry/api@1.9.1)(@playwright/test@1.63.0)(@types/node@26.4.1)(react-dom@19.2.8(react@19.2.8))(react@19.2.8))(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(supports-color@7.2.0)(typescript@6.0.3)
nextra-theme-docs:
specifier: 4.6.1
- version: 4.6.1(patch_hash=82125a19d7899580770f4e436be0d74752fb6fa0d45fe977f2569bedae60ad51)(@types/react@19.2.18)(next@16.3.4(@babel/core@7.29.7(supports-color@7.2.0))(@opentelemetry/api@1.9.1)(@playwright/test@1.63.0)(@types/node@26.4.1)(react-dom@19.2.8(react@19.2.8))(react@19.2.8))(nextra@4.6.1(next@16.3.4(@babel/core@7.29.7(supports-color@7.2.0))(@opentelemetry/api@1.9.1)(@playwright/test@1.63.0)(@types/node@26.4.1)(react-dom@19.2.8(react@19.2.8))(react@19.2.8))(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(supports-color@7.2.0)(typescript@6.0.3))(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(use-sync-external-store@1.7.0(react@19.2.8))
+ version: 4.6.1(patch_hash=82125a19d7899580770f4e436be0d74752fb6fa0d45fe977f2569bedae60ad51)(@types/react@19.2.18)(next@16.3.4(@babel/core@7.29.7(supports-color@7.2.0))(@opentelemetry/api@1.9.1)(@playwright/test@1.63.0)(@types/node@26.4.1)(react-dom@19.2.8(react@19.2.8))(react@19.2.8))(nextra@4.6.1(next@16.3.4(@babel/core@7.29.7(supports-color@7.2.0))(@opentelemetry/api@1.9.1)(@playwright/test@1.63.0)(@types/node@26.4.1)(react-dom@19.2.8(react@19.2.8))(react@19.2.8))(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(supports-color@7.2.0)(typescript@6.0.3))(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(use-sync-external-store@1.6.0(react@19.2.8))
postcss:
specifier: ^8.5.26
version: 8.5.26
@@ -240,14 +270,60 @@ packages:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
- '@adobe/react-spectrum@3.47.5':
- resolution: {integrity: sha512-iTbAwwMijVnQjwjwbvkWn82AyRAbFNSJzt/VawWp1vXRIxVIO9COZ1pPG5Fj88xXgqlG8maVcv58p74vqqy5HA==}
+ '@adobe/react-spectrum@3.47.3':
+ resolution: {integrity: sha512-tWZG59+xTbXIqeZB4uyuo2qljk3nRK66IkdBmMgbl2p6peApkKbrtJ/YOM8rW4gemdmv7qoJlbIHvy8aJkYsCQ==}
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
- '@alloc/quick-lru@5.3.0':
- resolution: {integrity: sha512-U4+70Pc5ZS9osnCBCE5Jha/ciHM+Yp+CNMNC/7HvYbNRk1Ldd+f7qO65W5qfhu/TCv+/ozljlXXe9Nj8419DMA==}
+ '@ai-sdk/anthropic@4.0.41':
+ resolution: {integrity: sha512-So62as8fexWMmXMIxvrWVaDLjLRe6EG2+5mmRc1KCPBoyyyFx6zbTcCvxJkViSUHhsGMBDryAm+mfs91n7Jl8g==}
+ engines: {node: '>=22'}
+ peerDependencies:
+ zod: ^3.25.76 || ^4.1.8
+
+ '@ai-sdk/gateway@4.0.62':
+ resolution: {integrity: sha512-zR3pustGWhw5eUZHG+fJZx/V/PBe+LxdDpc5hDFWxozG/3MB/+eY62jn+YiR+9uOH+Hx63e5zJoeKLfZfPktWQ==}
+ engines: {node: '>=22'}
+ peerDependencies:
+ zod: ^3.25.76 || ^4.1.8
+
+ '@ai-sdk/google@4.0.50':
+ resolution: {integrity: sha512-n7aMmqw6ZGVNBDAiv89fZkuZp3ahfzwZTXsdW27WugXdFSIuLTlYBZ+FlKGRdk1pRMPrdIGT2GPL2Ra0Gc2Tkg==}
+ engines: {node: '>=22'}
+ peerDependencies:
+ zod: ^3.25.76 || ^4.1.8
+
+ '@ai-sdk/mcp@2.0.36':
+ resolution: {integrity: sha512-0RB0THm8EcTjvgNYifsXV21O0IozTx2/uJmtIjzY4myET1iVsvUh07xVfwSRY7keBkJhmK2kaF99qFlrWZDLXQ==}
+ engines: {node: '>=22'}
+ peerDependencies:
+ zod: ^3.25.76 || ^4.1.8
+
+ '@ai-sdk/openai@4.0.46':
+ resolution: {integrity: sha512-J53QUkZGOV9YIYf9caVjejdPZfVZ3V2xD5KyTAmMWFiMDkC/IcifEQHJferpGFaQkfmSehPGVPCLE4g8+VdkTA==}
+ engines: {node: '>=22'}
+ peerDependencies:
+ zod: ^3.25.76 || ^4.1.8
+
+ '@ai-sdk/provider-utils@5.0.29':
+ resolution: {integrity: sha512-7EIbwXiXKGa7EFk6tDZpuZBs6lxhEJpOuHeqrDb3Vd85uYdjwkdRuHnZDVDIIb2+QTSRmyph2NrXcbvuO/KAjQ==}
+ engines: {node: '>=22'}
+ peerDependencies:
+ zod: ^3.25.76 || ^4.1.8
+
+ '@ai-sdk/provider@4.0.7':
+ resolution: {integrity: sha512-6or44XprPzKbr8zkmzosowSE0pxkvJcoojBL+mCZvPUt3kvXp3XSNqeVun9golb1acEfSo6yaEBRT18h2VU+1Q==}
+ engines: {node: '>=22'}
+
+ '@ai-sdk/react@4.0.80':
+ resolution: {integrity: sha512-iZ/RODgwHUgeT7153wVSDCVc/Ct7gUvkauQAPcGZxgFgo1orAf6C964KwjpCwAgrQF324o3uo5QJQUvTTl8GLg==}
+ engines: {node: '>=22'}
+ peerDependencies:
+ react: ^18 || ~19.0.1 || ~19.1.2 || ^19.2.1
+
+ '@alloc/quick-lru@5.2.0':
+ resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==}
engines: {node: '>=10'}
'@antfu/install-pkg@1.1.0':
@@ -267,6 +343,106 @@ packages:
resolution: {integrity: sha512-NT4s3yZLjovPpliRpTvdsdzyPjqRqiCZj9MxnarBihbaY5MbAG7DWAJcrLlhmC7xKTNCXsTELcqB8YsqpLnUFQ==}
engines: {node: ^22.22.2 || ^24.15.0 || >=26.0.0}
+ '@assistant-ui/ai-sdk@0.0.2':
+ resolution: {integrity: sha512-4mjZwR/dRVDORtIrLfK+aD3Lel/TDPlDrEaDyTjnsPYAhohNHcE9LDW4wQxcLrLQPgz6QwEPQEGwREvk7yIatA==}
+ peerDependencies:
+ '@types/react': '*'
+ react: ^18 || ^19
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ react:
+ optional: true
+
+ '@assistant-ui/core@0.3.15':
+ resolution: {integrity: sha512-pCeVhMmzK4xFbahtRtvjlGXDxycsvl1plgiD0M5ZyABm+QxINGnBO5GEz1hqDHQVjKlCIJDNj15PlFSkuFnidA==}
+ peerDependencies:
+ '@assistant-ui/store': ^0.3.0
+ '@assistant-ui/tap': ^0.9.0
+ '@types/react': '*'
+ assistant-cloud: ^0.1.31
+ react: ^18 || ^19
+ zustand: ^5.0.11
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ assistant-cloud:
+ optional: true
+ react:
+ optional: true
+ zustand:
+ optional: true
+
+ '@assistant-ui/react-ai-sdk@1.4.7':
+ resolution: {integrity: sha512-fVeJ0TzvdHwSyRt9OHqPUJEHaqORmOxj5e552N2ie6GaMuMhklSU54bzLnlEHqP2m92Ee7dFj5WwEKKckawZXQ==}
+ peerDependencies:
+ '@types/react': '*'
+ react: ^18 || ^19
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+
+ '@assistant-ui/react-markdown@0.14.12':
+ resolution: {integrity: sha512-g8uRpTpwk43qYzknPh7k1U0FysdJ4gySY88NiBLbCRWEGy/aHPy5B+6kaRttND3Rij3rQpGkP5NZOo/z+kMEEQ==}
+ peerDependencies:
+ '@assistant-ui/react': ^0.15.0
+ '@types/react': '*'
+ react: ^18 || ^19
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+
+ '@assistant-ui/react-syntax-highlighter@0.14.5':
+ resolution: {integrity: sha512-5pc6KSeT65ArDxxlBuSwRdG1SvCPVm1rubKHbhtcr52UGvSQ4KwebKVYifURRywVXi8DvVrLye/a9AMCZAoN0g==}
+ peerDependencies:
+ '@assistant-ui/react': ^0.15.0
+ '@assistant-ui/react-markdown': ^0.14.8
+ '@types/react': '*'
+ '@types/react-syntax-highlighter': '*'
+ react: ^18 || ^19
+ react-syntax-highlighter: ^16.0.0
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ '@types/react-syntax-highlighter':
+ optional: true
+
+ '@assistant-ui/react@0.15.16':
+ resolution: {integrity: sha512-+2BO6npVEXdViNWTyH3XddVXHo7SOcXliM8btrXGzH6PHuTtn3CYL7DCQ5ZXVRHB9kYPBbbMPURVu93jg9qIwg==}
+ peerDependencies:
+ '@types/react': '*'
+ '@types/react-dom': '*'
+ react: ^18 || ^19
+ react-dom: ^18 || ^19
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ '@types/react-dom':
+ optional: true
+
+ '@assistant-ui/store@0.3.10':
+ resolution: {integrity: sha512-QSFgodFt/daEjyaY09WdahNewsGPtAeY+DkSb2LM2rPN6634h13R1vJQvCtyWK5YsI5WXgzgbsctzgpIQLU0qw==}
+ peerDependencies:
+ '@assistant-ui/tap': ^0.9.12
+ '@types/react': '*'
+ react: ^18 || ^19
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ react:
+ optional: true
+
+ '@assistant-ui/tap@0.9.14':
+ resolution: {integrity: sha512-L/ZyXLQb51/d+/5xlXaP1197PF94EO/Ji+/CBWTjuEbsU1+8dzXCHVNO9GCFQvyG02OiOVitfbRksipMVzdrnA==}
+ peerDependencies:
+ '@types/react': '*'
+ react: ^18 || ^19
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ react:
+ optional: true
+
'@axe-core/playwright@4.13.0':
resolution: {integrity: sha512-6YLx+kxXu5GJceG4ozFg+33a2EMTdjYwWGloJ3sb9Kta5pp+ZNS53uxGVog5JetIY8s++P5UrtX+cri+u0VAVg==}
peerDependencies:
@@ -322,8 +498,8 @@ packages:
resolution: {integrity: sha512-1k2lAGRMfHTcwuNYcCNUmaUffmQv8KWMfh2iJUUeRlwlwH4FdNG7mfPI10NPfLHJFThE4Tyr4mv7kTNZOiPuBg==}
engines: {node: '>=6.9.0'}
- '@babel/parser@7.29.9':
- resolution: {integrity: sha512-CjXrNHTnvqBVqHgdBysY3vk2T8tpJHb5/RMeHJBTyVa9xgugCB0CJTx/3oO8RV2QRQP391RWpB7D6hLjm8V9uA==}
+ '@babel/parser@7.29.8':
+ resolution: {integrity: sha512-E8lTAYNB1KW+FH+VGJuZM1ioAx2E6oVlvQFRrf5P8ZZmsiJXYAD9vTFV7yyEURNzgh1dFqMZuO6tUwcARbqFCA==}
engines: {node: '>=6.0.0'}
hasBin: true
@@ -374,10 +550,6 @@ packages:
resolution: {integrity: sha512-Ir+AOibqzrIsL6ajt3Rz3LskB7OiMVHqltZmspbW/TJuTVuyOMirVqAkjfY6JISiLHgyNqicAC8AyHHGzNd/dA==}
engines: {node: '>=0.1.90'}
- '@colors/colors@1.6.1':
- resolution: {integrity: sha512-dTmUJzXSuayBK+hZydEaXd2mhx61qWQwkwaBBY6LyEOVx/L9aQU5ac8eFNEsd9nrD1+zb9zvDCphLSe8g1F4Qw==}
- engines: {node: '>=0.1.90'}
-
'@csstools/color-helpers@6.1.1':
resolution: {integrity: sha512-gLNsunvwf3mCi5u5o46/Z/JcJMnhbHSaZ69rkgPzNM3J4s8hWwpPUQB6/tt0EDFyCiWzxANlx+2LJwpYj4zS1w==}
engines: {node: '>=20.19.0'}
@@ -414,8 +586,8 @@ packages:
resolution: {integrity: sha512-bPlN9S9O1A0euCpEWE4qnvB5YDuyYVsUTrxSgmAM1Is0j4tICHoVyOVAXfWMP/kS9ZrjvyIXWV2PmomiAXXqOw==}
engines: {node: '>=20.19.0'}
- '@dabh/diagnostics@2.0.9':
- resolution: {integrity: sha512-R6siwR65Hm+3yfgP7o8DKhNvputQAwfoz9zTc3kyDudnomj2/BcLmD+uGQQPICjuFUp8ounPBU+jmKsocwVVAg==}
+ '@dabh/diagnostics@2.0.8':
+ resolution: {integrity: sha512-R4MSXTVnuMzGD7bzHdW2ZhhdPC/igELENcq5IjEverBvq5hn1SXCWcsi6eSsdWP0/Ur+SItRRjAktmdoX/8R/Q==}
'@discoveryjs/json-ext@0.5.7':
resolution: {integrity: sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==}
@@ -675,8 +847,8 @@ packages:
resolution: {integrity: sha512-IkO+/KEUvwbVpiURZg+P7zF74z5Jxe0UgJxVni+RtoHQ6IZieXaO02kmadomap/q+l6bc/jdPGGqTjhuZnuz1Q==}
engines: {node: ^20.19.0 || ^22.13.0 || >=24}
- '@exodus/bytes@1.16.0':
- resolution: {integrity: sha512-IcpW84uEn3N7ETtNZMlxKhfl6Pec8rUNGOTBtWbK1FKhJxIFAptZyVrvVRVBimAJxJCgc3PxepxkdWWG4DVzfA==}
+ '@exodus/bytes@1.15.1':
+ resolution: {integrity: sha512-S6mL0yNB/Abt9Ei4tq8gDhcczc4S3+vQ4ra7vxnAf+YHC02srtqxKKZghx2Dq6p0e66THKwR6r8N6P95wEty7Q==}
engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0}
peerDependencies:
'@noble/hashes': ^1.8.0 || ^2.0.0
@@ -684,14 +856,14 @@ packages:
'@noble/hashes':
optional: true
- '@floating-ui/core@1.8.0':
- resolution: {integrity: sha512-0CIZ5itps/8x7BG8dEIhs53BvCUH2PCoogtakwRTut+Arm58sJooJ0AuZhLw2HJYIR5cMLNPBSS728sPho2khQ==}
+ '@floating-ui/core@1.7.5':
+ resolution: {integrity: sha512-1Ih4WTWyw0+lKyFMcBHGbb5U5FtuHJuujoyyr5zTaWS5EYMeT6Jb2AuDeftsCsEuchO+mM2ij5+q9crhydzLhQ==}
- '@floating-ui/dom@1.8.0':
- resolution: {integrity: sha512-yXSrzeHZBTZadLOlfyhCkJHNeLJnHRnRInwdZ40L7ZiaAtrBwoYlsDrX3v5zB1Utk7CLfzcOVnVVWoXEky7Ceg==}
+ '@floating-ui/dom@1.7.6':
+ resolution: {integrity: sha512-9gZSAI5XM36880PPMm//9dfiEngYoC6Am2izES1FF406YFsjvyBMmeJ2g4SAju3xWwtuynNRFL2s9hgxpLI5SQ==}
- '@floating-ui/react-dom@2.1.9':
- resolution: {integrity: sha512-JDjEFGCpImxDCA7JJKviA0M9+RtmJdj0m/NVU5IMgBK+AmZouAQQ7/+2GLH0GXXY0YMw9oXPB8hKdbPYg5QLYg==}
+ '@floating-ui/react-dom@2.1.8':
+ resolution: {integrity: sha512-cC52bHwM/n/CxS87FH0yWdngEZrjdtLW/qVruo68qg+prK7ZQ4YGdut2GyDVpoGeAYe/h899rVeOVm6Oi40k2A==}
peerDependencies:
react: '>=16.8.0'
react-dom: '>=16.8.0'
@@ -702,14 +874,14 @@ packages:
react: '>=16.8.0'
react-dom: '>=16.8.0'
- '@floating-ui/utils@0.2.12':
- resolution: {integrity: sha512-HpCo8tmWzLVad5s2d19EhAz5zqrrQ6s69qd6moPMQvkOuSwDT1YgRfWSVuc4ennqrgv3OHppiOGMQ7oC13yIww==}
+ '@floating-ui/utils@0.2.11':
+ resolution: {integrity: sha512-RiB/yIh78pcIxl6lLMG0CgBXAZ2Y0eVHqMPYugu+9U0AeT6YBeiJpf7lbdJNIugFP5SIjwNRgo4DhR1Qxi26Gg==}
'@formatjs/intl-localematcher@0.6.2':
resolution: {integrity: sha512-XOMO2Hupl0wdd172Y06h6kLpBz6Dv+J4okPLl4LPtzbr8f66WbIoy4ev98EBuZ6ZK4h5ydTN6XneT4QVpD7cdA==}
- '@google-cloud/cloud-sql-connector@1.12.0':
- resolution: {integrity: sha512-cUrI+6StY8F/dQB5Lujrl9TFYibDZGGWvPp1aHhvLn4btOlbflxdHoZ6NDWeWySCNtnOYhoiZNQfK4qPC5moBw==}
+ '@google-cloud/cloud-sql-connector@1.11.3':
+ resolution: {integrity: sha512-dPnHkcabbH5LAksAQl99SJpC0HuG3YZwjcdcOxdz2QW58vOnGdfQ96d/Hpzl22h3eA03rKG0kMpEplC40xWtTQ==}
engines: {node: '>=22'}
'@google-cloud/paginator@6.1.0':
@@ -732,16 +904,12 @@ packages:
resolution: {integrity: sha512-xXAQBVVrFviWz8L8yDKEqv1ziVw/gMSpYHt3IxSYRSY0fTyjis+xOrKJILj8dd8PAUHGnGiAIYuTprflkE9jsQ==}
engines: {node: '>=18'}
- '@google-cloud/sql@0.25.0':
- resolution: {integrity: sha512-OKAA98q2M25rQcqcFvbQniix4zTFcbeSyauj+PcPd+6ngn7eXvAUqpuCRVxbIGmA8r5OtE6Ru/oCJ1xwcUR2vA==}
- engines: {node: '>=18'}
-
- '@googleapis/sqladmin@38.1.1':
- resolution: {integrity: sha512-piWbtan+dw/cYzGopUsFH131mVx23osOeBAFSM78fgTzgRJjehgA5QnGGZiGYn+zgSNqdnf+7/ZzdHN1XkUAEg==}
+ '@googleapis/sqladmin@37.0.0':
+ resolution: {integrity: sha512-LBxSb3V+avoqsTHY/KsSR4/3FGnRfUw8yhGjx6ihTE5w7Y6l1EZkcx62aCCfCNkaigCQDvgiJG2Pq2jxN1sfag==}
engines: {node: '>=12.0.0'}
- '@grpc/grpc-js@1.14.5':
- resolution: {integrity: sha512-7VZM+SVdEcUUqSQeNI3zM8Qs/BhQKZndPo2h5VkYkAM8Iz0wJIa8mKV5ekQGqG8UUsnkQ0NMxIxwkIHYvj0qOw==}
+ '@grpc/grpc-js@1.14.4':
+ resolution: {integrity: sha512-k9Dj3DV/itK9D06Y8f190Qgop7/Ui+D0njFV3LHMPwPT75DpXLQohE9Wmz0QElrJnzsjB7KPWiKJbOl7IPDArQ==}
engines: {node: '>=12.10.0'}
'@grpc/proto-loader@0.8.1':
@@ -802,8 +970,8 @@ packages:
'@iconify/types@2.0.0':
resolution: {integrity: sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==}
- '@iconify/utils@3.1.4':
- resolution: {integrity: sha512-b1S7B1k9ohZ+iNTi2ATxbRYG9fTrJmUT0rc46bvVnNxqNRGW7dyo/vRREwyniI5IRN2RSJHDcm+s3BjWrSAjHw==}
+ '@iconify/utils@3.1.3':
+ resolution: {integrity: sha512-LPKOXPn/zV+zis1oOfGWogaXVpqUybF3ZS6SCZIsz8vg0ivVp9+fVqyYB7xq0aiST/VhUQYGO1qo6uoYSiEJqw==}
'@icons-pack/react-simple-icons@13.15.1':
resolution: {integrity: sha512-S35E7vJlJzMeoqjwwI7ZmQUJ2W+2KspnB6bc49KdoDGwp5mCgAy9L3sscfWMewQSMgBdPU8KWWwpSGq5DJyAFw==}
@@ -1106,15 +1274,27 @@ packages:
'@types/node':
optional: true
+ '@internationalized/date@3.12.2':
+ resolution: {integrity: sha512-FY1Y+H64NDs+HAF6omlnWxm3mEpfgaCSWtL5l551ZZfImA+kGjPFgrnJrGjH6lfmLL0g8Z/mBu1R3kufeCp6Jw==}
+
+ '@internationalized/date@3.12.3':
+ resolution: {integrity: sha512-fuLX+3ZKLsxI73y8b01EG/WjHb6gE6weCqlfawPO27kBWGMh9G1yH6Csv1uU7/cac9H2GHmOMt6CjmuQ1aia4Q==}
+
'@internationalized/date@3.12.4':
resolution: {integrity: sha512-M1dEn4c1U1HsSlaVR8upZtSqvXrTkHDfv18H01uCSJyjVLDxnBR38v/fMxecmlwXKR4i9HeZcmgQAPE6A+aGJQ==}
+ '@internationalized/number@3.6.7':
+ resolution: {integrity: sha512-3ji1fcrT+FPAK86UqEhB/psHixYo6niWPJtt7+qRaYFynt/BaJG8GhAPimtWUpEiVSTq8ZM8L5psMxGquiB/Vg==}
+
'@internationalized/number@3.6.8':
resolution: {integrity: sha512-8UmMFia46DUt+k97zKd9fKWXcWHR+k8ae3eYzILETuT2KbIvLyOfac7zesw+sJdRAAZ7Q9pM1Mk22aXp2LD0Ig==}
'@internationalized/string@3.2.10':
resolution: {integrity: sha512-PDx6//vHSpRnHfxqMqto11zQvhsaU74O3mKv2F/0eicGZcl9NLjQmGlbHz/LsJh5tLKp4A4L7ZVTzN1/MmMTvA==}
+ '@internationalized/string@3.2.9':
+ resolution: {integrity: sha512-kzP/M/mbQxODlmOt4bIQZ2SBVUWUSqMLXooXixnX7noche8WHaQcA+nwFN1K2KCF/cp+LDUhcJsCicwkvhD1pg==}
+
'@isaacs/cliui@8.0.2':
resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==}
engines: {node: '>=12'}
@@ -1133,8 +1313,8 @@ packages:
resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==}
engines: {node: '>=6.0.0'}
- '@jridgewell/sourcemap-codec@1.6.0':
- resolution: {integrity: sha512-T7jf+5zgsZHwNJ4lvQ7/aezbyk0nNX+zJVWpmHA7VYsEx7a7qr5Rg5IbtJFqkgze5Y2sruq1RUY8Q837Od7iFw==}
+ '@jridgewell/sourcemap-codec@1.5.5':
+ resolution: {integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==}
'@jridgewell/trace-mapping@0.3.31':
resolution: {integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==}
@@ -1165,8 +1345,8 @@ packages:
'@mermaid-js/parser@1.2.1':
resolution: {integrity: sha512-n12NohV3mrUyUL2o93IgG/ifeW9FTyeJn3zDxkhwa8MJ9Fxg3HQMlA3RiGmD/3UnJvheztkjjQAjA2T4LmUcpw==}
- '@modelcontextprotocol/sdk@1.30.1':
- resolution: {integrity: sha512-H2HxLvC3HDNybePJaLdSrU1hhUK5iQw+WvV1b01myFyI7sdVGe1u/IPTE5D9fGCiJDVtgMV/lmFkQXLmQyIFYA==}
+ '@modelcontextprotocol/sdk@1.30.0':
+ resolution: {integrity: sha512-xKd8OIzlqNzcqcNumGAa6g+PW2kjD5vrpcKOnfldAUPP3j7lnqMPwlTXQm8gF+UwH72z0lqaRbjr9hqGz0eITA==}
engines: {node: '>=18'}
peerDependencies:
'@cfworker/json-schema': ^4.1.1
@@ -1356,8 +1536,8 @@ packages:
resolution: {integrity: sha512-bMVoAKhpjTOPHkW/lprDPwv5aD4R4C3Irt8vn+SKA9wudLe9COLxOhurrKRsxmZccUbWXRF7vukNeGUAj5P8kA==}
engines: {node: '>= 10'}
- '@napi-rs/wasm-runtime@1.2.4':
- resolution: {integrity: sha512-AJxoUD2/15ESHbvpcyjU274nsAPLuOtPHCk0vKJM5pj//Fg/B1FXNWjPnXTT9PymCYYiHo4zPj0ZomXBKhoy7g==}
+ '@napi-rs/wasm-runtime@1.2.3':
+ resolution: {integrity: sha512-UMduMbqO5s5zF2NkNacMT/yK5Y5QiKvWr2+50bzIIxFDwVJ2h49b+oyjaCGPhJxd2/gC2x39EHv/gHVuu36x2Q==}
engines: {node: ^20.19.0 || ^22.13.0 || >=23.5.0}
peerDependencies:
'@emnapi/core': ^1.7.1 || ^2.0.0-alpha.4
@@ -1499,8 +1679,8 @@ packages:
resolution: {integrity: sha512-gLyJlPHPZYdAk1JENA9LeHejZe1Ti77/pTeFm/nMXmQH/HFZlcS/O2XJB+L8fkbrNSqhdtlvjBVjxwUYanNH5Q==}
engines: {node: '>=8.0.0'}
- '@opentelemetry/core@2.11.0':
- resolution: {integrity: sha512-7YP44XH0tV6+Mb54x2YGf84i7yi+31MBZlE8JwvozkxyTvXbSp10X7cI7YE49ChJ3shMJoBmCJF3+1QFBJctGA==}
+ '@opentelemetry/core@2.10.0':
+ resolution: {integrity: sha512-/wNZ8twnEQQA4HoHu22+vcsdru6pWPWxW+7w+FlxT6Id7PE/WIbZmVKkte+PF72e0F2dnImFeHD2syyE1Mw6MQ==}
engines: {node: ^18.19.0 || >=20.6.0}
peerDependencies:
'@opentelemetry/api': '>=1.0.0 <1.10.0'
@@ -1509,10 +1689,6 @@ packages:
resolution: {integrity: sha512-R5R9tb2AXs2IRLNKLBJDynhkfmx7mX0vi8NkhZb3gUkPWHn6HXk5J8iQ/dql0U3ApfWym4kXXmBDRGO+oeOfjg==}
engines: {node: '>=14'}
- '@opentelemetry/semantic-conventions@1.43.0':
- resolution: {integrity: sha512-eSYWTm620tTk45EKSedaUL8MFYI8hW164hIXsgIHyxu3VobUB3fFCu5t0hQby6OoWRPsG1KkKUG2M5UadiLiVg==}
- engines: {node: '>=14'}
-
'@oxc-parser/binding-android-arm-eabi@0.121.0':
resolution: {integrity: sha512-n07FQcySwOlzap424/PLMtOkbS7xOu8nsJduKL8P3COGHKgKoDYXwoAHCbChfgFpHnviehrLWIPX0lKGtbEk/A==}
engines: {node: ^20.19.0 || >=22.12.0}
@@ -1827,11 +2003,14 @@ packages:
'@protobufjs/utf8@1.1.2':
resolution: {integrity: sha512-b1UQwcEZ4yCnMCD8DAL1VlbvBJE9/IX4FTIp7BG1xYpf29SLazLSrqUkj4w7Y5y7cCVP6E5tcqqcI0xemPkHug==}
+ '@radix-ui/number@1.1.3':
+ resolution: {integrity: sha512-Road2bidD0uu/1BGDOWNdPI06g0lIRy6IF9GZcIrDK2KGItfor8IQwQa+yM2ERgHM1MmHxaxpTzk0/Jp42lNfA==}
+
'@radix-ui/primitive@1.1.7':
resolution: {integrity: sha512-rqWnm76nYT8HoNNqEjpgJ7Pw/DrBj5iBTrmEPo6HTX5+VJyBNOqTdv4g89G63HuR5g0AaENoAcH7Is5fF2kZ8Q==}
- '@radix-ui/react-avatar@1.2.6':
- resolution: {integrity: sha512-4ULOTJ/mqy2hT9GlWa/MFHxHSvH3nJzHnZM1waNsc5Bonv7i70aNenghXmD97S6OJ81ekXONGGt4nT1r0PfEdA==}
+ '@radix-ui/react-accessible-icon@1.1.15':
+ resolution: {integrity: sha512-WTQwcAvQf5sOcuUyi90lKPbhwcvQ+j55cjrSmeaN+L2vKU3DooOvlKw2MDeiJ5IkV5N905KW0/fGojKOBhD11A==}
peerDependencies:
'@types/react': '*'
'@types/react-dom': '*'
@@ -1843,26 +2022,34 @@ packages:
'@types/react-dom':
optional: true
- '@radix-ui/react-compose-refs@1.1.5':
- resolution: {integrity: sha512-+48PbAAbq3didjJxa+OaWY2ZwgAKsNiRGyeHKszblZMQ+kcpd9pAaT11cMkGEie0vsOi3QdeTE6d5Fe3Gn61kA==}
+ '@radix-ui/react-accordion@1.2.20':
+ resolution: {integrity: sha512-jDhG9FvAEnlhnjrsINbNXcUa4G+L1KqSkJSunkbKEzFRcAb52jvM0PjPxPRvhe1HNc5F5yc0yzzWeeqlH4yBIg==}
peerDependencies:
'@types/react': '*'
+ '@types/react-dom': '*'
react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
peerDependenciesMeta:
'@types/react':
optional: true
+ '@types/react-dom':
+ optional: true
- '@radix-ui/react-context@1.2.2':
- resolution: {integrity: sha512-RHCUGwKHDr0hDGg4X7ma4JG4/+12qxw8rkh5QKdDldlCvtja6nUx1Ef/8HVrJze81lEsgLQlqjzjGNHantgnQA==}
+ '@radix-ui/react-alert-dialog@1.1.23':
+ resolution: {integrity: sha512-VAYOiQRqj3GPpYJE0I9J+X8Ip05cyVlNdKOFeiGS2Ou1HHGfpl0BxOyZm6nmVDyU+W+NF3/XLzmjHmVGydhwgA==}
peerDependencies:
'@types/react': '*'
+ '@types/react-dom': '*'
react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
peerDependenciesMeta:
'@types/react':
optional: true
+ '@types/react-dom':
+ optional: true
- '@radix-ui/react-dialog@1.1.23':
- resolution: {integrity: sha512-Ksw4WeROkO4rC9k/onilX/Ao2Cr1ku1unMNH+XSCcP4jSXYu7HDsg9n4ojMjVb22XpYjAQ9qfrFlVbru1vXDUA==}
+ '@radix-ui/react-arrow@1.1.15':
+ resolution: {integrity: sha512-v4zggRcjadnI+ClKDuijlQEW4tw3NoaeHc/PwpKnLoLLKNUG4InLegkstooLcRIUWCs+8L22dGURCVuFfOKfnA==}
peerDependencies:
'@types/react': '*'
'@types/react-dom': '*'
@@ -1874,8 +2061,8 @@ packages:
'@types/react-dom':
optional: true
- '@radix-ui/react-dismissable-layer@1.1.19':
- resolution: {integrity: sha512-8g4pfOL9HoKKLWGiypT+dphVqjFfmcXO5GBnhsG6zI+lxAx/8feQpr+1LSN8Re3hiZ+XkLNS4O9ztK11/LzQ6w==}
+ '@radix-ui/react-aspect-ratio@1.1.15':
+ resolution: {integrity: sha512-fy+dyVR+90nelK8rqIznFlxzx7uPcGbhxH8Nfr2bHb4UfSe+e3hklOC0luK0hDwVwnRX7xTRySpsrQVeW+/oNQ==}
peerDependencies:
'@types/react': '*'
'@types/react-dom': '*'
@@ -1887,17 +2074,21 @@ packages:
'@types/react-dom':
optional: true
- '@radix-ui/react-focus-guards@1.1.6':
- resolution: {integrity: sha512-RNOJjfZMTyBM6xYmV3IVGXkPjIhcBAuv48POevAXwrGJhkWZ9p1rFoIS1JFooPuT193AZmRsCPhpoVJxx6OPoQ==}
+ '@radix-ui/react-avatar@1.2.6':
+ resolution: {integrity: sha512-4ULOTJ/mqy2hT9GlWa/MFHxHSvH3nJzHnZM1waNsc5Bonv7i70aNenghXmD97S6OJ81ekXONGGt4nT1r0PfEdA==}
peerDependencies:
'@types/react': '*'
+ '@types/react-dom': '*'
react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
peerDependenciesMeta:
'@types/react':
optional: true
+ '@types/react-dom':
+ optional: true
- '@radix-ui/react-focus-scope@1.1.16':
- resolution: {integrity: sha512-wmRZ2WWLvmt6KHy2rNPOdPUjwq5xOHY02+m+udwJTn0aNIox/rkskAvJTyTLGhPK6KgrUjlJUJpgmx/+wFiFIQ==}
+ '@radix-ui/react-checkbox@1.3.11':
+ resolution: {integrity: sha512-Gnptr9pDDQxD3hgq2dtPbtrp/c2qH1mBwIzw3X/ivrMb2e1t0jMTi606fVEqFPaQR1ggXIVQWKj3P2WW9v7zGQ==}
peerDependencies:
'@types/react': '*'
'@types/react-dom': '*'
@@ -1909,17 +2100,21 @@ packages:
'@types/react-dom':
optional: true
- '@radix-ui/react-id@1.1.4':
- resolution: {integrity: sha512-TMQp2llA+RYn7JcjnrMnz7wN4pcVttPZnRZo52PLQsoLVKzNlVwUeHmfePgTgRluXFvlD3GD5g5MOVVTJCO0qA==}
+ '@radix-ui/react-collapsible@1.1.20':
+ resolution: {integrity: sha512-mcGesGplBnzN2sbvJETzpCNfSMyPnb29q1GRLU+Ib7bJrpIG2ywmRoh2V5VbA2uNvKikKUlVbAPks7JDjz4A8Q==}
peerDependencies:
'@types/react': '*'
+ '@types/react-dom': '*'
react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
peerDependenciesMeta:
'@types/react':
optional: true
+ '@types/react-dom':
+ optional: true
- '@radix-ui/react-portal@1.1.17':
- resolution: {integrity: sha512-vKQLcWypUnwZVvfV7UkGahH2g6ySe8M8R+zYBwPrv5byZ9QAW6cQVvNKo7GgmD+p8aYb6D9JBuvy8/WhOno2wQ==}
+ '@radix-ui/react-collection@1.1.15':
+ resolution: {integrity: sha512-9W+B9NPF0NaaPh/1NJd3+KqsnlLqU9H7T2rvww+fp+T/evVXdNAyYcnfRQZFOjkR1ajQp3yORlqnI8soawLvNA==}
peerDependencies:
'@types/react': '*'
'@types/react-dom': '*'
@@ -1931,8 +2126,17 @@ packages:
'@types/react-dom':
optional: true
- '@radix-ui/react-presence@1.1.10':
- resolution: {integrity: sha512-3wyzCQ6+ubRA+D4uv9m95JYLXxmOHp05qjrkjeA7uKHHtjpPggQzc6DAb0URl7j67oR0K2foO4ip27TiX037Bw==}
+ '@radix-ui/react-compose-refs@1.1.5':
+ resolution: {integrity: sha512-+48PbAAbq3didjJxa+OaWY2ZwgAKsNiRGyeHKszblZMQ+kcpd9pAaT11cMkGEie0vsOi3QdeTE6d5Fe3Gn61kA==}
+ peerDependencies:
+ '@types/react': '*'
+ react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+
+ '@radix-ui/react-context-menu@2.3.7':
+ resolution: {integrity: sha512-CtXP35dxaB5T3zXSd+E3uHe/QpXcpYnZmxp6OaIbfthtfW4wyb77M23BG+bwIJDtsMwEP/YssdsmNyZu7jhWew==}
peerDependencies:
'@types/react': '*'
'@types/react-dom': '*'
@@ -1944,8 +2148,17 @@ packages:
'@types/react-dom':
optional: true
- '@radix-ui/react-primitive@2.1.10':
- resolution: {integrity: sha512-MucOnzh6hR5mid6VpkbglRAMYMjKLqRnGBbjXkzjK52fuQDd1qbkx78a5P40mkcnVXJdEVxm26E9OPAiUq7nBg==}
+ '@radix-ui/react-context@1.2.2':
+ resolution: {integrity: sha512-RHCUGwKHDr0hDGg4X7ma4JG4/+12qxw8rkh5QKdDldlCvtja6nUx1Ef/8HVrJze81lEsgLQlqjzjGNHantgnQA==}
+ peerDependencies:
+ '@types/react': '*'
+ react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+
+ '@radix-ui/react-dialog@1.1.23':
+ resolution: {integrity: sha512-Ksw4WeROkO4rC9k/onilX/Ao2Cr1ku1unMNH+XSCcP4jSXYu7HDsg9n4ojMjVb22XpYjAQ9qfrFlVbru1vXDUA==}
peerDependencies:
'@types/react': '*'
'@types/react-dom': '*'
@@ -1957,8 +2170,8 @@ packages:
'@types/react-dom':
optional: true
- '@radix-ui/react-slot@1.3.3':
- resolution: {integrity: sha512-qx7oqnYbxnK9kYI9m317qmFmEgo6ywqWvbTogdj7cL9p3/yx4M48p7Rnw5z3H890cL/ow/EeWJsuTykeZVXP5Q==}
+ '@radix-ui/react-direction@1.1.4':
+ resolution: {integrity: sha512-5pzg4FGQNpExhnhT2zlrP1wZFaYCd1K0nYWoFAdcYoYK868IEigqMX3B3f8yIoRlAhAeDWciLI6ZdCKHF9P4Vg==}
peerDependencies:
'@types/react': '*'
react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
@@ -1966,26 +2179,34 @@ packages:
'@types/react':
optional: true
- '@radix-ui/react-use-callback-ref@1.1.4':
- resolution: {integrity: sha512-R6OUY2e2fA6Yn6s+VSx5KBV6Nx8LQEhu+cz7LCej18rQ1HLyg9PSC9jP/ZNx0o6FAIK9c0F1kHylzSxKsdlkrQ==}
+ '@radix-ui/react-dismissable-layer@1.1.19':
+ resolution: {integrity: sha512-8g4pfOL9HoKKLWGiypT+dphVqjFfmcXO5GBnhsG6zI+lxAx/8feQpr+1LSN8Re3hiZ+XkLNS4O9ztK11/LzQ6w==}
peerDependencies:
'@types/react': '*'
+ '@types/react-dom': '*'
react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
peerDependenciesMeta:
'@types/react':
optional: true
+ '@types/react-dom':
+ optional: true
- '@radix-ui/react-use-controllable-state@1.2.6':
- resolution: {integrity: sha512-uEQJGT97ZA/TgP/Hydw47lHu+/vQj6z/0jA+WeTbK1o9Rx45GImjpD0tc3W5ad3D6XTSR6e1yEO0FvGq6WQfVQ==}
+ '@radix-ui/react-dropdown-menu@2.1.24':
+ resolution: {integrity: sha512-geq8l2rJkxvkXsT9RMgtUE3P8pITFpTsvYpbySi1IH4fZEABD/Gp85myayFgxk0ktljGMJnCbeFkyTusvSvv7g==}
peerDependencies:
'@types/react': '*'
+ '@types/react-dom': '*'
react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
peerDependenciesMeta:
'@types/react':
optional: true
+ '@types/react-dom':
+ optional: true
- '@radix-ui/react-use-effect-event@0.0.5':
- resolution: {integrity: sha512-7cshFL8HGS/7HEiHH+9kL9HBwp2sa9yX18Knwek6KYWmXwM7pegMgta2AXMQKI+rq3JnfSj9x8wYqFMTdG1Jgg==}
+ '@radix-ui/react-focus-guards@1.1.6':
+ resolution: {integrity: sha512-RNOJjfZMTyBM6xYmV3IVGXkPjIhcBAuv48POevAXwrGJhkWZ9p1rFoIS1JFooPuT193AZmRsCPhpoVJxx6OPoQ==}
peerDependencies:
'@types/react': '*'
react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
@@ -1993,322 +2214,783 @@ packages:
'@types/react':
optional: true
- '@radix-ui/react-use-is-hydrated@0.1.3':
- resolution: {integrity: sha512-umO/aJ+82CpOnhDZUTbILCQf7kU/g0iv+oGs/Q8jw7IkhWBzaEP4sA268PhFAJTFetbwp3ICc6ktpI4TqtxcIw==}
+ '@radix-ui/react-focus-scope@1.1.16':
+ resolution: {integrity: sha512-wmRZ2WWLvmt6KHy2rNPOdPUjwq5xOHY02+m+udwJTn0aNIox/rkskAvJTyTLGhPK6KgrUjlJUJpgmx/+wFiFIQ==}
peerDependencies:
'@types/react': '*'
+ '@types/react-dom': '*'
react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
peerDependenciesMeta:
'@types/react':
optional: true
+ '@types/react-dom':
+ optional: true
- '@radix-ui/react-use-layout-effect@1.1.4':
- resolution: {integrity: sha512-K20DkRkUwDnxEYMBPcg3Y6voLkEy5p5QQmszZgLngKKiC7dzBR/aEuK3w1qlx2JWDUNH6FluahYdgR3BP+QbYw==}
+ '@radix-ui/react-form@0.1.16':
+ resolution: {integrity: sha512-Q4TLEn2A7TAypxwmd6R9EwrlXDvkfYSDMrq9/887AXAGh+G1rH+kYJKSTv+Si9Y0JPKTwKYv6PviAJosysNimA==}
peerDependencies:
'@types/react': '*'
+ '@types/react-dom': '*'
react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
peerDependenciesMeta:
'@types/react':
optional: true
+ '@types/react-dom':
+ optional: true
- '@react-aria/color@3.2.1':
- resolution: {integrity: sha512-v/pZh1yBNeayQ5Kio0xRIX0gBf6uu+KjCRW4QSydTyRpmhvk6sMzHT9i9/vIMdaDHaYHBXlXF+Tp/mvS9CG4Zw==}
+ '@radix-ui/react-hover-card@1.1.23':
+ resolution: {integrity: sha512-H8qONfZd3ltrU3+jHCIgITbWo6e1iTKvP9DHdrvYbX48ooRM5FjEDTn16AMwdfuOGkWdZEhpl3PLL/Wk/AnHDQ==}
peerDependencies:
- react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
- react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
+ '@types/react': '*'
+ '@types/react-dom': '*'
+ react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ '@types/react-dom':
+ optional: true
- '@react-aria/focus@3.22.1':
- resolution: {integrity: sha512-CPxtkyrBi/HYY5P3lE/57sQ6qfa0lN8E55TOm89H0kNGv0lKt+/0zP7lWERzBjRr5IxBVrQX4gFEowBN52LPaA==}
+ '@radix-ui/react-id@1.1.4':
+ resolution: {integrity: sha512-TMQp2llA+RYn7JcjnrMnz7wN4pcVttPZnRZo52PLQsoLVKzNlVwUeHmfePgTgRluXFvlD3GD5g5MOVVTJCO0qA==}
peerDependencies:
- react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
- react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
+ '@types/react': '*'
+ react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
- '@react-aria/interactions@3.28.1':
- resolution: {integrity: sha512-Bqb+HrD5I5MHS2SKBhISYqo2SW8Y2dfzgF/Y1lIJq7xqLxheo9vzxPGEHhz+XzkgGfoqEJx8A6a3C7uiqS3HWA==}
+ '@radix-ui/react-label@2.1.15':
+ resolution: {integrity: sha512-o/rdYEwZTTo5tjknnPeyQFU45kUC4i/XyeDPP+HGyi6XqpOP6Zf5Ya5vh/Yfe9Id5JiuWnnAx2XqIeD3UYZt0g==}
peerDependencies:
- react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
- react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
+ '@types/react': '*'
+ '@types/react-dom': '*'
+ react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ '@types/react-dom':
+ optional: true
- '@react-aria/ssr@3.10.1':
- resolution: {integrity: sha512-jn038/ZYmu6DpfXJ6r2U9zFFppjbc9wnApPJSCxao2RZVEqep4YyoniHSy8qv6V21/xyS4IV7W9a+X2jOjSuag==}
- engines: {node: '>= 12'}
+ '@radix-ui/react-menu@2.1.24':
+ resolution: {integrity: sha512-uW7RVuU6Lp/ZtfeY4b3kL32zccgEWvPv1+cf17ubYzHa9cL8AHokmk36cG/XEiH/smbQvumnieXX9j/e9RqJWA==}
peerDependencies:
- react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
- react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
+ '@types/react': '*'
+ '@types/react-dom': '*'
+ react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ '@types/react-dom':
+ optional: true
- '@react-aria/utils@3.34.1':
- resolution: {integrity: sha512-H6+rGZL+0f58bBNaUMfctEnT+NogqwAk+nHiB8sR3K+YlQ37GTuCijy2U/pPvQtFMS5mURrjZeBH5JNNXsx14A==}
+ '@radix-ui/react-menubar@1.1.24':
+ resolution: {integrity: sha512-eeVs0vf7cuqXaM0qLQCPcufImiJNVBXdJDLu7ZGYl2732UH23Qat/foNGrr6vYV3/DdTsBqASoggUFgH14OcZA==}
peerDependencies:
- react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
- react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
+ '@types/react': '*'
+ '@types/react-dom': '*'
+ react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ '@types/react-dom':
+ optional: true
- '@react-spectrum/color@3.2.1':
- resolution: {integrity: sha512-FbB+GaVufsN+obNJmUAe8XGZTeJjEWvEf/k/7nxDxoDCBdg/o6eEPONAZyID5Dj1f8BZKNym8VURxDZx7IIyuQ==}
+ '@radix-ui/react-navigation-menu@1.2.22':
+ resolution: {integrity: sha512-ou7iLEJ+yrhQndkkA4U21XIdS/CS45F4iXIkTZcb6/Ne9EMsOuDudVmCwmDnfFZZ+y1FZqXRNSIgBy+YMvZVZg==}
peerDependencies:
- react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
- react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
+ '@types/react': '*'
+ '@types/react-dom': '*'
+ react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ '@types/react-dom':
+ optional: true
- '@react-spectrum/provider@3.11.0':
- resolution: {integrity: sha512-W2Gxbj8AcG5OR2K5Ua3K8qQqxdsiytEiz+2rhr6oQyBM8VafEgDcNPYSOTtfjrQM3snl2Uhp8LzwN0jwQe/6nQ==}
+ '@radix-ui/react-one-time-password-field@0.1.16':
+ resolution: {integrity: sha512-Tj9P6ntAJEw52oq/F0AGknXR4XncxEt7XU47O3xJQOiWfLzEy3d9gtgKfvjSzGxzHkfL+VzvxGu2KTFsloJqXw==}
peerDependencies:
- react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
- react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
+ '@types/react': '*'
+ '@types/react-dom': '*'
+ react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ '@types/react-dom':
+ optional: true
- '@react-stately/color@3.10.1':
- resolution: {integrity: sha512-v4YlLa/oRQpPa/M9Yq1e0Bl8Z7xzGZdNDAIbfIMZuiJtacaOKriPW+AOgjjT/Ab0fNX2YDbwIYvkiMOJBnTi5A==}
+ '@radix-ui/react-password-toggle-field@0.1.11':
+ resolution: {integrity: sha512-4gvFnmDXu3dgj21CqsufzIameRvlRd4SBqaWhcrlrNhRo0Y5i/49AmRJYe1fdAM3G2VNBbmin4b0D6cdQocwgw==}
peerDependencies:
- react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
- react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
+ '@types/react': '*'
+ '@types/react-dom': '*'
+ react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ '@types/react-dom':
+ optional: true
- '@react-stately/utils@3.12.1':
- resolution: {integrity: sha512-NqKfzrknpfwiewx7R2vk1P+CneClInPDsIhw15+jOcUYSEfej0nta4cJywuKQJ2gsPwqX/ojDNixedCve9FWGw==}
+ '@radix-ui/react-popover@1.1.23':
+ resolution: {integrity: sha512-mw58MrBlyHWFisTOYignD0vf/3gdcgAR+9of1s9G/38CbFiUwH1nCDkc0AUM9IrXFgN5Ue8n45j9WCgyM1sbiQ==}
peerDependencies:
- react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
- react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
+ '@types/react': '*'
+ '@types/react-dom': '*'
+ react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ '@types/react-dom':
+ optional: true
- '@react-types/color@3.2.0':
- resolution: {integrity: sha512-beV3vz80nzZ1EuYUM7296Kyi3AHcMrbQw0qub/9yzHWVTKKc5sy/e4dCMKcWL/ArkeAyc7jDOiui190RQ4l0Fw==}
+ '@radix-ui/react-popper@1.3.7':
+ resolution: {integrity: sha512-UsJrrd7w4wuKKTdvd/DNERVlwSlUcyXzjhyDwBk+3aPOsCjOY6ZSbxuw8E6lZTjjfP8Cpd0J8VVkrYUWyGYXyg==}
peerDependencies:
- '@react-spectrum/provider': ^3.0.0
- react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
- react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
+ '@types/react': '*'
+ '@types/react-dom': '*'
+ react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ '@types/react-dom':
+ optional: true
- '@react-types/shared@3.36.1':
- resolution: {integrity: sha512-AzsuD9OfxTOZMMvTRhlN3oHBwOmFN7tDh27LzqmHt4+uOgPhJT7ZM7/kVs/8/o0WxayMUIk3hBmCFRHv1FUoag==}
+ '@radix-ui/react-portal@1.1.17':
+ resolution: {integrity: sha512-vKQLcWypUnwZVvfV7UkGahH2g6ySe8M8R+zYBwPrv5byZ9QAW6cQVvNKo7GgmD+p8aYb6D9JBuvy8/WhOno2wQ==}
peerDependencies:
- react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
-
- '@renovatebot/pep440@4.2.1':
- resolution: {integrity: sha512-2FK1hF93Fuf1laSdfiEmJvSJPVIDHEUTz68D3Fi9s0IZrrpaEcj6pTFBTbYvsgC5du4ogrtf5re7yMMvrKNgkw==}
- engines: {node: ^20.9.0 || ^22.11.0 || ^24, pnpm: ^10.0.0}
+ '@types/react': '*'
+ '@types/react-dom': '*'
+ react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ '@types/react-dom':
+ optional: true
- '@rolldown/binding-android-arm-eabi@1.2.10':
- resolution: {integrity: sha512-bp9svZb+QurZeh+8H4BhrZkifEB0YBNvTVzNSJnJQkj4NrRwmQoDUCGP0vSN7PbvLeM7l1tK6GXL8mrTiH2myg==}
- engines: {node: ^20.19.0 || >=22.12.0}
- cpu: [arm]
- os: [android]
+ '@radix-ui/react-presence@1.1.10':
+ resolution: {integrity: sha512-3wyzCQ6+ubRA+D4uv9m95JYLXxmOHp05qjrkjeA7uKHHtjpPggQzc6DAb0URl7j67oR0K2foO4ip27TiX037Bw==}
+ peerDependencies:
+ '@types/react': '*'
+ '@types/react-dom': '*'
+ react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ '@types/react-dom':
+ optional: true
- '@rolldown/binding-android-arm64@1.0.0-rc.1':
- resolution: {integrity: sha512-He6ZoCfv5D7dlRbrhNBkuMVIHd0GDnjJwbICE1OWpG7G3S2gmJ+eXkcNLJjzjNDpeI2aRy56ou39AJM9AD8YFA==}
- engines: {node: ^20.19.0 || >=22.12.0}
- cpu: [arm64]
- os: [android]
+ '@radix-ui/react-primitive@2.1.10':
+ resolution: {integrity: sha512-MucOnzh6hR5mid6VpkbglRAMYMjKLqRnGBbjXkzjK52fuQDd1qbkx78a5P40mkcnVXJdEVxm26E9OPAiUq7nBg==}
+ peerDependencies:
+ '@types/react': '*'
+ '@types/react-dom': '*'
+ react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ '@types/react-dom':
+ optional: true
- '@rolldown/binding-android-arm64@1.2.10':
- resolution: {integrity: sha512-wm6Dld3RXUAZ/gRWKyUy+4W1B5CB5UeFaOzsSWJWEdxZXHH8rCYiZ5dGe6oJmhsunAPWzL7FZV+VtvmN5Ye2eA==}
- engines: {node: ^20.19.0 || >=22.12.0}
- cpu: [arm64]
- os: [android]
+ '@radix-ui/react-progress@1.1.16':
+ resolution: {integrity: sha512-5XnomAsoZZCY+KNTxbIghpGqPruZvKFNlvcAljVAOdDRDsH4/OZQxhtwo5wdtoDM5R6MhJBb2sPnDuRFep3lzg==}
+ peerDependencies:
+ '@types/react': '*'
+ '@types/react-dom': '*'
+ react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ '@types/react-dom':
+ optional: true
- '@rolldown/binding-darwin-arm64@1.0.0-rc.1':
- resolution: {integrity: sha512-YzJdn08kSOXnj85ghHauH2iHpOJ6eSmstdRTLyaziDcUxe9SyQJgGyx/5jDIhDvtOcNvMm2Ju7m19+S/Rm1jFg==}
- engines: {node: ^20.19.0 || >=22.12.0}
- cpu: [arm64]
- os: [darwin]
+ '@radix-ui/react-radio-group@1.4.7':
+ resolution: {integrity: sha512-cgYFEkntCxppHZgtSZ+7vh0wbZQ+IC7PPMw8DSnRG27B6kDd32/Zw0OJt7dGDigCoprMuWHjg2PvUn3PYvPFoQ==}
+ peerDependencies:
+ '@types/react': '*'
+ '@types/react-dom': '*'
+ react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ '@types/react-dom':
+ optional: true
- '@rolldown/binding-darwin-arm64@1.2.10':
- resolution: {integrity: sha512-UbEfXq/AqGNgRTV3ik+X/iR6mUxu2QdYAadwRxJWquUGnW6gDqdP1FtLtFXRow7RJx0ssRwi80XAPr4r+4DtsA==}
- engines: {node: ^20.19.0 || >=22.12.0}
- cpu: [arm64]
- os: [darwin]
+ '@radix-ui/react-roving-focus@1.1.19':
+ resolution: {integrity: sha512-V9jI6hDjT7l3jsCQD9bLNvDLM3tH/gdbOTp7Tefp3hbbgCGQoK7tUvrWiRlcoBHIZ809ElXwNQwVo0B98LuTXQ==}
+ peerDependencies:
+ '@types/react': '*'
+ '@types/react-dom': '*'
+ react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ '@types/react-dom':
+ optional: true
- '@rolldown/binding-darwin-x64@1.0.0-rc.1':
- resolution: {integrity: sha512-cIvAbqM+ZVV6lBSKSBtlNqH5iCiW933t1q8j0H66B3sjbe8AxIRetVqfGgcHcJtMzBIkIALlL9fcDrElWLJQcQ==}
- engines: {node: ^20.19.0 || >=22.12.0}
- cpu: [x64]
- os: [darwin]
+ '@radix-ui/react-scroll-area@1.2.18':
+ resolution: {integrity: sha512-Zn5Cd171wxsO3Dfg8HaW6RifTb9CYTKQJHs/G4+LN1GfmJpaQMZQyQxMprVPHpaz7QY4l9BxK2JwQuzHsXC8nA==}
+ peerDependencies:
+ '@types/react': '*'
+ '@types/react-dom': '*'
+ react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ '@types/react-dom':
+ optional: true
- '@rolldown/binding-darwin-x64@1.2.10':
- resolution: {integrity: sha512-7f5h17q5KZVx/ji1vb8OTq31ch1O2I7K8NPIr44GkyWTApXMIsmhWqZfgpOH10xeauqghDAvGlZktasCkcF6Eg==}
- engines: {node: ^20.19.0 || >=22.12.0}
- cpu: [x64]
- os: [darwin]
+ '@radix-ui/react-select@2.3.7':
+ resolution: {integrity: sha512-WFGImkmbzcfxeIwq/+4HvRN0pizBwbwQUED4I13ezQsDdfl38ZntN6TmR8XaSzPBqoCToe8rF75j6NPNDSzhbg==}
+ peerDependencies:
+ '@types/react': '*'
+ '@types/react-dom': '*'
+ react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ '@types/react-dom':
+ optional: true
- '@rolldown/binding-freebsd-x64@1.0.0-rc.1':
- resolution: {integrity: sha512-rVt+B1B/qmKwCl1XD02wKfgh3vQPXRXdB/TicV2w6g7RVAM1+cZcpigwhLarqiVCxDObFZ7UgXCxPC7tpDoRog==}
- engines: {node: ^20.19.0 || >=22.12.0}
- cpu: [x64]
- os: [freebsd]
+ '@radix-ui/react-separator@1.1.15':
+ resolution: {integrity: sha512-jOLO4lssEzWpoDu7G+Ze4VjwMRUBt291pnZD0gmalREZipnTX3wadQo7Fy48GCTfe14/YRN6rw/rOJqrE85Wxw==}
+ peerDependencies:
+ '@types/react': '*'
+ '@types/react-dom': '*'
+ react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ '@types/react-dom':
+ optional: true
- '@rolldown/binding-freebsd-x64@1.2.10':
- resolution: {integrity: sha512-ynOk/eEYhC6ZB2xCGvKrEOwE58oBy9LnrAqtkrDF9Fz1VTaNdGZTsV0VarJdhPwb+sOJTGjCLwcuyRJZ1dnMcQ==}
- engines: {node: ^20.19.0 || >=22.12.0}
- cpu: [x64]
- os: [freebsd]
+ '@radix-ui/react-slider@1.4.7':
+ resolution: {integrity: sha512-mTSLf1GC/C0moWjTbvCM6Qn/gBjvlFt1azuWF2v7MN5C3Zq2U2J2lN3ZEYkpujuOU5Ro7A28wkviSxaKnG0BYg==}
+ peerDependencies:
+ '@types/react': '*'
+ '@types/react-dom': '*'
+ react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ '@types/react-dom':
+ optional: true
- '@rolldown/binding-linux-arm-gnueabihf@1.0.0-rc.1':
- resolution: {integrity: sha512-69YKwJJBOFprQa1GktPgbuBOfnn+EGxu8sBJ1TjPER+zhSpYeaU4N07uqmyBiksOLGXsMegymuecLobfz03h8Q==}
- engines: {node: ^20.19.0 || >=22.12.0}
- cpu: [arm]
- os: [linux]
+ '@radix-ui/react-slot@1.3.3':
+ resolution: {integrity: sha512-qx7oqnYbxnK9kYI9m317qmFmEgo6ywqWvbTogdj7cL9p3/yx4M48p7Rnw5z3H890cL/ow/EeWJsuTykeZVXP5Q==}
+ peerDependencies:
+ '@types/react': '*'
+ react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
- '@rolldown/binding-linux-arm-gnueabihf@1.2.10':
- resolution: {integrity: sha512-ERrAs185meZZhGan7a4l3RiiJK1ArSDlHdST++uvSxe+FDbR4TwUPahT/cbZJvaG6fIpDpF78surN+tX708Y4Q==}
- engines: {node: ^20.19.0 || >=22.12.0}
- cpu: [arm]
- os: [linux]
+ '@radix-ui/react-switch@1.3.7':
+ resolution: {integrity: sha512-48tB/4dn2UVLBCYhTu9AuR63IHl73l/qLbLgxd86noTUor4/K4LFDAcYjK+isP5313qxaFpjPVogE7+Y0/V3Kw==}
+ peerDependencies:
+ '@types/react': '*'
+ '@types/react-dom': '*'
+ react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ '@types/react-dom':
+ optional: true
- '@rolldown/binding-linux-arm64-gnu@1.0.0-rc.1':
- resolution: {integrity: sha512-9JDhHUf3WcLfnViFWm+TyorqUtnSAHaCzlSNmMOq824prVuuzDOK91K0Hl8DUcEb9M5x2O+d2/jmBMsetRIn3g==}
- engines: {node: ^20.19.0 || >=22.12.0}
- cpu: [arm64]
- os: [linux]
- libc: [glibc]
+ '@radix-ui/react-tabs@1.1.21':
+ resolution: {integrity: sha512-UKxJlZid7FVtsk/WTxj4i4uSEgj2Au+KBbS7SQyTlzMhhn+86Cz3tISZdTa87bfEfcuvZezf2ZsxD4xuEKtkog==}
+ peerDependencies:
+ '@types/react': '*'
+ '@types/react-dom': '*'
+ react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ '@types/react-dom':
+ optional: true
- '@rolldown/binding-linux-arm64-gnu@1.2.10':
- resolution: {integrity: sha512-KN7OHKD0J3jy1UzBwZWPxpwhODf9IARUIJcrH+yLYKOcmegZ8luEUM38lDP1bDVj40yP6PsSzCqOJF76vljFnQ==}
- engines: {node: ^20.19.0 || >=22.12.0}
- cpu: [arm64]
- os: [linux]
- libc: [glibc]
-
- '@rolldown/binding-linux-arm64-musl@1.0.0-rc.1':
- resolution: {integrity: sha512-UvApLEGholmxw/HIwmUnLq3CwdydbhaHHllvWiCTNbyGom7wTwOtz5OAQbAKZYyiEOeIXZNPkM7nA4Dtng7CLw==}
- engines: {node: ^20.19.0 || >=22.12.0}
- cpu: [arm64]
- os: [linux]
- libc: [musl]
-
- '@rolldown/binding-linux-arm64-musl@1.2.10':
- resolution: {integrity: sha512-8l9wP8O+wa8zD6iw6egSfzVtu7oZVfH3hlUsMM4MwbLMhxleqeoXbZzjddyK3YyNlwLhqznq3tF7PkNJ8T/V2w==}
- engines: {node: ^20.19.0 || >=22.12.0}
- cpu: [arm64]
- os: [linux]
- libc: [musl]
-
- '@rolldown/binding-linux-ppc64-gnu@1.2.10':
- resolution: {integrity: sha512-SeXNKeQzA5kLhz/J0CH6ZP0/HJ3v1xm/0YbiYpE0kK7emfRC2OIGGIaE14xzkISEGv2aYuUSpiLiU5Gbq+OI0A==}
- engines: {node: ^20.19.0 || >=22.12.0}
- cpu: [ppc64]
- os: [linux]
- libc: [glibc]
-
- '@rolldown/binding-linux-s390x-gnu@1.2.10':
- resolution: {integrity: sha512-mtht0nR+y8/hart4175Ll15w7lY8dg7CtQ+j2FDNTsDRspOWTK/2V3l0aj9sIj7XmvqxT8Yli/wq22e7feTTWg==}
- engines: {node: ^20.19.0 || >=22.12.0}
- cpu: [s390x]
- os: [linux]
- libc: [glibc]
+ '@radix-ui/react-toast@1.2.23':
+ resolution: {integrity: sha512-ofhyAsYaocRGOs/n0XWdUOSVzEAG6BfrMVM8z0c0kLEWY38w/0WuMFPTJP/HVaZPYkMvHZoKIIhNcjbTCBILPg==}
+ peerDependencies:
+ '@types/react': '*'
+ '@types/react-dom': '*'
+ react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ '@types/react-dom':
+ optional: true
- '@rolldown/binding-linux-x64-gnu@1.0.0-rc.1':
- resolution: {integrity: sha512-uVctNgZHiGnJx5Fij7wHLhgw4uyZBVi6mykeWKOqE7bVy9Hcxn0fM/IuqdMwk6hXlaf9fFShDTFz2+YejP+x0A==}
- engines: {node: ^20.19.0 || >=22.12.0}
- cpu: [x64]
- os: [linux]
- libc: [glibc]
+ '@radix-ui/react-toggle-group@1.1.19':
+ resolution: {integrity: sha512-OtnwuSVjd1Ofi+AdnvhsjQdyuhCDwYs1w9RyB5BN/OavXOVQo42SYqQjwUnbPnaiPFBpQ9aX70dWeee+v2oBLA==}
+ peerDependencies:
+ '@types/react': '*'
+ '@types/react-dom': '*'
+ react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ '@types/react-dom':
+ optional: true
- '@rolldown/binding-linux-x64-gnu@1.2.10':
- resolution: {integrity: sha512-FSM94nGd55NYo48usCyM/nHfUKRnqc9+b0vJNuKV0oCCpIp/OGims7rO1Nv/DkFkt0S/s2rxsJ2kkS8J3HcpeA==}
- engines: {node: ^20.19.0 || >=22.12.0}
- cpu: [x64]
- os: [linux]
- libc: [glibc]
+ '@radix-ui/react-toggle@1.1.18':
+ resolution: {integrity: sha512-7lonPlKfSacd20GlOBx2ltuVKz9oqWYZz+oMQyOltw6t1y2nyftj2ZmwwUHYn49kqfDWcp8dNZm5NgV+5Z+mug==}
+ peerDependencies:
+ '@types/react': '*'
+ '@types/react-dom': '*'
+ react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ '@types/react-dom':
+ optional: true
- '@rolldown/binding-linux-x64-musl@1.0.0-rc.1':
- resolution: {integrity: sha512-T6Eg0xWwcxd/MzBcuv4Z37YVbUbJxy5cMNnbIt/Yr99wFwli30O4BPlY8hKeGyn6lWNtU0QioBS46lVzDN38bg==}
- engines: {node: ^20.19.0 || >=22.12.0}
- cpu: [x64]
- os: [linux]
- libc: [musl]
+ '@radix-ui/react-toolbar@1.1.19':
+ resolution: {integrity: sha512-Ph0IvtYw4VB12ZnZg+YtrGs8yJQsnizwo/zu0R4Y/nWugtJzA7Pg1eWeuDR9+LSqn+xjamss+UOSOJJJ4gx8jw==}
+ peerDependencies:
+ '@types/react': '*'
+ '@types/react-dom': '*'
+ react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ '@types/react-dom':
+ optional: true
- '@rolldown/binding-linux-x64-musl@1.2.10':
- resolution: {integrity: sha512-C3YxNB16myRLs7o+B+6PnQ6jBsdIS4+AE4Ah8glVGhDpEv9AOvxhZ/1duAb4B0UGczEK/lBbccksd8VI+p6zfw==}
- engines: {node: ^20.19.0 || >=22.12.0}
- cpu: [x64]
- os: [linux]
- libc: [musl]
+ '@radix-ui/react-tooltip@1.2.16':
+ resolution: {integrity: sha512-6EamKFRRnlpdadndbZ6LMwycfwkwPte1B42hs6QA0gYhjaOKqW4PZ4pjaW9UrlDX5eVt/OjncE7BFTPL5nmZhg==}
+ peerDependencies:
+ '@types/react': '*'
+ '@types/react-dom': '*'
+ react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ '@types/react-dom':
+ optional: true
- '@rolldown/binding-openharmony-arm64@1.0.0-rc.1':
- resolution: {integrity: sha512-PuGZVS2xNJyLADeh2F04b+Cz4NwvpglbtWACgrDOa5YDTEHKwmiTDjoD5eZ9/ptXtcpeFrMqD2H4Zn33KAh1Eg==}
- engines: {node: ^20.19.0 || >=22.12.0}
- cpu: [arm64]
- os: [openharmony]
+ '@radix-ui/react-use-callback-ref@1.1.4':
+ resolution: {integrity: sha512-R6OUY2e2fA6Yn6s+VSx5KBV6Nx8LQEhu+cz7LCej18rQ1HLyg9PSC9jP/ZNx0o6FAIK9c0F1kHylzSxKsdlkrQ==}
+ peerDependencies:
+ '@types/react': '*'
+ react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
- '@rolldown/binding-openharmony-arm64@1.2.10':
- resolution: {integrity: sha512-571TlE/F1eeTjjdjYAMMMPs1Mfv3MtX6s3+ZKVU6HiUjZ5Njc6c/qzNy/8K3zALTZnaw3JQVYrHxvNfjm43KAg==}
- engines: {node: ^20.19.0 || >=22.12.0}
- cpu: [arm64]
- os: [openharmony]
+ '@radix-ui/react-use-controllable-state@1.2.6':
+ resolution: {integrity: sha512-uEQJGT97ZA/TgP/Hydw47lHu+/vQj6z/0jA+WeTbK1o9Rx45GImjpD0tc3W5ad3D6XTSR6e1yEO0FvGq6WQfVQ==}
+ peerDependencies:
+ '@types/react': '*'
+ react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
- '@rolldown/binding-wasm32-wasi@1.0.0-rc.1':
- resolution: {integrity: sha512-2mOxY562ihHlz9lEXuaGEIDCZ1vI+zyFdtsoa3M62xsEunDXQE+DVPO4S4x5MPK9tKulG/aFcA/IH5eVN257Cw==}
- engines: {node: '>=14.0.0'}
- cpu: [wasm32]
+ '@radix-ui/react-use-effect-event@0.0.5':
+ resolution: {integrity: sha512-7cshFL8HGS/7HEiHH+9kL9HBwp2sa9yX18Knwek6KYWmXwM7pegMgta2AXMQKI+rq3JnfSj9x8wYqFMTdG1Jgg==}
+ peerDependencies:
+ '@types/react': '*'
+ react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
- '@rolldown/binding-win32-arm64-msvc@1.0.0-rc.1':
- resolution: {integrity: sha512-oQVOP5cfAWZwRD0Q3nGn/cA9FW3KhMMuQ0NIndALAe6obqjLhqYVYDiGGRGrxvnjJsVbpLwR14gIUYnpIcHR1g==}
- engines: {node: ^20.19.0 || >=22.12.0}
- cpu: [arm64]
- os: [win32]
+ '@radix-ui/react-use-escape-keydown@1.1.5':
+ resolution: {integrity: sha512-ge3ipobwSXTj4JyVtswQ7qZj0ZHdtbGuOno/LrgAAeSxtsJ6Vs4Gz5IkPH2bmqpjcLUFoqGhA/mueuIf63UXlA==}
+ peerDependencies:
+ '@types/react': '*'
+ react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
- '@rolldown/binding-win32-arm64-msvc@1.2.10':
- resolution: {integrity: sha512-QXW+ZWaiqs2c7Fi++D/SsW07LTPcUrncxcskJGfGNBoaLik1IU6fJymz4HsqwEO0u5Iq11yTO0B/mc4cPk7jrQ==}
- engines: {node: ^20.19.0 || >=22.12.0}
- cpu: [arm64]
- os: [win32]
+ '@radix-ui/react-use-is-hydrated@0.1.3':
+ resolution: {integrity: sha512-umO/aJ+82CpOnhDZUTbILCQf7kU/g0iv+oGs/Q8jw7IkhWBzaEP4sA268PhFAJTFetbwp3ICc6ktpI4TqtxcIw==}
+ peerDependencies:
+ '@types/react': '*'
+ react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
- '@rolldown/binding-win32-x64-msvc@1.0.0-rc.1':
- resolution: {integrity: sha512-Ydsxxx++FNOuov3wCBPaYjZrEvKOOGq3k+BF4BPridhg2pENfitSRD2TEuQ8i33bp5VptuNdC9IzxRKU031z5A==}
- engines: {node: ^20.19.0 || >=22.12.0}
- cpu: [x64]
- os: [win32]
+ '@radix-ui/react-use-layout-effect@1.1.4':
+ resolution: {integrity: sha512-K20DkRkUwDnxEYMBPcg3Y6voLkEy5p5QQmszZgLngKKiC7dzBR/aEuK3w1qlx2JWDUNH6FluahYdgR3BP+QbYw==}
+ peerDependencies:
+ '@types/react': '*'
+ react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
- '@rolldown/binding-win32-x64-msvc@1.2.10':
- resolution: {integrity: sha512-5FQFGgah17YeMtG1Yd5a+rMxQpTksyNXxRtKz06FVTaQw3RKYUJQbUoKk0/5jrXBpDo+7makNP7UHA2LQyH64A==}
- engines: {node: ^20.19.0 || >=22.12.0}
- cpu: [x64]
- os: [win32]
+ '@radix-ui/react-use-previous@1.1.4':
+ resolution: {integrity: sha512-XoSLhbRbqxFtgJoi2fNHA3C6pDlY34x508vUpUGoFZfvePfHXHbE1lC4FYFMnJWgiCRroSTw6fOsXQoVS9RwZg==}
+ peerDependencies:
+ '@types/react': '*'
+ react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
- '@rolldown/pluginutils@1.0.0-rc.1':
- resolution: {integrity: sha512-UTBjtTxVOhodhzFVp/ayITaTETRHPUPYZPXQe0WU0wOgxghMojXxYjOiPOauKIYNWJAWS2fd7gJgGQK8GU8vDA==}
+ '@radix-ui/react-use-rect@1.1.4':
+ resolution: {integrity: sha512-cSOCh6JlkmfjLyNcLiu2nB4v+nm+dkZ+Q5KHWk/soo4U7ZLiEQFKHK9/YmtBHjfCEaU43IBKQOc4/uJmCaiCTQ==}
+ peerDependencies:
+ '@types/react': '*'
+ react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
- '@rolldown/pluginutils@1.0.1':
- resolution: {integrity: sha512-2j9bGt5Jh8hj+vPtgzPtl72j0yRxHAyumoo6TNfAjsLB04UtpSvPbPcDcBMxz7n+9CYB0c1GxQFxYRg2jimqGw==}
+ '@radix-ui/react-use-size@1.1.4':
+ resolution: {integrity: sha512-D3anSY15EJoxrihpsXI6SMrmmonnQtR2ni7arO+Lfdg3O95b9hNXxONk8jA5C8ANdF/h5HMAxejgs8PWJ6rlhw==}
+ peerDependencies:
+ '@types/react': '*'
+ react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
- '@rollup/pluginutils@5.4.0':
- resolution: {integrity: sha512-MfPp06CjRLfXQ3wY0R8vJDYBy/MvVcc9OulEfR0B8Iv9ko+GCNaRZ+EpJYFl27LhKsZK0o420sYCRHCjfCgeUg==}
- engines: {node: '>=14.0.0'}
+ '@radix-ui/react-visually-hidden@1.2.11':
+ resolution: {integrity: sha512-NFS86RYYZb4/exihaESBGOpMJFz8MGLAfu3mOBSGByVnVPC9JPASfYubxd/8KbkQK0sYAv8lVQDEQukDX/qXvQ==}
peerDependencies:
- rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0
+ '@types/react': '*'
+ '@types/react-dom': '*'
+ react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
peerDependenciesMeta:
- rollup:
+ '@types/react':
+ optional: true
+ '@types/react-dom':
optional: true
- '@rollup/rollup-android-arm-eabi@4.62.2':
- resolution: {integrity: sha512-6o7ZLZK+BeenkZCFNDXqpbjw9bD6nuWonvS/lwQJp7NoVVxm6p3qE7qQ5jGuBjiFsgvqjD8mZAU5oWxTmbOeOg==}
- cpu: [arm]
- os: [android]
+ '@radix-ui/rect@1.1.3':
+ resolution: {integrity: sha512-JtyZR+mqgBibTo8xea3B6ZRmzZiM/YeVBtUkas6zMuXjAlfIFIW2FgqeM9eLyvEaYX66vr6DJMK+4U6LV0KhNw==}
- '@rollup/rollup-android-arm64@4.62.2':
- resolution: {integrity: sha512-BaH7BllCACHoH1LguOU56UItGfUWjujlO65kS9LAodViaN4bwIKd7oeW/ZHJ/4ljr/7MIiENnNy3HJ0zXv8Zkw==}
- cpu: [arm64]
- os: [android]
+ '@react-aria/color@3.2.1':
+ resolution: {integrity: sha512-v/pZh1yBNeayQ5Kio0xRIX0gBf6uu+KjCRW4QSydTyRpmhvk6sMzHT9i9/vIMdaDHaYHBXlXF+Tp/mvS9CG4Zw==}
+ peerDependencies:
+ react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
+ react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
- '@rollup/rollup-darwin-arm64@4.62.2':
- resolution: {integrity: sha512-v39RCCvj4He82I9sFmk+M1VZ0PLM9sfsLVikjfx2hYBNALhrrOR2D3JjQA6AhlaSOgcR+RzrKY7e1+bT6SUO/A==}
- cpu: [arm64]
- os: [darwin]
+ '@react-aria/focus@3.22.1':
+ resolution: {integrity: sha512-CPxtkyrBi/HYY5P3lE/57sQ6qfa0lN8E55TOm89H0kNGv0lKt+/0zP7lWERzBjRr5IxBVrQX4gFEowBN52LPaA==}
+ peerDependencies:
+ react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
+ react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
- '@rollup/rollup-darwin-x64@4.62.2':
- resolution: {integrity: sha512-yl0y2vq3S3lHeuXhEdss6TWfKW8vkujImO12tn4ZkG/4oghr09LvdYm2RElVjokTQiUvDUGXLGsYeLqUMCKpGA==}
- cpu: [x64]
- os: [darwin]
+ '@react-aria/interactions@3.28.1':
+ resolution: {integrity: sha512-Bqb+HrD5I5MHS2SKBhISYqo2SW8Y2dfzgF/Y1lIJq7xqLxheo9vzxPGEHhz+XzkgGfoqEJx8A6a3C7uiqS3HWA==}
+ peerDependencies:
+ react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
+ react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
- '@rollup/rollup-freebsd-arm64@4.62.2':
- resolution: {integrity: sha512-tT4pvt4qXD+vEoezupCWi+a1F0vvDiksiHc+PxRlYTOH1I6/X4id9jPxTP+Fg+545euaFT1jJVs4CEdHZAU1vw==}
- cpu: [arm64]
- os: [freebsd]
+ '@react-aria/ssr@3.10.1':
+ resolution: {integrity: sha512-jn038/ZYmu6DpfXJ6r2U9zFFppjbc9wnApPJSCxao2RZVEqep4YyoniHSy8qv6V21/xyS4IV7W9a+X2jOjSuag==}
+ engines: {node: '>= 12'}
+ peerDependencies:
+ react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
+ react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
- '@rollup/rollup-freebsd-x64@4.62.2':
- resolution: {integrity: sha512-6nU5F2wCW+qvCBhTn1pdIU3bzsIoF7EUwsCDRxilWGprQR6yd508YnH9+OKFCwpfS8pjZqDUmnCAr7exax0XCg==}
- cpu: [x64]
- os: [freebsd]
+ '@react-aria/utils@3.34.1':
+ resolution: {integrity: sha512-H6+rGZL+0f58bBNaUMfctEnT+NogqwAk+nHiB8sR3K+YlQ37GTuCijy2U/pPvQtFMS5mURrjZeBH5JNNXsx14A==}
+ peerDependencies:
+ react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
+ react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
- '@rollup/rollup-linux-arm-gnueabihf@4.62.2':
- resolution: {integrity: sha512-n1GJHPOvpIfhi3TmrCeh6S6URt9BFCt0KQE3qvexyGCTAKpR4Lg+eWvNZEqu7epxwus/8ElT3hacYEucm49SZg==}
- cpu: [arm]
- os: [linux]
- libc: [glibc]
+ '@react-spectrum/color@3.2.1':
+ resolution: {integrity: sha512-FbB+GaVufsN+obNJmUAe8XGZTeJjEWvEf/k/7nxDxoDCBdg/o6eEPONAZyID5Dj1f8BZKNym8VURxDZx7IIyuQ==}
+ peerDependencies:
+ react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
+ react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
+
+ '@react-spectrum/provider@3.11.0':
+ resolution: {integrity: sha512-W2Gxbj8AcG5OR2K5Ua3K8qQqxdsiytEiz+2rhr6oQyBM8VafEgDcNPYSOTtfjrQM3snl2Uhp8LzwN0jwQe/6nQ==}
+ peerDependencies:
+ react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
+ react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
+
+ '@react-stately/color@3.10.1':
+ resolution: {integrity: sha512-v4YlLa/oRQpPa/M9Yq1e0Bl8Z7xzGZdNDAIbfIMZuiJtacaOKriPW+AOgjjT/Ab0fNX2YDbwIYvkiMOJBnTi5A==}
+ peerDependencies:
+ react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
+ react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
+
+ '@react-stately/utils@3.12.1':
+ resolution: {integrity: sha512-NqKfzrknpfwiewx7R2vk1P+CneClInPDsIhw15+jOcUYSEfej0nta4cJywuKQJ2gsPwqX/ojDNixedCve9FWGw==}
+ peerDependencies:
+ react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
+ react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
+
+ '@react-types/color@3.2.0':
+ resolution: {integrity: sha512-beV3vz80nzZ1EuYUM7296Kyi3AHcMrbQw0qub/9yzHWVTKKc5sy/e4dCMKcWL/ArkeAyc7jDOiui190RQ4l0Fw==}
+ peerDependencies:
+ '@react-spectrum/provider': ^3.0.0
+ react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
+ react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
+
+ '@react-types/shared@3.36.1':
+ resolution: {integrity: sha512-AzsuD9OfxTOZMMvTRhlN3oHBwOmFN7tDh27LzqmHt4+uOgPhJT7ZM7/kVs/8/o0WxayMUIk3hBmCFRHv1FUoag==}
+ peerDependencies:
+ react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
+
+ '@renovatebot/pep440@4.2.1':
+ resolution: {integrity: sha512-2FK1hF93Fuf1laSdfiEmJvSJPVIDHEUTz68D3Fi9s0IZrrpaEcj6pTFBTbYvsgC5du4ogrtf5re7yMMvrKNgkw==}
+ engines: {node: ^20.9.0 || ^22.11.0 || ^24, pnpm: ^10.0.0}
+
+ '@rolldown/binding-android-arm-eabi@1.2.11':
+ resolution: {integrity: sha512-A5kXfGKvKWWZE0TtPrfsvT+q4Y5d1QG8gGUzpYjGydM+fARM9MuX90PrXYXe0XbsDVgyxxNzHo6giCj90bsFNw==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [arm]
+ os: [android]
+
+ '@rolldown/binding-android-arm64@1.0.0-rc.1':
+ resolution: {integrity: sha512-He6ZoCfv5D7dlRbrhNBkuMVIHd0GDnjJwbICE1OWpG7G3S2gmJ+eXkcNLJjzjNDpeI2aRy56ou39AJM9AD8YFA==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [arm64]
+ os: [android]
+
+ '@rolldown/binding-android-arm64@1.2.11':
+ resolution: {integrity: sha512-z6cTycz+iJ4PVkuL4HHW4DfTfoeU/2nqYYuSOrTmH7yHK5Y0LCOnA03V4ZNxavyVaU1oOqUgIg2klN/s+USGOA==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [arm64]
+ os: [android]
+
+ '@rolldown/binding-darwin-arm64@1.0.0-rc.1':
+ resolution: {integrity: sha512-YzJdn08kSOXnj85ghHauH2iHpOJ6eSmstdRTLyaziDcUxe9SyQJgGyx/5jDIhDvtOcNvMm2Ju7m19+S/Rm1jFg==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [arm64]
+ os: [darwin]
+
+ '@rolldown/binding-darwin-arm64@1.2.11':
+ resolution: {integrity: sha512-jShvqNtP6vDC6/A5JOAzbVV+DkgHqhl/ScVCJEbt+TUY6QYz7YnXcrg3sLtFBniro0f/Ld50ZwCWA6f7KYD1nQ==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [arm64]
+ os: [darwin]
+
+ '@rolldown/binding-darwin-x64@1.0.0-rc.1':
+ resolution: {integrity: sha512-cIvAbqM+ZVV6lBSKSBtlNqH5iCiW933t1q8j0H66B3sjbe8AxIRetVqfGgcHcJtMzBIkIALlL9fcDrElWLJQcQ==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [x64]
+ os: [darwin]
+
+ '@rolldown/binding-darwin-x64@1.2.11':
+ resolution: {integrity: sha512-f2i2xiNWq1Z1l2++q2fuhZRdLAT3aqxD6vRNm1RAxpUoBcdqNB3C0s1Bt+K+PbEx2F5F4gQp6hqKkphCY/xF9w==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [x64]
+ os: [darwin]
+
+ '@rolldown/binding-freebsd-x64@1.0.0-rc.1':
+ resolution: {integrity: sha512-rVt+B1B/qmKwCl1XD02wKfgh3vQPXRXdB/TicV2w6g7RVAM1+cZcpigwhLarqiVCxDObFZ7UgXCxPC7tpDoRog==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [x64]
+ os: [freebsd]
+
+ '@rolldown/binding-freebsd-x64@1.2.11':
+ resolution: {integrity: sha512-4Ir5FSOKIAMr4r0kExpt1s3bMgzJU3rA45AYOHtQpls0oNeqcYBKrWMlckrYH4KCfGLfkfn1tN1dmZPMVsdXow==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [x64]
+ os: [freebsd]
+
+ '@rolldown/binding-linux-arm-gnueabihf@1.0.0-rc.1':
+ resolution: {integrity: sha512-69YKwJJBOFprQa1GktPgbuBOfnn+EGxu8sBJ1TjPER+zhSpYeaU4N07uqmyBiksOLGXsMegymuecLobfz03h8Q==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [arm]
+ os: [linux]
+
+ '@rolldown/binding-linux-arm-gnueabihf@1.2.11':
+ resolution: {integrity: sha512-/gnRDM+39BROzAN/k1OZjDPnDMcZxB/0EUxKjONO5yVkNEvlsoMDrxGNKgZi/ttFriS2gwlDNzB65pvNbFOXIQ==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [arm]
+ os: [linux]
+
+ '@rolldown/binding-linux-arm64-gnu@1.0.0-rc.1':
+ resolution: {integrity: sha512-9JDhHUf3WcLfnViFWm+TyorqUtnSAHaCzlSNmMOq824prVuuzDOK91K0Hl8DUcEb9M5x2O+d2/jmBMsetRIn3g==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [arm64]
+ os: [linux]
+ libc: [glibc]
+
+ '@rolldown/binding-linux-arm64-gnu@1.2.11':
+ resolution: {integrity: sha512-PFaK8HwvAHbaKbBcDNQihjMKYvFnA5hiENx/l5tphTDz1E0WFp32l0A7aq7lyUwGsRw/xSrNIy/gIK4thrSCrw==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [arm64]
+ os: [linux]
+ libc: [glibc]
+
+ '@rolldown/binding-linux-arm64-musl@1.0.0-rc.1':
+ resolution: {integrity: sha512-UvApLEGholmxw/HIwmUnLq3CwdydbhaHHllvWiCTNbyGom7wTwOtz5OAQbAKZYyiEOeIXZNPkM7nA4Dtng7CLw==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [arm64]
+ os: [linux]
+ libc: [musl]
+
+ '@rolldown/binding-linux-arm64-musl@1.2.11':
+ resolution: {integrity: sha512-AskzJUIKRLPxkruR1wLKewGbOw+EYfU/9lOrBFj4AFrEA8hPpKFnODWNu2WLaNs0QNkEb9QIJufmVZZIL/bJlg==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [arm64]
+ os: [linux]
+ libc: [musl]
+
+ '@rolldown/binding-linux-ppc64-gnu@1.2.11':
+ resolution: {integrity: sha512-qlUGAheh2yh8afH7QBgx0PrRHN85hKnNd78x8MeMhXivuevgd8vgf6/CstOzmNKY/lLTHvNTrPy98cLnAugzJw==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [ppc64]
+ os: [linux]
+ libc: [glibc]
+
+ '@rolldown/binding-linux-s390x-gnu@1.2.11':
+ resolution: {integrity: sha512-secpEad+0vCbSfn8upFySkDskv+bGPk3THSDS9Y89yc4rb4kzqHp8Dmyd9BkQW4SnhNXBZCl/6CrO//hZahNJQ==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [s390x]
+ os: [linux]
+ libc: [glibc]
+
+ '@rolldown/binding-linux-x64-gnu@1.0.0-rc.1':
+ resolution: {integrity: sha512-uVctNgZHiGnJx5Fij7wHLhgw4uyZBVi6mykeWKOqE7bVy9Hcxn0fM/IuqdMwk6hXlaf9fFShDTFz2+YejP+x0A==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [x64]
+ os: [linux]
+ libc: [glibc]
+
+ '@rolldown/binding-linux-x64-gnu@1.2.11':
+ resolution: {integrity: sha512-mOVBT3dPpkWm8XBWPmU4bf+U6dYDLeMo/9ojUmis4N0L5uu10qra5vOyngZ7/PSdoE4G9KvRt4bloRxNjLas7A==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [x64]
+ os: [linux]
+ libc: [glibc]
+
+ '@rolldown/binding-linux-x64-musl@1.0.0-rc.1':
+ resolution: {integrity: sha512-T6Eg0xWwcxd/MzBcuv4Z37YVbUbJxy5cMNnbIt/Yr99wFwli30O4BPlY8hKeGyn6lWNtU0QioBS46lVzDN38bg==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [x64]
+ os: [linux]
+ libc: [musl]
+
+ '@rolldown/binding-linux-x64-musl@1.2.11':
+ resolution: {integrity: sha512-Is78i9A8Ui4SqcxUwFJ9uMmjDn58IbVTjFWYdQestFEgeuEmHMLGNriXnVJKkwG2YiZjw8cP0zCTyDMdDGtOOg==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [x64]
+ os: [linux]
+ libc: [musl]
+
+ '@rolldown/binding-openharmony-arm64@1.0.0-rc.1':
+ resolution: {integrity: sha512-PuGZVS2xNJyLADeh2F04b+Cz4NwvpglbtWACgrDOa5YDTEHKwmiTDjoD5eZ9/ptXtcpeFrMqD2H4Zn33KAh1Eg==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [arm64]
+ os: [openharmony]
+
+ '@rolldown/binding-openharmony-arm64@1.2.11':
+ resolution: {integrity: sha512-dUCXneZ87INUMyQ0D+C0HrEBNUPNXHaPmU5GTjyKTJEiussw9Kaj5Ln8UztPe4epV/ffvgNBEadksdYhmW6xJA==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [arm64]
+ os: [openharmony]
+
+ '@rolldown/binding-wasm32-wasi@1.0.0-rc.1':
+ resolution: {integrity: sha512-2mOxY562ihHlz9lEXuaGEIDCZ1vI+zyFdtsoa3M62xsEunDXQE+DVPO4S4x5MPK9tKulG/aFcA/IH5eVN257Cw==}
+ engines: {node: '>=14.0.0'}
+ cpu: [wasm32]
+
+ '@rolldown/binding-win32-arm64-msvc@1.0.0-rc.1':
+ resolution: {integrity: sha512-oQVOP5cfAWZwRD0Q3nGn/cA9FW3KhMMuQ0NIndALAe6obqjLhqYVYDiGGRGrxvnjJsVbpLwR14gIUYnpIcHR1g==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [arm64]
+ os: [win32]
+
+ '@rolldown/binding-win32-arm64-msvc@1.2.11':
+ resolution: {integrity: sha512-jByxb6qfd+bH1xUd0qnfFnb17i9sWBPY2tOavJ0l3tdr3OTu+Kvtm8cd/JV5nFt657b1VqGltxg9olOEfofXWw==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [arm64]
+ os: [win32]
+
+ '@rolldown/binding-win32-x64-msvc@1.0.0-rc.1':
+ resolution: {integrity: sha512-Ydsxxx++FNOuov3wCBPaYjZrEvKOOGq3k+BF4BPridhg2pENfitSRD2TEuQ8i33bp5VptuNdC9IzxRKU031z5A==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [x64]
+ os: [win32]
+
+ '@rolldown/binding-win32-x64-msvc@1.2.11':
+ resolution: {integrity: sha512-/PzKqzAJ03i19oy2ItPvyvaVjOjBCNnfaJs8yvUdGBKmiESgnrJSQ2awd81QzFbbnAmu7YO9ZnJrDCb9VSJPRA==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [x64]
+ os: [win32]
+
+ '@rolldown/pluginutils@1.0.0-rc.1':
+ resolution: {integrity: sha512-UTBjtTxVOhodhzFVp/ayITaTETRHPUPYZPXQe0WU0wOgxghMojXxYjOiPOauKIYNWJAWS2fd7gJgGQK8GU8vDA==}
+
+ '@rolldown/pluginutils@1.0.1':
+ resolution: {integrity: sha512-2j9bGt5Jh8hj+vPtgzPtl72j0yRxHAyumoo6TNfAjsLB04UtpSvPbPcDcBMxz7n+9CYB0c1GxQFxYRg2jimqGw==}
+
+ '@rollup/pluginutils@5.4.0':
+ resolution: {integrity: sha512-MfPp06CjRLfXQ3wY0R8vJDYBy/MvVcc9OulEfR0B8Iv9ko+GCNaRZ+EpJYFl27LhKsZK0o420sYCRHCjfCgeUg==}
+ engines: {node: '>=14.0.0'}
+ peerDependencies:
+ rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0
+ peerDependenciesMeta:
+ rollup:
+ optional: true
+
+ '@rollup/rollup-android-arm-eabi@4.62.2':
+ resolution: {integrity: sha512-6o7ZLZK+BeenkZCFNDXqpbjw9bD6nuWonvS/lwQJp7NoVVxm6p3qE7qQ5jGuBjiFsgvqjD8mZAU5oWxTmbOeOg==}
+ cpu: [arm]
+ os: [android]
+
+ '@rollup/rollup-android-arm64@4.62.2':
+ resolution: {integrity: sha512-BaH7BllCACHoH1LguOU56UItGfUWjujlO65kS9LAodViaN4bwIKd7oeW/ZHJ/4ljr/7MIiENnNy3HJ0zXv8Zkw==}
+ cpu: [arm64]
+ os: [android]
+
+ '@rollup/rollup-darwin-arm64@4.62.2':
+ resolution: {integrity: sha512-v39RCCvj4He82I9sFmk+M1VZ0PLM9sfsLVikjfx2hYBNALhrrOR2D3JjQA6AhlaSOgcR+RzrKY7e1+bT6SUO/A==}
+ cpu: [arm64]
+ os: [darwin]
+
+ '@rollup/rollup-darwin-x64@4.62.2':
+ resolution: {integrity: sha512-yl0y2vq3S3lHeuXhEdss6TWfKW8vkujImO12tn4ZkG/4oghr09LvdYm2RElVjokTQiUvDUGXLGsYeLqUMCKpGA==}
+ cpu: [x64]
+ os: [darwin]
+
+ '@rollup/rollup-freebsd-arm64@4.62.2':
+ resolution: {integrity: sha512-tT4pvt4qXD+vEoezupCWi+a1F0vvDiksiHc+PxRlYTOH1I6/X4id9jPxTP+Fg+545euaFT1jJVs4CEdHZAU1vw==}
+ cpu: [arm64]
+ os: [freebsd]
+
+ '@rollup/rollup-freebsd-x64@4.62.2':
+ resolution: {integrity: sha512-6nU5F2wCW+qvCBhTn1pdIU3bzsIoF7EUwsCDRxilWGprQR6yd508YnH9+OKFCwpfS8pjZqDUmnCAr7exax0XCg==}
+ cpu: [x64]
+ os: [freebsd]
+
+ '@rollup/rollup-linux-arm-gnueabihf@4.62.2':
+ resolution: {integrity: sha512-n1GJHPOvpIfhi3TmrCeh6S6URt9BFCt0KQE3qvexyGCTAKpR4Lg+eWvNZEqu7epxwus/8ElT3hacYEucm49SZg==}
+ cpu: [arm]
+ os: [linux]
+ libc: [glibc]
'@rollup/rollup-linux-arm-musleabihf@4.62.2':
resolution: {integrity: sha512-JqgflS8wEB+UXV/vS1RpRbifGBeN4D5lz8D8oOFbFZw4vedvdOgCFAjfBmIMdW3yL10XpQQ0Ambepw6MXrhOnA==}
@@ -2451,15 +3133,15 @@ packages:
'@so-ric/colorspace@1.1.6':
resolution: {integrity: sha512-/KiKkpHNOBgkFJwu9sh48LkHSMYGyuTcSFK/qMBdnOAlrRJzRSXAOFB5qwzaVQuDl8wAvHVMkaASQDReTahxuw==}
- '@spectrum-icons/ui@3.7.2':
- resolution: {integrity: sha512-7IuSHO+Ck8gJUIGIXqDcDIU4R8RHRUZhlfz8AwN1rSdCEvdgp6DWYN0LDTMrWh7TN/H5hrJ7oDO/gUpR3TnBjw==}
+ '@spectrum-icons/ui@3.7.1':
+ resolution: {integrity: sha512-veQymocUYo5OciXQajSailOdbWe+k6+2ehfF8D4d0V923D4xOUadtT253xXZ5vEQjPat6Kyp2WDKeQNjd7kL1w==}
peerDependencies:
'@adobe/react-spectrum': ^3.47.0
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
- '@spectrum-icons/workflow@4.3.2':
- resolution: {integrity: sha512-UkVg8Kp9rInjfqtG27in9p7RWfN9JFSvZr7ZOpN2n9jkrQ1y88hZpK8dKce8lgVb7jALXtsi2p0rjyaWzO0QsA==}
+ '@spectrum-icons/workflow@4.3.1':
+ resolution: {integrity: sha512-kDF+/EbFVyLGytotqqdYt4uSij4j/PQmDQO5km/C6DyzKjyuic3FnSBFinR+mA6oFv1OjMcLvrrDBqK3wbqRlA==}
peerDependencies:
'@adobe/react-spectrum': ^3.47.0
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
@@ -2563,14 +3245,14 @@ packages:
'@tailwindcss/postcss@4.3.3':
resolution: {integrity: sha512-JTSZZGQi1AyKirbLN3azmjVzef92tcX7h+iSqPdaeStyFpGpDlKvvpxeOE8njhbUanbRwr3z8DyzhICWnMtQeg==}
- '@tanstack/react-virtual@3.14.10':
- resolution: {integrity: sha512-SRyoUbdFMRHuYXMijV5H4ZarQWpXkj3iANq8OFre+pybeVap8ZJjZ3Nz9bVjx4d8PfobVUQUdKyyyHYk3E+djw==}
+ '@tanstack/react-virtual@3.14.4':
+ resolution: {integrity: sha512-dZzAQP2uCDAd+9sAehqmx/DcU+B91Q4Gb0aDSM7t9bJvWDyGF9sapFNW5r1gNLsHs4wTb6ScZENJeYaHxJLiOw==}
peerDependencies:
react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0
react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0
- '@tanstack/virtual-core@3.17.8':
- resolution: {integrity: sha512-BfEvehNpOT75r5Ksc5xW6NZuXujTfb7nlSEyVu4XHG3gdxNg1KqXruWbDewXOUaUYIo4oRbSfkjIajz4MAT8tA==}
+ '@tanstack/virtual-core@3.17.2':
+ resolution: {integrity: sha512-w43MvWvmShpb6kIC9MOoLyUkLmRTLPjt61bHWs+X29hACSpX+n8DvgZ3qM7cUfflKlRRcHR9KVJE6TmcqnQvcA==}
'@testing-library/dom@10.4.1':
resolution: {integrity: sha512-o4PXJQidqJl82ckFaXUeoAW+XysPLauYI43Abki5hABd853iMhitooc6znOnczgbTYmEP6U6/y1ZyKAIsvMKGg==}
@@ -2628,8 +3310,8 @@ packages:
'@ts-morph/common@0.28.1':
resolution: {integrity: sha512-W74iWf7ILp1ZKNYXY5qbddNaml7e9Sedv5lvU1V8lftlitkc9Pq1A+jlH23ltDgWYeZFFEqGCD1Ies9hqu3O+g==}
- '@tybys/wasm-util@0.10.4':
- resolution: {integrity: sha512-W3c4gRigFS0T/Ma4qIYF3GDAc5AQdHb1yL5znJT1Zv1YaD9Kitx656wBjvr19qbiosmZT8lWDM5BEMynUqX65A==}
+ '@tybys/wasm-util@0.10.3':
+ resolution: {integrity: sha512-F3fo1MYrRJYL3zER0OUOmkutjr1Vp23m7OsSgp7nq4SP6OqX6C/56XFIPAl5bt3zaBRjmW7SGz3u/6LwFpYcOg==}
'@types/aria-query@5.0.4':
resolution: {integrity: sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw==}
@@ -2679,8 +3361,8 @@ packages:
'@types/d3-format@3.0.4':
resolution: {integrity: sha512-fALi2aI6shfg7vM5KiR1wNJnZ7r6UuggVqtDA+xiEdPZQwy/trcQaHnwShLuLdta2rTymCNpxYTiMZX/e09F4g==}
- '@types/d3-geo@3.1.1':
- resolution: {integrity: sha512-65Emv9fQiQQqphLlRkuQ5ypPsOmWPhtBGCMv61JDPEPMvsx+gzhGf74yw1a78xFKPj6zw4AgQICJoQv0vK9M2w==}
+ '@types/d3-geo@3.1.0':
+ resolution: {integrity: sha512-856sckF0oP/diXtS4jNsiQw/UuK5fQG8l/a9VVLeSouf1/PPbBE1i1W852zVwKwYCBkFJJB7nCFTbk6UMEXBOQ==}
'@types/d3-hierarchy@3.1.7':
resolution: {integrity: sha512-tJFtNoYBtRtkNysX1Xq4sxtjK8YgoWUNpIiUee0/jHGRwqvzYxkq0hGVbbOGSz+JgFxxRu4K8nb3YpG3CMARtg==}
@@ -2697,8 +3379,8 @@ packages:
'@types/d3-quadtree@3.0.6':
resolution: {integrity: sha512-oUzyO1/Zm6rsxKRHA1vH0NEDG58HrT5icx/azi9MF1TWdtttWl0UIUsjEQBBh+SIkrpd21ZjEv7ptxWys1ncsg==}
- '@types/d3-random@3.0.4':
- resolution: {integrity: sha512-UHYId5WTCx4L4YNel7NU00XUXXgvgpgZOvp10PuvsQENjMDXhh2RyFc0KBjO7B45ne4Ha1yVH7ii0vnzKkuzWA==}
+ '@types/d3-random@3.0.3':
+ resolution: {integrity: sha512-Imagg1vJ3y76Y2ea0871wpabqp613+8/r0mCLEBfdtqC7xMSfj9idOnmBYyMoULfHePJyxMAw3nWhJxzc+LFwQ==}
'@types/d3-scale-chromatic@3.1.0':
resolution: {integrity: sha512-iWMJgwkK7yTRmWqRB5plb1kadXyQ5Sj8V/zYlFGMUBbIPKQScw+Dku9cAAMgJG+z5GYDoMjWGLVOvjghDEFnKQ==}
@@ -2709,8 +3391,8 @@ packages:
'@types/d3-selection@3.0.11':
resolution: {integrity: sha512-bhAXu23DJWsrI45xafYpkQ4NtcKMwWnAC/vKrd2l+nxMFuvOT3XMYTIj2opv8vq8AO5Yh7Qac/nSeP/3zjTK0w==}
- '@types/d3-shape@3.2.0':
- resolution: {integrity: sha512-kVd74ta9eof3eJOvbNd1vGKS/XERRyQbT26Og63hIsvDO84cjD5gEOhsXf26w3FSoNlPVz84DOFcKv/oou+fMw==}
+ '@types/d3-shape@3.1.8':
+ resolution: {integrity: sha512-lae0iWfcDeR7qt7rA88BNiqdvPS5pFVPpo5OfjElwNaT2yyekbM0C9vK+yqBqEmHr6lDkRnYNoTBYlAgJa7a4w==}
'@types/d3-time-format@4.0.3':
resolution: {integrity: sha512-5xg9rC+wWL8kdDj153qZcsJ0FWiFt0J5RB6LYUNZjwSnesfblqrI/bJ1wBdJ8OQfncgbJG5+2F+qfqnqyzYxyg==}
@@ -2748,8 +3430,8 @@ packages:
'@types/geojson@7946.0.16':
resolution: {integrity: sha512-6C8nqWur3j98U6+lXDfTUWIfgvZU+EumvpHKcYjujKH7woYyLj2sUmff0tRhrqM7BohUw7Pz3ZB1jj2gW9Fvmg==}
- '@types/hast@3.0.5':
- resolution: {integrity: sha512-rp/ezSWaD1m44dPKICGhiskI13nVr7qTloFwDa/IYkhhf5nzwP+zIQcIJh3WIFSBOy/H1PzB40jPjMDksN4F+g==}
+ '@types/hast@3.0.4':
+ resolution: {integrity: sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==}
'@types/json-schema@7.0.15':
resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==}
@@ -2775,12 +3457,18 @@ packages:
'@types/node@20.11.0':
resolution: {integrity: sha512-o9bjXmDNcF7GbM4CNQpmi+TutCgap/K3w1JyKgxAjqx41zp9qlIAVFi0IhCNsJcXolEqLWhbFbEeL0PvYm4pcQ==}
+ '@types/node@26.2.0':
+ resolution: {integrity: sha512-5IviulTZeRNp2vAJ514cc/HUlY5nZ9fCbq9DMyC52BrhFZACo3nI0R7qBxhQmo/d27NFe96ur/b7Wwxklda+kg==}
+
'@types/node@26.4.1':
resolution: {integrity: sha512-k97ENvZWtvA6yqz5/FS6a7duDgOPEeOQOc2iKS/nY6mX6qJUKtLnWzQS+Xj6tXweyj6ZcTAK2Qecetnvi9nCLA==}
'@types/node@26.6.2':
resolution: {integrity: sha512-X1P21scMv4zGKLYqjdGjaKa7COa0RKVYYZZN/NfvLQ1JegxFhdhpZG/Lyn8AXx6CDUavKAd11v6BvfpkDByK8g==}
+ '@types/prismjs@1.26.6':
+ resolution: {integrity: sha512-vqlvI7qlMvcCBbVe0AKAb4f97//Hy0EBTaiW8AalRnG/xAN5zOiWWyrNqNXeq8+KAuvRewjCVY1+IPxk4RdNYw==}
+
'@types/react-dom@19.2.5':
resolution: {integrity: sha512-fMPwH9v7r/pp43yUd2/Mbiex5KouJwwR3dzHkhLREUC6764VyDsqxhAxv6OFEYR1RhjOyD1naqba8ECDBe7ZQg==}
peerDependencies:
@@ -2809,6 +3497,14 @@ packages:
'@types/unist@3.0.3':
resolution: {integrity: sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==}
+ '@typescript-eslint/eslint-plugin@8.67.0':
+ resolution: {integrity: sha512-Un7Heoyj65NREbKAyIrFxeM143NZpExWmy1Nep4DLeQOeLlTeumPjoNKnBrU5D5moWXbPJgRa5Uwcdu0faVNGQ==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+ peerDependencies:
+ '@typescript-eslint/parser': ^8.67.0
+ eslint: ^8.57.0 || ^9.0.0 || ^10.0.0
+ typescript: '>=4.8.4 <6.1.0'
+
'@typescript-eslint/eslint-plugin@8.70.1':
resolution: {integrity: sha512-nDNrUQ/4ruSNYbu749TRY7cfrzPtoLHEXSNBI8aaNY32LlZCajixqRf3FqcKC4p5Cam4VOHYx/t+i5+nKXvrqA==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
@@ -2817,6 +3513,13 @@ packages:
eslint: ^8.57.0 || ^9.0.0 || ^10.0.0
typescript: '>=4.8.4 <6.1.0'
+ '@typescript-eslint/parser@8.67.0':
+ resolution: {integrity: sha512-fUBfTuuEulWqX6V8+O3PtScV01tzYYRUDTAirHFKoRAt7nOzoGiPt0M/bB47wWNy0coOOcgEwAMUtBpykMxl6w==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+ peerDependencies:
+ eslint: ^8.57.0 || ^9.0.0 || ^10.0.0
+ typescript: '>=4.8.4 <6.1.0'
+
'@typescript-eslint/parser@8.70.1':
resolution: {integrity: sha512-nO974WLllwhSFWQXnMLj6nDGa8f0khKEz1JzpPJ1u7Vm/4X1X6ZHajpoknU4bb41vJyMB0HHVyS2GqdhWfIXZw==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
@@ -2824,22 +3527,45 @@ packages:
eslint: ^8.57.0 || ^9.0.0 || ^10.0.0
typescript: '>=4.8.4 <6.1.0'
+ '@typescript-eslint/project-service@8.67.0':
+ resolution: {integrity: sha512-cvE8c7ulYeXN9fYuszhCeCsbzyVEXuhrRCybnBre7TUmqb5nRmBfQAwCj0O3WJFDeyAZt4VYv51vMCC9LHSdYw==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+ peerDependencies:
+ typescript: '>=4.8.4 <6.1.0'
+
'@typescript-eslint/project-service@8.70.1':
resolution: {integrity: sha512-62xOgboPfwc3/IgPSX/W6oQR3ZbF04194FPGUGH8HL8iLFHbt/456/8Ph1wLNUgVF+s94FlHoipBsz+v7+LMnA==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
typescript: '>=4.8.4 <6.1.0'
+ '@typescript-eslint/scope-manager@8.67.0':
+ resolution: {integrity: sha512-EgvsleTwS4E+WzzSvem8fAUubLwatMNF1B5hHSLQxcvs7q2dtRhGyujHwLJSYlG41niJ7GP24Aha2+0mb1b2kg==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+
'@typescript-eslint/scope-manager@8.70.1':
resolution: {integrity: sha512-Pa0EeSeAusQc1WbjQMac+YfenewYTBu0KjgYvkUKwhXaHUKbFog23Dm/rp0DX/6tyYOQ3Xl1a+3EcFNZynGHCw==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
- '@typescript-eslint/tsconfig-utils@8.70.1':
+ '@typescript-eslint/tsconfig-utils@8.67.0':
+ resolution: {integrity: sha512-vV+LUSv5njUWsknE71fqKTlXUva+R76SaeORd6Zojcunk/6DvKFXONU3BrAs2H49mbygUXt6gbYunzwqNwlhdg==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+ peerDependencies:
+ typescript: '>=4.8.4 <6.1.0'
+
+ '@typescript-eslint/tsconfig-utils@8.70.1':
resolution: {integrity: sha512-jumze1fPI+sDOaM2TWGQdn39PDxTr7TZGeuyLkAbNyx2vtMT3uRnVKChN0hfht5V2TugphJzF6bYXvBcE09qqg==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
typescript: '>=4.8.4 <6.1.0'
+ '@typescript-eslint/type-utils@8.67.0':
+ resolution: {integrity: sha512-aVWDXbRmdXO9siTfX4ditQI1T9+zVcNazT48EJCD0v40/9RIFoUgZ05CmGEq9H2gixRpjUn/iplwvlcvutJW/Q==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+ peerDependencies:
+ eslint: ^8.57.0 || ^9.0.0 || ^10.0.0
+ typescript: '>=4.8.4 <6.1.0'
+
'@typescript-eslint/type-utils@8.70.1':
resolution: {integrity: sha512-7zKTnyvaVWqzLZHPFQtX1hVHqgkMC+WebPWakNCSyrQVbIP1AM0L0TlBZtACldIRb6PptI8Odk+jyZ5kP3B1VA==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
@@ -2847,16 +3573,33 @@ packages:
eslint: ^8.57.0 || ^9.0.0 || ^10.0.0
typescript: '>=4.8.4 <6.1.0'
+ '@typescript-eslint/types@8.67.0':
+ resolution: {integrity: sha512-sBtgslww8nsMYUjhdPBiSyUqSzT8uR6g93A2QXnQC8+cGdjz0CyaOdqHDRJb1AtORbZCNUJBBeFA/tNR2uQmww==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+
'@typescript-eslint/types@8.70.1':
resolution: {integrity: sha512-Dm1ypdhhrGCTyyehxElhgJ6kgk8MVCv5qXdoOVqPr1uqk42jX8KjrZqhROvdShczA8qrDoYiOWn1ykWlx2k81Q==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+ '@typescript-eslint/typescript-estree@8.67.0':
+ resolution: {integrity: sha512-EKQBCE9yNlRJYm7jdTW5AhDacDUmSwQb0FAJAmK2EKYrNXIsa2vxcSZx6PvJ/dEdI6lS+Y9W+EXckLj0iPFGcw==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+ peerDependencies:
+ typescript: '>=4.8.4 <6.1.0'
+
'@typescript-eslint/typescript-estree@8.70.1':
resolution: {integrity: sha512-TU8PwyGN0PQJUcE96mw8eCQ44SmxGdQlJmlWakHaHQ15eIuuvye5yNtmh/i6oS88jzXVQB71xdNkbkB/fMwL0g==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
typescript: '>=4.8.4 <6.1.0'
+ '@typescript-eslint/utils@8.67.0':
+ resolution: {integrity: sha512-U9D1FdwEWBwok3hxxSdhclMb0twvt9QnjIQ0VfQ1AiX2epnpSgv2ubVDsayOFyY8K6FX+AQ7E0FKWVG3iKsj1A==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+ peerDependencies:
+ eslint: ^8.57.0 || ^9.0.0 || ^10.0.0
+ typescript: '>=4.8.4 <6.1.0'
+
'@typescript-eslint/utils@8.70.1':
resolution: {integrity: sha512-Esgul8MsnKnRLdYU2Eb2cRV9bS5HJYtKj1ByJnOzzG2M58DGdSUQ1jUuILxipqcpB2h9WLrbD5GijIWUjX/Tqw==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
@@ -2864,6 +3607,10 @@ packages:
eslint: ^8.57.0 || ^9.0.0 || ^10.0.0
typescript: '>=4.8.4 <6.1.0'
+ '@typescript-eslint/visitor-keys@8.67.0':
+ resolution: {integrity: sha512-fkv8dHRDqfGtTHuJeebdrQ7cX6Ad4WAS00rgHh9UGvMycF1mjBfsxry1XsLIFhWZ6Judlh6UdzK+TYlbpCXgnA==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+
'@typescript-eslint/visitor-keys@8.70.1':
resolution: {integrity: sha512-Vwj9lUIW5Xq3wQ9w6gv3R86g1hMK8f2zNOdGTAgeXUMMXFK78G9ruCjjqutHMNJc0+CH7LYRnHeUB9IT8wFmcw==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
@@ -2873,8 +3620,8 @@ packages:
peerDependencies:
typescript: '*'
- '@ungap/structured-clone@1.4.0':
- resolution: {integrity: sha512-1mEZtMKPM09vDmQt5y7YvmN2+DFTP7Tg0EWXdic8/C6VRnpb33e4ghisCIE3WZjsE2N8mf+QV1Zqh7ZFYLWInQ==}
+ '@ungap/structured-clone@1.3.2':
+ resolution: {integrity: sha512-5jsZFwgR5rTdKwidH9Qmat75RKwqfpKlWWB1frDkljN127mwqBu8K0PYo7/hFpF03IEJpfVPpCQDY/eDx3iHvA==}
'@unrs/resolver-binding-android-arm-eabi@1.12.2':
resolution: {integrity: sha512-g5T90pqg1bo/7mytQx6F4iBNC0Wsh9cu+z9veDbFjc7HjpesJFWD7QMS0NGStXM075+7dJPPVvBbpZlnrdpi/w==}
@@ -3047,6 +3794,9 @@ packages:
'@vercel/cli-auth@0.3.9':
resolution: {integrity: sha512-T98jvrTIVUTP0X44oteRXCoHAFssOdnr+ENtnfylPsm71DWCmQzLuLXr8FWQ3FzwJbBF2hQDhMVhMqXUP18VMw==}
+ '@vercel/cli-config@0.2.4':
+ resolution: {integrity: sha512-kZ5SojbrV06GHoU6QIWGwDXLov+s9rWZ7QqdqKfJfBGCNUieGfgaCjeeenNy8Y+QC0bwC0dZ2B4l5Hvdmrgpdw==}
+
'@vercel/cli-config@0.3.0':
resolution: {integrity: sha512-kQLt5Pm8wKd7/imzDY9/9u0tf8OuRkAuXI+s7j057FSUrXapAmumJSKwDqnR4ZZqdWoUcNLlFAgVIAdiwcGTcw==}
@@ -3140,8 +3890,8 @@ packages:
resolution: {integrity: sha512-UycprH3T6n3jH0k44NHMa7pnFHGu/N05MjojYr+Mc6I7obkoLIJujSWwin1pCvdy/eOxrI/l3uDLQsmcrOb4ug==}
engines: {node: '>= 20'}
- '@vercel/oidc@3.8.9':
- resolution: {integrity: sha512-TcbdH3YtGS2KU98T99dN4sbf+E4vbJZsJTRN97wKQ7QWQ0BR7U02QX3KN4+5GHxBtKTj1c5CnvTTitc2ZRad0A==}
+ '@vercel/oidc@3.8.5':
+ resolution: {integrity: sha512-RwXYtnt6za+5UO4IaLywN/6B95AlLqynPRUWRJxeJ/qufwkcLUbZNUxYtzT0uMpuraWhlNcGqPNGkTnZr4BGBw==}
engines: {node: '>= 20'}
'@vercel/prepare-flags-definitions@0.3.0':
@@ -3296,6 +4046,9 @@ packages:
'@vitest/utils@4.1.11':
resolution: {integrity: sha512-zTCVGpyFsGWBhllOyKlTw/vnr6D9qxsfSDyfbyZmTyjHw5N/VuvzHpHoQjm2ZJzn4RJgx5w4r7V0er69CmLgPQ==}
+ '@workflow/serde@4.1.0':
+ resolution: {integrity: sha512-pav4F2BoirECWR7Nf1TKt+2eETcBj7jj4cBefQ8VXQCA6NPkaKeLfj/zMgi+3zYV5ZIBT4GuUiphsj0/b9hPQQ==}
+
'@workflow/serde@4.1.0-beta.2':
resolution: {integrity: sha512-8kkeoQKLDaKXefjV5dbhBj2aErfKp1Mc4pb6tj8144cF+Em5SPbyMbyLCHp+BVrFfFVCBluCtMx+jjvaFVZGww==}
@@ -3337,6 +4090,11 @@ packages:
resolution: {integrity: sha512-HEHNfbars9v4pgpW6SO1KSPkfoS0xVOM/9UzkJltjlsHZmJasxg8aXkuZa7SMf8vKGIBhpUsPluQSqhJFCqebw==}
engines: {node: '>=0.4.0'}
+ acorn@8.17.0:
+ resolution: {integrity: sha512-xRQbDb9BnwDafYNn6Vwl839DYVjqXYb1XVGtWAZ1kcDc6iwAL4hg3B1dZlRiuENFeO2H53gFG3in621AdERVAg==}
+ engines: {node: '>=0.4.0'}
+ hasBin: true
+
acorn@8.18.0:
resolution: {integrity: sha512-lGq+9yr1/GuAWaVYIHRjvvySG5/4VfKIvC8EWxStPdcDh/Ka7FG3twP6v4d5BkravUilhIAsG4Qj83t02LWUPQ==}
engines: {node: '>=0.4.0'}
@@ -3346,6 +4104,12 @@ packages:
resolution: {integrity: sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==}
engines: {node: '>= 14'}
+ ai@7.0.77:
+ resolution: {integrity: sha512-muLtBSTAUCreR77L16w4AFBiX2gK/RNt84EKp8m03SN9+MfNlC5EGqYYttRjYKV3xe0a33yj1Zawj1EnjejIWw==}
+ engines: {node: '>=22'}
+ peerDependencies:
+ zod: ^3.25.76 || ^4.1.8
+
ajv-formats@2.1.1:
resolution: {integrity: sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==}
peerDependencies:
@@ -3437,8 +4201,8 @@ packages:
array-flatten@1.1.1:
resolution: {integrity: sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==}
- array-includes@3.2.0:
- resolution: {integrity: sha512-VXY5eFRarnXcYxwBjJzPmEhH55+rmP79/+ueDhi0F+TuqfHCItagIHqxeUZrmgrOPa31QTh9H85DjX3FfJ0FTg==}
+ array-includes@3.1.9:
+ resolution: {integrity: sha512-FmeCCAenzH0KH381SPT5FZmiA/TmpndpcaShhfgEN9eCVjnFBqq3l1xrI42y8+PPLI6hypzou4GXw00WHmPBLQ==}
engines: {node: '>= 0.4'}
array-iterate@2.0.1:
@@ -3479,6 +4243,20 @@ packages:
resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==}
engines: {node: '>=12'}
+ assistant-cloud@0.1.41:
+ resolution: {integrity: sha512-lrH9USOoNaAWAAbujeHa/PEiWoqNQHjIPIAeeA3y3GUXOdlmTjIyR/7GbEZBKbHhm1Lyt7aAYKvdxHFkhuEbJw==}
+
+ assistant-stream@0.3.39:
+ resolution: {integrity: sha512-Ad28saCwQxqaB69w4WNaS3uW5OW5BgTYnzTfbgFnz1CPXZjcWFsMrHhcJUpR4+lfYPTNal0oHEb47VUZH4Zz1g==}
+ peerDependencies:
+ ioredis: ^5.10.1 || ^6.0.0
+ redis: ^5.12.1
+ peerDependenciesMeta:
+ ioredis:
+ optional: true
+ redis:
+ optional: true
+
ast-types-flow@0.0.8:
resolution: {integrity: sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==}
@@ -3486,8 +4264,8 @@ packages:
resolution: {integrity: sha512-x1FCFnFifvYDDzTaLII71vG5uvDwgtmDTEVWAxrgeiR8VjMONcCXJx7E+USjDtHlwFmt9MysbqgF9b9Vjr6w+w==}
engines: {node: '>=4'}
- ast-v8-to-istanbul@1.0.7:
- resolution: {integrity: sha512-kFL68AG6ajd8fg248zwM9GQrUWEp79gsmjum34OEXjs4yHuUMZfYKwOLW9GMmB4oNvVrj+EAGxsP7ye2UR9UlA==}
+ ast-v8-to-istanbul@1.0.5:
+ resolution: {integrity: sha512-UPAgKJFSEGMWSDr3LX4tqnAb4f7KGT8O40Tyx8wbYmmZ/yn58lNCm8h3svs3eXgiGd5AXxz8NDOvXWvicq+rJA==}
astring@1.9.0:
resolution: {integrity: sha512-LElXdjswlqjWrPpJFg1Fx4wpkOCxj1TDHlSV4PlaRxHGWko024xICaa97ZkMfs6DRKlCguiAI+rbXv5GWwXIkg==}
@@ -3535,8 +4313,8 @@ packages:
resolution: {integrity: sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==}
engines: {node: '>= 0.4'}
- b4a@1.9.0:
- resolution: {integrity: sha512-dpfcF9fDNR6++cthXR67iyhgqWy9CBouAvIWhIntzBG6cvK/cnIPiZQjBwi/ZqjjBEDGfoNDtmB0kTjroOJ3pQ==}
+ b4a@1.8.1:
+ resolution: {integrity: sha512-aiqre1Nr0B/6DgE2N5vwTc+2/oQZ4Wh1t4NznYY4E00y8LCt6NqdRv81so00oo27D8MVKTpUa/MwUUtBLXCoDw==}
peerDependencies:
react-native-b4a: '*'
peerDependenciesMeta:
@@ -3550,16 +4328,16 @@ packages:
resolution: {integrity: sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==}
engines: {node: 18 || 20 || >=22}
- bare-events@2.9.2:
- resolution: {integrity: sha512-AIPKioV7/Y/8KfZ3AAhjPJxLLbY49S64Ym5DakZlUg75qQiTgUq9hEJoEwa4eUezPUlXRy/i5NpsKvo9jgKmoA==}
+ bare-events@2.9.1:
+ resolution: {integrity: sha512-Z0oHEHAFDZkffN8Qc39zNZjQlMDkPJRyyyZieU1VH7u8c5S+qHZ2S8ixdKIAxEjfHO7FJxXmJWgteOghVanIsg==}
peerDependencies:
bare-abort-controller: '*'
peerDependenciesMeta:
bare-abort-controller:
optional: true
- bare-fs@4.8.1:
- resolution: {integrity: sha512-N1nnXdHZAOSstz0XiHikGS4HGMH4CnSwhqWdGQQMqqdvp4Jybm9sE3R1WVnpWVd4SFkc8ryPDBLViNLwiEqECg==}
+ bare-fs@4.8.0:
+ resolution: {integrity: sha512-fM+MhCvdQhZ7NV6S95a07gPSqjIYKn6mFaXfx266wN3ajZGl/+1AzH+ubkXQ0fFZvOe2nk9VHkzdYkQE5zMV3Q==}
engines: {bare: '>=1.28.0'}
peerDependencies:
bare-buffer: '*'
@@ -3567,11 +4345,11 @@ packages:
bare-buffer:
optional: true
- bare-path@3.1.2:
- resolution: {integrity: sha512-ZyKbsuuqK6Ag0K8pX6V5Txq6XeJRvY+wXucnFGRjiyVYP9YWDpIQugk/b+enRYrEYBJaqLzghRQpXPMR7341Nw==}
+ bare-path@3.1.1:
+ resolution: {integrity: sha512-JprUlveX3QjApC1cTpsUOiscADftCGVWkzitbHsRqv84hzYwYHw2mbluddsq5TvI8mH/8Ov1f4BiMAdcB0oYnQ==}
- bare-stream@2.13.4:
- resolution: {integrity: sha512-PcrQ8lVLbiJscNm1Kez+Yp4Gy4AHGcN1lzwjvf5NybWen7VvEgUfyfnXYJ2zNqWnzOfCb1Abq6lH8ti0syQszA==}
+ bare-stream@2.13.3:
+ resolution: {integrity: sha512-Kc+brLqvEqGkjyfiwJmImAOqLZL7OsoLKuavx+hJjgVV3nLTOjloJyPMFxjUPerGGHrNH0fLU06jjykMLWrERQ==}
peerDependencies:
bare-abort-controller: '*'
bare-buffer: '*'
@@ -3584,19 +4362,19 @@ packages:
bare-events:
optional: true
- bare-url@2.5.4:
- resolution: {integrity: sha512-Gxa7UVWBr0/edU1b+TJhn/AZvMQUj9OGspvYsaTYQrAbZA4BOTZGL3LiZxvD+CeMlDH4juwD84+eTAp/bLYW5g==}
+ bare-url@2.5.2:
+ resolution: {integrity: sha512-L13PCJzKG8RGvx8V1/DdMi12ERhC3tprr7/8a94BxpmnRsFqxh5XZNdhtMxu5HPkRshYOOWRGY8lDP7ZhpG9Cg==}
base64-js@1.5.1:
resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==}
- baseline-browser-mapping@2.11.20:
- resolution: {integrity: sha512-H0ulySigv6icDJ1F7SjtdCD6PrhTpdYCmP0CactWy1+ekh0AFd0o1Wn5T8b+hnTmdBx19u9yhL6wvCylXMY7zw==}
+ baseline-browser-mapping@2.11.17:
+ resolution: {integrity: sha512-KAUDn1OSS0fmPlGO+NOUMRcOQ/b/shUBH3OgkG73mPgdf+JD/BQ6fHboGxNOxnUmlwcq+lLq3dTkayRPuSfXwg==}
engines: {node: '>=6.0.0'}
hasBin: true
- baseline-browser-mapping@2.11.25:
- resolution: {integrity: sha512-gMmEShwwq7FJqMwvfRwvCl00v4kN+KOfJqXn+f4nrufak5gNHJOksd/60Dvjuz7sI8Y5WiSFBa8FEYr+zoyqCw==}
+ baseline-browser-mapping@2.11.26:
+ resolution: {integrity: sha512-GLQdD3y6UF8iVuMJl5fHgE4jdn/ua7n+toKfLgNlg3BqQtOZjpy68T8Tup8/wGWZCDlm7KMg7tPb4MPn7oN0TQ==}
engines: {node: '>=6.0.0'}
hasBin: true
@@ -3632,8 +4410,8 @@ packages:
bl@4.1.0:
resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==}
- body-parser@1.20.8:
- resolution: {integrity: sha512-JNcyFQ64OiijEkPzUBTCe+hyPXUD/3LEldGQ6iF5LR1w00mx9o7xtDWHXBY2iItjdCFGoilOLNQbH943ut7pHA==}
+ body-parser@1.20.6:
+ resolution: {integrity: sha512-p5tAzS57i5MV9fZFDj9LeIiTZEufbSe2eDozP+ElheSUq1m74CRq1jI4mYNDdVs9vQztXFLuk/Gd6BWTdwRJ5g==}
engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16}
body-parser@2.3.0:
@@ -3644,16 +4422,16 @@ packages:
resolution: {integrity: sha512-9gYgQKXx+1nP8mP7CzFyaUARhg7D3n1dF/FnErWmu9l6JvGpNUN278h0aSb+QjoiKSWG+iZ3uHrcqk0qrY9RQQ==}
engines: {node: '>=10'}
- brace-expansion@5.0.12:
- resolution: {integrity: sha512-YovQ3rzhaLMIrDjNDMkNS01tea93qhEhG5xy8f6+R0l+dw3Ki+5sCoIoI942iuLZTHWogWktgwVDhU09iNEimQ==}
+ brace-expansion@5.0.9:
+ resolution: {integrity: sha512-ScQ4IuvIEF1TMlP7Zt+vjJ//9zlPb2SDcxWxM3bk8s6t6GGdJ7KO1dCcTidOPJKePW30LE/2cT7wCyPho9/Wxg==}
engines: {node: 20 || >=22}
braces@3.0.3:
resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==}
engines: {node: '>=8'}
- browserslist@4.28.8:
- resolution: {integrity: sha512-V2NpofLblG64mfOtSgDhOJESZEGogzDMBv/q+W6oc4LXWP/q75eOXoOaaOu1EOadB9U4Bwx/e0yzbvwKH8zalA==}
+ browserslist@4.29.1:
+ resolution: {integrity: sha512-AUdjuRyCNGUYtqpqfTmWyM4fXay8yIQhmLnvYe/THMGfT9B/34X7xQd3ifKxwyNPPpowVBjLb+64BN9Rn1mizw==}
engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7}
hasBin: true
@@ -3707,8 +4485,8 @@ packages:
resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==}
engines: {node: '>=10'}
- caniuse-lite@1.0.30001810:
- resolution: {integrity: sha512-TITQPUkaz+aVk5GL6NhOdwk1aEaNTSDPsGFWrTuhKGtjTF70jL/Oht2W4c6rXUe5fu7Ie19VIahAXHIIiWWNeg==}
+ caniuse-lite@1.0.30001809:
+ resolution: {integrity: sha512-xxWVywk6a6Arlk+hymeycyn/VgqEfLDxupvhH/xiY5SJ/18kmi9o6MiO320DCUzypORHLtvh0I4i04tUhCNHNQ==}
caniuse-lite@1.0.30001812:
resolution: {integrity: sha512-qN+QNNBr93TCmFrmte0bBCjSDMuRvt78VlHT99qIGPszm4QsqCX8lnyWUFkHi8B7ZBAPq8SH+UqyXNy/odMdng==}
@@ -3769,6 +4547,9 @@ packages:
resolution: {integrity: sha512-yKNcXi/Mvi5kb1uK0sahubYiyfUO2EUgOp4NcY9+8NX5Xmc+4yeNogZuLFkpLBBj7/QI9MjRUIuXrV9XOw5kVg==}
engines: {node: '>= 0.3.0'}
+ classnames@2.5.1:
+ resolution: {integrity: sha512-saHYOzhIQs6wy2sVxTM6bUDsQO4F50V9RQ22qBpEdCW+I+/Wmke2HOl6lS6dTpdxVhb88/I6+Hs+438c3lfUow==}
+
cli-boxes@2.2.1:
resolution: {integrity: sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw==}
engines: {node: '>=6'}
@@ -3895,8 +4676,8 @@ packages:
resolution: {integrity: sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==}
engines: {node: '>= 0.6'}
- compression@1.8.2:
- resolution: {integrity: sha512-o8vI5RE5A6EVVOd9o41jKp41aJom+QTEO/Bx8MYNjexMo/Bv2WOjUfZr+aL0WnYSgymUy6zeguqLTsIhV0gMvQ==}
+ compression@1.8.1:
+ resolution: {integrity: sha512-9mAqGPHLakhCLeNyxPkK4xVo746zQ/czLH1Ky+vkitMnWfWZps8r0qXuwhwizagCRttsL4lfG4pIOvaWLpAP0w==}
engines: {node: '>= 0.8.0'}
compute-scroll-into-view@3.1.1:
@@ -4000,8 +4781,8 @@ packages:
csstype@3.2.3:
resolution: {integrity: sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==}
- csv-parse@7.0.2:
- resolution: {integrity: sha512-uKZghv9UmPkMVLYy//KZ9HFAIJsl7wkhoEdIL0+rhuSY9pZQlhaeGEDPIe+/w7eh81MOql8Q/9+inAGWG6ZHYA==}
+ csv-parse@7.0.3:
+ resolution: {integrity: sha512-YFd3QM/yo17vH91L1IOZuvl09zM0zEEtdfTcOCKWcMdM++MNaQSyp09slXyFCLaPXvHstQFx/xC8myiFHSMUvw==}
cytoscape-cose-bilkent@4.1.0:
resolution: {integrity: sha512-wgQlVIUJF13Quxiv5e1gstZ08rnZj2XaLHGoFMYXz7SkNfCDOOteKBE6SYRfA9WxxI/iBc3ajfDoc6hb/MRAHQ==}
@@ -4013,8 +4794,8 @@ packages:
peerDependencies:
cytoscape: ^3.2.0
- cytoscape@3.34.2:
- resolution: {integrity: sha512-Cm2jaj1X/PBNlzV9yH8zcfGOxO7U+CJ/+mxSBVPSchLaugdp4jtlGx5qaHtPRZ6tgiZ5P+o1XoRfJA+ba6KM3g==}
+ cytoscape@3.34.0:
+ resolution: {integrity: sha512-62rNSrioXw93uliKFBwjukeQyeWwH2PqDrTac31r2P6464u3AUvTk0xS4LVvT251g7IgkFunrI48ZEZGjywSOg==}
engines: {node: '>=0.10'}
d3-array@2.12.1:
@@ -4186,8 +4967,8 @@ packages:
resolution: {integrity: sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==}
engines: {node: '>= 0.4'}
- dayjs@1.11.23:
- resolution: {integrity: sha512-QDTCU0M0MxR3hQfnlDJfwekQiaanm1ubOD231u73WBckQ/fsamwRLiE2GBz6D3a/xF1NgfiDLJjXBa1hYOYTtQ==}
+ dayjs@1.11.21:
+ resolution: {integrity: sha512-98IT+HOahAisibz/yjKbzuOBwYcjJ7BCLPzARyHiyEBmRz4fatF+KPJszEHXsGYjUG234aH/cOjW1wwTbKUZlA==}
debounce@1.2.1:
resolution: {integrity: sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug==}
@@ -4350,8 +5131,8 @@ packages:
ee-first@1.1.1:
resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==}
- electron-to-chromium@1.5.421:
- resolution: {integrity: sha512-cUhfpHQy+PGbt+X90DMcAVazDCziIZr73hpxD4LRs4BGQoJCifPzTfQWa7S6c+uhokTOBe8tot09GBSEO6c9LA==}
+ electron-to-chromium@1.5.439:
+ resolution: {integrity: sha512-qu6QIPXhsb+CRcAiTMNjR4A1y/7tCYKkKjr5CZXRVih6qkDf79peZ2BpEU3qoDBNCRrcy3Mra3X9nG5oruuA7Q==}
emoji-regex@8.0.0:
resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==}
@@ -4379,16 +5160,16 @@ packages:
end-of-stream@1.4.5:
resolution: {integrity: sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==}
- enhanced-resolve@5.25.1:
- resolution: {integrity: sha512-nGXts5znJzmWPu+mIE9izCOzdg63oJca2mDzGWWTth7sr4aCToKcoyFVBQwN75Ij5Pf6p510EwkTqViTRzDV+w==}
+ enhanced-resolve@5.24.5:
+ resolution: {integrity: sha512-L1l8TNvomm6UVW5B253AGxQagSQr+vGwhMlrrfRS2qmhx46AMpMVJKQYLvWYbysTMY8VoicOvzHzoHMbyzB+4A==}
engines: {node: '>=10.13.0'}
entities@6.0.1:
resolution: {integrity: sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==}
engines: {node: '>=0.12'}
- entities@8.1.0:
- resolution: {integrity: sha512-kxL7msIffSuh9aaFAMD7rxAIuTRMAHMeBtgHW2yUdWw732ZNh4MehkF2gdjvtdmikkaIP9bFDDJOPlsvm7avrA==}
+ entities@8.0.0:
+ resolution: {integrity: sha512-zwfzJecQ/Uej6tusMqwAqU/6KL2XaB2VZ2Jg54Je6ahNBGNH6Ek6g3jjNCF0fG9EWQKGZNddNjU5F1ZQn/sBnA==}
engines: {node: '>=20.19.0'}
env-paths@2.2.1:
@@ -4444,8 +5225,8 @@ packages:
resolution: {integrity: sha512-yPDz7wqpg1/mmHLmS3tcfTfbw5f1eryXvyghYBffGdERwe+mV7ZcWzTR8LR17Kvqt3qfPurjlonmnq3MKXIOXw==}
engines: {node: '>= 0.4'}
- es-toolkit@1.52.0:
- resolution: {integrity: sha512-XTNEJQh1tY1ZJVcf6ayP/2n4ZPyaHlW2FWs7xvw5ddPuhUVjLD3olQVQS7kf58JbAB48iL0uL/jerTrjtV3lDA==}
+ es-toolkit@1.49.0:
+ resolution: {integrity: sha512-G5iZ6Pc/FNRY/soKZHC+TxGDD83rHUDXxzaWhGCX44vAv/tMs56WMusnm/KMNK+luUPsgA9U28cGr4RDlSzL2g==}
esast-util-from-estree@2.0.0:
resolution: {integrity: sha512-4CyanoAudUSBAn5K13H4JhsMH6L9ZP7XbLVe/dKybkxMO7eDyLsT8UHl9TRNrU2Gr9nz+FovfSIjuXWJ81uVwQ==}
@@ -4620,8 +5401,8 @@ packages:
estree-util-is-identifier-name@3.0.0:
resolution: {integrity: sha512-hFtqIDZTIUZ9BXLb8y4pYGyk6+wekIivNVTcmvk8NoOh+VeRn5y6cEHzbURrWbfp1fIqdVipilzj+lfaadNZmg==}
- estree-util-scope@1.0.1:
- resolution: {integrity: sha512-B0np3dcdxqILX5e9nEi5/Fr4K7gL4oYFVPV1zRa2e9wRCbQoZZNWOZFYyoInvXUPJXBXjss+QXlWLJChDEHDkA==}
+ estree-util-scope@1.0.0:
+ resolution: {integrity: sha512-2CAASclonf+JFWBNJPndcOpA8EMJwa0Q8LUFJEKqXLW6+qBvbFZuF5gItbQOs/umBUkjviCSDCbBwU2cXbmrhQ==}
estree-util-to-js@2.0.0:
resolution: {integrity: sha512-WDF+xj5rRWmD5tj6bIqRi6CkLIXbbNQUcxQHzGysQzvHmdYG2G7p/Tf0J0gpxGgkeMZNTIjT/AoSvC9Xehcgdg==}
@@ -4698,14 +5479,14 @@ packages:
exponential-backoff@3.1.3:
resolution: {integrity: sha512-ZgEeZXj30q+I0EN+CbSSpIyPaJ5HVQD18Z1m+u1FXbAeT94mr1zw50q4q6jiiC447Nl/YTcIYSAftiGqetwXCA==}
- express-rate-limit@8.7.0:
- resolution: {integrity: sha512-hOwV7WOxXfjRpAM1DSJWZDXx3GhplwD8IfwuwvogD8i1Qnkgosw/H45s4ZnFAUHDAhPjlY9hLBvJhKmGMyY26g==}
+ express-rate-limit@8.6.2:
+ resolution: {integrity: sha512-YH4ru+eOJxQABscKFfRCy9R7x9QFGdezclVMwwgFFndzS2Xnm0uo6B0ABZsLhcpeptGv2qvuJVWlQr9gQZoC3A==}
engines: {node: '>= 16'}
peerDependencies:
express: '>= 4.11'
- express@4.22.3:
- resolution: {integrity: sha512-Bdcs4+3qlpVlx2NRn6fgX2Ue2/gGRaPeawebgclM0ERSCqDpA+owF1fdPwjJUTAJWMTuAaxjDf+hzb0/4eKvvw==}
+ express@4.22.2:
+ resolution: {integrity: sha512-IuL+Elrou2ZvCFHs18/CIzy2Nzvo25nZ1/D2eIZlz7c+QUayAcYoiM2BthCjs+EBHVpjYjcuLDAiCWgeIX3X1Q==}
engines: {node: '>= 0.10.0'}
express@5.2.1:
@@ -4735,14 +5516,17 @@ packages:
fast-levenshtein@2.0.6:
resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==}
- fast-uri@3.1.8:
- resolution: {integrity: sha512-GZMtZUTNRpOVIECoXwLNZS5xUGE+mVNbTB8h/7Rwh2TFWcBQiPzTgyZi05BF9UMZKkLJv8XBRJTlU7zg8+ZfMg==}
+ fast-uri@3.1.5:
+ resolution: {integrity: sha512-gHwA1O9LDIcKunMKhObS/HimwtehO1nPUECKAu5TpKgaO19fcWEl4bliWe1jWxVFvIXztJjjQ4L8XQ1EU9f7Jw==}
fastdom@1.0.12:
resolution: {integrity: sha512-LB+xjSTEbjHE1cWsxu+tN2Xqr1kpi+V9aADI7sVM5ZMaXyYGPHULQMzpJMYqOTULK/73pUkWVzzObFRBkPr+hg==}
- fastq@1.20.3:
- resolution: {integrity: sha512-XKv5nnLs6nLF71NgiKJLIZFLkPyIEuOselLG7ujZnGrRfQK8HpvY+WqKhAJUAdLomwVHErVS4LfxFlPq0/FTAw==}
+ fastq@1.20.1:
+ resolution: {integrity: sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw==}
+
+ fault@1.0.4:
+ resolution: {integrity: sha512-CJ0HCB5tL5fYTEA7ToAq5+kTwd++Borf1/bifxd9iT70QcXr4MRrO3Llf8Ifs70q+SJcGHFtnIE/Nw6giCtECA==}
fault@2.0.1:
resolution: {integrity: sha512-WtySTkS4OKev5JtpHXnib4Gxiurzh5NCGvWrFaZ34m6JehfTUhKZvn9njTfw48t6JumVQOmrKqpmGcdwxnhqBQ==}
@@ -4903,10 +5687,6 @@ packages:
resolution: {integrity: sha512-kB3rzJV7d9juLZh8/56QTXCwQfxyhdOMdyYk1HdQKFtF8TJTDTZQJtixWIwXdE9Jji91mC41DUNpjleo4L4eAQ==}
engines: {node: '>=18'}
- gaxios@8.1.0:
- resolution: {integrity: sha512-H9nnqKg0qXk/RePNnzn7RaUGkn0xp5Px426E1pyxdkKRrv4+tydmWsBh9lvHLXUCNutDE9INQ0bkP4J7ZGxErA==}
- engines: {node: '>=22'}
-
gcp-metadata@6.1.1:
resolution: {integrity: sha512-a4tiq7E0/5fTjxPAaH4jpjkSv/uCaU2p5KC6HVGrvl0cDjA8iBZv4vv1gyzlmK0ZUKqwpOyQMKzZQe3lTit77A==}
engines: {node: '>=14'}
@@ -4919,10 +5699,6 @@ packages:
resolution: {integrity: sha512-iJ9KMsiu+xKtNRX0PmGLSaIU3bUBAyzWTyqKemKPzNPsmmsBCQYmlNg+brEbES7IHSXtdVwzBPzx1vz3FAaipw==}
engines: {node: '>=18'}
- gcp-metadata@9.0.4:
- resolution: {integrity: sha512-p6WvbXOhfwnVtv/MyPq5kBiVhfV/qglMIxwwTVNEI1Ha1HmOgz5uHYHtYO6SfGckFaXe8blA11IJJ3wqXmvmBA==}
- engines: {node: '>=22'}
-
generator-function@2.0.1:
resolution: {integrity: sha512-SFdFmIJi+ybC0vjlHN0ZGVGHc3lgE0DxPAT0djjVg+kjOnSqclqmj0KQ7ykTOLP6YxoqOvuAODGdcHJn+43q3g==}
engines: {node: '>= 0.4'}
@@ -5032,10 +5808,6 @@ packages:
resolution: {integrity: sha512-i1ydyHrqcIxXkWh/uBmVkzCvIuq5yiK2ATndIe5XxKholrG/MTYP9xGYka4sQhrbIAgGjL2B6NOE7rFaiF3fXw==}
engines: {node: '>=18'}
- google-auth-library@11.1.0:
- resolution: {integrity: sha512-YIBq5KNoHQrZ9PM4PeodDBqqBGlSTIxh1zibN8u3zNIO9UJg8gvKuCpdKV7fWXhsZ2zRkU6FhGrgKNgLJ2IRgw==}
- engines: {node: '>=22'}
-
google-auth-library@9.15.1:
resolution: {integrity: sha512-Jb6Z0+nvECVz+2lzSMt9u98UsoakXxA2HGHMCxh+so3n90XgYWkq5dur19JAJV7ONiJY22yBTyJB1TSkvPq9Ng==}
engines: {node: '>=14'}
@@ -5056,13 +5828,9 @@ packages:
resolution: {integrity: sha512-WE9av4wKDZgRjBwgVUabocx8T6/7o3Ca1Fat46FXDhXVAFibzNadedcOXrdgd1Kzmk8tsk/9ZH89Wyf/SqeZ3A==}
engines: {node: '>=18'}
- google-logging-utils@2.0.1:
- resolution: {integrity: sha512-HMhaQghlOTvbcb3c4T5jmmOMtG3JUF1iOQMezaJXL86CDS+Tm2vHd0IeLFRAx3+ewd+bo9E1HFHoy17X5aJa9A==}
- engines: {node: '>=22'}
-
- googleapis-common@9.1.0:
- resolution: {integrity: sha512-UJBElspYPJb0+fI8q0LxARw1hPnwd9yd5NqhKqEUPxjhnB1jdsRP7rlRTBp69JS5Vo10bCiRE9+ISsIG2A+Ttg==}
- engines: {node: '>=22'}
+ googleapis-common@8.0.3:
+ resolution: {integrity: sha512-7g1yzQKx0mmNTjiK0H9dJ8eqKqDBveES9vLHeg5neb3BMQy/d1oQefIMhIpOVT8a+f+LOcixMEdRbFIW/cQUJw==}
+ engines: {node: '>=18'}
gopd@1.2.0:
resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==}
@@ -5182,8 +5950,11 @@ packages:
highlight.js@10.7.3:
resolution: {integrity: sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A==}
- hono@4.13.9:
- resolution: {integrity: sha512-7dMkQmZoC4E6F7AtaQSPhlWAdnBti+j7rreMZl8QB4jFiEhP9TWbGWUMi8WYzBCgmgulxuvLQupKqo+Co6Omyg==}
+ highlightjs-vue@1.0.0:
+ resolution: {integrity: sha512-PDEfEF102G23vHmPhLyPboFCD+BkMGu+GuJe2d9/eH4FsCwvgBpnc9n0pGE+ffKdph38s6foEZiEjdgHdzp+IA==}
+
+ hono@4.13.3:
+ resolution: {integrity: sha512-r8AO2mYHoLxSHkgafNeC/BXyb2vWRxD3jem4Ts+ptav8oTG5FIRifAjuJEmZI4bSvvc2ns0GxmIYiZnHqN3mMw==}
engines: {node: '>=16.9.0'}
hookified@1.15.1:
@@ -5199,6 +5970,9 @@ packages:
html-escaper@2.0.2:
resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==}
+ html-url-attributes@3.0.1:
+ resolution: {integrity: sha512-ol6UPyBWqsrO6EJySPz2O7ZSr856WDrEzM5zMqp+FJJLGMW35cLYmmZnl0vztAZxRUoNZJFTCohfjuIJ8I4QBQ==}
+
html-void-elements@3.0.0:
resolution: {integrity: sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==}
@@ -5249,8 +6023,8 @@ packages:
resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==}
engines: {node: '>= 4'}
- ignore@7.0.10:
- resolution: {integrity: sha512-HpbUakT7xp5miBUywCHf36ZEuAJNklBJDDsGpUIjMzOSmM8ELSfA9Sa/QDPeNeqeoN31u+UTCkL4klCOVvRm4Q==}
+ ignore@7.0.6:
+ resolution: {integrity: sha512-BAg6QkE8W+TuQLrrw0Ugr7HegXduRuuj8/ti2kSOc+jz1dmx8/WNcjr6XGnq5YpDWxFwwaavqD0+jIUOKelTsw==}
engines: {node: '>= 4'}
import-fresh@3.3.1:
@@ -5291,8 +6065,8 @@ packages:
react: ^16.8 || ^17.0 || ^18.0 || ^19.0.0 || ^19.0.0-rc
react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0.0 || ^19.0.0-rc
- install-artifact-from-github@1.8.1:
- resolution: {integrity: sha512-lV8dRlR/3i6Tk4X9agaqhMRY6ScVU3YOuKse0VRnP9+rUWfImeCjo1TeAefXEauNVF3a8QgOb6jW3CZJetVopw==}
+ install-artifact-from-github@1.8.0:
+ resolution: {integrity: sha512-EA861BGTOO91yuymA5V6Sx//J5471NBpMHnVZJetquqOYknm4zz25Y2tk/f74ggxerqtd8nfBrn9eaR0oxReEA==}
engines: {node: '>=18'}
hasBin: true
@@ -5307,8 +6081,8 @@ packages:
resolution: {integrity: sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==}
engines: {node: '>=12'}
- ip-address@10.7.2:
- resolution: {integrity: sha512-7H/2gFSIitxc0hG3nOI1glS8QLo/EHBFFLk8vEUjXY/xu0AdL8jZ9U1IzO2PUm0d2D/ofQcAifb0g6OBkt8U7w==}
+ ip-address@10.5.0:
+ resolution: {integrity: sha512-R5SnVLJmgYYvf2F2ZgwSBnelz5G4q5AxIC277GDfUaNbrZKNANcBC7RHqYYePlszf4kBolVkJauG0ZjHHFh55g==}
engines: {node: '>= 12'}
ip-regex@2.1.0:
@@ -5360,8 +6134,8 @@ packages:
resolution: {integrity: sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==}
hasBin: true
- is-core-module@2.17.0:
- resolution: {integrity: sha512-J/vG0zBCbIKOQFfufSwyXdMrsohyJIUNkrnmo6WZGzoM7tr/lsbfW5b2BvisL6zsyMzK9UxV9L6c7AoFbyXHOA==}
+ is-core-module@2.16.2:
+ resolution: {integrity: sha512-evOr8xfXKxE6qSR0hSXL2r3sd7ALj8+7jQEUvPYcm5sgZFdJ+AYzT6yNmJenvIYQBgIGwfwz08sL8zoL7yq2BA==}
engines: {node: '>= 0.4'}
is-data-view@1.0.2:
@@ -5601,8 +6375,8 @@ packages:
jose@5.9.6:
resolution: {integrity: sha512-AMlnetc9+CV9asI19zHmrgS/WYsWUwCn2R7RzlbJWD7F9eWYUTGyBmU9o6PxngtLGOiDGPRu+Uc4fhKzbpteZQ==}
- jose@6.2.12:
- resolution: {integrity: sha512-9NiFmJEex0sy2Dk58j2UGBSHgUs2ypF9eZSu4L6vjOX3Dp96Sw1F3uL+H+D1sx02jZZdzUT0HgvCy59CuvXcWw==}
+ jose@6.2.10:
+ resolution: {integrity: sha512-iiW7J9qRFlGxvCOIBDBDxFePQSn7ZMAnrYGhrrOo6siO/MIqwfyilLR27pkfDgUk+raLuzADS8A3S/KLBisc0g==}
jose@6.2.3:
resolution: {integrity: sha512-YYVDInQKFJfR/xa3ojUTl8c2KoTwiL1R5Wg9YCydwH0x0B9grbzlg5HC7mMjCtUJjbQ/YnGEZIhI5tCgfTb4Hw==}
@@ -5613,8 +6387,8 @@ packages:
js-tokens@4.0.0:
resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==}
- js-yaml@4.3.2:
- resolution: {integrity: sha512-SFNOvSJ+Dgf/9An904Yx+CgSlIPCkIpao4qo51lpee25TIRejdH3rhR4EZMGoNx3/TP3O+wzWuiTFl4sqbltzA==}
+ js-yaml@4.3.1:
+ resolution: {integrity: sha512-CY6crGq313MX8GkwvB7tzgp99vjQxY1++5y10/BKN/GUfHqWaOGQMNZkBvqSzsZKWk/ijwHlWzzkLulsGHhjWQ==}
hasBin: true
jsdom@30.1.1:
@@ -5653,6 +6427,9 @@ packages:
json-schema-typed@8.0.2:
resolution: {integrity: sha512-fQhoXdcvc3V28x7C7BMs4P5+kNlgUURe2jmUT1T//oBRMDrqy1QPelJimwZGo7Hg9VPV3EQV5Bnq4hbFy2vetA==}
+ json-schema@0.4.0:
+ resolution: {integrity: sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==}
+
json-stable-stringify-without-jsonify@1.0.1:
resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==}
@@ -5937,9 +6714,16 @@ packages:
resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==}
hasBin: true
+ lowlight@1.20.0:
+ resolution: {integrity: sha512-8Ktj+prEb1RoCPkEOrPMYUN/nCggB7qAWe3a7OpMjWQkh3l2RD5wKRQ+o8Q8YuI9RG/xs95waaI/E6ym/7NsTw==}
+
lru-cache@10.4.3:
resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==}
+ lru-cache@11.5.2:
+ resolution: {integrity: sha512-4pfM1Ff0x50o0tQwb5ucw/RzNyD0/YJME6IVcStalZuMWxdt3sR3huStTtxz4PUmvZfRguvDejasvQ2kifR11g==}
+ engines: {node: 20 || >=22}
+
lru-cache@11.5.3:
resolution: {integrity: sha512-U4N8FgzmWxc8k1VH8Kr6lQg18U7Fjvby6wXHVRX/ZZ7IwWbRMgrRbP0Wrb5q5NVinryp4SQampHKdvtecItxUg==}
engines: {node: 20 || >=22}
@@ -5975,8 +6759,8 @@ packages:
magic-string@0.30.21:
resolution: {integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==}
- magicast@0.5.5:
- resolution: {integrity: sha512-UicdXN8zQ3JHlxVq+28afMXPr1z7WNY6+7EJnzTdQWkTAlMLF5fNCCKxJHBQwGaNGR11581EiQmQzx73+MvszA==}
+ magicast@0.5.4:
+ resolution: {integrity: sha512-llBEhWm1SacoRwgHUoQJYtwp4PBLF4faQi5TCpIGyGs9n4y5+juI0tDgyKIfpqxckRHaHzouUEph3THklWh03w==}
make-dir@3.1.0:
resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==}
@@ -6096,8 +6880,8 @@ packages:
resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==}
engines: {node: '>= 8'}
- mermaid@11.17.2:
- resolution: {integrity: sha512-V6K3C8EBdEsPFZXSKMJe6ppQOENxuHARr9GvHX4hh47lAbhMRD9qf4oEK7LoaRQxULMa80/qt5gHO73aCleBBg==}
+ mermaid@11.17.0:
+ resolution: {integrity: sha512-Jo9N377Wb4MSnHFPTbLi2SxFpsQl4eVHoxnW5U1Md9EazvgMp3s+4ohDxr81YNTgbn5Kj7HJ3yslrSJ52kwpbA==}
methods@1.1.2:
resolution: {integrity: sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==}
@@ -6290,15 +7074,12 @@ packages:
moo@0.5.3:
resolution: {integrity: sha512-m2fmM2dDm7GZQsY7KK2cme8agi+AAljILjQnof7p1ZMDe6dQ4bdnSMx0cPppudoeNv5hEFQirN6u+O4fDE0IWA==}
- morgan@1.12.1:
- resolution: {integrity: sha512-tljKC0ex20AjO58Ob/eZ53JloycbVswbVNCHx6V6VLGzqt/w8dIynVGL0G8qVjNKwiA7sYSogCrN6QtJ82IV+g==}
+ morgan@1.11.0:
+ resolution: {integrity: sha512-zSkVu3t18r39pw4ixfBKvfZi3y2UOqr7d4WYwcj3m8nXpEQK4rPO6GLzs/CExoRgmX3y9EjmmcXqv6jq0SK46g==}
engines: {node: '>= 0.8.0'}
- motion-dom@13.2.0:
- resolution: {integrity: sha512-N6gdSoWRDk0Rh/fVtlqUtLs+fEN3ELFZI3cn3IQE9Mnf3E+Mh8wjO6MstzCOPFh4Yf0L1as5m2eUyYWj8ylVSQ==}
-
- motion-dom@13.4.2:
- resolution: {integrity: sha512-mY293Iyj4rOQo5sDxUwPYLOKiveLQrJoK1tKfG8V1H3MMGMfan3s2i7NBW18WnD39DD79ogyiL/1fmy22GLG5w==}
+ motion-dom@13.4.4:
+ resolution: {integrity: sha512-z2qN3RUABSci4G7cr5aHTFhqPNCWJsEMMfRlzxqtANQsSCIbVJmHvMV288m5x7doEQBTYbRTWbKdztmquCn4Sw==}
motion-utils@13.0.0:
resolution: {integrity: sha512-7DnN7TmbLcYXcG4RVadXIihWlyuM9afoUww8Y5Agg431kGKiuL2/OMyP4mJ5wLz+pvN3t5ySClLOaVXJ+wekRQ==}
@@ -6333,17 +7114,17 @@ packages:
mz@2.7.0:
resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==}
- nan@2.29.0:
- resolution: {integrity: sha512-GlGk3HIvitbvs+LT3g6XUP1kpirKNvmDFwF/bmo6XNWSb/eYEs/O4bfgIEIXCZ+lIOTS5xNwDvSGMw6FJdAhtA==}
+ nan@2.28.0:
+ resolution: {integrity: sha512-fTsDz99OTq2sVePhGdp4qQhggZFtKr64ZNVyVajRKtMOkJxYekplBh577PiJB12v/D3s2E5cGtOI45LWp6rnLQ==}
nanoid@3.3.18:
resolution: {integrity: sha512-DTg4MJbGMWkfi6VZFdNt2/caMbQy4Ou+Op/hJQvGEWcnVfoA1QA+xzRKAzw9jD6+GVOOeYr/mIcuDSdug6F6+w==}
engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
hasBin: true
- nanoid@3.3.19:
- resolution: {integrity: sha512-Y2tUNy4ouw6tq5oDSKeQYGOyhkUBhNOcGV/02KC+6kd9eDGqdZd++mjMiIDilrBYvjEnCYvVtsuHCuP+okSfug==}
- engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
+ nanoid@6.0.1:
+ resolution: {integrity: sha512-3wVS3i51pE2pi1k5FFL/95BGfVS0kSsvDVuGXHOtxox/TywUmtgq+3qiTOTbs9J7KfHaXPiN171k/A6dBnaXFw==}
+ engines: {node: ^22 || ^24 || >=26}
hasBin: true
napi-postinstall@0.3.4:
@@ -6366,6 +7147,10 @@ packages:
resolution: {integrity: sha512-myRT3DiWPHqho5PrJaIRyaMv2kgYf0mUVgBNOYMuCH5Ki1yEiQaf/ZJuQ62nvpc44wL5WDbTX7yGJi1Neevw8w==}
engines: {node: '>= 0.6'}
+ negotiator@1.0.0:
+ resolution: {integrity: sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==}
+ engines: {node: '>= 0.6'}
+
negotiator@1.1.0:
resolution: {integrity: sha512-NMPBRMJgiQHjbd8phG3Vebdx4kZ1H121rbl5IkMqeOsahptB9BKo/d7oJ3zTXqTgagn2bWlNSXkh0QUGM31RYg==}
engines: {node: '>=18'}
@@ -6489,13 +7274,13 @@ packages:
resolution: {integrity: sha512-LA4ZjwlnUblHVgq0oBF3Jl/6h/Nvs5fzBLwdEF4nuxnFdsfajde4WfxtJr3CaiH+F6ewcIB/q4jQ4UzPyid+CQ==}
hasBin: true
- node-gyp@13.0.2:
- resolution: {integrity: sha512-SXTvw3PxznpowYhJSOD9mVQBgDaCTWXffX+wQZsQ7PbcTV86TsXCUcSZhHnskFQvrvn/OdSzJPMsptT2pIj9ww==}
+ node-gyp@13.0.1:
+ resolution: {integrity: sha512-piOr0S10qy5THB+q5BdqkoOx65XL/tjTMUAit3vciPNp+snTOBnGunWH1Rz7XZUxf2T9uFrfT/Ty4+aC3yPeyg==}
engines: {node: ^22.22.2 || ^24.15.0 || >=26.0.0}
hasBin: true
- node-releases@2.0.54:
- resolution: {integrity: sha512-YHs7BmmcsdAI5Ozuf8JZo6PT0mv2GIWC9vMfvUC3dp65M8hn7Ux8CPL+2oBI7juNuj9d0ndhTcznq2ODBps9cQ==}
+ node-releases@2.0.57:
+ resolution: {integrity: sha512-kQK9LGGFiHtrWiNhZtA7Qbw17AQz+dmsEKODRIVTXA9+e5MS/2gZEBhYJt13GrAz5/IOZKddH/0Z3TP/Zgo+yw==}
engines: {node: '>=18'}
nopt@10.0.1:
@@ -6520,8 +7305,8 @@ packages:
resolution: {integrity: sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==}
engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
- npm-to-yarn@3.2.0:
- resolution: {integrity: sha512-K1HmQeZT2HrjpsR6KgqbN2FAXL2NrJJmNUSD9ck7HGTVu1JKXox8n9SB+tjbU8m8JGLF4OscrroPepew/L7/Xw==}
+ npm-to-yarn@3.0.1:
+ resolution: {integrity: sha512-tt6PvKu4WyzPwWUzy/hvPFqn+uwXO0K1ZHka8az3NnrhWJDmSqI8ncWq0fkL0k/lmmi5tAC11FXwXuh0rFbt1A==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
object-assign@4.1.1:
@@ -6560,8 +7345,8 @@ packages:
resolution: {integrity: sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA==}
engines: {node: '>= 0.4'}
- obug@2.2.1:
- resolution: {integrity: sha512-XrsrhT5sybtKI6wakr2SPOlGZWWYbUXZ7a0jT8/QOeAPau+1X/bSegNe5YR75oJmEZQbKningirmGOEJCIk61Q==}
+ obug@2.1.4:
+ resolution: {integrity: sha512-4a+OsYv9UktOJKE+l1A4OufDgdRF9PifWj+tJnHURo/P+WOxpG4GzUFL9qCalmWauao6ogiG+QvnCovwPoyAWA==}
engines: {node: '>=12.20.0'}
on-finished@2.3.0:
@@ -6654,8 +7439,8 @@ packages:
resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==}
engines: {node: '>=10'}
- p-throttle@8.1.1:
- resolution: {integrity: sha512-xxWFBUyvbrQ10XC3VAr0SoXoOCKXqCX/yvbFIkBE98upphHFwjIKR6AId13ZH3jngFfF6yK43QTOtrngYAmFMA==}
+ p-throttle@8.1.0:
+ resolution: {integrity: sha512-c1wmXavsHZIC4g1OLhOsafK6jZSAeMo0Ap3yivj59PUcCkpacy5YgWdgIp/dB4vp1JZrfBSsPCR0YuADB+ENLQ==}
engines: {node: '>=20'}
pac-proxy-agent@7.2.0:
@@ -6669,8 +7454,8 @@ packages:
package-json-from-dist@1.0.1:
resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==}
- package-manager-detector@1.8.0:
- resolution: {integrity: sha512-yQA4H19AmPEoMUeavPMDIe1higySl/gH/yaQrkT/s07Qp+7pp2hYz30N3z2l5BkjVkF9Ow6o0wjJamm2y7Sn0A==}
+ package-manager-detector@1.6.0:
+ resolution: {integrity: sha512-61A5ThoTiDG/C8s8UMZwSorAGwMJ0ERVGj2OjoW5pAalsNOg15+iQiPzrLJ4jhZ1HJzmC2PIHT2oEiH3R5fzNA==}
parent-module@1.0.1:
resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==}
@@ -6796,6 +7581,10 @@ packages:
resolution: {integrity: sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==}
engines: {node: '>=8.6'}
+ picomatch@4.0.5:
+ resolution: {integrity: sha512-RvwwcruNjI1ncT5xRakeyS9Lf8lcItv34KD+aif+VH9kduAyfYBipGh12274xtenIPZ119/R9BdTBa8gAwSh0A==}
+ engines: {node: '>=12'}
+
picomatch@4.0.7:
resolution: {integrity: sha512-qcJu88Q2IWqJsDD529JKMdwGm/dvInW4HvQnRwiH9JtihJvzGOscDtHE3x1pBKeUOTysQ8kVmLnJ2kJu7yhcGA==}
engines: {node: '>=12'}
@@ -6878,6 +7667,10 @@ packages:
resolution: {integrity: sha512-973driJZvxiGOQ5ONsFhOF/DtzPMOMtgC11kCpUrPGMTgqp2q/1gwzCquocrN33is0VZ5GFHXZYMM9l6h67v2Q==}
engines: {node: '>=10'}
+ prismjs@1.30.0:
+ resolution: {integrity: sha512-DEvV2ZF2r2/63V+tK8hQvrR2ZGn10srHbXviTlcv7Kpzw8jWiNTqbVgjO3IY8RxrrOUF8VPMQQFysYYYv0YZxw==}
+ engines: {node: '>=6'}
+
proc-log@7.0.0:
resolution: {integrity: sha512-FYgfaA69XZ93zaXLoMNQ+ViDXGGBgR8aLh03txzcFhV+9xOXx7+8DLCULrKKpR9+GsH9ZfHm82aSUPpozX0Ztg==}
engines: {node: ^22.22.2 || ^24.15.0 || >=26.0.0}
@@ -6912,12 +7705,12 @@ packages:
resolution: {integrity: sha512-E1sbAYg3aEbXrq0n1ojJkRHQJGE1kaE/O6GLA94y8rnJBfgvOPTOd1b9hOceQK1FFZI9qMh1vBERCyO2ifubcw==}
engines: {node: '>=18'}
- protobufjs@7.6.6:
- resolution: {integrity: sha512-dYDWdjSl5RNb7SgPxGQcRU+GtvP7s2fpkrY0r432PcOIaZ0/rBcxEZnQN67iJhFuQiVw754JDoPruPCNdGsbjg==}
+ protobufjs@7.6.5:
+ resolution: {integrity: sha512-/FPD0nUc9jH6rfFjji9IBqOz4pcSE3CsT1m7Ep6Mdb0LxSUMj8hgl6GomOvZzpNpAqqGaXA0P3VSrZLFzIhQrw==}
engines: {node: '>=12.0.0'}
- proxy-addr@2.0.8:
- resolution: {integrity: sha512-5nnx0yGyVUcY6t9RnWcARWtwT9F1D8O9rt08htPvnd49W1IgZtmLkhu9WfMzQj1cFxjHIO6connUNVW5k7AVyQ==}
+ proxy-addr@2.0.7:
+ resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==}
engines: {node: '>= 0.10'}
proxy-agent@6.5.0:
@@ -6949,6 +7742,19 @@ packages:
queue-microtask@1.2.3:
resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==}
+ radix-ui@1.6.7:
+ resolution: {integrity: sha512-QBdhh1arIEUvPC0dQ5+nwWAxt7+N+oP/9jPwjJkGFoSk/sqxg32gJtSXGtFh8frAIcS6oC9cx2Q+7KYCQLOAeA==}
+ peerDependencies:
+ '@types/react': '*'
+ '@types/react-dom': '*'
+ react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ '@types/react-dom':
+ optional: true
+
railroad-diagrams@1.0.0:
resolution: {integrity: sha512-cz93DjNeLY0idrCNOH6PviZGRN9GJhsdm9hpn1YCS879fj4W+x5IFJhhkRZcwVgMmFF7R82UA/7Oh+R8lLZg6A==}
@@ -6990,6 +7796,12 @@ packages:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
+ react-aria-components@1.20.0:
+ resolution: {integrity: sha512-BMbpIgoV9aELeBrB0Y120NgoigHb5OdcJwc+4e7uSnbTbamea6lo+gqcc4LAxzMaK3Jf+7LI1oCDE6yANsmxIQ==}
+ peerDependencies:
+ react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
+ react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
+
react-aria-components@1.21.1:
resolution: {integrity: sha512-J88WflYY0z+EhLX0ce+GjFlQ3ag3ubIgfUTjpKSrBQBu92Xtl4Ub9o118HItUddtbk1Ido0jzyPy94/klZy1hg==}
peerDependencies:
@@ -7002,8 +7814,14 @@ packages:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
- react-aria@3.52.0:
- resolution: {integrity: sha512-eGU8GOqT6Stn4Se/X3esz0Wum6TqSwQJBbK3jSLJIbFAS7XkvpICCVwmqZQG1/siXuCgB9DBRq9CttI+K9HPTA==}
+ react-aria@3.50.0:
+ resolution: {integrity: sha512-S0Os6QZk33fzUAKu1QLT9afoUaCBt1ZNdoiq0n2YMVgKIdNIQS8zxiZ8O9hYE6QyDkHKjD6q39LQZ+qaSAIgjw==}
+ peerDependencies:
+ react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
+ react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
+
+ react-aria@3.51.0:
+ resolution: {integrity: sha512-AyWLw0XR38cFPwBu/ErgGaVrc5dupLEKmRlMXTGvFKOtbaGRQ2+yQJkjVhpdHhoRhU4+G+tJDFeHDTS8tK3bfQ==}
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
@@ -7035,8 +7853,14 @@ packages:
react-is@17.0.2:
resolution: {integrity: sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==}
- react-medium-image-zoom@5.4.9:
- resolution: {integrity: sha512-czBdTbJI6JEbqeRIT5M8D3j7TrffBfo00U0P0lzzd19usj8PiR1yPH7PK/vQlwBE/Sv9YFdJGN6XauJPi4jRyg==}
+ react-markdown@10.1.0:
+ resolution: {integrity: sha512-qKxVopLT/TyA6BX3Ue5NwabOsAzm0Q7kAPwq6L+wWDwisYs7R8vZ0nRXqq6rkueboxpkjvLGU9fWifiX/ZZFxQ==}
+ peerDependencies:
+ '@types/react': '>=18'
+ react: '>=18'
+
+ react-medium-image-zoom@5.4.8:
+ resolution: {integrity: sha512-72CIldEUaPejjcaDOYIeDsGlWzNKpmxyKgiPi1LBCkWCIGHDLlA2KTeo2uNtmN/m72Y3k/2uWDfon9SDiPbHaA==}
peerDependencies:
react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0
react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0
@@ -7066,6 +7890,16 @@ packages:
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
+ react-stately@3.48.0:
+ resolution: {integrity: sha512-ImicSAG+lTotAe5izcs1fz49Zk48w7pDusqYg04WaPhCoej8BJ24soMu3iLXIrsi273s4P1gZrYGrqReMfgEEA==}
+ peerDependencies:
+ react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
+
+ react-stately@3.49.0:
+ resolution: {integrity: sha512-13iNq2KzBrRAzxRc+n53hgROfIistiYY/sPtIhCw1qUB7/kmo+X1xEU2uiS5zcCIrc55AUPwoHqOIIpKWSwB9A==}
+ peerDependencies:
+ react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
+
react-stately@3.50.0:
resolution: {integrity: sha512-TnckvpDQGU0672wEaLZqdzvhuSeXWjgW6vijMWxiKOxc8CosQUfPGISdcZyfHqjX3XMjEtRxj4w9HumvX4h4mw==}
peerDependencies:
@@ -7081,6 +7915,18 @@ packages:
'@types/react':
optional: true
+ react-syntax-highlighter@16.1.1:
+ resolution: {integrity: sha512-PjVawBGy80C6YbC5DDZJeUjBmC7skaoEUdvfFQediQHgCL7aKyVHe57SaJGfQsloGDac+gCpTfRdtxzWWKmCXA==}
+ engines: {node: '>= 16.20.2'}
+ peerDependencies:
+ react: '>= 0.14.0'
+
+ react-textarea-autosize@8.5.9:
+ resolution: {integrity: sha512-U1DGlIQN5AwgjTyOEnI1oCcMuEr1pv1qOtklB2l4nyMGbHzWrI0eFsYK0zos2YWqAolJyG0IWJaqWmWj5ETh0A==}
+ engines: {node: '>=10'}
+ peerDependencies:
+ react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0
+
react-transition-group@4.4.5:
resolution: {integrity: sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g==}
peerDependencies:
@@ -7142,6 +7988,9 @@ packages:
resolution: {integrity: sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==}
engines: {node: '>= 0.4'}
+ refractor@5.0.0:
+ resolution: {integrity: sha512-QXOrHQF5jOpjjLfiNk5GFnWhRXvxjUVnlFxkeDmewR5sXkr3iM46Zo+CnRR8B+MDVqkULW4EcLVcRBNOPXHosw==}
+
regex-recursion@6.0.2:
resolution: {integrity: sha512-0YCaSCq2VRIebiaUviZNs0cBz1kg5kVS2UKUfNIx8YVs1cN3AV7NTctO5FOKBA+UT2BPJIWZauYHPqJODG50cg==}
@@ -7202,8 +8051,8 @@ packages:
remark-rehype@11.1.2:
resolution: {integrity: sha512-Dh7l57ianaEoIpzbp0PC9UKAdCSVklD8E5Rpw7ETfbTl3FqcOOgq5q2LVDhgGCkaBv7p24JXikPdvhhmHvKMsw==}
- remark-smartypants@3.0.3:
- resolution: {integrity: sha512-gCaK+ndZ0hYezlqFegHFCVh2CQemsi0Npdh1qVM9bxlUFknjkbP6VmojWhddOCrbK0PbbacmYLWfTULRiT1eWA==}
+ remark-smartypants@3.0.2:
+ resolution: {integrity: sha512-ILTWeOriIluwEvPjv67v7Blgrcx+LZOkAUVtKI3putuhlZm84FnqDORNXPPm+HY3NdZOMhyDwZ1E+eZB/Df5dA==}
engines: {node: '>=16.0.0'}
remark-stringify@11.0.0:
@@ -7281,8 +8130,8 @@ packages:
engines: {node: ^20.19.0 || >=22.12.0}
hasBin: true
- rolldown@1.2.10:
- resolution: {integrity: sha512-OxkA08pSryMK7B3XiFA09B4OJ1xJMPgIYCBMY2xchzpqgBGsV1o0DetPAE+Sl3N3L4oCPiEzmHVSOj7iR04Zog==}
+ rolldown@1.2.11:
+ resolution: {integrity: sha512-qpSwIyz0jHQq5qXBTNxFmE6664rJ7O+4TvPFOiOaBSrz8IOHc1koKKSqTM2H6u1UG1+TveuC6vaDHKXFOvb1Kw==}
engines: {node: ^20.19.0 || >=22.12.0}
hasBin: true
@@ -7314,6 +8163,9 @@ packages:
safe-buffer@5.2.1:
resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==}
+ safe-content-frame@0.0.27:
+ resolution: {integrity: sha512-IFUSMjElIp8q46wUU5HViHNEqoDWRlCzqqThQmhOLimuXPe/QC6Jr/AQ+BKxSYziQdNXUpapBq4Ir/t6dS0Ldg==}
+
safe-push-apply@1.0.0:
resolution: {integrity: sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==}
engines: {node: '>= 0.4'}
@@ -7346,6 +8198,9 @@ packages:
scroll-into-view-if-needed@3.1.0:
resolution: {integrity: sha512-49oNpRjWRvnU8NyGVmUaYG4jtTkNonFZI86MmGRDqBphEK2EXT9gdEUoQPZhuBM8yWHxCWbobltqYO5M4XrUvQ==}
+ secure-json-parse@4.1.0:
+ resolution: {integrity: sha512-l4KnYfEyqYJxDwlNVyRfO2E4NTHfMKAWdUuA8J0yve2Dz/E/PdBepY03RvyJpssIpRFwJoCD55wA+mEDs6ByWA==}
+
semver-diff@3.1.1:
resolution: {integrity: sha512-GX0Ix/CJcHyB8c4ykpHGIAvLyOwOobtM/8d+TQkAd81/bEjgPHrfba41Vpesr7jX/t8Uh+R3EX9eAS5be+jQYg==}
engines: {node: '>=8'}
@@ -7467,16 +8322,16 @@ packages:
resolution: {integrity: sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==}
engines: {node: '>= 6.0.0', npm: '>= 3.0.0'}
- smol-toml@1.9.0:
- resolution: {integrity: sha512-hpd+HLON7HdZXqYchMM/+LaTTbdK0AU3NngIJ4KVyWbY9bfQqdL9cD+4yf6dUoU2Ap4VsU0JkQi6FxAI1B2mXQ==}
+ smol-toml@1.8.0:
+ resolution: {integrity: sha512-kCZr2V3ch9i00x8zXRhjUNVcjG9ijES5dDudkXvUVCT5QlJNQWElSJdZqyPemffHoLNUYwOcou0Fy+ojN0uHSQ==}
engines: {node: '>= 18'}
socks-proxy-agent@8.0.5:
resolution: {integrity: sha512-HehCEsotFqbPW9sJ8WVYB6UbmIMv7kUUORIF2Nncq4VQvBfNBLibW9YZR5dlYCSUhwcD628pRllm7n+E+YTzJw==}
engines: {node: '>= 14'}
- socks@2.8.10:
- resolution: {integrity: sha512-e0VyvkVTwVYViNovRkZ9aodhxVlyoMn7eJhVUPxZ+eK9P/7CBkxvvsBOHqFPEH416726W8tLXXXjKwqgTErrCQ==}
+ socks@2.8.9:
+ resolution: {integrity: sha512-LJhUYUvItdQ0LkJTmPeaEObWXAqFyfmP85x0tch/ez9cahmhlBBLbIqDFnvBnUJGagb0JbIQrkBs1wJ+yRYpEw==}
engines: {node: '>= 10.0.0', npm: '>= 3.0.0'}
source-map-js@1.2.1:
@@ -7502,8 +8357,8 @@ packages:
resolution: {integrity: sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==}
engines: {node: '>= 10.x'}
- sql-formatter@15.9.0:
- resolution: {integrity: sha512-3A/N+v+mA5/PDU+FlO4uTFE0L/Mmg63c/Ny161Qv2b1Mxp9IX8War+LLmq17LA/Kgu4KXAR7iutK2JaHWJMMtw==}
+ sql-formatter@15.8.2:
+ resolution: {integrity: sha512-kTYRg5FIcvsDtYUG2Qn9pYT6xKwiLJN5TTIvc5Mur6hIg4pSfdpHu8Yyu5bqESLHnVM3mXzD446cb2+uEaKZXg==}
hasBin: true
srvx@0.11.16:
@@ -7558,8 +8413,8 @@ packages:
resolution: {integrity: sha512-HAGUASw8NT0k8JvIVutB2Y/9iBk7gpgEyAudXwNJmZERdMITGdajOa4VJfD/kNiA3TppQpTP4J+CtcHwdzKBAw==}
deprecated: Deprecated. Use node:stream/promises and node:stream/consumers instead.
- streamx@2.28.1:
- resolution: {integrity: sha512-zEzXb0s5Cds7tqMH6rhZ05lcJydCWiQPEwiNngVqzsxCc962vLY4Uw+mW7od8kDH258k2Uz/JrOkdIAAhSh9VA==}
+ streamx@2.28.0:
+ resolution: {integrity: sha512-1Yowhzjf0ivGMrTIkY9hav5TxobO9qIVqUE41fiCGMGgc3CLlf4MY+9AHmZqBWgDTue0fY9zWjYFVyf6Diuobw==}
strictdom@1.0.1:
resolution: {integrity: sha512-cEmp9QeXXRmjj/rVp9oyiqcvyocWab/HaoN4+bwFeZ7QzykJD6L3yD4v12K1x0tHpqRqVpJevN3gW7kyM39Bqg==}
@@ -7576,8 +8431,8 @@ packages:
resolution: {integrity: sha512-o7+c9bW6zpAdJHTtujeePODAhkuicdAryFsfVKwA+wGw89wJ4GTY484WTucM9hLtDEOpOvI+aHnzqnC5lHp4Rg==}
engines: {node: '>= 0.4'}
- string.prototype.matchall@4.1.0:
- resolution: {integrity: sha512-tHNHTxInrYLCga9O9YGxWA3G9/nnzQw8UGAyqGx3Ar1pSTTzIuM4woFSq4SowkXCjJIwq5sIiQvEfRI9tCH1qQ==}
+ string.prototype.matchall@4.0.12:
+ resolution: {integrity: sha512-6CC9uyBL+/48dYizRf7H7VAYCMCNTBeM78x/VTUe9bFEaxBepPJDa1Ow99LqI/1yF7kuy7Q3cQsYMrcjGUcskA==}
engines: {node: '>= 0.4'}
string.prototype.repeat@1.0.0:
@@ -7678,6 +8533,11 @@ packages:
resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==}
engines: {node: '>= 0.4'}
+ swr@2.5.1:
+ resolution: {integrity: sha512-BRw55e8r0B7SpDN20CAzoQAHl7y1yP7/Zt7oqUjMv0vSt2u2Xnkm88Ws+VypbV9BXHQVuSuyVq7zMjO16wSExw==}
+ peerDependencies:
+ react: ^16.11.0 || ^17.0.0 || ^18.0.0 || ^19.0.0
+
system-architecture@0.1.0:
resolution: {integrity: sha512-ulAk51I9UVUyJgxlv9M6lFot2WP3e7t8Kz9+IS6D4rVba1tR9kON+Ey69f+1R4Q8cd45Lod6a4IcJIxnzGc/zA==}
engines: {node: '>=18'}
@@ -7710,8 +8570,8 @@ packages:
tar-stream@3.1.7:
resolution: {integrity: sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ==}
- tar-stream@3.2.1:
- resolution: {integrity: sha512-nqsEO8zLZJvrOMdEwkA0QdCLFbetHMn95Zqu4fKwX+hkaTWJPZZOrxx/PwtxoK0MMGQmBQNRW3CPs8IFYQz4cQ==}
+ tar-stream@3.2.0:
+ resolution: {integrity: sha512-ojzvCvVaNp6aOTFmG7jaRD0meowIAuPc3cMMhSgKiVWws1GyHbGd/xvnyuRKcKlMpt3qvxx6r0hreCNITP9hIg==}
tar@7.5.22:
resolution: {integrity: sha512-MFO/QzvtAOmJbkhOaCTvbGcFN9L9b+JunIsDwaKljSOdcLMea3NJ1k9Usz/rjdfSXTq4dfzfeS7W4p4YOAAHeA==}
@@ -7770,11 +8630,11 @@ packages:
resolution: {integrity: sha512-xRnPkJx9nvE5MF6LkB5e8QJjE2FW8269wTu/LQdf7zZqBgPly0QJPf/CWAo7srj5so4yXfoLEdCFgurlpi47zg==}
hasBin: true
- tldts-core@7.4.15:
- resolution: {integrity: sha512-ERuv0p98XgSzmlSLJr8vDNxX+uATGInlN97V3R+JpYWaSqn5IG3ewWgCwczk4bkOpgth/o8Nt5FOi4B4w0n/1A==}
+ tldts-core@7.4.10:
+ resolution: {integrity: sha512-KnQjp53ZekKgm/r3l+u8kJGGzYgrWdP8+Mql7a4vijh2WE0IrZWspQj/TpTxDho/YxO+AnOZnIjQcCD+q6iJsw==}
- tldts@7.4.15:
- resolution: {integrity: sha512-SJVBeHOxDbNoq14CvpAoA2mLEWdbldGK8nR+yumpjY5nrlZxOflcA7p1Qj1gbTGmbu9DY9qLj/bENSWhBzjxRQ==}
+ tldts@7.4.10:
+ resolution: {integrity: sha512-GgouD1B+sWwvkaEq8vXC15DjQitxbvs12oIXELpconwm+Tg3zfcEv4jgzq3vtKverDXsg3VI8aRgNL2Nra0Iog==}
hasBin: true
tmp@0.2.7:
@@ -7899,8 +8759,8 @@ packages:
resolution: {integrity: sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==}
engines: {node: '>= 0.4'}
- typed-array-byte-offset@1.0.5:
- resolution: {integrity: sha512-0FHJvLPqZ7KJzp17O13jfsAjsqazgrxBu2zEK95PmUz8lv2+GjRuxUInCr2Rk9Dms3ihN21zJ929ZO43yJ95QQ==}
+ typed-array-byte-offset@1.0.4:
+ resolution: {integrity: sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==}
engines: {node: '>= 0.4'}
typed-array-length@1.0.8:
@@ -7910,8 +8770,8 @@ packages:
typedarray-to-buffer@3.1.5:
resolution: {integrity: sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==}
- typescript-eslint@8.70.1:
- resolution: {integrity: sha512-AcWG7KDjZ2THNXsgwttMaGmzVi0VFRlFYfqFHYQRbDpF3owuYbuiL8c7UUrd2k8s3PoSfIQrWfrGXfcElrWLYA==}
+ typescript-eslint@8.67.0:
+ resolution: {integrity: sha512-S2udFs8tCKEKffuJ4TB1idGUZiXdCPGi3IPBGWXarbLQ5UPXORV8QEVzJ4gCRduURMb5EkpNCdjbk0eDIuI8Yg==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
eslint: ^8.57.0 || ^9.0.0 || ^10.0.0
@@ -7943,8 +8803,8 @@ packages:
undici-types@8.9.0:
resolution: {integrity: sha512-KTDyRTYX8sWmKXAikPHHSyc63CRPETMctyjKFupcC6OBLXT3xsN0e9aF7m+mIXutFWpUXuedtowG7iLOzp0kQg==}
- undici@6.28.1:
- resolution: {integrity: sha512-zWpdTVD54H48CIybL0rWQ3ukpb9d23wM7eH5RtfdmeP70cWHNjtfo7P4vZX+5CoDcO53J4Pu5uXp7lNfjc6DRA==}
+ undici@6.28.0:
+ resolution: {integrity: sha512-LIY910g9TI13YS95lrMFrs8Rm/u/irgHeTWoKCoteeJ04CUJ92eEfj0rVn+7VKMPBpUPiUoBKfhNyLI23EE/KA==}
engines: {node: '>=18.17'}
unicode-emoji-modifier-base@1.0.0:
@@ -8006,8 +8866,8 @@ packages:
unrs-resolver@1.12.2:
resolution: {integrity: sha512-dmlRxBJJayXjqTwC+JtF1HhJmgf3ftQ3YejFcZrf4+KKtJv0qDsK1pjqaaVjG7wJ5NJ6UVP1OqRMQ71Z4C3rxQ==}
- update-browserslist-db@1.3.2:
- resolution: {integrity: sha512-UQ+MSxlhRm1bzjhU+DcuXfjFO1FzNtqhK5+9Yvlp90ItDLk5vT932A0rFu619nf7RVS+Y/VeaUW1jaRDqZ8VJw==}
+ update-browserslist-db@1.3.3:
+ resolution: {integrity: sha512-pJ2sYawQS0R/WI928Gj5GlPhTGzbMelq0+4INtSYNDV9ErKJcX6xjGWkoG/VnB3dpUm00zALaqkrUD77pO5TDQ==}
hasBin: true
peerDependencies:
browserslist: ^4.28.8
@@ -8035,6 +8895,33 @@ packages:
'@types/react':
optional: true
+ use-composed-ref@1.4.0:
+ resolution: {integrity: sha512-djviaxuOOh7wkj0paeO1Q/4wMZ8Zrnag5H6yBvzN7AKKe8beOaED9SF5/ByLqsku8NP4zQqsvM2u3ew/tJK8/w==}
+ peerDependencies:
+ '@types/react': '*'
+ react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+
+ use-isomorphic-layout-effect@1.2.1:
+ resolution: {integrity: sha512-tpZZ+EX0gaghDAiFR37hj5MgY6ZN55kLiPkJsKxBMZ6GZdOSPJXiOzPM984oPYZ5AnehYx5WQp1+ME8I/P/pRA==}
+ peerDependencies:
+ '@types/react': '*'
+ react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+
+ use-latest@1.3.0:
+ resolution: {integrity: sha512-mhg3xdm9NaM8q+gLT8KryJPnRFOz1/5XPBhmDEVZK1webPzDjrPk7f/mbpeLqTgB9msytYWANxgALOCJKnLvcQ==}
+ peerDependencies:
+ '@types/react': '*'
+ react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+
use-sidecar@1.1.3:
resolution: {integrity: sha512-Fedw0aZvkhynoPYlA5WXrMCAMm+nSWdZt6lzJQ7Ok8S6Q+VsHmHpRWndVRJ8Be0ZbkfPc5LRYH+5XrzXcEeLRQ==}
engines: {node: '>=10'}
@@ -8050,11 +8937,6 @@ packages:
peerDependencies:
react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0
- use-sync-external-store@1.7.0:
- resolution: {integrity: sha512-6L+EeigHMQhdaIPNIFUKwfWJSwWFQ8gJbJ2DLOs5sDIegTwR9fRxvnM3uciHKjIZhFz+KAv2emhWMRvDmMcY8A==}
- peerDependencies:
- react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0
-
util-deprecate@1.0.2:
resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==}
@@ -8087,8 +8969,8 @@ packages:
vfile@6.0.3:
resolution: {integrity: sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==}
- vite@8.3.0:
- resolution: {integrity: sha512-lhZBVvEHefgE+HQZC9O7EBJgCU/nVzFNl7vkS4RE0APtWLP02/8QVIkQtzBxPquh7lq5/78NHipTj7ODQ6XuyQ==}
+ vite@8.3.1:
+ resolution: {integrity: sha512-/bvH9E9tmCXRGp2uXY3WbOldqpTwFkbha/8ANaEQ6VkxhH60KyqLwgZq6lG2y+4uT55x9+9eUHMpQ7uGnOCKjA==}
engines: {node: ^20.19.0 || >=22.12.0}
hasBin: true
peerDependencies:
@@ -8230,8 +9112,8 @@ packages:
resolution: {integrity: sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==}
engines: {node: '>= 0.4'}
- which-typed-array@1.1.24:
- resolution: {integrity: sha512-wk4Mf4pR5mRP7eYuuTBCIQ9d0ud2Fv2jRLQpfgnRjbOxAFHmjKFValgTpitVKzJJS8ajnYQV2Du1SZ8j6b/EUQ==}
+ which-typed-array@1.1.22:
+ resolution: {integrity: sha512-fvO4ExWMFsqyhG3AiPAObMuY1lxaqgYcxbc49CNdWDDECOJNgQyvsOWVwbZc+qf3rzRtxojBK+CMEv0Ld5CYpw==}
engines: {node: '>= 0.4'}
which@2.0.2:
@@ -8356,11 +9238,6 @@ packages:
engines: {node: '>= 14.6'}
hasBin: true
- yaml@2.9.1:
- resolution: {integrity: sha512-3NxN8+78OdzbT7C/WjGsyfPAtJaN3FNDsWxv7Y7mcDsT/oOmgW8BpyQQFFBnvZE3j9Y2Sdz1ULFLezL7Eb2yFw==}
- engines: {node: '>= 14.6'}
- hasBin: true
-
yargs-parser@20.2.9:
resolution: {integrity: sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==}
engines: {node: '>=10'}
@@ -8417,12 +9294,30 @@ packages:
zod@4.1.11:
resolution: {integrity: sha512-WPsqwxITS2tzx1bzhIKsEs19ABD5vmCVa4xBo2tq/SrV4RNZtfws1EnCWQXM6yh8bD08a1idvkB5MZSBiZsjwg==}
- zod@4.5.4:
- resolution: {integrity: sha512-sC95tT5iHHH9gtpj6A81kh+NEaRAUFN+qlUPDUbRfOMvNf5QCBqsb3WgvnpVtK5Y+4UfA6KqufotuTvMGiTlsA==}
+ zod@4.4.3:
+ resolution: {integrity: sha512-ytENFjIJFl2UwYglde2jchW2Hwm4GJFLDiSXWdTrJQBIN9Fcyp7n4DhxJEiWNAJMV1/BqWfW/kkg71UDcHJyTQ==}
zod@4.6.5:
resolution: {integrity: sha512-v5l/aFXZQeai4awLbOpSoHecE9UiMrnfx75tEXLjNonXVARxQ5mOeipTjROUchszUNCqnE+hqAMujRsRHsut2Q==}
+ zustand@5.0.14:
+ resolution: {integrity: sha512-/8tAspM5LMPr28b3fwLYrtdj77ECpfZviaP75CMTnwO8ISyaE4GDIG/9rDDYq/cH9D2Xw2A2RXglLInmVBQB/g==}
+ engines: {node: '>=12.20.0'}
+ peerDependencies:
+ '@types/react': '>=18.0.0'
+ immer: '>=9.0.6'
+ react: '>=18.0.0'
+ use-sync-external-store: '>=1.2.0'
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ immer:
+ optional: true
+ react:
+ optional: true
+ use-sync-external-store:
+ optional: true
+
zustand@5.0.15:
resolution: {integrity: sha512-MpSEjRiBkA9crSYeOUH32rJC7SVqAbm0Fqcqge/bUi2PPoLcBWKOsG+C8mevmpr8TwXHBVkChbbJiyvkE+i/3A==}
engines: {node: '>=12.20.0'}
@@ -8460,10 +9355,10 @@ snapshots:
'@adobe/react-spectrum@3.47.0(react-dom@19.3.0(react@19.3.0))(react@19.3.0)':
dependencies:
- '@internationalized/date': 3.12.4
+ '@internationalized/date': 3.12.3
'@react-types/shared': 3.36.1(react@19.3.0)
- '@spectrum-icons/ui': 3.7.2(@adobe/react-spectrum@3.47.0(react-dom@19.3.0(react@19.3.0))(react@19.3.0))(react-dom@19.3.0(react@19.3.0))(react@19.3.0)
- '@spectrum-icons/workflow': 4.3.2(@adobe/react-spectrum@3.47.0(react-dom@19.3.0(react@19.3.0))(react@19.3.0))(react-dom@19.3.0(react@19.3.0))(react@19.3.0)
+ '@spectrum-icons/ui': 3.7.1(@adobe/react-spectrum@3.47.0(react-dom@19.3.0(react@19.3.0))(react@19.3.0))(react-dom@19.3.0(react@19.3.0))(react@19.3.0)
+ '@spectrum-icons/workflow': 4.3.1(@adobe/react-spectrum@3.47.0(react-dom@19.3.0(react@19.3.0))(react@19.3.0))(react-dom@19.3.0(react@19.3.0))(react@19.3.0)
'@swc/helpers': 0.5.23
client-only: 0.0.1
clsx: 2.1.1
@@ -8473,30 +9368,88 @@ snapshots:
react-dom: 19.3.0(react@19.3.0)
react-stately: 3.46.0(react@19.3.0)
react-transition-group: 4.4.5(react-dom@19.3.0(react@19.3.0))(react@19.3.0)
- use-sync-external-store: 1.7.0(react@19.3.0)
+ use-sync-external-store: 1.6.0(react@19.3.0)
- '@adobe/react-spectrum@3.47.5(react-dom@19.3.0(react@19.3.0))(react@19.3.0)':
+ '@adobe/react-spectrum@3.47.3(react-dom@19.3.0(react@19.3.0))(react@19.3.0)':
dependencies:
- '@internationalized/date': 3.12.4
+ '@internationalized/date': 3.12.3
'@react-types/shared': 3.36.1(react@19.3.0)
- '@spectrum-icons/ui': 3.7.2(@adobe/react-spectrum@3.47.5(react-dom@19.3.0(react@19.3.0))(react@19.3.0))(react-dom@19.3.0(react@19.3.0))(react@19.3.0)
- '@spectrum-icons/workflow': 4.3.2(@adobe/react-spectrum@3.47.5(react-dom@19.3.0(react@19.3.0))(react@19.3.0))(react-dom@19.3.0(react@19.3.0))(react@19.3.0)
+ '@spectrum-icons/ui': 3.7.1(@adobe/react-spectrum@3.47.3(react-dom@19.3.0(react@19.3.0))(react@19.3.0))(react-dom@19.3.0(react@19.3.0))(react@19.3.0)
+ '@spectrum-icons/workflow': 4.3.1(@adobe/react-spectrum@3.47.3(react-dom@19.3.0(react@19.3.0))(react@19.3.0))(react-dom@19.3.0(react@19.3.0))(react@19.3.0)
'@swc/helpers': 0.5.23
client-only: 0.0.1
clsx: 2.1.1
react: 19.3.0
- react-aria: 3.52.1(react-dom@19.3.0(react@19.3.0))(react@19.3.0)
- react-aria-components: 1.21.1(react-dom@19.3.0(react@19.3.0))(react@19.3.0)
+ react-aria: 3.51.0(react-dom@19.3.0(react@19.3.0))(react@19.3.0)
+ react-aria-components: 1.20.0(react-dom@19.3.0(react@19.3.0))(react@19.3.0)
react-dom: 19.3.0(react@19.3.0)
- react-stately: 3.50.0(react@19.3.0)
+ react-stately: 3.49.0(react@19.3.0)
react-transition-group: 4.4.5(react-dom@19.3.0(react@19.3.0))(react@19.3.0)
- use-sync-external-store: 1.7.0(react@19.3.0)
+ use-sync-external-store: 1.6.0(react@19.3.0)
+
+ '@ai-sdk/anthropic@4.0.41(zod@4.6.5)':
+ dependencies:
+ '@ai-sdk/provider': 4.0.7
+ '@ai-sdk/provider-utils': 5.0.29(zod@4.6.5)
+ zod: 4.6.5
+
+ '@ai-sdk/gateway@4.0.62(zod@4.6.5)':
+ dependencies:
+ '@ai-sdk/provider': 4.0.7
+ '@ai-sdk/provider-utils': 5.0.29(zod@4.6.5)
+ '@vercel/oidc': 3.2.0
+ zod: 4.6.5
+
+ '@ai-sdk/google@4.0.50(zod@4.6.5)':
+ dependencies:
+ '@ai-sdk/provider': 4.0.7
+ '@ai-sdk/provider-utils': 5.0.29(zod@4.6.5)
+ zod: 4.6.5
- '@alloc/quick-lru@5.3.0': {}
+ '@ai-sdk/mcp@2.0.36(zod@4.6.5)':
+ dependencies:
+ '@ai-sdk/provider': 4.0.7
+ '@ai-sdk/provider-utils': 5.0.29(zod@4.6.5)
+ cross-spawn: 7.0.6
+ pkce-challenge: 5.0.1
+ zod: 4.6.5
+
+ '@ai-sdk/openai@4.0.46(zod@4.6.5)':
+ dependencies:
+ '@ai-sdk/provider': 4.0.7
+ '@ai-sdk/provider-utils': 5.0.29(zod@4.6.5)
+ zod: 4.6.5
+
+ '@ai-sdk/provider-utils@5.0.29(zod@4.6.5)':
+ dependencies:
+ '@ai-sdk/provider': 4.0.7
+ '@standard-schema/spec': 1.1.0
+ '@workflow/serde': 4.1.0
+ eventsource-parser: 3.1.1
+ undici: 6.28.0
+ zod: 4.6.5
+
+ '@ai-sdk/provider@4.0.7':
+ dependencies:
+ json-schema: 0.4.0
+
+ '@ai-sdk/react@4.0.80(react@19.3.0)(zod@4.6.5)':
+ dependencies:
+ '@ai-sdk/mcp': 2.0.36(zod@4.6.5)
+ '@ai-sdk/provider': 4.0.7
+ '@ai-sdk/provider-utils': 5.0.29(zod@4.6.5)
+ ai: 7.0.77(zod@4.6.5)
+ react: 19.3.0
+ swr: 2.5.1(react@19.3.0)
+ throttleit: 2.1.0
+ transitivePeerDependencies:
+ - zod
+
+ '@alloc/quick-lru@5.2.0': {}
'@antfu/install-pkg@1.1.0':
dependencies:
- package-manager-detector: 1.8.0
+ package-manager-detector: 1.6.0
tinyexec: 1.3.0
'@apidevtools/json-schema-ref-parser@9.1.2':
@@ -8504,7 +9457,7 @@ snapshots:
'@jsdevtools/ono': 7.1.3
'@types/json-schema': 7.0.15
call-me-maybe: 1.0.2
- js-yaml: 4.3.2
+ js-yaml: 4.3.1
'@apphosting/common@0.0.8': {}
@@ -8523,6 +9476,119 @@ snapshots:
is-potential-custom-element-name: 1.0.1
lru-cache: 11.5.3
+ '@assistant-ui/ai-sdk@0.0.2(@types/react@19.3.0)(react@19.3.0)(zod@4.6.5)(zustand@5.0.15(@types/react@19.3.0)(react@19.3.0)(use-sync-external-store@1.6.0(react@19.3.0)))':
+ dependencies:
+ '@ai-sdk/mcp': 2.0.36(zod@4.6.5)
+ '@ai-sdk/react': 4.0.80(react@19.3.0)(zod@4.6.5)
+ '@assistant-ui/core': 0.3.15(@assistant-ui/store@0.3.10(@assistant-ui/tap@0.9.14(@types/react@19.3.0)(react@19.3.0))(@types/react@19.3.0)(react@19.3.0))(@assistant-ui/tap@0.9.14(@types/react@19.3.0)(react@19.3.0))(@types/react@19.3.0)(assistant-cloud@0.1.41)(react@19.3.0)(zustand@5.0.15(@types/react@19.3.0)(react@19.3.0)(use-sync-external-store@1.6.0(react@19.3.0)))
+ '@assistant-ui/store': 0.3.10(@assistant-ui/tap@0.9.14(@types/react@19.3.0)(react@19.3.0))(@types/react@19.3.0)(react@19.3.0)
+ '@assistant-ui/tap': 0.9.14(@types/react@19.3.0)(react@19.3.0)
+ ai: 7.0.77(zod@4.6.5)
+ assistant-cloud: 0.1.41
+ assistant-stream: 0.3.39
+ optionalDependencies:
+ '@types/react': 19.3.0
+ react: 19.3.0
+ transitivePeerDependencies:
+ - ioredis
+ - redis
+ - zod
+ - zustand
+
+ '@assistant-ui/core@0.3.15(@assistant-ui/store@0.3.10(@assistant-ui/tap@0.9.14(@types/react@19.3.0)(react@19.3.0))(@types/react@19.3.0)(react@19.3.0))(@assistant-ui/tap@0.9.14(@types/react@19.3.0)(react@19.3.0))(@types/react@19.3.0)(assistant-cloud@0.1.41)(react@19.3.0)(zustand@5.0.15(@types/react@19.3.0)(react@19.3.0)(use-sync-external-store@1.6.0(react@19.3.0)))':
+ dependencies:
+ '@assistant-ui/store': 0.3.10(@assistant-ui/tap@0.9.14(@types/react@19.3.0)(react@19.3.0))(@types/react@19.3.0)(react@19.3.0)
+ '@assistant-ui/tap': 0.9.14(@types/react@19.3.0)(react@19.3.0)
+ assistant-stream: 0.3.39
+ nanoid: 6.0.1
+ optionalDependencies:
+ '@types/react': 19.3.0
+ assistant-cloud: 0.1.41
+ react: 19.3.0
+ zustand: 5.0.15(@types/react@19.3.0)(react@19.3.0)(use-sync-external-store@1.6.0(react@19.3.0))
+ transitivePeerDependencies:
+ - ioredis
+ - redis
+
+ '@assistant-ui/react-ai-sdk@1.4.7(@types/react@19.3.0)(react@19.3.0)(zod@4.6.5)(zustand@5.0.15(@types/react@19.3.0)(react@19.3.0)(use-sync-external-store@1.6.0(react@19.3.0)))':
+ dependencies:
+ '@assistant-ui/ai-sdk': 0.0.2(@types/react@19.3.0)(react@19.3.0)(zod@4.6.5)(zustand@5.0.15(@types/react@19.3.0)(react@19.3.0)(use-sync-external-store@1.6.0(react@19.3.0)))
+ react: 19.3.0
+ optionalDependencies:
+ '@types/react': 19.3.0
+ transitivePeerDependencies:
+ - ioredis
+ - redis
+ - zod
+ - zustand
+
+ '@assistant-ui/react-markdown@0.14.12(@assistant-ui/react@0.15.16(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)(use-sync-external-store@1.6.0(react@19.3.0)))(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)(supports-color@7.2.0)':
+ dependencies:
+ '@assistant-ui/react': 0.15.16(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)(use-sync-external-store@1.6.0(react@19.3.0))
+ '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)
+ '@radix-ui/react-use-callback-ref': 1.1.4(@types/react@19.3.0)(react@19.3.0)
+ classnames: 2.5.1
+ react: 19.3.0
+ react-markdown: 10.1.0(@types/react@19.3.0)(react@19.3.0)(supports-color@7.2.0)
+ optionalDependencies:
+ '@types/react': 19.3.0
+ transitivePeerDependencies:
+ - '@types/react-dom'
+ - react-dom
+ - supports-color
+
+ '@assistant-ui/react-syntax-highlighter@0.14.5(@assistant-ui/react-markdown@0.14.12(@assistant-ui/react@0.15.16(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)(use-sync-external-store@1.6.0(react@19.3.0)))(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)(supports-color@7.2.0))(@assistant-ui/react@0.15.16(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)(use-sync-external-store@1.6.0(react@19.3.0)))(@types/react@19.3.0)(react-syntax-highlighter@16.1.1(react@19.3.0))(react@19.3.0)':
+ dependencies:
+ '@assistant-ui/react': 0.15.16(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)(use-sync-external-store@1.6.0(react@19.3.0))
+ '@assistant-ui/react-markdown': 0.14.12(@assistant-ui/react@0.15.16(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)(use-sync-external-store@1.6.0(react@19.3.0)))(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)(supports-color@7.2.0)
+ react: 19.3.0
+ react-syntax-highlighter: 16.1.1(react@19.3.0)
+ optionalDependencies:
+ '@types/react': 19.3.0
+
+ '@assistant-ui/react@0.15.16(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)(use-sync-external-store@1.6.0(react@19.3.0))':
+ dependencies:
+ '@assistant-ui/core': 0.3.15(@assistant-ui/store@0.3.10(@assistant-ui/tap@0.9.14(@types/react@19.3.0)(react@19.3.0))(@types/react@19.3.0)(react@19.3.0))(@assistant-ui/tap@0.9.14(@types/react@19.3.0)(react@19.3.0))(@types/react@19.3.0)(assistant-cloud@0.1.41)(react@19.3.0)(zustand@5.0.15(@types/react@19.3.0)(react@19.3.0)(use-sync-external-store@1.6.0(react@19.3.0)))
+ '@assistant-ui/store': 0.3.10(@assistant-ui/tap@0.9.14(@types/react@19.3.0)(react@19.3.0))(@types/react@19.3.0)(react@19.3.0)
+ '@assistant-ui/tap': 0.9.14(@types/react@19.3.0)(react@19.3.0)
+ '@radix-ui/primitive': 1.1.7
+ '@radix-ui/react-collection': 1.1.15(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)
+ '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.3.0)(react@19.3.0)
+ '@radix-ui/react-context': 1.2.2(@types/react@19.3.0)(react@19.3.0)
+ '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)
+ '@radix-ui/react-use-callback-ref': 1.1.4(@types/react@19.3.0)(react@19.3.0)
+ '@radix-ui/react-use-controllable-state': 1.2.6(@types/react@19.3.0)(react@19.3.0)
+ '@radix-ui/react-use-escape-keydown': 1.1.5(@types/react@19.3.0)(react@19.3.0)
+ assistant-cloud: 0.1.41
+ assistant-stream: 0.3.39
+ radix-ui: 1.6.7(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)
+ react: 19.3.0
+ react-dom: 19.3.0(react@19.3.0)
+ react-textarea-autosize: 8.5.9(@types/react@19.3.0)(react@19.3.0)
+ safe-content-frame: 0.0.27
+ zod: 4.6.5
+ zustand: 5.0.15(@types/react@19.3.0)(react@19.3.0)(use-sync-external-store@1.6.0(react@19.3.0))
+ optionalDependencies:
+ '@types/react': 19.3.0
+ '@types/react-dom': 19.3.0(@types/react@19.3.0)
+ transitivePeerDependencies:
+ - immer
+ - ioredis
+ - redis
+ - use-sync-external-store
+
+ '@assistant-ui/store@0.3.10(@assistant-ui/tap@0.9.14(@types/react@19.3.0)(react@19.3.0))(@types/react@19.3.0)(react@19.3.0)':
+ dependencies:
+ '@assistant-ui/tap': 0.9.14(@types/react@19.3.0)(react@19.3.0)
+ optionalDependencies:
+ '@types/react': 19.3.0
+ react: 19.3.0
+
+ '@assistant-ui/tap@0.9.14(@types/react@19.3.0)(react@19.3.0)':
+ optionalDependencies:
+ '@types/react': 19.3.0
+ react: 19.3.0
+
'@axe-core/playwright@4.13.0(playwright-core@1.63.0)':
dependencies:
axe-core: 4.13.0
@@ -8543,7 +9609,7 @@ snapshots:
'@babel/helper-compilation-targets': 7.29.7
'@babel/helper-module-transforms': 7.29.7(@babel/core@7.29.7(supports-color@7.2.0))(supports-color@7.2.0)
'@babel/helpers': 7.29.7
- '@babel/parser': 7.29.9
+ '@babel/parser': 7.29.8
'@babel/template': 7.29.7
'@babel/traverse': 7.29.7(supports-color@7.2.0)
'@babel/types': 7.29.8
@@ -8558,7 +9624,7 @@ snapshots:
'@babel/generator@7.29.7':
dependencies:
- '@babel/parser': 7.29.9
+ '@babel/parser': 7.29.8
'@babel/types': 7.29.8
'@jridgewell/gen-mapping': 0.3.13
'@jridgewell/trace-mapping': 0.3.31
@@ -8568,7 +9634,7 @@ snapshots:
dependencies:
'@babel/compat-data': 7.29.7
'@babel/helper-validator-option': 7.29.7
- browserslist: 4.28.8
+ browserslist: 4.29.1
lru-cache: 5.1.1
semver: 6.3.1
@@ -8601,7 +9667,7 @@ snapshots:
'@babel/template': 7.29.7
'@babel/types': 7.29.8
- '@babel/parser@7.29.9':
+ '@babel/parser@7.29.8':
dependencies:
'@babel/types': 7.29.8
@@ -8610,7 +9676,7 @@ snapshots:
'@babel/template@7.29.7':
dependencies:
'@babel/code-frame': 7.29.7
- '@babel/parser': 7.29.9
+ '@babel/parser': 7.29.8
'@babel/types': 7.29.8
'@babel/traverse@7.29.7(supports-color@7.2.0)':
@@ -8618,7 +9684,7 @@ snapshots:
'@babel/code-frame': 7.29.7
'@babel/generator': 7.29.7
'@babel/helper-globals': 7.29.7
- '@babel/parser': 7.29.9
+ '@babel/parser': 7.29.8
'@babel/template': 7.29.7
'@babel/types': 7.29.8
debug: 4.4.3(supports-color@7.2.0)
@@ -8659,8 +9725,6 @@ snapshots:
'@colors/colors@1.6.0': {}
- '@colors/colors@1.6.1': {}
-
'@csstools/color-helpers@6.1.1': {}
'@csstools/css-calc@3.4.0(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.1))(@csstools/css-tokenizer@4.0.1)':
@@ -8685,7 +9749,7 @@ snapshots:
'@csstools/css-tokenizer@4.0.1': {}
- '@dabh/diagnostics@2.0.9':
+ '@dabh/diagnostics@2.0.8':
dependencies:
'@so-ric/colorspace': 1.1.6
enabled: 2.0.0
@@ -8859,7 +9923,7 @@ snapshots:
globals: 14.0.0
ignore: 5.3.2
import-fresh: 3.3.1
- js-yaml: 4.3.2
+ js-yaml: 4.3.1
minimatch: 10.2.6
strip-json-comments: 3.1.1
transitivePeerDependencies:
@@ -8876,45 +9940,49 @@ snapshots:
'@eslint/core': 1.2.1
levn: 0.4.1
- '@exodus/bytes@1.16.0': {}
+ '@exodus/bytes@1.15.1': {}
- '@floating-ui/core@1.8.0':
+ '@floating-ui/core@1.7.5':
dependencies:
- '@floating-ui/utils': 0.2.12
+ '@floating-ui/utils': 0.2.11
- '@floating-ui/dom@1.8.0':
+ '@floating-ui/dom@1.7.6':
dependencies:
- '@floating-ui/core': 1.8.0
- '@floating-ui/utils': 0.2.12
+ '@floating-ui/core': 1.7.5
+ '@floating-ui/utils': 0.2.11
- '@floating-ui/react-dom@2.1.9(react-dom@19.2.8(react@19.2.8))(react@19.2.8)':
+ '@floating-ui/react-dom@2.1.8(react-dom@19.2.8(react@19.2.8))(react@19.2.8)':
dependencies:
- '@floating-ui/dom': 1.8.0
+ '@floating-ui/dom': 1.7.6
react: 19.2.8
react-dom: 19.2.8(react@19.2.8)
+ '@floating-ui/react-dom@2.1.8(react-dom@19.3.0(react@19.3.0))(react@19.3.0)':
+ dependencies:
+ '@floating-ui/dom': 1.7.6
+ react: 19.3.0
+ react-dom: 19.3.0(react@19.3.0)
+
'@floating-ui/react@0.26.28(react-dom@19.2.8(react@19.2.8))(react@19.2.8)':
dependencies:
- '@floating-ui/react-dom': 2.1.9(react-dom@19.2.8(react@19.2.8))(react@19.2.8)
- '@floating-ui/utils': 0.2.12
+ '@floating-ui/react-dom': 2.1.8(react-dom@19.2.8(react@19.2.8))(react@19.2.8)
+ '@floating-ui/utils': 0.2.11
react: 19.2.8
react-dom: 19.2.8(react@19.2.8)
tabbable: 6.5.0
- '@floating-ui/utils@0.2.12': {}
+ '@floating-ui/utils@0.2.11': {}
'@formatjs/intl-localematcher@0.6.2':
dependencies:
tslib: 2.8.1
- '@google-cloud/cloud-sql-connector@1.12.0(supports-color@7.2.0)':
+ '@google-cloud/cloud-sql-connector@1.11.3(supports-color@7.2.0)':
dependencies:
- '@google-cloud/sql': 0.25.0(supports-color@7.2.0)
- '@googleapis/sqladmin': 38.1.1(supports-color@7.2.0)
- '@grpc/grpc-js': 1.14.5
- gaxios: 8.1.0(supports-color@7.2.0)
- google-auth-library: 11.1.0(supports-color@7.2.0)
- p-throttle: 8.1.1
+ '@googleapis/sqladmin': 37.0.0(supports-color@7.2.0)
+ gaxios: 7.3.1(supports-color@7.2.0)
+ google-auth-library: 10.9.1(supports-color@7.2.0)
+ p-throttle: 8.1.0
transitivePeerDependencies:
- supports-color
@@ -8935,7 +10003,7 @@ snapshots:
'@google-cloud/projectify': 5.2.0
'@google-cloud/promisify': 5.1.0
'@opentelemetry/api': 1.9.1
- '@opentelemetry/core': 2.11.0(@opentelemetry/api@1.9.1)
+ '@opentelemetry/core': 2.10.0(@opentelemetry/api@1.9.1)
'@opentelemetry/semantic-conventions': 1.39.0
arrify: 2.0.1
extend: 3.0.2
@@ -8950,19 +10018,13 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@google-cloud/sql@0.25.0(supports-color@7.2.0)':
- dependencies:
- google-gax: 5.0.8(supports-color@7.2.0)
- transitivePeerDependencies:
- - supports-color
-
- '@googleapis/sqladmin@38.1.1(supports-color@7.2.0)':
+ '@googleapis/sqladmin@37.0.0(supports-color@7.2.0)':
dependencies:
- googleapis-common: 9.1.0(supports-color@7.2.0)
+ googleapis-common: 8.0.3(supports-color@7.2.0)
transitivePeerDependencies:
- supports-color
- '@grpc/grpc-js@1.14.5':
+ '@grpc/grpc-js@1.14.4':
dependencies:
'@grpc/proto-loader': 0.8.1
'@js-sdsl/ordered-map': 4.4.2
@@ -8971,7 +10033,7 @@ snapshots:
dependencies:
lodash.camelcase: 4.3.0
long: 5.3.2
- protobufjs: 7.6.6
+ protobufjs: 7.6.5
yargs: 17.7.3
'@headlessui/react@2.2.10(react-dom@19.2.8(react@19.2.8))(react@19.2.8)':
@@ -8979,7 +10041,7 @@ snapshots:
'@floating-ui/react': 0.26.28(react-dom@19.2.8(react@19.2.8))(react@19.2.8)
'@react-aria/focus': 3.22.1(react-dom@19.2.8(react@19.2.8))(react@19.2.8)
'@react-aria/interactions': 3.28.1(react-dom@19.2.8(react@19.2.8))(react@19.2.8)
- '@tanstack/react-virtual': 3.14.10(react-dom@19.2.8(react@19.2.8))(react@19.2.8)
+ '@tanstack/react-virtual': 3.14.4(react-dom@19.2.8(react@19.2.8))(react@19.2.8)
react: 19.2.8
react-dom: 19.2.8(react@19.2.8)
use-sync-external-store: 1.6.0(react@19.2.8)
@@ -9015,9 +10077,9 @@ snapshots:
transitivePeerDependencies:
- tailwind-merge
- '@hono/node-server@2.1.1(hono@4.13.9)':
+ '@hono/node-server@2.1.1(hono@4.13.3)':
dependencies:
- hono: 4.13.9
+ hono: 4.13.3
'@humanfs/core@0.19.2':
dependencies:
@@ -9037,7 +10099,7 @@ snapshots:
'@iconify/types@2.0.0': {}
- '@iconify/utils@3.1.4':
+ '@iconify/utils@3.1.3':
dependencies:
'@antfu/install-pkg': 1.1.0
'@iconify/types': 2.0.0
@@ -9279,19 +10341,35 @@ snapshots:
optionalDependencies:
'@types/node': 26.6.2
- '@internationalized/date@3.12.4':
+ '@internationalized/date@3.12.2':
dependencies:
'@swc/helpers': 0.5.23
- '@internationalized/number@3.6.8':
+ '@internationalized/date@3.12.3':
dependencies:
'@swc/helpers': 0.5.23
- '@internationalized/string@3.2.10':
+ '@internationalized/date@3.12.4':
dependencies:
'@swc/helpers': 0.5.23
- '@isaacs/cliui@8.0.2':
+ '@internationalized/number@3.6.7':
+ dependencies:
+ '@swc/helpers': 0.5.23
+
+ '@internationalized/number@3.6.8':
+ dependencies:
+ '@swc/helpers': 0.5.23
+
+ '@internationalized/string@3.2.10':
+ dependencies:
+ '@swc/helpers': 0.5.23
+
+ '@internationalized/string@3.2.9':
+ dependencies:
+ '@swc/helpers': 0.5.23
+
+ '@isaacs/cliui@8.0.2':
dependencies:
string-width: 5.1.2
string-width-cjs: string-width@4.2.3
@@ -9306,7 +10384,7 @@ snapshots:
'@jridgewell/gen-mapping@0.3.13':
dependencies:
- '@jridgewell/sourcemap-codec': 1.6.0
+ '@jridgewell/sourcemap-codec': 1.5.5
'@jridgewell/trace-mapping': 0.3.31
'@jridgewell/remapping@2.3.5':
@@ -9316,12 +10394,12 @@ snapshots:
'@jridgewell/resolve-uri@3.1.2': {}
- '@jridgewell/sourcemap-codec@1.6.0': {}
+ '@jridgewell/sourcemap-codec@1.5.5': {}
'@jridgewell/trace-mapping@0.3.31':
dependencies:
'@jridgewell/resolve-uri': 3.1.2
- '@jridgewell/sourcemap-codec': 1.6.0
+ '@jridgewell/sourcemap-codec': 1.5.5
'@js-sdsl/ordered-map@4.4.2': {}
@@ -9352,18 +10430,18 @@ snapshots:
dependencies:
'@types/estree': 1.0.9
'@types/estree-jsx': 1.0.5
- '@types/hast': 3.0.5
+ '@types/hast': 3.0.4
'@types/mdx': 2.0.14
- acorn: 8.18.0
+ acorn: 8.17.0
collapse-white-space: 2.1.0
devlop: 1.1.0
estree-util-is-identifier-name: 3.0.0
- estree-util-scope: 1.0.1
+ estree-util-scope: 1.0.0
estree-walker: 3.0.3
hast-util-to-jsx-runtime: 2.3.6(supports-color@7.2.0)
markdown-extensions: 2.0.0
recma-build-jsx: 1.0.0
- recma-jsx: 1.0.1(acorn@8.18.0)
+ recma-jsx: 1.0.1(acorn@8.17.0)
recma-stringify: 1.0.0
rehype-recma: 1.0.0(supports-color@7.2.0)
remark-mdx: 3.1.1(supports-color@7.2.0)
@@ -9382,9 +10460,9 @@ snapshots:
dependencies:
'@chevrotain/types': 11.1.2
- '@modelcontextprotocol/sdk@1.30.1(supports-color@7.2.0)(zod@4.6.5)':
+ '@modelcontextprotocol/sdk@1.30.0(supports-color@7.2.0)(zod@4.4.3)':
dependencies:
- '@hono/node-server': 2.1.1(hono@4.13.9)
+ '@hono/node-server': 2.1.1(hono@4.13.3)
ajv: 8.20.0
ajv-formats: 3.0.1(ajv@8.20.0)
content-type: 1.0.5
@@ -9393,14 +10471,14 @@ snapshots:
eventsource: 3.0.7
eventsource-parser: 3.1.1
express: 5.2.1(supports-color@7.2.0)
- express-rate-limit: 8.7.0(express@5.2.1(supports-color@7.2.0))(supports-color@7.2.0)
- hono: 4.13.9
- jose: 6.2.12
+ express-rate-limit: 8.6.2(express@5.2.1(supports-color@7.2.0))(supports-color@7.2.0)
+ hono: 4.13.3
+ jose: 6.2.10
json-schema-typed: 8.0.2
pkce-challenge: 5.0.1
raw-body: 3.0.2
- zod: 4.6.5
- zod-to-json-schema: 3.25.2(zod@4.6.5)
+ zod: 4.4.3
+ zod-to-json-schema: 3.25.2(zod@4.4.3)
transitivePeerDependencies:
- supports-color
@@ -9518,18 +10596,18 @@ snapshots:
'@napi-rs/simple-git-win32-ia32-msvc': 0.1.22
'@napi-rs/simple-git-win32-x64-msvc': 0.1.22
- '@napi-rs/wasm-runtime@1.2.4(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)':
+ '@napi-rs/wasm-runtime@1.2.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)':
dependencies:
'@emnapi/core': 1.10.0
'@emnapi/runtime': 1.10.0
- '@tybys/wasm-util': 0.10.4
+ '@tybys/wasm-util': 0.10.3
optional: true
- '@napi-rs/wasm-runtime@1.2.4(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.3)':
+ '@napi-rs/wasm-runtime@1.2.3(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.3)':
dependencies:
'@emnapi/core': 1.11.1
'@emnapi/runtime': 1.11.3
- '@tybys/wasm-util': 0.10.4
+ '@tybys/wasm-util': 0.10.3
optional: true
'@next/bundle-analyzer@16.3.6':
@@ -9608,21 +10686,19 @@ snapshots:
'@nodelib/fs.walk@1.2.8':
dependencies:
'@nodelib/fs.scandir': 2.1.5
- fastq: 1.20.3
+ fastq: 1.20.1
'@nolyfill/is-core-module@1.0.39': {}
'@opentelemetry/api@1.9.1': {}
- '@opentelemetry/core@2.11.0(@opentelemetry/api@1.9.1)':
+ '@opentelemetry/core@2.10.0(@opentelemetry/api@1.9.1)':
dependencies:
'@opentelemetry/api': 1.9.1
- '@opentelemetry/semantic-conventions': 1.43.0
+ '@opentelemetry/semantic-conventions': 1.39.0
'@opentelemetry/semantic-conventions@1.39.0': {}
- '@opentelemetry/semantic-conventions@1.43.0': {}
-
'@oxc-parser/binding-android-arm-eabi@0.121.0':
optional: true
@@ -9673,7 +10749,7 @@ snapshots:
'@oxc-parser/binding-wasm32-wasi@0.121.0(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.3)':
dependencies:
- '@napi-rs/wasm-runtime': 1.2.4(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.3)
+ '@napi-rs/wasm-runtime': 1.2.3(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.3)
transitivePeerDependencies:
- '@emnapi/core'
- '@emnapi/runtime'
@@ -9744,7 +10820,7 @@ snapshots:
'@oxc-transform/binding-wasm32-wasi@0.111.0(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.3)':
dependencies:
- '@napi-rs/wasm-runtime': 1.2.4(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.3)
+ '@napi-rs/wasm-runtime': 1.2.3(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.3)
transitivePeerDependencies:
- '@emnapi/core'
- '@emnapi/runtime'
@@ -9762,87 +10838,564 @@ snapshots:
'@pkgjs/parseargs@0.11.0':
optional: true
- '@playwright/test@1.63.0':
+ '@playwright/test@1.63.0':
+ dependencies:
+ playwright: 1.63.0
+
+ '@pnpm/config.env-replace@1.1.0': {}
+
+ '@pnpm/network.ca-file@1.0.2':
+ dependencies:
+ graceful-fs: 4.2.10
+
+ '@pnpm/npm-conf@3.0.3':
+ dependencies:
+ '@pnpm/config.env-replace': 1.1.0
+ '@pnpm/network.ca-file': 1.0.2
+ config-chain: 1.1.13
+
+ '@polka/url@1.0.0-next.29': {}
+
+ '@protobufjs/aspromise@1.1.2': {}
+
+ '@protobufjs/base64@1.1.2': {}
+
+ '@protobufjs/codegen@2.0.5': {}
+
+ '@protobufjs/eventemitter@1.1.1': {}
+
+ '@protobufjs/fetch@1.1.1':
+ dependencies:
+ '@protobufjs/aspromise': 1.1.2
+
+ '@protobufjs/float@1.0.2': {}
+
+ '@protobufjs/path@1.1.2': {}
+
+ '@protobufjs/pool@1.1.0': {}
+
+ '@protobufjs/utf8@1.1.2': {}
+
+ '@radix-ui/number@1.1.3': {}
+
+ '@radix-ui/primitive@1.1.7': {}
+
+ '@radix-ui/react-accessible-icon@1.1.15(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)':
+ dependencies:
+ '@radix-ui/react-visually-hidden': 1.2.11(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)
+ react: 19.3.0
+ react-dom: 19.3.0(react@19.3.0)
+ optionalDependencies:
+ '@types/react': 19.3.0
+ '@types/react-dom': 19.3.0(@types/react@19.3.0)
+
+ '@radix-ui/react-accordion@1.2.20(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)':
+ dependencies:
+ '@radix-ui/primitive': 1.1.7
+ '@radix-ui/react-collapsible': 1.1.20(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)
+ '@radix-ui/react-collection': 1.1.15(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)
+ '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.3.0)(react@19.3.0)
+ '@radix-ui/react-context': 1.2.2(@types/react@19.3.0)(react@19.3.0)
+ '@radix-ui/react-direction': 1.1.4(@types/react@19.3.0)(react@19.3.0)
+ '@radix-ui/react-id': 1.1.4(@types/react@19.3.0)(react@19.3.0)
+ '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)
+ '@radix-ui/react-use-controllable-state': 1.2.6(@types/react@19.3.0)(react@19.3.0)
+ react: 19.3.0
+ react-dom: 19.3.0(react@19.3.0)
+ optionalDependencies:
+ '@types/react': 19.3.0
+ '@types/react-dom': 19.3.0(@types/react@19.3.0)
+
+ '@radix-ui/react-alert-dialog@1.1.23(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)':
+ dependencies:
+ '@radix-ui/primitive': 1.1.7
+ '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.3.0)(react@19.3.0)
+ '@radix-ui/react-context': 1.2.2(@types/react@19.3.0)(react@19.3.0)
+ '@radix-ui/react-dialog': 1.1.23(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)
+ '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)
+ react: 19.3.0
+ react-dom: 19.3.0(react@19.3.0)
+ optionalDependencies:
+ '@types/react': 19.3.0
+ '@types/react-dom': 19.3.0(@types/react@19.3.0)
+
+ '@radix-ui/react-arrow@1.1.15(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)':
+ dependencies:
+ '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)
+ react: 19.3.0
+ react-dom: 19.3.0(react@19.3.0)
+ optionalDependencies:
+ '@types/react': 19.3.0
+ '@types/react-dom': 19.3.0(@types/react@19.3.0)
+
+ '@radix-ui/react-aspect-ratio@1.1.15(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)':
+ dependencies:
+ '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)
+ react: 19.3.0
+ react-dom: 19.3.0(react@19.3.0)
+ optionalDependencies:
+ '@types/react': 19.3.0
+ '@types/react-dom': 19.3.0(@types/react@19.3.0)
+
+ '@radix-ui/react-avatar@1.2.6(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)':
+ dependencies:
+ '@radix-ui/primitive': 1.1.7
+ '@radix-ui/react-context': 1.2.2(@types/react@19.3.0)(react@19.3.0)
+ '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)
+ '@radix-ui/react-use-callback-ref': 1.1.4(@types/react@19.3.0)(react@19.3.0)
+ '@radix-ui/react-use-is-hydrated': 0.1.3(@types/react@19.3.0)(react@19.3.0)
+ '@radix-ui/react-use-layout-effect': 1.1.4(@types/react@19.3.0)(react@19.3.0)
+ react: 19.3.0
+ react-dom: 19.3.0(react@19.3.0)
+ optionalDependencies:
+ '@types/react': 19.3.0
+ '@types/react-dom': 19.3.0(@types/react@19.3.0)
+
+ '@radix-ui/react-checkbox@1.3.11(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)':
+ dependencies:
+ '@radix-ui/primitive': 1.1.7
+ '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.3.0)(react@19.3.0)
+ '@radix-ui/react-context': 1.2.2(@types/react@19.3.0)(react@19.3.0)
+ '@radix-ui/react-presence': 1.1.10(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)
+ '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)
+ '@radix-ui/react-use-controllable-state': 1.2.6(@types/react@19.3.0)(react@19.3.0)
+ '@radix-ui/react-use-size': 1.1.4(@types/react@19.3.0)(react@19.3.0)
+ react: 19.3.0
+ react-dom: 19.3.0(react@19.3.0)
+ optionalDependencies:
+ '@types/react': 19.3.0
+ '@types/react-dom': 19.3.0(@types/react@19.3.0)
+
+ '@radix-ui/react-collapsible@1.1.20(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)':
+ dependencies:
+ '@radix-ui/primitive': 1.1.7
+ '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.3.0)(react@19.3.0)
+ '@radix-ui/react-context': 1.2.2(@types/react@19.3.0)(react@19.3.0)
+ '@radix-ui/react-id': 1.1.4(@types/react@19.3.0)(react@19.3.0)
+ '@radix-ui/react-presence': 1.1.10(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)
+ '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)
+ '@radix-ui/react-use-controllable-state': 1.2.6(@types/react@19.3.0)(react@19.3.0)
+ '@radix-ui/react-use-layout-effect': 1.1.4(@types/react@19.3.0)(react@19.3.0)
+ react: 19.3.0
+ react-dom: 19.3.0(react@19.3.0)
+ optionalDependencies:
+ '@types/react': 19.3.0
+ '@types/react-dom': 19.3.0(@types/react@19.3.0)
+
+ '@radix-ui/react-collection@1.1.15(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)':
+ dependencies:
+ '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.3.0)(react@19.3.0)
+ '@radix-ui/react-context': 1.2.2(@types/react@19.3.0)(react@19.3.0)
+ '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)
+ '@radix-ui/react-slot': 1.3.3(@types/react@19.3.0)(react@19.3.0)
+ react: 19.3.0
+ react-dom: 19.3.0(react@19.3.0)
+ optionalDependencies:
+ '@types/react': 19.3.0
+ '@types/react-dom': 19.3.0(@types/react@19.3.0)
+
+ '@radix-ui/react-compose-refs@1.1.5(@types/react@19.3.0)(react@19.3.0)':
+ dependencies:
+ react: 19.3.0
+ optionalDependencies:
+ '@types/react': 19.3.0
+
+ '@radix-ui/react-context-menu@2.3.7(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)':
+ dependencies:
+ '@radix-ui/primitive': 1.1.7
+ '@radix-ui/react-context': 1.2.2(@types/react@19.3.0)(react@19.3.0)
+ '@radix-ui/react-menu': 2.1.24(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)
+ '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)
+ '@radix-ui/react-use-controllable-state': 1.2.6(@types/react@19.3.0)(react@19.3.0)
+ react: 19.3.0
+ react-dom: 19.3.0(react@19.3.0)
+ optionalDependencies:
+ '@types/react': 19.3.0
+ '@types/react-dom': 19.3.0(@types/react@19.3.0)
+
+ '@radix-ui/react-context@1.2.2(@types/react@19.3.0)(react@19.3.0)':
+ dependencies:
+ react: 19.3.0
+ optionalDependencies:
+ '@types/react': 19.3.0
+
+ '@radix-ui/react-dialog@1.1.23(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)':
+ dependencies:
+ '@radix-ui/primitive': 1.1.7
+ '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.3.0)(react@19.3.0)
+ '@radix-ui/react-context': 1.2.2(@types/react@19.3.0)(react@19.3.0)
+ '@radix-ui/react-dismissable-layer': 1.1.19(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)
+ '@radix-ui/react-focus-guards': 1.1.6(@types/react@19.3.0)(react@19.3.0)
+ '@radix-ui/react-focus-scope': 1.1.16(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)
+ '@radix-ui/react-id': 1.1.4(@types/react@19.3.0)(react@19.3.0)
+ '@radix-ui/react-portal': 1.1.17(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)
+ '@radix-ui/react-presence': 1.1.10(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)
+ '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)
+ '@radix-ui/react-slot': 1.3.3(@types/react@19.3.0)(react@19.3.0)
+ '@radix-ui/react-use-controllable-state': 1.2.6(@types/react@19.3.0)(react@19.3.0)
+ '@radix-ui/react-use-layout-effect': 1.1.4(@types/react@19.3.0)(react@19.3.0)
+ aria-hidden: 1.2.6
+ react: 19.3.0
+ react-dom: 19.3.0(react@19.3.0)
+ react-remove-scroll: 2.7.2(@types/react@19.3.0)(react@19.3.0)
+ optionalDependencies:
+ '@types/react': 19.3.0
+ '@types/react-dom': 19.3.0(@types/react@19.3.0)
+
+ '@radix-ui/react-direction@1.1.4(@types/react@19.3.0)(react@19.3.0)':
+ dependencies:
+ react: 19.3.0
+ optionalDependencies:
+ '@types/react': 19.3.0
+
+ '@radix-ui/react-dismissable-layer@1.1.19(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)':
+ dependencies:
+ '@radix-ui/primitive': 1.1.7
+ '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.3.0)(react@19.3.0)
+ '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)
+ '@radix-ui/react-use-callback-ref': 1.1.4(@types/react@19.3.0)(react@19.3.0)
+ '@radix-ui/react-use-effect-event': 0.0.5(@types/react@19.3.0)(react@19.3.0)
+ react: 19.3.0
+ react-dom: 19.3.0(react@19.3.0)
+ optionalDependencies:
+ '@types/react': 19.3.0
+ '@types/react-dom': 19.3.0(@types/react@19.3.0)
+
+ '@radix-ui/react-dropdown-menu@2.1.24(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)':
+ dependencies:
+ '@radix-ui/primitive': 1.1.7
+ '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.3.0)(react@19.3.0)
+ '@radix-ui/react-context': 1.2.2(@types/react@19.3.0)(react@19.3.0)
+ '@radix-ui/react-id': 1.1.4(@types/react@19.3.0)(react@19.3.0)
+ '@radix-ui/react-menu': 2.1.24(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)
+ '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)
+ '@radix-ui/react-use-controllable-state': 1.2.6(@types/react@19.3.0)(react@19.3.0)
+ react: 19.3.0
+ react-dom: 19.3.0(react@19.3.0)
+ optionalDependencies:
+ '@types/react': 19.3.0
+ '@types/react-dom': 19.3.0(@types/react@19.3.0)
+
+ '@radix-ui/react-focus-guards@1.1.6(@types/react@19.3.0)(react@19.3.0)':
+ dependencies:
+ react: 19.3.0
+ optionalDependencies:
+ '@types/react': 19.3.0
+
+ '@radix-ui/react-focus-scope@1.1.16(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)':
+ dependencies:
+ '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.3.0)(react@19.3.0)
+ '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)
+ '@radix-ui/react-use-callback-ref': 1.1.4(@types/react@19.3.0)(react@19.3.0)
+ react: 19.3.0
+ react-dom: 19.3.0(react@19.3.0)
+ optionalDependencies:
+ '@types/react': 19.3.0
+ '@types/react-dom': 19.3.0(@types/react@19.3.0)
+
+ '@radix-ui/react-form@0.1.16(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)':
+ dependencies:
+ '@radix-ui/primitive': 1.1.7
+ '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.3.0)(react@19.3.0)
+ '@radix-ui/react-context': 1.2.2(@types/react@19.3.0)(react@19.3.0)
+ '@radix-ui/react-id': 1.1.4(@types/react@19.3.0)(react@19.3.0)
+ '@radix-ui/react-label': 2.1.15(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)
+ '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)
+ react: 19.3.0
+ react-dom: 19.3.0(react@19.3.0)
+ optionalDependencies:
+ '@types/react': 19.3.0
+ '@types/react-dom': 19.3.0(@types/react@19.3.0)
+
+ '@radix-ui/react-hover-card@1.1.23(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)':
+ dependencies:
+ '@radix-ui/primitive': 1.1.7
+ '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.3.0)(react@19.3.0)
+ '@radix-ui/react-context': 1.2.2(@types/react@19.3.0)(react@19.3.0)
+ '@radix-ui/react-dismissable-layer': 1.1.19(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)
+ '@radix-ui/react-popper': 1.3.7(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)
+ '@radix-ui/react-portal': 1.1.17(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)
+ '@radix-ui/react-presence': 1.1.10(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)
+ '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)
+ '@radix-ui/react-use-controllable-state': 1.2.6(@types/react@19.3.0)(react@19.3.0)
+ react: 19.3.0
+ react-dom: 19.3.0(react@19.3.0)
+ optionalDependencies:
+ '@types/react': 19.3.0
+ '@types/react-dom': 19.3.0(@types/react@19.3.0)
+
+ '@radix-ui/react-id@1.1.4(@types/react@19.3.0)(react@19.3.0)':
+ dependencies:
+ '@radix-ui/react-use-layout-effect': 1.1.4(@types/react@19.3.0)(react@19.3.0)
+ react: 19.3.0
+ optionalDependencies:
+ '@types/react': 19.3.0
+
+ '@radix-ui/react-label@2.1.15(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)':
+ dependencies:
+ '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)
+ react: 19.3.0
+ react-dom: 19.3.0(react@19.3.0)
+ optionalDependencies:
+ '@types/react': 19.3.0
+ '@types/react-dom': 19.3.0(@types/react@19.3.0)
+
+ '@radix-ui/react-menu@2.1.24(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)':
+ dependencies:
+ '@radix-ui/primitive': 1.1.7
+ '@radix-ui/react-collection': 1.1.15(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)
+ '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.3.0)(react@19.3.0)
+ '@radix-ui/react-context': 1.2.2(@types/react@19.3.0)(react@19.3.0)
+ '@radix-ui/react-direction': 1.1.4(@types/react@19.3.0)(react@19.3.0)
+ '@radix-ui/react-dismissable-layer': 1.1.19(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)
+ '@radix-ui/react-focus-guards': 1.1.6(@types/react@19.3.0)(react@19.3.0)
+ '@radix-ui/react-focus-scope': 1.1.16(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)
+ '@radix-ui/react-id': 1.1.4(@types/react@19.3.0)(react@19.3.0)
+ '@radix-ui/react-popper': 1.3.7(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)
+ '@radix-ui/react-portal': 1.1.17(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)
+ '@radix-ui/react-presence': 1.1.10(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)
+ '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)
+ '@radix-ui/react-roving-focus': 1.1.19(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)
+ '@radix-ui/react-slot': 1.3.3(@types/react@19.3.0)(react@19.3.0)
+ '@radix-ui/react-use-callback-ref': 1.1.4(@types/react@19.3.0)(react@19.3.0)
+ aria-hidden: 1.2.6
+ react: 19.3.0
+ react-dom: 19.3.0(react@19.3.0)
+ react-remove-scroll: 2.7.2(@types/react@19.3.0)(react@19.3.0)
+ optionalDependencies:
+ '@types/react': 19.3.0
+ '@types/react-dom': 19.3.0(@types/react@19.3.0)
+
+ '@radix-ui/react-menubar@1.1.24(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)':
+ dependencies:
+ '@radix-ui/primitive': 1.1.7
+ '@radix-ui/react-collection': 1.1.15(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)
+ '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.3.0)(react@19.3.0)
+ '@radix-ui/react-context': 1.2.2(@types/react@19.3.0)(react@19.3.0)
+ '@radix-ui/react-direction': 1.1.4(@types/react@19.3.0)(react@19.3.0)
+ '@radix-ui/react-id': 1.1.4(@types/react@19.3.0)(react@19.3.0)
+ '@radix-ui/react-menu': 2.1.24(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)
+ '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)
+ '@radix-ui/react-roving-focus': 1.1.19(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)
+ '@radix-ui/react-use-controllable-state': 1.2.6(@types/react@19.3.0)(react@19.3.0)
+ react: 19.3.0
+ react-dom: 19.3.0(react@19.3.0)
+ optionalDependencies:
+ '@types/react': 19.3.0
+ '@types/react-dom': 19.3.0(@types/react@19.3.0)
+
+ '@radix-ui/react-navigation-menu@1.2.22(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)':
+ dependencies:
+ '@radix-ui/primitive': 1.1.7
+ '@radix-ui/react-collection': 1.1.15(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)
+ '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.3.0)(react@19.3.0)
+ '@radix-ui/react-context': 1.2.2(@types/react@19.3.0)(react@19.3.0)
+ '@radix-ui/react-direction': 1.1.4(@types/react@19.3.0)(react@19.3.0)
+ '@radix-ui/react-dismissable-layer': 1.1.19(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)
+ '@radix-ui/react-id': 1.1.4(@types/react@19.3.0)(react@19.3.0)
+ '@radix-ui/react-presence': 1.1.10(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)
+ '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)
+ '@radix-ui/react-use-callback-ref': 1.1.4(@types/react@19.3.0)(react@19.3.0)
+ '@radix-ui/react-use-controllable-state': 1.2.6(@types/react@19.3.0)(react@19.3.0)
+ '@radix-ui/react-use-layout-effect': 1.1.4(@types/react@19.3.0)(react@19.3.0)
+ '@radix-ui/react-use-previous': 1.1.4(@types/react@19.3.0)(react@19.3.0)
+ '@radix-ui/react-visually-hidden': 1.2.11(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)
+ react: 19.3.0
+ react-dom: 19.3.0(react@19.3.0)
+ optionalDependencies:
+ '@types/react': 19.3.0
+ '@types/react-dom': 19.3.0(@types/react@19.3.0)
+
+ '@radix-ui/react-one-time-password-field@0.1.16(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)':
+ dependencies:
+ '@radix-ui/number': 1.1.3
+ '@radix-ui/primitive': 1.1.7
+ '@radix-ui/react-collection': 1.1.15(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)
+ '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.3.0)(react@19.3.0)
+ '@radix-ui/react-context': 1.2.2(@types/react@19.3.0)(react@19.3.0)
+ '@radix-ui/react-direction': 1.1.4(@types/react@19.3.0)(react@19.3.0)
+ '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)
+ '@radix-ui/react-roving-focus': 1.1.19(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)
+ '@radix-ui/react-use-controllable-state': 1.2.6(@types/react@19.3.0)(react@19.3.0)
+ '@radix-ui/react-use-effect-event': 0.0.5(@types/react@19.3.0)(react@19.3.0)
+ '@radix-ui/react-use-is-hydrated': 0.1.3(@types/react@19.3.0)(react@19.3.0)
+ '@radix-ui/react-use-layout-effect': 1.1.4(@types/react@19.3.0)(react@19.3.0)
+ react: 19.3.0
+ react-dom: 19.3.0(react@19.3.0)
+ optionalDependencies:
+ '@types/react': 19.3.0
+ '@types/react-dom': 19.3.0(@types/react@19.3.0)
+
+ '@radix-ui/react-password-toggle-field@0.1.11(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)':
+ dependencies:
+ '@radix-ui/primitive': 1.1.7
+ '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.3.0)(react@19.3.0)
+ '@radix-ui/react-context': 1.2.2(@types/react@19.3.0)(react@19.3.0)
+ '@radix-ui/react-id': 1.1.4(@types/react@19.3.0)(react@19.3.0)
+ '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)
+ '@radix-ui/react-use-controllable-state': 1.2.6(@types/react@19.3.0)(react@19.3.0)
+ '@radix-ui/react-use-effect-event': 0.0.5(@types/react@19.3.0)(react@19.3.0)
+ '@radix-ui/react-use-is-hydrated': 0.1.3(@types/react@19.3.0)(react@19.3.0)
+ react: 19.3.0
+ react-dom: 19.3.0(react@19.3.0)
+ optionalDependencies:
+ '@types/react': 19.3.0
+ '@types/react-dom': 19.3.0(@types/react@19.3.0)
+
+ '@radix-ui/react-popover@1.1.23(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)':
dependencies:
- playwright: 1.63.0
-
- '@pnpm/config.env-replace@1.1.0': {}
+ '@radix-ui/primitive': 1.1.7
+ '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.3.0)(react@19.3.0)
+ '@radix-ui/react-context': 1.2.2(@types/react@19.3.0)(react@19.3.0)
+ '@radix-ui/react-dismissable-layer': 1.1.19(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)
+ '@radix-ui/react-focus-guards': 1.1.6(@types/react@19.3.0)(react@19.3.0)
+ '@radix-ui/react-focus-scope': 1.1.16(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)
+ '@radix-ui/react-id': 1.1.4(@types/react@19.3.0)(react@19.3.0)
+ '@radix-ui/react-popper': 1.3.7(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)
+ '@radix-ui/react-portal': 1.1.17(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)
+ '@radix-ui/react-presence': 1.1.10(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)
+ '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)
+ '@radix-ui/react-slot': 1.3.3(@types/react@19.3.0)(react@19.3.0)
+ '@radix-ui/react-use-controllable-state': 1.2.6(@types/react@19.3.0)(react@19.3.0)
+ aria-hidden: 1.2.6
+ react: 19.3.0
+ react-dom: 19.3.0(react@19.3.0)
+ react-remove-scroll: 2.7.2(@types/react@19.3.0)(react@19.3.0)
+ optionalDependencies:
+ '@types/react': 19.3.0
+ '@types/react-dom': 19.3.0(@types/react@19.3.0)
- '@pnpm/network.ca-file@1.0.2':
+ '@radix-ui/react-popper@1.3.7(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)':
dependencies:
- graceful-fs: 4.2.10
+ '@floating-ui/react-dom': 2.1.8(react-dom@19.3.0(react@19.3.0))(react@19.3.0)
+ '@radix-ui/react-arrow': 1.1.15(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)
+ '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.3.0)(react@19.3.0)
+ '@radix-ui/react-context': 1.2.2(@types/react@19.3.0)(react@19.3.0)
+ '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)
+ '@radix-ui/react-use-callback-ref': 1.1.4(@types/react@19.3.0)(react@19.3.0)
+ '@radix-ui/react-use-layout-effect': 1.1.4(@types/react@19.3.0)(react@19.3.0)
+ '@radix-ui/react-use-rect': 1.1.4(@types/react@19.3.0)(react@19.3.0)
+ '@radix-ui/react-use-size': 1.1.4(@types/react@19.3.0)(react@19.3.0)
+ '@radix-ui/rect': 1.1.3
+ react: 19.3.0
+ react-dom: 19.3.0(react@19.3.0)
+ optionalDependencies:
+ '@types/react': 19.3.0
+ '@types/react-dom': 19.3.0(@types/react@19.3.0)
- '@pnpm/npm-conf@3.0.3':
+ '@radix-ui/react-portal@1.1.17(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)':
dependencies:
- '@pnpm/config.env-replace': 1.1.0
- '@pnpm/network.ca-file': 1.0.2
- config-chain: 1.1.13
-
- '@polka/url@1.0.0-next.29': {}
-
- '@protobufjs/aspromise@1.1.2': {}
-
- '@protobufjs/base64@1.1.2': {}
-
- '@protobufjs/codegen@2.0.5': {}
-
- '@protobufjs/eventemitter@1.1.1': {}
+ '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)
+ '@radix-ui/react-use-layout-effect': 1.1.4(@types/react@19.3.0)(react@19.3.0)
+ react: 19.3.0
+ react-dom: 19.3.0(react@19.3.0)
+ optionalDependencies:
+ '@types/react': 19.3.0
+ '@types/react-dom': 19.3.0(@types/react@19.3.0)
- '@protobufjs/fetch@1.1.1':
+ '@radix-ui/react-presence@1.1.10(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)':
dependencies:
- '@protobufjs/aspromise': 1.1.2
-
- '@protobufjs/float@1.0.2': {}
-
- '@protobufjs/path@1.1.2': {}
-
- '@protobufjs/pool@1.1.0': {}
+ '@radix-ui/react-use-layout-effect': 1.1.4(@types/react@19.3.0)(react@19.3.0)
+ react: 19.3.0
+ react-dom: 19.3.0(react@19.3.0)
+ optionalDependencies:
+ '@types/react': 19.3.0
+ '@types/react-dom': 19.3.0(@types/react@19.3.0)
- '@protobufjs/utf8@1.1.2': {}
+ '@radix-ui/react-primitive@2.1.10(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)':
+ dependencies:
+ '@radix-ui/react-slot': 1.3.3(@types/react@19.3.0)(react@19.3.0)
+ react: 19.3.0
+ react-dom: 19.3.0(react@19.3.0)
+ optionalDependencies:
+ '@types/react': 19.3.0
+ '@types/react-dom': 19.3.0(@types/react@19.3.0)
- '@radix-ui/primitive@1.1.7': {}
+ '@radix-ui/react-progress@1.1.16(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)':
+ dependencies:
+ '@radix-ui/react-context': 1.2.2(@types/react@19.3.0)(react@19.3.0)
+ '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)
+ react: 19.3.0
+ react-dom: 19.3.0(react@19.3.0)
+ optionalDependencies:
+ '@types/react': 19.3.0
+ '@types/react-dom': 19.3.0(@types/react@19.3.0)
- '@radix-ui/react-avatar@1.2.6(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)':
+ '@radix-ui/react-radio-group@1.4.7(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)':
dependencies:
'@radix-ui/primitive': 1.1.7
+ '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.3.0)(react@19.3.0)
'@radix-ui/react-context': 1.2.2(@types/react@19.3.0)(react@19.3.0)
+ '@radix-ui/react-direction': 1.1.4(@types/react@19.3.0)(react@19.3.0)
+ '@radix-ui/react-presence': 1.1.10(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)
'@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)
- '@radix-ui/react-use-callback-ref': 1.1.4(@types/react@19.3.0)(react@19.3.0)
- '@radix-ui/react-use-is-hydrated': 0.1.3(@types/react@19.3.0)(react@19.3.0)
- '@radix-ui/react-use-layout-effect': 1.1.4(@types/react@19.3.0)(react@19.3.0)
+ '@radix-ui/react-roving-focus': 1.1.19(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)
+ '@radix-ui/react-use-controllable-state': 1.2.6(@types/react@19.3.0)(react@19.3.0)
+ '@radix-ui/react-use-size': 1.1.4(@types/react@19.3.0)(react@19.3.0)
react: 19.3.0
react-dom: 19.3.0(react@19.3.0)
optionalDependencies:
'@types/react': 19.3.0
'@types/react-dom': 19.3.0(@types/react@19.3.0)
- '@radix-ui/react-compose-refs@1.1.5(@types/react@19.3.0)(react@19.3.0)':
+ '@radix-ui/react-roving-focus@1.1.19(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)':
dependencies:
+ '@radix-ui/primitive': 1.1.7
+ '@radix-ui/react-collection': 1.1.15(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)
+ '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.3.0)(react@19.3.0)
+ '@radix-ui/react-context': 1.2.2(@types/react@19.3.0)(react@19.3.0)
+ '@radix-ui/react-direction': 1.1.4(@types/react@19.3.0)(react@19.3.0)
+ '@radix-ui/react-id': 1.1.4(@types/react@19.3.0)(react@19.3.0)
+ '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)
+ '@radix-ui/react-use-callback-ref': 1.1.4(@types/react@19.3.0)(react@19.3.0)
+ '@radix-ui/react-use-controllable-state': 1.2.6(@types/react@19.3.0)(react@19.3.0)
+ '@radix-ui/react-use-is-hydrated': 0.1.3(@types/react@19.3.0)(react@19.3.0)
+ '@radix-ui/react-use-layout-effect': 1.1.4(@types/react@19.3.0)(react@19.3.0)
react: 19.3.0
+ react-dom: 19.3.0(react@19.3.0)
optionalDependencies:
'@types/react': 19.3.0
+ '@types/react-dom': 19.3.0(@types/react@19.3.0)
- '@radix-ui/react-context@1.2.2(@types/react@19.3.0)(react@19.3.0)':
+ '@radix-ui/react-scroll-area@1.2.18(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)':
dependencies:
+ '@radix-ui/number': 1.1.3
+ '@radix-ui/primitive': 1.1.7
+ '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.3.0)(react@19.3.0)
+ '@radix-ui/react-context': 1.2.2(@types/react@19.3.0)(react@19.3.0)
+ '@radix-ui/react-direction': 1.1.4(@types/react@19.3.0)(react@19.3.0)
+ '@radix-ui/react-presence': 1.1.10(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)
+ '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)
+ '@radix-ui/react-use-callback-ref': 1.1.4(@types/react@19.3.0)(react@19.3.0)
+ '@radix-ui/react-use-layout-effect': 1.1.4(@types/react@19.3.0)(react@19.3.0)
react: 19.3.0
+ react-dom: 19.3.0(react@19.3.0)
optionalDependencies:
'@types/react': 19.3.0
+ '@types/react-dom': 19.3.0(@types/react@19.3.0)
- '@radix-ui/react-dialog@1.1.23(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)':
+ '@radix-ui/react-select@2.3.7(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)':
dependencies:
+ '@radix-ui/number': 1.1.3
'@radix-ui/primitive': 1.1.7
+ '@radix-ui/react-collection': 1.1.15(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)
'@radix-ui/react-compose-refs': 1.1.5(@types/react@19.3.0)(react@19.3.0)
'@radix-ui/react-context': 1.2.2(@types/react@19.3.0)(react@19.3.0)
+ '@radix-ui/react-direction': 1.1.4(@types/react@19.3.0)(react@19.3.0)
'@radix-ui/react-dismissable-layer': 1.1.19(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)
'@radix-ui/react-focus-guards': 1.1.6(@types/react@19.3.0)(react@19.3.0)
'@radix-ui/react-focus-scope': 1.1.16(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)
'@radix-ui/react-id': 1.1.4(@types/react@19.3.0)(react@19.3.0)
+ '@radix-ui/react-popper': 1.3.7(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)
'@radix-ui/react-portal': 1.1.17(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)
'@radix-ui/react-presence': 1.1.10(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)
'@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)
'@radix-ui/react-slot': 1.3.3(@types/react@19.3.0)(react@19.3.0)
+ '@radix-ui/react-use-callback-ref': 1.1.4(@types/react@19.3.0)(react@19.3.0)
'@radix-ui/react-use-controllable-state': 1.2.6(@types/react@19.3.0)(react@19.3.0)
'@radix-ui/react-use-layout-effect': 1.1.4(@types/react@19.3.0)(react@19.3.0)
+ '@radix-ui/react-use-previous': 1.1.4(@types/react@19.3.0)(react@19.3.0)
+ '@radix-ui/react-visually-hidden': 1.2.11(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)
aria-hidden: 1.2.6
react: 19.3.0
react-dom: 19.3.0(react@19.3.0)
@@ -9851,77 +11404,152 @@ snapshots:
'@types/react': 19.3.0
'@types/react-dom': 19.3.0(@types/react@19.3.0)
- '@radix-ui/react-dismissable-layer@1.1.19(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)':
+ '@radix-ui/react-separator@1.1.15(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)':
+ dependencies:
+ '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)
+ react: 19.3.0
+ react-dom: 19.3.0(react@19.3.0)
+ optionalDependencies:
+ '@types/react': 19.3.0
+ '@types/react-dom': 19.3.0(@types/react@19.3.0)
+
+ '@radix-ui/react-slider@1.4.7(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)':
dependencies:
+ '@radix-ui/number': 1.1.3
'@radix-ui/primitive': 1.1.7
+ '@radix-ui/react-collection': 1.1.15(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)
'@radix-ui/react-compose-refs': 1.1.5(@types/react@19.3.0)(react@19.3.0)
+ '@radix-ui/react-context': 1.2.2(@types/react@19.3.0)(react@19.3.0)
+ '@radix-ui/react-direction': 1.1.4(@types/react@19.3.0)(react@19.3.0)
'@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)
- '@radix-ui/react-use-callback-ref': 1.1.4(@types/react@19.3.0)(react@19.3.0)
- '@radix-ui/react-use-effect-event': 0.0.5(@types/react@19.3.0)(react@19.3.0)
+ '@radix-ui/react-use-controllable-state': 1.2.6(@types/react@19.3.0)(react@19.3.0)
+ '@radix-ui/react-use-layout-effect': 1.1.4(@types/react@19.3.0)(react@19.3.0)
+ '@radix-ui/react-use-previous': 1.1.4(@types/react@19.3.0)(react@19.3.0)
+ '@radix-ui/react-use-size': 1.1.4(@types/react@19.3.0)(react@19.3.0)
react: 19.3.0
react-dom: 19.3.0(react@19.3.0)
optionalDependencies:
'@types/react': 19.3.0
'@types/react-dom': 19.3.0(@types/react@19.3.0)
- '@radix-ui/react-focus-guards@1.1.6(@types/react@19.3.0)(react@19.3.0)':
+ '@radix-ui/react-slot@1.3.3(@types/react@19.3.0)(react@19.3.0)':
dependencies:
+ '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.3.0)(react@19.3.0)
react: 19.3.0
optionalDependencies:
'@types/react': 19.3.0
- '@radix-ui/react-focus-scope@1.1.16(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)':
+ '@radix-ui/react-switch@1.3.7(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)':
dependencies:
+ '@radix-ui/primitive': 1.1.7
'@radix-ui/react-compose-refs': 1.1.5(@types/react@19.3.0)(react@19.3.0)
+ '@radix-ui/react-context': 1.2.2(@types/react@19.3.0)(react@19.3.0)
'@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)
- '@radix-ui/react-use-callback-ref': 1.1.4(@types/react@19.3.0)(react@19.3.0)
+ '@radix-ui/react-use-controllable-state': 1.2.6(@types/react@19.3.0)(react@19.3.0)
+ '@radix-ui/react-use-size': 1.1.4(@types/react@19.3.0)(react@19.3.0)
react: 19.3.0
react-dom: 19.3.0(react@19.3.0)
optionalDependencies:
'@types/react': 19.3.0
'@types/react-dom': 19.3.0(@types/react@19.3.0)
- '@radix-ui/react-id@1.1.4(@types/react@19.3.0)(react@19.3.0)':
+ '@radix-ui/react-tabs@1.1.21(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)':
dependencies:
- '@radix-ui/react-use-layout-effect': 1.1.4(@types/react@19.3.0)(react@19.3.0)
+ '@radix-ui/primitive': 1.1.7
+ '@radix-ui/react-context': 1.2.2(@types/react@19.3.0)(react@19.3.0)
+ '@radix-ui/react-direction': 1.1.4(@types/react@19.3.0)(react@19.3.0)
+ '@radix-ui/react-id': 1.1.4(@types/react@19.3.0)(react@19.3.0)
+ '@radix-ui/react-presence': 1.1.10(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)
+ '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)
+ '@radix-ui/react-roving-focus': 1.1.19(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)
+ '@radix-ui/react-use-controllable-state': 1.2.6(@types/react@19.3.0)(react@19.3.0)
react: 19.3.0
+ react-dom: 19.3.0(react@19.3.0)
optionalDependencies:
'@types/react': 19.3.0
+ '@types/react-dom': 19.3.0(@types/react@19.3.0)
- '@radix-ui/react-portal@1.1.17(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)':
+ '@radix-ui/react-toast@1.2.23(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)':
dependencies:
+ '@radix-ui/primitive': 1.1.7
+ '@radix-ui/react-collection': 1.1.15(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)
+ '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.3.0)(react@19.3.0)
+ '@radix-ui/react-context': 1.2.2(@types/react@19.3.0)(react@19.3.0)
+ '@radix-ui/react-dismissable-layer': 1.1.19(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)
+ '@radix-ui/react-portal': 1.1.17(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)
+ '@radix-ui/react-presence': 1.1.10(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)
'@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)
+ '@radix-ui/react-use-callback-ref': 1.1.4(@types/react@19.3.0)(react@19.3.0)
+ '@radix-ui/react-use-controllable-state': 1.2.6(@types/react@19.3.0)(react@19.3.0)
'@radix-ui/react-use-layout-effect': 1.1.4(@types/react@19.3.0)(react@19.3.0)
+ '@radix-ui/react-visually-hidden': 1.2.11(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)
react: 19.3.0
react-dom: 19.3.0(react@19.3.0)
optionalDependencies:
'@types/react': 19.3.0
'@types/react-dom': 19.3.0(@types/react@19.3.0)
- '@radix-ui/react-presence@1.1.10(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)':
+ '@radix-ui/react-toggle-group@1.1.19(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)':
dependencies:
- '@radix-ui/react-use-layout-effect': 1.1.4(@types/react@19.3.0)(react@19.3.0)
+ '@radix-ui/primitive': 1.1.7
+ '@radix-ui/react-context': 1.2.2(@types/react@19.3.0)(react@19.3.0)
+ '@radix-ui/react-direction': 1.1.4(@types/react@19.3.0)(react@19.3.0)
+ '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)
+ '@radix-ui/react-roving-focus': 1.1.19(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)
+ '@radix-ui/react-toggle': 1.1.18(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)
+ '@radix-ui/react-use-controllable-state': 1.2.6(@types/react@19.3.0)(react@19.3.0)
react: 19.3.0
react-dom: 19.3.0(react@19.3.0)
optionalDependencies:
'@types/react': 19.3.0
'@types/react-dom': 19.3.0(@types/react@19.3.0)
- '@radix-ui/react-primitive@2.1.10(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)':
+ '@radix-ui/react-toggle@1.1.18(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)':
dependencies:
- '@radix-ui/react-slot': 1.3.3(@types/react@19.3.0)(react@19.3.0)
+ '@radix-ui/primitive': 1.1.7
+ '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)
+ '@radix-ui/react-use-controllable-state': 1.2.6(@types/react@19.3.0)(react@19.3.0)
react: 19.3.0
react-dom: 19.3.0(react@19.3.0)
optionalDependencies:
'@types/react': 19.3.0
'@types/react-dom': 19.3.0(@types/react@19.3.0)
- '@radix-ui/react-slot@1.3.3(@types/react@19.3.0)(react@19.3.0)':
+ '@radix-ui/react-toolbar@1.1.19(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)':
dependencies:
+ '@radix-ui/primitive': 1.1.7
+ '@radix-ui/react-context': 1.2.2(@types/react@19.3.0)(react@19.3.0)
+ '@radix-ui/react-direction': 1.1.4(@types/react@19.3.0)(react@19.3.0)
+ '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)
+ '@radix-ui/react-roving-focus': 1.1.19(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)
+ '@radix-ui/react-separator': 1.1.15(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)
+ '@radix-ui/react-toggle-group': 1.1.19(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)
+ react: 19.3.0
+ react-dom: 19.3.0(react@19.3.0)
+ optionalDependencies:
+ '@types/react': 19.3.0
+ '@types/react-dom': 19.3.0(@types/react@19.3.0)
+
+ '@radix-ui/react-tooltip@1.2.16(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)':
+ dependencies:
+ '@radix-ui/primitive': 1.1.7
'@radix-ui/react-compose-refs': 1.1.5(@types/react@19.3.0)(react@19.3.0)
+ '@radix-ui/react-context': 1.2.2(@types/react@19.3.0)(react@19.3.0)
+ '@radix-ui/react-dismissable-layer': 1.1.19(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)
+ '@radix-ui/react-id': 1.1.4(@types/react@19.3.0)(react@19.3.0)
+ '@radix-ui/react-popper': 1.3.7(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)
+ '@radix-ui/react-portal': 1.1.17(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)
+ '@radix-ui/react-presence': 1.1.10(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)
+ '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)
+ '@radix-ui/react-slot': 1.3.3(@types/react@19.3.0)(react@19.3.0)
+ '@radix-ui/react-use-controllable-state': 1.2.6(@types/react@19.3.0)(react@19.3.0)
+ '@radix-ui/react-use-layout-effect': 1.1.4(@types/react@19.3.0)(react@19.3.0)
+ '@radix-ui/react-visually-hidden': 1.2.11(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)
react: 19.3.0
+ react-dom: 19.3.0(react@19.3.0)
optionalDependencies:
'@types/react': 19.3.0
+ '@types/react-dom': 19.3.0(@types/react@19.3.0)
'@radix-ui/react-use-callback-ref@1.1.4(@types/react@19.3.0)(react@19.3.0)':
dependencies:
@@ -9945,6 +11573,13 @@ snapshots:
optionalDependencies:
'@types/react': 19.3.0
+ '@radix-ui/react-use-escape-keydown@1.1.5(@types/react@19.3.0)(react@19.3.0)':
+ dependencies:
+ '@radix-ui/react-use-callback-ref': 1.1.4(@types/react@19.3.0)(react@19.3.0)
+ react: 19.3.0
+ optionalDependencies:
+ '@types/react': 19.3.0
+
'@radix-ui/react-use-is-hydrated@0.1.3(@types/react@19.3.0)(react@19.3.0)':
dependencies:
react: 19.3.0
@@ -9957,18 +11592,49 @@ snapshots:
optionalDependencies:
'@types/react': 19.3.0
+ '@radix-ui/react-use-previous@1.1.4(@types/react@19.3.0)(react@19.3.0)':
+ dependencies:
+ react: 19.3.0
+ optionalDependencies:
+ '@types/react': 19.3.0
+
+ '@radix-ui/react-use-rect@1.1.4(@types/react@19.3.0)(react@19.3.0)':
+ dependencies:
+ '@radix-ui/rect': 1.1.3
+ react: 19.3.0
+ optionalDependencies:
+ '@types/react': 19.3.0
+
+ '@radix-ui/react-use-size@1.1.4(@types/react@19.3.0)(react@19.3.0)':
+ dependencies:
+ '@radix-ui/react-use-layout-effect': 1.1.4(@types/react@19.3.0)(react@19.3.0)
+ react: 19.3.0
+ optionalDependencies:
+ '@types/react': 19.3.0
+
+ '@radix-ui/react-visually-hidden@1.2.11(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)':
+ dependencies:
+ '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)
+ react: 19.3.0
+ react-dom: 19.3.0(react@19.3.0)
+ optionalDependencies:
+ '@types/react': 19.3.0
+ '@types/react-dom': 19.3.0(@types/react@19.3.0)
+
+ '@radix-ui/rect@1.1.3': {}
+
'@react-aria/color@3.2.1(react-dom@19.3.0(react@19.3.0))(react@19.3.0)':
dependencies:
'@swc/helpers': 0.5.23
react: 19.3.0
- react-aria: 3.52.1(react-dom@19.3.0(react@19.3.0))(react@19.3.0)
+ react-aria: 3.51.0(react-dom@19.3.0(react@19.3.0))(react@19.3.0)
react-dom: 19.3.0(react@19.3.0)
'@react-aria/focus@3.22.1(react-dom@19.2.8(react@19.2.8))(react@19.2.8)':
dependencies:
'@swc/helpers': 0.5.23
react: 19.2.8
- react-aria: 3.52.0(react-dom@19.2.8(react@19.2.8))(react@19.2.8)
+ react-aria: 3.50.0(react-dom@19.2.8(react@19.2.8))(react@19.2.8)
react-dom: 19.2.8(react@19.2.8)
'@react-aria/interactions@3.28.1(react-dom@19.2.8(react@19.2.8))(react@19.2.8)':
@@ -9976,31 +11642,31 @@ snapshots:
'@react-types/shared': 3.36.1(react@19.2.8)
'@swc/helpers': 0.5.23
react: 19.2.8
- react-aria: 3.52.0(react-dom@19.2.8(react@19.2.8))(react@19.2.8)
+ react-aria: 3.50.0(react-dom@19.2.8(react@19.2.8))(react@19.2.8)
react-dom: 19.2.8(react@19.2.8)
'@react-aria/ssr@3.10.1(react-dom@19.3.0(react@19.3.0))(react@19.3.0)':
dependencies:
'@swc/helpers': 0.5.23
react: 19.3.0
- react-aria: 3.52.1(react-dom@19.3.0(react@19.3.0))(react@19.3.0)
+ react-aria: 3.51.0(react-dom@19.3.0(react@19.3.0))(react@19.3.0)
react-dom: 19.3.0(react@19.3.0)
'@react-aria/utils@3.34.1(react-dom@19.3.0(react@19.3.0))(react@19.3.0)':
dependencies:
'@swc/helpers': 0.5.23
react: 19.3.0
- react-aria: 3.52.1(react-dom@19.3.0(react@19.3.0))(react@19.3.0)
+ react-aria: 3.51.0(react-dom@19.3.0(react@19.3.0))(react@19.3.0)
react-dom: 19.3.0(react@19.3.0)
- react-stately: 3.50.0(react@19.3.0)
+ react-stately: 3.49.0(react@19.3.0)
'@react-spectrum/color@3.2.1(react-dom@19.3.0(react@19.3.0))(react@19.3.0)':
dependencies:
- '@adobe/react-spectrum': 3.47.5(react-dom@19.3.0(react@19.3.0))(react@19.3.0)
+ '@adobe/react-spectrum': 3.47.3(react-dom@19.3.0(react@19.3.0))(react@19.3.0)
'@swc/helpers': 0.5.23
react: 19.3.0
react-dom: 19.3.0(react@19.3.0)
- react-stately: 3.50.0(react@19.3.0)
+ react-stately: 3.49.0(react@19.3.0)
'@react-spectrum/provider@3.11.0(react-dom@19.3.0(react@19.3.0))(react@19.3.0)':
dependencies:
@@ -10014,14 +11680,14 @@ snapshots:
'@swc/helpers': 0.5.23
react: 19.3.0
react-dom: 19.3.0(react@19.3.0)
- react-stately: 3.50.0(react@19.3.0)
+ react-stately: 3.49.0(react@19.3.0)
'@react-stately/utils@3.12.1(react-dom@19.3.0(react@19.3.0))(react@19.3.0)':
dependencies:
'@swc/helpers': 0.5.23
react: 19.3.0
react-dom: 19.3.0(react@19.3.0)
- react-stately: 3.50.0(react@19.3.0)
+ react-stately: 3.49.0(react@19.3.0)
'@react-types/color@3.2.0(@react-spectrum/provider@3.11.0(react-dom@19.3.0(react@19.3.0))(react@19.3.0))(react-dom@19.3.0(react@19.3.0))(react@19.3.0)':
dependencies:
@@ -10042,78 +11708,78 @@ snapshots:
'@renovatebot/pep440@4.2.1': {}
- '@rolldown/binding-android-arm-eabi@1.2.10':
+ '@rolldown/binding-android-arm-eabi@1.2.11':
optional: true
'@rolldown/binding-android-arm64@1.0.0-rc.1':
optional: true
- '@rolldown/binding-android-arm64@1.2.10':
+ '@rolldown/binding-android-arm64@1.2.11':
optional: true
'@rolldown/binding-darwin-arm64@1.0.0-rc.1':
optional: true
- '@rolldown/binding-darwin-arm64@1.2.10':
+ '@rolldown/binding-darwin-arm64@1.2.11':
optional: true
'@rolldown/binding-darwin-x64@1.0.0-rc.1':
optional: true
- '@rolldown/binding-darwin-x64@1.2.10':
+ '@rolldown/binding-darwin-x64@1.2.11':
optional: true
'@rolldown/binding-freebsd-x64@1.0.0-rc.1':
optional: true
- '@rolldown/binding-freebsd-x64@1.2.10':
+ '@rolldown/binding-freebsd-x64@1.2.11':
optional: true
'@rolldown/binding-linux-arm-gnueabihf@1.0.0-rc.1':
optional: true
- '@rolldown/binding-linux-arm-gnueabihf@1.2.10':
+ '@rolldown/binding-linux-arm-gnueabihf@1.2.11':
optional: true
'@rolldown/binding-linux-arm64-gnu@1.0.0-rc.1':
optional: true
- '@rolldown/binding-linux-arm64-gnu@1.2.10':
+ '@rolldown/binding-linux-arm64-gnu@1.2.11':
optional: true
'@rolldown/binding-linux-arm64-musl@1.0.0-rc.1':
optional: true
- '@rolldown/binding-linux-arm64-musl@1.2.10':
+ '@rolldown/binding-linux-arm64-musl@1.2.11':
optional: true
- '@rolldown/binding-linux-ppc64-gnu@1.2.10':
+ '@rolldown/binding-linux-ppc64-gnu@1.2.11':
optional: true
- '@rolldown/binding-linux-s390x-gnu@1.2.10':
+ '@rolldown/binding-linux-s390x-gnu@1.2.11':
optional: true
'@rolldown/binding-linux-x64-gnu@1.0.0-rc.1':
optional: true
- '@rolldown/binding-linux-x64-gnu@1.2.10':
+ '@rolldown/binding-linux-x64-gnu@1.2.11':
optional: true
'@rolldown/binding-linux-x64-musl@1.0.0-rc.1':
optional: true
- '@rolldown/binding-linux-x64-musl@1.2.10':
+ '@rolldown/binding-linux-x64-musl@1.2.11':
optional: true
'@rolldown/binding-openharmony-arm64@1.0.0-rc.1':
optional: true
- '@rolldown/binding-openharmony-arm64@1.2.10':
+ '@rolldown/binding-openharmony-arm64@1.2.11':
optional: true
'@rolldown/binding-wasm32-wasi@1.0.0-rc.1(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.3)':
dependencies:
- '@napi-rs/wasm-runtime': 1.2.4(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.3)
+ '@napi-rs/wasm-runtime': 1.2.3(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.3)
transitivePeerDependencies:
- '@emnapi/core'
- '@emnapi/runtime'
@@ -10122,13 +11788,13 @@ snapshots:
'@rolldown/binding-win32-arm64-msvc@1.0.0-rc.1':
optional: true
- '@rolldown/binding-win32-arm64-msvc@1.2.10':
+ '@rolldown/binding-win32-arm64-msvc@1.2.11':
optional: true
'@rolldown/binding-win32-x64-msvc@1.0.0-rc.1':
optional: true
- '@rolldown/binding-win32-x64-msvc@1.2.10':
+ '@rolldown/binding-win32-x64-msvc@1.2.11':
optional: true
'@rolldown/pluginutils@1.0.0-rc.1': {}
@@ -10139,7 +11805,7 @@ snapshots:
dependencies:
'@types/estree': 1.0.9
estree-walker: 2.0.2
- picomatch: 4.0.7
+ picomatch: 4.0.5
optionalDependencies:
rollup: 4.62.2
@@ -10224,7 +11890,7 @@ snapshots:
dependencies:
'@shikijs/types': 3.23.0
'@shikijs/vscode-textmate': 10.0.2
- '@types/hast': 3.0.5
+ '@types/hast': 3.0.4
hast-util-to-html: 9.0.5
'@shikijs/engine-javascript@3.23.0':
@@ -10258,7 +11924,7 @@ snapshots:
'@shikijs/types@3.23.0':
dependencies:
'@shikijs/vscode-textmate': 10.0.2
- '@types/hast': 3.0.5
+ '@types/hast': 3.0.4
'@shikijs/vscode-textmate@10.0.2': {}
@@ -10271,7 +11937,7 @@ snapshots:
color: 5.0.3
text-hex: 1.0.0
- '@spectrum-icons/ui@3.7.2(@adobe/react-spectrum@3.47.0(react-dom@19.3.0(react@19.3.0))(react@19.3.0))(react-dom@19.3.0(react@19.3.0))(react@19.3.0)':
+ '@spectrum-icons/ui@3.7.1(@adobe/react-spectrum@3.47.0(react-dom@19.3.0(react@19.3.0))(react@19.3.0))(react-dom@19.3.0(react@19.3.0))(react@19.3.0)':
dependencies:
'@adobe/react-spectrum': 3.47.0(react-dom@19.3.0(react@19.3.0))(react@19.3.0)
'@adobe/react-spectrum-ui': 1.2.1(react-dom@19.3.0(react@19.3.0))(react@19.3.0)
@@ -10280,16 +11946,16 @@ snapshots:
react: 19.3.0
react-dom: 19.3.0(react@19.3.0)
- '@spectrum-icons/ui@3.7.2(@adobe/react-spectrum@3.47.5(react-dom@19.3.0(react@19.3.0))(react@19.3.0))(react-dom@19.3.0(react@19.3.0))(react@19.3.0)':
+ '@spectrum-icons/ui@3.7.1(@adobe/react-spectrum@3.47.3(react-dom@19.3.0(react@19.3.0))(react@19.3.0))(react-dom@19.3.0(react@19.3.0))(react@19.3.0)':
dependencies:
- '@adobe/react-spectrum': 3.47.5(react-dom@19.3.0(react@19.3.0))(react@19.3.0)
+ '@adobe/react-spectrum': 3.47.3(react-dom@19.3.0(react@19.3.0))(react@19.3.0)
'@adobe/react-spectrum-ui': 1.2.1(react-dom@19.3.0(react@19.3.0))(react@19.3.0)
'@babel/runtime': 7.29.7
'@swc/helpers': 0.5.23
react: 19.3.0
react-dom: 19.3.0(react@19.3.0)
- '@spectrum-icons/workflow@4.3.2(@adobe/react-spectrum@3.47.0(react-dom@19.3.0(react@19.3.0))(react@19.3.0))(react-dom@19.3.0(react@19.3.0))(react@19.3.0)':
+ '@spectrum-icons/workflow@4.3.1(@adobe/react-spectrum@3.47.0(react-dom@19.3.0(react@19.3.0))(react@19.3.0))(react-dom@19.3.0(react@19.3.0))(react@19.3.0)':
dependencies:
'@adobe/react-spectrum': 3.47.0(react-dom@19.3.0(react@19.3.0))(react@19.3.0)
'@adobe/react-spectrum-workflow': 2.3.5(react-dom@19.3.0(react@19.3.0))(react@19.3.0)
@@ -10297,9 +11963,9 @@ snapshots:
react: 19.3.0
react-dom: 19.3.0(react@19.3.0)
- '@spectrum-icons/workflow@4.3.2(@adobe/react-spectrum@3.47.5(react-dom@19.3.0(react@19.3.0))(react@19.3.0))(react-dom@19.3.0(react@19.3.0))(react@19.3.0)':
+ '@spectrum-icons/workflow@4.3.1(@adobe/react-spectrum@3.47.3(react-dom@19.3.0(react@19.3.0))(react@19.3.0))(react-dom@19.3.0(react@19.3.0))(react@19.3.0)':
dependencies:
- '@adobe/react-spectrum': 3.47.5(react-dom@19.3.0(react@19.3.0))(react@19.3.0)
+ '@adobe/react-spectrum': 3.47.3(react-dom@19.3.0(react@19.3.0))(react@19.3.0)
'@adobe/react-spectrum-workflow': 2.3.5(react-dom@19.3.0(react@19.3.0))(react@19.3.0)
'@swc/helpers': 0.5.23
react: 19.3.0
@@ -10314,7 +11980,7 @@ snapshots:
'@tailwindcss/node@4.3.3':
dependencies:
'@jridgewell/remapping': 2.3.5
- enhanced-resolve: 5.25.1
+ enhanced-resolve: 5.24.5
jiti: 2.7.0
lightningcss: 1.32.0
magic-string: 0.30.21
@@ -10374,19 +12040,19 @@ snapshots:
'@tailwindcss/postcss@4.3.3':
dependencies:
- '@alloc/quick-lru': 5.3.0
+ '@alloc/quick-lru': 5.2.0
'@tailwindcss/node': 4.3.3
'@tailwindcss/oxide': 4.3.3
postcss: 8.5.28
tailwindcss: 4.3.3
- '@tanstack/react-virtual@3.14.10(react-dom@19.2.8(react@19.2.8))(react@19.2.8)':
+ '@tanstack/react-virtual@3.14.4(react-dom@19.2.8(react@19.2.8))(react@19.2.8)':
dependencies:
- '@tanstack/virtual-core': 3.17.8
+ '@tanstack/virtual-core': 3.17.2
react: 19.2.8
react-dom: 19.2.8(react@19.2.8)
- '@tanstack/virtual-core@3.17.8': {}
+ '@tanstack/virtual-core@3.17.2': {}
'@testing-library/dom@10.4.1':
dependencies:
@@ -10409,7 +12075,7 @@ snapshots:
picocolors: 1.1.1
redent: 3.0.0
optionalDependencies:
- vitest: 4.1.11(@edge-runtime/vm@3.2.0)(@opentelemetry/api@1.9.1)(@types/node@26.6.2)(@vitest/coverage-v8@4.1.11)(jsdom@30.1.1)(vite@8.3.0(@types/node@26.6.2)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.15)(yaml@2.9.1))
+ vitest: 4.1.11(@edge-runtime/vm@3.2.0)(@opentelemetry/api@1.9.1)(@types/node@26.6.2)(@vitest/coverage-v8@4.1.11)(jsdom@30.1.1)(vite@8.3.1(@types/node@26.6.2)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.15)(yaml@2.9.0))
'@testing-library/react@16.3.3(@testing-library/dom@10.4.1)(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)':
dependencies:
@@ -10427,13 +12093,13 @@ snapshots:
'@theguild/remark-mermaid@0.3.0(react@19.2.8)':
dependencies:
- mermaid: 11.17.2
+ mermaid: 11.17.0
react: 19.2.8
unist-util-visit: 5.1.0
'@theguild/remark-npm2yarn@0.3.3':
dependencies:
- npm-to-yarn: 3.2.0
+ npm-to-yarn: 3.0.1
unist-util-visit: 5.1.0
'@tootallnate/once@2.0.1': {}
@@ -10453,7 +12119,7 @@ snapshots:
path-browserify: 1.0.1
tinyglobby: 0.2.17
- '@tybys/wasm-util@0.10.4':
+ '@tybys/wasm-util@0.10.3':
dependencies:
tslib: 2.8.1
optional: true
@@ -10504,7 +12170,7 @@ snapshots:
'@types/d3-format@3.0.4': {}
- '@types/d3-geo@3.1.1':
+ '@types/d3-geo@3.1.0':
dependencies:
'@types/geojson': 7946.0.16
@@ -10520,7 +12186,7 @@ snapshots:
'@types/d3-quadtree@3.0.6': {}
- '@types/d3-random@3.0.4': {}
+ '@types/d3-random@3.0.3': {}
'@types/d3-scale-chromatic@3.1.0': {}
@@ -10530,7 +12196,7 @@ snapshots:
'@types/d3-selection@3.0.11': {}
- '@types/d3-shape@3.2.0':
+ '@types/d3-shape@3.1.8':
dependencies:
'@types/d3-path': 3.1.1
@@ -10565,17 +12231,17 @@ snapshots:
'@types/d3-fetch': 3.0.7
'@types/d3-force': 3.0.10
'@types/d3-format': 3.0.4
- '@types/d3-geo': 3.1.1
+ '@types/d3-geo': 3.1.0
'@types/d3-hierarchy': 3.1.7
'@types/d3-interpolate': 3.0.4
'@types/d3-path': 3.1.1
'@types/d3-polygon': 3.0.2
'@types/d3-quadtree': 3.0.6
- '@types/d3-random': 3.0.4
+ '@types/d3-random': 3.0.3
'@types/d3-scale': 4.0.9
'@types/d3-scale-chromatic': 3.1.0
'@types/d3-selection': 3.0.11
- '@types/d3-shape': 3.2.0
+ '@types/d3-shape': 3.1.8
'@types/d3-time': 3.0.4
'@types/d3-time-format': 4.0.3
'@types/d3-timer': 3.0.2
@@ -10598,7 +12264,7 @@ snapshots:
'@types/geojson@7946.0.16': {}
- '@types/hast@3.0.5':
+ '@types/hast@3.0.4':
dependencies:
'@types/unist': 3.0.3
@@ -10624,6 +12290,10 @@ snapshots:
dependencies:
undici-types: 5.26.5
+ '@types/node@26.2.0':
+ dependencies:
+ undici-types: 8.3.0
+
'@types/node@26.4.1':
dependencies:
undici-types: 8.3.0
@@ -10632,6 +12302,8 @@ snapshots:
dependencies:
undici-types: 8.9.0
+ '@types/prismjs@1.26.6': {}
+
'@types/react-dom@19.2.5(@types/react@19.2.18)':
dependencies:
'@types/react': 19.2.18
@@ -10657,6 +12329,22 @@ snapshots:
'@types/unist@3.0.3': {}
+ '@typescript-eslint/eslint-plugin@8.67.0(@typescript-eslint/parser@8.67.0(eslint@10.11.0(jiti@2.7.0)(supports-color@7.2.0))(supports-color@7.2.0)(typescript@6.0.3))(eslint@10.11.0(jiti@2.7.0)(supports-color@7.2.0))(supports-color@7.2.0)(typescript@6.0.3)':
+ dependencies:
+ '@eslint-community/regexpp': 4.12.2
+ '@typescript-eslint/parser': 8.67.0(eslint@10.11.0(jiti@2.7.0)(supports-color@7.2.0))(supports-color@7.2.0)(typescript@6.0.3)
+ '@typescript-eslint/scope-manager': 8.67.0
+ '@typescript-eslint/type-utils': 8.67.0(eslint@10.11.0(jiti@2.7.0)(supports-color@7.2.0))(supports-color@7.2.0)(typescript@6.0.3)
+ '@typescript-eslint/utils': 8.67.0(eslint@10.11.0(jiti@2.7.0)(supports-color@7.2.0))(supports-color@7.2.0)(typescript@6.0.3)
+ '@typescript-eslint/visitor-keys': 8.67.0
+ eslint: 10.11.0(jiti@2.7.0)(supports-color@7.2.0)
+ ignore: 7.0.6
+ natural-compare: 1.4.0
+ ts-api-utils: 2.5.0(typescript@6.0.3)
+ typescript: 6.0.3
+ transitivePeerDependencies:
+ - supports-color
+
'@typescript-eslint/eslint-plugin@8.70.1(@typescript-eslint/parser@8.70.1(eslint@10.11.0(jiti@2.7.0)(supports-color@7.2.0))(supports-color@7.2.0)(typescript@6.0.3))(eslint@10.11.0(jiti@2.7.0)(supports-color@7.2.0))(supports-color@7.2.0)(typescript@6.0.3)':
dependencies:
'@eslint-community/regexpp': 4.12.2
@@ -10666,9 +12354,21 @@ snapshots:
'@typescript-eslint/utils': 8.70.1(eslint@10.11.0(jiti@2.7.0)(supports-color@7.2.0))(supports-color@7.2.0)(typescript@6.0.3)
'@typescript-eslint/visitor-keys': 8.70.1
eslint: 10.11.0(jiti@2.7.0)(supports-color@7.2.0)
- ignore: 7.0.10
- natural-compare: 1.4.0
- ts-api-utils: 2.5.0(typescript@6.0.3)
+ ignore: 7.0.6
+ natural-compare: 1.4.0
+ ts-api-utils: 2.5.0(typescript@6.0.3)
+ typescript: 6.0.3
+ transitivePeerDependencies:
+ - supports-color
+
+ '@typescript-eslint/parser@8.67.0(eslint@10.11.0(jiti@2.7.0)(supports-color@7.2.0))(supports-color@7.2.0)(typescript@6.0.3)':
+ dependencies:
+ '@typescript-eslint/scope-manager': 8.67.0
+ '@typescript-eslint/types': 8.67.0
+ '@typescript-eslint/typescript-estree': 8.67.0(supports-color@7.2.0)(typescript@6.0.3)
+ '@typescript-eslint/visitor-keys': 8.67.0
+ debug: 4.4.3(supports-color@7.2.0)
+ eslint: 10.11.0(jiti@2.7.0)(supports-color@7.2.0)
typescript: 6.0.3
transitivePeerDependencies:
- supports-color
@@ -10685,6 +12385,15 @@ snapshots:
transitivePeerDependencies:
- supports-color
+ '@typescript-eslint/project-service@8.67.0(supports-color@7.2.0)(typescript@6.0.3)':
+ dependencies:
+ '@typescript-eslint/tsconfig-utils': 8.67.0(typescript@6.0.3)
+ '@typescript-eslint/types': 8.67.0
+ debug: 4.4.3(supports-color@7.2.0)
+ typescript: 6.0.3
+ transitivePeerDependencies:
+ - supports-color
+
'@typescript-eslint/project-service@8.70.1(supports-color@7.2.0)(typescript@6.0.3)':
dependencies:
'@typescript-eslint/tsconfig-utils': 8.70.1(typescript@6.0.3)
@@ -10694,15 +12403,36 @@ snapshots:
transitivePeerDependencies:
- supports-color
+ '@typescript-eslint/scope-manager@8.67.0':
+ dependencies:
+ '@typescript-eslint/types': 8.67.0
+ '@typescript-eslint/visitor-keys': 8.67.0
+
'@typescript-eslint/scope-manager@8.70.1':
dependencies:
'@typescript-eslint/types': 8.70.1
'@typescript-eslint/visitor-keys': 8.70.1
+ '@typescript-eslint/tsconfig-utils@8.67.0(typescript@6.0.3)':
+ dependencies:
+ typescript: 6.0.3
+
'@typescript-eslint/tsconfig-utils@8.70.1(typescript@6.0.3)':
dependencies:
typescript: 6.0.3
+ '@typescript-eslint/type-utils@8.67.0(eslint@10.11.0(jiti@2.7.0)(supports-color@7.2.0))(supports-color@7.2.0)(typescript@6.0.3)':
+ dependencies:
+ '@typescript-eslint/types': 8.67.0
+ '@typescript-eslint/typescript-estree': 8.67.0(supports-color@7.2.0)(typescript@6.0.3)
+ '@typescript-eslint/utils': 8.67.0(eslint@10.11.0(jiti@2.7.0)(supports-color@7.2.0))(supports-color@7.2.0)(typescript@6.0.3)
+ debug: 4.4.3(supports-color@7.2.0)
+ eslint: 10.11.0(jiti@2.7.0)(supports-color@7.2.0)
+ ts-api-utils: 2.5.0(typescript@6.0.3)
+ typescript: 6.0.3
+ transitivePeerDependencies:
+ - supports-color
+
'@typescript-eslint/type-utils@8.70.1(eslint@10.11.0(jiti@2.7.0)(supports-color@7.2.0))(supports-color@7.2.0)(typescript@6.0.3)':
dependencies:
'@typescript-eslint/types': 8.70.1
@@ -10715,8 +12445,25 @@ snapshots:
transitivePeerDependencies:
- supports-color
+ '@typescript-eslint/types@8.67.0': {}
+
'@typescript-eslint/types@8.70.1': {}
+ '@typescript-eslint/typescript-estree@8.67.0(supports-color@7.2.0)(typescript@6.0.3)':
+ dependencies:
+ '@typescript-eslint/project-service': 8.67.0(supports-color@7.2.0)(typescript@6.0.3)
+ '@typescript-eslint/tsconfig-utils': 8.67.0(typescript@6.0.3)
+ '@typescript-eslint/types': 8.67.0
+ '@typescript-eslint/visitor-keys': 8.67.0
+ debug: 4.4.3(supports-color@7.2.0)
+ minimatch: 10.2.6
+ semver: 7.8.5
+ tinyglobby: 0.2.17
+ ts-api-utils: 2.5.0(typescript@6.0.3)
+ typescript: 6.0.3
+ transitivePeerDependencies:
+ - supports-color
+
'@typescript-eslint/typescript-estree@8.70.1(supports-color@7.2.0)(typescript@6.0.3)':
dependencies:
'@typescript-eslint/project-service': 8.70.1(supports-color@7.2.0)(typescript@6.0.3)
@@ -10732,6 +12479,17 @@ snapshots:
transitivePeerDependencies:
- supports-color
+ '@typescript-eslint/utils@8.67.0(eslint@10.11.0(jiti@2.7.0)(supports-color@7.2.0))(supports-color@7.2.0)(typescript@6.0.3)':
+ dependencies:
+ '@eslint-community/eslint-utils': 4.10.1(eslint@10.11.0(jiti@2.7.0)(supports-color@7.2.0))
+ '@typescript-eslint/scope-manager': 8.67.0
+ '@typescript-eslint/types': 8.67.0
+ '@typescript-eslint/typescript-estree': 8.67.0(supports-color@7.2.0)(typescript@6.0.3)
+ eslint: 10.11.0(jiti@2.7.0)(supports-color@7.2.0)
+ typescript: 6.0.3
+ transitivePeerDependencies:
+ - supports-color
+
'@typescript-eslint/utils@8.70.1(eslint@10.11.0(jiti@2.7.0)(supports-color@7.2.0))(supports-color@7.2.0)(typescript@6.0.3)':
dependencies:
'@eslint-community/eslint-utils': 4.10.1(eslint@10.11.0(jiti@2.7.0)(supports-color@7.2.0))
@@ -10743,6 +12501,11 @@ snapshots:
transitivePeerDependencies:
- supports-color
+ '@typescript-eslint/visitor-keys@8.67.0':
+ dependencies:
+ '@typescript-eslint/types': 8.67.0
+ eslint-visitor-keys: 5.0.1
+
'@typescript-eslint/visitor-keys@8.70.1':
dependencies:
'@typescript-eslint/types': 8.70.1
@@ -10755,7 +12518,7 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@ungap/structured-clone@1.4.0': {}
+ '@ungap/structured-clone@1.3.2': {}
'@unrs/resolver-binding-android-arm-eabi@1.12.2':
optional: true
@@ -10815,7 +12578,7 @@ snapshots:
dependencies:
'@emnapi/core': 1.10.0
'@emnapi/runtime': 1.10.0
- '@napi-rs/wasm-runtime': 1.2.4(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)
+ '@napi-rs/wasm-runtime': 1.2.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)
optional: true
'@unrs/resolver-binding-win32-arm64-msvc@1.12.2':
@@ -10862,12 +12625,12 @@ snapshots:
'@vercel/blob@2.8.0':
dependencies:
- '@vercel/oidc': 3.8.9
+ '@vercel/oidc': 3.8.5
async-retry: 1.3.3
is-buffer: 2.0.5
is-node-process: 1.2.0
throttleit: 2.1.0
- undici: 6.28.1
+ undici: 6.28.0
'@vercel/build-utils@14.11.0':
dependencies:
@@ -10893,6 +12656,11 @@ snapshots:
open: 8.4.0
zod: 4.1.11
+ '@vercel/cli-config@0.2.4':
+ dependencies:
+ xdg-app-paths: 5.5.1
+ zod: 4.1.11
+
'@vercel/cli-config@0.3.0':
dependencies:
xdg-app-paths: 5.5.1
@@ -10905,7 +12673,7 @@ snapshots:
'@vercel/container@9.0.0(@vercel/build-utils@14.11.0)':
dependencies:
'@vercel/build-utils': 14.11.0
- smol-toml: 1.9.0
+ smol-toml: 1.8.0
tar: 7.5.22
'@vercel/detect-agent@1.2.5': {}
@@ -11077,7 +12845,7 @@ snapshots:
glob: 13.0.6
graceful-fs: 4.2.11
node-gyp-build: 4.8.4
- picomatch: 4.0.7
+ picomatch: 4.0.5
resolve-from: 5.0.0
transitivePeerDependencies:
- encoding
@@ -11107,7 +12875,7 @@ snapshots:
ts-morph: 12.0.0
tsx: 4.21.0
typescript: 5.9.3
- undici: 6.28.1
+ undici: 6.28.0
transitivePeerDependencies:
- '@emnapi/core'
- '@emnapi/runtime'
@@ -11117,9 +12885,9 @@ snapshots:
'@vercel/oidc@3.2.0': {}
- '@vercel/oidc@3.8.9':
+ '@vercel/oidc@3.8.5':
dependencies:
- '@vercel/cli-config': 0.3.0
+ '@vercel/cli-config': 0.2.4
'@vercel/cli-exec': 1.0.1
jose: 5.10.0
@@ -11130,9 +12898,9 @@ snapshots:
'@bytecodealliance/preview2-shim': 0.17.6
'@renovatebot/pep440': 4.2.1
fs-extra: 11.1.1
- js-yaml: 4.3.2
+ js-yaml: 4.3.1
minimatch: 10.2.6
- smol-toml: 1.9.0
+ smol-toml: 1.8.0
zod: 3.22.4
'@vercel/python@15.0.0(@vercel/build-utils@14.11.0)':
@@ -11179,7 +12947,7 @@ snapshots:
'@vercel/build-utils': 14.11.0
execa: 5.1.1
get-port: 5.1.1
- smol-toml: 1.9.0
+ smol-toml: 1.8.0
'@vercel/sandbox@3.1.0':
dependencies:
@@ -11192,9 +12960,9 @@ snapshots:
ms: 2.1.3
picocolors: 1.1.1
tar-stream: 3.1.7
- undici: 6.28.1
+ undici: 6.28.0
xdg-app-paths: 5.1.0
- zod: 4.6.5
+ zod: 4.4.3
transitivePeerDependencies:
- bare-abort-controller
- react-native-b4a
@@ -11243,24 +13011,24 @@ snapshots:
'@vercel/vc-native-win32-x64@59.26.0':
optional: true
- '@vitejs/plugin-react@6.1.1(vite@8.3.0(@types/node@26.6.2)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.15)(yaml@2.9.1))':
+ '@vitejs/plugin-react@6.1.1(vite@8.3.1(@types/node@26.6.2)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.15)(yaml@2.9.0))':
dependencies:
'@rolldown/pluginutils': 1.0.1
- vite: 8.3.0(@types/node@26.6.2)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.15)(yaml@2.9.1)
+ vite: 8.3.1(@types/node@26.6.2)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.15)(yaml@2.9.0)
'@vitest/coverage-v8@4.1.11(vitest@4.1.11)':
dependencies:
'@bcoe/v8-coverage': 1.0.2
'@vitest/utils': 4.1.11
- ast-v8-to-istanbul: 1.0.7
+ ast-v8-to-istanbul: 1.0.5
istanbul-lib-coverage: 3.2.2
istanbul-lib-report: 3.0.1
istanbul-reports: 3.2.0
- magicast: 0.5.5
- obug: 2.2.1
+ magicast: 0.5.4
+ obug: 2.1.4
std-env: 4.2.0
tinyrainbow: 3.1.1
- vitest: 4.1.11(@edge-runtime/vm@3.2.0)(@opentelemetry/api@1.9.1)(@types/node@26.6.2)(@vitest/coverage-v8@4.1.11)(jsdom@30.1.1)(vite@8.3.0(@types/node@26.6.2)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.15)(yaml@2.9.1))
+ vitest: 4.1.11(@edge-runtime/vm@3.2.0)(@opentelemetry/api@1.9.1)(@types/node@26.6.2)(@vitest/coverage-v8@4.1.11)(jsdom@30.1.1)(vite@8.3.1(@types/node@26.6.2)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.15)(yaml@2.9.0))
'@vitest/expect@4.1.11':
dependencies:
@@ -11271,13 +13039,13 @@ snapshots:
chai: 6.2.2
tinyrainbow: 3.1.1
- '@vitest/mocker@4.1.11(vite@8.3.0(@types/node@26.6.2)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.15)(yaml@2.9.1))':
+ '@vitest/mocker@4.1.11(vite@8.3.1(@types/node@26.6.2)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.15)(yaml@2.9.0))':
dependencies:
'@vitest/spy': 4.1.11
estree-walker: 3.0.3
magic-string: 0.30.21
optionalDependencies:
- vite: 8.3.0(@types/node@26.6.2)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.15)(yaml@2.9.1)
+ vite: 8.3.1(@types/node@26.6.2)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.15)(yaml@2.9.0)
'@vitest/pretty-format@4.1.11':
dependencies:
@@ -11303,6 +13071,8 @@ snapshots:
convert-source-map: 2.0.0
tinyrainbow: 3.1.1
+ '@workflow/serde@4.1.0': {}
+
'@workflow/serde@4.1.0-beta.2': {}
'@xmldom/xmldom@0.9.12': {}
@@ -11330,6 +13100,10 @@ snapshots:
dependencies:
acorn: 8.18.0
+ acorn-jsx@5.3.2(acorn@8.17.0):
+ dependencies:
+ acorn: 8.17.0
+
acorn-jsx@5.3.2(acorn@8.18.0):
dependencies:
acorn: 8.18.0
@@ -11338,10 +13112,19 @@ snapshots:
dependencies:
acorn: 8.18.0
+ acorn@8.17.0: {}
+
acorn@8.18.0: {}
agent-base@7.1.4: {}
+ ai@7.0.77(zod@4.6.5):
+ dependencies:
+ '@ai-sdk/gateway': 4.0.62(zod@4.6.5)
+ '@ai-sdk/provider': 4.0.7
+ '@ai-sdk/provider-utils': 5.0.29(zod@4.6.5)
+ zod: 4.6.5
+
ajv-formats@2.1.1(ajv@8.20.0):
optionalDependencies:
ajv: 8.20.0
@@ -11360,7 +13143,7 @@ snapshots:
ajv@8.20.0:
dependencies:
fast-deep-equal: 3.1.3
- fast-uri: 3.1.8
+ fast-uri: 3.1.5
json-schema-traverse: 1.0.0
require-from-string: 2.0.2
@@ -11408,7 +13191,7 @@ snapshots:
buffer-crc32: 1.0.0
readable-stream: 4.7.0
readdir-glob: 1.1.3
- tar-stream: 3.2.1
+ tar-stream: 3.2.0
zip-stream: 6.0.1
transitivePeerDependencies:
- bare-abort-controller
@@ -11438,14 +13221,14 @@ snapshots:
array-flatten@1.1.1: {}
- array-includes@3.2.0:
+ array-includes@3.1.9:
dependencies:
call-bind: 1.0.9
call-bound: 1.0.4
define-properties: 1.2.1
es-abstract: 1.24.2
es-object-atoms: 1.1.2
- es-shim-unscopables: 1.1.0
+ get-intrinsic: 1.3.0
is-string: 1.1.1
math-intrinsics: 1.1.0
@@ -11508,13 +13291,26 @@ snapshots:
assertion-error@2.0.1: {}
+ assistant-cloud@0.1.41:
+ dependencies:
+ assistant-stream: 0.3.39
+ transitivePeerDependencies:
+ - ioredis
+ - redis
+
+ assistant-stream@0.3.39:
+ dependencies:
+ '@standard-schema/spec': 1.1.0
+ nanoid: 6.0.1
+ secure-json-parse: 4.1.0
+
ast-types-flow@0.0.8: {}
ast-types@0.13.4:
dependencies:
tslib: 2.8.1
- ast-v8-to-istanbul@1.0.7:
+ ast-v8-to-istanbul@1.0.5:
dependencies:
'@jridgewell/trace-mapping': 0.3.31
estree-walker: 3.0.3
@@ -11550,46 +13346,46 @@ snapshots:
axobject-query@4.1.0: {}
- b4a@1.9.0: {}
+ b4a@1.8.1: {}
bail@2.0.2: {}
balanced-match@4.0.4: {}
- bare-events@2.9.2: {}
+ bare-events@2.9.1: {}
- bare-fs@4.8.1:
+ bare-fs@4.8.0:
dependencies:
- bare-events: 2.9.2
- bare-path: 3.1.2
- bare-stream: 2.13.4(bare-events@2.9.2)
- bare-url: 2.5.4
+ bare-events: 2.9.1
+ bare-path: 3.1.1
+ bare-stream: 2.13.3(bare-events@2.9.1)
+ bare-url: 2.5.2
fast-fifo: 1.3.2
transitivePeerDependencies:
- bare-abort-controller
- react-native-b4a
- bare-path@3.1.2: {}
+ bare-path@3.1.1: {}
- bare-stream@2.13.4(bare-events@2.9.2):
+ bare-stream@2.13.3(bare-events@2.9.1):
dependencies:
- b4a: 1.9.0
- streamx: 2.28.1
+ b4a: 1.8.1
+ streamx: 2.28.0
teex: 1.0.1
optionalDependencies:
- bare-events: 2.9.2
+ bare-events: 2.9.1
transitivePeerDependencies:
- react-native-b4a
- bare-url@2.5.4:
+ bare-url@2.5.2:
dependencies:
- bare-path: 3.1.2
+ bare-path: 3.1.1
base64-js@1.5.1: {}
- baseline-browser-mapping@2.11.20: {}
+ baseline-browser-mapping@2.11.17: {}
- baseline-browser-mapping@2.11.25: {}
+ baseline-browser-mapping@2.11.26: {}
basic-auth-connect@1.1.0:
dependencies:
@@ -11624,7 +13420,7 @@ snapshots:
inherits: 2.0.4
readable-stream: 3.6.2
- body-parser@1.20.8(supports-color@7.2.0):
+ body-parser@1.20.6(supports-color@7.2.0):
dependencies:
bytes: 3.1.2
content-type: 1.0.5
@@ -11666,7 +13462,7 @@ snapshots:
widest-line: 3.1.0
wrap-ansi: 7.0.0
- brace-expansion@5.0.12:
+ brace-expansion@5.0.9:
dependencies:
balanced-match: 4.0.4
@@ -11674,13 +13470,13 @@ snapshots:
dependencies:
fill-range: 7.1.1
- browserslist@4.28.8:
+ browserslist@4.29.1:
dependencies:
- baseline-browser-mapping: 2.11.25
+ baseline-browser-mapping: 2.11.26
caniuse-lite: 1.0.30001812
- electron-to-chromium: 1.5.421
- node-releases: 2.0.54
- update-browserslist-db: 1.3.2(browserslist@4.28.8)
+ electron-to-chromium: 1.5.439
+ node-releases: 2.0.57
+ update-browserslist-db: 1.3.3(browserslist@4.29.1)
buffer-crc32@0.2.13: {}
@@ -11733,7 +13529,7 @@ snapshots:
camelcase@6.3.0: {}
- caniuse-lite@1.0.30001810: {}
+ caniuse-lite@1.0.30001809: {}
caniuse-lite@1.0.30001812: {}
@@ -11786,6 +13582,8 @@ snapshots:
dependencies:
json-parse-helpfulerror: 1.0.3
+ classnames@2.5.1: {}
+
cli-boxes@2.2.1: {}
cli-cursor@3.1.0:
@@ -11906,12 +13704,11 @@ snapshots:
dependencies:
mime-db: 1.54.0
- compression@1.8.2(supports-color@7.2.0):
+ compression@1.8.1(supports-color@7.2.0):
dependencies:
bytes: 3.1.2
compressible: 2.0.18
debug: 2.6.9(supports-color@7.2.0)
- destroy: 1.2.0
negotiator: 0.6.4
on-headers: 1.1.0
safe-buffer: 5.2.1
@@ -12011,19 +13808,19 @@ snapshots:
csstype@3.2.3: {}
- csv-parse@7.0.2: {}
+ csv-parse@7.0.3: {}
- cytoscape-cose-bilkent@4.1.0(cytoscape@3.34.2):
+ cytoscape-cose-bilkent@4.1.0(cytoscape@3.34.0):
dependencies:
cose-base: 1.0.3
- cytoscape: 3.34.2
+ cytoscape: 3.34.0
- cytoscape-fcose@2.2.0(cytoscape@3.34.2):
+ cytoscape-fcose@2.2.0(cytoscape@3.34.0):
dependencies:
cose-base: 2.2.0
- cytoscape: 3.34.2
+ cytoscape: 3.34.0
- cytoscape@3.34.2: {}
+ cytoscape@3.34.0: {}
d3-array@2.12.1:
dependencies:
@@ -12228,7 +14025,7 @@ snapshots:
es-errors: 1.3.0
is-data-view: 1.0.2
- dayjs@1.11.23: {}
+ dayjs@1.11.21: {}
debounce@1.2.1: {}
@@ -12378,7 +14175,7 @@ snapshots:
ee-first@1.1.1: {}
- electron-to-chromium@1.5.421: {}
+ electron-to-chromium@1.5.439: {}
emoji-regex@8.0.0: {}
@@ -12400,14 +14197,14 @@ snapshots:
dependencies:
once: 1.4.0
- enhanced-resolve@5.25.1:
+ enhanced-resolve@5.24.5:
dependencies:
graceful-fs: 4.2.11
tapable: 2.3.3
entities@6.0.1: {}
- entities@8.1.0: {}
+ entities@8.0.0: {}
env-paths@2.2.1:
optional: true
@@ -12473,10 +14270,10 @@ snapshots:
string.prototype.trimstart: 1.0.8
typed-array-buffer: 1.0.3
typed-array-byte-length: 1.0.3
- typed-array-byte-offset: 1.0.5
+ typed-array-byte-offset: 1.0.4
typed-array-length: 1.0.8
unbox-primitive: 1.1.0
- which-typed-array: 1.1.24
+ which-typed-array: 1.1.22
es-define-property@1.0.1: {}
@@ -12531,7 +14328,7 @@ snapshots:
is-date-object: 1.1.0
is-symbol: 1.1.1
- es-toolkit@1.52.0: {}
+ es-toolkit@1.49.0: {}
esast-util-from-estree@2.0.0:
dependencies:
@@ -12605,7 +14402,7 @@ snapshots:
eslint-plugin-react: 7.37.5(eslint@10.11.0(jiti@2.7.0)(supports-color@7.2.0))
eslint-plugin-react-hooks: 7.1.1(eslint@10.11.0(jiti@2.7.0)(supports-color@7.2.0))(supports-color@7.2.0)
globals: 16.4.0
- typescript-eslint: 8.70.1(eslint@10.11.0(jiti@2.7.0)(supports-color@7.2.0))(supports-color@7.2.0)(typescript@6.0.3)
+ typescript-eslint: 8.67.0(eslint@10.11.0(jiti@2.7.0)(supports-color@7.2.0))(supports-color@7.2.0)(typescript@6.0.3)
optionalDependencies:
typescript: 6.0.3
transitivePeerDependencies:
@@ -12617,7 +14414,7 @@ snapshots:
eslint-import-resolver-node@0.3.10(supports-color@7.2.0):
dependencies:
debug: 3.2.7(supports-color@7.2.0)
- is-core-module: 2.17.0
+ is-core-module: 2.16.2
resolve: 2.0.0-next.7
transitivePeerDependencies:
- supports-color
@@ -12651,7 +14448,7 @@ snapshots:
eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.70.1(eslint@10.11.0(jiti@2.7.0)(supports-color@7.2.0))(supports-color@7.2.0)(typescript@6.0.3))(eslint-import-resolver-typescript@3.10.1)(eslint@10.11.0(jiti@2.7.0)(supports-color@7.2.0))(supports-color@7.2.0):
dependencies:
'@rtsao/scc': 1.1.0
- array-includes: 3.2.0
+ array-includes: 3.1.9
array.prototype.findlastindex: 1.2.6
array.prototype.flat: 1.3.3
array.prototype.flatmap: 1.3.3
@@ -12661,7 +14458,7 @@ snapshots:
eslint-import-resolver-node: 0.3.10(supports-color@7.2.0)
eslint-module-utils: 2.14.0(@typescript-eslint/parser@8.70.1(eslint@10.11.0(jiti@2.7.0)(supports-color@7.2.0))(supports-color@7.2.0)(typescript@6.0.3))(eslint-import-resolver-node@0.3.10(supports-color@7.2.0))(eslint-import-resolver-typescript@3.10.1)(eslint@10.11.0(jiti@2.7.0)(supports-color@7.2.0))(supports-color@7.2.0)
hasown: 2.0.4
- is-core-module: 2.17.0
+ is-core-module: 2.16.2
is-glob: 4.0.3
minimatch: 10.2.6
object.fromentries: 2.0.8
@@ -12680,7 +14477,7 @@ snapshots:
eslint-plugin-jsx-a11y@6.10.2(eslint@10.11.0(jiti@2.7.0)(supports-color@7.2.0)):
dependencies:
aria-query: 5.3.2
- array-includes: 3.2.0
+ array-includes: 3.1.9
array.prototype.flatmap: 1.3.3
ast-types-flow: 0.0.8
axe-core: 4.13.0
@@ -12699,17 +14496,17 @@ snapshots:
eslint-plugin-react-hooks@7.1.1(eslint@10.11.0(jiti@2.7.0)(supports-color@7.2.0))(supports-color@7.2.0):
dependencies:
'@babel/core': 7.29.7(supports-color@7.2.0)
- '@babel/parser': 7.29.9
+ '@babel/parser': 7.29.8
eslint: 10.11.0(jiti@2.7.0)(supports-color@7.2.0)
hermes-parser: 0.25.1
- zod: 4.6.5
- zod-validation-error: 4.0.2(zod@4.6.5)
+ zod: 4.4.3
+ zod-validation-error: 4.0.2(zod@4.4.3)
transitivePeerDependencies:
- supports-color
eslint-plugin-react@7.37.5(eslint@10.11.0(jiti@2.7.0)(supports-color@7.2.0)):
dependencies:
- array-includes: 3.2.0
+ array-includes: 3.1.9
array.prototype.findlast: 1.2.5
array.prototype.flatmap: 1.3.3
array.prototype.tosorted: 1.1.4
@@ -12726,7 +14523,7 @@ snapshots:
prop-types: 15.8.1
resolve: 2.0.0-next.7
semver: 6.3.1
- string.prototype.matchall: 4.1.0
+ string.prototype.matchall: 4.0.12
string.prototype.repeat: 1.0.0
eslint-scope@9.1.2:
@@ -12818,7 +14615,7 @@ snapshots:
estree-util-is-identifier-name@3.0.0: {}
- estree-util-scope@1.0.1:
+ estree-util-scope@1.0.0:
dependencies:
'@types/estree': 1.0.9
devlop: 1.1.0
@@ -12856,7 +14653,7 @@ snapshots:
events-universal@1.0.1:
dependencies:
- bare-events: 2.9.2
+ bare-events: 2.9.1
transitivePeerDependencies:
- bare-abort-controller
@@ -12916,7 +14713,7 @@ snapshots:
'@apidevtools/json-schema-ref-parser': 9.1.2
ajv: 8.20.0
ajv-formats: 2.1.1(ajv@8.20.0)
- body-parser: 1.20.8(supports-color@7.2.0)
+ body-parser: 1.20.6(supports-color@7.2.0)
content-type: 1.0.5
deep-freeze: 0.0.1
events-listener: 1.1.0
@@ -12937,19 +14734,19 @@ snapshots:
exponential-backoff@3.1.3:
optional: true
- express-rate-limit@8.7.0(express@5.2.1(supports-color@7.2.0))(supports-color@7.2.0):
+ express-rate-limit@8.6.2(express@5.2.1(supports-color@7.2.0))(supports-color@7.2.0):
dependencies:
debug: 4.4.3(supports-color@7.2.0)
express: 5.2.1(supports-color@7.2.0)
- ip-address: 10.7.2
+ ip-address: 10.5.0
transitivePeerDependencies:
- supports-color
- express@4.22.3(supports-color@7.2.0):
+ express@4.22.2(supports-color@7.2.0):
dependencies:
accepts: 1.3.8
array-flatten: 1.1.1
- body-parser: 1.20.8(supports-color@7.2.0)
+ body-parser: 1.20.6(supports-color@7.2.0)
content-disposition: 0.5.4
content-type: 1.0.5
cookie: 0.7.2
@@ -12967,7 +14764,7 @@ snapshots:
on-finished: 2.4.1
parseurl: 1.3.3
path-to-regexp: 8.4.2
- proxy-addr: 2.0.8
+ proxy-addr: 2.0.7
qs: 6.16.0
range-parser: 1.2.1
safe-buffer: 5.2.1
@@ -13002,7 +14799,7 @@ snapshots:
on-finished: 2.4.1
once: 1.4.0
parseurl: 1.3.3
- proxy-addr: 2.0.8
+ proxy-addr: 2.0.7
qs: 6.16.0
range-parser: 1.3.0
router: 2.2.0(supports-color@7.2.0)
@@ -13040,16 +14837,20 @@ snapshots:
fast-levenshtein@2.0.6: {}
- fast-uri@3.1.8: {}
+ fast-uri@3.1.5: {}
fastdom@1.0.12:
dependencies:
strictdom: 1.0.1
- fastq@1.20.3:
+ fastq@1.20.1:
dependencies:
reusify: 1.1.0
+ fault@1.0.4:
+ dependencies:
+ format: 0.2.2
+
fault@2.0.1:
dependencies:
format: 0.2.2
@@ -13058,9 +14859,9 @@ snapshots:
dependencies:
pend: 1.2.0
- fdir@6.5.0(picomatch@4.0.7):
+ fdir@6.5.0(picomatch@4.0.5):
optionalDependencies:
- picomatch: 4.0.7
+ picomatch: 4.0.5
fecha@4.2.3: {}
@@ -13124,16 +14925,16 @@ snapshots:
'@apphosting/common': 0.0.8
'@electric-sql/pglite': 0.3.16
'@electric-sql/pglite-tools': 0.2.21(@electric-sql/pglite@0.3.16)
- '@google-cloud/cloud-sql-connector': 1.12.0(supports-color@7.2.0)
+ '@google-cloud/cloud-sql-connector': 1.11.3(supports-color@7.2.0)
'@google-cloud/pubsub': 5.3.1(supports-color@7.2.0)
'@inquirer/prompts': 7.10.1(@types/node@26.6.2)
- '@modelcontextprotocol/sdk': 1.30.1(supports-color@7.2.0)(zod@4.6.5)
+ '@modelcontextprotocol/sdk': 1.30.0(supports-color@7.2.0)(zod@4.4.3)
abort-controller: 3.0.0
ajv: 8.20.0
ajv-formats: 3.0.1(ajv@8.20.0)
archiver: 7.0.1
async-lock: 1.4.1
- body-parser: 1.20.8(supports-color@7.2.0)
+ body-parser: 1.20.6(supports-color@7.2.0)
chokidar: 3.6.0
cjson: 0.3.3
cli-table3: 0.6.5
@@ -13143,18 +14944,18 @@ snapshots:
cors: 2.8.6
cross-env: 7.0.3
cross-spawn: 7.0.6
- csv-parse: 7.0.2
+ csv-parse: 7.0.3
exegesis: 4.3.0(supports-color@7.2.0)
exegesis-express: 4.0.0(supports-color@7.2.0)
- express: 4.22.3(supports-color@7.2.0)
+ express: 4.22.2(supports-color@7.2.0)
form-data: 4.0.6
fs-extra: 10.1.0
fuzzy: 0.1.3
gaxios: 6.7.1(supports-color@7.2.0)
glob: 10.5.0
google-auth-library: 9.15.1(supports-color@7.2.0)
- ignore: 7.0.10
- js-yaml: 4.3.2
+ ignore: 7.0.6
+ js-yaml: 4.3.1
jsonwebtoken: 9.0.3
libsodium-wrappers: 0.7.16
lodash: 4.18.1
@@ -13163,7 +14964,7 @@ snapshots:
marked-terminal: 7.3.0(marked@13.0.3)
mime: 2.6.0
minimatch: 10.2.6
- morgan: 1.12.1(supports-color@7.2.0)
+ morgan: 1.11.0(supports-color@7.2.0)
node-fetch: 2.7.0
open: 6.4.0
ora: 5.4.1
@@ -13175,7 +14976,7 @@ snapshots:
proxy-agent: 6.5.0(supports-color@7.2.0)
retry: 0.13.1
semver: 7.8.5
- sql-formatter: 15.9.0
+ sql-formatter: 15.8.2
stream-chain: 4.2.5
stream-json: 3.7.0
superstatic: 10.0.0(supports-color@7.2.0)
@@ -13183,14 +14984,14 @@ snapshots:
tcp-port-used: 1.0.3(supports-color@7.2.0)
tmp: 0.2.7
triple-beam: 1.4.1
- undici: 6.28.1
+ undici: 6.28.0
universal-analytics: 0.5.4(supports-color@7.2.0)
update-notifier-cjs: 5.1.7
winston: 3.19.0
winston-transport: 4.9.0
ws: 8.21.3
- yaml: 2.9.1
- zod: 4.6.5
+ yaml: 2.9.0
+ zod: 4.4.3
transitivePeerDependencies:
- '@cfworker/json-schema'
- '@types/node'
@@ -13240,7 +15041,7 @@ snapshots:
framer-motion@13.2.0(react-dom@19.2.8(react@19.2.8))(react@19.2.8):
dependencies:
- motion-dom: 13.2.0
+ motion-dom: 13.4.4
motion-utils: 13.0.0
tslib: 2.8.1
optionalDependencies:
@@ -13249,7 +15050,7 @@ snapshots:
framer-motion@13.4.3(react-dom@19.3.0(react@19.3.0))(react@19.3.0):
dependencies:
- motion-dom: 13.4.2
+ motion-dom: 13.4.4
motion-utils: 13.3.0
tslib: 2.8.1
optionalDependencies:
@@ -13327,14 +15128,6 @@ snapshots:
transitivePeerDependencies:
- supports-color
- gaxios@8.1.0(supports-color@7.2.0):
- dependencies:
- extend: 3.0.2
- https-proxy-agent: 7.0.6(supports-color@7.2.0)
- node-fetch: 3.3.2
- transitivePeerDependencies:
- - supports-color
-
gcp-metadata@6.1.1(supports-color@7.2.0):
dependencies:
gaxios: 6.7.1(supports-color@7.2.0)
@@ -13360,14 +15153,6 @@ snapshots:
transitivePeerDependencies:
- supports-color
- gcp-metadata@9.0.4(supports-color@7.2.0):
- dependencies:
- gaxios: 7.3.1(supports-color@7.2.0)
- google-logging-utils: 2.0.1
- json-bigint: 1.0.0
- transitivePeerDependencies:
- - supports-color
-
generator-function@2.0.1: {}
generic-pool@3.4.2: {}
@@ -13495,17 +15280,6 @@ snapshots:
transitivePeerDependencies:
- supports-color
- google-auth-library@11.1.0(supports-color@7.2.0):
- dependencies:
- base64-js: 1.5.1
- ecdsa-sig-formatter: 1.0.11
- gaxios: 7.3.1(supports-color@7.2.0)
- gcp-metadata: 9.0.4(supports-color@7.2.0)
- google-logging-utils: 2.0.1
- jws: 4.0.1
- transitivePeerDependencies:
- - supports-color
-
google-auth-library@9.15.1(supports-color@7.2.0):
dependencies:
base64-js: 1.5.1
@@ -13520,7 +15294,7 @@ snapshots:
google-gax@5.0.8(supports-color@7.2.0):
dependencies:
- '@grpc/grpc-js': 1.14.5
+ '@grpc/grpc-js': 1.14.4
'@grpc/proto-loader': 0.8.1
duplexify: 4.1.3
google-auth-library: 10.5.0(supports-color@7.2.0)
@@ -13528,7 +15302,7 @@ snapshots:
node-fetch: 3.3.2
object-hash: 3.0.0
proto3-json-serializer: 3.0.4
- protobufjs: 7.6.6
+ protobufjs: 7.6.5
retry-request: 8.0.4(supports-color@7.2.0)
rimraf: 5.0.10
transitivePeerDependencies:
@@ -13540,14 +15314,12 @@ snapshots:
google-logging-utils@1.2.0: {}
- google-logging-utils@2.0.1: {}
-
- googleapis-common@9.1.0(supports-color@7.2.0):
+ googleapis-common@8.0.3(supports-color@7.2.0):
dependencies:
extend: 3.0.2
- gaxios: 7.3.1(supports-color@7.2.0)
- google-auth-library: 11.1.0(supports-color@7.2.0)
- google-logging-utils: 2.0.1
+ gaxios: 7.1.3(supports-color@7.2.0)
+ google-auth-library: 10.5.0(supports-color@7.2.0)
+ google-logging-utils: 1.1.3
qs: 6.16.0
url-template: 2.0.8
transitivePeerDependencies:
@@ -13610,20 +15382,20 @@ snapshots:
hast-util-from-dom@5.0.1:
dependencies:
- '@types/hast': 3.0.5
+ '@types/hast': 3.0.4
hastscript: 9.0.1
web-namespaces: 2.0.1
hast-util-from-html-isomorphic@2.0.0:
dependencies:
- '@types/hast': 3.0.5
+ '@types/hast': 3.0.4
hast-util-from-dom: 5.0.1
hast-util-from-html: 2.0.3
unist-util-remove-position: 5.0.0
hast-util-from-html@2.0.3:
dependencies:
- '@types/hast': 3.0.5
+ '@types/hast': 3.0.4
devlop: 1.1.0
hast-util-from-parse5: 8.0.3
parse5: 7.3.0
@@ -13632,7 +15404,7 @@ snapshots:
hast-util-from-parse5@8.0.3:
dependencies:
- '@types/hast': 3.0.5
+ '@types/hast': 3.0.4
'@types/unist': 3.0.3
devlop: 1.1.0
hastscript: 9.0.1
@@ -13643,17 +15415,17 @@ snapshots:
hast-util-is-element@3.0.0:
dependencies:
- '@types/hast': 3.0.5
+ '@types/hast': 3.0.4
hast-util-parse-selector@4.0.0:
dependencies:
- '@types/hast': 3.0.5
+ '@types/hast': 3.0.4
hast-util-raw@9.1.0:
dependencies:
- '@types/hast': 3.0.5
+ '@types/hast': 3.0.4
'@types/unist': 3.0.3
- '@ungap/structured-clone': 1.4.0
+ '@ungap/structured-clone': 1.3.2
hast-util-from-parse5: 8.0.3
hast-util-to-parse5: 8.0.1
html-void-elements: 3.0.0
@@ -13669,7 +15441,7 @@ snapshots:
dependencies:
'@types/estree': 1.0.9
'@types/estree-jsx': 1.0.5
- '@types/hast': 3.0.5
+ '@types/hast': 3.0.4
comma-separated-tokens: 2.0.3
devlop: 1.1.0
estree-util-attach-comments: 3.0.0
@@ -13688,7 +15460,7 @@ snapshots:
hast-util-to-html@9.0.5:
dependencies:
- '@types/hast': 3.0.5
+ '@types/hast': 3.0.4
'@types/unist': 3.0.3
ccount: 2.0.1
comma-separated-tokens: 2.0.3
@@ -13703,7 +15475,7 @@ snapshots:
hast-util-to-jsx-runtime@2.3.6(supports-color@7.2.0):
dependencies:
'@types/estree': 1.0.9
- '@types/hast': 3.0.5
+ '@types/hast': 3.0.4
'@types/unist': 3.0.3
comma-separated-tokens: 2.0.3
devlop: 1.1.0
@@ -13722,7 +15494,7 @@ snapshots:
hast-util-to-parse5@8.0.1:
dependencies:
- '@types/hast': 3.0.5
+ '@types/hast': 3.0.4
comma-separated-tokens: 2.0.3
devlop: 1.1.0
property-information: 7.2.0
@@ -13732,22 +15504,22 @@ snapshots:
hast-util-to-string@3.0.1:
dependencies:
- '@types/hast': 3.0.5
+ '@types/hast': 3.0.4
hast-util-to-text@4.0.2:
dependencies:
- '@types/hast': 3.0.5
+ '@types/hast': 3.0.4
'@types/unist': 3.0.3
hast-util-is-element: 3.0.0
unist-util-find-after: 5.0.0
hast-util-whitespace@3.0.0:
dependencies:
- '@types/hast': 3.0.5
+ '@types/hast': 3.0.4
hastscript@9.0.1:
dependencies:
- '@types/hast': 3.0.5
+ '@types/hast': 3.0.4
comma-separated-tokens: 2.0.3
hast-util-parse-selector: 4.0.0
property-information: 7.2.0
@@ -13763,7 +15535,9 @@ snapshots:
highlight.js@10.7.3: {}
- hono@4.13.9: {}
+ highlightjs-vue@1.0.0: {}
+
+ hono@4.13.3: {}
hookified@1.15.1: {}
@@ -13771,12 +15545,14 @@ snapshots:
html-encoding-sniffer@7.0.0:
dependencies:
- '@exodus/bytes': 1.16.0
+ '@exodus/bytes': 1.15.1
transitivePeerDependencies:
- '@noble/hashes'
html-escaper@2.0.2: {}
+ html-url-attributes@3.0.1: {}
+
html-void-elements@3.0.0: {}
http-errors@1.7.3:
@@ -13831,7 +15607,7 @@ snapshots:
ignore@5.3.2: {}
- ignore@7.0.10: {}
+ ignore@7.0.6: {}
import-fresh@3.3.1:
dependencies:
@@ -13859,7 +15635,7 @@ snapshots:
react: 19.3.0
react-dom: 19.3.0(react@19.3.0)
- install-artifact-from-github@1.8.1:
+ install-artifact-from-github@1.8.0:
optional: true
internal-slot@1.1.0:
@@ -13872,7 +15648,7 @@ snapshots:
internmap@2.0.3: {}
- ip-address@10.7.2: {}
+ ip-address@10.5.0: {}
ip-regex@2.1.0: {}
@@ -13924,7 +15700,7 @@ snapshots:
dependencies:
ci-info: 2.0.0
- is-core-module@2.17.0:
+ is-core-module@2.16.2:
dependencies:
hasown: 2.0.4
@@ -14041,7 +15817,7 @@ snapshots:
is-typed-array@1.1.15:
dependencies:
- which-typed-array: 1.1.24
+ which-typed-array: 1.1.22
is-typedarray@1.0.0: {}
@@ -14140,7 +15916,7 @@ snapshots:
jose@5.9.6: {}
- jose@6.2.12: {}
+ jose@6.2.10: {}
jose@6.2.3: {}
@@ -14148,7 +15924,7 @@ snapshots:
js-tokens@4.0.0: {}
- js-yaml@4.3.2:
+ js-yaml@4.3.1:
dependencies:
argparse: 2.0.1
@@ -14158,17 +15934,17 @@ snapshots:
'@asamuzakjp/dom-selector': 9.2.1
'@bramus/specificity': 2.4.2
'@csstools/css-syntax-patches-for-csstree': 1.1.14(css-tree@3.2.1)
- '@exodus/bytes': 1.16.0
+ '@exodus/bytes': 1.15.1
css-tree: 3.2.1
data-urls: 7.0.0
decimal.js: 10.6.0
html-encoding-sniffer: 7.0.0
is-potential-custom-element-name: 1.0.1
- lru-cache: 11.5.3
+ lru-cache: 11.5.2
parse5: 8.0.1
saxes: 6.0.0
tough-cookie: 6.0.2
- undici: 6.28.1
+ undici: 6.28.0
w3c-xmlserializer: 6.0.0
webidl-conversions: 8.0.1
whatwg-mimetype: 5.0.0
@@ -14200,6 +15976,8 @@ snapshots:
json-schema-typed@8.0.2: {}
+ json-schema@0.4.0: {}
+
json-stable-stringify-without-jsonify@1.0.1: {}
json5@1.0.2:
@@ -14233,7 +16011,7 @@ snapshots:
jsx-ast-utils@3.3.5:
dependencies:
- array-includes: 3.2.0
+ array-includes: 3.1.9
array.prototype.flat: 1.3.3
object.assign: 4.1.7
object.values: 1.2.1
@@ -14438,8 +16216,15 @@ snapshots:
dependencies:
js-tokens: 4.0.0
+ lowlight@1.20.0:
+ dependencies:
+ fault: 1.0.4
+ highlight.js: 10.7.3
+
lru-cache@10.4.3: {}
+ lru-cache@11.5.2: {}
+
lru-cache@11.5.3: {}
lru-cache@5.1.1:
@@ -14464,11 +16249,11 @@ snapshots:
magic-string@0.30.21:
dependencies:
- '@jridgewell/sourcemap-codec': 1.6.0
+ '@jridgewell/sourcemap-codec': 1.5.5
- magicast@0.5.5:
+ magicast@0.5.4:
dependencies:
- '@babel/parser': 7.29.9
+ '@babel/parser': 7.29.8
'@babel/types': 7.29.8
source-map-js: 1.2.1
@@ -14602,7 +16387,7 @@ snapshots:
mdast-util-math@3.0.0(supports-color@7.2.0):
dependencies:
- '@types/hast': 3.0.5
+ '@types/hast': 3.0.4
'@types/mdast': 4.0.4
devlop: 1.1.0
longest-streak: 3.1.0
@@ -14615,7 +16400,7 @@ snapshots:
mdast-util-mdx-expression@2.0.1(supports-color@7.2.0):
dependencies:
'@types/estree-jsx': 1.0.5
- '@types/hast': 3.0.5
+ '@types/hast': 3.0.4
'@types/mdast': 4.0.4
devlop: 1.1.0
mdast-util-from-markdown: 2.0.3(supports-color@7.2.0)
@@ -14626,7 +16411,7 @@ snapshots:
mdast-util-mdx-jsx@3.2.0(supports-color@7.2.0):
dependencies:
'@types/estree-jsx': 1.0.5
- '@types/hast': 3.0.5
+ '@types/hast': 3.0.4
'@types/mdast': 4.0.4
'@types/unist': 3.0.3
ccount: 2.0.1
@@ -14653,7 +16438,7 @@ snapshots:
mdast-util-mdxjs-esm@2.0.1(supports-color@7.2.0):
dependencies:
'@types/estree-jsx': 1.0.5
- '@types/hast': 3.0.5
+ '@types/hast': 3.0.4
'@types/mdast': 4.0.4
devlop: 1.1.0
mdast-util-from-markdown: 2.0.3(supports-color@7.2.0)
@@ -14668,9 +16453,9 @@ snapshots:
mdast-util-to-hast@13.2.1:
dependencies:
- '@types/hast': 3.0.5
+ '@types/hast': 3.0.4
'@types/mdast': 4.0.4
- '@ungap/structured-clone': 1.4.0
+ '@ungap/structured-clone': 1.3.2
devlop: 1.1.0
micromark-util-sanitize-uri: 2.0.1
trim-lines: 3.0.1
@@ -14708,22 +16493,22 @@ snapshots:
merge2@1.4.1: {}
- mermaid@11.17.2:
+ mermaid@11.17.0:
dependencies:
'@braintree/sanitize-url': 7.1.2
- '@iconify/utils': 3.1.4
+ '@iconify/utils': 3.1.3
'@mermaid-js/parser': 1.2.1
'@types/d3': 7.4.3
'@upsetjs/venn.js': 2.0.0
- cytoscape: 3.34.2
- cytoscape-cose-bilkent: 4.1.0(cytoscape@3.34.2)
- cytoscape-fcose: 2.2.0(cytoscape@3.34.2)
+ cytoscape: 3.34.0
+ cytoscape-cose-bilkent: 4.1.0(cytoscape@3.34.0)
+ cytoscape-fcose: 2.2.0(cytoscape@3.34.0)
d3: 7.9.0
d3-sankey: 0.12.3
dagre-d3-es: 7.0.14
- dayjs: 1.11.23
+ dayjs: 1.11.21
dompurify: 3.4.14
- es-toolkit: 1.52.0
+ es-toolkit: 1.49.0
fastdom: 1.0.12
katex: 0.16.47
khroma: 2.1.0
@@ -15053,7 +16838,7 @@ snapshots:
minimatch@10.2.6:
dependencies:
- brace-expansion: 5.0.12
+ brace-expansion: 5.0.9
minimist@1.2.8: {}
@@ -15069,7 +16854,7 @@ snapshots:
moo@0.5.3: {}
- morgan@1.12.1(supports-color@7.2.0):
+ morgan@1.11.0(supports-color@7.2.0):
dependencies:
basic-auth: 2.0.1
debug: 2.6.9(supports-color@7.2.0)
@@ -15079,11 +16864,7 @@ snapshots:
transitivePeerDependencies:
- supports-color
- motion-dom@13.2.0:
- dependencies:
- motion-utils: 13.0.0
-
- motion-dom@13.4.2:
+ motion-dom@13.4.4:
dependencies:
motion-utils: 13.3.0
@@ -15111,12 +16892,12 @@ snapshots:
object-assign: 4.1.1
thenify-all: 1.6.0
- nan@2.29.0:
+ nan@2.28.0:
optional: true
nanoid@3.3.18: {}
- nanoid@3.3.19: {}
+ nanoid@6.0.1: {}
napi-postinstall@0.3.4: {}
@@ -15133,6 +16914,8 @@ snapshots:
negotiator@0.6.4: {}
+ negotiator@1.0.0: {}
+
negotiator@1.1.0:
dependencies:
content-type: 2.1.0
@@ -15153,8 +16936,8 @@ snapshots:
dependencies:
'@next/env': 16.3.4
'@swc/helpers': 0.5.23
- baseline-browser-mapping: 2.11.20
- caniuse-lite: 1.0.30001810
+ baseline-browser-mapping: 2.11.17
+ caniuse-lite: 1.0.30001809
postcss: 8.5.23
react: 19.2.8
react-dom: 19.2.8(react@19.2.8)
@@ -15180,8 +16963,8 @@ snapshots:
dependencies:
'@next/env': 16.3.6
'@swc/helpers': 0.5.23
- baseline-browser-mapping: 2.11.25
- caniuse-lite: 1.0.30001812
+ baseline-browser-mapping: 2.11.17
+ caniuse-lite: 1.0.30001809
postcss: 8.5.23
react: 19.3.0
react-dom: 19.3.0(react@19.3.0)
@@ -15203,7 +16986,7 @@ snapshots:
- '@types/node'
- babel-plugin-macros
- nextra-theme-docs@4.6.1(patch_hash=82125a19d7899580770f4e436be0d74752fb6fa0d45fe977f2569bedae60ad51)(@types/react@19.2.18)(next@16.3.4(@babel/core@7.29.7(supports-color@7.2.0))(@opentelemetry/api@1.9.1)(@playwright/test@1.63.0)(@types/node@26.4.1)(react-dom@19.2.8(react@19.2.8))(react@19.2.8))(nextra@4.6.1(next@16.3.4(@babel/core@7.29.7(supports-color@7.2.0))(@opentelemetry/api@1.9.1)(@playwright/test@1.63.0)(@types/node@26.4.1)(react-dom@19.2.8(react@19.2.8))(react@19.2.8))(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(supports-color@7.2.0)(typescript@6.0.3))(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(use-sync-external-store@1.7.0(react@19.2.8)):
+ nextra-theme-docs@4.6.1(patch_hash=82125a19d7899580770f4e436be0d74752fb6fa0d45fe977f2569bedae60ad51)(@types/react@19.2.18)(next@16.3.4(@babel/core@7.29.7(supports-color@7.2.0))(@opentelemetry/api@1.9.1)(@playwright/test@1.63.0)(@types/node@26.4.1)(react-dom@19.2.8(react@19.2.8))(react@19.2.8))(nextra@4.6.1(next@16.3.4(@babel/core@7.29.7(supports-color@7.2.0))(@opentelemetry/api@1.9.1)(@playwright/test@1.63.0)(@types/node@26.4.1)(react-dom@19.2.8(react@19.2.8))(react@19.2.8))(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(supports-color@7.2.0)(typescript@6.0.3))(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(use-sync-external-store@1.6.0(react@19.2.8)):
dependencies:
'@headlessui/react': 2.2.10(react-dom@19.2.8(react@19.2.8))(react@19.2.8)
clsx: 2.1.1
@@ -15214,8 +16997,8 @@ snapshots:
react-compiler-runtime: 19.1.0-rc.3(react@19.2.8)
react-dom: 19.2.8(react@19.2.8)
scroll-into-view-if-needed: 3.1.0
- zod: 4.5.4
- zustand: 5.0.15(@types/react@19.2.18)(react@19.2.8)(use-sync-external-store@1.7.0(react@19.2.8))
+ zod: 4.6.5
+ zustand: 5.0.14(@types/react@19.2.18)(react@19.2.8)(use-sync-external-store@1.6.0(react@19.2.8))
transitivePeerDependencies:
- '@types/react'
- immer
@@ -15241,12 +17024,12 @@ snapshots:
mdast-util-from-markdown: 2.0.3(supports-color@7.2.0)
mdast-util-gfm: 3.1.0(supports-color@7.2.0)
mdast-util-to-hast: 13.2.1
- negotiator: 1.1.0
+ negotiator: 1.0.0
next: 16.3.4(@babel/core@7.29.7(supports-color@7.2.0))(@opentelemetry/api@1.9.1)(@playwright/test@1.63.0)(@types/node@26.4.1)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)
react: 19.2.8
react-compiler-runtime: 19.1.0-rc.3(react@19.2.8)
react-dom: 19.2.8(react@19.2.8)
- react-medium-image-zoom: 5.4.9(react-dom@19.2.8(react@19.2.8))(react@19.2.8)
+ react-medium-image-zoom: 5.4.8(react-dom@19.2.8(react@19.2.8))(react@19.2.8)
rehype-katex: 7.0.1
rehype-pretty-code: 0.14.1(shiki@3.23.0)
rehype-raw: 7.0.0
@@ -15254,7 +17037,7 @@ snapshots:
remark-gfm: 4.0.1(supports-color@7.2.0)
remark-math: 6.0.0(supports-color@7.2.0)
remark-reading-time: 2.1.0
- remark-smartypants: 3.0.3
+ remark-smartypants: 3.0.2
server-only: 0.0.1
shiki: 3.23.0
slash: 5.1.0
@@ -15264,7 +17047,7 @@ snapshots:
unist-util-visit: 5.1.0
unist-util-visit-children: 3.0.0
yaml: 2.9.0
- zod: 4.5.4
+ zod: 4.6.5
transitivePeerDependencies:
- supports-color
- typescript
@@ -15309,7 +17092,7 @@ snapshots:
node-gyp-build@4.8.4: {}
- node-gyp@13.0.2:
+ node-gyp@13.0.1:
dependencies:
env-paths: 2.2.1
exponential-backoff: 3.1.3
@@ -15319,11 +17102,11 @@ snapshots:
semver: 7.8.5
tar: 7.5.22
tinyglobby: 0.2.17
- undici: 6.28.1
+ undici: 6.28.0
which: 7.0.0
optional: true
- node-releases@2.0.54: {}
+ node-releases@2.0.57: {}
nopt@10.0.1:
dependencies:
@@ -15344,7 +17127,7 @@ snapshots:
dependencies:
path-key: 4.0.0
- npm-to-yarn@3.2.0: {}
+ npm-to-yarn@3.0.1: {}
object-assign@4.1.1: {}
@@ -15390,7 +17173,7 @@ snapshots:
define-properties: 1.2.1
es-object-atoms: 1.1.2
- obug@2.2.1: {}
+ obug@2.1.4: {}
on-finished@2.3.0:
dependencies:
@@ -15442,7 +17225,7 @@ snapshots:
openapi3-ts@3.2.0:
dependencies:
- yaml: 2.9.1
+ yaml: 2.9.0
opener@1.5.2: {}
@@ -15542,7 +17325,7 @@ snapshots:
dependencies:
p-limit: 3.1.0
- p-throttle@8.1.1: {}
+ p-throttle@8.1.0: {}
pac-proxy-agent@7.2.0(supports-color@7.2.0):
dependencies:
@@ -15564,7 +17347,7 @@ snapshots:
package-json-from-dist@1.0.1: {}
- package-manager-detector@1.8.0: {}
+ package-manager-detector@1.6.0: {}
parent-module@1.0.1:
dependencies:
@@ -15607,7 +17390,7 @@ snapshots:
parse5@8.0.1:
dependencies:
- entities: 8.1.0
+ entities: 8.0.0
parseurl@1.3.3: {}
@@ -15630,7 +17413,7 @@ snapshots:
path-scurry@2.0.2:
dependencies:
- lru-cache: 11.5.3
+ lru-cache: 11.5.2
minipass: 7.1.3
path-to-regexp@6.3.0: {}
@@ -15684,6 +17467,8 @@ snapshots:
picomatch@2.3.2: {}
+ picomatch@4.0.5: {}
+
picomatch@4.0.7: {}
pkce-challenge@5.0.1: {}
@@ -15712,7 +17497,7 @@ snapshots:
postcss@8.5.23:
dependencies:
- nanoid: 3.3.19
+ nanoid: 3.3.18
picocolors: 1.1.1
source-map-js: 1.2.1
@@ -15724,7 +17509,7 @@ snapshots:
postcss@8.5.28:
dependencies:
- nanoid: 3.3.19
+ nanoid: 3.3.18
picocolors: 1.1.1
source-map-js: 1.2.1
@@ -15754,6 +17539,8 @@ snapshots:
dependencies:
parse-ms: 2.1.0
+ prismjs@1.30.0: {}
+
proc-log@7.0.0:
optional: true
@@ -15779,9 +17566,9 @@ snapshots:
proto3-json-serializer@3.0.4:
dependencies:
- protobufjs: 7.6.6
+ protobufjs: 7.6.5
- protobufjs@7.6.6:
+ protobufjs@7.6.5:
dependencies:
'@protobufjs/aspromise': 1.1.2
'@protobufjs/base64': 1.1.2
@@ -15792,10 +17579,10 @@ snapshots:
'@protobufjs/path': 1.1.2
'@protobufjs/pool': 1.1.0
'@protobufjs/utf8': 1.1.2
- '@types/node': 26.6.2
+ '@types/node': 26.2.0
long: 5.3.2
- proxy-addr@2.0.8:
+ proxy-addr@2.0.7:
dependencies:
forwarded: 0.2.0
ipaddr.js: 1.9.1
@@ -15837,6 +17624,69 @@ snapshots:
queue-microtask@1.2.3: {}
+ radix-ui@1.6.7(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0):
+ dependencies:
+ '@radix-ui/primitive': 1.1.7
+ '@radix-ui/react-accessible-icon': 1.1.15(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)
+ '@radix-ui/react-accordion': 1.2.20(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)
+ '@radix-ui/react-alert-dialog': 1.1.23(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)
+ '@radix-ui/react-arrow': 1.1.15(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)
+ '@radix-ui/react-aspect-ratio': 1.1.15(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)
+ '@radix-ui/react-avatar': 1.2.6(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)
+ '@radix-ui/react-checkbox': 1.3.11(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)
+ '@radix-ui/react-collapsible': 1.1.20(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)
+ '@radix-ui/react-collection': 1.1.15(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)
+ '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.3.0)(react@19.3.0)
+ '@radix-ui/react-context': 1.2.2(@types/react@19.3.0)(react@19.3.0)
+ '@radix-ui/react-context-menu': 2.3.7(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)
+ '@radix-ui/react-dialog': 1.1.23(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)
+ '@radix-ui/react-direction': 1.1.4(@types/react@19.3.0)(react@19.3.0)
+ '@radix-ui/react-dismissable-layer': 1.1.19(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)
+ '@radix-ui/react-dropdown-menu': 2.1.24(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)
+ '@radix-ui/react-focus-guards': 1.1.6(@types/react@19.3.0)(react@19.3.0)
+ '@radix-ui/react-focus-scope': 1.1.16(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)
+ '@radix-ui/react-form': 0.1.16(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)
+ '@radix-ui/react-hover-card': 1.1.23(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)
+ '@radix-ui/react-label': 2.1.15(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)
+ '@radix-ui/react-menu': 2.1.24(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)
+ '@radix-ui/react-menubar': 1.1.24(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)
+ '@radix-ui/react-navigation-menu': 1.2.22(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)
+ '@radix-ui/react-one-time-password-field': 0.1.16(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)
+ '@radix-ui/react-password-toggle-field': 0.1.11(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)
+ '@radix-ui/react-popover': 1.1.23(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)
+ '@radix-ui/react-popper': 1.3.7(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)
+ '@radix-ui/react-portal': 1.1.17(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)
+ '@radix-ui/react-presence': 1.1.10(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)
+ '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)
+ '@radix-ui/react-progress': 1.1.16(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)
+ '@radix-ui/react-radio-group': 1.4.7(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)
+ '@radix-ui/react-roving-focus': 1.1.19(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)
+ '@radix-ui/react-scroll-area': 1.2.18(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)
+ '@radix-ui/react-select': 2.3.7(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)
+ '@radix-ui/react-separator': 1.1.15(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)
+ '@radix-ui/react-slider': 1.4.7(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)
+ '@radix-ui/react-slot': 1.3.3(@types/react@19.3.0)(react@19.3.0)
+ '@radix-ui/react-switch': 1.3.7(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)
+ '@radix-ui/react-tabs': 1.1.21(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)
+ '@radix-ui/react-toast': 1.2.23(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)
+ '@radix-ui/react-toggle': 1.1.18(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)
+ '@radix-ui/react-toggle-group': 1.1.19(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)
+ '@radix-ui/react-toolbar': 1.1.19(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)
+ '@radix-ui/react-tooltip': 1.2.16(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)
+ '@radix-ui/react-use-callback-ref': 1.1.4(@types/react@19.3.0)(react@19.3.0)
+ '@radix-ui/react-use-controllable-state': 1.2.6(@types/react@19.3.0)(react@19.3.0)
+ '@radix-ui/react-use-effect-event': 0.0.5(@types/react@19.3.0)(react@19.3.0)
+ '@radix-ui/react-use-escape-keydown': 1.1.5(@types/react@19.3.0)(react@19.3.0)
+ '@radix-ui/react-use-is-hydrated': 0.1.3(@types/react@19.3.0)(react@19.3.0)
+ '@radix-ui/react-use-layout-effect': 1.1.4(@types/react@19.3.0)(react@19.3.0)
+ '@radix-ui/react-use-size': 1.1.4(@types/react@19.3.0)(react@19.3.0)
+ '@radix-ui/react-visually-hidden': 1.2.11(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)
+ react: 19.3.0
+ react-dom: 19.3.0(react@19.3.0)
+ optionalDependencies:
+ '@types/react': 19.3.0
+ '@types/react-dom': 19.3.0(@types/react@19.3.0)
+
railroad-diagrams@1.0.0: {}
randexp@0.4.6:
@@ -15878,14 +17728,14 @@ snapshots:
re2@1.26.1:
dependencies:
- install-artifact-from-github: 1.8.1
- nan: 2.29.0
- node-gyp: 13.0.2
+ install-artifact-from-github: 1.8.0
+ nan: 2.28.0
+ node-gyp: 13.0.1
optional: true
react-aria-components@1.17.0(react-dom@19.3.0(react@19.3.0))(react@19.3.0):
dependencies:
- '@internationalized/date': 3.12.4
+ '@internationalized/date': 3.12.3
'@react-types/shared': 3.36.1(react@19.3.0)
'@swc/helpers': 0.5.23
client-only: 0.0.1
@@ -15894,6 +17744,18 @@ snapshots:
react-dom: 19.3.0(react@19.3.0)
react-stately: 3.46.0(react@19.3.0)
+ react-aria-components@1.20.0(react-dom@19.3.0(react@19.3.0))(react@19.3.0):
+ dependencies:
+ '@internationalized/date': 3.12.3
+ '@internationalized/string': 3.2.10
+ '@react-types/shared': 3.36.1(react@19.3.0)
+ '@swc/helpers': 0.5.23
+ client-only: 0.0.1
+ react: 19.3.0
+ react-aria: 3.51.0(react-dom@19.3.0(react@19.3.0))(react@19.3.0)
+ react-dom: 19.3.0(react@19.3.0)
+ react-stately: 3.49.0(react@19.3.0)
+
react-aria-components@1.21.1(react-dom@19.3.0(react@19.3.0))(react@19.3.0):
dependencies:
'@internationalized/date': 3.12.4
@@ -15908,8 +17770,8 @@ snapshots:
react-aria@3.48.0(react-dom@19.3.0(react@19.3.0))(react@19.3.0):
dependencies:
- '@internationalized/date': 3.12.4
- '@internationalized/number': 3.6.8
+ '@internationalized/date': 3.12.3
+ '@internationalized/number': 3.6.7
'@internationalized/string': 3.2.10
'@react-types/shared': 3.36.1(react@19.3.0)
'@swc/helpers': 0.5.23
@@ -15918,22 +17780,36 @@ snapshots:
react: 19.3.0
react-dom: 19.3.0(react@19.3.0)
react-stately: 3.46.0(react@19.3.0)
- use-sync-external-store: 1.7.0(react@19.3.0)
+ use-sync-external-store: 1.6.0(react@19.3.0)
- react-aria@3.52.0(react-dom@19.2.8(react@19.2.8))(react@19.2.8):
+ react-aria@3.50.0(react-dom@19.2.8(react@19.2.8))(react@19.2.8):
dependencies:
- '@internationalized/date': 3.12.4
- '@internationalized/number': 3.6.8
- '@internationalized/string': 3.2.10
+ '@internationalized/date': 3.12.2
+ '@internationalized/number': 3.6.7
+ '@internationalized/string': 3.2.9
'@react-types/shared': 3.36.1(react@19.2.8)
'@swc/helpers': 0.5.23
aria-hidden: 1.2.6
clsx: 2.1.1
react: 19.2.8
react-dom: 19.2.8(react@19.2.8)
- react-stately: 3.50.0(react@19.2.8)
+ react-stately: 3.48.0(react@19.2.8)
use-sync-external-store: 1.6.0(react@19.2.8)
+ react-aria@3.51.0(react-dom@19.3.0(react@19.3.0))(react@19.3.0):
+ dependencies:
+ '@internationalized/date': 3.12.3
+ '@internationalized/number': 3.6.7
+ '@internationalized/string': 3.2.10
+ '@react-types/shared': 3.36.1(react@19.3.0)
+ '@swc/helpers': 0.5.23
+ aria-hidden: 1.2.6
+ clsx: 2.1.1
+ react: 19.3.0
+ react-dom: 19.3.0(react@19.3.0)
+ react-stately: 3.49.0(react@19.3.0)
+ use-sync-external-store: 1.6.0(react@19.3.0)
+
react-aria@3.52.1(react-dom@19.3.0(react@19.3.0))(react@19.3.0):
dependencies:
'@internationalized/date': 3.12.4
@@ -15946,7 +17822,7 @@ snapshots:
react: 19.3.0
react-dom: 19.3.0(react@19.3.0)
react-stately: 3.50.0(react@19.3.0)
- use-sync-external-store: 1.7.0(react@19.3.0)
+ use-sync-external-store: 1.6.0(react@19.3.0)
react-compiler-runtime@19.1.0-rc.3(react@19.2.8):
dependencies:
@@ -15966,7 +17842,25 @@ snapshots:
react-is@17.0.2: {}
- react-medium-image-zoom@5.4.9(react-dom@19.2.8(react@19.2.8))(react@19.2.8):
+ react-markdown@10.1.0(@types/react@19.3.0)(react@19.3.0)(supports-color@7.2.0):
+ dependencies:
+ '@types/hast': 3.0.4
+ '@types/mdast': 4.0.4
+ '@types/react': 19.3.0
+ devlop: 1.1.0
+ hast-util-to-jsx-runtime: 2.3.6(supports-color@7.2.0)
+ html-url-attributes: 3.0.1
+ mdast-util-to-hast: 13.2.1
+ react: 19.3.0
+ remark-parse: 11.0.0(supports-color@7.2.0)
+ remark-rehype: 11.1.2
+ unified: 11.0.5
+ unist-util-visit: 5.1.0
+ vfile: 6.0.3
+ transitivePeerDependencies:
+ - supports-color
+
+ react-medium-image-zoom@5.4.8(react-dom@19.2.8(react@19.2.8))(react@19.2.8):
dependencies:
react: 19.2.8
react-dom: 19.2.8(react@19.2.8)
@@ -15992,23 +17886,33 @@ snapshots:
react-stately@3.46.0(react@19.3.0):
dependencies:
- '@internationalized/date': 3.12.4
- '@internationalized/number': 3.6.8
+ '@internationalized/date': 3.12.3
+ '@internationalized/number': 3.6.7
'@internationalized/string': 3.2.10
'@react-types/shared': 3.36.1(react@19.3.0)
'@swc/helpers': 0.5.23
react: 19.3.0
- use-sync-external-store: 1.7.0(react@19.3.0)
+ use-sync-external-store: 1.6.0(react@19.3.0)
- react-stately@3.50.0(react@19.2.8):
+ react-stately@3.48.0(react@19.2.8):
dependencies:
- '@internationalized/date': 3.12.4
- '@internationalized/number': 3.6.8
+ '@internationalized/date': 3.12.3
+ '@internationalized/number': 3.6.7
'@internationalized/string': 3.2.10
'@react-types/shared': 3.36.1(react@19.2.8)
'@swc/helpers': 0.5.23
react: 19.2.8
- use-sync-external-store: 1.7.0(react@19.2.8)
+ use-sync-external-store: 1.6.0(react@19.2.8)
+
+ react-stately@3.49.0(react@19.3.0):
+ dependencies:
+ '@internationalized/date': 3.12.3
+ '@internationalized/number': 3.6.7
+ '@internationalized/string': 3.2.10
+ '@react-types/shared': 3.36.1(react@19.3.0)
+ '@swc/helpers': 0.5.23
+ react: 19.3.0
+ use-sync-external-store: 1.6.0(react@19.3.0)
react-stately@3.50.0(react@19.3.0):
dependencies:
@@ -16018,7 +17922,7 @@ snapshots:
'@react-types/shared': 3.36.1(react@19.3.0)
'@swc/helpers': 0.5.23
react: 19.3.0
- use-sync-external-store: 1.7.0(react@19.3.0)
+ use-sync-external-store: 1.6.0(react@19.3.0)
react-style-singleton@2.2.3(@types/react@19.3.0)(react@19.3.0):
dependencies:
@@ -16028,6 +17932,25 @@ snapshots:
optionalDependencies:
'@types/react': 19.3.0
+ react-syntax-highlighter@16.1.1(react@19.3.0):
+ dependencies:
+ '@babel/runtime': 7.29.7
+ highlight.js: 10.7.3
+ highlightjs-vue: 1.0.0
+ lowlight: 1.20.0
+ prismjs: 1.30.0
+ react: 19.3.0
+ refractor: 5.0.0
+
+ react-textarea-autosize@8.5.9(@types/react@19.3.0)(react@19.3.0):
+ dependencies:
+ '@babel/runtime': 7.29.7
+ react: 19.3.0
+ use-composed-ref: 1.4.0(@types/react@19.3.0)(react@19.3.0)
+ use-latest: 1.3.0(@types/react@19.3.0)(react@19.3.0)
+ transitivePeerDependencies:
+ - '@types/react'
+
react-transition-group@4.4.5(react-dom@19.3.0(react@19.3.0))(react@19.3.0):
dependencies:
'@babel/runtime': 7.29.7
@@ -16083,10 +18006,10 @@ snapshots:
estree-util-build-jsx: 3.0.1
vfile: 6.0.3
- recma-jsx@1.0.1(acorn@8.18.0):
+ recma-jsx@1.0.1(acorn@8.17.0):
dependencies:
- acorn: 8.18.0
- acorn-jsx: 5.3.2(acorn@8.18.0)
+ acorn: 8.17.0
+ acorn-jsx: 5.3.2(acorn@8.17.0)
estree-util-to-js: 2.0.0
recma-parse: 1.0.0
recma-stringify: 1.0.0
@@ -16122,6 +18045,13 @@ snapshots:
get-proto: 1.0.1
which-builtin-type: 1.2.1
+ refractor@5.0.0:
+ dependencies:
+ '@types/hast': 3.0.4
+ '@types/prismjs': 1.26.6
+ hastscript: 9.0.1
+ parse-entities: 4.0.2
+
regex-recursion@6.0.2:
dependencies:
regex-utilities: 2.3.0
@@ -16151,7 +18081,7 @@ snapshots:
rehype-katex@7.0.1:
dependencies:
- '@types/hast': 3.0.5
+ '@types/hast': 3.0.4
'@types/katex': 0.16.8
hast-util-from-html-isomorphic: 2.0.0
hast-util-to-text: 4.0.2
@@ -16161,13 +18091,13 @@ snapshots:
rehype-parse@9.0.1:
dependencies:
- '@types/hast': 3.0.5
+ '@types/hast': 3.0.4
hast-util-from-html: 2.0.3
unified: 11.0.5
rehype-pretty-code@0.14.1(shiki@3.23.0):
dependencies:
- '@types/hast': 3.0.5
+ '@types/hast': 3.0.4
hast-util-to-string: 3.0.1
parse-numeric-range: 1.3.0
rehype-parse: 9.0.1
@@ -16177,14 +18107,14 @@ snapshots:
rehype-raw@7.0.0:
dependencies:
- '@types/hast': 3.0.5
+ '@types/hast': 3.0.4
hast-util-raw: 9.1.0
vfile: 6.0.3
rehype-recma@1.0.0(supports-color@7.2.0):
dependencies:
'@types/estree': 1.0.9
- '@types/hast': 3.0.5
+ '@types/hast': 3.0.4
hast-util-to-estree: 3.1.3(supports-color@7.2.0)
transitivePeerDependencies:
- supports-color
@@ -16243,13 +18173,13 @@ snapshots:
remark-rehype@11.1.2:
dependencies:
- '@types/hast': 3.0.5
+ '@types/hast': 3.0.4
'@types/mdast': 4.0.4
mdast-util-to-hast: 13.2.1
unified: 11.0.5
vfile: 6.0.3
- remark-smartypants@3.0.3:
+ remark-smartypants@3.0.2:
dependencies:
retext: 9.0.0
retext-smartypants: 6.2.0
@@ -16277,7 +18207,7 @@ snapshots:
resolve@2.0.0-next.7:
dependencies:
es-errors: 1.3.0
- is-core-module: 2.17.0
+ is-core-module: 2.16.2
node-exports-info: 1.6.2
object-keys: 1.1.1
path-parse: 1.0.7
@@ -16354,26 +18284,26 @@ snapshots:
- '@emnapi/core'
- '@emnapi/runtime'
- rolldown@1.2.10:
+ rolldown@1.2.11:
dependencies:
'@oxc-project/types': 0.151.0
'@rolldown/pluginutils': 1.0.1
optionalDependencies:
- '@rolldown/binding-android-arm-eabi': 1.2.10
- '@rolldown/binding-android-arm64': 1.2.10
- '@rolldown/binding-darwin-arm64': 1.2.10
- '@rolldown/binding-darwin-x64': 1.2.10
- '@rolldown/binding-freebsd-x64': 1.2.10
- '@rolldown/binding-linux-arm-gnueabihf': 1.2.10
- '@rolldown/binding-linux-arm64-gnu': 1.2.10
- '@rolldown/binding-linux-arm64-musl': 1.2.10
- '@rolldown/binding-linux-ppc64-gnu': 1.2.10
- '@rolldown/binding-linux-s390x-gnu': 1.2.10
- '@rolldown/binding-linux-x64-gnu': 1.2.10
- '@rolldown/binding-linux-x64-musl': 1.2.10
- '@rolldown/binding-openharmony-arm64': 1.2.10
- '@rolldown/binding-win32-arm64-msvc': 1.2.10
- '@rolldown/binding-win32-x64-msvc': 1.2.10
+ '@rolldown/binding-android-arm-eabi': 1.2.11
+ '@rolldown/binding-android-arm64': 1.2.11
+ '@rolldown/binding-darwin-arm64': 1.2.11
+ '@rolldown/binding-darwin-x64': 1.2.11
+ '@rolldown/binding-freebsd-x64': 1.2.11
+ '@rolldown/binding-linux-arm-gnueabihf': 1.2.11
+ '@rolldown/binding-linux-arm64-gnu': 1.2.11
+ '@rolldown/binding-linux-arm64-musl': 1.2.11
+ '@rolldown/binding-linux-ppc64-gnu': 1.2.11
+ '@rolldown/binding-linux-s390x-gnu': 1.2.11
+ '@rolldown/binding-linux-x64-gnu': 1.2.11
+ '@rolldown/binding-linux-x64-musl': 1.2.11
+ '@rolldown/binding-openharmony-arm64': 1.2.11
+ '@rolldown/binding-win32-arm64-msvc': 1.2.11
+ '@rolldown/binding-win32-x64-msvc': 1.2.11
rollup@4.62.2:
dependencies:
@@ -16442,6 +18372,8 @@ snapshots:
safe-buffer@5.2.1: {}
+ safe-content-frame@0.0.27: {}
+
safe-push-apply@1.0.0:
dependencies:
es-errors: 1.3.0
@@ -16463,7 +18395,7 @@ snapshots:
async-retry: 1.3.3
debug: 4.4.3(supports-color@7.2.0)
ws: 8.21.3
- zod: 4.6.5
+ zod: 4.4.3
transitivePeerDependencies:
- bare-abort-controller
- bufferutil
@@ -16483,6 +18415,8 @@ snapshots:
dependencies:
compute-scroll-into-view: 3.1.1
+ secure-json-parse@4.1.0: {}
+
semver-diff@3.1.1:
dependencies:
semver: 6.3.1
@@ -16658,7 +18592,7 @@ snapshots:
'@shikijs/themes': 3.23.0
'@shikijs/types': 3.23.0
'@shikijs/vscode-textmate': 10.0.2
- '@types/hast': 3.0.5
+ '@types/hast': 3.0.4
side-channel-list@1.0.1:
dependencies:
@@ -16710,19 +18644,19 @@ snapshots:
smart-buffer@4.2.0: {}
- smol-toml@1.9.0: {}
+ smol-toml@1.8.0: {}
socks-proxy-agent@8.0.5(supports-color@7.2.0):
dependencies:
agent-base: 7.1.4
debug: 4.4.3(supports-color@7.2.0)
- socks: 2.8.10
+ socks: 2.8.9
transitivePeerDependencies:
- supports-color
- socks@2.8.10:
+ socks@2.8.9:
dependencies:
- ip-address: 10.7.2
+ ip-address: 10.5.0
smart-buffer: 4.2.0
source-map-js@1.2.1: {}
@@ -16742,7 +18676,7 @@ snapshots:
split2@4.2.0: {}
- sql-formatter@15.9.0:
+ sql-formatter@15.8.2:
dependencies:
argparse: 2.0.1
nearley: 2.20.1
@@ -16790,7 +18724,7 @@ snapshots:
end-of-stream: 1.1.0
stream-to-array: 2.3.0
- streamx@2.28.1:
+ streamx@2.28.0:
dependencies:
events-universal: 1.0.1
fast-fifo: 1.3.2
@@ -16819,7 +18753,7 @@ snapshots:
define-properties: 1.2.1
es-abstract: 1.24.2
- string.prototype.matchall@4.1.0:
+ string.prototype.matchall@4.0.12:
dependencies:
call-bind: 1.0.9
call-bound: 1.0.4
@@ -16929,7 +18863,7 @@ snapshots:
dependencies:
basic-auth-connect: 1.1.0
commander: 10.0.1
- compression: 1.8.2(supports-color@7.2.0)
+ compression: 1.8.1(supports-color@7.2.0)
connect: 3.7.0(supports-color@7.2.0)
destroy: 1.2.0
glob-slasher: 1.0.1
@@ -16938,7 +18872,7 @@ snapshots:
lodash: 4.18.1
mime-types: 2.1.35
minimatch: 10.2.6
- morgan: 1.12.1(supports-color@7.2.0)
+ morgan: 1.11.0(supports-color@7.2.0)
on-finished: 2.4.1
on-headers: 1.1.0
path-to-regexp: 8.4.2
@@ -16961,6 +18895,12 @@ snapshots:
supports-preserve-symlinks-flag@1.0.0: {}
+ swr@2.5.1(react@19.3.0):
+ dependencies:
+ dequal: 2.0.3
+ react: 19.3.0
+ use-sync-external-store: 1.6.0(react@19.3.0)
+
system-architecture@0.1.0: {}
tabbable@6.5.0: {}
@@ -16979,19 +18919,19 @@ snapshots:
tar-stream@3.1.7:
dependencies:
- b4a: 1.9.0
+ b4a: 1.8.1
fast-fifo: 1.3.2
- streamx: 2.28.1
+ streamx: 2.28.0
transitivePeerDependencies:
- bare-abort-controller
- react-native-b4a
- tar-stream@3.2.1:
+ tar-stream@3.2.0:
dependencies:
- b4a: 1.9.0
- bare-fs: 4.8.1
+ b4a: 1.8.1
+ bare-fs: 4.8.0
fast-fifo: 1.3.2
- streamx: 2.28.1
+ streamx: 2.28.0
transitivePeerDependencies:
- bare-abort-controller
- bare-buffer
@@ -17023,14 +18963,14 @@ snapshots:
teex@1.0.1:
dependencies:
- streamx: 2.28.1
+ streamx: 2.28.0
transitivePeerDependencies:
- bare-abort-controller
- react-native-b4a
text-decoder@1.2.7:
dependencies:
- b4a: 1.9.0
+ b4a: 1.8.1
transitivePeerDependencies:
- react-native-b4a
@@ -17058,8 +18998,8 @@ snapshots:
tinyglobby@0.2.17:
dependencies:
- fdir: 6.5.0(picomatch@4.0.7)
- picomatch: 4.0.7
+ fdir: 6.5.0(picomatch@4.0.5)
+ picomatch: 4.0.5
tinyrainbow@3.1.1: {}
@@ -17069,11 +19009,11 @@ snapshots:
chalk: 5.6.2
clipboardy: 4.0.0
- tldts-core@7.4.15: {}
+ tldts-core@7.4.10: {}
- tldts@7.4.15:
+ tldts@7.4.10:
dependencies:
- tldts-core: 7.4.15
+ tldts-core: 7.4.10
tmp@0.2.7: {}
@@ -17089,7 +19029,7 @@ snapshots:
tough-cookie@6.0.2:
dependencies:
- tldts: 7.4.15
+ tldts: 7.4.10
toxic@1.0.1:
dependencies:
@@ -17194,12 +19134,13 @@ snapshots:
has-proto: 1.2.0
is-typed-array: 1.1.15
- typed-array-byte-offset@1.0.5:
+ typed-array-byte-offset@1.0.4:
dependencies:
available-typed-arrays: 1.0.7
call-bind: 1.0.9
for-each: 0.3.5
gopd: 1.2.0
+ has-proto: 1.2.0
is-typed-array: 1.1.15
reflect.getprototypeof: 1.0.10
@@ -17216,12 +19157,12 @@ snapshots:
dependencies:
is-typedarray: 1.0.0
- typescript-eslint@8.70.1(eslint@10.11.0(jiti@2.7.0)(supports-color@7.2.0))(supports-color@7.2.0)(typescript@6.0.3):
+ typescript-eslint@8.67.0(eslint@10.11.0(jiti@2.7.0)(supports-color@7.2.0))(supports-color@7.2.0)(typescript@6.0.3):
dependencies:
- '@typescript-eslint/eslint-plugin': 8.70.1(@typescript-eslint/parser@8.70.1(eslint@10.11.0(jiti@2.7.0)(supports-color@7.2.0))(supports-color@7.2.0)(typescript@6.0.3))(eslint@10.11.0(jiti@2.7.0)(supports-color@7.2.0))(supports-color@7.2.0)(typescript@6.0.3)
- '@typescript-eslint/parser': 8.70.1(eslint@10.11.0(jiti@2.7.0)(supports-color@7.2.0))(supports-color@7.2.0)(typescript@6.0.3)
- '@typescript-eslint/typescript-estree': 8.70.1(supports-color@7.2.0)(typescript@6.0.3)
- '@typescript-eslint/utils': 8.70.1(eslint@10.11.0(jiti@2.7.0)(supports-color@7.2.0))(supports-color@7.2.0)(typescript@6.0.3)
+ '@typescript-eslint/eslint-plugin': 8.67.0(@typescript-eslint/parser@8.67.0(eslint@10.11.0(jiti@2.7.0)(supports-color@7.2.0))(supports-color@7.2.0)(typescript@6.0.3))(eslint@10.11.0(jiti@2.7.0)(supports-color@7.2.0))(supports-color@7.2.0)(typescript@6.0.3)
+ '@typescript-eslint/parser': 8.67.0(eslint@10.11.0(jiti@2.7.0)(supports-color@7.2.0))(supports-color@7.2.0)(typescript@6.0.3)
+ '@typescript-eslint/typescript-estree': 8.67.0(supports-color@7.2.0)(typescript@6.0.3)
+ '@typescript-eslint/utils': 8.67.0(eslint@10.11.0(jiti@2.7.0)(supports-color@7.2.0))(supports-color@7.2.0)(typescript@6.0.3)
eslint: 10.11.0(jiti@2.7.0)(supports-color@7.2.0)
typescript: 6.0.3
transitivePeerDependencies:
@@ -17246,7 +19187,7 @@ snapshots:
undici-types@8.9.0: {}
- undici@6.28.1: {}
+ undici@6.28.0: {}
unicode-emoji-modifier-base@1.0.0: {}
@@ -17354,9 +19295,9 @@ snapshots:
'@unrs/resolver-binding-win32-ia32-msvc': 1.12.2
'@unrs/resolver-binding-win32-x64-msvc': 1.12.2
- update-browserslist-db@1.3.2(browserslist@4.28.8):
+ update-browserslist-db@1.3.3(browserslist@4.29.1):
dependencies:
- browserslist: 4.28.8
+ browserslist: 4.29.1
escalade: 3.2.0
picocolors: 1.1.1
@@ -17396,6 +19337,25 @@ snapshots:
optionalDependencies:
'@types/react': 19.3.0
+ use-composed-ref@1.4.0(@types/react@19.3.0)(react@19.3.0):
+ dependencies:
+ react: 19.3.0
+ optionalDependencies:
+ '@types/react': 19.3.0
+
+ use-isomorphic-layout-effect@1.2.1(@types/react@19.3.0)(react@19.3.0):
+ dependencies:
+ react: 19.3.0
+ optionalDependencies:
+ '@types/react': 19.3.0
+
+ use-latest@1.3.0(@types/react@19.3.0)(react@19.3.0):
+ dependencies:
+ react: 19.3.0
+ use-isomorphic-layout-effect: 1.2.1(@types/react@19.3.0)(react@19.3.0)
+ optionalDependencies:
+ '@types/react': 19.3.0
+
use-sidecar@1.1.3(@types/react@19.3.0)(react@19.3.0):
dependencies:
detect-node-es: 1.1.0
@@ -17408,11 +19368,7 @@ snapshots:
dependencies:
react: 19.2.8
- use-sync-external-store@1.7.0(react@19.2.8):
- dependencies:
- react: 19.2.8
-
- use-sync-external-store@1.7.0(react@19.3.0):
+ use-sync-external-store@1.6.0(react@19.3.0):
dependencies:
react: 19.3.0
@@ -17461,8 +19417,8 @@ snapshots:
jsonc-parser: 3.3.1
luxon: 3.7.2
sandbox: 4.1.0(supports-color@7.2.0)
- smol-toml: 1.9.0
- undici: 6.28.1
+ smol-toml: 1.8.0
+ undici: 6.28.0
uuid: 11.1.1
zod: 4.1.11
optionalDependencies:
@@ -17498,12 +19454,12 @@ snapshots:
'@types/unist': 3.0.3
vfile-message: 4.0.3
- vite@8.3.0(@types/node@26.6.2)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.15)(yaml@2.9.1):
+ vite@8.3.1(@types/node@26.6.2)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.15)(yaml@2.9.0):
dependencies:
lightningcss: 1.33.0
picomatch: 4.0.7
postcss: 8.5.28
- rolldown: 1.2.10
+ rolldown: 1.2.11
tinyglobby: 0.2.17
optionalDependencies:
'@types/node': 26.6.2
@@ -17511,12 +19467,12 @@ snapshots:
fsevents: 2.3.3
jiti: 2.7.0
tsx: 4.23.15
- yaml: 2.9.1
+ yaml: 2.9.0
- vitest@4.1.11(@edge-runtime/vm@3.2.0)(@opentelemetry/api@1.9.1)(@types/node@26.6.2)(@vitest/coverage-v8@4.1.11)(jsdom@30.1.1)(vite@8.3.0(@types/node@26.6.2)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.15)(yaml@2.9.1)):
+ vitest@4.1.11(@edge-runtime/vm@3.2.0)(@opentelemetry/api@1.9.1)(@types/node@26.6.2)(@vitest/coverage-v8@4.1.11)(jsdom@30.1.1)(vite@8.3.1(@types/node@26.6.2)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.15)(yaml@2.9.0)):
dependencies:
'@vitest/expect': 4.1.11
- '@vitest/mocker': 4.1.11(vite@8.3.0(@types/node@26.6.2)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.15)(yaml@2.9.1))
+ '@vitest/mocker': 4.1.11(vite@8.3.1(@types/node@26.6.2)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.15)(yaml@2.9.0))
'@vitest/pretty-format': 4.1.11
'@vitest/runner': 4.1.11
'@vitest/snapshot': 4.1.11
@@ -17525,15 +19481,15 @@ snapshots:
es-module-lexer: 2.3.2
expect-type: 1.4.0
magic-string: 0.30.21
- obug: 2.2.1
+ obug: 2.1.4
pathe: 2.0.3
- picomatch: 4.0.7
+ picomatch: 4.0.5
std-env: 4.2.0
tinybench: 2.9.0
tinyexec: 1.3.0
tinyglobby: 0.2.17
tinyrainbow: 3.1.1
- vite: 8.3.0(@types/node@26.6.2)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.15)(yaml@2.9.1)
+ vite: 8.3.1(@types/node@26.6.2)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.15)(yaml@2.9.0)
why-is-node-running: 2.3.0
optionalDependencies:
'@edge-runtime/vm': 3.2.0
@@ -17587,7 +19543,7 @@ snapshots:
whatwg-url@16.0.1:
dependencies:
- '@exodus/bytes': 1.16.0
+ '@exodus/bytes': 1.15.1
tr46: 6.0.0
webidl-conversions: 8.0.1
transitivePeerDependencies:
@@ -17595,7 +19551,7 @@ snapshots:
whatwg-url@17.1.2:
dependencies:
- '@exodus/bytes': 1.16.0
+ '@exodus/bytes': 1.15.1
tr46: 6.0.0
webidl-conversions: 8.0.1
transitivePeerDependencies:
@@ -17628,7 +19584,7 @@ snapshots:
isarray: 2.0.5
which-boxed-primitive: 1.1.1
which-collection: 1.0.2
- which-typed-array: 1.1.24
+ which-typed-array: 1.1.22
which-collection@1.0.2:
dependencies:
@@ -17637,7 +19593,7 @@ snapshots:
is-weakmap: 2.0.2
is-weakset: 2.0.4
- which-typed-array@1.1.24:
+ which-typed-array@1.1.22:
dependencies:
available-typed-arrays: 1.0.7
call-bind: 1.0.9
@@ -17675,8 +19631,8 @@ snapshots:
winston@3.19.0:
dependencies:
- '@colors/colors': 1.6.1
- '@dabh/diagnostics': 2.0.9
+ '@colors/colors': 1.6.0
+ '@dabh/diagnostics': 2.0.8
async: 3.2.6
is-stream: 2.0.1
logform: 2.7.0
@@ -17751,8 +19707,6 @@ snapshots:
yaml@2.9.0: {}
- yaml@2.9.1: {}
-
yargs-parser@20.2.9: {}
yargs-parser@21.1.1: {}
@@ -17801,26 +19755,32 @@ snapshots:
compress-commons: 6.0.2
readable-stream: 4.7.0
- zod-to-json-schema@3.25.2(zod@4.6.5):
+ zod-to-json-schema@3.25.2(zod@4.4.3):
dependencies:
- zod: 4.6.5
+ zod: 4.4.3
- zod-validation-error@4.0.2(zod@4.6.5):
+ zod-validation-error@4.0.2(zod@4.4.3):
dependencies:
- zod: 4.6.5
+ zod: 4.4.3
zod@3.22.4: {}
zod@4.1.11: {}
- zod@4.5.4: {}
+ zod@4.4.3: {}
zod@4.6.5: {}
- zustand@5.0.15(@types/react@19.2.18)(react@19.2.8)(use-sync-external-store@1.7.0(react@19.2.8)):
+ zustand@5.0.14(@types/react@19.2.18)(react@19.2.8)(use-sync-external-store@1.6.0(react@19.2.8)):
optionalDependencies:
'@types/react': 19.2.18
react: 19.2.8
- use-sync-external-store: 1.7.0(react@19.2.8)
+ use-sync-external-store: 1.6.0(react@19.2.8)
+
+ zustand@5.0.15(@types/react@19.3.0)(react@19.3.0)(use-sync-external-store@1.6.0(react@19.3.0)):
+ optionalDependencies:
+ '@types/react': 19.3.0
+ react: 19.3.0
+ use-sync-external-store: 1.6.0(react@19.3.0)
zwitch@2.0.4: {}
diff --git a/scripts/init.ts b/scripts/init.ts
index c9281ab..256d227 100644
--- a/scripts/init.ts
+++ b/scripts/init.ts
@@ -90,6 +90,10 @@ async function main() {
'LICENSE',
'CHANGELOG.md',
'app/components/Navbar/index.tsx',
+ 'app/components/AIAssistant/AssistantTrigger.tsx',
+ 'app/components/AIAssistant/Thread.tsx',
+ 'app/lib/ai/system-prompt.ts',
+ 'app/lib/ai/mock-provider.ts',
'app/page.tsx',
'.firebaserc',
'render.yaml',
diff --git a/tests/e2e/ai-assistant.spec.ts b/tests/e2e/ai-assistant.spec.ts
new file mode 100644
index 0000000..28735a5
--- /dev/null
+++ b/tests/e2e/ai-assistant.spec.ts
@@ -0,0 +1,57 @@
+import { test, expect } from "@playwright/test";
+import AxeBuilder from "@axe-core/playwright";
+
+test.describe("AI Assistant E2E & Accessibility", () => {
+ test("should show floating Ask AI trigger on landing page", async ({ page }) => {
+ await page.goto("/");
+ const trigger = page.getByRole("button", { name: /open ai assistant/i }).last();
+ await expect(trigger).toBeVisible();
+ await expect(trigger).toContainText("Ask AI");
+ });
+
+ test("should open modal on clicking floating trigger and close on close button", async ({ page }) => {
+ await page.goto("/");
+ const trigger = page.getByRole("button", { name: /open ai assistant/i }).last();
+ await trigger.click();
+
+ const dialog = page.getByRole("dialog", { name: /ai assistant chat/i });
+ await expect(dialog).toBeVisible();
+ await expect(page.getByText("cur8d Copilot")).toBeVisible();
+
+ const closeBtn = page.getByRole("button", { name: /close ai assistant/i });
+ await closeBtn.click();
+ await expect(dialog).not.toBeVisible();
+ });
+
+ test("should open modal on clicking navbar Ask AI button", async ({ page }) => {
+ await page.goto("/");
+ const navBtn = page.locator("header").getByRole("button", { name: /open ai assistant/i });
+ await navBtn.click();
+
+ const dialog = page.getByRole("dialog", { name: /ai assistant chat/i });
+ await expect(dialog).toBeVisible();
+ });
+
+ test("should toggle modal on pressing keyboard shortcut and close on Escape", async ({ page }) => {
+ await page.goto("/");
+ await page.keyboard.press("ControlOrMeta+j");
+
+ const dialog = page.getByRole("dialog", { name: /ai assistant chat/i });
+ await expect(dialog).toBeVisible();
+
+ await page.keyboard.press("Escape");
+ await expect(dialog).not.toBeVisible();
+ });
+
+ test("AI assistant modal should pass axe-core accessibility audit", async ({ page }) => {
+ await page.goto("/");
+ const trigger = page.getByRole("button", { name: /open ai assistant/i }).last();
+ await trigger.click();
+
+ const dialog = page.getByRole("dialog", { name: /ai assistant chat/i });
+ await expect(dialog).toBeVisible();
+
+ const results = await new AxeBuilder({ page }).analyze();
+ expect(results.violations).toEqual([]);
+ });
+});
diff --git a/tests/unit/api/chat.route.test.ts b/tests/unit/api/chat.route.test.ts
new file mode 100644
index 0000000..22c01dd
--- /dev/null
+++ b/tests/unit/api/chat.route.test.ts
@@ -0,0 +1,127 @@
+import { describe, it, expect, vi, beforeEach } from "vitest";
+import { POST } from "@/api/chat/route";
+import * as errorReporting from "@/lib/error-reporting";
+
+describe("POST /api/chat", () => {
+ beforeEach(() => {
+ vi.clearAllMocks();
+ });
+
+ it("should return a 200 SSE stream for valid messages", async () => {
+ const req = new Request("http://localhost:3000/api/chat", {
+ method: "POST",
+ headers: { "Content-Type": "application/json" },
+ body: JSON.stringify({
+ messages: [
+ {
+ id: "msg_1",
+ role: "user",
+ parts: [{ type: "text", text: "Hello AI" }],
+ },
+ ],
+ }),
+ });
+
+ const res = await POST(req);
+ expect(res.status).toBe(200);
+ expect(res.headers.get("content-type")).toContain("text/event-stream");
+ });
+
+ it("should normalize messages with string content and handle missing id/role", async () => {
+ const req = new Request("http://localhost:3000/api/chat", {
+ method: "POST",
+ headers: { "Content-Type": "application/json" },
+ body: JSON.stringify({
+ messages: [
+ { role: "user", content: "Tell me about cur8d" }, // without id
+ { id: "custom_id", content: "Without role" }, // without role (defaults to user)
+ { role: "assistant", parts: [{ type: "text", text: "Existing parts" }] }, // with parts
+ ],
+ }),
+ });
+
+ const res = await POST(req);
+ expect(res.status).toBe(200);
+ expect(res.headers.get("content-type")).toContain("text/event-stream");
+ });
+
+ it("should handle provider and model overrides", async () => {
+ const req = new Request("http://localhost:3000/api/chat", {
+ method: "POST",
+ headers: { "Content-Type": "application/json" },
+ body: JSON.stringify({
+ provider: "mock",
+ model: "mock-custom-model",
+ messages: [{ role: "user", content: "Hello" }],
+ }),
+ });
+
+ const res = await POST(req);
+ expect(res.status).toBe(200);
+ });
+
+ it("should return 400 if messages is missing or not an array", async () => {
+ const req = new Request("http://localhost:3000/api/chat", {
+ method: "POST",
+ headers: { "Content-Type": "application/json" },
+ body: JSON.stringify({}),
+ });
+
+ const res = await POST(req);
+ expect(res.status).toBe(400);
+
+ const json = await res.json();
+ expect(json.error).toContain("Missing or invalid 'messages'");
+ });
+
+ it("should catch errors, report them, and return 500 when request body contains invalid message structure", async () => {
+ const reportErrorSpy = vi.spyOn(errorReporting, "reportError");
+
+ const req = new Request("http://localhost:3000/api/chat", {
+ method: "POST",
+ headers: { "Content-Type": "application/json" },
+ body: JSON.stringify({
+ messages: [12345], // primitive value that fails convertToModelMessages
+ }),
+ });
+
+ const res = await POST(req);
+ expect(res.status).toBe(500);
+ expect(reportErrorSpy).toHaveBeenCalled();
+
+ const json = await res.json();
+ expect(json.error).toBe("Failed to process chat request");
+ });
+
+ it("should catch JSON parse errors, report them, and return 500", async () => {
+ const reportErrorSpy = vi.spyOn(errorReporting, "reportError");
+
+ const req = new Request("http://localhost:3000/api/chat", {
+ method: "POST",
+ headers: { "Content-Type": "application/json" },
+ body: "invalid-json",
+ });
+
+ const res = await POST(req);
+ expect(res.status).toBe(500);
+ expect(reportErrorSpy).toHaveBeenCalled();
+
+ const json = await res.json();
+ expect(json.error).toBe("Failed to process chat request");
+ });
+
+ it("should format unknown error when non-Error exception occurs", async () => {
+ const reportErrorSpy = vi.spyOn(errorReporting, "reportError");
+
+ const fakeReq = {
+ json: () => Promise.reject("string error reason"),
+ } as unknown as Request;
+
+ const res = await POST(fakeReq);
+ expect(res.status).toBe(500);
+ expect(reportErrorSpy).toHaveBeenCalled();
+
+ const json = await res.json();
+ expect(json.message).toBe("Unknown error");
+ });
+});
diff --git a/tests/unit/components/AIAssistant/index.test.tsx b/tests/unit/components/AIAssistant/index.test.tsx
new file mode 100644
index 0000000..729864d
--- /dev/null
+++ b/tests/unit/components/AIAssistant/index.test.tsx
@@ -0,0 +1,693 @@
+import { describe, it, expect, vi, beforeEach, afterEach } from "vitest";
+import { render, screen, fireEvent, act } from "@testing-library/react";
+import userEvent from "@testing-library/user-event";
+import {
+ AIAssistant,
+ useAIAssistant,
+ AIAssistantProvider,
+ AssistantTrigger,
+ Composer,
+ Thread,
+ assistantToolkit,
+} from "@/components/AIAssistant";
+import {
+ CodeBlock,
+ SuggestedPrompts,
+ MarkdownCode,
+ MarkdownParagraph,
+ MarkdownUnorderedList,
+ MarkdownOrderedList,
+ MarkdownListItem,
+ MarkdownLink,
+} from "@/components/AIAssistant/Thread";
+import { DocSearchTool, type DocSearchArgs } from "@/components/AIAssistant/tools/DocSearchTool";
+import { ThemeTool, type ThemeArgs } from "@/components/AIAssistant/tools/ThemeTool";
+import { SystemInfoTool } from "@/components/AIAssistant/tools/SystemInfoTool";
+import { NavigatePageTool } from "@/components/AIAssistant/tools/NavigatePageTool";
+import * as speechHook from "@/hooks/use-speech-to-text";
+
+const mockPush = vi.fn();
+const mockSetTheme = vi.fn();
+
+vi.mock("next/navigation", () => ({
+ useRouter: () => ({
+ push: mockPush,
+ replace: vi.fn(),
+ prefetch: vi.fn(),
+ }),
+}));
+
+vi.mock("next-themes", () => ({
+ useTheme: vi.fn(() => ({
+ theme: "dark",
+ setTheme: mockSetTheme,
+ })),
+ ThemeProvider: ({ children }: { children: React.ReactNode }) => <>{children}>,
+}));
+
+vi.mock("@assistant-ui/react-ai-sdk", () => ({
+ useChatRuntime: vi.fn(() => ({})),
+ AssistantChatTransport: vi.fn(),
+}));
+
+vi.mock("@assistant-ui/react", () => ({
+ AssistantRuntimeProvider: ({ children }: { children: React.ReactNode }) => <>{children}>,
+ AuiConfig: (config: unknown) => config,
+ Tools: (tools: unknown) => tools,
+ defineToolkit: (toolkit: T): T => toolkit,
+ ThreadPrimitive: {
+ Root: ({ children, className }: { children?: React.ReactNode; className?: string }) => (
+
+ {children}
+
+ ),
+ Viewport: ({ children, className }: { children?: React.ReactNode; className?: string }) => (
+
+ {children}
+
+ ),
+ Suggestion: ({ children, prompt }: { children?: React.ReactNode; prompt?: string }) => (
+ {children}
+ ),
+ Messages: () => ,
+ },
+ ComposerPrimitive: {
+ Root: ({ children, className }: { children?: React.ReactNode; className?: string }) => (
+
+ ),
+ Input: ({ placeholder, autoFocus, className }: { placeholder?: string; autoFocus?: boolean; className?: string }) => (
+
+ ),
+ Cancel: ({ children }: { children?: React.ReactNode; asChild?: boolean }) => <>{children}>,
+ Send: ({ children }: { children?: React.ReactNode; asChild?: boolean }) => <>{children}>,
+ },
+ MessagePrimitive: {
+ Root: ({ children, className }: { children?: React.ReactNode; className?: string }) => (
+
+ {children}
+
+ ),
+ Content: () => ,
+ },
+ BranchPickerPrimitive: {
+ Root: ({ children }: { children?: React.ReactNode }) => {children}
,
+ Previous: ({ children }: { children?: React.ReactNode }) => <>{children}>,
+ Next: ({ children }: { children?: React.ReactNode }) => <>{children}>,
+ Number: () => 1,
+ Count: () => 1,
+ },
+ ActionBarPrimitive: {
+ Root: ({ children }: { children?: React.ReactNode }) => {children}
,
+ Copy: ({ children }: { children?: React.ReactNode }) => <>{children}>,
+ Reload: ({ children }: { children?: React.ReactNode }) => <>{children}>,
+ },
+ AuiIf: ({
+ children,
+ condition,
+ }: {
+ children?: React.ReactNode;
+ condition?: (state: { thread: { isEmpty: boolean } }) => boolean;
+ }) => {
+ condition?.({ thread: { isEmpty: true } });
+ return <>{children}>;
+ },
+}));
+
+vi.mock("@assistant-ui/react-markdown", () => ({
+ MarkdownTextPrimitive: () => ,
+}));
+
+function AssistantTestWrapper({ children }: { readonly children: React.ReactNode }) {
+ return <>{children}>;
+}
+
+function TestConsumer() {
+ const { isOpen, toggle } = useAIAssistant();
+ return (
+
+
{isOpen ? "open" : "closed"}
+
+
+ );
+}
+
+describe("AIAssistant Components", () => {
+ beforeEach(() => {
+ vi.clearAllMocks();
+ });
+
+ describe("AIAssistantProvider & AssistantTrigger", () => {
+ it("should render floating trigger button with Mac platform shortcut", () => {
+ render(
+
+
+
+ );
+ const trigger = screen.getByRole("button", { name: /open ai assistant/i });
+ expect(trigger).toBeInTheDocument();
+ expect(screen.getByText("Ask AI")).toBeInTheDocument();
+ });
+
+ it("should render Ctrl+J shortcut on non-Mac platforms", () => {
+ const originalPlatform = navigator.platform;
+ try {
+ Object.defineProperty(navigator, "platform", {
+ value: "Win32",
+ configurable: true,
+ });
+
+ render(
+
+
+
+ );
+
+ expect(screen.getByText("Ctrl+J")).toBeInTheDocument();
+
+ fireEvent.click(screen.getByRole("button", { name: /open ai assistant/i }));
+ expect(screen.getAllByText("Ctrl+J").length).toBeGreaterThan(0);
+ } finally {
+ Object.defineProperty(navigator, "platform", {
+ value: originalPlatform,
+ configurable: true,
+ });
+ }
+ });
+
+ it("should open and close the modal when trigger is clicked", async () => {
+ const user = userEvent.setup();
+ render(
+
+
+
+ );
+
+ const trigger = screen.getByRole("button", { name: /open ai assistant/i });
+ await user.click(trigger);
+
+ expect(screen.getByRole("dialog", { name: /ai assistant chat/i })).toBeInTheDocument();
+ expect(screen.getByText("cur8d Copilot")).toBeInTheDocument();
+
+ const closeButton = screen.getByRole("button", { name: /close ai assistant/i });
+ await user.click(closeButton);
+
+ expect(screen.queryByRole("dialog")).not.toBeInTheDocument();
+ });
+
+ it("should toggle open state with Command/Ctrl + J shortcut and Escape key", () => {
+ render(
+
+
+
+ );
+
+ fireEvent.keyDown(window, { key: "j", metaKey: true });
+ expect(screen.getByRole("dialog")).toBeInTheDocument();
+
+ fireEvent.keyDown(window, { key: "Escape" });
+ expect(screen.queryByRole("dialog")).not.toBeInTheDocument();
+ });
+
+ it("should close when backdrop is clicked", () => {
+ render(
+
+
+
+ );
+
+ fireEvent.keyDown(window, { key: "j", metaKey: true });
+ expect(screen.getByRole("dialog")).toBeInTheDocument();
+
+ const backdrop = document.querySelector(".ai-modal__backdrop");
+ expect(backdrop).toBeInTheDocument();
+ if (backdrop) {
+ fireEvent.click(backdrop);
+ }
+ expect(screen.queryByRole("dialog")).not.toBeInTheDocument();
+ });
+
+ it("should provide safe fallback if useAIAssistant is used outside provider", () => {
+ render();
+ expect(screen.getByTestId("status")).toHaveTextContent("closed");
+ fireEvent.click(screen.getByText("Toggle"));
+ expect(screen.getByTestId("status")).toHaveTextContent("closed");
+ });
+
+ it("should work standalone without AIAssistantProvider", () => {
+ render(
+
+
+
+ );
+
+ const trigger = screen.getByRole("button", { name: /open ai assistant/i });
+ fireEvent.click(trigger);
+ expect(screen.getByRole("dialog")).toBeInTheDocument();
+
+ fireEvent.keyDown(window, { key: "Escape" });
+ expect(screen.queryByRole("dialog")).not.toBeInTheDocument();
+
+ // Standalone keyboard shortcut
+ fireEvent.keyDown(window, { key: "j", ctrlKey: true });
+ expect(screen.getByRole("dialog")).toBeInTheDocument();
+ });
+ });
+
+ describe("Composer Component", () => {
+ afterEach(() => {
+ vi.restoreAllMocks();
+ });
+
+ it("should render default composer when speech is unsupported", () => {
+ vi.spyOn(speechHook, "useSpeechToText").mockReturnValue({
+ isListening: false,
+ transcript: "",
+ isSupported: false,
+ error: null,
+ startListening: vi.fn(),
+ stopListening: vi.fn(),
+ toggleListening: vi.fn(),
+ resetTranscript: vi.fn(),
+ });
+
+ render(
+
+
+
+ );
+ expect(screen.getByPlaceholderText(/Ask cur8d assistant/i)).toBeInTheDocument();
+ expect(screen.queryByRole("button", { name: /voice input/i })).not.toBeInTheDocument();
+ expect(screen.getByRole("button", { name: /send message/i })).toBeInTheDocument();
+ expect(screen.getByRole("button", { name: /cancel generation/i })).toBeInTheDocument();
+ });
+
+ it("should render mic button and toggle speech when supported", () => {
+ const toggleListening = vi.fn();
+ vi.spyOn(speechHook, "useSpeechToText").mockReturnValue({
+ isListening: false,
+ transcript: "",
+ isSupported: true,
+ error: null,
+ startListening: vi.fn(),
+ stopListening: vi.fn(),
+ toggleListening,
+ resetTranscript: vi.fn(),
+ });
+
+ render(
+
+
+
+ );
+ const micButton = screen.getByRole("button", { name: /start voice input/i });
+ expect(micButton).toBeInTheDocument();
+
+ fireEvent.click(micButton);
+ expect(toggleListening).toHaveBeenCalled();
+ });
+
+ it("should render listening indicator when speech recognition is active", () => {
+ const toggleListening = vi.fn();
+ vi.spyOn(speechHook, "useSpeechToText").mockReturnValue({
+ isListening: true,
+ transcript: "speech test",
+ isSupported: true,
+ error: null,
+ startListening: vi.fn(),
+ stopListening: vi.fn(),
+ toggleListening,
+ resetTranscript: vi.fn(),
+ });
+
+ render(
+
+
+
+ );
+ expect(screen.getByRole("button", { name: /stop listening/i })).toBeInTheDocument();
+ expect(screen.getByText("Listening...")).toBeInTheDocument();
+ });
+ });
+
+ describe("Thread and Markdown Components", () => {
+ describe("CodeBlock", () => {
+ it("should render code and language header and copy to clipboard", async () => {
+ vi.useFakeTimers();
+ const writeTextMock = vi.fn().mockResolvedValue(undefined);
+ Object.defineProperty(navigator, "clipboard", {
+ value: {
+ writeText: writeTextMock,
+ },
+ configurable: true,
+ writable: true,
+ });
+
+ render();
+ expect(screen.getByText("typescript")).toBeInTheDocument();
+ expect(screen.getByText("const a = 1;")).toBeInTheDocument();
+
+ const copyButton = screen.getByRole("button", { name: /copy code block/i });
+ expect(copyButton).toBeInTheDocument();
+
+ fireEvent.click(copyButton);
+ await act(async () => { });
+ expect(writeTextMock).toHaveBeenCalledWith("const a = 1;");
+ expect(screen.getByText("Copied")).toBeInTheDocument();
+
+ act(() => {
+ vi.advanceTimersByTime(2100);
+ });
+ expect(screen.getByText("Copy")).toBeInTheDocument();
+
+ vi.useRealTimers();
+ });
+
+ it("should fallback gracefully if clipboard write fails", async () => {
+ Object.defineProperty(navigator, "clipboard", {
+ value: {
+ writeText: vi.fn().mockRejectedValue(new Error("Permission denied")),
+ },
+ configurable: true,
+ writable: true,
+ });
+
+ render();
+ expect(screen.getByText("text")).toBeInTheDocument();
+
+ const copyButton = screen.getByRole("button", { name: /copy code block/i });
+ fireEvent.click(copyButton);
+ expect(screen.getByText("Copy")).toBeInTheDocument();
+ });
+ });
+
+ describe("SuggestedPrompts", () => {
+ it("should render prompt buttons", () => {
+ render(
+
+
+
+ );
+ expect(screen.getByText("How can I assist you today?")).toBeInTheDocument();
+ expect(screen.getByText("Search documentation")).toBeInTheDocument();
+ expect(screen.getByText("Switch to dark mode")).toBeInTheDocument();
+ expect(screen.getByText("Show system info")).toBeInTheDocument();
+ expect(screen.getByText("How to test")).toBeInTheDocument();
+ });
+ });
+
+ describe("Markdown components", () => {
+ it("should render MarkdownCode inline and block variants", () => {
+ const { getByText, rerender } = render(
+ const x = 10;
+ );
+ expect(getByText("const x = 10;").tagName).toBe("CODE");
+
+ rerender(
+
+ {"function test() {\n return 1;\n}"}
+
+ );
+ expect(getByText("javascript")).toBeInTheDocument();
+ expect(getByText(/function test/)).toBeInTheDocument();
+
+ // Children as array
+ rerender(
+
+ {["body", " { ", "margin: 0;", " }"]}
+
+ );
+ expect(getByText("css")).toBeInTheDocument();
+ });
+
+ it("should render MarkdownParagraph, Lists, and Links", () => {
+ const { getByText, container } = render(
+
+ Paragraph text
+
+ Bullet 1
+
+
+ Ordered 1
+
+ cur8d Link
+
+ );
+
+ expect(getByText("Paragraph text")).toBeInTheDocument();
+ expect(getByText("Bullet 1")).toBeInTheDocument();
+ expect(getByText("Ordered 1")).toBeInTheDocument();
+ const link = getByText("cur8d Link");
+ expect(link).toHaveAttribute("href", "https://cur8d.dev");
+ expect(link).toHaveAttribute("target", "_blank");
+ expect(link).toHaveAttribute("rel", "noopener noreferrer");
+ expect(container.querySelector("ul")).toBeInTheDocument();
+ expect(container.querySelector("ol")).toBeInTheDocument();
+ });
+ });
+
+ describe("Thread component", () => {
+ it("should render thread root and composer", () => {
+ const { container } = render(
+
+
+
+ );
+ expect(container).toBeInTheDocument();
+ });
+ });
+ });
+
+ describe("Generative UI Tools", () => {
+ const defaultToolProps = {
+ type: "tool-call" as const,
+ addResult: vi.fn(),
+ resume: vi.fn(),
+ respondToApproval: vi.fn(),
+ toolCallId: "tool-call-1",
+ argsText: "",
+ };
+
+ it("should export assistantToolkit with all tool renderers configured", () => {
+ expect(assistantToolkit).toBeDefined();
+ expect(assistantToolkit.searchDocumentation.render).toBe(DocSearchTool);
+ expect(assistantToolkit.setTheme.render).toBe(ThemeTool);
+ expect(assistantToolkit.getSystemInfo.render).toBe(SystemInfoTool);
+ expect(assistantToolkit.navigatePage.render).toBe(NavigatePageTool);
+ });
+
+ describe("DocSearchTool", () => {
+ it("should render running state with query and default topics fallback", () => {
+ const { getByText, rerender } = render(
+
+ );
+ expect(getByText(/Searching documentation for "getting started"/i)).toBeInTheDocument();
+
+ rerender(
+
+ );
+ expect(getByText(/Searching documentation for "topics"/i)).toBeInTheDocument();
+ });
+
+ it("should render empty state when no results", () => {
+ const { getByText } = render(
+
+ );
+ expect(getByText(/No documentation matches found/i)).toBeInTheDocument();
+ });
+
+ it("should render document search result cards with links", () => {
+ const { getByText } = render(
+
+ );
+ expect(getByText("Project Overview")).toBeInTheDocument();
+ expect(getByText("Learn about cur8d architecture")).toBeInTheDocument();
+ expect(getByText("Getting Started")).toBeInTheDocument();
+ });
+ });
+
+ describe("ThemeTool", () => {
+ it("should render running and completed states for dark, light, and system themes", () => {
+ // Dark theme running
+ const { getByText, rerender } = render(
+
+ );
+ expect(getByText(/Switching theme to dark/i)).toBeInTheDocument();
+
+ // Light theme running
+ rerender(
+
+ );
+ expect(getByText(/Switching theme to light/i)).toBeInTheDocument();
+
+ // System theme running with undefined args fallback
+ rerender(
+
+ );
+ expect(getByText(/Switching theme to system/i)).toBeInTheDocument();
+
+ // Completed light theme
+ rerender(
+
+ );
+ expect(getByText(/Light applied/i)).toBeInTheDocument();
+ expect(mockSetTheme).toHaveBeenCalledWith("light");
+
+ // Completed dark theme
+ rerender(
+
+ );
+ expect(getByText(/Dark applied/i)).toBeInTheDocument();
+
+ // Completed system theme
+ rerender(
+
+ );
+ expect(getByText(/System applied/i)).toBeInTheDocument();
+ });
+ });
+
+ describe("SystemInfoTool", () => {
+ it("should render running state", () => {
+ const { getByText } = render(
+
+ );
+ expect(getByText(/Querying system metrics/i)).toBeInTheDocument();
+ });
+
+ it("should return null if complete but no result", () => {
+ const { container } = render(
+
+ );
+ expect(container).toBeEmptyDOMElement();
+ });
+
+ it("should render completed system metrics card with custom provider", () => {
+ const { getByText } = render(
+
+ );
+ expect(getByText("System Information")).toBeInTheDocument();
+ expect(getByText("Next.js 16 (App Router / Turbopack)")).toBeInTheDocument();
+ expect(getByText("HeroUI v3 + Tailwind CSS v4")).toBeInTheDocument();
+ expect(getByText("operational")).toBeInTheDocument();
+ expect(getByText("development (gemini)")).toBeInTheDocument();
+ });
+ });
+
+ describe("NavigatePageTool", () => {
+ it("should render navigation prompt card and trigger router.push when complete", () => {
+ const { getByText } = render(
+
+ );
+ expect(getByText("/docs")).toBeInTheDocument();
+ expect(getByText("Go now")).toBeInTheDocument();
+ expect(mockPush).toHaveBeenCalledWith("/docs");
+ });
+ });
+ });
+});
diff --git a/tests/unit/components/AIAssistant/thread-messages.test.tsx b/tests/unit/components/AIAssistant/thread-messages.test.tsx
new file mode 100644
index 0000000..8b8f37f
--- /dev/null
+++ b/tests/unit/components/AIAssistant/thread-messages.test.tsx
@@ -0,0 +1,68 @@
+import { describe, it, expect, vi } from "vitest";
+import { render, screen } from "@testing-library/react";
+import { UserMessage, AssistantMessage, AssistantMessageContent } from "@/components/AIAssistant/Thread";
+
+vi.mock("@assistant-ui/react", () => ({
+ MessagePrimitive: {
+ Root: ({ children, className }: { children?: React.ReactNode; className?: string }) => (
+
+ {children}
+
+ ),
+ Content: ({ components }: { components?: Record }) => (
+
+ {components && "components-configured"}
+
+ ),
+ },
+ BranchPickerPrimitive: {
+ Root: ({ children }: { children?: React.ReactNode }) => {children}
,
+ Previous: ({ children, asChild: _asChild }: { children?: React.ReactNode; asChild?: boolean }) => {children}
,
+ Next: ({ children, asChild: _asChild }: { children?: React.ReactNode; asChild?: boolean }) => {children}
,
+ Number: () => 1,
+ Count: () => 2,
+ },
+ ActionBarPrimitive: {
+ Root: ({ children }: { children?: React.ReactNode }) => {children}
,
+ Copy: ({ children, asChild: _asChild }: { children?: React.ReactNode; asChild?: boolean }) => {children}
,
+ Reload: ({ children, asChild: _asChild }: { children?: React.ReactNode; asChild?: boolean }) => {children}
,
+ },
+ ThreadPrimitive: {
+ Root: ({ children }: { children?: React.ReactNode }) => {children}
,
+ Viewport: ({ children }: { children?: React.ReactNode }) => {children}
,
+ Suggestion: ({ children }: { children?: React.ReactNode }) => {children}
,
+ Messages: () => ,
+ },
+ AuiIf: ({ children }: { children?: React.ReactNode }) => <>{children}>,
+}));
+
+vi.mock("@assistant-ui/react-markdown", () => ({
+ MarkdownTextPrimitive: ({ components }: { components?: Record }) => (
+ {components ? "markdown-rendered" : "plain"}
+ ),
+}));
+
+describe("Thread Message Primitives Component Rendering", () => {
+ it("should render UserMessage layout and branch picker controls", () => {
+ render();
+ expect(screen.getByTestId("message-root")).toBeInTheDocument();
+ expect(screen.getByTestId("branch-root")).toBeInTheDocument();
+ expect(screen.getByTestId("branch-num")).toHaveTextContent("1");
+ expect(screen.getByTestId("branch-count")).toHaveTextContent("2");
+ expect(screen.getByRole("button", { name: /previous branch/i })).toBeInTheDocument();
+ expect(screen.getByRole("button", { name: /next branch/i })).toBeInTheDocument();
+ });
+
+ it("should render AssistantMessage layout with action bar controls and tools", () => {
+ render();
+ expect(screen.getByTestId("message-root")).toBeInTheDocument();
+ expect(screen.getByTestId("action-root")).toBeInTheDocument();
+ expect(screen.getByRole("button", { name: /copy assistant message/i })).toBeInTheDocument();
+ expect(screen.getByRole("button", { name: /regenerate response/i })).toBeInTheDocument();
+ });
+
+ it("should render AssistantMessageContent with markdown components mapping", () => {
+ render();
+ expect(screen.getByTestId("markdown-primitive")).toHaveTextContent("markdown-rendered");
+ });
+});
diff --git a/tests/unit/components/ThemeToggle/index.test.tsx b/tests/unit/components/ThemeToggle/index.test.tsx
index 749b459..e5d975b 100644
--- a/tests/unit/components/ThemeToggle/index.test.tsx
+++ b/tests/unit/components/ThemeToggle/index.test.tsx
@@ -14,7 +14,7 @@ describe("ThemeToggle", () => {
vi.clearAllMocks();
});
- it("renders correctly with target theme label", () => {
+ it("renders correctly with target theme label when theme is light", () => {
(useTheme as Mock).mockReturnValue({
resolvedTheme: "light",
setTheme,
@@ -41,7 +41,7 @@ describe("ThemeToggle", () => {
expect(setTheme).toHaveBeenCalledWith("dark");
});
- it("shows correct label when theme is dark", () => {
+ it("shows correct label and icon when theme is dark", () => {
(useTheme as Mock).mockReturnValue({
resolvedTheme: "dark",
setTheme,
@@ -52,5 +52,8 @@ describe("ThemeToggle", () => {
// When dark, it should suggest switching to light
const button = screen.getByLabelText("Switch to light theme");
expect(button).toBeInTheDocument();
+
+ fireEvent.click(button);
+ expect(setTheme).toHaveBeenCalledWith("light");
});
});
diff --git a/tests/unit/docs/app/robots.test.ts b/tests/unit/docs/app/robots.test.ts
new file mode 100644
index 0000000..5a16986
--- /dev/null
+++ b/tests/unit/docs/app/robots.test.ts
@@ -0,0 +1,15 @@
+import { describe, it, expect } from "vitest";
+import robots from "@docs/app/robots";
+
+describe("Docs Robots", () => {
+ it("returns the correct robots configuration", () => {
+ const result = robots();
+ expect(result).toEqual({
+ rules: {
+ userAgent: "*",
+ allow: "/",
+ },
+ sitemap: "https://cur8d.dev/typescript/sitemap.xml",
+ });
+ });
+});
diff --git a/tests/unit/docs/app/sitemap.test.ts b/tests/unit/docs/app/sitemap.test.ts
index 3a62071..f1aaf56 100644
--- a/tests/unit/docs/app/sitemap.test.ts
+++ b/tests/unit/docs/app/sitemap.test.ts
@@ -27,7 +27,7 @@ describe("Docs Sitemap", () => {
vi.useRealTimers();
});
- it("returns correct sitemap based on MDX files", async () => {
+ it("returns correct sitemap based on MDX files including root index and nested index", async () => {
(fs.existsSync as Mock).mockReturnValue(true);
(fs.promises.readdir as Mock).mockImplementation((dir: string) => {
if (dir === CONTENT_DIR) {
@@ -35,6 +35,8 @@ describe("Docs Sitemap", () => {
{ name: "index.mdx", isDirectory: () => false, isFile: () => true },
{ name: "about.md", isDirectory: () => false, isFile: () => true },
{ name: "nested", isDirectory: () => true, isFile: () => false },
+ { name: "guides", isDirectory: () => true, isFile: () => false },
+ { name: "other.txt", isDirectory: () => false, isFile: () => true }, // Non-MDX file ignored
]);
}
if (dir === path.join(CONTENT_DIR, "nested")) {
@@ -42,17 +44,23 @@ describe("Docs Sitemap", () => {
{ name: "page.mdx", isDirectory: () => false, isFile: () => true },
]);
}
+ if (dir === path.join(CONTENT_DIR, "guides")) {
+ return Promise.resolve([
+ { name: "index.md", isDirectory: () => false, isFile: () => true }, // Nested index file
+ ]);
+ }
return Promise.resolve([]);
});
const result = await sitemap();
- expect(result).toHaveLength(3);
+ expect(result).toHaveLength(4);
const urls = result.map((entry: MetadataRoute.Sitemap[number]) => entry.url);
expect(urls).toContain("https://cur8d.dev/typescript/");
expect(urls).toContain("https://cur8d.dev/typescript/about/");
expect(urls).toContain("https://cur8d.dev/typescript/nested/page/");
+ expect(urls).toContain("https://cur8d.dev/typescript/guides/");
const rootEntry = result.find(
(entry: MetadataRoute.Sitemap[number]) => entry.url === "https://cur8d.dev/typescript/",
@@ -71,6 +79,28 @@ describe("Docs Sitemap", () => {
});
});
+ it("handles Windows path separators gracefully", async () => {
+ (fs.existsSync as Mock).mockReturnValue(true);
+ (fs.promises.readdir as Mock).mockImplementation((dir: string) => {
+ if (dir === CONTENT_DIR) {
+ return Promise.resolve([
+ { name: "guide.mdx", isDirectory: () => false, isFile: () => true },
+ ]);
+ }
+ return Promise.resolve([]);
+ });
+
+ const originalSep = path.sep;
+ try {
+ Object.defineProperty(path, "sep", { value: "\\", configurable: true });
+ const result = await sitemap();
+ expect(result).toHaveLength(1);
+ expect(result[0].url).toBe("https://cur8d.dev/typescript/guide/");
+ } finally {
+ Object.defineProperty(path, "sep", { value: originalSep, configurable: true });
+ }
+ });
+
it("returns empty array if content directory does not exist", async () => {
(fs.existsSync as Mock).mockReturnValue(false);
const result = await sitemap();
diff --git a/tests/unit/hooks/use-speech-to-text.test.ts b/tests/unit/hooks/use-speech-to-text.test.ts
new file mode 100644
index 0000000..2f033df
--- /dev/null
+++ b/tests/unit/hooks/use-speech-to-text.test.ts
@@ -0,0 +1,261 @@
+import { describe, it, expect, vi, beforeEach, afterEach } from "vitest";
+import { renderHook, act } from "@testing-library/react";
+import { useSpeechToText } from "@/hooks/use-speech-to-text";
+
+describe("useSpeechToText hook", () => {
+ beforeEach(() => {
+ vi.clearAllMocks();
+ });
+
+ afterEach(() => {
+ delete (window as unknown as Record).SpeechRecognition;
+ delete (window as unknown as Record).webkitSpeechRecognition;
+ });
+
+ it("should initialize with default unsupported state when SpeechRecognition is not available", () => {
+ const { result } = renderHook(() => useSpeechToText());
+ expect(result.current.isSupported).toBe(false);
+ expect(result.current.isListening).toBe(false);
+ expect(result.current.transcript).toBe("");
+ expect(result.current.error).toBeNull();
+
+ // Calling startListening/stopListening when unsupported does not crash
+ act(() => {
+ result.current.startListening();
+ result.current.stopListening();
+ });
+ });
+
+ it("should support webkitSpeechRecognition when standard SpeechRecognition is undefined", () => {
+ const mockStart = vi.fn();
+ const mockStop = vi.fn();
+ const mockAbort = vi.fn();
+
+ class MockWebkitSpeechRecognition {
+ continuous = false;
+ interimResults = false;
+ lang = "en-US";
+ start = mockStart;
+ stop = mockStop;
+ abort = mockAbort;
+ onstart: (() => void) | null = null;
+ onresult: ((event: unknown) => void) | null = null;
+ onerror: ((event: unknown) => void) | null = null;
+ onend: (() => void) | null = null;
+ }
+
+ (window as unknown as Record).webkitSpeechRecognition = MockWebkitSpeechRecognition;
+
+ const { result } = renderHook(() => useSpeechToText({ lang: "fr-FR", continuous: true, interimResults: false }));
+ expect(result.current.isSupported).toBe(true);
+ });
+
+ it("should handle full lifecycle: start, events, toggle, reset, and unmount abort", () => {
+ const mockStart = vi.fn();
+ const mockStop = vi.fn();
+ const mockAbort = vi.fn();
+ let instance: {
+ onstart: (() => void) | null;
+ onresult: ((event: { resultIndex: number; results: Array> }) => void) | null;
+ onerror: ((event: { error: string }) => void) | null;
+ onend: (() => void) | null;
+ } | null = null;
+
+ class MockSpeechRecognition {
+ continuous = false;
+ interimResults = false;
+ lang = "en-US";
+ start = mockStart;
+ stop = mockStop;
+ abort = mockAbort;
+ onstart: (() => void) | null = null;
+ onresult: ((event: { resultIndex: number; results: Array> }) => void) | null = null;
+ onerror: ((event: { error: string }) => void) | null = null;
+ onend: (() => void) | null = null;
+
+ constructor() {
+ instance = this;
+ }
+ }
+
+ (window as unknown as Record).SpeechRecognition = MockSpeechRecognition;
+
+ const onResult = vi.fn();
+ const { result, unmount } = renderHook(() => useSpeechToText({ onResult }));
+
+ expect(result.current.isSupported).toBe(true);
+
+ // Start listening
+ act(() => {
+ result.current.startListening();
+ instance?.onstart?.();
+ });
+ expect(mockStart).toHaveBeenCalled();
+ expect(result.current.isListening).toBe(true);
+
+ // Receive results across multiple segments
+ act(() => {
+ instance?.onresult?.({
+ resultIndex: 0,
+ results: [
+ [{ transcript: "Hello " }],
+ [{ transcript: "world" }],
+ ],
+ });
+ });
+ expect(result.current.transcript).toBe("Hello world");
+ expect(onResult).toHaveBeenCalledWith("Hello world");
+
+ // Toggle listening off
+ act(() => {
+ result.current.toggleListening();
+ });
+ expect(mockStop).toHaveBeenCalled();
+ expect(result.current.isListening).toBe(false);
+
+ // Toggle listening back on
+ act(() => {
+ result.current.toggleListening();
+ });
+ expect(result.current.isListening).toBe(true);
+
+ // Error event
+ act(() => {
+ instance?.onerror?.({ error: "audio-capture" });
+ });
+ expect(result.current.error).toBe("audio-capture");
+ expect(result.current.isListening).toBe(false);
+
+ // End event
+ act(() => {
+ instance?.onend?.();
+ });
+ expect(result.current.isListening).toBe(false);
+
+ // Reset transcript
+ act(() => {
+ result.current.resetTranscript();
+ });
+ expect(result.current.transcript).toBe("");
+ expect(result.current.error).toBeNull();
+
+ // Unmount triggers abort
+ unmount();
+ expect(mockAbort).toHaveBeenCalled();
+ });
+
+ it("should handle empty speech results without onResult callback", () => {
+ let instance: {
+ onresult: ((event: { resultIndex: number; results: Array> }) => void) | null;
+ } | null = null;
+
+ class MockSpeechRecognition {
+ continuous = false;
+ interimResults = false;
+ lang = "en-US";
+ start = vi.fn();
+ stop = vi.fn();
+ abort = vi.fn();
+ onstart = null;
+ onresult = null;
+ onerror = null;
+ onend = null;
+
+ constructor() {
+ instance = this as unknown as { onresult: ((event: { resultIndex: number; results: Array> }) => void) | null };
+ }
+ }
+
+ (window as unknown as Record).SpeechRecognition = MockSpeechRecognition;
+
+ const { result } = renderHook(() => useSpeechToText());
+ act(() => {
+ instance?.onresult?.({
+ resultIndex: 0,
+ results: [[{ transcript: "" }]],
+ });
+ });
+ expect(result.current.transcript).toBe("");
+ });
+
+ it("should catch and record errors when start() throws", () => {
+ class ThrowingStartRecognition {
+ continuous = false;
+ interimResults = false;
+ lang = "en-US";
+ start = () => {
+ throw new Error("Microphone permission denied");
+ };
+ stop = vi.fn();
+ abort = vi.fn();
+ onstart = null;
+ onresult = null;
+ onerror = null;
+ onend = null;
+ }
+
+ (window as unknown as Record).SpeechRecognition = ThrowingStartRecognition;
+
+ const { result } = renderHook(() => useSpeechToText());
+
+ act(() => {
+ result.current.startListening();
+ });
+
+ expect(result.current.error).toBe("Microphone permission denied");
+ });
+
+ it("should handle non-Error exceptions in startListening", () => {
+ class NonErrorThrowingRecognition {
+ continuous = false;
+ interimResults = false;
+ lang = "en-US";
+ start = () => {
+ throw "String error";
+ };
+ stop = vi.fn();
+ abort = vi.fn();
+ onstart = null;
+ onresult = null;
+ onerror = null;
+ onend = null;
+ }
+
+ (window as unknown as Record).SpeechRecognition = NonErrorThrowingRecognition;
+
+ const { result } = renderHook(() => useSpeechToText());
+
+ act(() => {
+ result.current.startListening();
+ });
+
+ expect(result.current.error).toBe("Failed to start speech recognition");
+ });
+
+ it("should safely ignore errors thrown by stop()", () => {
+ class ThrowingStopRecognition {
+ continuous = false;
+ interimResults = false;
+ lang = "en-US";
+ start = vi.fn();
+ stop = () => {
+ throw new Error("Already stopped");
+ };
+ abort = vi.fn();
+ onstart = null;
+ onresult = null;
+ onerror = null;
+ onend = null;
+ }
+
+ (window as unknown as Record).SpeechRecognition = ThrowingStopRecognition;
+
+ const { result } = renderHook(() => useSpeechToText());
+
+ expect(() => {
+ act(() => {
+ result.current.stopListening();
+ });
+ }).not.toThrow();
+ });
+});
diff --git a/tests/unit/lib/ai/config.test.ts b/tests/unit/lib/ai/config.test.ts
new file mode 100644
index 0000000..ba695f3
--- /dev/null
+++ b/tests/unit/lib/ai/config.test.ts
@@ -0,0 +1,165 @@
+import { describe, it, expect, vi, beforeEach } from "vitest";
+import { getModel, defaultModel } from "@/lib/ai/config";
+import { createMockModel, mockModel } from "@/lib/ai/mock-provider";
+import type {
+ LanguageModelV3,
+ LanguageModelV3CallOptions,
+ LanguageModelV3StreamPart,
+} from "@ai-sdk/provider";
+
+describe("AI Config & Model Resolution", () => {
+ beforeEach(() => {
+ vi.unstubAllEnvs();
+ });
+
+ it.each([
+ { provider: "mock", expectedModelId: "cur8d-mock-model" },
+ { provider: "google", expectedModelId: "cur8d-mock-model" },
+ { provider: "openai", expectedModelId: "cur8d-mock-model" },
+ { provider: "anthropic", expectedModelId: "cur8d-mock-model" },
+ { provider: "unknown-provider", expectedModelId: "cur8d-mock-model" },
+ ])(
+ "should return $expectedModelId when provider is $provider without API key",
+ ({ provider, expectedModelId }) => {
+ const model = getModel({
+ provider: provider as "mock" | "google" | "openai" | "anthropic",
+ }) as LanguageModelV3;
+ expect(model.modelId).toBe(expectedModelId);
+ }
+ );
+
+ it("should return google model when API key is provided and default model name if omitted", () => {
+ const model = getModel({ provider: "google", apiKey: "test-google-key" }) as LanguageModelV3;
+ expect(model.modelId).toBe("gemini-2.5-flash");
+ });
+
+ it("should return openai model with default and custom model names", () => {
+ const defaultOpenAI = getModel({ provider: "openai", apiKey: "test-openai-key" }) as LanguageModelV3;
+ expect(defaultOpenAI.modelId).toBe("gpt-4o-mini");
+
+ const customOpenAI = getModel({ provider: "openai", apiKey: "test-openai-key", model: "gpt-4o", baseURL: "https://api.openai.com/v1" }) as LanguageModelV3;
+ expect(customOpenAI.modelId).toBe("gpt-4o");
+ });
+
+ it("should return anthropic model with default and custom model names", () => {
+ const defaultAnthropic = getModel({ provider: "anthropic", apiKey: "test-anthropic-key" }) as LanguageModelV3;
+ expect(defaultAnthropic.modelId).toBe("claude-3-7-sonnet-20250219");
+
+ const customAnthropic = getModel({ provider: "anthropic", apiKey: "test-anthropic-key", model: "claude-3-haiku", baseURL: "https://api.anthropic.com" }) as LanguageModelV3;
+ expect(customAnthropic.modelId).toBe("claude-3-haiku");
+ });
+
+ it("should return custom OpenAI-compatible model with default fallback values", () => {
+ const model = getModel({ provider: "custom" }) as LanguageModelV3;
+ expect(model.modelId).toBe("llama3.2");
+
+ const configuredModel = getModel({ provider: "custom", apiKey: "ollama-key", baseURL: "http://localhost:11434/v1", model: "mistral" }) as LanguageModelV3;
+ expect(configuredModel.modelId).toBe("mistral");
+ });
+
+ it("should resolve defaultModel export properly", () => {
+ expect(defaultModel).toBeDefined();
+ expect((defaultModel as unknown as LanguageModelV3).modelId).toBe("cur8d-mock-model");
+ });
+});
+
+describe("Mock Provider", () => {
+ it("should support doGenerate with various prompt structures", async () => {
+ const model = createMockModel() as unknown as LanguageModelV3;
+
+ // Array of objects with parts
+ const res1 = await model.doGenerate({
+ prompt: [
+ { role: "user", content: [{ type: "text", text: "tell me about features" }] },
+ { role: "user", content: [{ nonText: true }, null] },
+ ],
+ } as unknown as LanguageModelV3CallOptions);
+
+ const firstContent = res1.content[0];
+ if (firstContent.type === "text") {
+ expect(firstContent.text).toContain("Mock AI response");
+ expect(firstContent.text).toContain("tell me about features");
+ }
+ expect(res1.finishReason.unified).toBe("stop");
+
+ // Array of strings and primitive objects
+ const res2 = await model.doGenerate({
+ prompt: ["simple string message", { content: "direct string content" }, { unexpected: true }, 12345],
+ } as unknown as LanguageModelV3CallOptions);
+ const content2 = res2.content[0];
+ if (content2.type === "text") {
+ expect(content2.text).toContain("simple string message");
+ expect(content2.text).toContain("direct string content");
+ }
+
+ // Single string prompt
+ const res3 = await model.doGenerate({
+ prompt: "single string",
+ } as unknown as LanguageModelV3CallOptions);
+ const content3 = res3.content[0];
+ if (content3.type === "text") {
+ expect(content3.text).toContain("single string");
+ }
+
+ // Unknown prompt type
+ const res4 = await model.doGenerate({
+ prompt: null,
+ } as unknown as LanguageModelV3CallOptions);
+ const content4 = res4.content[0];
+ if (content4.type === "text") {
+ expect(content4.text).toContain('Mock AI response for query: "".');
+ }
+ });
+
+ it.each([
+ { prompt: "please switch to dark mode", expectedTool: "setTheme", expectedInput: '{"theme":"dark"}' },
+ { prompt: "please switch to light mode", expectedTool: "setTheme", expectedInput: '{"theme":"light"}' },
+ { prompt: "show system info and stack details", expectedTool: "getSystemInfo", expectedInput: "{}" },
+ { prompt: "search documentation for testing", expectedTool: "searchDocumentation", expectedInput: '{"query":"documentation for testing"}' },
+ { prompt: "show documentation guide", expectedTool: "searchDocumentation", expectedInput: '{"query":"overview"}' },
+ ])(
+ "should simulate $expectedTool tool call when prompt is '$prompt'",
+ async ({ prompt, expectedTool, expectedInput }) => {
+ const model = createMockModel({ simulateTools: true }) as unknown as LanguageModelV3;
+ const res = await model.doStream({
+ prompt,
+ } as unknown as LanguageModelV3CallOptions);
+
+ const reader = res.stream.getReader();
+ const chunk1 = await reader.read();
+ expect(chunk1.value?.type).toBe("tool-call");
+ const toolCall = chunk1.value as Extract;
+ expect(toolCall.toolName).toBe(expectedTool);
+ expect(toolCall.input).toBe(expectedInput);
+
+ const chunk2 = await reader.read();
+ expect(chunk2.value?.type).toBe("finish");
+ }
+ );
+
+ it("should stream default welcome chunks for general prompts", async () => {
+ const model = createMockModel({ simulateTools: false }) as unknown as LanguageModelV3;
+ const res = await model.doStream({
+ prompt: "hello world",
+ } as unknown as LanguageModelV3CallOptions);
+
+ const reader = res.stream.getReader();
+ const chunk1 = await reader.read();
+ expect(chunk1.value?.type).toBe("text-delta");
+ expect((chunk1.value as Extract)?.delta).toContain("Welcome to cur8d AI Assistant");
+
+ // Read until finish
+ let finished = false;
+ while (!finished) {
+ const { value, done } = await reader.read();
+ if (done || value?.type === "finish") {
+ finished = true;
+ }
+ }
+ expect(finished).toBe(true);
+ });
+
+ it("should expose static singleton mockModel", () => {
+ expect(mockModel).toBeDefined();
+ });
+});
diff --git a/tests/unit/lib/ai/tools.test.ts b/tests/unit/lib/ai/tools.test.ts
new file mode 100644
index 0000000..2b6b662
--- /dev/null
+++ b/tests/unit/lib/ai/tools.test.ts
@@ -0,0 +1,87 @@
+import { describe, it, expect } from "vitest";
+import {
+ searchDocumentation,
+ setTheme,
+ getSystemInfo,
+ navigatePage,
+ DOCS_CATALOG,
+ aiTools,
+ type DocItem,
+ type SystemInfo,
+} from "@/lib/ai/tools";
+
+describe("AI Generative Tools", () => {
+ it("should have all required tools registered", () => {
+ expect(aiTools.searchDocumentation).toBeDefined();
+ expect(aiTools.setTheme).toBeDefined();
+ expect(aiTools.getSystemInfo).toBeDefined();
+ expect(aiTools.navigatePage).toBeDefined();
+ });
+
+ describe("searchDocumentation", () => {
+ it("should return matching documentation articles", async () => {
+ const execute = searchDocumentation.execute;
+ if (!execute) throw new Error("searchDocumentation has no execute method");
+
+ const result = (await execute({ query: "testing" }, {} as never)) as { query: string; results: DocItem[] };
+ expect(result.results.length).toBeGreaterThan(0);
+ expect(result.results[0].title).toBe("Testing Guide");
+ });
+
+ it("should return fallback catalog results if no direct match", async () => {
+ const execute = searchDocumentation.execute;
+ if (!execute) throw new Error("searchDocumentation has no execute method");
+
+ const result = (await execute({ query: "xyznonexistent" }, {} as never)) as { query: string; results: DocItem[] };
+ expect(result.results).toHaveLength(3);
+ });
+ });
+
+ describe("setTheme", () => {
+ it("should handle light, dark, and system themes", async () => {
+ const execute = setTheme.execute;
+ if (!execute) throw new Error("setTheme has no execute method");
+
+ const darkResult = (await execute({ theme: "dark" }, {} as never)) as { success: boolean; theme: string };
+ expect(darkResult.success).toBe(true);
+ expect(darkResult.theme).toBe("dark");
+
+ const lightResult = (await execute({ theme: "light" }, {} as never)) as { success: boolean; theme: string };
+ expect(lightResult.success).toBe(true);
+ expect(lightResult.theme).toBe("light");
+ });
+ });
+
+ describe("getSystemInfo", () => {
+ it("should return project stack metadata", async () => {
+ const execute = getSystemInfo.execute;
+ if (!execute) throw new Error("getSystemInfo has no execute method");
+
+ const info = (await execute({}, {} as never)) as SystemInfo;
+ expect(info.name).toBe("cur8d");
+ expect(info.framework).toContain("Next.js");
+ expect(info.designSystem).toContain("HeroUI");
+ expect(info.status).toBe("operational");
+ });
+ });
+
+ describe("navigatePage", () => {
+ it("should return navigation confirmation for given route", async () => {
+ const execute = navigatePage.execute;
+ if (!execute) throw new Error("navigatePage has no execute method");
+
+ const res = (await execute({ route: "/docs" }, {} as never)) as { success: boolean; route: string; message: string };
+ expect(res.success).toBe(true);
+ expect(res.route).toBe("/docs");
+ expect(res.message).toContain("/docs");
+ });
+ });
+
+ describe("DOCS_CATALOG", () => {
+ it("should contain standard doc pages", () => {
+ expect(DOCS_CATALOG.length).toBeGreaterThanOrEqual(5);
+ expect(DOCS_CATALOG.some((d) => d.title === "Project Overview")).toBe(true);
+ expect(DOCS_CATALOG.some((d) => d.title === "AI Assistant")).toBe(true);
+ });
+ });
+});
diff --git a/tests/unit/lib/error-reporting.test.ts b/tests/unit/lib/error-reporting.test.ts
index d1d92bf..dd90dcc 100644
--- a/tests/unit/lib/error-reporting.test.ts
+++ b/tests/unit/lib/error-reporting.test.ts
@@ -10,7 +10,7 @@ describe("error-reporting utility", () => {
vi.restoreAllMocks();
});
- it("logs error to console", () => {
+ it("logs error to console without context", () => {
const error = new Error("Test error");
reportError(error);
expect(console.error).toHaveBeenCalledWith(error);
@@ -51,15 +51,90 @@ describe("error-reporting utility", () => {
it("redacts Vercel Blob tokens in error messages and context strings", () => {
const rawToken = "vercel_blob_rw_1234567890_abcdef";
const error = new Error(`Connection failed using ${rawToken}`);
+ error.stack = `Error: Connection failed using ${rawToken}\n at line 1`;
const context = { details: `Failed to fetch from ${rawToken}` };
reportError(error, context);
const loggedError = (console.error as ReturnType).mock.calls[0][0] as Error;
expect(loggedError.message).toBe("Connection failed using [REDACTED_VERCEL_BLOB_TOKEN]");
+ expect(loggedError.stack).toContain("[REDACTED_VERCEL_BLOB_TOKEN]");
expect(console.error).toHaveBeenCalledWith(
expect.any(Error),
{ details: "Failed to fetch from [REDACTED_VERCEL_BLOB_TOKEN]" }
);
});
+
+ it("handles error without stack properly when sanitizing", () => {
+ const rawToken = "vercel_blob_rw_1234567890_abcdef";
+ const error = new Error(`Connection failed using ${rawToken}`);
+ delete error.stack;
+
+ reportError(error);
+
+ const loggedError = (console.error as ReturnType).mock.calls[0][0] as Error;
+ expect(loggedError.message).toBe("Connection failed using [REDACTED_VERCEL_BLOB_TOKEN]");
+ expect(loggedError.name).toBe("Error");
+ });
+
+ it("handles arrays and sanitizes nested elements", () => {
+ const error = new Error("Array test");
+ const context = {
+ items: ["regular", "vercel_blob_rw_abc123_xyz", { secretKey: "123" }],
+ };
+
+ reportError(error, context);
+
+ expect(console.error).toHaveBeenCalledWith(error, {
+ items: ["regular", "[REDACTED_VERCEL_BLOB_TOKEN]", { secretKey: "[REDACTED]" }],
+ });
+ });
+
+ it("handles circular references gracefully", () => {
+ const error = new Error("Circular test");
+ const circularObj: Record = { name: "loop" };
+ circularObj.self = circularObj;
+
+ reportError(error, { payload: circularObj });
+
+ expect(console.error).toHaveBeenCalledWith(error, {
+ payload: {
+ name: "loop",
+ self: "[CIRCULAR]",
+ },
+ });
+ });
+
+ it("preserves Date, RegExp, and primitive values", () => {
+ const date = new Date("2025-01-01T00:00:00Z");
+ const regex = /test/g;
+ const error = new Error("Types test");
+ const context = {
+ date,
+ regex,
+ count: 42,
+ active: true,
+ empty: null,
+ missing: undefined,
+ };
+
+ reportError(error, context);
+
+ expect(console.error).toHaveBeenCalledWith(error, {
+ date,
+ regex,
+ count: 42,
+ active: true,
+ empty: null,
+ missing: undefined,
+ });
+ });
+
+ it("handles non-Error objects passed as error", () => {
+ reportError("raw string error");
+ expect(console.error).toHaveBeenCalledWith("raw string error");
+
+ reportError(12345);
+ expect(console.error).toHaveBeenCalledWith(12345);
+ });
});