@inklu/docs 0.2.0 → 0.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts","../src/components/content/changelog-content.tsx","../src/components/ui/badge.tsx","../src/lib/utils.ts","../src/lib/constants.ts","../src/lib/motions.ts","../src/components/content/code-block.tsx","../src/components/shared/command-block.tsx","../src/components/ui/button.tsx","../src/components/ui/toast.tsx","../src/hooks/use-copy-to-clipboard.ts","../src/lib/utils/audio.ts","../src/components/motion-primitives/text-morph.tsx","../src/components/content/docs-content.tsx","../src/components/shared/scroll-fade.tsx","../src/components/motion-primitives/text-effect.tsx","../src/components/layout/docs-layout.tsx","../src/components/motion-primitives/sliding-number.tsx","../src/components/layout/site-header.tsx","../src/components/layout/theme-switcher.tsx","../src/components/motion-primitives/morph-icon.tsx","../src/components/ui/brand-logo.tsx","../src/components/ui/hover-card.tsx","../src/components/ui/tooltip.tsx","../src/components/layout/site-layout.tsx","../src/components/ui/direction.tsx","../src/components/layout/theme-provider.tsx","../src/components/layout/site-provider.tsx","../src/components/layout/site-template.tsx","../src/components/ui/button-group.tsx","../src/components/ui/separator.tsx","../src/components/ui/card.tsx","../src/components/ui/item.tsx"],"sourcesContent":["\"use client\";\n\nexport * from \"./components/content/changelog-content\";\nexport * from \"./components/content/code-block\";\nexport * from \"./components/content/docs-content\";\nexport * from \"./components/layout/docs-layout\";\nexport * from \"./components/layout/site-header\";\nexport * from \"./components/layout/site-layout\";\nexport * from \"./components/layout/site-provider\";\nexport * from \"./components/layout/site-template\";\nexport * from \"./components/layout/theme-provider\";\nexport * from \"./components/layout/theme-switcher\";\nexport * from \"./components/motion-primitives/sliding-number\";\nexport * from \"./components/motion-primitives/text-effect\";\nexport * from \"./components/motion-primitives/text-morph\";\nexport * from \"./components/shared/command-block\";\nexport * from \"./components/shared/scroll-fade\";\nexport * from \"./components/ui/badge\";\nexport * from \"./components/ui/brand-logo\";\nexport * from \"./components/ui/button\";\nexport * from \"./components/ui/button-group\";\nexport * from \"./components/ui/card\";\nexport * from \"./components/ui/direction\";\nexport * from \"./components/ui/hover-card\";\nexport * from \"./components/ui/item\";\nexport * from \"./components/ui/separator\";\nexport * from \"./components/ui/toast\";\nexport * from \"./components/ui/tooltip\";\n\nexport * from \"./lib/motions\";\n","\"use client\";\n\nimport { motion, useReducedMotion } from \"motion/react\";\nimport type { ReactNode } from \"react\";\nimport { Badge } from \"@/components/ui/badge\";\nimport { CHANGELOG, type ChangeKind } from \"@/lib/constants\";\nimport { colReveal } from \"@/lib/motions\";\nimport { cn, formatChangelogDate } from \"@/lib/utils\";\n\nfunction Col({ children }: { children: ReactNode }) {\n const reduced = useReducedMotion() ?? false;\n return (\n <motion.div\n className=\"mx-auto w-full\"\n initial={reduced ? false : \"hidden\"}\n whileInView=\"show\"\n viewport={{ once: true, margin: \"0px 0px -64px 0px\" }}\n variants={colReveal}\n >\n {children}\n </motion.div>\n );\n}\n\nconst KIND_LABEL: Record<ChangeKind, string> = {\n new: \"New\",\n improved: \"Improved\",\n fixed: \"Fixed\",\n};\n\nfunction KindTag({ kind }: { kind: ChangeKind }) {\n return (\n <Badge variant=\"secondary\" className=\"align-top mt-0.5\">\n {KIND_LABEL[kind]}\n </Badge>\n );\n}\n\nexport function ChangelogContent() {\n return (\n <div className=\"w-full\">\n <div className=\"relative mx-auto w-full\">\n <main className=\"typeset typeset-docs mx-auto max-w-(--layout-content-width) w-full\">\n {/* Page Header (Title & Date) */}\n <section id=\"changelog-header\" className=\"scroll-mt-24\">\n <Col>\n <h1 className=\"tracking-tight mb-2\">Changelog</h1>\n <p className=\"text-muted-foreground/60 mb-8 mt-0\">\n 16 February, 2026\n </p>\n </Col>\n </section>\n\n {CHANGELOG.map((entry: (typeof CHANGELOG)[number]) => (\n <section\n key={entry.version}\n id={`v${entry.version}`}\n className=\"scroll-mt-24\"\n >\n <Col>\n <div className=\"not-typeset mt-16 flex items-center gap-3\">\n <Badge\n variant=\"secondary\"\n className=\"text-foreground align-middle\"\n >\n {entry.version === \"next\" ? \"Up next\" : `v${entry.version}`}\n </Badge>\n <span className=\"text-muted-foreground\">\n {entry.date\n ? formatChangelogDate(entry.date)\n : \"In progress\"}\n </span>\n </div>\n <h2>{entry.title}</h2>\n <p>{entry.summary}</p>\n\n <div className=\"not-typeset mt-4 overflow-hidden rounded-2xl bg-card\">\n {entry.changes.map(\n (\n change: (typeof CHANGELOG)[number][\"changes\"][number],\n i: number,\n ) => (\n <div\n key={change.text}\n className={cn(\n \"flex gap-3 px-4 py-3\",\n i > 0 && \"border-t border-border\",\n )}\n >\n <KindTag kind={change.kind} />\n <span className=\"text-muted-foreground\">\n {change.text}\n </span>\n </div>\n ),\n )}\n </div>\n </Col>\n </section>\n ))}\n\n <Col>\n <p className=\"mt-16\">\n Full commit history lives on{\" \"}\n <a\n href=\"https://github.com/your-username/your-repo\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n GitHub\n </a>\n .\n </p>\n </Col>\n </main>\n </div>\n </div>\n );\n}\n","import { mergeProps } from \"@base-ui/react/merge-props\";\nimport { useRender } from \"@base-ui/react/use-render\";\nimport { SmoothCorners } from \"@lisse/react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\n\nimport { cn } from \"@/lib/utils\";\n\nconst badgeVariants = cva(\n \"inline-flex h-4 items-center justify-center px-1.5 text-[10px] font-mono uppercase tracking-wide transition-all whitespace-nowrap\",\n {\n variants: {\n variant: {\n default: \"bg-primary text-primary-foreground\",\n secondary: \"bg-secondary text-muted-foreground hover:text-foreground\",\n outline: \"border border-border text-foreground\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n },\n);\n\nfunction Badge({\n className,\n variant = \"default\",\n render,\n ...props\n}: useRender.ComponentProps<\"span\"> & VariantProps<typeof badgeVariants>) {\n return (\n <SmoothCorners asChild corners={{ radius: 4, smoothing: 1 }}>\n {useRender({\n defaultTagName: \"span\",\n props: mergeProps<\"span\">(\n {\n className: cn(badgeVariants({ variant }), className),\n },\n props,\n ),\n render,\n state: {\n slot: \"badge\",\n variant,\n },\n })}\n </SmoothCorners>\n );\n}\n\nexport { Badge, badgeVariants };\n","import { type ClassValue, clsx } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}\n\nexport function formatChangelogDate(date: string) {\n return new Date(date).toLocaleDateString(\"en-US\", {\n month: \"long\",\n day: \"numeric\",\n year: \"numeric\",\n });\n}\n","export type ChangeKind = \"new\" | \"improved\" | \"fixed\";\n\nexport const NAV = [\n { href: \"/\", label: \"Home\" },\n { href: \"/docs\", label: \"Docs\" },\n { href: \"/changelog\", label: \"Changelog\" },\n] as const;\n\nexport const CHANGELOG = [\n {\n version: \"1.1.0\",\n title: \"The Components Update\",\n date: \"2024-03-15\",\n summary:\n \"Introduced a new suite of reusable components to accelerate your workflow.\",\n changes: [\n {\n kind: \"new\" as ChangeKind,\n text: \"Added generic button component with variants.\",\n },\n {\n kind: \"new\" as ChangeKind,\n text: \"Added customizable dialog and modal components.\",\n },\n {\n kind: \"improved\" as ChangeKind,\n text: \"Enhanced accessibility across all interactive elements.\",\n },\n ],\n },\n {\n version: \"1.0.1\",\n title: \"Bug Fixes\",\n date: \"2024-01-10\",\n summary: \"Minor fixes and performance improvements.\",\n changes: [\n {\n kind: \"fixed\" as ChangeKind,\n text: \"Fixed hydration error on initial load.\",\n },\n {\n kind: \"improved\" as ChangeKind,\n text: \"Optimized font loading for better Core Web Vitals.\",\n },\n ],\n },\n {\n version: \"1.0.0\",\n title: \"Initial Release\",\n date: \"2024-01-01\",\n summary: \"First version of the project.\",\n changes: [\n {\n kind: \"new\" as ChangeKind,\n text: \"Added initial template architecture.\",\n },\n {\n kind: \"new\" as ChangeKind,\n text: \"Established monochromatic Liquid Glass design tokens.\",\n },\n ],\n },\n];\n","export const EASE_OUT = [0.22, 1, 0.36, 1] as const;\nexport const REVEAL_DURATION = 0.28;\nexport const HERO_STAGGER = 0.06;\n\nexport const heroChild = {\n hidden: { opacity: 0, y: 12 },\n show: {\n opacity: 1,\n y: 0,\n transition: { duration: REVEAL_DURATION, ease: EASE_OUT },\n },\n};\n\nexport const colReveal = {\n hidden: { opacity: 0, y: 12 },\n show: {\n opacity: 1,\n y: 0,\n transition: { duration: REVEAL_DURATION, ease: EASE_OUT },\n },\n};\n","\"use client\";\n\nimport * as React from \"react\";\nimport { CopyMorphIcon } from \"@/components/shared/command-block\";\nimport { Button } from \"@/components/ui/button\";\nimport { anchoredToastManager } from \"@/components/ui/toast\";\nimport { useCopyToClipboard } from \"@/hooks/use-copy-to-clipboard\";\nimport { cn } from \"@/lib/utils\";\nimport { copy } from \"@/lib/utils/audio\";\n\nexport interface CodeBlockProps {\n html: string;\n code: string;\n className?: string;\n}\n\nexport function CodeBlock({ html, code, className }: CodeBlockProps) {\n const buttonRef = React.useRef<HTMLButtonElement>(null);\n const { copyToClipboard, isCopied } = useCopyToClipboard({ timeout: 1800 });\n\n async function handleCopy() {\n const success = await copyToClipboard(code);\n if (success) {\n copy();\n anchoredToastManager.add({\n title: \"Copied!\",\n positionerProps: {\n anchor: buttonRef.current,\n sideOffset: 6,\n },\n data: {\n tooltipStyle: true,\n },\n timeout: 2000,\n });\n } else {\n anchoredToastManager.add({\n title: \"Failed to copy\",\n positionerProps: {\n anchor: buttonRef.current,\n sideOffset: 6,\n },\n data: {\n tooltipStyle: true,\n },\n timeout: 2000,\n });\n }\n }\n\n return (\n <div\n className={cn(\n \"group relative mt-6 overflow-hidden rounded-xl not-typeset\",\n \"bg-code\",\n \"transition-colors\",\n className,\n )}\n >\n <Button\n ref={buttonRef}\n variant=\"ghost\"\n size=\"icon-xs\"\n onClick={handleCopy}\n className={cn(\n \"absolute right-3 top-3 z-20 rounded-lg\",\n \"bg-transparent\",\n \"text-muted-foreground\",\n \"opacity-0\",\n \"translate-y-1\",\n \"transition-all duration-200\",\n \"group-hover:translate-y-0\",\n \"group-hover:opacity-100\",\n \"hover:bg-code-foreground/10\",\n \"hover:text-code-foreground\",\n \"focus-visible:translate-y-0\",\n \"focus-visible:opacity-100\",\n )}\n >\n <CopyMorphIcon copied={isCopied} />\n </Button>\n\n <div\n className={cn(\n \"[&_pre]:m-0\",\n \"[&_pre]:overflow-x-auto\",\n \"[&_pre]:bg-transparent!\",\n \"[&_pre]:px-5\",\n \"[&_pre]:py-4\",\n \"[&_pre]:font-mono\",\n \"[&_pre]:leading-relaxed\",\n\n \"[&_code]:bg-transparent!\",\n \"[&_code]:p-0\",\n \"[&_code]:font-inherit\",\n\n \"[&_.line]:min-h-6\",\n\n \"[&_pre::-webkit-scrollbar]:h-2\",\n \"[&_pre::-webkit-scrollbar-track]:bg-transparent\",\n \"[&_pre::-webkit-scrollbar-thumb]:rounded-full\",\n \"[&_pre::-webkit-scrollbar-thumb]:bg-code-foreground/10\",\n \"[&_pre::-webkit-scrollbar-thumb:hover]:bg-code-foreground/20\",\n )}\n dangerouslySetInnerHTML={{\n __html: html,\n }}\n />\n </div>\n );\n}\n","\"use client\";\n\nimport { AnimatePresence, motion, useReducedMotion } from \"motion/react\";\nimport { useRef, useState } from \"react\";\nimport { Button } from \"@/components/ui/button\";\nimport { anchoredToastManager } from \"@/components/ui/toast\";\nimport { useCopyToClipboard } from \"@/hooks/use-copy-to-clipboard\";\nimport { cn } from \"@/lib/utils\";\nimport { deny, tap } from \"@/lib/utils/audio\";\nimport { TextMorph } from \"../motion-primitives/text-morph\";\n\nconst SLIDE_SPRING = { type: \"spring\", stiffness: 520, damping: 34 } as const;\n\nconst MORPH_EASE = { duration: 0.16, ease: \"easeOut\" } as const;\n\nexport function CopyMorphIcon({ copied }: { copied: boolean }) {\n const reduced = useReducedMotion() ?? false;\n const t = reduced ? { duration: 0 } : MORPH_EASE;\n\n return (\n <span\n aria-hidden=\"true\"\n className=\"relative grid size-3.5 place-items-center\"\n >\n <AnimatePresence initial={false} mode=\"popLayout\">\n {copied ? (\n <motion.svg\n key=\"check\"\n aria-hidden=\"true\"\n width=\"15\"\n height=\"15\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n className=\"absolute text-foreground\"\n initial={{ opacity: 0, scale: 0.8 }}\n animate={{ opacity: 1, scale: 1 }}\n exit={{ opacity: 0, scale: 0.8 }}\n transition={t}\n >\n <motion.path\n d=\"M1.83398 10.0625L6.00065 13.5L14.1673 2.5\"\n stroke=\"currentColor\"\n strokeWidth=\"1.25\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n initial={{ pathLength: reduced ? 1 : 0 }}\n animate={{ pathLength: 1 }}\n transition={\n reduced ? { duration: 0 } : { duration: 0.18, ease: \"easeOut\" }\n }\n />\n </motion.svg>\n ) : (\n <motion.svg\n key=\"copy\"\n aria-hidden=\"true\"\n width=\"15\"\n height=\"15\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n className=\"absolute\"\n initial={{ opacity: 0, scale: 0.8 }}\n animate={{ opacity: 1, scale: 1 }}\n exit={{ opacity: 0, scale: 0.8 }}\n transition={t}\n >\n <path\n d=\"M10.1667 3.16634H12.8334V14.1663H3.16675V3.16634H5.83341M5.83341 1.83301H10.1667V4.83301H5.83341V1.83301Z\"\n stroke=\"currentColor\"\n strokeWidth=\"1.25\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </motion.svg>\n )}\n </AnimatePresence>\n </span>\n );\n}\n\nexport function CommandBlock({\n items,\n}: {\n items: { id: string; command: string }[];\n}) {\n const [active, setActive] = useState(0);\n const { copyToClipboard, isCopied } = useCopyToClipboard({ timeout: 2000 });\n const reduced = useReducedMotion() ?? false;\n const cur = items[active];\n const copyButtonRef = useRef<HTMLButtonElement>(null);\n\n const handleCopy = async () => {\n const success = await copyToClipboard(cur.command);\n if (success) {\n tap();\n anchoredToastManager.add({\n title: \"Copied!\",\n positionerProps: {\n anchor: copyButtonRef.current,\n sideOffset: 6,\n },\n data: {\n tooltipStyle: true,\n },\n timeout: 2000,\n });\n } else {\n deny();\n anchoredToastManager.add({\n title: \"Failed to copy\",\n positionerProps: {\n anchor: copyButtonRef.current,\n sideOffset: 6,\n },\n data: {\n tooltipStyle: true,\n },\n timeout: 2000,\n });\n }\n };\n\n return (\n <div className=\"not-typeset mt-6 rounded-2xl border-0 bg-code overflow-hidden\">\n {items.length > 1 && (\n <div className=\"flex items-center gap-0.5 px-3 pb-1.5 pt-3 justify-between\">\n <div className=\"flex items-center gap-0.5 \">\n {items.map((it, i) => {\n const isActive = i === active;\n return (\n <button\n key={it.id}\n type=\"button\"\n onClick={() => setActive(i)}\n className={cn(\n \"relative cursor-pointer rounded-md px-1.5 py-0.5 font-mono outline-none transition-colors focus-visible:ring-2 focus-visible:ring-ring\",\n isActive\n ? \"text-foreground\"\n : \"text-muted-foreground hover:bg-accent hover:text-foreground\",\n )}\n >\n {isActive && (\n <motion.span\n aria-hidden=\"true\"\n layoutId=\"pkg-tab-active\"\n transition={reduced ? { duration: 0 } : SLIDE_SPRING}\n className=\"absolute inset-0 rounded-md bg-accent\"\n />\n )}\n <span className=\"relative\">{it.id}</span>\n </button>\n );\n })}\n </div>\n <Button\n ref={copyButtonRef}\n variant=\"ghost\"\n size=\"icon\"\n onClick={handleCopy}\n className=\"ml-auto text-muted-foreground hover:text-foreground focus-visible:ring-1 focus-visible:ring-ring\"\n title=\"Copy to clipboard\"\n aria-label=\"Copy install command\"\n >\n <CopyMorphIcon copied={isCopied} />\n </Button>\n </div>\n )}\n\n <div className=\"flex items-center\">\n <div className=\"flex-1 overflow-x-auto\">\n <pre className=\"flex items-center overflow-x-auto px-5 py-4 font-mono text-foreground\">\n <code>\n <TextMorph>{cur.command}</TextMorph>\n </code>\n </pre>\n </div>\n {items.length === 1 && (\n <Button\n ref={copyButtonRef}\n variant=\"ghost\"\n size=\"icon-sm\"\n onClick={handleCopy}\n className=\"mr-2 text-muted-foreground hover:text-foreground focus-visible:ring-1 focus-visible:ring-ring\"\n title=\"Copy to clipboard\"\n aria-label=\"Copy install command\"\n >\n <CopyMorphIcon copied={isCopied} />\n </Button>\n )}\n </div>\n </div>\n );\n}\n","import { mergeProps, useRender } from \"@base-ui/react\";\nimport { SmoothCorners } from \"@lisse/react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"@/lib/utils\";\n\nexport const buttonVariants = cva(\n \"group/button inline-flex shrink-0 items-center justify-center border border-transparent font-medium whitespace-nowrap transition duration-[160ms] ease-out outline-none select-none focus-visible:ring-2 focus-visible:ring-white/20 active:scale-[0.97] disabled:pointer-events-none disabled:opacity-50\",\n {\n variants: {\n variant: {\n default:\n \"bg-primary text-primary-foreground border-transparent hover:bg-primary/90\",\n outline:\n \"border-border text-foreground hover:bg-accent hover:text-accent-foreground\",\n secondary:\n \"bg-secondary text-secondary-foreground hover:bg-secondary/80\",\n ghost: \"text-foreground hover:bg-accent hover:text-accent-foreground\",\n destructive:\n \"bg-destructive text-destructive-foreground hover:bg-destructive/90\",\n link: \"text-foreground underline-offset-4 hover:underline\",\n },\n size: {\n default: \"h-9 px-[calc(--spacing(3)-1px)] sm:h-8\",\n icon: \"size-9 sm:size-8\",\n \"icon-lg\": \"size-10 sm:size-9\",\n \"icon-sm\": \"size-8 sm:size-7\",\n \"icon-xl\":\n \"size-11 sm:size-10 [&_svg:not([class*='size-'])]:size-5 sm:[&_svg:not([class*='size-'])]:size-4.5\",\n \"icon-xs\":\n \"size-7 rounded-md before:rounded-[calc(var(--radius-md)-1px)] sm:size-6 not-in-data-[slot=input-group]:[&_svg:not([class*='size-'])]:size-4 sm:not-in-data-[slot=input-group]:[&_svg:not([class*='size-'])]:size-3.5\",\n lg: \"h-10 px-[calc(--spacing(3.5)-1px)] sm:h-9\",\n sm: \"h-8 gap-1.5 px-[calc(--spacing(2.5)-1px)] sm:h-7\",\n xl: \"h-11 px-[calc(--spacing(4)-1px)] text-lg sm:h-10 sm:text-base [&_svg:not([class*='size-'])]:size-5 sm:[&_svg:not([class*='size-'])]:size-4.5\",\n xs: \"h-7 gap-1 rounded-md px-[calc(--spacing(2)-1px)] text-sm before:rounded-[calc(var(--radius-md)-1px)] sm:h-6 sm:text-xs [&_svg:not([class*='size-'])]:size-4 sm:[&_svg:not([class*='size-'])]:size-3.5\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n },\n);\n\nexport interface ButtonProps extends useRender.ComponentProps<\"button\"> {\n variant?: VariantProps<typeof buttonVariants>[\"variant\"];\n size?: VariantProps<typeof buttonVariants>[\"size\"];\n loading?: boolean;\n}\nexport function Button({\n className,\n variant,\n size = \"default\",\n render,\n children,\n loading = false,\n disabled: disabledProp,\n ...props\n}: ButtonProps): React.ReactElement {\n const isDisabled: boolean = Boolean(loading || disabledProp);\n const typeValue: React.ButtonHTMLAttributes<HTMLButtonElement>[\"type\"] =\n render ? undefined : \"button\";\n const defaultProps = {\n children: (\n <>\n {children}\n {loading && (\n <div\n className=\"pointer-events-none absolute\"\n data-slot=\"button-loading-indicator\"\n />\n )}\n </>\n ),\n className: cn(buttonVariants({ className, size, variant })),\n \"aria-disabled\": loading || undefined,\n \"data-loading\": loading ? \"\" : undefined,\n \"data-slot\": \"button\",\n disabled: isDisabled,\n type: typeValue,\n };\n\n // Determine standard squircle radius depending on size\n let radius = 8;\n if (size === \"default\") radius = 8;\n else if (size === \"sm\") radius = 7;\n else if (size === \"xs\") radius = 5;\n else if (size === \"lg\") radius = 10;\n else if (size === \"xl\") radius = 12;\n else if (size === \"icon\") radius = 8;\n else if (size === \"icon-lg\") radius = 10;\n else if (size === \"icon-sm\") radius = 7;\n else if (size === \"icon-xl\") radius = 12;\n else if (size === \"icon-xs\") radius = 5;\n\n return (\n <SmoothCorners asChild corners={{ radius, smoothing: 1 }}>\n {useRender({\n defaultTagName: \"button\",\n props: mergeProps<\"button\">(defaultProps, props),\n render,\n })}\n </SmoothCorners>\n );\n}\n","\"use client\";\n\nimport { Toast } from \"@base-ui/react/toast\";\nimport {\n CheckCircledIcon,\n CrossCircledIcon,\n ExclamationTriangleIcon,\n InfoCircledIcon,\n ReloadIcon,\n} from \"@radix-ui/react-icons\";\nimport type React from \"react\";\nimport { buttonVariants } from \"@/components/ui/button\";\nimport { cn } from \"@/lib/utils\";\n\nconst TOAST_ICONS = {\n error: CrossCircledIcon,\n info: InfoCircledIcon,\n loading: ReloadIcon,\n success: CheckCircledIcon,\n warning: ExclamationTriangleIcon,\n} as const;\n\ntype SwipeDirection = \"up\" | \"down\" | \"left\" | \"right\";\n\ntype ToastData = {\n rootProps?: Omit<\n React.ComponentProps<typeof Toast.Root>,\n \"children\" | \"className\" | \"swipeDirection\" | \"toast\"\n >;\n tooltipStyle?: boolean;\n};\n\nfunction getSwipeDirection(position: ToastPosition): SwipeDirection[] {\n const verticalDirection: SwipeDirection = position.startsWith(\"top\")\n ? \"up\"\n : \"down\";\n\n if (position.includes(\"center\")) {\n return [verticalDirection];\n }\n\n if (position.includes(\"left\")) {\n return [\"left\", verticalDirection];\n }\n\n return [\"right\", verticalDirection];\n}\n\nfunction upsertReplayClassName(toast: {\n type?: string;\n updateKey?: number;\n}): string | undefined {\n const k = toast.updateKey ?? 0;\n if (k <= 0) return undefined;\n const isEven = k % 2 === 0;\n if (toast.type === \"error\") {\n return isEven ? \"animate-toast-error-even\" : \"animate-toast-error-odd\";\n }\n return isEven ? \"animate-toast-success-even\" : \"animate-toast-success-odd\";\n}\n\nfunction Toasts({\n position,\n portalProps,\n}: {\n position: ToastPosition;\n portalProps?: React.ComponentProps<typeof Toast.Portal>;\n}): React.ReactElement {\n const { toasts } = Toast.useToastManager();\n const swipeDirection = getSwipeDirection(position);\n\n return (\n <Toast.Portal data-slot=\"toast-portal\" {...portalProps}>\n <Toast.Viewport\n className={cn(\n \"fixed z-60 mx-auto flex w-[calc(100%-var(--toast-inset)*2)] max-w-90 [--toast-inset:--spacing(4)] sm:[--toast-inset:--spacing(8)]\",\n // Vertical positioning\n \"data-[position*=top]:top-(--toast-inset)\",\n \"data-[position*=bottom]:bottom-(--toast-inset)\",\n // Horizontal positioning\n \"data-[position*=left]:left-(--toast-inset)\",\n \"data-[position*=right]:right-(--toast-inset)\",\n \"data-[position*=center]:left-1/2 data-[position*=center]:-translate-x-1/2\",\n )}\n data-position={position}\n data-slot=\"toast-viewport\"\n >\n {toasts.map((toast) => {\n const Icon = toast.type\n ? TOAST_ICONS[toast.type as keyof typeof TOAST_ICONS]\n : null;\n const toastData = toast.data as ToastData | undefined;\n\n return (\n <Toast.Root\n key={toast.id}\n className={cn(\n \"absolute z-[calc(9999-var(--toast-index))] h-(--toast-calc-height) w-full select-none rounded-lg border bg-popover text-popover-foreground [transition:transform_.5s_cubic-bezier(.22,1,.36,1),opacity_.5s,height_.15s,background-color_.5s]\",\n // Base positioning using data-position\n \"data-[position*=right]:right-0 data-[position*=right]:left-auto\",\n \"data-[position*=left]:right-auto data-[position*=left]:left-0\",\n \"data-[position*=center]:right-0 data-[position*=center]:left-0\",\n \"data-[position*=top]:top-0 data-[position*=top]:bottom-auto data-[position*=top]:origin-[50%_calc(50%-50%*min(var(--toast-index,0),1))]\",\n \"data-[position*=bottom]:top-auto data-[position*=bottom]:bottom-0 data-[position*=bottom]:origin-[50%_calc(50%+50%*min(var(--toast-index,0),1))]\",\n // Gap fill for hover\n \"after:absolute after:left-0 after:h-[calc(var(--toast-gap)+1px)] after:w-full\",\n \"data-[position*=top]:after:top-full\",\n \"data-[position*=bottom]:after:bottom-full\",\n // Define some variables\n \"[--toast-calc-height:var(--toast-frontmost-height,var(--toast-height))] [--toast-gap:--spacing(3)] [--toast-peek:--spacing(3)] [--toast-scale:calc(max(0,1-(var(--toast-index)*.1)))] [--toast-shrink:calc(1-var(--toast-scale))]\",\n // Define offset-y variable\n \"data-[position*=top]:[--toast-calc-offset-y:calc(var(--toast-offset-y)+var(--toast-index)*var(--toast-gap)+var(--toast-swipe-movement-y))]\",\n \"data-[position*=bottom]:[--toast-calc-offset-y:calc(var(--toast-offset-y)*-1+var(--toast-index)*var(--toast-gap)*-1+var(--toast-swipe-movement-y))]\",\n // Default state transform\n \"data-[position*=top]:transform-[translateX(var(--toast-swipe-movement-x))_translateY(calc(var(--toast-swipe-movement-y)+(var(--toast-index)*var(--toast-peek))+(var(--toast-shrink)*var(--toast-calc-height))))_scale(var(--toast-scale))]\",\n \"data-[position*=bottom]:transform-[translateX(var(--toast-swipe-movement-x))_translateY(calc(var(--toast-swipe-movement-y)-(var(--toast-index)*var(--toast-peek))-(var(--toast-shrink)*var(--toast-calc-height))))_scale(var(--toast-scale))]\",\n // Limited state\n \"data-limited:opacity-0\",\n // Expanded state\n \"data-expanded:h-(--toast-height)\",\n \"data-position:data-expanded:transform-[translateX(var(--toast-swipe-movement-x))_translateY(var(--toast-calc-offset-y))]\",\n // Starting and ending animations\n \"data-[position*=top]:data-starting-style:transform-[translateY(calc(-100%-var(--toast-inset)))]\",\n \"data-[position*=bottom]:data-starting-style:transform-[translateY(calc(100%+var(--toast-inset)))]\",\n \"data-ending-style:opacity-0\",\n // Ending animations (direction-aware)\n \"data-ending-style:not-data-limited:not-data-swipe-direction:transform-[translateY(calc(100%+var(--toast-inset)))]\",\n \"data-ending-style:data-[swipe-direction=left]:transform-[translateX(calc(var(--toast-swipe-movement-x)-100%-var(--toast-inset)))_translateY(var(--toast-calc-offset-y))]\",\n \"data-ending-style:data-[swipe-direction=right]:transform-[translateX(calc(var(--toast-swipe-movement-x)+100%+var(--toast-inset)))_translateY(var(--toast-calc-offset-y))]\",\n \"data-ending-style:data-[swipe-direction=up]:transform-[translateY(calc(var(--toast-swipe-movement-y)-100%-var(--toast-inset)))]\",\n \"data-ending-style:data-[swipe-direction=down]:transform-[translateY(calc(var(--toast-swipe-movement-y)+100%+var(--toast-inset)))]\",\n // Ending animations (expanded)\n \"data-expanded:data-ending-style:data-[swipe-direction=left]:transform-[translateX(calc(var(--toast-swipe-movement-x)-100%-var(--toast-inset)))_translateY(var(--toast-calc-offset-y))]\",\n \"data-expanded:data-ending-style:data-[swipe-direction=right]:transform-[translateX(calc(var(--toast-swipe-movement-x)+100%+var(--toast-inset)))_translateY(var(--toast-calc-offset-y))]\",\n \"data-expanded:data-ending-style:data-[swipe-direction=up]:transform-[translateY(calc(var(--toast-swipe-movement-y)-100%-var(--toast-inset)))]\",\n \"data-expanded:data-ending-style:data-[swipe-direction=down]:transform-[translateY(calc(var(--toast-swipe-movement-y)+100%+var(--toast-inset)))]\",\n upsertReplayClassName(toast),\n )}\n {...toastData?.rootProps}\n data-position={position}\n swipeDirection={swipeDirection}\n toast={toast}\n >\n <Toast.Content className=\"pointer-events-auto flex items-center justify-between gap-1.5 overflow-hidden px-3.5 py-3 text-sm transition-opacity duration-250 data-behind:not-data-expanded:pointer-events-none data-behind:opacity-0 data-expanded:opacity-100\">\n <div className=\"flex gap-2\">\n {Icon && (\n <div\n className=\"[&>svg]:h-lh [&>svg]:w-4 [&_svg]:pointer-events-none [&_svg]:shrink-0\"\n data-slot=\"toast-icon\"\n >\n <Icon className=\"in-data-[type=loading]:animate-spin in-data-[type=error]:text-destructive in-data-[type=info]:text-info in-data-[type=success]:text-success in-data-[type=warning]:text-warning in-data-[type=loading]:opacity-80\" />\n </div>\n )}\n\n <div className=\"flex flex-col gap-0.5\">\n <Toast.Title\n className=\"font-medium\"\n data-slot=\"toast-title\"\n />\n <Toast.Description\n className=\"text-muted-foreground\"\n data-slot=\"toast-description\"\n />\n </div>\n </div>\n {toast.actionProps && (\n <Toast.Action\n className={buttonVariants({ size: \"xs\" })}\n data-slot=\"toast-action\"\n >\n {toast.actionProps.children}\n </Toast.Action>\n )}\n </Toast.Content>\n </Toast.Root>\n );\n })}\n </Toast.Viewport>\n </Toast.Portal>\n );\n}\n\nfunction AnchoredToasts({\n portalProps,\n}: {\n portalProps?: React.ComponentProps<typeof Toast.Portal>;\n}): React.ReactElement {\n const { toasts } = Toast.useToastManager();\n\n return (\n <Toast.Portal data-slot=\"toast-portal-anchored\" {...portalProps}>\n <Toast.Viewport\n className=\"outline-none\"\n data-slot=\"toast-viewport-anchored\"\n >\n {toasts.map((toast) => {\n const Icon = toast.type\n ? TOAST_ICONS[toast.type as keyof typeof TOAST_ICONS]\n : null;\n const toastData = toast.data as ToastData | undefined;\n const tooltipStyle = toastData?.tooltipStyle ?? false;\n const positionerProps = toast.positionerProps;\n\n if (!positionerProps?.anchor) {\n return null;\n }\n\n return (\n <Toast.Positioner\n key={toast.id}\n className=\"z-50 max-w-[min(--spacing(64),var(--available-width))]\"\n data-slot=\"toast-positioner\"\n sideOffset={positionerProps.sideOffset ?? 4}\n toast={toast}\n >\n <Toast.Root\n className={cn(\n \"relative text-balance border bg-popover text-popover-foreground text-xs transition-[scale,opacity] data-ending-style:scale-98 data-starting-style:scale-98 data-ending-style:opacity-0 data-starting-style:opacity-0\",\n tooltipStyle ? \"rounded-md\" : \"rounded-lg\",\n upsertReplayClassName(toast),\n )}\n {...toastData?.rootProps}\n data-slot=\"toast-popup\"\n toast={toast}\n >\n {tooltipStyle ? (\n <Toast.Content className=\"pointer-events-auto px-2 py-1\">\n <Toast.Title data-slot=\"toast-title\" />\n </Toast.Content>\n ) : (\n <Toast.Content className=\"pointer-events-auto flex items-center justify-between gap-1.5 overflow-hidden px-3.5 py-3 text-sm\">\n <div className=\"flex gap-2\">\n {Icon && (\n <div\n className=\"[&>svg]:h-lh [&>svg]:w-4 [&_svg]:pointer-events-none [&_svg]:shrink-0\"\n data-slot=\"toast-icon\"\n >\n <Icon className=\"in-data-[type=loading]:animate-spin in-data-[type=error]:text-destructive in-data-[type=info]:text-info in-data-[type=success]:text-success in-data-[type=warning]:text-warning in-data-[type=loading]:opacity-80\" />\n </div>\n )}\n\n <div className=\"flex flex-col gap-0.5\">\n <Toast.Title\n className=\"font-medium\"\n data-slot=\"toast-title\"\n />\n <Toast.Description\n className=\"text-muted-foreground\"\n data-slot=\"toast-description\"\n />\n </div>\n </div>\n {toast.actionProps && (\n <Toast.Action\n className={buttonVariants({ size: \"xs\" })}\n data-slot=\"toast-action\"\n >\n {toast.actionProps.children}\n </Toast.Action>\n )}\n </Toast.Content>\n )}\n </Toast.Root>\n </Toast.Positioner>\n );\n })}\n </Toast.Viewport>\n </Toast.Portal>\n );\n}\n\nexport const toastManager: ReturnType<typeof Toast.createToastManager> =\n Toast.createToastManager();\n\nexport const anchoredToastManager: ReturnType<typeof Toast.createToastManager> =\n Toast.createToastManager();\n\nexport type ToastPosition =\n | \"top-left\"\n | \"top-center\"\n | \"top-right\"\n | \"bottom-left\"\n | \"bottom-center\"\n | \"bottom-right\";\n\nexport interface ToastProviderProps extends Toast.Provider.Props {\n position?: ToastPosition;\n portalProps?: React.ComponentProps<typeof Toast.Portal>;\n}\n\nexport function ToastProvider({\n children,\n position = \"bottom-right\",\n portalProps,\n ...props\n}: ToastProviderProps): React.ReactElement {\n return (\n <Toast.Provider toastManager={toastManager} {...props}>\n {children}\n <Toasts portalProps={portalProps} position={position} />\n </Toast.Provider>\n );\n}\n\nexport interface AnchoredToastProviderProps extends Toast.Provider.Props {\n portalProps?: React.ComponentProps<typeof Toast.Portal>;\n}\n\nexport function AnchoredToastProvider({\n children,\n portalProps,\n ...props\n}: AnchoredToastProviderProps): React.ReactElement {\n return (\n <Toast.Provider toastManager={anchoredToastManager} {...props}>\n {children}\n <AnchoredToasts portalProps={portalProps} />\n </Toast.Provider>\n );\n}\n\nexport { Toast as ToastPrimitive };\n","import { useCallback, useEffect, useRef, useState } from \"react\";\n\nexport interface UseCopyToClipboardOptions {\n timeout?: number;\n onCopy?: () => void;\n}\n\nexport function useCopyToClipboard(options: UseCopyToClipboardOptions = {}) {\n const { timeout = 2000, onCopy } = options;\n const [isCopied, setIsCopied] = useState(false);\n const timeoutRef = useRef<number | null>(null);\n\n const copyToClipboard = useCallback(\n async (value: string) => {\n if (!value || typeof window === \"undefined\" || !navigator.clipboard) {\n return false;\n }\n\n try {\n if (timeoutRef.current) {\n window.clearTimeout(timeoutRef.current);\n }\n\n await navigator.clipboard.writeText(value);\n setIsCopied(true);\n onCopy?.();\n\n if (timeout > 0) {\n timeoutRef.current = window.setTimeout(() => {\n setIsCopied(false);\n }, timeout);\n }\n return true;\n } catch (error) {\n console.error(\"Failed to copy to clipboard\", error);\n return false;\n }\n },\n [timeout, onCopy],\n );\n\n useEffect(() => {\n return () => {\n if (timeoutRef.current) {\n window.clearTimeout(timeoutRef.current);\n }\n };\n }, []);\n\n return {\n copyToClipboard,\n isCopied,\n };\n}\n","\"use client\";\n\nfunction playBeep(\n frequency: number,\n duration: number,\n type: OscillatorType = \"sine\",\n) {\n if (\n typeof window === \"undefined\" ||\n // biome-ignore lint/suspicious/noExplicitAny: window may not have webkitAudioContext\n (!window.AudioContext && !(window as any).webkitAudioContext)\n )\n return;\n try {\n const AudioContext =\n // biome-ignore lint/suspicious/noExplicitAny: window may not have webkitAudioContext\n window.AudioContext || (window as any).webkitAudioContext;\n const ctx = new AudioContext();\n const osc = ctx.createOscillator();\n const gain = ctx.createGain();\n\n osc.type = type;\n osc.frequency.setValueAtTime(frequency, ctx.currentTime);\n\n gain.gain.setValueAtTime(0.1, ctx.currentTime);\n gain.gain.exponentialRampToValueAtTime(0.001, ctx.currentTime + duration);\n\n osc.connect(gain);\n gain.connect(ctx.destination);\n\n osc.start();\n osc.stop(ctx.currentTime + duration);\n } catch (_e) {\n // Ignore audio errors\n }\n}\n\nexport function tap() {\n playBeep(400, 0.1);\n}\n\nexport function turn(direction: \"back\" | \"forward\") {\n if (direction === \"forward\") {\n playBeep(600, 0.1);\n } else {\n playBeep(300, 0.1);\n }\n}\n\nexport function copy() {\n playBeep(800, 0.15, \"triangle\");\n}\n\nexport function deny() {\n playBeep(150, 0.2, \"sawtooth\");\n}\n","\"use client\";\nimport {\n AnimatePresence,\n motion,\n type Transition,\n type Variants,\n} from \"motion/react\";\nimport { useId, useMemo } from \"react\";\nimport { cn } from \"@/lib/utils\";\n\nexport type TextMorphProps = {\n children: string;\n as?: React.ElementType;\n className?: string;\n style?: React.CSSProperties;\n variants?: Variants;\n transition?: Transition;\n};\n\nexport function TextMorph({\n children,\n as: Component = \"p\",\n className,\n style,\n variants,\n transition,\n}: TextMorphProps) {\n const uniqueId = useId();\n\n const characters = useMemo(() => {\n const charCounts: Record<string, number> = {};\n\n return children.split(\"\").map((char) => {\n const lowerChar = char.toLowerCase();\n charCounts[lowerChar] = (charCounts[lowerChar] || 0) + 1;\n\n return {\n id: `${uniqueId}-${lowerChar}${charCounts[lowerChar]}`,\n label: char === \" \" ? \"\\u00A0\" : char,\n };\n });\n }, [children, uniqueId]);\n\n const defaultVariants: Variants = {\n initial: { opacity: 0 },\n animate: { opacity: 1 },\n exit: { opacity: 0 },\n };\n\n const defaultTransition: Transition = {\n type: \"spring\",\n bounce: 0,\n duration: 0.3,\n };\n\n return (\n <Component className={cn(className)} aria-label={children} style={style}>\n <AnimatePresence mode=\"popLayout\" initial={false}>\n {characters.map((character) => (\n <motion.span\n key={character.id}\n layoutId={character.id}\n className=\"inline-block\"\n aria-hidden=\"true\"\n initial=\"initial\"\n animate=\"animate\"\n exit=\"exit\"\n variants={variants || defaultVariants}\n transition={transition || defaultTransition}\n >\n {character.label}\n </motion.span>\n ))}\n </AnimatePresence>\n </Component>\n );\n}\n","\"use client\";\n\nimport { motion, useReducedMotion } from \"motion/react\";\nimport type { ReactNode } from \"react\";\nimport { CodeBlock } from \"@/components/content/code-block\";\nimport { CommandBlock } from \"@/components/shared/command-block\";\nimport { ScrollFade } from \"@/components/shared/scroll-fade\";\nimport { colReveal } from \"@/lib/motions\";\n\nexport function DocsCol({ children }: { children: ReactNode }) {\n const reduced = useReducedMotion() ?? false;\n return (\n <motion.div\n className=\"mx-auto w-full\"\n initial={reduced ? false : \"hidden\"}\n whileInView=\"show\"\n viewport={{ once: true, margin: \"0px 0px -64px 0px\" }}\n variants={colReveal}\n >\n {children}\n </motion.div>\n );\n}\n\nexport function DocsFrame({ children }: { children: ReactNode }) {\n return (\n <div className=\"relative min-h-screen overflow-x-clip pb-24\">\n {/* Top scroll fade */}\n <ScrollFade />\n\n {/* Shiki code block styles */}\n <style>{`.docs-code .shiki{margin:0;padding:16px 18px;overflow-x:auto;line-height:1.65;background:transparent !important;font-size:var(--typeset-size)}.docs-code .shiki code{background:transparent;padding:0}`}</style>\n\n <div className=\"w-full\">\n <div className=\"relative mx-auto w-full\">\n <main className=\"typeset typeset-docs mx-auto max-w-(--layout-content-width) w-full\">\n {children}\n </main>\n </div>\n </div>\n </div>\n );\n}\n\nimport { TextEffect } from \"@/components/motion-primitives/text-effect\";\n\nexport function DocsHeader({\n title,\n date,\n children,\n}: {\n title: string;\n date: string;\n children?: ReactNode;\n}) {\n return (\n <section id=\"docs-header\" className=\"scroll-mt-24\">\n <DocsCol>\n <h1 className=\"tracking-tight mb-2\">\n <TextEffect preset=\"fade-in-blur\" per=\"word\">\n {title}\n </TextEffect>\n </h1>\n <p className=\"text-muted-foreground/60 mb-8 mt-0\">{date}</p>\n {children}\n </DocsCol>\n </section>\n );\n}\n\nexport function DocsOverview({ children }: { children: ReactNode }) {\n return (\n <section id=\"overview\" className=\"scroll-mt-24\">\n <DocsCol>{children}</DocsCol>\n </section>\n );\n}\n\nexport function DocsSection({\n id,\n title,\n children,\n}: {\n id: string;\n title?: string;\n children: ReactNode;\n}) {\n return (\n <section id={id} className=\"scroll-mt-24 mt-12\">\n <DocsCol>\n {title && <h2>{title}</h2>}\n {children}\n </DocsCol>\n </section>\n );\n}\n\nexport function DocsInstallation({\n install,\n}: {\n install: { id: string; command: string }[];\n}) {\n return (\n <DocsSection id=\"installation\" title=\"Installation\">\n <p>Install the package using your preferred package manager:</p>\n <CommandBlock items={install} />\n </DocsSection>\n );\n}\n\nexport function DocsCode({ code, html }: { code: string; html: string }) {\n return <CodeBlock code={code} html={html} />;\n}\n","\"use client\";\n\nimport { useEffect, useState } from \"react\";\n\nexport function ScrollFade() {\n const [visible, setVisible] = useState(false);\n\n useEffect(() => {\n const handleScroll = () => setVisible(window.scrollY > 50);\n handleScroll();\n window.addEventListener(\"scroll\", handleScroll, { passive: true });\n return () => window.removeEventListener(\"scroll\", handleScroll);\n }, []);\n\n return (\n <div\n className={`pointer-events-none fixed inset-x-0 top-0 z-(--z-scroll-fade) h-20 bg-gradient-to-b from-background to-transparent transition-opacity duration-300 ${\n visible ? \"opacity-100\" : \"opacity-0\"\n }`}\n />\n );\n}\n","\"use client\";\nimport type {\n TargetAndTransition,\n Transition,\n Variant,\n Variants,\n} from \"motion/react\";\nimport { AnimatePresence, motion } from \"motion/react\";\nimport React from \"react\";\nimport { cn } from \"@/lib/utils\";\n\nexport type PresetType = \"blur\" | \"fade-in-blur\" | \"scale\" | \"fade\" | \"slide\";\n\nexport type PerType = \"word\" | \"char\" | \"line\";\n\nexport type TextEffectProps = {\n children: string;\n per?: PerType;\n as?: keyof React.JSX.IntrinsicElements;\n variants?: {\n container?: Variants;\n item?: Variants;\n };\n className?: string;\n preset?: PresetType;\n delay?: number;\n speedReveal?: number;\n speedSegment?: number;\n trigger?: boolean;\n onAnimationComplete?: () => void;\n onAnimationStart?: () => void;\n segmentWrapperClassName?: string;\n containerTransition?: Transition;\n segmentTransition?: Transition;\n style?: React.CSSProperties;\n};\n\nconst defaultStaggerTimes: Record<PerType, number> = {\n char: 0.03,\n word: 0.05,\n line: 0.1,\n};\n\nconst defaultContainerVariants: Variants = {\n hidden: { opacity: 0 },\n visible: {\n opacity: 1,\n transition: {\n staggerChildren: 0.05,\n },\n },\n exit: {\n transition: { staggerChildren: 0.05, staggerDirection: -1 },\n },\n};\n\nconst defaultItemVariants: Variants = {\n hidden: { opacity: 0 },\n visible: {\n opacity: 1,\n },\n exit: { opacity: 0 },\n};\n\nconst presetVariants: Record<\n PresetType,\n { container: Variants; item: Variants }\n> = {\n blur: {\n container: defaultContainerVariants,\n item: {\n hidden: { opacity: 0, filter: \"blur(12px)\" },\n visible: { opacity: 1, filter: \"blur(0px)\" },\n exit: { opacity: 0, filter: \"blur(12px)\" },\n },\n },\n \"fade-in-blur\": {\n container: defaultContainerVariants,\n item: {\n hidden: { opacity: 0, y: 8, filter: \"blur(12px)\" },\n visible: { opacity: 1, y: 0, filter: \"blur(0px)\" },\n exit: { opacity: 0, y: 8, filter: \"blur(12px)\" },\n },\n },\n scale: {\n container: defaultContainerVariants,\n item: {\n hidden: { opacity: 0, scale: 0.95 },\n visible: { opacity: 1, scale: 1 },\n exit: { opacity: 0, scale: 0.95 },\n },\n },\n fade: {\n container: defaultContainerVariants,\n item: {\n hidden: { opacity: 0 },\n visible: { opacity: 1 },\n exit: { opacity: 0 },\n },\n },\n slide: {\n container: defaultContainerVariants,\n item: {\n hidden: { opacity: 0, y: 8 },\n visible: { opacity: 1, y: 0 },\n exit: { opacity: 0, y: 8 },\n },\n },\n};\n\nconst AnimationComponent: React.FC<{\n segment: string;\n variants: Variants;\n per: \"line\" | \"word\" | \"char\";\n segmentWrapperClassName?: string;\n}> = React.memo(({ segment, variants, per, segmentWrapperClassName }) => {\n const content =\n per === \"line\" ? (\n <motion.span variants={variants} className=\"block\">\n {segment}\n </motion.span>\n ) : per === \"word\" ? (\n <motion.span\n aria-hidden=\"true\"\n variants={variants}\n className=\"inline-block whitespace-pre\"\n >\n {segment}\n </motion.span>\n ) : (\n <motion.span className=\"inline-block whitespace-pre\">\n {segment.split(\"\").map((char, charIndex) => (\n <motion.span\n // biome-ignore lint/suspicious/noArrayIndexKey: Characters are static and don't change order\n key={`char-${charIndex}`}\n aria-hidden=\"true\"\n variants={variants}\n className=\"inline-block whitespace-pre\"\n >\n {char}\n </motion.span>\n ))}\n </motion.span>\n );\n\n if (!segmentWrapperClassName) {\n return content;\n }\n\n const defaultWrapperClassName = per === \"line\" ? \"block\" : \"inline-block\";\n\n return (\n <span className={cn(defaultWrapperClassName, segmentWrapperClassName)}>\n {content}\n </span>\n );\n});\n\nAnimationComponent.displayName = \"AnimationComponent\";\n\nconst splitText = (text: string, per: PerType) => {\n if (per === \"line\") return text.split(\"\\n\");\n return text.split(/(\\s+)/);\n};\n\nconst hasTransition = (\n variant?: Variant,\n): variant is TargetAndTransition & { transition?: Transition } => {\n if (!variant) return false;\n return typeof variant === \"object\" && \"transition\" in variant;\n};\n\nconst createVariantsWithTransition = (\n baseVariants: Variants,\n transition?: Transition & { exit?: Transition },\n): Variants => {\n if (!transition) return baseVariants;\n\n const { exit: _, ...mainTransition } = transition;\n\n return {\n ...baseVariants,\n visible: {\n ...baseVariants.visible,\n transition: {\n ...(hasTransition(baseVariants.visible)\n ? baseVariants.visible.transition\n : {}),\n ...mainTransition,\n },\n },\n exit: {\n ...baseVariants.exit,\n transition: {\n ...(hasTransition(baseVariants.exit)\n ? baseVariants.exit.transition\n : {}),\n ...mainTransition,\n staggerDirection: -1,\n },\n },\n };\n};\n\nexport function TextEffect({\n children,\n per = \"word\",\n as = \"p\",\n variants,\n className,\n preset = \"fade\",\n delay = 0,\n speedReveal = 1,\n speedSegment = 1,\n trigger = true,\n onAnimationComplete,\n onAnimationStart,\n segmentWrapperClassName,\n containerTransition,\n segmentTransition,\n style,\n}: TextEffectProps) {\n const segments = splitText(children, per);\n const MotionTag = motion[as as keyof typeof motion] as typeof motion.div;\n\n const baseVariants = preset\n ? presetVariants[preset]\n : { container: defaultContainerVariants, item: defaultItemVariants };\n\n const stagger = defaultStaggerTimes[per] / speedReveal;\n\n const baseDuration = 0.3 / speedSegment;\n\n const customStagger = hasTransition(variants?.container?.visible ?? {})\n ? (variants?.container?.visible as TargetAndTransition).transition\n ?.staggerChildren\n : undefined;\n\n const customDelay = hasTransition(variants?.container?.visible ?? {})\n ? (variants?.container?.visible as TargetAndTransition).transition\n ?.delayChildren\n : undefined;\n\n const computedVariants = {\n container: createVariantsWithTransition(\n variants?.container || baseVariants.container,\n {\n staggerChildren: customStagger ?? stagger,\n delayChildren: customDelay ?? delay,\n ...containerTransition,\n exit: {\n staggerChildren: customStagger ?? stagger,\n staggerDirection: -1,\n },\n },\n ),\n item: createVariantsWithTransition(variants?.item || baseVariants.item, {\n duration: baseDuration,\n ...segmentTransition,\n }),\n };\n\n return (\n <AnimatePresence mode=\"popLayout\">\n {trigger && (\n <MotionTag\n initial=\"hidden\"\n animate=\"visible\"\n exit=\"exit\"\n variants={computedVariants.container}\n className={className}\n onAnimationComplete={onAnimationComplete}\n onAnimationStart={onAnimationStart}\n style={style}\n >\n {per !== \"line\" ? <span className=\"sr-only\">{children}</span> : null}\n {segments.map((segment, index) => (\n <AnimationComponent\n key={`${per}-${index}-${segment}`}\n segment={segment}\n variants={computedVariants.item}\n per={per}\n segmentWrapperClassName={segmentWrapperClassName}\n />\n ))}\n </MotionTag>\n )}\n </AnimatePresence>\n );\n}\n","\"use client\";\n\nimport { ArrowLeftIcon } from \"@radix-ui/react-icons\";\nimport { motion, useMotionValueEvent, useScroll } from \"motion/react\";\nimport Link from \"next/link\";\nimport { usePathname } from \"next/navigation\";\nimport * as React from \"react\";\nimport { SlidingNumber } from \"../motion-primitives/sliding-number\";\nimport { ScrollFade } from \"../shared/scroll-fade\";\n\nexport type DocsLayoutProps = {\n children: React.ReactNode;\n links: {\n group: string;\n items: { title: string; url: string; isAnchor: boolean }[];\n }[];\n indexUrl?: string;\n indexLabel?: string;\n header?: React.ReactNode;\n};\n\nexport function DocsLayout({\n children,\n links,\n indexUrl = \"/\",\n indexLabel = \"Index\",\n header,\n}: DocsLayoutProps) {\n const pathname = usePathname();\n const [activeHash, setActiveHash] = React.useState(\"\");\n\n const { scrollYProgress } = useScroll();\n const [progress, setProgress] = React.useState(0);\n\n useMotionValueEvent(scrollYProgress, \"change\", (latest) => {\n setProgress(Math.round(latest * 100));\n });\n\n // Scrollspy to detect currently active section\n React.useEffect(() => {\n // Only extract sections for the current page path\n const currentPathLinks = links.flatMap((g) =>\n g.items.filter((i) => i.isAnchor && i.url.startsWith(pathname)),\n );\n const sections = currentPathLinks.map((i) => i.url.split(\"#\")[1]);\n if (!sections.length) {\n setActiveHash(\"\");\n return;\n }\n\n const observerOptions = {\n root: null,\n rootMargin: \"-20% 0px -60% 0px\", // Trigger when the section occupies the main focal area\n threshold: 0,\n };\n\n const observer = new IntersectionObserver((entries) => {\n for (const entry of entries) {\n if (entry.isIntersecting) {\n setActiveHash(`#${entry.target.id}`);\n }\n }\n }, observerOptions);\n\n for (const id of sections) {\n if (id) {\n const el = document.getElementById(id);\n if (el) observer.observe(el);\n }\n }\n\n // Capture initial hash if present\n if (typeof window !== \"undefined\" && window.location.hash) {\n setActiveHash(window.location.hash);\n } else {\n // default to first\n setActiveHash(`#${sections[0]}`);\n }\n\n return () => {\n observer.disconnect();\n };\n }, [links, pathname]);\n\n const handleAnchorClick = (\n e: React.MouseEvent<HTMLAnchorElement>,\n url: string,\n ) => {\n if (!url.includes(\"#\")) return;\n\n const hash = url.split(\"#\")[1];\n const element = document.getElementById(hash);\n\n if (element && url.startsWith(pathname)) {\n e.preventDefault();\n element.scrollIntoView({ behavior: \"smooth\" });\n window.history.pushState(null, \"\", `#${hash}`);\n setActiveHash(`#${hash}`);\n }\n };\n\n const isLinkActive = (url: string, isAnchor: boolean) => {\n if (isAnchor) {\n if (!url.startsWith(pathname)) return false;\n const hash = url.split(\"#\")[1];\n if (activeHash) {\n return activeHash === `#${hash}`;\n }\n return false;\n }\n return pathname === url;\n };\n\n return (\n <>\n <ScrollFade />\n {header}\n <div className=\"mx-auto w-full max-w-(--layout-max-width) px-6 py-12 md:py-24 flex flex-col md:flex-row gap-10 md:gap-16\">\n {/* Sticky Minimalist Sidebar */}\n <aside className=\"w-full md:w-48 shrink-0 md:sticky md:top-24 md:self-start flex flex-col gap-6 md:gap-8\">\n <div className=\"flex items-center justify-between\">\n <Link\n href={indexUrl}\n className=\"text-sm text-muted-foreground hover:text-foreground flex items-center gap-1.5 transition-opacity duration-200 select-none opacity-60 hover:opacity-100\"\n >\n <ArrowLeftIcon className=\"size-3.5\" />\n {indexLabel}\n </Link>\n\n <div className=\"text-xs font-mono text-muted-foreground opacity-50 flex items-center gap-0.5\">\n <SlidingNumber value={progress} />%\n </div>\n </div>\n <div className=\"flex flex-row flex-wrap gap-x-6 gap-y-2 md:flex-col md:gap-y-4\">\n {links.map((group) => (\n <div key={group.group} className=\"flex flex-col gap-1.5 md:gap-2\">\n <nav className=\"flex flex-row flex-wrap gap-x-1 gap-y-1 md:flex-col md:gap-y-1\">\n {group.items.map((link) => {\n const active = isLinkActive(link.url, link.isAnchor);\n return (\n <Link\n key={link.title}\n href={link.url}\n onClick={(e) => handleAnchorClick(e, link.url)}\n className={`relative text-sm transition-colors duration-200 px-2 py-1.5 -ml-2 rounded-md ${\n active\n ? \"text-foreground font-medium\"\n : \"text-muted-foreground hover:text-foreground\"\n }`}\n >\n {active && (\n <motion.div\n layoutId=\"activeDocsLinkBg\"\n className=\"absolute inset-0 bg-secondary/50 rounded-md\"\n transition={{\n type: \"spring\",\n duration: 0.3,\n bounce: 0,\n }}\n />\n )}\n <span className=\"relative z-10\">{link.title}</span>\n </Link>\n );\n })}\n </nav>\n </div>\n ))}\n </div>\n </aside>\n\n {/* Main Content */}\n <main className=\"flex-1 min-w-0\">{children}</main>\n </div>\n </>\n );\n}\n\nexport function DocsNavbar({\n logo,\n right,\n}: {\n logo?: React.ReactNode;\n right?: React.ReactNode;\n}) {\n return (\n <header className=\"sticky top-4 z-(--z-header) mx-auto flex w-full max-w-(--layout-max-width) items-center justify-between px-(--layout-padding) py-3\">\n {logo}\n {right}\n </header>\n );\n}\n","\"use client\";\nimport {\n type MotionValue,\n motion,\n motionValue,\n useSpring,\n useTransform,\n} from \"motion/react\";\nimport { useEffect, useId } from \"react\";\nimport useMeasure from \"react-use-measure\";\n\nconst TRANSITION = {\n type: \"spring\" as const,\n bounce: 0,\n duration: 0.3,\n};\n\nfunction Digit({ value, place }: { value: number; place: number }) {\n const valueRoundedToPlace = Math.floor(value / place) % 10;\n const initial = motionValue(valueRoundedToPlace);\n const animatedValue = useSpring(initial, TRANSITION);\n\n useEffect(() => {\n animatedValue.set(valueRoundedToPlace);\n }, [animatedValue, valueRoundedToPlace]);\n\n return (\n <div className=\"relative inline-block w-[1ch] overflow-x-visible overflow-y-clip leading-none tabular-nums\">\n <div className=\"invisible\">0</div>\n {Array.from({ length: 10 }, (_, i) => (\n // biome-ignore lint/suspicious/noArrayIndexKey: order is static\n <SlidingDigitNumber key={`digit-${i}`} mv={animatedValue} number={i} />\n ))}\n </div>\n );\n}\n\nfunction SlidingDigitNumber({\n mv,\n number,\n}: {\n mv: MotionValue<number>;\n number: number;\n}) {\n const uniqueId = useId();\n const [ref, bounds] = useMeasure();\n\n const y = useTransform(mv, (latest) => {\n if (!bounds.height) return 0;\n const placeValue = latest % 10;\n const offset = (10 + number - placeValue) % 10;\n let memo = offset * bounds.height;\n\n if (offset > 5) {\n memo -= 10 * bounds.height;\n }\n\n return memo;\n });\n\n // don't render the animated number until we know the height\n if (!bounds.height) {\n return (\n <span ref={ref} className=\"invisible absolute\">\n {number}\n </span>\n );\n }\n\n return (\n <motion.span\n style={{ y }}\n layoutId={`${uniqueId}-${number}`}\n className=\"absolute inset-0 flex items-center justify-center\"\n transition={TRANSITION}\n ref={ref}\n >\n {number}\n </motion.span>\n );\n}\n\ntype SlidingNumberProps = {\n value: number;\n padStart?: boolean;\n decimalSeparator?: string;\n};\n\nexport function SlidingNumber({\n value,\n padStart = false,\n decimalSeparator = \".\",\n}: SlidingNumberProps) {\n const absValue = Math.abs(value);\n const [integerPart, decimalPart] = absValue.toString().split(\".\");\n const integerValue = parseInt(integerPart, 10);\n const paddedInteger =\n padStart && integerValue < 10 ? `0${integerPart}` : integerPart;\n const integerDigits = paddedInteger.split(\"\");\n const integerPlaces = integerDigits.map(\n (_, i) => 10 ** (integerDigits.length - i - 1),\n );\n\n return (\n <div className=\"flex items-center\">\n {value < 0 && \"-\"}\n {integerDigits.map((_, index) => (\n <Digit\n key={`pos-${integerPlaces[index]}`}\n value={integerValue}\n place={integerPlaces[index]}\n />\n ))}\n {decimalPart && (\n <>\n <span>{decimalSeparator}</span>\n {decimalPart.split(\"\").map((_, index) => {\n const place = 10 ** (decimalPart.length - index - 1);\n return (\n <Digit\n key={`decimal-${place}`}\n value={parseInt(decimalPart, 10)}\n place={place}\n />\n );\n })}\n </>\n )}\n </div>\n );\n}\n","\"use client\";\n\nimport { GitHubLogoIcon } from \"@radix-ui/react-icons\";\nimport { motion } from \"motion/react\";\nimport Link from \"next/link\";\nimport { usePathname } from \"next/navigation\";\nimport { ThemeSwitcher } from \"@/components/layout/theme-switcher\";\nimport { Button } from \"@/components/ui/button\";\nimport { cn } from \"@/lib/utils\";\nimport { tap as tapSound, turn as turnSound } from \"@/lib/utils/audio\";\nimport { Badge } from \"../ui/badge\";\nimport { BrandLogo } from \"../ui/brand-logo\";\nimport {\n HoverCard,\n HoverCardContent,\n HoverCardTrigger,\n} from \"../ui/hover-card\";\nimport {\n Tooltip,\n TooltipContent,\n TooltipProvider,\n TooltipTrigger,\n} from \"../ui/tooltip\";\n\nexport type SiteHeaderProps = {\n navItems?: { label: string; href: string }[];\n logo?: React.ReactNode;\n version?: string;\n githubUrl?: string;\n right?: React.ReactNode;\n};\n\nexport function SiteHeader({\n navItems = [],\n logo = <BrandLogo />,\n version = \"v0.1\",\n githubUrl = \"https://github.com/your-username/your-repo\",\n right,\n}: SiteHeaderProps) {\n const pathname = usePathname();\n const isActive = (href: string) =>\n href === \"/\" ? pathname === \"/\" : (pathname?.startsWith(href) ?? false);\n\n return (\n <header className=\"sticky top-4 z-(--z-header) flex w-full items-center justify-between rounded-xl\">\n {/* Brand mark — doubles as the home link. */}\n <Link\n href=\"/\"\n aria-label=\"Home\"\n className=\"flex items-center text-foreground transition-opacity hover:opacity-80\"\n >\n {logo}\n </Link>\n\n {/* Nav links, centered. */}\n <nav className=\"absolute left-1/2 flex -translate-x-1/2 items-center gap-4 md:gap-5\">\n {navItems.map((item) => {\n const active = isActive(item.href);\n return (\n <Link\n key={item.href}\n href={item.href}\n aria-current={active ? \"page\" : undefined}\n onClick={() => {\n if (!active) turnSound(item.href === \"/\" ? \"back\" : \"forward\");\n }}\n className={cn(\n \"relative font-medium text-sm leading-5 transition-colors px-3 py-1.5 rounded-full\",\n active\n ? \"text-foreground\"\n : \"text-muted-foreground hover:text-foreground\",\n )}\n >\n {active && (\n <motion.div\n layoutId=\"activeHeaderNavBg\"\n className=\"absolute inset-0 bg-secondary/60 rounded-full\"\n transition={{ type: \"spring\", duration: 0.3, bounce: 0 }}\n />\n )}\n <span className=\"relative z-10\">{item.label}</span>\n </Link>\n );\n })}\n </nav>\n\n <div className=\"flex items-center gap-1\">\n {version && (\n <HoverCard>\n <HoverCardTrigger\n render={\n <Badge\n variant={\"secondary\"}\n className=\"align-middle cursor-default hover:bg-secondary/80 transition-colors\"\n >\n {version}\n </Badge>\n }\n />\n <HoverCardContent\n side=\"bottom\"\n sideOffset={8}\n align=\"center\"\n className=\"w-64 p-2\"\n >\n <div className=\"space-y-1.5\">\n <h1 className=\" font-medium\">Release {version}</h1>\n <p className=\"text-muted-foreground\">\n You are viewing the documentation for the latest release.\n </p>\n </div>\n </HoverCardContent>\n </HoverCard>\n )}\n {right}\n {githubUrl && (\n <TooltipProvider delay={200}>\n <Tooltip>\n <TooltipTrigger\n render={\n <Button\n variant=\"ghost\"\n size=\"sm\"\n render={(props: React.ComponentProps<\"a\">) => (\n <a\n {...props}\n href={githubUrl}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n onClick={(e) => {\n props.onClick?.(e);\n tapSound();\n }}\n />\n )}\n >\n <GitHubLogoIcon />\n <span className=\"hidden sm:inline\">GitHub</span>\n </Button>\n }\n />\n <TooltipContent side=\"bottom\" sideOffset={6}>\n View source on GitHub\n </TooltipContent>\n </Tooltip>\n </TooltipProvider>\n )}\n <ThemeSwitcher />\n </div>\n </header>\n );\n}\n","\"use client\";\n\nimport { MoonIcon, SunIcon } from \"@radix-ui/react-icons\";\nimport { useTheme } from \"next-themes\";\nimport { useEffect, useState } from \"react\";\nimport { Button } from \"@/components/ui/button\";\nimport { MorphIcon } from \"../motion-primitives/morph-icon\";\n\nexport function ThemeSwitcher() {\n const { theme, setTheme, systemTheme } = useTheme();\n const [mounted, setMounted] = useState(false);\n\n useEffect(() => {\n setMounted(true);\n }, []);\n\n if (!mounted) {\n return (\n <Button variant=\"ghost\" size=\"icon-sm\" aria-label=\"Toggle theme\">\n <SunIcon aria-hidden=\"true\" />\n </Button>\n );\n }\n\n const currentTheme = theme === \"system\" ? systemTheme : theme;\n\n return (\n <Button\n variant=\"ghost\"\n size=\"icon-sm\"\n onClick={() => setTheme(currentTheme === \"dark\" ? \"light\" : \"dark\")}\n aria-label=\"Toggle theme\"\n >\n <MorphIcon\n isActive={currentTheme === \"dark\"}\n activeIcon={<MoonIcon aria-hidden=\"true\" />}\n inactiveIcon={<SunIcon aria-hidden=\"true\" />}\n variant=\"rotate\"\n />\n </Button>\n );\n}\n","\"use client\";\n\nimport { AnimatePresence, motion } from \"motion/react\";\nimport type * as React from \"react\";\n\nconst CARD_DELAY_STEP = 0.067;\n\n// Active permutation: TR BR / TL BL (indices in a 2×2 grid 0-3)\nconst ACTIVE_ORDER = [1, 3, 0, 2];\nconst DEFAULT_ORDER = [0, 1, 2, 3];\n\nexport interface CardsViewIconProps {\n /** Whether the icon is in its active (animated) state. */\n isActive: boolean;\n /** Extra classes applied to the root element. */\n className?: string;\n}\n\nexport function CardsViewIcon({ isActive, className }: CardsViewIconProps) {\n const order = isActive ? ACTIVE_ORDER : DEFAULT_ORDER;\n\n return (\n <motion.span\n className={`inline-grid h-3 w-3 place-content-center grid-cols-2 gap-[2.5px] ${className ?? \"\"}`}\n aria-hidden=\"true\"\n >\n {order.map((id, i) => (\n <motion.span\n key={id}\n layout\n className=\"size-[4px] rounded-[1px] bg-current\"\n animate={isActive ? { opacity: [0.65, 1, 1] } : { opacity: 1 }}\n transition={{\n duration: 0.42,\n delay: i === 0 ? 0 : i * CARD_DELAY_STEP,\n ease: \"easeOut\",\n layout: {\n duration: 0.45,\n delay: i === 0 ? 0 : i * CARD_DELAY_STEP,\n ease: \"easeInOut\",\n },\n }}\n />\n ))}\n </motion.span>\n );\n}\n\nexport interface MorphIconProps {\n isActive: boolean;\n activeIcon: React.ReactNode;\n inactiveIcon: React.ReactNode;\n className?: string;\n variant?: \"scale\" | \"rotate\" | \"slide\";\n}\n\nexport function MorphIcon({\n isActive,\n activeIcon,\n inactiveIcon,\n className,\n variant = \"rotate\",\n}: MorphIconProps) {\n const variants = {\n scale: {\n initial: { opacity: 0, scale: 0.95 },\n animate: { opacity: 1, scale: 1 },\n exit: { opacity: 0, scale: 0.95 },\n },\n rotate: {\n initial: { opacity: 0, rotate: -90, scale: 0.95 },\n animate: { opacity: 1, rotate: 0, scale: 1 },\n exit: { opacity: 0, rotate: 90, scale: 0.95 },\n },\n slide: {\n initial: { opacity: 0, y: -10 },\n animate: { opacity: 1, y: 0 },\n exit: { opacity: 0, y: 10 },\n },\n };\n\n return (\n <AnimatePresence mode=\"popLayout\" initial={false}>\n <motion.span\n key={isActive ? \"active\" : \"inactive\"}\n initial=\"initial\"\n animate=\"animate\"\n exit=\"exit\"\n variants={variants[variant]}\n transition={{ duration: 0.15, ease: [0.23, 1, 0.32, 1] }}\n className={`inline-flex items-center justify-center ${className ?? \"\"}`}\n >\n {isActive ? activeIcon : inactiveIcon}\n </motion.span>\n </AnimatePresence>\n );\n}\n","\"use client\";\n\nimport { AnimatePresence, type HTMLMotionProps, motion } from \"motion/react\";\nimport { forwardRef, useState } from \"react\";\n\ninterface BrandLogoProps extends HTMLMotionProps<\"div\"> {}\n\nexport const BrandLogo = forwardRef<HTMLDivElement, BrandLogoProps>(\n ({ className = \"\", ...props }, ref) => {\n const [isHovered, setIsHovered] = useState(false);\n\n // Apple's approach to spring physics\n const springConfig = {\n type: \"spring\" as const,\n duration: 0.5,\n bounce: 0.2,\n };\n\n // Strong ease-out curve for the morphing crossfade\n const easeOut = [0.23, 1, 0.32, 1] as const;\n\n return (\n <motion.div\n ref={ref}\n // No background here. The container is completely transparent.\n className={`relative flex items-center justify-center overflow-hidden transition-shadow ${className}`}\n onHoverStart={() => setIsHovered(true)}\n onHoverEnd={() => setIsHovered(false)}\n whileTap={{ scale: 0.97 }}\n // 1. Container width expands/shrinks naturally using layout\n layout\n transition={springConfig}\n style={{\n height: 24, // Keeps vertical rhythm stable\n cursor: \"pointer\",\n }}\n {...props}\n >\n <AnimatePresence mode=\"popLayout\" initial={false}>\n {isHovered ? (\n <motion.span\n key=\"text\"\n // 2. The blur creates a glowing \"morph\" between the shapes\n initial={{ opacity: 0, scale: 0.95, filter: \"blur(6px)\" }}\n animate={{ opacity: 1, scale: 1, filter: \"blur(0px)\" }}\n exit={{ opacity: 0, scale: 0.95, filter: \"blur(6px)\" }}\n transition={{ duration: 0.2, ease: easeOut }}\n className=\"whitespace-nowrap font-sans text-[16px] font-extrabold lowercase leading-none tracking-tight text-slate-900 dark:text-white\"\n >\n inklu\n </motion.span>\n ) : (\n <motion.div\n key=\"icon\"\n initial={{ opacity: 0, scale: 0.95, filter: \"blur(6px)\" }}\n animate={{ opacity: 1, scale: 1, filter: \"blur(0px)\" }}\n exit={{ opacity: 0, scale: 0.95, filter: \"blur(6px)\" }}\n transition={{ duration: 0.2, ease: easeOut }}\n className=\"h-4 w-4 rounded-sm bg-slate-900 dark:bg-white\"\n />\n )}\n </AnimatePresence>\n </motion.div>\n );\n },\n);\n\nBrandLogo.displayName = \"BrandLogo\";\n","\"use client\";\n\nimport { PreviewCard as PreviewCardPrimitive } from \"@base-ui/react/preview-card\";\n\nimport { cn } from \"@/lib/utils\";\n\nfunction HoverCard({ ...props }: PreviewCardPrimitive.Root.Props) {\n return <PreviewCardPrimitive.Root data-slot=\"hover-card\" {...props} />;\n}\n\nfunction HoverCardTrigger({ ...props }: PreviewCardPrimitive.Trigger.Props) {\n return (\n <PreviewCardPrimitive.Trigger data-slot=\"hover-card-trigger\" {...props} />\n );\n}\n\nfunction HoverCardContent({\n className,\n side = \"bottom\",\n sideOffset = 4,\n align = \"center\",\n alignOffset = 4,\n ...props\n}: PreviewCardPrimitive.Popup.Props &\n Pick<\n PreviewCardPrimitive.Positioner.Props,\n \"align\" | \"alignOffset\" | \"side\" | \"sideOffset\"\n >) {\n return (\n <PreviewCardPrimitive.Portal data-slot=\"hover-card-portal\">\n <PreviewCardPrimitive.Positioner\n align={align}\n alignOffset={alignOffset}\n side={side}\n sideOffset={sideOffset}\n className=\"isolate z-50\"\n >\n <PreviewCardPrimitive.Popup\n data-slot=\"hover-card-content\"\n className={cn(\n \"z-50 w-64 origin-(--transform-origin) rounded-lg bg-popover p-2.5 text-sm text-popover-foreground shadow-md ring-1 ring-foreground/10 outline-hidden duration-200 ease-out data-[side=bottom]:slide-in-from-top-2 data-[side=inline-end]:slide-in-from-left-2 data-[side=inline-start]:slide-in-from-right-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95\",\n className,\n )}\n {...props}\n />\n </PreviewCardPrimitive.Positioner>\n </PreviewCardPrimitive.Portal>\n );\n}\n\nexport { HoverCard, HoverCardTrigger, HoverCardContent };\n","\"use client\";\n\nimport { Tooltip as TooltipPrimitive } from \"@base-ui/react/tooltip\";\n\nimport { cn } from \"@/lib/utils\";\n\nfunction TooltipProvider({\n delay = 0,\n ...props\n}: TooltipPrimitive.Provider.Props) {\n return (\n <TooltipPrimitive.Provider\n data-slot=\"tooltip-provider\"\n delay={delay}\n {...props}\n />\n );\n}\n\nfunction Tooltip({ ...props }: TooltipPrimitive.Root.Props) {\n return <TooltipPrimitive.Root data-slot=\"tooltip\" {...props} />;\n}\n\nfunction TooltipTrigger({ ...props }: TooltipPrimitive.Trigger.Props) {\n return <TooltipPrimitive.Trigger data-slot=\"tooltip-trigger\" {...props} />;\n}\n\nfunction TooltipContent({\n className,\n side = \"top\",\n sideOffset = 4,\n align = \"center\",\n alignOffset = 0,\n children,\n ...props\n}: TooltipPrimitive.Popup.Props &\n Pick<\n TooltipPrimitive.Positioner.Props,\n \"align\" | \"alignOffset\" | \"side\" | \"sideOffset\"\n >) {\n return (\n <TooltipPrimitive.Portal>\n <TooltipPrimitive.Positioner\n align={align}\n alignOffset={alignOffset}\n side={side}\n sideOffset={sideOffset}\n className=\"isolate z-50\"\n >\n <TooltipPrimitive.Popup\n data-slot=\"tooltip-content\"\n className={cn(\n \"z-50 inline-flex w-fit max-w-xs origin-(--transform-origin) items-center gap-1.5 rounded-md bg-foreground px-3 py-1.5 text-xs text-background has-data-[slot=kbd]:pr-1.5 duration-150 ease-out data-instant:duration-0 data-[side=bottom]:slide-in-from-top-2 data-[side=inline-end]:slide-in-from-left-2 data-[side=inline-start]:slide-in-from-right-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 **:data-[slot=kbd]:relative **:data-[slot=kbd]:isolate **:data-[slot=kbd]:z-50 **:data-[slot=kbd]:rounded-sm data-[state=delayed-open]:animate-in data-[state=delayed-open]:fade-in-0 data-[state=delayed-open]:zoom-in-95 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95\",\n className,\n )}\n {...props}\n >\n {children}\n <TooltipPrimitive.Arrow className=\"z-50 size-2.5 translate-y-[calc(-50%-2px)] rotate-45 rounded-[2px] bg-foreground fill-foreground data-[side=bottom]:top-1 data-[side=inline-end]:top-1/2! data-[side=inline-end]:-left-1 data-[side=inline-end]:-translate-y-1/2 data-[side=inline-start]:top-1/2! data-[side=inline-start]:-right-1 data-[side=inline-start]:-translate-y-1/2 data-[side=left]:top-1/2! data-[side=left]:-right-1 data-[side=left]:-translate-y-1/2 data-[side=right]:top-1/2! data-[side=right]:-left-1 data-[side=right]:-translate-y-1/2 data-[side=top]:-bottom-2.5\" />\n </TooltipPrimitive.Popup>\n </TooltipPrimitive.Positioner>\n </TooltipPrimitive.Portal>\n );\n}\n\nexport { Tooltip, TooltipTrigger, TooltipContent, TooltipProvider };\n","import type * as React from \"react\";\nimport { ScrollFade } from \"../shared/scroll-fade\";\n\nexport type SiteLayoutProps = {\n children: React.ReactNode;\n header?: React.ReactNode;\n footer?: React.ReactNode;\n};\n\nexport function SiteLayout({ children, header, footer }: SiteLayoutProps) {\n return (\n <div className=\"relative flex flex-col items-center min-h-screen pb-24 overflow-x-clip\">\n {/* Top scroll fade */}\n <ScrollFade />\n\n <section className=\"w-full px-6 flex flex-col gap-3 pt-3\">\n {header}\n {children}\n </section>\n\n {footer && (\n <div className=\"flex flex-col gap-10 items-center text-center mt-32 px-4\">\n {footer}\n </div>\n )}\n </div>\n );\n}\n","\"use client\";\n\nexport {\n DirectionProvider,\n useDirection,\n} from \"@base-ui/react/direction-provider\";\n","\"use client\";\n\nimport { ThemeProvider as NextThemesProvider } from \"next-themes\";\nimport type { ComponentProps } from \"react\";\n\nexport function ThemeProvider(\n props: ComponentProps<typeof NextThemesProvider>,\n) {\n return <NextThemesProvider {...props} />;\n}\n","\"use client\";\n\nimport type * as React from \"react\";\nimport { DirectionProvider } from \"../ui/direction\";\nimport { AnchoredToastProvider, ToastProvider } from \"../ui/toast\";\nimport { ThemeProvider } from \"./theme-provider\";\n\nexport function SiteProvider({ children }: { children: React.ReactNode }) {\n return (\n <ThemeProvider\n attribute=\"class\"\n defaultTheme=\"dark\"\n enableSystem\n disableTransitionOnChange\n >\n <DirectionProvider direction=\"ltr\">\n <ToastProvider position=\"bottom-right\">\n <AnchoredToastProvider>{children}</AnchoredToastProvider>\n </ToastProvider>\n </DirectionProvider>\n </ThemeProvider>\n );\n}\n","\"use client\";\n\nimport { motion, useReducedMotion } from \"motion/react\";\nimport type * as React from \"react\";\n\nexport function SiteTemplate({ children }: { children: React.ReactNode }) {\n const reduced = useReducedMotion();\n\n return (\n <motion.div\n initial={reduced ? false : { opacity: 0 }}\n animate={{ opacity: 1 }}\n transition={\n reduced ? { duration: 0 } : { duration: 0.24, ease: [0.22, 1, 0.36, 1] }\n }\n >\n {children}\n </motion.div>\n );\n}\n","import { mergeProps } from \"@base-ui/react/merge-props\";\nimport { useRender } from \"@base-ui/react/use-render\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { Separator } from \"@/components/ui/separator\";\nimport { cn } from \"@/lib/utils\";\n\nconst buttonGroupVariants = cva(\n \"flex w-fit items-stretch *:focus-visible:relative *:focus-visible:z-10 has-[>[data-slot=button-group]]:gap-2 has-[select[aria-hidden=true]:last-child]:[&>[data-slot=select-trigger]:last-of-type]:rounded-e-md [&>[data-slot=select-trigger]:not([class*='w-'])]:w-fit [&>input]:flex-1\",\n {\n variants: {\n orientation: {\n horizontal:\n \"*:data-slot:rounded-e-none [&>[data-slot]:not(:has(~[data-slot]))]:rounded-e-md! [&>[data-slot]~[data-slot]]:rounded-s-none [&>[data-slot]~[data-slot]]:border-s-0\",\n vertical:\n \"flex-col *:data-slot:rounded-b-none [&>[data-slot]:not(:has(~[data-slot]))]:rounded-b-md! [&>[data-slot]~[data-slot]]:rounded-t-none [&>[data-slot]~[data-slot]]:border-t-0\",\n },\n },\n defaultVariants: {\n orientation: \"horizontal\",\n },\n },\n);\n\nfunction ButtonGroup({\n className,\n orientation,\n ...props\n}: React.ComponentProps<\"div\"> & VariantProps<typeof buttonGroupVariants>) {\n return (\n // biome-ignore lint/a11y/useSemanticElements: Button group pattern\n <div\n role=\"group\"\n data-slot=\"button-group\"\n data-orientation={orientation}\n className={cn(buttonGroupVariants({ orientation }), className)}\n {...props}\n />\n );\n}\n\nfunction ButtonGroupText({\n className,\n render,\n ...props\n}: useRender.ComponentProps<\"div\">) {\n return useRender({\n defaultTagName: \"div\",\n props: mergeProps<\"div\">(\n {\n className: cn(\n \"flex items-center gap-2 rounded-md border bg-muted px-2.5 text-xs/relaxed font-medium [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4\",\n className,\n ),\n },\n props,\n ),\n render,\n state: {\n slot: \"button-group-text\",\n },\n });\n}\n\nfunction ButtonGroupSeparator({\n className,\n orientation = \"vertical\",\n ...props\n}: React.ComponentProps<typeof Separator>) {\n return (\n <Separator\n data-slot=\"button-group-separator\"\n orientation={orientation}\n className={cn(\n \"relative self-stretch bg-input data-horizontal:mx-px data-horizontal:w-auto data-vertical:my-px data-vertical:h-auto\",\n className,\n )}\n {...props}\n />\n );\n}\n\nexport {\n ButtonGroup,\n ButtonGroupSeparator,\n ButtonGroupText,\n buttonGroupVariants,\n};\n","\"use client\";\n\nimport { Separator as SeparatorPrimitive } from \"@base-ui/react/separator\";\n\nimport { cn } from \"@/lib/utils\";\n\nfunction Separator({\n className,\n orientation = \"horizontal\",\n ...props\n}: SeparatorPrimitive.Props) {\n return (\n <SeparatorPrimitive\n data-slot=\"separator\"\n orientation={orientation}\n className={cn(\n \"shrink-0 bg-border data-horizontal:h-px data-horizontal:w-full data-vertical:w-px data-vertical:self-stretch\",\n className,\n )}\n {...props}\n />\n );\n}\n\nexport { Separator };\n","import { SmoothCorners } from \"@lisse/react\";\nimport type * as React from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nfunction Card({\n className,\n size = \"default\",\n ...props\n}: React.ComponentProps<\"div\"> & { size?: \"default\" | \"sm\" }) {\n return (\n <SmoothCorners asChild corners={{ radius: 24, smoothing: 1 }}>\n <div\n data-slot=\"card\"\n data-size={size}\n className={cn(\n \"group/card flex flex-col overflow-hidden bg-card hover:bg-accent transition-colors text-card-foreground\",\n className,\n )}\n {...props}\n />\n </SmoothCorners>\n );\n}\n\nfunction CardHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-header\"\n className={cn(\"flex flex-col gap-1.5 mb-4\", className)}\n {...props}\n />\n );\n}\n\nfunction CardTitle({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-title\"\n className={cn(\"font-medium leading-none tracking-tight\", className)}\n {...props}\n />\n );\n}\n\nfunction CardDescription({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-description\"\n className={cn(\"text-muted-foreground\", className)}\n {...props}\n />\n );\n}\n\nfunction CardAction({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-action\"\n className={cn(\n \"col-start-2 row-span-2 row-start-1 self-start justify-self-end\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction CardContent({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-content\"\n className={cn(\"text-muted-foreground\", className)}\n {...props}\n />\n );\n}\n\nfunction CardFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-footer\"\n className={cn(\"flex items-center pt-4\", className)}\n {...props}\n />\n );\n}\n\nexport {\n Card,\n CardHeader,\n CardFooter,\n CardTitle,\n CardAction,\n CardDescription,\n CardContent,\n};\n","import { mergeProps } from \"@base-ui/react/merge-props\";\nimport { useRender } from \"@base-ui/react/use-render\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport type * as React from \"react\";\nimport { Separator } from \"@/components/ui/separator\";\nimport { cn } from \"@/lib/utils\";\n\nfunction ItemGroup({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n // biome-ignore lint/a11y/useSemanticElements: ARIA list pattern\n <div\n role=\"list\"\n data-slot=\"item-group\"\n className={cn(\n \"group/item-group flex w-full flex-col gap-4 has-data-[size=sm]:gap-2.5 has-data-[size=xs]:gap-2\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction ItemSeparator({\n className,\n ...props\n}: React.ComponentProps<typeof Separator>) {\n return (\n <Separator\n data-slot=\"item-separator\"\n orientation=\"horizontal\"\n className={cn(\"my-2\", className)}\n {...props}\n />\n );\n}\n\nconst itemVariants = cva(\n \"group/item flex w-full flex-wrap items-center rounded-lg border text-sm transition duration-[160ms] ease-out outline-none focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 [a]:transition-colors [a]:hover:bg-muted active:scale-[0.97]\",\n {\n variants: {\n variant: {\n default: \"border-transparent\",\n outline: \"border-border\",\n muted: \"border-transparent bg-muted/50\",\n },\n size: {\n default: \"gap-2.5 px-3 py-2.5\",\n sm: \"gap-2.5 px-3 py-2.5\",\n xs: \"gap-2 px-2.5 py-2 in-data-[slot=dropdown-menu-content]:p-0\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n },\n);\n\nfunction Item({\n className,\n variant = \"default\",\n size = \"default\",\n render,\n ...props\n}: useRender.ComponentProps<\"div\"> & VariantProps<typeof itemVariants>) {\n return useRender({\n defaultTagName: \"div\",\n props: mergeProps<\"div\">(\n {\n className: cn(itemVariants({ variant, size, className })),\n },\n props,\n ),\n render,\n state: {\n slot: \"item\",\n variant,\n size,\n },\n });\n}\n\nconst itemMediaVariants = cva(\n \"flex shrink-0 items-center justify-center gap-2 group-has-data-[slot=item-description]/item:translate-y-0.5 group-has-data-[slot=item-description]/item:self-start [&_svg]:pointer-events-none\",\n {\n variants: {\n variant: {\n default: \"bg-transparent\",\n icon: \"[&_svg:not([class*='size-'])]:size-4\",\n image:\n \"size-10 overflow-hidden rounded-sm group-data-[size=sm]/item:size-8 group-data-[size=xs]/item:size-6 [&_img]:size-full [&_img]:object-cover\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n },\n);\n\nfunction ItemMedia({\n className,\n variant = \"default\",\n ...props\n}: React.ComponentProps<\"div\"> & VariantProps<typeof itemMediaVariants>) {\n return (\n <div\n data-slot=\"item-media\"\n data-variant={variant}\n className={cn(itemMediaVariants({ variant, className }))}\n {...props}\n />\n );\n}\n\nfunction ItemContent({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"item-content\"\n className={cn(\n \"flex flex-1 flex-col gap-1 group-data-[size=xs]/item:gap-0 [&+[data-slot=item-content]]:flex-none\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction ItemTitle({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"item-title\"\n className={cn(\n \"line-clamp-1 flex w-fit items-center gap-2 text-sm leading-snug font-medium underline-offset-4\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction ItemDescription({ className, ...props }: React.ComponentProps<\"p\">) {\n return (\n <p\n data-slot=\"item-description\"\n className={cn(\n \"line-clamp-2 text-left text-sm leading-normal font-normal text-muted-foreground group-data-[size=xs]/item:text-xs [&>a]:underline [&>a]:underline-offset-4 [&>a:hover]:text-primary\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction ItemActions({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"item-actions\"\n className={cn(\"flex items-center gap-2\", className)}\n {...props}\n />\n );\n}\n\nfunction ItemHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"item-header\"\n className={cn(\n \"flex basis-full items-center justify-between gap-2\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction ItemFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"item-footer\"\n className={cn(\n \"flex basis-full items-center justify-between gap-2\",\n className,\n )}\n {...props}\n />\n );\n}\n\nexport {\n Item,\n ItemMedia,\n ItemContent,\n ItemActions,\n ItemGroup,\n ItemSeparator,\n ItemTitle,\n ItemDescription,\n ItemHeader,\n ItemFooter,\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACEA,IAAAA,gBAAyC;;;ACFzC,yBAA2B;AAC3B,wBAA0B;AAC1B,mBAA8B;AAC9B,sCAAuC;;;ACHvC,kBAAsC;AACtC,4BAAwB;AAEjB,SAAS,MAAM,QAAsB;AAC1C,aAAO,mCAAQ,kBAAK,MAAM,CAAC;AAC7B;AAEO,SAAS,oBAAoB,MAAc;AAChD,SAAO,IAAI,KAAK,IAAI,EAAE,mBAAmB,SAAS;AAAA,IAChD,OAAO;AAAA,IACP,KAAK;AAAA,IACL,MAAM;AAAA,EACR,CAAC;AACH;;;ADiBI;AAvBJ,IAAM,oBAAgB;AAAA,EACpB;AAAA,EACA;AAAA,IACE,UAAU;AAAA,MACR,SAAS;AAAA,QACP,SAAS;AAAA,QACT,WAAW;AAAA,QACX,SAAS;AAAA,MACX;AAAA,IACF;AAAA,IACA,iBAAiB;AAAA,MACf,SAAS;AAAA,IACX;AAAA,EACF;AACF;AAEA,SAAS,MAAM;AAAA,EACb;AAAA,EACA,UAAU;AAAA,EACV;AAAA,EACA,GAAG;AACL,GAA0E;AACxE,SACE,4CAAC,8BAAc,SAAO,MAAC,SAAS,EAAE,QAAQ,GAAG,WAAW,EAAE,GACvD,2CAAU;AAAA,IACT,gBAAgB;AAAA,IAChB,WAAO;AAAA,MACL;AAAA,QACE,WAAW,GAAG,cAAc,EAAE,QAAQ,CAAC,GAAG,SAAS;AAAA,MACrD;AAAA,MACA;AAAA,IACF;AAAA,IACA;AAAA,IACA,OAAO;AAAA,MACL,MAAM;AAAA,MACN;AAAA,IACF;AAAA,EACF,CAAC,GACH;AAEJ;;;AEvCO,IAAM,YAAY;AAAA,EACvB;AAAA,IACE,SAAS;AAAA,IACT,OAAO;AAAA,IACP,MAAM;AAAA,IACN,SACE;AAAA,IACF,SAAS;AAAA,MACP;AAAA,QACE,MAAM;AAAA,QACN,MAAM;AAAA,MACR;AAAA,MACA;AAAA,QACE,MAAM;AAAA,QACN,MAAM;AAAA,MACR;AAAA,MACA;AAAA,QACE,MAAM;AAAA,QACN,MAAM;AAAA,MACR;AAAA,IACF;AAAA,EACF;AAAA,EACA;AAAA,IACE,SAAS;AAAA,IACT,OAAO;AAAA,IACP,MAAM;AAAA,IACN,SAAS;AAAA,IACT,SAAS;AAAA,MACP;AAAA,QACE,MAAM;AAAA,QACN,MAAM;AAAA,MACR;AAAA,MACA;AAAA,QACE,MAAM;AAAA,QACN,MAAM;AAAA,MACR;AAAA,IACF;AAAA,EACF;AAAA,EACA;AAAA,IACE,SAAS;AAAA,IACT,OAAO;AAAA,IACP,MAAM;AAAA,IACN,SAAS;AAAA,IACT,SAAS;AAAA,MACP;AAAA,QACE,MAAM;AAAA,QACN,MAAM;AAAA,MACR;AAAA,MACA;AAAA,QACE,MAAM;AAAA,QACN,MAAM;AAAA,MACR;AAAA,IACF;AAAA,EACF;AACF;;;AC9DO,IAAM,WAAW,CAAC,MAAM,GAAG,MAAM,CAAC;AAClC,IAAM,kBAAkB;AACxB,IAAM,eAAe;AAErB,IAAM,YAAY;AAAA,EACvB,QAAQ,EAAE,SAAS,GAAG,GAAG,GAAG;AAAA,EAC5B,MAAM;AAAA,IACJ,SAAS;AAAA,IACT,GAAG;AAAA,IACH,YAAY,EAAE,UAAU,iBAAiB,MAAM,SAAS;AAAA,EAC1D;AACF;AAEO,IAAM,YAAY;AAAA,EACvB,QAAQ,EAAE,SAAS,GAAG,GAAG,GAAG;AAAA,EAC5B,MAAM;AAAA,IACJ,SAAS;AAAA,IACT,GAAG;AAAA,IACH,YAAY,EAAE,UAAU,iBAAiB,MAAM,SAAS;AAAA,EAC1D;AACF;;;AJRI,IAAAC,sBAAA;AAHJ,SAAS,IAAI,EAAE,SAAS,GAA4B;AAClD,QAAM,cAAU,gCAAiB,KAAK;AACtC,SACE;AAAA,IAAC,qBAAO;AAAA,IAAP;AAAA,MACC,WAAU;AAAA,MACV,SAAS,UAAU,QAAQ;AAAA,MAC3B,aAAY;AAAA,MACZ,UAAU,EAAE,MAAM,MAAM,QAAQ,oBAAoB;AAAA,MACpD,UAAU;AAAA,MAET;AAAA;AAAA,EACH;AAEJ;AAEA,IAAM,aAAyC;AAAA,EAC7C,KAAK;AAAA,EACL,UAAU;AAAA,EACV,OAAO;AACT;AAEA,SAAS,QAAQ,EAAE,KAAK,GAAyB;AAC/C,SACE,6CAAC,SAAM,SAAQ,aAAY,WAAU,oBAClC,qBAAW,IAAI,GAClB;AAEJ;AAEO,SAAS,mBAAmB;AACjC,SACE,6CAAC,SAAI,WAAU,UACb,uDAAC,SAAI,WAAU,2BACb,wDAAC,UAAK,WAAU,sEAEd;AAAA,iDAAC,aAAQ,IAAG,oBAAmB,WAAU,gBACvC,wDAAC,OACC;AAAA,mDAAC,QAAG,WAAU,uBAAsB,uBAAS;AAAA,MAC7C,6CAAC,OAAE,WAAU,sCAAqC,+BAElD;AAAA,OACF,GACF;AAAA,IAEC,UAAU,IAAI,CAAC,UACd;AAAA,MAAC;AAAA;AAAA,QAEC,IAAI,IAAI,MAAM,OAAO;AAAA,QACrB,WAAU;AAAA,QAEV,wDAAC,OACC;AAAA,wDAAC,SAAI,WAAU,6CACb;AAAA;AAAA,cAAC;AAAA;AAAA,gBACC,SAAQ;AAAA,gBACR,WAAU;AAAA,gBAET,gBAAM,YAAY,SAAS,YAAY,IAAI,MAAM,OAAO;AAAA;AAAA,YAC3D;AAAA,YACA,6CAAC,UAAK,WAAU,yBACb,gBAAM,OACH,oBAAoB,MAAM,IAAI,IAC9B,eACN;AAAA,aACF;AAAA,UACA,6CAAC,QAAI,gBAAM,OAAM;AAAA,UACjB,6CAAC,OAAG,gBAAM,SAAQ;AAAA,UAElB,6CAAC,SAAI,WAAU,wDACZ,gBAAM,QAAQ;AAAA,YACb,CACE,QACA,MAEA;AAAA,cAAC;AAAA;AAAA,gBAEC,WAAW;AAAA,kBACT;AAAA,kBACA,IAAI,KAAK;AAAA,gBACX;AAAA,gBAEA;AAAA,+DAAC,WAAQ,MAAM,OAAO,MAAM;AAAA,kBAC5B,6CAAC,UAAK,WAAU,yBACb,iBAAO,MACV;AAAA;AAAA;AAAA,cATK,OAAO;AAAA,YAUd;AAAA,UAEJ,GACF;AAAA,WACF;AAAA;AAAA,MA1CK,MAAM;AAAA,IA2Cb,CACD;AAAA,IAED,6CAAC,OACC,wDAAC,OAAE,WAAU,SAAQ;AAAA;AAAA,MACU;AAAA,MAC7B;AAAA,QAAC;AAAA;AAAA,UACC,MAAK;AAAA,UACL,QAAO;AAAA,UACP,KAAI;AAAA,UACL;AAAA;AAAA,MAED;AAAA,MAAI;AAAA,OAEN,GACF;AAAA,KACF,GACF,GACF;AAEJ;;;AKpHA,YAAuB;;;ACAvB,IAAAC,gBAA0D;AAC1D,IAAAA,gBAAiC;;;ACHjC,IAAAC,gBAAsC;AACtC,IAAAA,gBAA8B;AAC9B,IAAAC,mCAAuC;AA6DjC,IAAAC,sBAAA;AA1DC,IAAM,qBAAiB;AAAA,EAC5B;AAAA,EACA;AAAA,IACE,UAAU;AAAA,MACR,SAAS;AAAA,QACP,SACE;AAAA,QACF,SACE;AAAA,QACF,WACE;AAAA,QACF,OAAO;AAAA,QACP,aACE;AAAA,QACF,MAAM;AAAA,MACR;AAAA,MACA,MAAM;AAAA,QACJ,SAAS;AAAA,QACT,MAAM;AAAA,QACN,WAAW;AAAA,QACX,WAAW;AAAA,QACX,WACE;AAAA,QACF,WACE;AAAA,QACF,IAAI;AAAA,QACJ,IAAI;AAAA,QACJ,IAAI;AAAA,QACJ,IAAI;AAAA,MACN;AAAA,IACF;AAAA,IACA,iBAAiB;AAAA,MACf,SAAS;AAAA,MACT,MAAM;AAAA,IACR;AAAA,EACF;AACF;AAOO,SAAS,OAAO;AAAA,EACrB;AAAA,EACA;AAAA,EACA,OAAO;AAAA,EACP;AAAA,EACA;AAAA,EACA,UAAU;AAAA,EACV,UAAU;AAAA,EACV,GAAG;AACL,GAAoC;AAClC,QAAM,aAAsB,QAAQ,WAAW,YAAY;AAC3D,QAAM,YACJ,SAAS,SAAY;AACvB,QAAM,eAAe;AAAA,IACnB,UACE,8EACG;AAAA;AAAA,MACA,WACC;AAAA,QAAC;AAAA;AAAA,UACC,WAAU;AAAA,UACV,aAAU;AAAA;AAAA,MACZ;AAAA,OAEJ;AAAA,IAEF,WAAW,GAAG,eAAe,EAAE,WAAW,MAAM,QAAQ,CAAC,CAAC;AAAA,IAC1D,iBAAiB,WAAW;AAAA,IAC5B,gBAAgB,UAAU,KAAK;AAAA,IAC/B,aAAa;AAAA,IACb,UAAU;AAAA,IACV,MAAM;AAAA,EACR;AAGA,MAAI,SAAS;AACb,MAAI,SAAS,UAAW,UAAS;AAAA,WACxB,SAAS,KAAM,UAAS;AAAA,WACxB,SAAS,KAAM,UAAS;AAAA,WACxB,SAAS,KAAM,UAAS;AAAA,WACxB,SAAS,KAAM,UAAS;AAAA,WACxB,SAAS,OAAQ,UAAS;AAAA,WAC1B,SAAS,UAAW,UAAS;AAAA,WAC7B,SAAS,UAAW,UAAS;AAAA,WAC7B,SAAS,UAAW,UAAS;AAAA,WAC7B,SAAS,UAAW,UAAS;AAEtC,SACE,6CAAC,+BAAc,SAAO,MAAC,SAAS,EAAE,QAAQ,WAAW,EAAE,GACpD,uCAAU;AAAA,IACT,gBAAgB;AAAA,IAChB,WAAO,0BAAqB,cAAc,KAAK;AAAA,IAC/C;AAAA,EACF,CAAC,GACH;AAEJ;;;ACrGA,mBAAsB;AACtB,yBAMO;AA6Ie,IAAAC,sBAAA;AAxItB,IAAM,cAAc;AAAA,EAClB,OAAO;AAAA,EACP,MAAM;AAAA,EACN,SAAS;AAAA,EACT,SAAS;AAAA,EACT,SAAS;AACX;AAYA,SAAS,kBAAkB,UAA2C;AACpE,QAAM,oBAAoC,SAAS,WAAW,KAAK,IAC/D,OACA;AAEJ,MAAI,SAAS,SAAS,QAAQ,GAAG;AAC/B,WAAO,CAAC,iBAAiB;AAAA,EAC3B;AAEA,MAAI,SAAS,SAAS,MAAM,GAAG;AAC7B,WAAO,CAAC,QAAQ,iBAAiB;AAAA,EACnC;AAEA,SAAO,CAAC,SAAS,iBAAiB;AACpC;AAEA,SAAS,sBAAsB,OAGR;AACrB,QAAM,IAAI,MAAM,aAAa;AAC7B,MAAI,KAAK,EAAG,QAAO;AACnB,QAAM,SAAS,IAAI,MAAM;AACzB,MAAI,MAAM,SAAS,SAAS;AAC1B,WAAO,SAAS,6BAA6B;AAAA,EAC/C;AACA,SAAO,SAAS,+BAA+B;AACjD;AAEA,SAAS,OAAO;AAAA,EACd;AAAA,EACA;AACF,GAGuB;AACrB,QAAM,EAAE,OAAO,IAAI,mBAAM,gBAAgB;AACzC,QAAM,iBAAiB,kBAAkB,QAAQ;AAEjD,SACE,6CAAC,mBAAM,QAAN,EAAa,aAAU,gBAAgB,GAAG,aACzC;AAAA,IAAC,mBAAM;AAAA,IAAN;AAAA,MACC,WAAW;AAAA,QACT;AAAA;AAAA,QAEA;AAAA,QACA;AAAA;AAAA,QAEA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,MACA,iBAAe;AAAA,MACf,aAAU;AAAA,MAET,iBAAO,IAAI,CAAC,UAAU;AACrB,cAAM,OAAO,MAAM,OACf,YAAY,MAAM,IAAgC,IAClD;AACJ,cAAM,YAAY,MAAM;AAExB,eACE;AAAA,UAAC,mBAAM;AAAA,UAAN;AAAA,YAEC,WAAW;AAAA,cACT;AAAA;AAAA,cAEA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA;AAAA,cAEA;AAAA,cACA;AAAA,cACA;AAAA;AAAA,cAEA;AAAA;AAAA,cAEA;AAAA,cACA;AAAA;AAAA,cAEA;AAAA,cACA;AAAA;AAAA,cAEA;AAAA;AAAA,cAEA;AAAA,cACA;AAAA;AAAA,cAEA;AAAA,cACA;AAAA,cACA;AAAA;AAAA,cAEA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA;AAAA,cAEA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA,sBAAsB,KAAK;AAAA,YAC7B;AAAA,YACC,GAAG,WAAW;AAAA,YACf,iBAAe;AAAA,YACf;AAAA,YACA;AAAA,YAEA,wDAAC,mBAAM,SAAN,EAAc,WAAU,uOACvB;AAAA,4DAAC,SAAI,WAAU,cACZ;AAAA,wBACC;AAAA,kBAAC;AAAA;AAAA,oBACC,WAAU;AAAA,oBACV,aAAU;AAAA,oBAEV,uDAAC,QAAK,WAAU,qNAAoN;AAAA;AAAA,gBACtO;AAAA,gBAGF,8CAAC,SAAI,WAAU,yBACb;AAAA;AAAA,oBAAC,mBAAM;AAAA,oBAAN;AAAA,sBACC,WAAU;AAAA,sBACV,aAAU;AAAA;AAAA,kBACZ;AAAA,kBACA;AAAA,oBAAC,mBAAM;AAAA,oBAAN;AAAA,sBACC,WAAU;AAAA,sBACV,aAAU;AAAA;AAAA,kBACZ;AAAA,mBACF;AAAA,iBACF;AAAA,cACC,MAAM,eACL;AAAA,gBAAC,mBAAM;AAAA,gBAAN;AAAA,kBACC,WAAW,eAAe,EAAE,MAAM,KAAK,CAAC;AAAA,kBACxC,aAAU;AAAA,kBAET,gBAAM,YAAY;AAAA;AAAA,cACrB;AAAA,eAEJ;AAAA;AAAA,UA9EK,MAAM;AAAA,QA+Eb;AAAA,MAEJ,CAAC;AAAA;AAAA,EACH,GACF;AAEJ;AAEA,SAAS,eAAe;AAAA,EACtB;AACF,GAEuB;AACrB,QAAM,EAAE,OAAO,IAAI,mBAAM,gBAAgB;AAEzC,SACE,6CAAC,mBAAM,QAAN,EAAa,aAAU,yBAAyB,GAAG,aAClD;AAAA,IAAC,mBAAM;AAAA,IAAN;AAAA,MACC,WAAU;AAAA,MACV,aAAU;AAAA,MAET,iBAAO,IAAI,CAAC,UAAU;AACrB,cAAM,OAAO,MAAM,OACf,YAAY,MAAM,IAAgC,IAClD;AACJ,cAAM,YAAY,MAAM;AACxB,cAAM,eAAe,WAAW,gBAAgB;AAChD,cAAM,kBAAkB,MAAM;AAE9B,YAAI,CAAC,iBAAiB,QAAQ;AAC5B,iBAAO;AAAA,QACT;AAEA,eACE;AAAA,UAAC,mBAAM;AAAA,UAAN;AAAA,YAEC,WAAU;AAAA,YACV,aAAU;AAAA,YACV,YAAY,gBAAgB,cAAc;AAAA,YAC1C;AAAA,YAEA;AAAA,cAAC,mBAAM;AAAA,cAAN;AAAA,gBACC,WAAW;AAAA,kBACT;AAAA,kBACA,eAAe,eAAe;AAAA,kBAC9B,sBAAsB,KAAK;AAAA,gBAC7B;AAAA,gBACC,GAAG,WAAW;AAAA,gBACf,aAAU;AAAA,gBACV;AAAA,gBAEC,yBACC,6CAAC,mBAAM,SAAN,EAAc,WAAU,iCACvB,uDAAC,mBAAM,OAAN,EAAY,aAAU,eAAc,GACvC,IAEA,8CAAC,mBAAM,SAAN,EAAc,WAAU,qGACvB;AAAA,gEAAC,SAAI,WAAU,cACZ;AAAA,4BACC;AAAA,sBAAC;AAAA;AAAA,wBACC,WAAU;AAAA,wBACV,aAAU;AAAA,wBAEV,uDAAC,QAAK,WAAU,qNAAoN;AAAA;AAAA,oBACtO;AAAA,oBAGF,8CAAC,SAAI,WAAU,yBACb;AAAA;AAAA,wBAAC,mBAAM;AAAA,wBAAN;AAAA,0BACC,WAAU;AAAA,0BACV,aAAU;AAAA;AAAA,sBACZ;AAAA,sBACA;AAAA,wBAAC,mBAAM;AAAA,wBAAN;AAAA,0BACC,WAAU;AAAA,0BACV,aAAU;AAAA;AAAA,sBACZ;AAAA,uBACF;AAAA,qBACF;AAAA,kBACC,MAAM,eACL;AAAA,oBAAC,mBAAM;AAAA,oBAAN;AAAA,sBACC,WAAW,eAAe,EAAE,MAAM,KAAK,CAAC;AAAA,sBACxC,aAAU;AAAA,sBAET,gBAAM,YAAY;AAAA;AAAA,kBACrB;AAAA,mBAEJ;AAAA;AAAA,YAEJ;AAAA;AAAA,UArDK,MAAM;AAAA,QAsDb;AAAA,MAEJ,CAAC;AAAA;AAAA,EACH,GACF;AAEJ;AAEO,IAAM,eACX,mBAAM,mBAAmB;AAEpB,IAAM,uBACX,mBAAM,mBAAmB;AAepB,SAAS,cAAc;AAAA,EAC5B;AAAA,EACA,WAAW;AAAA,EACX;AAAA,EACA,GAAG;AACL,GAA2C;AACzC,SACE,8CAAC,mBAAM,UAAN,EAAe,cAA6B,GAAG,OAC7C;AAAA;AAAA,IACD,6CAAC,UAAO,aAA0B,UAAoB;AAAA,KACxD;AAEJ;AAMO,SAAS,sBAAsB;AAAA,EACpC;AAAA,EACA;AAAA,EACA,GAAG;AACL,GAAmD;AACjD,SACE,8CAAC,mBAAM,UAAN,EAAe,cAAc,sBAAuB,GAAG,OACrD;AAAA;AAAA,IACD,6CAAC,kBAAe,aAA0B;AAAA,KAC5C;AAEJ;;;AC/TA,IAAAC,gBAAyD;AAOlD,SAAS,mBAAmB,UAAqC,CAAC,GAAG;AAC1E,QAAM,EAAE,UAAU,KAAM,OAAO,IAAI;AACnC,QAAM,CAAC,UAAU,WAAW,QAAI,wBAAS,KAAK;AAC9C,QAAM,iBAAa,sBAAsB,IAAI;AAE7C,QAAM,sBAAkB;AAAA,IACtB,OAAO,UAAkB;AACvB,UAAI,CAAC,SAAS,OAAO,WAAW,eAAe,CAAC,UAAU,WAAW;AACnE,eAAO;AAAA,MACT;AAEA,UAAI;AACF,YAAI,WAAW,SAAS;AACtB,iBAAO,aAAa,WAAW,OAAO;AAAA,QACxC;AAEA,cAAM,UAAU,UAAU,UAAU,KAAK;AACzC,oBAAY,IAAI;AAChB,iBAAS;AAET,YAAI,UAAU,GAAG;AACf,qBAAW,UAAU,OAAO,WAAW,MAAM;AAC3C,wBAAY,KAAK;AAAA,UACnB,GAAG,OAAO;AAAA,QACZ;AACA,eAAO;AAAA,MACT,SAAS,OAAO;AACd,gBAAQ,MAAM,+BAA+B,KAAK;AAClD,eAAO;AAAA,MACT;AAAA,IACF;AAAA,IACA,CAAC,SAAS,MAAM;AAAA,EAClB;AAEA,+BAAU,MAAM;AACd,WAAO,MAAM;AACX,UAAI,WAAW,SAAS;AACtB,eAAO,aAAa,WAAW,OAAO;AAAA,MACxC;AAAA,IACF;AAAA,EACF,GAAG,CAAC,CAAC;AAEL,SAAO;AAAA,IACL;AAAA,IACA;AAAA,EACF;AACF;;;ACnDA,SAAS,SACP,WACA,UACA,OAAuB,QACvB;AACA,MACE,OAAO,WAAW;AAAA,EAEjB,CAAC,OAAO,gBAAgB,CAAE,OAAe;AAE1C;AACF,MAAI;AACF,UAAM;AAAA;AAAA,MAEJ,OAAO,gBAAiB,OAAe;AAAA;AACzC,UAAM,MAAM,IAAI,aAAa;AAC7B,UAAM,MAAM,IAAI,iBAAiB;AACjC,UAAM,OAAO,IAAI,WAAW;AAE5B,QAAI,OAAO;AACX,QAAI,UAAU,eAAe,WAAW,IAAI,WAAW;AAEvD,SAAK,KAAK,eAAe,KAAK,IAAI,WAAW;AAC7C,SAAK,KAAK,6BAA6B,MAAO,IAAI,cAAc,QAAQ;AAExE,QAAI,QAAQ,IAAI;AAChB,SAAK,QAAQ,IAAI,WAAW;AAE5B,QAAI,MAAM;AACV,QAAI,KAAK,IAAI,cAAc,QAAQ;AAAA,EACrC,SAAS,IAAI;AAAA,EAEb;AACF;AAEO,SAAS,MAAM;AACpB,WAAS,KAAK,GAAG;AACnB;AAEO,SAAS,KAAK,WAA+B;AAClD,MAAI,cAAc,WAAW;AAC3B,aAAS,KAAK,GAAG;AAAA,EACnB,OAAO;AACL,aAAS,KAAK,GAAG;AAAA,EACnB;AACF;AAEO,SAAS,OAAO;AACrB,WAAS,KAAK,MAAM,UAAU;AAChC;AAEO,SAAS,OAAO;AACrB,WAAS,KAAK,KAAK,UAAU;AAC/B;;;ACtDA,IAAAC,gBAKO;AACP,IAAAA,gBAA+B;AAoDrB,IAAAC,sBAAA;AAxCH,SAAS,UAAU;AAAA,EACxB;AAAA,EACA,IAAI,YAAY;AAAA,EAChB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAAmB;AACjB,QAAM,eAAW,qBAAM;AAEvB,QAAM,iBAAa,uBAAQ,MAAM;AAC/B,UAAM,aAAqC,CAAC;AAE5C,WAAO,SAAS,MAAM,EAAE,EAAE,IAAI,CAAC,SAAS;AACtC,YAAM,YAAY,KAAK,YAAY;AACnC,iBAAW,SAAS,KAAK,WAAW,SAAS,KAAK,KAAK;AAEvD,aAAO;AAAA,QACL,IAAI,GAAG,QAAQ,IAAI,SAAS,GAAG,WAAW,SAAS,CAAC;AAAA,QACpD,OAAO,SAAS,MAAM,SAAW;AAAA,MACnC;AAAA,IACF,CAAC;AAAA,EACH,GAAG,CAAC,UAAU,QAAQ,CAAC;AAEvB,QAAM,kBAA4B;AAAA,IAChC,SAAS,EAAE,SAAS,EAAE;AAAA,IACtB,SAAS,EAAE,SAAS,EAAE;AAAA,IACtB,MAAM,EAAE,SAAS,EAAE;AAAA,EACrB;AAEA,QAAM,oBAAgC;AAAA,IACpC,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,UAAU;AAAA,EACZ;AAEA,SACE,6CAAC,aAAU,WAAW,GAAG,SAAS,GAAG,cAAY,UAAU,OACzD,uDAAC,iCAAgB,MAAK,aAAY,SAAS,OACxC,qBAAW,IAAI,CAAC,cACf;AAAA,IAAC,qBAAO;AAAA,IAAP;AAAA,MAEC,UAAU,UAAU;AAAA,MACpB,WAAU;AAAA,MACV,eAAY;AAAA,MACZ,SAAQ;AAAA,MACR,SAAQ;AAAA,MACR,MAAK;AAAA,MACL,UAAU,YAAY;AAAA,MACtB,YAAY,cAAc;AAAA,MAEzB,oBAAU;AAAA;AAAA,IAVN,UAAU;AAAA,EAWjB,CACD,GACH,GACF;AAEJ;;;ALrCY,IAAAC,sBAAA;AA5BZ,IAAM,eAAe,EAAE,MAAM,UAAU,WAAW,KAAK,SAAS,GAAG;AAEnE,IAAM,aAAa,EAAE,UAAU,MAAM,MAAM,UAAU;AAE9C,SAAS,cAAc,EAAE,OAAO,GAAwB;AAC7D,QAAM,cAAU,gCAAiB,KAAK;AACtC,QAAM,IAAI,UAAU,EAAE,UAAU,EAAE,IAAI;AAEtC,SACE;AAAA,IAAC;AAAA;AAAA,MACC,eAAY;AAAA,MACZ,WAAU;AAAA,MAEV,uDAAC,iCAAgB,SAAS,OAAO,MAAK,aACnC,mBACC;AAAA,QAAC,qBAAO;AAAA,QAAP;AAAA,UAEC,eAAY;AAAA,UACZ,OAAM;AAAA,UACN,QAAO;AAAA,UACP,SAAQ;AAAA,UACR,MAAK;AAAA,UACL,WAAU;AAAA,UACV,SAAS,EAAE,SAAS,GAAG,OAAO,IAAI;AAAA,UAClC,SAAS,EAAE,SAAS,GAAG,OAAO,EAAE;AAAA,UAChC,MAAM,EAAE,SAAS,GAAG,OAAO,IAAI;AAAA,UAC/B,YAAY;AAAA,UAEZ;AAAA,YAAC,qBAAO;AAAA,YAAP;AAAA,cACC,GAAE;AAAA,cACF,QAAO;AAAA,cACP,aAAY;AAAA,cACZ,eAAc;AAAA,cACd,gBAAe;AAAA,cACf,SAAS,EAAE,YAAY,UAAU,IAAI,EAAE;AAAA,cACvC,SAAS,EAAE,YAAY,EAAE;AAAA,cACzB,YACE,UAAU,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,MAAM,MAAM,UAAU;AAAA;AAAA,UAElE;AAAA;AAAA,QAvBI;AAAA,MAwBN,IAEA;AAAA,QAAC,qBAAO;AAAA,QAAP;AAAA,UAEC,eAAY;AAAA,UACZ,OAAM;AAAA,UACN,QAAO;AAAA,UACP,SAAQ;AAAA,UACR,MAAK;AAAA,UACL,WAAU;AAAA,UACV,SAAS,EAAE,SAAS,GAAG,OAAO,IAAI;AAAA,UAClC,SAAS,EAAE,SAAS,GAAG,OAAO,EAAE;AAAA,UAChC,MAAM,EAAE,SAAS,GAAG,OAAO,IAAI;AAAA,UAC/B,YAAY;AAAA,UAEZ;AAAA,YAAC;AAAA;AAAA,cACC,GAAE;AAAA,cACF,QAAO;AAAA,cACP,aAAY;AAAA,cACZ,eAAc;AAAA,cACd,gBAAe;AAAA;AAAA,UACjB;AAAA;AAAA,QAlBI;AAAA,MAmBN,GAEJ;AAAA;AAAA,EACF;AAEJ;AAEO,SAAS,aAAa;AAAA,EAC3B;AACF,GAEG;AACD,QAAM,CAAC,QAAQ,SAAS,QAAI,wBAAS,CAAC;AACtC,QAAM,EAAE,iBAAiB,SAAS,IAAI,mBAAmB,EAAE,SAAS,IAAK,CAAC;AAC1E,QAAM,cAAU,gCAAiB,KAAK;AACtC,QAAM,MAAM,MAAM,MAAM;AACxB,QAAM,oBAAgB,sBAA0B,IAAI;AAEpD,QAAM,aAAa,YAAY;AAC7B,UAAM,UAAU,MAAM,gBAAgB,IAAI,OAAO;AACjD,QAAI,SAAS;AACX,UAAI;AACJ,2BAAqB,IAAI;AAAA,QACvB,OAAO;AAAA,QACP,iBAAiB;AAAA,UACf,QAAQ,cAAc;AAAA,UACtB,YAAY;AAAA,QACd;AAAA,QACA,MAAM;AAAA,UACJ,cAAc;AAAA,QAChB;AAAA,QACA,SAAS;AAAA,MACX,CAAC;AAAA,IACH,OAAO;AACL,WAAK;AACL,2BAAqB,IAAI;AAAA,QACvB,OAAO;AAAA,QACP,iBAAiB;AAAA,UACf,QAAQ,cAAc;AAAA,UACtB,YAAY;AAAA,QACd;AAAA,QACA,MAAM;AAAA,UACJ,cAAc;AAAA,QAChB;AAAA,QACA,SAAS;AAAA,MACX,CAAC;AAAA,IACH;AAAA,EACF;AAEA,SACE,8CAAC,SAAI,WAAU,iEACZ;AAAA,UAAM,SAAS,KACd,8CAAC,SAAI,WAAU,8DACb;AAAA,mDAAC,SAAI,WAAU,8BACZ,gBAAM,IAAI,CAAC,IAAI,MAAM;AACpB,cAAM,WAAW,MAAM;AACvB,eACE;AAAA,UAAC;AAAA;AAAA,YAEC,MAAK;AAAA,YACL,SAAS,MAAM,UAAU,CAAC;AAAA,YAC1B,WAAW;AAAA,cACT;AAAA,cACA,WACI,oBACA;AAAA,YACN;AAAA,YAEC;AAAA,0BACC;AAAA,gBAAC,qBAAO;AAAA,gBAAP;AAAA,kBACC,eAAY;AAAA,kBACZ,UAAS;AAAA,kBACT,YAAY,UAAU,EAAE,UAAU,EAAE,IAAI;AAAA,kBACxC,WAAU;AAAA;AAAA,cACZ;AAAA,cAEF,6CAAC,UAAK,WAAU,YAAY,aAAG,IAAG;AAAA;AAAA;AAAA,UAlB7B,GAAG;AAAA,QAmBV;AAAA,MAEJ,CAAC,GACH;AAAA,MACA;AAAA,QAAC;AAAA;AAAA,UACC,KAAK;AAAA,UACL,SAAQ;AAAA,UACR,MAAK;AAAA,UACL,SAAS;AAAA,UACT,WAAU;AAAA,UACV,OAAM;AAAA,UACN,cAAW;AAAA,UAEX,uDAAC,iBAAc,QAAQ,UAAU;AAAA;AAAA,MACnC;AAAA,OACF;AAAA,IAGF,8CAAC,SAAI,WAAU,qBACb;AAAA,mDAAC,SAAI,WAAU,0BACb,uDAAC,SAAI,WAAU,yEACb,uDAAC,UACC,uDAAC,aAAW,cAAI,SAAQ,GAC1B,GACF,GACF;AAAA,MACC,MAAM,WAAW,KAChB;AAAA,QAAC;AAAA;AAAA,UACC,KAAK;AAAA,UACL,SAAQ;AAAA,UACR,MAAK;AAAA,UACL,SAAS;AAAA,UACT,WAAU;AAAA,UACV,OAAM;AAAA,UACN,cAAW;AAAA,UAEX,uDAAC,iBAAc,QAAQ,UAAU;AAAA;AAAA,MACnC;AAAA,OAEJ;AAAA,KACF;AAEJ;;;AD7II,IAAAC,sBAAA;AAnCG,SAAS,UAAU,EAAE,MAAM,MAAM,UAAU,GAAmB;AACnE,QAAM,YAAkB,aAA0B,IAAI;AACtD,QAAM,EAAE,iBAAiB,SAAS,IAAI,mBAAmB,EAAE,SAAS,KAAK,CAAC;AAE1E,iBAAe,aAAa;AAC1B,UAAM,UAAU,MAAM,gBAAgB,IAAI;AAC1C,QAAI,SAAS;AACX,WAAK;AACL,2BAAqB,IAAI;AAAA,QACvB,OAAO;AAAA,QACP,iBAAiB;AAAA,UACf,QAAQ,UAAU;AAAA,UAClB,YAAY;AAAA,QACd;AAAA,QACA,MAAM;AAAA,UACJ,cAAc;AAAA,QAChB;AAAA,QACA,SAAS;AAAA,MACX,CAAC;AAAA,IACH,OAAO;AACL,2BAAqB,IAAI;AAAA,QACvB,OAAO;AAAA,QACP,iBAAiB;AAAA,UACf,QAAQ,UAAU;AAAA,UAClB,YAAY;AAAA,QACd;AAAA,QACA,MAAM;AAAA,UACJ,cAAc;AAAA,QAChB;AAAA,QACA,SAAS;AAAA,MACX,CAAC;AAAA,IACH;AAAA,EACF;AAEA,SACE;AAAA,IAAC;AAAA;AAAA,MACC,WAAW;AAAA,QACT;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,MAEA;AAAA;AAAA,UAAC;AAAA;AAAA,YACC,KAAK;AAAA,YACL,SAAQ;AAAA,YACR,MAAK;AAAA,YACL,SAAS;AAAA,YACT,WAAW;AAAA,cACT;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,YACF;AAAA,YAEA,uDAAC,iBAAc,QAAQ,UAAU;AAAA;AAAA,QACnC;AAAA,QAEA;AAAA,UAAC;AAAA;AAAA,YACC,WAAW;AAAA,cACT;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cAEA;AAAA,cACA;AAAA,cACA;AAAA,cAEA;AAAA,cAEA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,YACF;AAAA,YACA,yBAAyB;AAAA,cACvB,QAAQ;AAAA,YACV;AAAA;AAAA,QACF;AAAA;AAAA;AAAA,EACF;AAEJ;;;AO5GA,IAAAC,iBAAyC;;;ACAzC,IAAAC,iBAAoC;AAahC,IAAAC,sBAAA;AAXG,SAAS,aAAa;AAC3B,QAAM,CAAC,SAAS,UAAU,QAAI,yBAAS,KAAK;AAE5C,gCAAU,MAAM;AACd,UAAM,eAAe,MAAM,WAAW,OAAO,UAAU,EAAE;AACzD,iBAAa;AACb,WAAO,iBAAiB,UAAU,cAAc,EAAE,SAAS,KAAK,CAAC;AACjE,WAAO,MAAM,OAAO,oBAAoB,UAAU,YAAY;AAAA,EAChE,GAAG,CAAC,CAAC;AAEL,SACE;AAAA,IAAC;AAAA;AAAA,MACC,WAAW,sJACT,UAAU,gBAAgB,WAC5B;AAAA;AAAA,EACF;AAEJ;;;ACdA,IAAAC,iBAAwC;AACxC,IAAAA,iBAAkB;AA8GZ,IAAAC,sBAAA;AAjFN,IAAM,sBAA+C;AAAA,EACnD,MAAM;AAAA,EACN,MAAM;AAAA,EACN,MAAM;AACR;AAEA,IAAM,2BAAqC;AAAA,EACzC,QAAQ,EAAE,SAAS,EAAE;AAAA,EACrB,SAAS;AAAA,IACP,SAAS;AAAA,IACT,YAAY;AAAA,MACV,iBAAiB;AAAA,IACnB;AAAA,EACF;AAAA,EACA,MAAM;AAAA,IACJ,YAAY,EAAE,iBAAiB,MAAM,kBAAkB,GAAG;AAAA,EAC5D;AACF;AAEA,IAAM,sBAAgC;AAAA,EACpC,QAAQ,EAAE,SAAS,EAAE;AAAA,EACrB,SAAS;AAAA,IACP,SAAS;AAAA,EACX;AAAA,EACA,MAAM,EAAE,SAAS,EAAE;AACrB;AAEA,IAAM,iBAGF;AAAA,EACF,MAAM;AAAA,IACJ,WAAW;AAAA,IACX,MAAM;AAAA,MACJ,QAAQ,EAAE,SAAS,GAAG,QAAQ,aAAa;AAAA,MAC3C,SAAS,EAAE,SAAS,GAAG,QAAQ,YAAY;AAAA,MAC3C,MAAM,EAAE,SAAS,GAAG,QAAQ,aAAa;AAAA,IAC3C;AAAA,EACF;AAAA,EACA,gBAAgB;AAAA,IACd,WAAW;AAAA,IACX,MAAM;AAAA,MACJ,QAAQ,EAAE,SAAS,GAAG,GAAG,GAAG,QAAQ,aAAa;AAAA,MACjD,SAAS,EAAE,SAAS,GAAG,GAAG,GAAG,QAAQ,YAAY;AAAA,MACjD,MAAM,EAAE,SAAS,GAAG,GAAG,GAAG,QAAQ,aAAa;AAAA,IACjD;AAAA,EACF;AAAA,EACA,OAAO;AAAA,IACL,WAAW;AAAA,IACX,MAAM;AAAA,MACJ,QAAQ,EAAE,SAAS,GAAG,OAAO,KAAK;AAAA,MAClC,SAAS,EAAE,SAAS,GAAG,OAAO,EAAE;AAAA,MAChC,MAAM,EAAE,SAAS,GAAG,OAAO,KAAK;AAAA,IAClC;AAAA,EACF;AAAA,EACA,MAAM;AAAA,IACJ,WAAW;AAAA,IACX,MAAM;AAAA,MACJ,QAAQ,EAAE,SAAS,EAAE;AAAA,MACrB,SAAS,EAAE,SAAS,EAAE;AAAA,MACtB,MAAM,EAAE,SAAS,EAAE;AAAA,IACrB;AAAA,EACF;AAAA,EACA,OAAO;AAAA,IACL,WAAW;AAAA,IACX,MAAM;AAAA,MACJ,QAAQ,EAAE,SAAS,GAAG,GAAG,EAAE;AAAA,MAC3B,SAAS,EAAE,SAAS,GAAG,GAAG,EAAE;AAAA,MAC5B,MAAM,EAAE,SAAS,GAAG,GAAG,EAAE;AAAA,IAC3B;AAAA,EACF;AACF;AAEA,IAAM,qBAKD,eAAAC,QAAM,KAAK,CAAC,EAAE,SAAS,UAAU,KAAK,wBAAwB,MAAM;AACvE,QAAM,UACJ,QAAQ,SACN,6CAAC,sBAAO,MAAP,EAAY,UAAoB,WAAU,SACxC,mBACH,IACE,QAAQ,SACV;AAAA,IAAC,sBAAO;AAAA,IAAP;AAAA,MACC,eAAY;AAAA,MACZ;AAAA,MACA,WAAU;AAAA,MAET;AAAA;AAAA,EACH,IAEA,6CAAC,sBAAO,MAAP,EAAY,WAAU,+BACpB,kBAAQ,MAAM,EAAE,EAAE,IAAI,CAAC,MAAM,cAC5B;AAAA,IAAC,sBAAO;AAAA,IAAP;AAAA,MAGC,eAAY;AAAA,MACZ;AAAA,MACA,WAAU;AAAA,MAET;AAAA;AAAA,IALI,QAAQ,SAAS;AAAA,EAMxB,CACD,GACH;AAGJ,MAAI,CAAC,yBAAyB;AAC5B,WAAO;AAAA,EACT;AAEA,QAAM,0BAA0B,QAAQ,SAAS,UAAU;AAE3D,SACE,6CAAC,UAAK,WAAW,GAAG,yBAAyB,uBAAuB,GACjE,mBACH;AAEJ,CAAC;AAED,mBAAmB,cAAc;AAEjC,IAAM,YAAY,CAAC,MAAc,QAAiB;AAChD,MAAI,QAAQ,OAAQ,QAAO,KAAK,MAAM,IAAI;AAC1C,SAAO,KAAK,MAAM,OAAO;AAC3B;AAEA,IAAM,gBAAgB,CACpB,YACiE;AACjE,MAAI,CAAC,QAAS,QAAO;AACrB,SAAO,OAAO,YAAY,YAAY,gBAAgB;AACxD;AAEA,IAAM,+BAA+B,CACnC,cACA,eACa;AACb,MAAI,CAAC,WAAY,QAAO;AAExB,QAAM,EAAE,MAAM,GAAG,GAAG,eAAe,IAAI;AAEvC,SAAO;AAAA,IACL,GAAG;AAAA,IACH,SAAS;AAAA,MACP,GAAG,aAAa;AAAA,MAChB,YAAY;AAAA,QACV,GAAI,cAAc,aAAa,OAAO,IAClC,aAAa,QAAQ,aACrB,CAAC;AAAA,QACL,GAAG;AAAA,MACL;AAAA,IACF;AAAA,IACA,MAAM;AAAA,MACJ,GAAG,aAAa;AAAA,MAChB,YAAY;AAAA,QACV,GAAI,cAAc,aAAa,IAAI,IAC/B,aAAa,KAAK,aAClB,CAAC;AAAA,QACL,GAAG;AAAA,QACH,kBAAkB;AAAA,MACpB;AAAA,IACF;AAAA,EACF;AACF;AAEO,SAAS,WAAW;AAAA,EACzB;AAAA,EACA,MAAM;AAAA,EACN,KAAK;AAAA,EACL;AAAA,EACA;AAAA,EACA,SAAS;AAAA,EACT,QAAQ;AAAA,EACR,cAAc;AAAA,EACd,eAAe;AAAA,EACf,UAAU;AAAA,EACV;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAAoB;AAClB,QAAM,WAAW,UAAU,UAAU,GAAG;AACxC,QAAM,YAAY,sBAAO,EAAyB;AAElD,QAAM,eAAe,SACjB,eAAe,MAAM,IACrB,EAAE,WAAW,0BAA0B,MAAM,oBAAoB;AAErE,QAAM,UAAU,oBAAoB,GAAG,IAAI;AAE3C,QAAM,eAAe,MAAM;AAE3B,QAAM,gBAAgB,cAAc,UAAU,WAAW,WAAW,CAAC,CAAC,KACjE,UAAU,WAAW,SAAgC,YAClD,kBACJ;AAEJ,QAAM,cAAc,cAAc,UAAU,WAAW,WAAW,CAAC,CAAC,KAC/D,UAAU,WAAW,SAAgC,YAClD,gBACJ;AAEJ,QAAM,mBAAmB;AAAA,IACvB,WAAW;AAAA,MACT,UAAU,aAAa,aAAa;AAAA,MACpC;AAAA,QACE,iBAAiB,iBAAiB;AAAA,QAClC,eAAe,eAAe;AAAA,QAC9B,GAAG;AAAA,QACH,MAAM;AAAA,UACJ,iBAAiB,iBAAiB;AAAA,UAClC,kBAAkB;AAAA,QACpB;AAAA,MACF;AAAA,IACF;AAAA,IACA,MAAM,6BAA6B,UAAU,QAAQ,aAAa,MAAM;AAAA,MACtE,UAAU;AAAA,MACV,GAAG;AAAA,IACL,CAAC;AAAA,EACH;AAEA,SACE,6CAAC,kCAAgB,MAAK,aACnB,qBACC;AAAA,IAAC;AAAA;AAAA,MACC,SAAQ;AAAA,MACR,SAAQ;AAAA,MACR,MAAK;AAAA,MACL,UAAU,iBAAiB;AAAA,MAC3B;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MAEC;AAAA,gBAAQ,SAAS,6CAAC,UAAK,WAAU,WAAW,UAAS,IAAU;AAAA,QAC/D,SAAS,IAAI,CAAC,SAAS,UACtB;AAAA,UAAC;AAAA;AAAA,YAEC;AAAA,YACA,UAAU,iBAAiB;AAAA,YAC3B;AAAA,YACA;AAAA;AAAA,UAJK,GAAG,GAAG,IAAI,KAAK,IAAI,OAAO;AAAA,QAKjC,CACD;AAAA;AAAA;AAAA,EACH,GAEJ;AAEJ;;;AFrRI,IAAAC,uBAAA;AAHG,SAAS,QAAQ,EAAE,SAAS,GAA4B;AAC7D,QAAM,cAAU,iCAAiB,KAAK;AACtC,SACE;AAAA,IAAC,sBAAO;AAAA,IAAP;AAAA,MACC,WAAU;AAAA,MACV,SAAS,UAAU,QAAQ;AAAA,MAC3B,aAAY;AAAA,MACZ,UAAU,EAAE,MAAM,MAAM,QAAQ,oBAAoB;AAAA,MACpD,UAAU;AAAA,MAET;AAAA;AAAA,EACH;AAEJ;AAEO,SAAS,UAAU,EAAE,SAAS,GAA4B;AAC/D,SACE,+CAAC,SAAI,WAAU,+CAEb;AAAA,kDAAC,cAAW;AAAA,IAGZ,8CAAC,WAAO,oNAAyM;AAAA,IAEjN,8CAAC,SAAI,WAAU,UACb,wDAAC,SAAI,WAAU,2BACb,wDAAC,UAAK,WAAU,sEACb,UACH,GACF,GACF;AAAA,KACF;AAEJ;AAIO,SAAS,WAAW;AAAA,EACzB;AAAA,EACA;AAAA,EACA;AACF,GAIG;AACD,SACE,8CAAC,aAAQ,IAAG,eAAc,WAAU,gBAClC,yDAAC,WACC;AAAA,kDAAC,QAAG,WAAU,uBACZ,wDAAC,cAAW,QAAO,gBAAe,KAAI,QACnC,iBACH,GACF;AAAA,IACA,8CAAC,OAAE,WAAU,sCAAsC,gBAAK;AAAA,IACvD;AAAA,KACH,GACF;AAEJ;AAEO,SAAS,aAAa,EAAE,SAAS,GAA4B;AAClE,SACE,8CAAC,aAAQ,IAAG,YAAW,WAAU,gBAC/B,wDAAC,WAAS,UAAS,GACrB;AAEJ;AAEO,SAAS,YAAY;AAAA,EAC1B;AAAA,EACA;AAAA,EACA;AACF,GAIG;AACD,SACE,8CAAC,aAAQ,IAAQ,WAAU,sBACzB,yDAAC,WACE;AAAA,aAAS,8CAAC,QAAI,iBAAM;AAAA,IACpB;AAAA,KACH,GACF;AAEJ;AAEO,SAAS,iBAAiB;AAAA,EAC/B;AACF,GAEG;AACD,SACE,+CAAC,eAAY,IAAG,gBAAe,OAAM,gBACnC;AAAA,kDAAC,OAAE,uEAAyD;AAAA,IAC5D,8CAAC,gBAAa,OAAO,SAAS;AAAA,KAChC;AAEJ;AAEO,SAAS,SAAS,EAAE,MAAM,KAAK,GAAmC;AACvE,SAAO,8CAAC,aAAU,MAAY,MAAY;AAC5C;;;AG9GA,IAAAC,sBAA8B;AAC9B,IAAAC,iBAAuD;AACvD,kBAAiB;AACjB,wBAA4B;AAC5B,IAAAC,SAAuB;;;ACLvB,IAAAC,iBAMO;AACP,IAAAA,iBAAiC;AACjC,+BAAuB;AAkBnB,IAAAC,uBAAA;AAhBJ,IAAM,aAAa;AAAA,EACjB,MAAM;AAAA,EACN,QAAQ;AAAA,EACR,UAAU;AACZ;AAEA,SAAS,MAAM,EAAE,OAAO,MAAM,GAAqC;AACjE,QAAM,sBAAsB,KAAK,MAAM,QAAQ,KAAK,IAAI;AACxD,QAAM,cAAU,4BAAY,mBAAmB;AAC/C,QAAM,oBAAgB,0BAAU,SAAS,UAAU;AAEnD,gCAAU,MAAM;AACd,kBAAc,IAAI,mBAAmB;AAAA,EACvC,GAAG,CAAC,eAAe,mBAAmB,CAAC;AAEvC,SACE,+CAAC,SAAI,WAAU,8FACb;AAAA,kDAAC,SAAI,WAAU,aAAY,eAAC;AAAA,IAC3B,MAAM,KAAK,EAAE,QAAQ,GAAG,GAAG,CAAC,GAAG;AAAA;AAAA,MAE9B,8CAAC,sBAAsC,IAAI,eAAe,QAAQ,KAAzC,SAAS,CAAC,EAAkC;AAAA,KACtE;AAAA,KACH;AAEJ;AAEA,SAAS,mBAAmB;AAAA,EAC1B;AAAA,EACA;AACF,GAGG;AACD,QAAM,eAAW,sBAAM;AACvB,QAAM,CAAC,KAAK,MAAM,QAAI,yBAAAC,SAAW;AAEjC,QAAM,QAAI,6BAAa,IAAI,CAAC,WAAW;AACrC,QAAI,CAAC,OAAO,OAAQ,QAAO;AAC3B,UAAM,aAAa,SAAS;AAC5B,UAAM,UAAU,KAAK,SAAS,cAAc;AAC5C,QAAI,OAAO,SAAS,OAAO;AAE3B,QAAI,SAAS,GAAG;AACd,cAAQ,KAAK,OAAO;AAAA,IACtB;AAEA,WAAO;AAAA,EACT,CAAC;AAGD,MAAI,CAAC,OAAO,QAAQ;AAClB,WACE,8CAAC,UAAK,KAAU,WAAU,sBACvB,kBACH;AAAA,EAEJ;AAEA,SACE;AAAA,IAAC,sBAAO;AAAA,IAAP;AAAA,MACC,OAAO,EAAE,EAAE;AAAA,MACX,UAAU,GAAG,QAAQ,IAAI,MAAM;AAAA,MAC/B,WAAU;AAAA,MACV,YAAY;AAAA,MACZ;AAAA,MAEC;AAAA;AAAA,EACH;AAEJ;AAQO,SAAS,cAAc;AAAA,EAC5B;AAAA,EACA,WAAW;AAAA,EACX,mBAAmB;AACrB,GAAuB;AACrB,QAAM,WAAW,KAAK,IAAI,KAAK;AAC/B,QAAM,CAAC,aAAa,WAAW,IAAI,SAAS,SAAS,EAAE,MAAM,GAAG;AAChE,QAAM,eAAe,SAAS,aAAa,EAAE;AAC7C,QAAM,gBACJ,YAAY,eAAe,KAAK,IAAI,WAAW,KAAK;AACtD,QAAM,gBAAgB,cAAc,MAAM,EAAE;AAC5C,QAAM,gBAAgB,cAAc;AAAA,IAClC,CAAC,GAAG,MAAM,OAAO,cAAc,SAAS,IAAI;AAAA,EAC9C;AAEA,SACE,+CAAC,SAAI,WAAU,qBACZ;AAAA,YAAQ,KAAK;AAAA,IACb,cAAc,IAAI,CAAC,GAAG,UACrB;AAAA,MAAC;AAAA;AAAA,QAEC,OAAO;AAAA,QACP,OAAO,cAAc,KAAK;AAAA;AAAA,MAFrB,OAAO,cAAc,KAAK,CAAC;AAAA,IAGlC,CACD;AAAA,IACA,eACC,gFACE;AAAA,oDAAC,UAAM,4BAAiB;AAAA,MACvB,YAAY,MAAM,EAAE,EAAE,IAAI,CAAC,GAAG,UAAU;AACvC,cAAM,QAAQ,OAAO,YAAY,SAAS,QAAQ;AAClD,eACE;AAAA,UAAC;AAAA;AAAA,YAEC,OAAO,SAAS,aAAa,EAAE;AAAA,YAC/B;AAAA;AAAA,UAFK,WAAW,KAAK;AAAA,QAGvB;AAAA,MAEJ,CAAC;AAAA,OACH;AAAA,KAEJ;AAEJ;;;ADhBI,IAAAC,uBAAA;AA7FG,SAAS,WAAW;AAAA,EACzB;AAAA,EACA;AAAA,EACA,WAAW;AAAA,EACX,aAAa;AAAA,EACb;AACF,GAAoB;AAClB,QAAM,eAAW,+BAAY;AAC7B,QAAM,CAAC,YAAY,aAAa,IAAU,gBAAS,EAAE;AAErD,QAAM,EAAE,gBAAgB,QAAI,0BAAU;AACtC,QAAM,CAAC,UAAU,WAAW,IAAU,gBAAS,CAAC;AAEhD,0CAAoB,iBAAiB,UAAU,CAAC,WAAW;AACzD,gBAAY,KAAK,MAAM,SAAS,GAAG,CAAC;AAAA,EACtC,CAAC;AAGD,EAAM,iBAAU,MAAM;AAEpB,UAAM,mBAAmB,MAAM;AAAA,MAAQ,CAAC,MACtC,EAAE,MAAM,OAAO,CAAC,MAAM,EAAE,YAAY,EAAE,IAAI,WAAW,QAAQ,CAAC;AAAA,IAChE;AACA,UAAM,WAAW,iBAAiB,IAAI,CAAC,MAAM,EAAE,IAAI,MAAM,GAAG,EAAE,CAAC,CAAC;AAChE,QAAI,CAAC,SAAS,QAAQ;AACpB,oBAAc,EAAE;AAChB;AAAA,IACF;AAEA,UAAM,kBAAkB;AAAA,MACtB,MAAM;AAAA,MACN,YAAY;AAAA;AAAA,MACZ,WAAW;AAAA,IACb;AAEA,UAAM,WAAW,IAAI,qBAAqB,CAAC,YAAY;AACrD,iBAAW,SAAS,SAAS;AAC3B,YAAI,MAAM,gBAAgB;AACxB,wBAAc,IAAI,MAAM,OAAO,EAAE,EAAE;AAAA,QACrC;AAAA,MACF;AAAA,IACF,GAAG,eAAe;AAElB,eAAW,MAAM,UAAU;AACzB,UAAI,IAAI;AACN,cAAM,KAAK,SAAS,eAAe,EAAE;AACrC,YAAI,GAAI,UAAS,QAAQ,EAAE;AAAA,MAC7B;AAAA,IACF;AAGA,QAAI,OAAO,WAAW,eAAe,OAAO,SAAS,MAAM;AACzD,oBAAc,OAAO,SAAS,IAAI;AAAA,IACpC,OAAO;AAEL,oBAAc,IAAI,SAAS,CAAC,CAAC,EAAE;AAAA,IACjC;AAEA,WAAO,MAAM;AACX,eAAS,WAAW;AAAA,IACtB;AAAA,EACF,GAAG,CAAC,OAAO,QAAQ,CAAC;AAEpB,QAAM,oBAAoB,CACxB,GACA,QACG;AACH,QAAI,CAAC,IAAI,SAAS,GAAG,EAAG;AAExB,UAAM,OAAO,IAAI,MAAM,GAAG,EAAE,CAAC;AAC7B,UAAM,UAAU,SAAS,eAAe,IAAI;AAE5C,QAAI,WAAW,IAAI,WAAW,QAAQ,GAAG;AACvC,QAAE,eAAe;AACjB,cAAQ,eAAe,EAAE,UAAU,SAAS,CAAC;AAC7C,aAAO,QAAQ,UAAU,MAAM,IAAI,IAAI,IAAI,EAAE;AAC7C,oBAAc,IAAI,IAAI,EAAE;AAAA,IAC1B;AAAA,EACF;AAEA,QAAM,eAAe,CAAC,KAAa,aAAsB;AACvD,QAAI,UAAU;AACZ,UAAI,CAAC,IAAI,WAAW,QAAQ,EAAG,QAAO;AACtC,YAAM,OAAO,IAAI,MAAM,GAAG,EAAE,CAAC;AAC7B,UAAI,YAAY;AACd,eAAO,eAAe,IAAI,IAAI;AAAA,MAChC;AACA,aAAO;AAAA,IACT;AACA,WAAO,aAAa;AAAA,EACtB;AAEA,SACE,gFACE;AAAA,kDAAC,cAAW;AAAA,IACX;AAAA,IACD,+CAAC,SAAI,WAAU,4GAEb;AAAA,qDAAC,WAAM,WAAU,0FACf;AAAA,uDAAC,SAAI,WAAU,qCACb;AAAA;AAAA,YAAC,YAAAC;AAAA,YAAA;AAAA,cACC,MAAM;AAAA,cACN,WAAU;AAAA,cAEV;AAAA,8DAAC,qCAAc,WAAU,YAAW;AAAA,gBACnC;AAAA;AAAA;AAAA,UACH;AAAA,UAEA,+CAAC,SAAI,WAAU,gFACb;AAAA,0DAAC,iBAAc,OAAO,UAAU;AAAA,YAAE;AAAA,aACpC;AAAA,WACF;AAAA,QACA,8CAAC,SAAI,WAAU,kEACZ,gBAAM,IAAI,CAAC,UACV,8CAAC,SAAsB,WAAU,kCAC/B,wDAAC,SAAI,WAAU,kEACZ,gBAAM,MAAM,IAAI,CAAC,SAAS;AACzB,gBAAM,SAAS,aAAa,KAAK,KAAK,KAAK,QAAQ;AACnD,iBACE;AAAA,YAAC,YAAAA;AAAA,YAAA;AAAA,cAEC,MAAM,KAAK;AAAA,cACX,SAAS,CAAC,MAAM,kBAAkB,GAAG,KAAK,GAAG;AAAA,cAC7C,WAAW,gFACT,SACI,gCACA,6CACN;AAAA,cAEC;AAAA,0BACC;AAAA,kBAAC,sBAAO;AAAA,kBAAP;AAAA,oBACC,UAAS;AAAA,oBACT,WAAU;AAAA,oBACV,YAAY;AAAA,sBACV,MAAM;AAAA,sBACN,UAAU;AAAA,sBACV,QAAQ;AAAA,oBACV;AAAA;AAAA,gBACF;AAAA,gBAEF,8CAAC,UAAK,WAAU,iBAAiB,eAAK,OAAM;AAAA;AAAA;AAAA,YApBvC,KAAK;AAAA,UAqBZ;AAAA,QAEJ,CAAC,GACH,KA9BQ,MAAM,KA+BhB,CACD,GACH;AAAA,SACF;AAAA,MAGA,8CAAC,UAAK,WAAU,kBAAkB,UAAS;AAAA,OAC7C;AAAA,KACF;AAEJ;AAEO,SAAS,WAAW;AAAA,EACzB;AAAA,EACA;AACF,GAGG;AACD,SACE,+CAAC,YAAO,WAAU,sIACf;AAAA;AAAA,IACA;AAAA,KACH;AAEJ;;;AE7LA,IAAAC,sBAA+B;AAC/B,IAAAC,iBAAuB;AACvB,IAAAC,eAAiB;AACjB,IAAAC,qBAA4B;;;ACH5B,IAAAC,sBAAkC;AAClC,yBAAyB;AACzB,IAAAC,iBAAoC;;;ACFpC,IAAAC,iBAAwC;AAyBhC,IAAAC,uBAAA;AA6BD,SAAS,UAAU;AAAA,EACxB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,UAAU;AACZ,GAAmB;AACjB,QAAM,WAAW;AAAA,IACf,OAAO;AAAA,MACL,SAAS,EAAE,SAAS,GAAG,OAAO,KAAK;AAAA,MACnC,SAAS,EAAE,SAAS,GAAG,OAAO,EAAE;AAAA,MAChC,MAAM,EAAE,SAAS,GAAG,OAAO,KAAK;AAAA,IAClC;AAAA,IACA,QAAQ;AAAA,MACN,SAAS,EAAE,SAAS,GAAG,QAAQ,KAAK,OAAO,KAAK;AAAA,MAChD,SAAS,EAAE,SAAS,GAAG,QAAQ,GAAG,OAAO,EAAE;AAAA,MAC3C,MAAM,EAAE,SAAS,GAAG,QAAQ,IAAI,OAAO,KAAK;AAAA,IAC9C;AAAA,IACA,OAAO;AAAA,MACL,SAAS,EAAE,SAAS,GAAG,GAAG,IAAI;AAAA,MAC9B,SAAS,EAAE,SAAS,GAAG,GAAG,EAAE;AAAA,MAC5B,MAAM,EAAE,SAAS,GAAG,GAAG,GAAG;AAAA,IAC5B;AAAA,EACF;AAEA,SACE,8CAAC,kCAAgB,MAAK,aAAY,SAAS,OACzC;AAAA,IAAC,sBAAO;AAAA,IAAP;AAAA,MAEC,SAAQ;AAAA,MACR,SAAQ;AAAA,MACR,MAAK;AAAA,MACL,UAAU,SAAS,OAAO;AAAA,MAC1B,YAAY,EAAE,UAAU,MAAM,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE;AAAA,MACvD,WAAW,2CAA2C,aAAa,EAAE;AAAA,MAEpE,qBAAW,aAAa;AAAA;AAAA,IARpB,WAAW,WAAW;AAAA,EAS7B,GACF;AAEJ;;;AD7EQ,IAAAC,uBAAA;AAXD,SAAS,gBAAgB;AAC9B,QAAM,EAAE,OAAO,UAAU,YAAY,QAAI,6BAAS;AAClD,QAAM,CAAC,SAAS,UAAU,QAAI,yBAAS,KAAK;AAE5C,gCAAU,MAAM;AACd,eAAW,IAAI;AAAA,EACjB,GAAG,CAAC,CAAC;AAEL,MAAI,CAAC,SAAS;AACZ,WACE,8CAAC,UAAO,SAAQ,SAAQ,MAAK,WAAU,cAAW,gBAChD,wDAAC,+BAAQ,eAAY,QAAO,GAC9B;AAAA,EAEJ;AAEA,QAAM,eAAe,UAAU,WAAW,cAAc;AAExD,SACE;AAAA,IAAC;AAAA;AAAA,MACC,SAAQ;AAAA,MACR,MAAK;AAAA,MACL,SAAS,MAAM,SAAS,iBAAiB,SAAS,UAAU,MAAM;AAAA,MAClE,cAAW;AAAA,MAEX;AAAA,QAAC;AAAA;AAAA,UACC,UAAU,iBAAiB;AAAA,UAC3B,YAAY,8CAAC,gCAAS,eAAY,QAAO;AAAA,UACzC,cAAc,8CAAC,+BAAQ,eAAY,QAAO;AAAA,UAC1C,SAAQ;AAAA;AAAA,MACV;AAAA;AAAA,EACF;AAEJ;;;AEvCA,IAAAC,iBAA8D;AAC9D,IAAAA,iBAAqC;AAqCzB,IAAAC,uBAAA;AAjCL,IAAM,gBAAY;AAAA,EACvB,CAAC,EAAE,YAAY,IAAI,GAAG,MAAM,GAAG,QAAQ;AACrC,UAAM,CAAC,WAAW,YAAY,QAAI,yBAAS,KAAK;AAGhD,UAAM,eAAe;AAAA,MACnB,MAAM;AAAA,MACN,UAAU;AAAA,MACV,QAAQ;AAAA,IACV;AAGA,UAAM,UAAU,CAAC,MAAM,GAAG,MAAM,CAAC;AAEjC,WACE;AAAA,MAAC,sBAAO;AAAA,MAAP;AAAA,QACC;AAAA,QAEA,WAAW,+EAA+E,SAAS;AAAA,QACnG,cAAc,MAAM,aAAa,IAAI;AAAA,QACrC,YAAY,MAAM,aAAa,KAAK;AAAA,QACpC,UAAU,EAAE,OAAO,KAAK;AAAA,QAExB,QAAM;AAAA,QACN,YAAY;AAAA,QACZ,OAAO;AAAA,UACL,QAAQ;AAAA;AAAA,UACR,QAAQ;AAAA,QACV;AAAA,QACC,GAAG;AAAA,QAEJ,wDAAC,kCAAgB,MAAK,aAAY,SAAS,OACxC,sBACC;AAAA,UAAC,sBAAO;AAAA,UAAP;AAAA,YAGC,SAAS,EAAE,SAAS,GAAG,OAAO,MAAM,QAAQ,YAAY;AAAA,YACxD,SAAS,EAAE,SAAS,GAAG,OAAO,GAAG,QAAQ,YAAY;AAAA,YACrD,MAAM,EAAE,SAAS,GAAG,OAAO,MAAM,QAAQ,YAAY;AAAA,YACrD,YAAY,EAAE,UAAU,KAAK,MAAM,QAAQ;AAAA,YAC3C,WAAU;AAAA,YACX;AAAA;AAAA,UAPK;AAAA,QASN,IAEA;AAAA,UAAC,sBAAO;AAAA,UAAP;AAAA,YAEC,SAAS,EAAE,SAAS,GAAG,OAAO,MAAM,QAAQ,YAAY;AAAA,YACxD,SAAS,EAAE,SAAS,GAAG,OAAO,GAAG,QAAQ,YAAY;AAAA,YACrD,MAAM,EAAE,SAAS,GAAG,OAAO,MAAM,QAAQ,YAAY;AAAA,YACrD,YAAY,EAAE,UAAU,KAAK,MAAM,QAAQ;AAAA,YAC3C,WAAU;AAAA;AAAA,UALN;AAAA,QAMN,GAEJ;AAAA;AAAA,IACF;AAAA,EAEJ;AACF;AAEA,UAAU,cAAc;;;ACjExB,0BAAoD;AAK3C,IAAAC,uBAAA;AADT,SAAS,UAAU,EAAE,GAAG,MAAM,GAAoC;AAChE,SAAO,8CAAC,oBAAAC,YAAqB,MAArB,EAA0B,aAAU,cAAc,GAAG,OAAO;AACtE;AAEA,SAAS,iBAAiB,EAAE,GAAG,MAAM,GAAuC;AAC1E,SACE,8CAAC,oBAAAA,YAAqB,SAArB,EAA6B,aAAU,sBAAsB,GAAG,OAAO;AAE5E;AAEA,SAAS,iBAAiB;AAAA,EACxB;AAAA,EACA,OAAO;AAAA,EACP,aAAa;AAAA,EACb,QAAQ;AAAA,EACR,cAAc;AAAA,EACd,GAAG;AACL,GAIK;AACH,SACE,8CAAC,oBAAAA,YAAqB,QAArB,EAA4B,aAAU,qBACrC;AAAA,IAAC,oBAAAA,YAAqB;AAAA,IAArB;AAAA,MACC;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,WAAU;AAAA,MAEV;AAAA,QAAC,oBAAAA,YAAqB;AAAA,QAArB;AAAA,UACC,aAAU;AAAA,UACV,WAAW;AAAA,YACT;AAAA,YACA;AAAA,UACF;AAAA,UACC,GAAG;AAAA;AAAA,MACN;AAAA;AAAA,EACF,GACF;AAEJ;;;AC9CA,qBAA4C;AASxC,IAAAC,uBAAA;AALJ,SAAS,gBAAgB;AAAA,EACvB,QAAQ;AAAA,EACR,GAAG;AACL,GAAoC;AAClC,SACE;AAAA,IAAC,eAAAC,QAAiB;AAAA,IAAjB;AAAA,MACC,aAAU;AAAA,MACV;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,SAAS,QAAQ,EAAE,GAAG,MAAM,GAAgC;AAC1D,SAAO,8CAAC,eAAAA,QAAiB,MAAjB,EAAsB,aAAU,WAAW,GAAG,OAAO;AAC/D;AAEA,SAAS,eAAe,EAAE,GAAG,MAAM,GAAmC;AACpE,SAAO,8CAAC,eAAAA,QAAiB,SAAjB,EAAyB,aAAU,mBAAmB,GAAG,OAAO;AAC1E;AAEA,SAAS,eAAe;AAAA,EACtB;AAAA,EACA,OAAO;AAAA,EACP,aAAa;AAAA,EACb,QAAQ;AAAA,EACR,cAAc;AAAA,EACd;AAAA,EACA,GAAG;AACL,GAIK;AACH,SACE,8CAAC,eAAAA,QAAiB,QAAjB,EACC;AAAA,IAAC,eAAAA,QAAiB;AAAA,IAAjB;AAAA,MACC;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,WAAU;AAAA,MAEV;AAAA,QAAC,eAAAA,QAAiB;AAAA,QAAjB;AAAA,UACC,aAAU;AAAA,UACV,WAAW;AAAA,YACT;AAAA,YACA;AAAA,UACF;AAAA,UACC,GAAG;AAAA,UAEH;AAAA;AAAA,YACD,8CAAC,eAAAA,QAAiB,OAAjB,EAAuB,WAAU,4hBAA2hB;AAAA;AAAA;AAAA,MAC/jB;AAAA;AAAA,EACF,GACF;AAEJ;;;AL7BS,IAAAC,uBAAA;AAFF,SAAS,WAAW;AAAA,EACzB,WAAW,CAAC;AAAA,EACZ,OAAO,8CAAC,aAAU;AAAA,EAClB,UAAU;AAAA,EACV,YAAY;AAAA,EACZ;AACF,GAAoB;AAClB,QAAM,eAAW,gCAAY;AAC7B,QAAM,WAAW,CAAC,SAChB,SAAS,MAAM,aAAa,MAAO,UAAU,WAAW,IAAI,KAAK;AAEnE,SACE,+CAAC,YAAO,WAAU,mFAEhB;AAAA;AAAA,MAAC,aAAAC;AAAA,MAAA;AAAA,QACC,MAAK;AAAA,QACL,cAAW;AAAA,QACX,WAAU;AAAA,QAET;AAAA;AAAA,IACH;AAAA,IAGA,8CAAC,SAAI,WAAU,uEACZ,mBAAS,IAAI,CAAC,SAAS;AACtB,YAAM,SAAS,SAAS,KAAK,IAAI;AACjC,aACE;AAAA,QAAC,aAAAA;AAAA,QAAA;AAAA,UAEC,MAAM,KAAK;AAAA,UACX,gBAAc,SAAS,SAAS;AAAA,UAChC,SAAS,MAAM;AACb,gBAAI,CAAC,OAAQ,MAAU,KAAK,SAAS,MAAM,SAAS,SAAS;AAAA,UAC/D;AAAA,UACA,WAAW;AAAA,YACT;AAAA,YACA,SACI,oBACA;AAAA,UACN;AAAA,UAEC;AAAA,sBACC;AAAA,cAAC,sBAAO;AAAA,cAAP;AAAA,gBACC,UAAS;AAAA,gBACT,WAAU;AAAA,gBACV,YAAY,EAAE,MAAM,UAAU,UAAU,KAAK,QAAQ,EAAE;AAAA;AAAA,YACzD;AAAA,YAEF,8CAAC,UAAK,WAAU,iBAAiB,eAAK,OAAM;AAAA;AAAA;AAAA,QApBvC,KAAK;AAAA,MAqBZ;AAAA,IAEJ,CAAC,GACH;AAAA,IAEA,+CAAC,SAAI,WAAU,2BACZ;AAAA,iBACC,+CAAC,aACC;AAAA;AAAA,UAAC;AAAA;AAAA,YACC,QACE;AAAA,cAAC;AAAA;AAAA,gBACC,SAAS;AAAA,gBACT,WAAU;AAAA,gBAET;AAAA;AAAA,YACH;AAAA;AAAA,QAEJ;AAAA,QACA;AAAA,UAAC;AAAA;AAAA,YACC,MAAK;AAAA,YACL,YAAY;AAAA,YACZ,OAAM;AAAA,YACN,WAAU;AAAA,YAEV,yDAAC,SAAI,WAAU,eACb;AAAA,6DAAC,QAAG,WAAU,gBAAe;AAAA;AAAA,gBAAS;AAAA,iBAAQ;AAAA,cAC9C,8CAAC,OAAE,WAAU,yBAAwB,uEAErC;AAAA,eACF;AAAA;AAAA,QACF;AAAA,SACF;AAAA,MAED;AAAA,MACA,aACC,8CAAC,mBAAgB,OAAO,KACtB,yDAAC,WACC;AAAA;AAAA,UAAC;AAAA;AAAA,YACC,QACE;AAAA,cAAC;AAAA;AAAA,gBACC,SAAQ;AAAA,gBACR,MAAK;AAAA,gBACL,QAAQ,CAAC,UACP;AAAA,kBAAC;AAAA;AAAA,oBACE,GAAG;AAAA,oBACJ,MAAM;AAAA,oBACN,QAAO;AAAA,oBACP,KAAI;AAAA,oBACJ,SAAS,CAAC,MAAM;AACd,4BAAM,UAAU,CAAC;AACjB,0BAAS;AAAA,oBACX;AAAA;AAAA,gBACF;AAAA,gBAGF;AAAA,gEAAC,sCAAe;AAAA,kBAChB,8CAAC,UAAK,WAAU,oBAAmB,oBAAM;AAAA;AAAA;AAAA,YAC3C;AAAA;AAAA,QAEJ;AAAA,QACA,8CAAC,kBAAe,MAAK,UAAS,YAAY,GAAG,mCAE7C;AAAA,SACF,GACF;AAAA,MAEF,8CAAC,iBAAc;AAAA,OACjB;AAAA,KACF;AAEJ;;;AM1IM,IAAAC,uBAAA;AAJC,SAAS,WAAW,EAAE,UAAU,QAAQ,OAAO,GAAoB;AACxE,SACE,+CAAC,SAAI,WAAU,0EAEb;AAAA,kDAAC,cAAW;AAAA,IAEZ,+CAAC,aAAQ,WAAU,wCAChB;AAAA;AAAA,MACA;AAAA,OACH;AAAA,IAEC,UACC,8CAAC,SAAI,WAAU,4DACZ,kBACH;AAAA,KAEJ;AAEJ;;;ACzBA,gCAGO;;;ACHP,IAAAC,sBAAoD;AAM3C,IAAAC,uBAAA;AAHF,SAAS,cACd,OACA;AACA,SAAO,8CAAC,oBAAAC,eAAA,EAAoB,GAAG,OAAO;AACxC;;;ACQU,IAAAC,uBAAA;AAVH,SAAS,aAAa,EAAE,SAAS,GAAkC;AACxE,SACE;AAAA,IAAC;AAAA;AAAA,MACC,WAAU;AAAA,MACV,cAAa;AAAA,MACb,cAAY;AAAA,MACZ,2BAAyB;AAAA,MAEzB,wDAAC,+CAAkB,WAAU,OAC3B,wDAAC,iBAAc,UAAS,gBACtB,wDAAC,yBAAuB,UAAS,GACnC,GACF;AAAA;AAAA,EACF;AAEJ;;;ACpBA,IAAAC,iBAAyC;AAOrC,IAAAC,uBAAA;AAJG,SAAS,aAAa,EAAE,SAAS,GAAkC;AACxE,QAAM,cAAU,iCAAiB;AAEjC,SACE;AAAA,IAAC,sBAAO;AAAA,IAAP;AAAA,MACC,SAAS,UAAU,QAAQ,EAAE,SAAS,EAAE;AAAA,MACxC,SAAS,EAAE,SAAS,EAAE;AAAA,MACtB,YACE,UAAU,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,MAAM,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE;AAAA,MAGxE;AAAA;AAAA,EACH;AAEJ;;;ACnBA,IAAAC,sBAA2B;AAC3B,IAAAC,qBAA0B;AAC1B,IAAAC,mCAAuC;;;ACAvC,uBAAgD;AAU5C,IAAAC,uBAAA;AANJ,SAAS,UAAU;AAAA,EACjB;AAAA,EACA,cAAc;AAAA,EACd,GAAG;AACL,GAA6B;AAC3B,SACE;AAAA,IAAC,iBAAAC;AAAA,IAAA;AAAA,MACC,aAAU;AAAA,MACV;AAAA,MACA,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ;;;ADQI,IAAAC;AAAA;AAAA,EAAA;AAAA;AAxBJ,IAAM,0BAAsB;AAAA,EAC1B;AAAA,EACA;AAAA,IACE,UAAU;AAAA,MACR,aAAa;AAAA,QACX,YACE;AAAA,QACF,UACE;AAAA,MACJ;AAAA,IACF;AAAA,IACA,iBAAiB;AAAA,MACf,aAAa;AAAA,IACf;AAAA,EACF;AACF;AAEA,SAAS,YAAY;AAAA,EACnB;AAAA,EACA;AAAA,EACA,GAAG;AACL,GAA2E;AACzE,SAEE;AAAA,IAAC;AAAA;AAAA,MACC,MAAK;AAAA,MACL,aAAU;AAAA,MACV,oBAAkB;AAAA,MAClB,WAAW,GAAG,oBAAoB,EAAE,YAAY,CAAC,GAAG,SAAS;AAAA,MAC5D,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,SAAS,gBAAgB;AAAA,EACvB;AAAA,EACA;AAAA,EACA,GAAG;AACL,GAAoC;AAClC,aAAO,8BAAU;AAAA,IACf,gBAAgB;AAAA,IAChB,WAAO;AAAA,MACL;AAAA,QACE,WAAW;AAAA,UACT;AAAA,UACA;AAAA,QACF;AAAA,MACF;AAAA,MACA;AAAA,IACF;AAAA,IACA;AAAA,IACA,OAAO;AAAA,MACL,MAAM;AAAA,IACR;AAAA,EACF,CAAC;AACH;AAEA,SAAS,qBAAqB;AAAA,EAC5B;AAAA,EACA,cAAc;AAAA,EACd,GAAG;AACL,GAA2C;AACzC,SACE;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV;AAAA,MACA,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ;;;AE/EA,IAAAC,iBAA8B;AAYxB,IAAAC,uBAAA;AAPN,SAAS,KAAK;AAAA,EACZ;AAAA,EACA,OAAO;AAAA,EACP,GAAG;AACL,GAA8D;AAC5D,SACE,8CAAC,gCAAc,SAAO,MAAC,SAAS,EAAE,QAAQ,IAAI,WAAW,EAAE,GACzD;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,aAAW;AAAA,MACX,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA;AAAA,EACN,GACF;AAEJ;AAEA,SAAS,WAAW,EAAE,WAAW,GAAG,MAAM,GAAgC;AACxE,SACE;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAW,GAAG,8BAA8B,SAAS;AAAA,MACpD,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,SAAS,UAAU,EAAE,WAAW,GAAG,MAAM,GAAgC;AACvE,SACE;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAW,GAAG,2CAA2C,SAAS;AAAA,MACjE,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,SAAS,gBAAgB,EAAE,WAAW,GAAG,MAAM,GAAgC;AAC7E,SACE;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAW,GAAG,yBAAyB,SAAS;AAAA,MAC/C,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,SAAS,WAAW,EAAE,WAAW,GAAG,MAAM,GAAgC;AACxE,SACE;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,SAAS,YAAY,EAAE,WAAW,GAAG,MAAM,GAAgC;AACzE,SACE;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAW,GAAG,yBAAyB,SAAS;AAAA,MAC/C,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,SAAS,WAAW,EAAE,WAAW,GAAG,MAAM,GAAgC;AACxE,SACE;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAW,GAAG,0BAA0B,SAAS;AAAA,MAChD,GAAG;AAAA;AAAA,EACN;AAEJ;;;ACtFA,IAAAC,sBAA2B;AAC3B,IAAAC,qBAA0B;AAC1B,IAAAC,mCAAuC;AAQnC,IAAAC;AAAA;AAAA,EAAA;AAAA;AAHJ,SAAS,UAAU,EAAE,WAAW,GAAG,MAAM,GAAgC;AACvE,SAEE;AAAA,IAAC;AAAA;AAAA,MACC,MAAK;AAAA,MACL,aAAU;AAAA,MACV,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,SAAS,cAAc;AAAA,EACrB;AAAA,EACA,GAAG;AACL,GAA2C;AACzC,SACE;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,aAAY;AAAA,MACZ,WAAW,GAAG,QAAQ,SAAS;AAAA,MAC9B,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,IAAM,mBAAe;AAAA,EACnB;AAAA,EACA;AAAA,IACE,UAAU;AAAA,MACR,SAAS;AAAA,QACP,SAAS;AAAA,QACT,SAAS;AAAA,QACT,OAAO;AAAA,MACT;AAAA,MACA,MAAM;AAAA,QACJ,SAAS;AAAA,QACT,IAAI;AAAA,QACJ,IAAI;AAAA,MACN;AAAA,IACF;AAAA,IACA,iBAAiB;AAAA,MACf,SAAS;AAAA,MACT,MAAM;AAAA,IACR;AAAA,EACF;AACF;AAEA,SAAS,KAAK;AAAA,EACZ;AAAA,EACA,UAAU;AAAA,EACV,OAAO;AAAA,EACP;AAAA,EACA,GAAG;AACL,GAAwE;AACtE,aAAO,8BAAU;AAAA,IACf,gBAAgB;AAAA,IAChB,WAAO;AAAA,MACL;AAAA,QACE,WAAW,GAAG,aAAa,EAAE,SAAS,MAAM,UAAU,CAAC,CAAC;AAAA,MAC1D;AAAA,MACA;AAAA,IACF;AAAA,IACA;AAAA,IACA,OAAO;AAAA,MACL,MAAM;AAAA,MACN;AAAA,MACA;AAAA,IACF;AAAA,EACF,CAAC;AACH;AAEA,IAAM,wBAAoB;AAAA,EACxB;AAAA,EACA;AAAA,IACE,UAAU;AAAA,MACR,SAAS;AAAA,QACP,SAAS;AAAA,QACT,MAAM;AAAA,QACN,OACE;AAAA,MACJ;AAAA,IACF;AAAA,IACA,iBAAiB;AAAA,MACf,SAAS;AAAA,IACX;AAAA,EACF;AACF;AAEA,SAAS,UAAU;AAAA,EACjB;AAAA,EACA,UAAU;AAAA,EACV,GAAG;AACL,GAAyE;AACvE,SACE;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,gBAAc;AAAA,MACd,WAAW,GAAG,kBAAkB,EAAE,SAAS,UAAU,CAAC,CAAC;AAAA,MACtD,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,SAAS,YAAY,EAAE,WAAW,GAAG,MAAM,GAAgC;AACzE,SACE;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,SAAS,UAAU,EAAE,WAAW,GAAG,MAAM,GAAgC;AACvE,SACE;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,SAAS,gBAAgB,EAAE,WAAW,GAAG,MAAM,GAA8B;AAC3E,SACE;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,SAAS,YAAY,EAAE,WAAW,GAAG,MAAM,GAAgC;AACzE,SACE;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAW,GAAG,2BAA2B,SAAS;AAAA,MACjD,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,SAAS,WAAW,EAAE,WAAW,GAAG,MAAM,GAAgC;AACxE,SACE;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,SAAS,WAAW,EAAE,WAAW,GAAG,MAAM,GAAgC;AACxE,SACE;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ;","names":["import_react","import_jsx_runtime","import_react","import_react","import_class_variance_authority","import_jsx_runtime","import_jsx_runtime","import_react","import_react","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_react","import_react","import_jsx_runtime","import_react","import_jsx_runtime","React","import_jsx_runtime","import_react_icons","import_react","React","import_react","import_jsx_runtime","useMeasure","import_jsx_runtime","Link","import_react_icons","import_react","import_link","import_navigation","import_react_icons","import_react","import_react","import_jsx_runtime","import_jsx_runtime","import_react","import_jsx_runtime","import_jsx_runtime","PreviewCardPrimitive","import_jsx_runtime","TooltipPrimitive","import_jsx_runtime","Link","import_jsx_runtime","import_next_themes","import_jsx_runtime","NextThemesProvider","import_jsx_runtime","import_react","import_jsx_runtime","import_merge_props","import_use_render","import_class_variance_authority","import_jsx_runtime","SeparatorPrimitive","import_jsx_runtime","import_react","import_jsx_runtime","import_merge_props","import_use_render","import_class_variance_authority","import_jsx_runtime"]}
1
+ {"version":3,"sources":["../src/index.ts","../src/components/content/changelog-content.tsx","../src/components/ui/badge.tsx","../src/lib/utils.ts","../src/lib/constants.ts","../src/lib/motions.ts","../src/components/content/code-block.tsx","../src/components/shared/command-block.tsx","../src/components/ui/button.tsx","../src/components/ui/toast.tsx","../src/hooks/use-copy-to-clipboard.ts","../src/lib/utils/audio.ts","../src/components/motion-primitives/text-morph.tsx","../src/components/content/docs-content.tsx","../src/components/shared/scroll-fade.tsx","../src/components/motion-primitives/text-effect.tsx","../src/components/layout/docs-layout.tsx","../src/components/motion-primitives/sliding-number.tsx","../src/components/layout/site-header.tsx","../src/components/layout/theme-switcher.tsx","../src/components/motion-primitives/morph-icon.tsx","../src/components/ui/brand-logo.tsx","../src/components/ui/hover-card.tsx","../src/components/ui/tooltip.tsx","../src/components/layout/site-layout.tsx","../src/components/layout/site-provider.tsx","../src/components/ui/direction.tsx","../src/components/layout/theme-provider.tsx","../src/components/layout/site-template.tsx","../src/components/ui/button-group.tsx","../src/components/ui/separator.tsx","../src/components/ui/card.tsx","../src/components/ui/item.tsx"],"sourcesContent":["\"use client\";\n\nexport * from \"./components/content/changelog-content\";\nexport * from \"./components/content/code-block\";\nexport * from \"./components/content/docs-content\";\nexport * from \"./components/layout/docs-layout\";\nexport * from \"./components/layout/site-header\";\nexport * from \"./components/layout/site-layout\";\nexport * from \"./components/layout/site-provider\";\nexport * from \"./components/layout/site-template\";\nexport * from \"./components/layout/theme-provider\";\nexport * from \"./components/layout/theme-switcher\";\nexport * from \"./components/motion-primitives/sliding-number\";\nexport * from \"./components/motion-primitives/text-effect\";\nexport * from \"./components/motion-primitives/text-morph\";\nexport * from \"./components/shared/command-block\";\nexport * from \"./components/shared/scroll-fade\";\nexport * from \"./components/ui/badge\";\nexport * from \"./components/ui/brand-logo\";\nexport * from \"./components/ui/button\";\nexport * from \"./components/ui/button-group\";\nexport * from \"./components/ui/card\";\nexport * from \"./components/ui/direction\";\nexport * from \"./components/ui/hover-card\";\nexport * from \"./components/ui/item\";\nexport * from \"./components/ui/separator\";\nexport * from \"./components/ui/toast\";\nexport * from \"./components/ui/tooltip\";\n\nexport * from \"./lib/motions\";\n","\"use client\";\n\nimport { motion, useReducedMotion } from \"motion/react\";\nimport type { ReactNode } from \"react\";\nimport { Badge } from \"@/components/ui/badge\";\nimport { CHANGELOG, type ChangeKind } from \"@/lib/constants\";\nimport { colReveal } from \"@/lib/motions\";\nimport { cn, formatChangelogDate } from \"@/lib/utils\";\n\nfunction Col({ children }: { children: ReactNode }) {\n const reduced = useReducedMotion() ?? false;\n return (\n <motion.div\n className=\"mx-auto w-full\"\n initial={reduced ? false : \"hidden\"}\n whileInView=\"show\"\n viewport={{ once: true, margin: \"0px 0px -64px 0px\" }}\n variants={colReveal}\n >\n {children}\n </motion.div>\n );\n}\n\nconst KIND_LABEL: Record<ChangeKind, string> = {\n new: \"New\",\n improved: \"Improved\",\n fixed: \"Fixed\",\n};\n\nfunction KindTag({ kind }: { kind: ChangeKind }) {\n return (\n <Badge variant=\"secondary\" className=\"align-top mt-0.5\">\n {KIND_LABEL[kind]}\n </Badge>\n );\n}\n\nexport function ChangelogContent() {\n return (\n <div className=\"w-full\">\n <div className=\"relative mx-auto w-full\">\n <main className=\"typeset typeset-docs mx-auto max-w-(--layout-content-width) w-full\">\n {/* Page Header (Title & Date) */}\n <section id=\"changelog-header\" className=\"scroll-mt-24\">\n <Col>\n <h1 className=\"tracking-tight mb-2\">Changelog</h1>\n <p className=\"text-muted-foreground/60 mb-8 mt-0\">\n 16 February, 2026\n </p>\n </Col>\n </section>\n\n {CHANGELOG.map((entry: (typeof CHANGELOG)[number]) => (\n <section\n key={entry.version}\n id={`v${entry.version}`}\n className=\"scroll-mt-24\"\n >\n <Col>\n <div className=\"not-typeset mt-16 flex items-center gap-3\">\n <Badge\n variant=\"secondary\"\n className=\"text-foreground align-middle\"\n >\n {entry.version === \"next\" ? \"Up next\" : `v${entry.version}`}\n </Badge>\n <span className=\"text-muted-foreground\">\n {entry.date\n ? formatChangelogDate(entry.date)\n : \"In progress\"}\n </span>\n </div>\n <h2>{entry.title}</h2>\n <p>{entry.summary}</p>\n\n <div className=\"not-typeset mt-4 overflow-hidden rounded-2xl bg-card\">\n {entry.changes.map(\n (\n change: (typeof CHANGELOG)[number][\"changes\"][number],\n i: number,\n ) => (\n <div\n key={change.text}\n className={cn(\n \"flex gap-3 px-4 py-3\",\n i > 0 && \"border-t border-border\",\n )}\n >\n <KindTag kind={change.kind} />\n <span className=\"text-muted-foreground\">\n {change.text}\n </span>\n </div>\n ),\n )}\n </div>\n </Col>\n </section>\n ))}\n\n <Col>\n <p className=\"mt-16\">\n Full commit history lives on{\" \"}\n <a\n href=\"https://github.com/your-username/your-repo\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n GitHub\n </a>\n .\n </p>\n </Col>\n </main>\n </div>\n </div>\n );\n}\n","import { mergeProps } from \"@base-ui/react/merge-props\";\nimport { useRender } from \"@base-ui/react/use-render\";\nimport { SmoothCorners } from \"@lisse/react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\n\nimport { cn } from \"@/lib/utils\";\n\nconst badgeVariants = cva(\n \"inline-flex h-4 items-center justify-center px-1.5 text-[10px] font-mono uppercase tracking-wide transition-all whitespace-nowrap\",\n {\n variants: {\n variant: {\n default: \"bg-primary text-primary-foreground\",\n secondary: \"bg-secondary text-muted-foreground hover:text-foreground\",\n outline: \"border border-border text-foreground\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n },\n);\n\nfunction Badge({\n className,\n variant = \"default\",\n render,\n ...props\n}: useRender.ComponentProps<\"span\"> & VariantProps<typeof badgeVariants>) {\n return (\n <SmoothCorners asChild corners={{ radius: 4, smoothing: 1 }}>\n {useRender({\n defaultTagName: \"span\",\n props: mergeProps<\"span\">(\n {\n className: cn(badgeVariants({ variant }), className),\n },\n props,\n ),\n render,\n state: {\n slot: \"badge\",\n variant,\n },\n })}\n </SmoothCorners>\n );\n}\n\nexport { Badge, badgeVariants };\n","import { type ClassValue, clsx } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}\n\nexport function formatChangelogDate(date: string) {\n return new Date(date).toLocaleDateString(\"en-US\", {\n month: \"long\",\n day: \"numeric\",\n year: \"numeric\",\n });\n}\n","export type ChangeKind = \"new\" | \"improved\" | \"fixed\";\n\nexport const NAV = [\n { href: \"/\", label: \"Home\" },\n { href: \"/docs\", label: \"Docs\" },\n { href: \"/changelog\", label: \"Changelog\" },\n] as const;\n\nexport const CHANGELOG = [\n {\n version: \"1.1.0\",\n title: \"The Components Update\",\n date: \"2024-03-15\",\n summary:\n \"Introduced a new suite of reusable components to accelerate your workflow.\",\n changes: [\n {\n kind: \"new\" as ChangeKind,\n text: \"Added generic button component with variants.\",\n },\n {\n kind: \"new\" as ChangeKind,\n text: \"Added customizable dialog and modal components.\",\n },\n {\n kind: \"improved\" as ChangeKind,\n text: \"Enhanced accessibility across all interactive elements.\",\n },\n ],\n },\n {\n version: \"1.0.1\",\n title: \"Bug Fixes\",\n date: \"2024-01-10\",\n summary: \"Minor fixes and performance improvements.\",\n changes: [\n {\n kind: \"fixed\" as ChangeKind,\n text: \"Fixed hydration error on initial load.\",\n },\n {\n kind: \"improved\" as ChangeKind,\n text: \"Optimized font loading for better Core Web Vitals.\",\n },\n ],\n },\n {\n version: \"1.0.0\",\n title: \"Initial Release\",\n date: \"2024-01-01\",\n summary: \"First version of the project.\",\n changes: [\n {\n kind: \"new\" as ChangeKind,\n text: \"Added initial template architecture.\",\n },\n {\n kind: \"new\" as ChangeKind,\n text: \"Established monochromatic Liquid Glass design tokens.\",\n },\n ],\n },\n];\n","export const EASE_OUT = [0.22, 1, 0.36, 1] as const;\nexport const REVEAL_DURATION = 0.28;\nexport const HERO_STAGGER = 0.06;\n\nexport const heroChild = {\n hidden: { opacity: 0, y: 12 },\n show: {\n opacity: 1,\n y: 0,\n transition: { duration: REVEAL_DURATION, ease: EASE_OUT },\n },\n};\n\nexport const colReveal = {\n hidden: { opacity: 0, y: 12 },\n show: {\n opacity: 1,\n y: 0,\n transition: { duration: REVEAL_DURATION, ease: EASE_OUT },\n },\n};\n","\"use client\";\n\nimport * as React from \"react\";\nimport { CopyMorphIcon } from \"@/components/shared/command-block\";\nimport { Button } from \"@/components/ui/button\";\nimport { anchoredToastManager } from \"@/components/ui/toast\";\nimport { useCopyToClipboard } from \"@/hooks/use-copy-to-clipboard\";\nimport { cn } from \"@/lib/utils\";\nimport { copy } from \"@/lib/utils/audio\";\n\nexport interface CodeBlockProps {\n html: string;\n code: string;\n className?: string;\n}\n\nexport function CodeBlock({ html, code, className }: CodeBlockProps) {\n const buttonRef = React.useRef<HTMLButtonElement>(null);\n const { copyToClipboard, isCopied } = useCopyToClipboard({ timeout: 1800 });\n\n async function handleCopy() {\n const success = await copyToClipboard(code);\n if (success) {\n copy();\n anchoredToastManager.add({\n title: \"Copied!\",\n positionerProps: {\n anchor: buttonRef.current,\n sideOffset: 6,\n },\n data: {\n tooltipStyle: true,\n },\n timeout: 2000,\n });\n } else {\n anchoredToastManager.add({\n title: \"Failed to copy\",\n positionerProps: {\n anchor: buttonRef.current,\n sideOffset: 6,\n },\n data: {\n tooltipStyle: true,\n },\n timeout: 2000,\n });\n }\n }\n\n return (\n <div\n className={cn(\n \"group relative mt-6 overflow-hidden rounded-xl not-typeset\",\n \"bg-code\",\n \"transition-colors\",\n className,\n )}\n >\n <Button\n ref={buttonRef}\n variant=\"ghost\"\n size=\"icon-xs\"\n onClick={handleCopy}\n className={cn(\n \"absolute right-3 top-3 z-20 rounded-lg\",\n \"bg-transparent\",\n \"text-muted-foreground\",\n \"opacity-0\",\n \"translate-y-1\",\n \"transition-all duration-200\",\n \"group-hover:translate-y-0\",\n \"group-hover:opacity-100\",\n \"hover:bg-code-foreground/10\",\n \"hover:text-code-foreground\",\n \"focus-visible:translate-y-0\",\n \"focus-visible:opacity-100\",\n )}\n >\n <CopyMorphIcon copied={isCopied} />\n </Button>\n\n <div\n className={cn(\n \"[&_pre]:m-0\",\n \"[&_pre]:overflow-x-auto\",\n \"[&_pre]:bg-transparent!\",\n \"[&_pre]:px-5\",\n \"[&_pre]:py-4\",\n \"[&_pre]:font-mono\",\n \"[&_pre]:leading-relaxed\",\n\n \"[&_code]:bg-transparent!\",\n \"[&_code]:p-0\",\n \"[&_code]:font-inherit\",\n\n \"[&_.line]:min-h-6\",\n\n \"[&_pre::-webkit-scrollbar]:h-2\",\n \"[&_pre::-webkit-scrollbar-track]:bg-transparent\",\n \"[&_pre::-webkit-scrollbar-thumb]:rounded-full\",\n \"[&_pre::-webkit-scrollbar-thumb]:bg-code-foreground/10\",\n \"[&_pre::-webkit-scrollbar-thumb:hover]:bg-code-foreground/20\",\n )}\n dangerouslySetInnerHTML={{\n __html: html,\n }}\n />\n </div>\n );\n}\n","\"use client\";\n\nimport { AnimatePresence, motion, useReducedMotion } from \"motion/react\";\nimport { useRef, useState } from \"react\";\nimport { Button } from \"@/components/ui/button\";\nimport { anchoredToastManager } from \"@/components/ui/toast\";\nimport { useCopyToClipboard } from \"@/hooks/use-copy-to-clipboard\";\nimport { cn } from \"@/lib/utils\";\nimport { deny, tap } from \"@/lib/utils/audio\";\nimport { TextMorph } from \"../motion-primitives/text-morph\";\n\nconst SLIDE_SPRING = { type: \"spring\", stiffness: 520, damping: 34 } as const;\n\nconst MORPH_EASE = { duration: 0.16, ease: \"easeOut\" } as const;\n\nexport function CopyMorphIcon({ copied }: { copied: boolean }) {\n const reduced = useReducedMotion() ?? false;\n const t = reduced ? { duration: 0 } : MORPH_EASE;\n\n return (\n <span\n aria-hidden=\"true\"\n className=\"relative grid size-3.5 place-items-center\"\n >\n <AnimatePresence initial={false} mode=\"popLayout\">\n {copied ? (\n <motion.svg\n key=\"check\"\n aria-hidden=\"true\"\n width=\"15\"\n height=\"15\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n className=\"absolute text-foreground\"\n initial={{ opacity: 0, scale: 0.8 }}\n animate={{ opacity: 1, scale: 1 }}\n exit={{ opacity: 0, scale: 0.8 }}\n transition={t}\n >\n <motion.path\n d=\"M1.83398 10.0625L6.00065 13.5L14.1673 2.5\"\n stroke=\"currentColor\"\n strokeWidth=\"1.25\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n initial={{ pathLength: reduced ? 1 : 0 }}\n animate={{ pathLength: 1 }}\n transition={\n reduced ? { duration: 0 } : { duration: 0.18, ease: \"easeOut\" }\n }\n />\n </motion.svg>\n ) : (\n <motion.svg\n key=\"copy\"\n aria-hidden=\"true\"\n width=\"15\"\n height=\"15\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n className=\"absolute\"\n initial={{ opacity: 0, scale: 0.8 }}\n animate={{ opacity: 1, scale: 1 }}\n exit={{ opacity: 0, scale: 0.8 }}\n transition={t}\n >\n <path\n d=\"M10.1667 3.16634H12.8334V14.1663H3.16675V3.16634H5.83341M5.83341 1.83301H10.1667V4.83301H5.83341V1.83301Z\"\n stroke=\"currentColor\"\n strokeWidth=\"1.25\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </motion.svg>\n )}\n </AnimatePresence>\n </span>\n );\n}\n\nexport function CommandBlock({\n items,\n}: {\n items: { id: string; command: string }[];\n}) {\n const [active, setActive] = useState(0);\n const { copyToClipboard, isCopied } = useCopyToClipboard({ timeout: 2000 });\n const reduced = useReducedMotion() ?? false;\n const cur = items[active];\n const copyButtonRef = useRef<HTMLButtonElement>(null);\n\n const handleCopy = async () => {\n const success = await copyToClipboard(cur.command);\n if (success) {\n tap();\n anchoredToastManager.add({\n title: \"Copied!\",\n positionerProps: {\n anchor: copyButtonRef.current,\n sideOffset: 6,\n },\n data: {\n tooltipStyle: true,\n },\n timeout: 2000,\n });\n } else {\n deny();\n anchoredToastManager.add({\n title: \"Failed to copy\",\n positionerProps: {\n anchor: copyButtonRef.current,\n sideOffset: 6,\n },\n data: {\n tooltipStyle: true,\n },\n timeout: 2000,\n });\n }\n };\n\n return (\n <div className=\"not-typeset mt-6 rounded-2xl border-0 bg-code overflow-hidden\">\n {items.length > 1 && (\n <div className=\"flex items-center gap-0.5 px-3 pb-1.5 pt-3 justify-between\">\n <div className=\"flex items-center gap-0.5 \">\n {items.map((it, i) => {\n const isActive = i === active;\n return (\n <button\n key={it.id}\n type=\"button\"\n onClick={() => setActive(i)}\n className={cn(\n \"relative cursor-pointer rounded-md px-1.5 py-0.5 font-mono outline-none transition-colors focus-visible:ring-2 focus-visible:ring-ring\",\n isActive\n ? \"text-foreground\"\n : \"text-muted-foreground hover:bg-accent hover:text-foreground\",\n )}\n >\n {isActive && (\n <motion.span\n aria-hidden=\"true\"\n layoutId=\"pkg-tab-active\"\n transition={reduced ? { duration: 0 } : SLIDE_SPRING}\n className=\"absolute inset-0 rounded-md bg-accent\"\n />\n )}\n <span className=\"relative\">{it.id}</span>\n </button>\n );\n })}\n </div>\n <Button\n ref={copyButtonRef}\n variant=\"ghost\"\n size=\"icon\"\n onClick={handleCopy}\n className=\"ml-auto text-muted-foreground hover:text-foreground focus-visible:ring-1 focus-visible:ring-ring\"\n title=\"Copy to clipboard\"\n aria-label=\"Copy install command\"\n >\n <CopyMorphIcon copied={isCopied} />\n </Button>\n </div>\n )}\n\n <div className=\"flex items-center\">\n <div className=\"flex-1 overflow-x-auto\">\n <pre className=\"flex items-center overflow-x-auto px-5 py-4 font-mono text-foreground\">\n <code>\n <TextMorph>{cur.command}</TextMorph>\n </code>\n </pre>\n </div>\n {items.length === 1 && (\n <Button\n ref={copyButtonRef}\n variant=\"ghost\"\n size=\"icon-sm\"\n onClick={handleCopy}\n className=\"mr-2 text-muted-foreground hover:text-foreground focus-visible:ring-1 focus-visible:ring-ring\"\n title=\"Copy to clipboard\"\n aria-label=\"Copy install command\"\n >\n <CopyMorphIcon copied={isCopied} />\n </Button>\n )}\n </div>\n </div>\n );\n}\n","import { mergeProps, useRender } from \"@base-ui/react\";\nimport { SmoothCorners } from \"@lisse/react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"@/lib/utils\";\n\nexport const buttonVariants = cva(\n \"group/button inline-flex shrink-0 items-center justify-center border border-transparent font-medium whitespace-nowrap transition duration-[160ms] ease-out outline-none select-none focus-visible:ring-2 focus-visible:ring-white/20 active:scale-[0.97] disabled:pointer-events-none disabled:opacity-50\",\n {\n variants: {\n variant: {\n default:\n \"bg-primary text-primary-foreground border-transparent hover:bg-primary/90\",\n outline:\n \"border-border text-foreground hover:bg-accent hover:text-accent-foreground\",\n secondary:\n \"bg-secondary text-secondary-foreground hover:bg-secondary/80\",\n ghost: \"text-foreground hover:bg-accent hover:text-accent-foreground\",\n destructive:\n \"bg-destructive text-destructive-foreground hover:bg-destructive/90\",\n link: \"text-foreground underline-offset-4 hover:underline\",\n },\n size: {\n default: \"h-9 px-[calc(--spacing(3)-1px)] sm:h-8\",\n icon: \"size-9 sm:size-8\",\n \"icon-lg\": \"size-10 sm:size-9\",\n \"icon-sm\": \"size-8 sm:size-7\",\n \"icon-xl\":\n \"size-11 sm:size-10 [&_svg:not([class*='size-'])]:size-5 sm:[&_svg:not([class*='size-'])]:size-4.5\",\n \"icon-xs\":\n \"size-7 rounded-md before:rounded-[calc(var(--radius-md)-1px)] sm:size-6 not-in-data-[slot=input-group]:[&_svg:not([class*='size-'])]:size-4 sm:not-in-data-[slot=input-group]:[&_svg:not([class*='size-'])]:size-3.5\",\n lg: \"h-10 px-[calc(--spacing(3.5)-1px)] sm:h-9\",\n sm: \"h-8 gap-1.5 px-[calc(--spacing(2.5)-1px)] sm:h-7\",\n xl: \"h-11 px-[calc(--spacing(4)-1px)] text-lg sm:h-10 sm:text-base [&_svg:not([class*='size-'])]:size-5 sm:[&_svg:not([class*='size-'])]:size-4.5\",\n xs: \"h-7 gap-1 rounded-md px-[calc(--spacing(2)-1px)] text-sm before:rounded-[calc(var(--radius-md)-1px)] sm:h-6 sm:text-xs [&_svg:not([class*='size-'])]:size-4 sm:[&_svg:not([class*='size-'])]:size-3.5\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n },\n);\n\nexport interface ButtonProps extends useRender.ComponentProps<\"button\"> {\n variant?: VariantProps<typeof buttonVariants>[\"variant\"];\n size?: VariantProps<typeof buttonVariants>[\"size\"];\n loading?: boolean;\n}\nexport function Button({\n className,\n variant,\n size = \"default\",\n render,\n children,\n loading = false,\n disabled: disabledProp,\n ...props\n}: ButtonProps): React.ReactElement {\n const isDisabled: boolean = Boolean(loading || disabledProp);\n const typeValue: React.ButtonHTMLAttributes<HTMLButtonElement>[\"type\"] =\n render ? undefined : \"button\";\n const defaultProps = {\n children: (\n <>\n {children}\n {loading && (\n <div\n className=\"pointer-events-none absolute\"\n data-slot=\"button-loading-indicator\"\n />\n )}\n </>\n ),\n className: cn(buttonVariants({ className, size, variant })),\n \"aria-disabled\": loading || undefined,\n \"data-loading\": loading ? \"\" : undefined,\n \"data-slot\": \"button\",\n disabled: isDisabled,\n type: typeValue,\n };\n\n // Determine standard squircle radius depending on size\n let radius = 8;\n if (size === \"default\") radius = 8;\n else if (size === \"sm\") radius = 7;\n else if (size === \"xs\") radius = 5;\n else if (size === \"lg\") radius = 10;\n else if (size === \"xl\") radius = 12;\n else if (size === \"icon\") radius = 8;\n else if (size === \"icon-lg\") radius = 10;\n else if (size === \"icon-sm\") radius = 7;\n else if (size === \"icon-xl\") radius = 12;\n else if (size === \"icon-xs\") radius = 5;\n\n return (\n <SmoothCorners asChild corners={{ radius, smoothing: 1 }}>\n {useRender({\n defaultTagName: \"button\",\n props: mergeProps<\"button\">(defaultProps, props),\n render,\n })}\n </SmoothCorners>\n );\n}\n","\"use client\";\n\nimport { Toast } from \"@base-ui/react/toast\";\nimport {\n CheckCircledIcon,\n CrossCircledIcon,\n ExclamationTriangleIcon,\n InfoCircledIcon,\n ReloadIcon,\n} from \"@radix-ui/react-icons\";\nimport type React from \"react\";\nimport { buttonVariants } from \"@/components/ui/button\";\nimport { cn } from \"@/lib/utils\";\n\nconst TOAST_ICONS = {\n error: CrossCircledIcon,\n info: InfoCircledIcon,\n loading: ReloadIcon,\n success: CheckCircledIcon,\n warning: ExclamationTriangleIcon,\n} as const;\n\ntype SwipeDirection = \"up\" | \"down\" | \"left\" | \"right\";\n\ntype ToastData = {\n rootProps?: Omit<\n React.ComponentProps<typeof Toast.Root>,\n \"children\" | \"className\" | \"swipeDirection\" | \"toast\"\n >;\n tooltipStyle?: boolean;\n};\n\nfunction getSwipeDirection(position: ToastPosition): SwipeDirection[] {\n const verticalDirection: SwipeDirection = position.startsWith(\"top\")\n ? \"up\"\n : \"down\";\n\n if (position.includes(\"center\")) {\n return [verticalDirection];\n }\n\n if (position.includes(\"left\")) {\n return [\"left\", verticalDirection];\n }\n\n return [\"right\", verticalDirection];\n}\n\nfunction upsertReplayClassName(toast: {\n type?: string;\n updateKey?: number;\n}): string | undefined {\n const k = toast.updateKey ?? 0;\n if (k <= 0) return undefined;\n const isEven = k % 2 === 0;\n if (toast.type === \"error\") {\n return isEven ? \"animate-toast-error-even\" : \"animate-toast-error-odd\";\n }\n return isEven ? \"animate-toast-success-even\" : \"animate-toast-success-odd\";\n}\n\nfunction Toasts({\n position,\n portalProps,\n}: {\n position: ToastPosition;\n portalProps?: React.ComponentProps<typeof Toast.Portal>;\n}): React.ReactElement {\n const { toasts } = Toast.useToastManager();\n const swipeDirection = getSwipeDirection(position);\n\n return (\n <Toast.Portal data-slot=\"toast-portal\" {...portalProps}>\n <Toast.Viewport\n className={cn(\n \"fixed z-60 mx-auto flex w-[calc(100%-var(--toast-inset)*2)] max-w-90 [--toast-inset:--spacing(4)] sm:[--toast-inset:--spacing(8)]\",\n // Vertical positioning\n \"data-[position*=top]:top-(--toast-inset)\",\n \"data-[position*=bottom]:bottom-(--toast-inset)\",\n // Horizontal positioning\n \"data-[position*=left]:left-(--toast-inset)\",\n \"data-[position*=right]:right-(--toast-inset)\",\n \"data-[position*=center]:left-1/2 data-[position*=center]:-translate-x-1/2\",\n )}\n data-position={position}\n data-slot=\"toast-viewport\"\n >\n {toasts.map((toast) => {\n const Icon = toast.type\n ? TOAST_ICONS[toast.type as keyof typeof TOAST_ICONS]\n : null;\n const toastData = toast.data as ToastData | undefined;\n\n return (\n <Toast.Root\n key={toast.id}\n className={cn(\n \"absolute z-[calc(9999-var(--toast-index))] h-(--toast-calc-height) w-full select-none rounded-lg border bg-popover text-popover-foreground [transition:transform_.5s_cubic-bezier(.22,1,.36,1),opacity_.5s,height_.15s,background-color_.5s]\",\n // Base positioning using data-position\n \"data-[position*=right]:right-0 data-[position*=right]:left-auto\",\n \"data-[position*=left]:right-auto data-[position*=left]:left-0\",\n \"data-[position*=center]:right-0 data-[position*=center]:left-0\",\n \"data-[position*=top]:top-0 data-[position*=top]:bottom-auto data-[position*=top]:origin-[50%_calc(50%-50%*min(var(--toast-index,0),1))]\",\n \"data-[position*=bottom]:top-auto data-[position*=bottom]:bottom-0 data-[position*=bottom]:origin-[50%_calc(50%+50%*min(var(--toast-index,0),1))]\",\n // Gap fill for hover\n \"after:absolute after:left-0 after:h-[calc(var(--toast-gap)+1px)] after:w-full\",\n \"data-[position*=top]:after:top-full\",\n \"data-[position*=bottom]:after:bottom-full\",\n // Define some variables\n \"[--toast-calc-height:var(--toast-frontmost-height,var(--toast-height))] [--toast-gap:--spacing(3)] [--toast-peek:--spacing(3)] [--toast-scale:calc(max(0,1-(var(--toast-index)*.1)))] [--toast-shrink:calc(1-var(--toast-scale))]\",\n // Define offset-y variable\n \"data-[position*=top]:[--toast-calc-offset-y:calc(var(--toast-offset-y)+var(--toast-index)*var(--toast-gap)+var(--toast-swipe-movement-y))]\",\n \"data-[position*=bottom]:[--toast-calc-offset-y:calc(var(--toast-offset-y)*-1+var(--toast-index)*var(--toast-gap)*-1+var(--toast-swipe-movement-y))]\",\n // Default state transform\n \"data-[position*=top]:transform-[translateX(var(--toast-swipe-movement-x))_translateY(calc(var(--toast-swipe-movement-y)+(var(--toast-index)*var(--toast-peek))+(var(--toast-shrink)*var(--toast-calc-height))))_scale(var(--toast-scale))]\",\n \"data-[position*=bottom]:transform-[translateX(var(--toast-swipe-movement-x))_translateY(calc(var(--toast-swipe-movement-y)-(var(--toast-index)*var(--toast-peek))-(var(--toast-shrink)*var(--toast-calc-height))))_scale(var(--toast-scale))]\",\n // Limited state\n \"data-limited:opacity-0\",\n // Expanded state\n \"data-expanded:h-(--toast-height)\",\n \"data-position:data-expanded:transform-[translateX(var(--toast-swipe-movement-x))_translateY(var(--toast-calc-offset-y))]\",\n // Starting and ending animations\n \"data-[position*=top]:data-starting-style:transform-[translateY(calc(-100%-var(--toast-inset)))]\",\n \"data-[position*=bottom]:data-starting-style:transform-[translateY(calc(100%+var(--toast-inset)))]\",\n \"data-ending-style:opacity-0\",\n // Ending animations (direction-aware)\n \"data-ending-style:not-data-limited:not-data-swipe-direction:transform-[translateY(calc(100%+var(--toast-inset)))]\",\n \"data-ending-style:data-[swipe-direction=left]:transform-[translateX(calc(var(--toast-swipe-movement-x)-100%-var(--toast-inset)))_translateY(var(--toast-calc-offset-y))]\",\n \"data-ending-style:data-[swipe-direction=right]:transform-[translateX(calc(var(--toast-swipe-movement-x)+100%+var(--toast-inset)))_translateY(var(--toast-calc-offset-y))]\",\n \"data-ending-style:data-[swipe-direction=up]:transform-[translateY(calc(var(--toast-swipe-movement-y)-100%-var(--toast-inset)))]\",\n \"data-ending-style:data-[swipe-direction=down]:transform-[translateY(calc(var(--toast-swipe-movement-y)+100%+var(--toast-inset)))]\",\n // Ending animations (expanded)\n \"data-expanded:data-ending-style:data-[swipe-direction=left]:transform-[translateX(calc(var(--toast-swipe-movement-x)-100%-var(--toast-inset)))_translateY(var(--toast-calc-offset-y))]\",\n \"data-expanded:data-ending-style:data-[swipe-direction=right]:transform-[translateX(calc(var(--toast-swipe-movement-x)+100%+var(--toast-inset)))_translateY(var(--toast-calc-offset-y))]\",\n \"data-expanded:data-ending-style:data-[swipe-direction=up]:transform-[translateY(calc(var(--toast-swipe-movement-y)-100%-var(--toast-inset)))]\",\n \"data-expanded:data-ending-style:data-[swipe-direction=down]:transform-[translateY(calc(var(--toast-swipe-movement-y)+100%+var(--toast-inset)))]\",\n upsertReplayClassName(toast),\n )}\n {...toastData?.rootProps}\n data-position={position}\n swipeDirection={swipeDirection}\n toast={toast}\n >\n <Toast.Content className=\"pointer-events-auto flex items-center justify-between gap-1.5 overflow-hidden px-3.5 py-3 text-sm transition-opacity duration-250 data-behind:not-data-expanded:pointer-events-none data-behind:opacity-0 data-expanded:opacity-100\">\n <div className=\"flex gap-2\">\n {Icon && (\n <div\n className=\"[&>svg]:h-lh [&>svg]:w-4 [&_svg]:pointer-events-none [&_svg]:shrink-0\"\n data-slot=\"toast-icon\"\n >\n <Icon className=\"in-data-[type=loading]:animate-spin in-data-[type=error]:text-destructive in-data-[type=info]:text-info in-data-[type=success]:text-success in-data-[type=warning]:text-warning in-data-[type=loading]:opacity-80\" />\n </div>\n )}\n\n <div className=\"flex flex-col gap-0.5\">\n <Toast.Title\n className=\"font-medium\"\n data-slot=\"toast-title\"\n />\n <Toast.Description\n className=\"text-muted-foreground\"\n data-slot=\"toast-description\"\n />\n </div>\n </div>\n {toast.actionProps && (\n <Toast.Action\n className={buttonVariants({ size: \"xs\" })}\n data-slot=\"toast-action\"\n >\n {toast.actionProps.children}\n </Toast.Action>\n )}\n </Toast.Content>\n </Toast.Root>\n );\n })}\n </Toast.Viewport>\n </Toast.Portal>\n );\n}\n\nfunction AnchoredToasts({\n portalProps,\n}: {\n portalProps?: React.ComponentProps<typeof Toast.Portal>;\n}): React.ReactElement {\n const { toasts } = Toast.useToastManager();\n\n return (\n <Toast.Portal data-slot=\"toast-portal-anchored\" {...portalProps}>\n <Toast.Viewport\n className=\"outline-none\"\n data-slot=\"toast-viewport-anchored\"\n >\n {toasts.map((toast) => {\n const Icon = toast.type\n ? TOAST_ICONS[toast.type as keyof typeof TOAST_ICONS]\n : null;\n const toastData = toast.data as ToastData | undefined;\n const tooltipStyle = toastData?.tooltipStyle ?? false;\n const positionerProps = toast.positionerProps;\n\n if (!positionerProps?.anchor) {\n return null;\n }\n\n return (\n <Toast.Positioner\n key={toast.id}\n className=\"z-50 max-w-[min(--spacing(64),var(--available-width))]\"\n data-slot=\"toast-positioner\"\n sideOffset={positionerProps.sideOffset ?? 4}\n toast={toast}\n >\n <Toast.Root\n className={cn(\n \"relative text-balance border bg-popover text-popover-foreground text-xs transition-[scale,opacity] data-ending-style:scale-98 data-starting-style:scale-98 data-ending-style:opacity-0 data-starting-style:opacity-0\",\n tooltipStyle ? \"rounded-md\" : \"rounded-lg\",\n upsertReplayClassName(toast),\n )}\n {...toastData?.rootProps}\n data-slot=\"toast-popup\"\n toast={toast}\n >\n {tooltipStyle ? (\n <Toast.Content className=\"pointer-events-auto px-2 py-1\">\n <Toast.Title data-slot=\"toast-title\" />\n </Toast.Content>\n ) : (\n <Toast.Content className=\"pointer-events-auto flex items-center justify-between gap-1.5 overflow-hidden px-3.5 py-3 text-sm\">\n <div className=\"flex gap-2\">\n {Icon && (\n <div\n className=\"[&>svg]:h-lh [&>svg]:w-4 [&_svg]:pointer-events-none [&_svg]:shrink-0\"\n data-slot=\"toast-icon\"\n >\n <Icon className=\"in-data-[type=loading]:animate-spin in-data-[type=error]:text-destructive in-data-[type=info]:text-info in-data-[type=success]:text-success in-data-[type=warning]:text-warning in-data-[type=loading]:opacity-80\" />\n </div>\n )}\n\n <div className=\"flex flex-col gap-0.5\">\n <Toast.Title\n className=\"font-medium\"\n data-slot=\"toast-title\"\n />\n <Toast.Description\n className=\"text-muted-foreground\"\n data-slot=\"toast-description\"\n />\n </div>\n </div>\n {toast.actionProps && (\n <Toast.Action\n className={buttonVariants({ size: \"xs\" })}\n data-slot=\"toast-action\"\n >\n {toast.actionProps.children}\n </Toast.Action>\n )}\n </Toast.Content>\n )}\n </Toast.Root>\n </Toast.Positioner>\n );\n })}\n </Toast.Viewport>\n </Toast.Portal>\n );\n}\n\nexport const toastManager: ReturnType<typeof Toast.createToastManager> =\n Toast.createToastManager();\n\nexport const anchoredToastManager: ReturnType<typeof Toast.createToastManager> =\n Toast.createToastManager();\n\nexport type ToastPosition =\n | \"top-left\"\n | \"top-center\"\n | \"top-right\"\n | \"bottom-left\"\n | \"bottom-center\"\n | \"bottom-right\";\n\nexport interface ToastProviderProps extends Toast.Provider.Props {\n position?: ToastPosition;\n portalProps?: React.ComponentProps<typeof Toast.Portal>;\n}\n\nexport function ToastProvider({\n children,\n position = \"bottom-right\",\n portalProps,\n ...props\n}: ToastProviderProps): React.ReactElement {\n return (\n <Toast.Provider toastManager={toastManager} {...props}>\n {children}\n <Toasts portalProps={portalProps} position={position} />\n </Toast.Provider>\n );\n}\n\nexport interface AnchoredToastProviderProps extends Toast.Provider.Props {\n portalProps?: React.ComponentProps<typeof Toast.Portal>;\n}\n\nexport function AnchoredToastProvider({\n children,\n portalProps,\n ...props\n}: AnchoredToastProviderProps): React.ReactElement {\n return (\n <Toast.Provider toastManager={anchoredToastManager} {...props}>\n {children}\n <AnchoredToasts portalProps={portalProps} />\n </Toast.Provider>\n );\n}\n\nexport { Toast as ToastPrimitive };\n","import { useCallback, useEffect, useRef, useState } from \"react\";\n\nexport interface UseCopyToClipboardOptions {\n timeout?: number;\n onCopy?: () => void;\n}\n\nexport function useCopyToClipboard(options: UseCopyToClipboardOptions = {}) {\n const { timeout = 2000, onCopy } = options;\n const [isCopied, setIsCopied] = useState(false);\n const timeoutRef = useRef<number | null>(null);\n\n const copyToClipboard = useCallback(\n async (value: string) => {\n if (!value || typeof window === \"undefined\" || !navigator.clipboard) {\n return false;\n }\n\n try {\n if (timeoutRef.current) {\n window.clearTimeout(timeoutRef.current);\n }\n\n await navigator.clipboard.writeText(value);\n setIsCopied(true);\n onCopy?.();\n\n if (timeout > 0) {\n timeoutRef.current = window.setTimeout(() => {\n setIsCopied(false);\n }, timeout);\n }\n return true;\n } catch (error) {\n console.error(\"Failed to copy to clipboard\", error);\n return false;\n }\n },\n [timeout, onCopy],\n );\n\n useEffect(() => {\n return () => {\n if (timeoutRef.current) {\n window.clearTimeout(timeoutRef.current);\n }\n };\n }, []);\n\n return {\n copyToClipboard,\n isCopied,\n };\n}\n","\"use client\";\n\nfunction playBeep(\n frequency: number,\n duration: number,\n type: OscillatorType = \"sine\",\n) {\n if (\n typeof window === \"undefined\" ||\n // biome-ignore lint/suspicious/noExplicitAny: window may not have webkitAudioContext\n (!window.AudioContext && !(window as any).webkitAudioContext)\n )\n return;\n try {\n const AudioContext =\n // biome-ignore lint/suspicious/noExplicitAny: window may not have webkitAudioContext\n window.AudioContext || (window as any).webkitAudioContext;\n const ctx = new AudioContext();\n const osc = ctx.createOscillator();\n const gain = ctx.createGain();\n\n osc.type = type;\n osc.frequency.setValueAtTime(frequency, ctx.currentTime);\n\n gain.gain.setValueAtTime(0.1, ctx.currentTime);\n gain.gain.exponentialRampToValueAtTime(0.001, ctx.currentTime + duration);\n\n osc.connect(gain);\n gain.connect(ctx.destination);\n\n osc.start();\n osc.stop(ctx.currentTime + duration);\n } catch (_e) {\n // Ignore audio errors\n }\n}\n\nexport function tap() {\n playBeep(400, 0.1);\n}\n\nexport function turn(direction: \"back\" | \"forward\") {\n if (direction === \"forward\") {\n playBeep(600, 0.1);\n } else {\n playBeep(300, 0.1);\n }\n}\n\nexport function copy() {\n playBeep(800, 0.15, \"triangle\");\n}\n\nexport function deny() {\n playBeep(150, 0.2, \"sawtooth\");\n}\n","\"use client\";\nimport {\n AnimatePresence,\n motion,\n type Transition,\n type Variants,\n} from \"motion/react\";\nimport { useId, useMemo } from \"react\";\nimport { cn } from \"@/lib/utils\";\n\nexport type TextMorphProps = {\n children: string;\n as?: React.ElementType;\n className?: string;\n style?: React.CSSProperties;\n variants?: Variants;\n transition?: Transition;\n};\n\nexport function TextMorph({\n children,\n as: Component = \"p\",\n className,\n style,\n variants,\n transition,\n}: TextMorphProps) {\n const uniqueId = useId();\n\n const characters = useMemo(() => {\n const charCounts: Record<string, number> = {};\n\n return children.split(\"\").map((char) => {\n const lowerChar = char.toLowerCase();\n charCounts[lowerChar] = (charCounts[lowerChar] || 0) + 1;\n\n return {\n id: `${uniqueId}-${lowerChar}${charCounts[lowerChar]}`,\n label: char === \" \" ? \"\\u00A0\" : char,\n };\n });\n }, [children, uniqueId]);\n\n const defaultVariants: Variants = {\n initial: { opacity: 0 },\n animate: { opacity: 1 },\n exit: { opacity: 0 },\n };\n\n const defaultTransition: Transition = {\n type: \"spring\",\n bounce: 0,\n duration: 0.3,\n };\n\n return (\n <Component className={cn(className)} aria-label={children} style={style}>\n <AnimatePresence mode=\"popLayout\" initial={false}>\n {characters.map((character) => (\n <motion.span\n key={character.id}\n layoutId={character.id}\n className=\"inline-block\"\n aria-hidden=\"true\"\n initial=\"initial\"\n animate=\"animate\"\n exit=\"exit\"\n variants={variants || defaultVariants}\n transition={transition || defaultTransition}\n >\n {character.label}\n </motion.span>\n ))}\n </AnimatePresence>\n </Component>\n );\n}\n","\"use client\";\n\nimport { motion, useReducedMotion } from \"motion/react\";\nimport type { ReactNode } from \"react\";\nimport { CodeBlock } from \"@/components/content/code-block\";\nimport { CommandBlock } from \"@/components/shared/command-block\";\nimport { ScrollFade } from \"@/components/shared/scroll-fade\";\nimport { colReveal } from \"@/lib/motions\";\n\nexport function DocsCol({ children }: { children: ReactNode }) {\n const reduced = useReducedMotion() ?? false;\n return (\n <motion.div\n className=\"mx-auto w-full\"\n initial={reduced ? false : \"hidden\"}\n whileInView=\"show\"\n viewport={{ once: true, margin: \"0px 0px -64px 0px\" }}\n variants={colReveal}\n >\n {children}\n </motion.div>\n );\n}\n\nexport function DocsFrame({ children }: { children: ReactNode }) {\n return (\n <div className=\"relative min-h-screen overflow-x-clip pb-24\">\n {/* Top scroll fade */}\n <ScrollFade />\n\n {/* Shiki code block styles */}\n <style>{`.docs-code .shiki{margin:0;padding:16px 18px;overflow-x:auto;line-height:1.65;background:transparent !important;font-size:var(--typeset-size)}.docs-code .shiki code{background:transparent;padding:0}`}</style>\n\n <div className=\"w-full\">\n <div className=\"relative mx-auto w-full\">\n <main className=\"typeset typeset-docs mx-auto max-w-(--layout-content-width) w-full\">\n {children}\n </main>\n </div>\n </div>\n </div>\n );\n}\n\nimport { TextEffect } from \"@/components/motion-primitives/text-effect\";\n\nexport function DocsHeader({\n title,\n date,\n children,\n}: {\n title: string;\n date: string;\n children?: ReactNode;\n}) {\n return (\n <section id=\"docs-header\" className=\"scroll-mt-24\">\n <DocsCol>\n <h1 className=\"tracking-tight mb-2\">\n <TextEffect preset=\"fade-in-blur\" per=\"word\">\n {title}\n </TextEffect>\n </h1>\n <p className=\"text-muted-foreground/60 mb-8 mt-0\">{date}</p>\n {children}\n </DocsCol>\n </section>\n );\n}\n\nexport function DocsOverview({ children }: { children: ReactNode }) {\n return (\n <section id=\"overview\" className=\"scroll-mt-24\">\n <DocsCol>{children}</DocsCol>\n </section>\n );\n}\n\nexport function DocsSection({\n id,\n title,\n children,\n}: {\n id: string;\n title?: string;\n children: ReactNode;\n}) {\n return (\n <section id={id} className=\"scroll-mt-24 mt-12\">\n <DocsCol>\n {title && <h2>{title}</h2>}\n {children}\n </DocsCol>\n </section>\n );\n}\n\nexport function DocsInstallation({\n install,\n}: {\n install: { id: string; command: string }[];\n}) {\n return (\n <DocsSection id=\"installation\" title=\"Installation\">\n <p>Install the package using your preferred package manager:</p>\n <CommandBlock items={install} />\n </DocsSection>\n );\n}\n\nexport function DocsCode({ code, html }: { code: string; html: string }) {\n return <CodeBlock code={code} html={html} />;\n}\n","\"use client\";\n\nimport { useEffect, useState } from \"react\";\n\nexport function ScrollFade() {\n const [visible, setVisible] = useState(false);\n\n useEffect(() => {\n const handleScroll = () => setVisible(window.scrollY > 50);\n handleScroll();\n window.addEventListener(\"scroll\", handleScroll, { passive: true });\n return () => window.removeEventListener(\"scroll\", handleScroll);\n }, []);\n\n return (\n <div\n className={`pointer-events-none fixed inset-x-0 top-0 z-(--z-scroll-fade) h-20 bg-gradient-to-b from-background to-transparent transition-opacity duration-300 ${\n visible ? \"opacity-100\" : \"opacity-0\"\n }`}\n />\n );\n}\n","\"use client\";\nimport type {\n TargetAndTransition,\n Transition,\n Variant,\n Variants,\n} from \"motion/react\";\nimport { AnimatePresence, motion } from \"motion/react\";\nimport React from \"react\";\nimport { cn } from \"@/lib/utils\";\n\nexport type PresetType = \"blur\" | \"fade-in-blur\" | \"scale\" | \"fade\" | \"slide\";\n\nexport type PerType = \"word\" | \"char\" | \"line\";\n\nexport type TextEffectProps = {\n children: string;\n per?: PerType;\n as?: keyof React.JSX.IntrinsicElements;\n variants?: {\n container?: Variants;\n item?: Variants;\n };\n className?: string;\n preset?: PresetType;\n delay?: number;\n speedReveal?: number;\n speedSegment?: number;\n trigger?: boolean;\n onAnimationComplete?: () => void;\n onAnimationStart?: () => void;\n segmentWrapperClassName?: string;\n containerTransition?: Transition;\n segmentTransition?: Transition;\n style?: React.CSSProperties;\n};\n\nconst defaultStaggerTimes: Record<PerType, number> = {\n char: 0.03,\n word: 0.05,\n line: 0.1,\n};\n\nconst defaultContainerVariants: Variants = {\n hidden: { opacity: 0 },\n visible: {\n opacity: 1,\n transition: {\n staggerChildren: 0.05,\n },\n },\n exit: {\n transition: { staggerChildren: 0.05, staggerDirection: -1 },\n },\n};\n\nconst defaultItemVariants: Variants = {\n hidden: { opacity: 0 },\n visible: {\n opacity: 1,\n },\n exit: { opacity: 0 },\n};\n\nconst presetVariants: Record<\n PresetType,\n { container: Variants; item: Variants }\n> = {\n blur: {\n container: defaultContainerVariants,\n item: {\n hidden: { opacity: 0, filter: \"blur(12px)\" },\n visible: { opacity: 1, filter: \"blur(0px)\" },\n exit: { opacity: 0, filter: \"blur(12px)\" },\n },\n },\n \"fade-in-blur\": {\n container: defaultContainerVariants,\n item: {\n hidden: { opacity: 0, y: 8, filter: \"blur(12px)\" },\n visible: { opacity: 1, y: 0, filter: \"blur(0px)\" },\n exit: { opacity: 0, y: 8, filter: \"blur(12px)\" },\n },\n },\n scale: {\n container: defaultContainerVariants,\n item: {\n hidden: { opacity: 0, scale: 0.95 },\n visible: { opacity: 1, scale: 1 },\n exit: { opacity: 0, scale: 0.95 },\n },\n },\n fade: {\n container: defaultContainerVariants,\n item: {\n hidden: { opacity: 0 },\n visible: { opacity: 1 },\n exit: { opacity: 0 },\n },\n },\n slide: {\n container: defaultContainerVariants,\n item: {\n hidden: { opacity: 0, y: 8 },\n visible: { opacity: 1, y: 0 },\n exit: { opacity: 0, y: 8 },\n },\n },\n};\n\nconst AnimationComponent: React.FC<{\n segment: string;\n variants: Variants;\n per: \"line\" | \"word\" | \"char\";\n segmentWrapperClassName?: string;\n}> = React.memo(({ segment, variants, per, segmentWrapperClassName }) => {\n const content =\n per === \"line\" ? (\n <motion.span variants={variants} className=\"block\">\n {segment}\n </motion.span>\n ) : per === \"word\" ? (\n <motion.span\n aria-hidden=\"true\"\n variants={variants}\n className=\"inline-block whitespace-pre\"\n >\n {segment}\n </motion.span>\n ) : (\n <motion.span className=\"inline-block whitespace-pre\">\n {segment.split(\"\").map((char, charIndex) => (\n <motion.span\n // biome-ignore lint/suspicious/noArrayIndexKey: Characters are static and don't change order\n key={`char-${charIndex}`}\n aria-hidden=\"true\"\n variants={variants}\n className=\"inline-block whitespace-pre\"\n >\n {char}\n </motion.span>\n ))}\n </motion.span>\n );\n\n if (!segmentWrapperClassName) {\n return content;\n }\n\n const defaultWrapperClassName = per === \"line\" ? \"block\" : \"inline-block\";\n\n return (\n <span className={cn(defaultWrapperClassName, segmentWrapperClassName)}>\n {content}\n </span>\n );\n});\n\nAnimationComponent.displayName = \"AnimationComponent\";\n\nconst splitText = (text: string, per: PerType) => {\n if (per === \"line\") return text.split(\"\\n\");\n return text.split(/(\\s+)/);\n};\n\nconst hasTransition = (\n variant?: Variant,\n): variant is TargetAndTransition & { transition?: Transition } => {\n if (!variant) return false;\n return typeof variant === \"object\" && \"transition\" in variant;\n};\n\nconst createVariantsWithTransition = (\n baseVariants: Variants,\n transition?: Transition & { exit?: Transition },\n): Variants => {\n if (!transition) return baseVariants;\n\n const { exit: _, ...mainTransition } = transition;\n\n return {\n ...baseVariants,\n visible: {\n ...baseVariants.visible,\n transition: {\n ...(hasTransition(baseVariants.visible)\n ? baseVariants.visible.transition\n : {}),\n ...mainTransition,\n },\n },\n exit: {\n ...baseVariants.exit,\n transition: {\n ...(hasTransition(baseVariants.exit)\n ? baseVariants.exit.transition\n : {}),\n ...mainTransition,\n staggerDirection: -1,\n },\n },\n };\n};\n\nexport function TextEffect({\n children,\n per = \"word\",\n as = \"p\",\n variants,\n className,\n preset = \"fade\",\n delay = 0,\n speedReveal = 1,\n speedSegment = 1,\n trigger = true,\n onAnimationComplete,\n onAnimationStart,\n segmentWrapperClassName,\n containerTransition,\n segmentTransition,\n style,\n}: TextEffectProps) {\n const segments = splitText(children, per);\n const MotionTag = motion[as as keyof typeof motion] as typeof motion.div;\n\n const baseVariants = preset\n ? presetVariants[preset]\n : { container: defaultContainerVariants, item: defaultItemVariants };\n\n const stagger = defaultStaggerTimes[per] / speedReveal;\n\n const baseDuration = 0.3 / speedSegment;\n\n const customStagger = hasTransition(variants?.container?.visible ?? {})\n ? (variants?.container?.visible as TargetAndTransition).transition\n ?.staggerChildren\n : undefined;\n\n const customDelay = hasTransition(variants?.container?.visible ?? {})\n ? (variants?.container?.visible as TargetAndTransition).transition\n ?.delayChildren\n : undefined;\n\n const computedVariants = {\n container: createVariantsWithTransition(\n variants?.container || baseVariants.container,\n {\n staggerChildren: customStagger ?? stagger,\n delayChildren: customDelay ?? delay,\n ...containerTransition,\n exit: {\n staggerChildren: customStagger ?? stagger,\n staggerDirection: -1,\n },\n },\n ),\n item: createVariantsWithTransition(variants?.item || baseVariants.item, {\n duration: baseDuration,\n ...segmentTransition,\n }),\n };\n\n return (\n <AnimatePresence mode=\"popLayout\">\n {trigger && (\n <MotionTag\n initial=\"hidden\"\n animate=\"visible\"\n exit=\"exit\"\n variants={computedVariants.container}\n className={className}\n onAnimationComplete={onAnimationComplete}\n onAnimationStart={onAnimationStart}\n style={style}\n >\n {per !== \"line\" ? <span className=\"sr-only\">{children}</span> : null}\n {segments.map((segment, index) => (\n <AnimationComponent\n key={`${per}-${index}-${segment}`}\n segment={segment}\n variants={computedVariants.item}\n per={per}\n segmentWrapperClassName={segmentWrapperClassName}\n />\n ))}\n </MotionTag>\n )}\n </AnimatePresence>\n );\n}\n","\"use client\";\n\nimport { ArrowLeftIcon } from \"@radix-ui/react-icons\";\nimport { motion, useMotionValueEvent, useScroll } from \"motion/react\";\nimport Link from \"next/link\";\nimport { usePathname } from \"next/navigation\";\nimport * as React from \"react\";\nimport { SlidingNumber } from \"../motion-primitives/sliding-number\";\nimport { ScrollFade } from \"../shared/scroll-fade\";\n\nexport type DocsLayoutProps = {\n children: React.ReactNode;\n links: {\n group: string;\n items: { title: string; url: string; isAnchor: boolean }[];\n }[];\n indexUrl?: string;\n indexLabel?: string;\n header?: React.ReactNode;\n};\n\nexport function DocsLayout({\n children,\n links,\n indexUrl = \"/\",\n indexLabel = \"Index\",\n header,\n}: DocsLayoutProps) {\n const pathname = usePathname();\n const [activeHash, setActiveHash] = React.useState(\"\");\n\n const { scrollYProgress } = useScroll();\n const [progress, setProgress] = React.useState(0);\n\n useMotionValueEvent(scrollYProgress, \"change\", (latest) => {\n setProgress(Math.round(latest * 100));\n });\n\n // Scrollspy to detect currently active section\n React.useEffect(() => {\n // Only extract sections for the current page path\n const currentPathLinks = links.flatMap((g) =>\n g.items.filter((i) => i.isAnchor && i.url.startsWith(pathname)),\n );\n const sections = currentPathLinks.map((i) => i.url.split(\"#\")[1]);\n if (!sections.length) {\n setActiveHash(\"\");\n return;\n }\n\n const observerOptions = {\n root: null,\n rootMargin: \"-20% 0px -60% 0px\", // Trigger when the section occupies the main focal area\n threshold: 0,\n };\n\n const observer = new IntersectionObserver((entries) => {\n for (const entry of entries) {\n if (entry.isIntersecting) {\n setActiveHash(`#${entry.target.id}`);\n }\n }\n }, observerOptions);\n\n for (const id of sections) {\n if (id) {\n const el = document.getElementById(id);\n if (el) observer.observe(el);\n }\n }\n\n // Capture initial hash if present\n if (typeof window !== \"undefined\" && window.location.hash) {\n setActiveHash(window.location.hash);\n } else {\n // default to first\n setActiveHash(`#${sections[0]}`);\n }\n\n return () => {\n observer.disconnect();\n };\n }, [links, pathname]);\n\n const handleAnchorClick = (\n e: React.MouseEvent<HTMLAnchorElement>,\n url: string,\n ) => {\n if (!url.includes(\"#\")) return;\n\n const hash = url.split(\"#\")[1];\n const element = document.getElementById(hash);\n\n if (element && url.startsWith(pathname)) {\n e.preventDefault();\n element.scrollIntoView({ behavior: \"smooth\" });\n window.history.pushState(null, \"\", `#${hash}`);\n setActiveHash(`#${hash}`);\n }\n };\n\n const isLinkActive = (url: string, isAnchor: boolean) => {\n if (isAnchor) {\n if (!url.startsWith(pathname)) return false;\n const hash = url.split(\"#\")[1];\n if (activeHash) {\n return activeHash === `#${hash}`;\n }\n return false;\n }\n return pathname === url;\n };\n\n return (\n <>\n <ScrollFade />\n {header}\n <div className=\"mx-auto w-full max-w-(--layout-max-width) px-6 py-12 md:py-24 flex flex-col md:flex-row gap-10 md:gap-16\">\n {/* Sticky Minimalist Sidebar */}\n <aside className=\"w-full md:w-48 shrink-0 md:sticky md:top-24 md:self-start flex flex-col gap-6 md:gap-8\">\n <div className=\"flex items-center justify-between\">\n <Link\n href={indexUrl}\n className=\"text-sm text-muted-foreground hover:text-foreground flex items-center gap-1.5 transition-opacity duration-200 select-none opacity-60 hover:opacity-100\"\n >\n <ArrowLeftIcon className=\"size-3.5\" />\n {indexLabel}\n </Link>\n\n <div className=\"text-xs font-mono text-muted-foreground opacity-50 flex items-center gap-0.5\">\n <SlidingNumber value={progress} />%\n </div>\n </div>\n <div className=\"flex flex-row flex-wrap gap-x-6 gap-y-2 md:flex-col md:gap-y-4\">\n {links.map((group) => (\n <div key={group.group} className=\"flex flex-col gap-1.5 md:gap-2\">\n <nav className=\"flex flex-row flex-wrap gap-x-1 gap-y-1 md:flex-col md:gap-y-1\">\n {group.items.map((link) => {\n const active = isLinkActive(link.url, link.isAnchor);\n return (\n <Link\n key={link.title}\n href={link.url}\n onClick={(e) => handleAnchorClick(e, link.url)}\n className={`relative text-sm transition-colors duration-200 px-2 py-1.5 -ml-2 rounded-md ${\n active\n ? \"text-foreground font-medium\"\n : \"text-muted-foreground hover:text-foreground\"\n }`}\n >\n {active && (\n <motion.div\n layoutId=\"activeDocsLinkBg\"\n className=\"absolute inset-0 bg-secondary/50 rounded-md\"\n transition={{\n type: \"spring\",\n duration: 0.3,\n bounce: 0,\n }}\n />\n )}\n <span className=\"relative z-10\">{link.title}</span>\n </Link>\n );\n })}\n </nav>\n </div>\n ))}\n </div>\n </aside>\n\n {/* Main Content */}\n <main className=\"flex-1 min-w-0\">{children}</main>\n </div>\n </>\n );\n}\n\nexport function DocsNavbar({\n logo,\n right,\n}: {\n logo?: React.ReactNode;\n right?: React.ReactNode;\n}) {\n return (\n <header className=\"sticky top-4 z-(--z-header) mx-auto flex w-full max-w-(--layout-max-width) items-center justify-between px-(--layout-padding) py-3\">\n {logo}\n {right}\n </header>\n );\n}\n","\"use client\";\nimport {\n type MotionValue,\n motion,\n motionValue,\n useSpring,\n useTransform,\n} from \"motion/react\";\nimport { useEffect, useId } from \"react\";\nimport useMeasure from \"react-use-measure\";\n\nconst TRANSITION = {\n type: \"spring\" as const,\n bounce: 0,\n duration: 0.3,\n};\n\nfunction Digit({ value, place }: { value: number; place: number }) {\n const valueRoundedToPlace = Math.floor(value / place) % 10;\n const initial = motionValue(valueRoundedToPlace);\n const animatedValue = useSpring(initial, TRANSITION);\n\n useEffect(() => {\n animatedValue.set(valueRoundedToPlace);\n }, [animatedValue, valueRoundedToPlace]);\n\n return (\n <div className=\"relative inline-block w-[1ch] overflow-x-visible overflow-y-clip leading-none tabular-nums\">\n <div className=\"invisible\">0</div>\n {Array.from({ length: 10 }, (_, i) => (\n // biome-ignore lint/suspicious/noArrayIndexKey: order is static\n <SlidingDigitNumber key={`digit-${i}`} mv={animatedValue} number={i} />\n ))}\n </div>\n );\n}\n\nfunction SlidingDigitNumber({\n mv,\n number,\n}: {\n mv: MotionValue<number>;\n number: number;\n}) {\n const uniqueId = useId();\n const [ref, bounds] = useMeasure();\n\n const y = useTransform(mv, (latest) => {\n if (!bounds.height) return 0;\n const placeValue = latest % 10;\n const offset = (10 + number - placeValue) % 10;\n let memo = offset * bounds.height;\n\n if (offset > 5) {\n memo -= 10 * bounds.height;\n }\n\n return memo;\n });\n\n // don't render the animated number until we know the height\n if (!bounds.height) {\n return (\n <span ref={ref} className=\"invisible absolute\">\n {number}\n </span>\n );\n }\n\n return (\n <motion.span\n style={{ y }}\n layoutId={`${uniqueId}-${number}`}\n className=\"absolute inset-0 flex items-center justify-center\"\n transition={TRANSITION}\n ref={ref}\n >\n {number}\n </motion.span>\n );\n}\n\ntype SlidingNumberProps = {\n value: number;\n padStart?: boolean;\n decimalSeparator?: string;\n};\n\nexport function SlidingNumber({\n value,\n padStart = false,\n decimalSeparator = \".\",\n}: SlidingNumberProps) {\n const absValue = Math.abs(value);\n const [integerPart, decimalPart] = absValue.toString().split(\".\");\n const integerValue = parseInt(integerPart, 10);\n const paddedInteger =\n padStart && integerValue < 10 ? `0${integerPart}` : integerPart;\n const integerDigits = paddedInteger.split(\"\");\n const integerPlaces = integerDigits.map(\n (_, i) => 10 ** (integerDigits.length - i - 1),\n );\n\n return (\n <div className=\"flex items-center\">\n {value < 0 && \"-\"}\n {integerDigits.map((_, index) => (\n <Digit\n key={`pos-${integerPlaces[index]}`}\n value={integerValue}\n place={integerPlaces[index]}\n />\n ))}\n {decimalPart && (\n <>\n <span>{decimalSeparator}</span>\n {decimalPart.split(\"\").map((_, index) => {\n const place = 10 ** (decimalPart.length - index - 1);\n return (\n <Digit\n key={`decimal-${place}`}\n value={parseInt(decimalPart, 10)}\n place={place}\n />\n );\n })}\n </>\n )}\n </div>\n );\n}\n","\"use client\";\n\nimport { GitHubLogoIcon } from \"@radix-ui/react-icons\";\nimport { motion } from \"motion/react\";\nimport Link from \"next/link\";\nimport { usePathname } from \"next/navigation\";\nimport { ThemeSwitcher } from \"@/components/layout/theme-switcher\";\nimport { Button } from \"@/components/ui/button\";\nimport { cn } from \"@/lib/utils\";\nimport { tap as tapSound, turn as turnSound } from \"@/lib/utils/audio\";\nimport { Badge } from \"../ui/badge\";\nimport { BrandLogo } from \"../ui/brand-logo\";\nimport {\n HoverCard,\n HoverCardContent,\n HoverCardTrigger,\n} from \"../ui/hover-card\";\nimport {\n Tooltip,\n TooltipContent,\n TooltipProvider,\n TooltipTrigger,\n} from \"../ui/tooltip\";\n\nexport type SiteHeaderProps = {\n navItems?: { label: string; href: string }[];\n logo?: React.ReactNode;\n version?: string;\n githubUrl?: string;\n right?: React.ReactNode;\n};\n\nexport function SiteHeader({\n navItems = [],\n logo = <BrandLogo />,\n version = \"v0.1\",\n githubUrl = \"https://github.com/your-username/your-repo\",\n right,\n}: SiteHeaderProps) {\n const pathname = usePathname();\n const isActive = (href: string) =>\n href === \"/\" ? pathname === \"/\" : (pathname?.startsWith(href) ?? false);\n\n return (\n <header className=\"sticky top-4 z-(--z-header) flex w-full items-center justify-between rounded-xl\">\n {/* Brand mark — doubles as the home link. */}\n <Link\n href=\"/\"\n aria-label=\"Home\"\n className=\"flex items-center text-foreground transition-opacity hover:opacity-80\"\n >\n {logo}\n </Link>\n\n {/* Nav links, centered. */}\n <nav className=\"absolute left-1/2 flex -translate-x-1/2 items-center gap-4 md:gap-5\">\n {navItems.map((item) => {\n const active = isActive(item.href);\n return (\n <Link\n key={item.href}\n href={item.href}\n aria-current={active ? \"page\" : undefined}\n onClick={() => {\n if (!active) turnSound(item.href === \"/\" ? \"back\" : \"forward\");\n }}\n className={cn(\n \"relative font-medium text-sm leading-5 transition-colors px-3 py-1.5 rounded-full\",\n active\n ? \"text-foreground\"\n : \"text-muted-foreground hover:text-foreground\",\n )}\n >\n {active && (\n <motion.div\n layoutId=\"activeHeaderNavBg\"\n className=\"absolute inset-0 bg-secondary/60 rounded-full\"\n transition={{ type: \"spring\", duration: 0.3, bounce: 0 }}\n />\n )}\n <span className=\"relative z-10\">{item.label}</span>\n </Link>\n );\n })}\n </nav>\n\n <div className=\"flex items-center gap-1\">\n {version && (\n <HoverCard>\n <HoverCardTrigger\n render={\n <Badge\n variant={\"secondary\"}\n className=\"align-middle cursor-default hover:bg-secondary/80 transition-colors\"\n >\n {version}\n </Badge>\n }\n />\n <HoverCardContent\n side=\"bottom\"\n sideOffset={8}\n align=\"center\"\n className=\"w-64 p-2\"\n >\n <div className=\"space-y-1.5\">\n <h1 className=\" font-medium\">Release {version}</h1>\n <p className=\"text-muted-foreground\">\n You are viewing the documentation for the latest release.\n </p>\n </div>\n </HoverCardContent>\n </HoverCard>\n )}\n {right}\n {githubUrl && (\n <TooltipProvider delay={200}>\n <Tooltip>\n <TooltipTrigger\n render={\n <Button\n variant=\"ghost\"\n size=\"sm\"\n render={(props: React.ComponentProps<\"a\">) => (\n <a\n {...props}\n href={githubUrl}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n onClick={(e) => {\n props.onClick?.(e);\n tapSound();\n }}\n />\n )}\n >\n <GitHubLogoIcon />\n <span className=\"hidden sm:inline\">GitHub</span>\n </Button>\n }\n />\n <TooltipContent side=\"bottom\" sideOffset={6}>\n View source on GitHub\n </TooltipContent>\n </Tooltip>\n </TooltipProvider>\n )}\n <ThemeSwitcher />\n </div>\n </header>\n );\n}\n","\"use client\";\n\nimport { MoonIcon, SunIcon } from \"@radix-ui/react-icons\";\nimport { useTheme } from \"next-themes\";\nimport { useEffect, useState } from \"react\";\nimport { Button } from \"@/components/ui/button\";\nimport { MorphIcon } from \"../motion-primitives/morph-icon\";\n\nexport function ThemeSwitcher() {\n const { theme, setTheme, systemTheme } = useTheme();\n const [mounted, setMounted] = useState(false);\n\n useEffect(() => {\n setMounted(true);\n }, []);\n\n if (!mounted) {\n return (\n <Button variant=\"ghost\" size=\"icon-sm\" aria-label=\"Toggle theme\">\n <SunIcon aria-hidden=\"true\" />\n </Button>\n );\n }\n\n const currentTheme = theme === \"system\" ? systemTheme : theme;\n\n return (\n <Button\n variant=\"ghost\"\n size=\"icon-sm\"\n onClick={() => setTheme(currentTheme === \"dark\" ? \"light\" : \"dark\")}\n aria-label=\"Toggle theme\"\n >\n <MorphIcon\n isActive={currentTheme === \"dark\"}\n activeIcon={<MoonIcon aria-hidden=\"true\" />}\n inactiveIcon={<SunIcon aria-hidden=\"true\" />}\n variant=\"rotate\"\n />\n </Button>\n );\n}\n","\"use client\";\n\nimport { AnimatePresence, motion } from \"motion/react\";\nimport type * as React from \"react\";\n\nconst CARD_DELAY_STEP = 0.067;\n\n// Active permutation: TR BR / TL BL (indices in a 2×2 grid 0-3)\nconst ACTIVE_ORDER = [1, 3, 0, 2];\nconst DEFAULT_ORDER = [0, 1, 2, 3];\n\nexport interface CardsViewIconProps {\n /** Whether the icon is in its active (animated) state. */\n isActive: boolean;\n /** Extra classes applied to the root element. */\n className?: string;\n}\n\nexport function CardsViewIcon({ isActive, className }: CardsViewIconProps) {\n const order = isActive ? ACTIVE_ORDER : DEFAULT_ORDER;\n\n return (\n <motion.span\n className={`inline-grid h-3 w-3 place-content-center grid-cols-2 gap-[2.5px] ${className ?? \"\"}`}\n aria-hidden=\"true\"\n >\n {order.map((id, i) => (\n <motion.span\n key={id}\n layout\n className=\"size-[4px] rounded-[1px] bg-current\"\n animate={isActive ? { opacity: [0.65, 1, 1] } : { opacity: 1 }}\n transition={{\n duration: 0.42,\n delay: i === 0 ? 0 : i * CARD_DELAY_STEP,\n ease: \"easeOut\",\n layout: {\n duration: 0.45,\n delay: i === 0 ? 0 : i * CARD_DELAY_STEP,\n ease: \"easeInOut\",\n },\n }}\n />\n ))}\n </motion.span>\n );\n}\n\nexport interface MorphIconProps {\n isActive: boolean;\n activeIcon: React.ReactNode;\n inactiveIcon: React.ReactNode;\n className?: string;\n variant?: \"scale\" | \"rotate\" | \"slide\";\n}\n\nexport function MorphIcon({\n isActive,\n activeIcon,\n inactiveIcon,\n className,\n variant = \"rotate\",\n}: MorphIconProps) {\n const variants = {\n scale: {\n initial: { opacity: 0, scale: 0.95 },\n animate: { opacity: 1, scale: 1 },\n exit: { opacity: 0, scale: 0.95 },\n },\n rotate: {\n initial: { opacity: 0, rotate: -90, scale: 0.95 },\n animate: { opacity: 1, rotate: 0, scale: 1 },\n exit: { opacity: 0, rotate: 90, scale: 0.95 },\n },\n slide: {\n initial: { opacity: 0, y: -10 },\n animate: { opacity: 1, y: 0 },\n exit: { opacity: 0, y: 10 },\n },\n };\n\n return (\n <AnimatePresence mode=\"popLayout\" initial={false}>\n <motion.span\n key={isActive ? \"active\" : \"inactive\"}\n initial=\"initial\"\n animate=\"animate\"\n exit=\"exit\"\n variants={variants[variant]}\n transition={{ duration: 0.15, ease: [0.23, 1, 0.32, 1] }}\n className={`inline-flex items-center justify-center ${className ?? \"\"}`}\n >\n {isActive ? activeIcon : inactiveIcon}\n </motion.span>\n </AnimatePresence>\n );\n}\n","\"use client\";\n\nimport { AnimatePresence, type HTMLMotionProps, motion } from \"motion/react\";\nimport { forwardRef, useState } from \"react\";\n\ninterface BrandLogoProps extends HTMLMotionProps<\"div\"> {}\n\nexport const BrandLogo = forwardRef<HTMLDivElement, BrandLogoProps>(\n ({ className = \"\", ...props }, ref) => {\n const [isHovered, setIsHovered] = useState(false);\n\n // Apple's approach to spring physics\n const springConfig = {\n type: \"spring\" as const,\n duration: 0.5,\n bounce: 0.2,\n };\n\n // Strong ease-out curve for the morphing crossfade\n const easeOut = [0.23, 1, 0.32, 1] as const;\n\n return (\n <motion.div\n ref={ref}\n // No background here. The container is completely transparent.\n className={`relative flex items-center justify-center overflow-hidden transition-shadow ${className}`}\n onHoverStart={() => setIsHovered(true)}\n onHoverEnd={() => setIsHovered(false)}\n whileTap={{ scale: 0.97 }}\n // 1. Container width expands/shrinks naturally using layout\n layout\n transition={springConfig}\n style={{\n height: 24, // Keeps vertical rhythm stable\n cursor: \"pointer\",\n }}\n {...props}\n >\n <AnimatePresence mode=\"popLayout\" initial={false}>\n {isHovered ? (\n <motion.span\n key=\"text\"\n // 2. The blur creates a glowing \"morph\" between the shapes\n initial={{ opacity: 0, scale: 0.95, filter: \"blur(6px)\" }}\n animate={{ opacity: 1, scale: 1, filter: \"blur(0px)\" }}\n exit={{ opacity: 0, scale: 0.95, filter: \"blur(6px)\" }}\n transition={{ duration: 0.2, ease: easeOut }}\n className=\"whitespace-nowrap font-sans text-[16px] font-extrabold lowercase leading-none tracking-tight text-slate-900 dark:text-white\"\n >\n inklu\n </motion.span>\n ) : (\n <motion.div\n key=\"icon\"\n initial={{ opacity: 0, scale: 0.95, filter: \"blur(6px)\" }}\n animate={{ opacity: 1, scale: 1, filter: \"blur(0px)\" }}\n exit={{ opacity: 0, scale: 0.95, filter: \"blur(6px)\" }}\n transition={{ duration: 0.2, ease: easeOut }}\n className=\"h-4 w-4 rounded-sm bg-slate-900 dark:bg-white\"\n />\n )}\n </AnimatePresence>\n </motion.div>\n );\n },\n);\n\nBrandLogo.displayName = \"BrandLogo\";\n","\"use client\";\n\nimport { PreviewCard as PreviewCardPrimitive } from \"@base-ui/react/preview-card\";\n\nimport { cn } from \"@/lib/utils\";\n\nfunction HoverCard({ ...props }: PreviewCardPrimitive.Root.Props) {\n return <PreviewCardPrimitive.Root data-slot=\"hover-card\" {...props} />;\n}\n\nfunction HoverCardTrigger({ ...props }: PreviewCardPrimitive.Trigger.Props) {\n return (\n <PreviewCardPrimitive.Trigger data-slot=\"hover-card-trigger\" {...props} />\n );\n}\n\nfunction HoverCardContent({\n className,\n side = \"bottom\",\n sideOffset = 4,\n align = \"center\",\n alignOffset = 4,\n ...props\n}: PreviewCardPrimitive.Popup.Props &\n Pick<\n PreviewCardPrimitive.Positioner.Props,\n \"align\" | \"alignOffset\" | \"side\" | \"sideOffset\"\n >) {\n return (\n <PreviewCardPrimitive.Portal data-slot=\"hover-card-portal\">\n <PreviewCardPrimitive.Positioner\n align={align}\n alignOffset={alignOffset}\n side={side}\n sideOffset={sideOffset}\n className=\"isolate z-50\"\n >\n <PreviewCardPrimitive.Popup\n data-slot=\"hover-card-content\"\n className={cn(\n \"z-50 w-64 origin-(--transform-origin) rounded-lg bg-popover p-2.5 text-sm text-popover-foreground shadow-md ring-1 ring-foreground/10 outline-hidden duration-200 ease-out data-[side=bottom]:slide-in-from-top-2 data-[side=inline-end]:slide-in-from-left-2 data-[side=inline-start]:slide-in-from-right-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95\",\n className,\n )}\n {...props}\n />\n </PreviewCardPrimitive.Positioner>\n </PreviewCardPrimitive.Portal>\n );\n}\n\nexport { HoverCard, HoverCardTrigger, HoverCardContent };\n","\"use client\";\n\nimport { Tooltip as TooltipPrimitive } from \"@base-ui/react/tooltip\";\n\nimport { cn } from \"@/lib/utils\";\n\nfunction TooltipProvider({\n delay = 0,\n ...props\n}: TooltipPrimitive.Provider.Props) {\n return (\n <TooltipPrimitive.Provider\n data-slot=\"tooltip-provider\"\n delay={delay}\n {...props}\n />\n );\n}\n\nfunction Tooltip({ ...props }: TooltipPrimitive.Root.Props) {\n return <TooltipPrimitive.Root data-slot=\"tooltip\" {...props} />;\n}\n\nfunction TooltipTrigger({ ...props }: TooltipPrimitive.Trigger.Props) {\n return <TooltipPrimitive.Trigger data-slot=\"tooltip-trigger\" {...props} />;\n}\n\nfunction TooltipContent({\n className,\n side = \"top\",\n sideOffset = 4,\n align = \"center\",\n alignOffset = 0,\n children,\n ...props\n}: TooltipPrimitive.Popup.Props &\n Pick<\n TooltipPrimitive.Positioner.Props,\n \"align\" | \"alignOffset\" | \"side\" | \"sideOffset\"\n >) {\n return (\n <TooltipPrimitive.Portal>\n <TooltipPrimitive.Positioner\n align={align}\n alignOffset={alignOffset}\n side={side}\n sideOffset={sideOffset}\n className=\"isolate z-50\"\n >\n <TooltipPrimitive.Popup\n data-slot=\"tooltip-content\"\n className={cn(\n \"z-50 inline-flex w-fit max-w-xs origin-(--transform-origin) items-center gap-1.5 rounded-md bg-foreground px-3 py-1.5 text-xs text-background has-data-[slot=kbd]:pr-1.5 duration-150 ease-out data-instant:duration-0 data-[side=bottom]:slide-in-from-top-2 data-[side=inline-end]:slide-in-from-left-2 data-[side=inline-start]:slide-in-from-right-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 **:data-[slot=kbd]:relative **:data-[slot=kbd]:isolate **:data-[slot=kbd]:z-50 **:data-[slot=kbd]:rounded-sm data-[state=delayed-open]:animate-in data-[state=delayed-open]:fade-in-0 data-[state=delayed-open]:zoom-in-95 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95\",\n className,\n )}\n {...props}\n >\n {children}\n <TooltipPrimitive.Arrow className=\"z-50 size-2.5 translate-y-[calc(-50%-2px)] rotate-45 rounded-[2px] bg-foreground fill-foreground data-[side=bottom]:top-1 data-[side=inline-end]:top-1/2! data-[side=inline-end]:-left-1 data-[side=inline-end]:-translate-y-1/2 data-[side=inline-start]:top-1/2! data-[side=inline-start]:-right-1 data-[side=inline-start]:-translate-y-1/2 data-[side=left]:top-1/2! data-[side=left]:-right-1 data-[side=left]:-translate-y-1/2 data-[side=right]:top-1/2! data-[side=right]:-left-1 data-[side=right]:-translate-y-1/2 data-[side=top]:-bottom-2.5\" />\n </TooltipPrimitive.Popup>\n </TooltipPrimitive.Positioner>\n </TooltipPrimitive.Portal>\n );\n}\n\nexport { Tooltip, TooltipTrigger, TooltipContent, TooltipProvider };\n","import type * as React from \"react\";\nimport { ScrollFade } from \"../shared/scroll-fade\";\n\nexport type SiteLayoutProps = {\n children: React.ReactNode;\n header?: React.ReactNode;\n footer?: React.ReactNode;\n};\n\nexport function SiteLayout({ children, header, footer }: SiteLayoutProps) {\n return (\n <div className=\"relative flex flex-col items-center min-h-screen pb-24 overflow-x-clip\">\n {/* Top scroll fade */}\n <ScrollFade />\n\n <section className=\"w-full px-6 flex flex-col gap-3 pt-3\">\n {header}\n {children}\n </section>\n\n {footer && (\n <div className=\"flex flex-col gap-10 items-center text-center mt-32 px-4\">\n {footer}\n </div>\n )}\n </div>\n );\n}\n","\"use client\";\n\nimport { Analytics } from \"@vercel/analytics/react\";\nimport type * as React from \"react\";\nimport { DirectionProvider } from \"../ui/direction\";\nimport { AnchoredToastProvider, ToastProvider } from \"../ui/toast\";\nimport { ThemeProvider } from \"./theme-provider\";\n\nexport function SiteProvider({ children }: { children: React.ReactNode }) {\n return (\n <ThemeProvider\n attribute=\"class\"\n defaultTheme=\"dark\"\n enableSystem\n disableTransitionOnChange\n >\n <DirectionProvider direction=\"ltr\">\n <ToastProvider position=\"bottom-right\">\n <AnchoredToastProvider>{children}</AnchoredToastProvider>\n </ToastProvider>\n </DirectionProvider>\n <Analytics />\n </ThemeProvider>\n );\n}\n","\"use client\";\n\nexport {\n DirectionProvider,\n useDirection,\n} from \"@base-ui/react/direction-provider\";\n","\"use client\";\n\nimport { ThemeProvider as NextThemesProvider } from \"next-themes\";\nimport type { ComponentProps } from \"react\";\n\nexport function ThemeProvider(\n props: ComponentProps<typeof NextThemesProvider>,\n) {\n return <NextThemesProvider {...props} />;\n}\n","\"use client\";\n\nimport { motion, useReducedMotion } from \"motion/react\";\nimport type * as React from \"react\";\n\nexport function SiteTemplate({ children }: { children: React.ReactNode }) {\n const reduced = useReducedMotion();\n\n return (\n <motion.div\n initial={reduced ? false : { opacity: 0 }}\n animate={{ opacity: 1 }}\n transition={\n reduced ? { duration: 0 } : { duration: 0.24, ease: [0.22, 1, 0.36, 1] }\n }\n >\n {children}\n </motion.div>\n );\n}\n","import { mergeProps } from \"@base-ui/react/merge-props\";\nimport { useRender } from \"@base-ui/react/use-render\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { Separator } from \"@/components/ui/separator\";\nimport { cn } from \"@/lib/utils\";\n\nconst buttonGroupVariants = cva(\n \"flex w-fit items-stretch *:focus-visible:relative *:focus-visible:z-10 has-[>[data-slot=button-group]]:gap-2 has-[select[aria-hidden=true]:last-child]:[&>[data-slot=select-trigger]:last-of-type]:rounded-e-md [&>[data-slot=select-trigger]:not([class*='w-'])]:w-fit [&>input]:flex-1\",\n {\n variants: {\n orientation: {\n horizontal:\n \"*:data-slot:rounded-e-none [&>[data-slot]:not(:has(~[data-slot]))]:rounded-e-md! [&>[data-slot]~[data-slot]]:rounded-s-none [&>[data-slot]~[data-slot]]:border-s-0\",\n vertical:\n \"flex-col *:data-slot:rounded-b-none [&>[data-slot]:not(:has(~[data-slot]))]:rounded-b-md! [&>[data-slot]~[data-slot]]:rounded-t-none [&>[data-slot]~[data-slot]]:border-t-0\",\n },\n },\n defaultVariants: {\n orientation: \"horizontal\",\n },\n },\n);\n\nfunction ButtonGroup({\n className,\n orientation,\n ...props\n}: React.ComponentProps<\"div\"> & VariantProps<typeof buttonGroupVariants>) {\n return (\n // biome-ignore lint/a11y/useSemanticElements: Button group pattern\n <div\n role=\"group\"\n data-slot=\"button-group\"\n data-orientation={orientation}\n className={cn(buttonGroupVariants({ orientation }), className)}\n {...props}\n />\n );\n}\n\nfunction ButtonGroupText({\n className,\n render,\n ...props\n}: useRender.ComponentProps<\"div\">) {\n return useRender({\n defaultTagName: \"div\",\n props: mergeProps<\"div\">(\n {\n className: cn(\n \"flex items-center gap-2 rounded-md border bg-muted px-2.5 text-xs/relaxed font-medium [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4\",\n className,\n ),\n },\n props,\n ),\n render,\n state: {\n slot: \"button-group-text\",\n },\n });\n}\n\nfunction ButtonGroupSeparator({\n className,\n orientation = \"vertical\",\n ...props\n}: React.ComponentProps<typeof Separator>) {\n return (\n <Separator\n data-slot=\"button-group-separator\"\n orientation={orientation}\n className={cn(\n \"relative self-stretch bg-input data-horizontal:mx-px data-horizontal:w-auto data-vertical:my-px data-vertical:h-auto\",\n className,\n )}\n {...props}\n />\n );\n}\n\nexport {\n ButtonGroup,\n ButtonGroupSeparator,\n ButtonGroupText,\n buttonGroupVariants,\n};\n","\"use client\";\n\nimport { Separator as SeparatorPrimitive } from \"@base-ui/react/separator\";\n\nimport { cn } from \"@/lib/utils\";\n\nfunction Separator({\n className,\n orientation = \"horizontal\",\n ...props\n}: SeparatorPrimitive.Props) {\n return (\n <SeparatorPrimitive\n data-slot=\"separator\"\n orientation={orientation}\n className={cn(\n \"shrink-0 bg-border data-horizontal:h-px data-horizontal:w-full data-vertical:w-px data-vertical:self-stretch\",\n className,\n )}\n {...props}\n />\n );\n}\n\nexport { Separator };\n","import { SmoothCorners } from \"@lisse/react\";\nimport type * as React from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nfunction Card({\n className,\n size = \"default\",\n ...props\n}: React.ComponentProps<\"div\"> & { size?: \"default\" | \"sm\" }) {\n return (\n <SmoothCorners asChild corners={{ radius: 24, smoothing: 1 }}>\n <div\n data-slot=\"card\"\n data-size={size}\n className={cn(\n \"group/card flex flex-col overflow-hidden bg-card hover:bg-accent transition-colors text-card-foreground\",\n className,\n )}\n {...props}\n />\n </SmoothCorners>\n );\n}\n\nfunction CardHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-header\"\n className={cn(\"flex flex-col gap-1.5 mb-4\", className)}\n {...props}\n />\n );\n}\n\nfunction CardTitle({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-title\"\n className={cn(\"font-medium leading-none tracking-tight\", className)}\n {...props}\n />\n );\n}\n\nfunction CardDescription({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-description\"\n className={cn(\"text-muted-foreground\", className)}\n {...props}\n />\n );\n}\n\nfunction CardAction({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-action\"\n className={cn(\n \"col-start-2 row-span-2 row-start-1 self-start justify-self-end\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction CardContent({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-content\"\n className={cn(\"text-muted-foreground\", className)}\n {...props}\n />\n );\n}\n\nfunction CardFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-footer\"\n className={cn(\"flex items-center pt-4\", className)}\n {...props}\n />\n );\n}\n\nexport {\n Card,\n CardHeader,\n CardFooter,\n CardTitle,\n CardAction,\n CardDescription,\n CardContent,\n};\n","import { mergeProps } from \"@base-ui/react/merge-props\";\nimport { useRender } from \"@base-ui/react/use-render\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport type * as React from \"react\";\nimport { Separator } from \"@/components/ui/separator\";\nimport { cn } from \"@/lib/utils\";\n\nfunction ItemGroup({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n // biome-ignore lint/a11y/useSemanticElements: ARIA list pattern\n <div\n role=\"list\"\n data-slot=\"item-group\"\n className={cn(\n \"group/item-group flex w-full flex-col gap-4 has-data-[size=sm]:gap-2.5 has-data-[size=xs]:gap-2\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction ItemSeparator({\n className,\n ...props\n}: React.ComponentProps<typeof Separator>) {\n return (\n <Separator\n data-slot=\"item-separator\"\n orientation=\"horizontal\"\n className={cn(\"my-2\", className)}\n {...props}\n />\n );\n}\n\nconst itemVariants = cva(\n \"group/item flex w-full flex-wrap items-center rounded-lg border text-sm transition duration-[160ms] ease-out outline-none focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 [a]:transition-colors [a]:hover:bg-muted active:scale-[0.97]\",\n {\n variants: {\n variant: {\n default: \"border-transparent\",\n outline: \"border-border\",\n muted: \"border-transparent bg-muted/50\",\n },\n size: {\n default: \"gap-2.5 px-3 py-2.5\",\n sm: \"gap-2.5 px-3 py-2.5\",\n xs: \"gap-2 px-2.5 py-2 in-data-[slot=dropdown-menu-content]:p-0\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n },\n);\n\nfunction Item({\n className,\n variant = \"default\",\n size = \"default\",\n render,\n ...props\n}: useRender.ComponentProps<\"div\"> & VariantProps<typeof itemVariants>) {\n return useRender({\n defaultTagName: \"div\",\n props: mergeProps<\"div\">(\n {\n className: cn(itemVariants({ variant, size, className })),\n },\n props,\n ),\n render,\n state: {\n slot: \"item\",\n variant,\n size,\n },\n });\n}\n\nconst itemMediaVariants = cva(\n \"flex shrink-0 items-center justify-center gap-2 group-has-data-[slot=item-description]/item:translate-y-0.5 group-has-data-[slot=item-description]/item:self-start [&_svg]:pointer-events-none\",\n {\n variants: {\n variant: {\n default: \"bg-transparent\",\n icon: \"[&_svg:not([class*='size-'])]:size-4\",\n image:\n \"size-10 overflow-hidden rounded-sm group-data-[size=sm]/item:size-8 group-data-[size=xs]/item:size-6 [&_img]:size-full [&_img]:object-cover\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n },\n);\n\nfunction ItemMedia({\n className,\n variant = \"default\",\n ...props\n}: React.ComponentProps<\"div\"> & VariantProps<typeof itemMediaVariants>) {\n return (\n <div\n data-slot=\"item-media\"\n data-variant={variant}\n className={cn(itemMediaVariants({ variant, className }))}\n {...props}\n />\n );\n}\n\nfunction ItemContent({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"item-content\"\n className={cn(\n \"flex flex-1 flex-col gap-1 group-data-[size=xs]/item:gap-0 [&+[data-slot=item-content]]:flex-none\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction ItemTitle({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"item-title\"\n className={cn(\n \"line-clamp-1 flex w-fit items-center gap-2 text-sm leading-snug font-medium underline-offset-4\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction ItemDescription({ className, ...props }: React.ComponentProps<\"p\">) {\n return (\n <p\n data-slot=\"item-description\"\n className={cn(\n \"line-clamp-2 text-left text-sm leading-normal font-normal text-muted-foreground group-data-[size=xs]/item:text-xs [&>a]:underline [&>a]:underline-offset-4 [&>a:hover]:text-primary\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction ItemActions({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"item-actions\"\n className={cn(\"flex items-center gap-2\", className)}\n {...props}\n />\n );\n}\n\nfunction ItemHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"item-header\"\n className={cn(\n \"flex basis-full items-center justify-between gap-2\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction ItemFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"item-footer\"\n className={cn(\n \"flex basis-full items-center justify-between gap-2\",\n className,\n )}\n {...props}\n />\n );\n}\n\nexport {\n Item,\n ItemMedia,\n ItemContent,\n ItemActions,\n ItemGroup,\n ItemSeparator,\n ItemTitle,\n ItemDescription,\n ItemHeader,\n ItemFooter,\n};\n"],"mappings":"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","names":["import_react","import_jsx_runtime","import_react","import_react","import_class_variance_authority","import_jsx_runtime","import_jsx_runtime","import_react","import_react","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_react","import_react","import_jsx_runtime","import_react","import_jsx_runtime","React","import_jsx_runtime","import_react_icons","import_react","React","import_react","import_jsx_runtime","useMeasure","import_jsx_runtime","Link","import_react_icons","import_react","import_link","import_navigation","import_react_icons","import_react","import_react","import_jsx_runtime","import_jsx_runtime","import_react","import_jsx_runtime","import_jsx_runtime","PreviewCardPrimitive","import_jsx_runtime","TooltipPrimitive","import_jsx_runtime","Link","import_jsx_runtime","import_react","import_next_themes","import_jsx_runtime","NextThemesProvider","import_jsx_runtime","import_react","import_jsx_runtime","import_merge_props","import_use_render","import_class_variance_authority","import_jsx_runtime","SeparatorPrimitive","import_jsx_runtime","import_react","import_jsx_runtime","import_merge_props","import_use_render","import_class_variance_authority","import_jsx_runtime"]}