doodleui-react 0.5.0 → 0.6.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/CHANGELOG.md +10 -0
- package/README.md +3 -3
- package/dist/index.cjs +2247 -220
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +270 -23
- package/dist/index.d.ts +270 -23
- package/dist/index.js +2205 -221
- package/dist/index.js.map +1 -1
- package/package.json +7 -5
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/types.ts","../src/utils.ts","../src/context/SketchSeedContext.tsx","../src/hooks/useResolvedSeed.ts","../src/hooks/useElementSize.ts","../src/primitives/RoughSvg.tsx","../src/animations/DoodleUIProvider.tsx","../src/animations/resolveAnimate.ts","../src/animations/usePrefersReducedMotion.ts","../src/animations/useAnimate.ts","../src/animations/useTweenNumber.ts","../src/animations/useDrawIn.ts","../src/primitives/SketchBox.tsx","../src/components/Button.tsx","../src/components/Input.tsx","../src/components/Textarea.tsx","../src/components/Checkbox.tsx","../src/components/Radio.tsx","../src/components/Card.tsx","../src/components/Badge.tsx","../src/components/Alert.tsx","../src/components/Modal.tsx","../src/components/Divider.tsx","../src/components/Progress.tsx","../src/components/Tooltip.tsx","../src/components/Select.tsx","../src/components/Switch.tsx","../src/components/Tabs.tsx","../src/components/Table.tsx","../src/components/Toast.tsx","../src/components/Accordion.tsx","../src/components/Avatar.tsx","../src/components/Slider.tsx","../src/components/Pagination.tsx","../src/components/Breadcrumb.tsx","../src/components/Skeleton.tsx","../src/components/Stepper.tsx","../src/components/Label.tsx","../src/components/Collapsible.tsx","../src/components/Popover.tsx","../src/components/DropdownMenu.tsx","../src/components/Dialog.tsx","../src/components/AlertDialog.tsx","../src/components/Command.tsx","../src/components/Combobox.tsx","../src/components/Kbd.tsx","../src/components/Spinner.tsx","../src/components/Toggle.tsx","../src/components/ToggleGroup.tsx","../src/components/InputGroup.tsx","../src/components/InputOTP.tsx","../src/components/ScrollArea.tsx","../src/components/Resizable.tsx","../src/components/HoverCard.tsx","../src/components/ContextMenu.tsx","../src/components/NavigationMenu.tsx","../src/components/Menubar.tsx","../src/primitives/SlidingPanel.tsx","../src/components/Sheet.tsx","../src/components/Drawer.tsx"],"names":["createContext","useState","useCallback","useLayoutEffect","useMemo","jsx","useContext","useRef","rough","useSyncExternalStore","useEffect","forwardRef","SketchBox","jsxs","assignRef","Button","Input","Textarea","Checkbox","useId","CheckboxPrimitive","RadioGroup","RadioGroupPrimitive","Radio","Card","Badge","Alert","Dialog","AnimatePresence","motion","Divider","Progress","TooltipPrimitive","SelectPrimitive","SelectTrigger","SelectContent","SelectItem","Switch","SwitchPrimitive","Tabs","TabsPrimitive","TabList","Tab","TabPanel","Table","TableHead","TableBody","TableRow","TableHeaderCell","TableCell","VARIANT_COLOR","VARIANT_FILL","ToastPrimitive","CHEVRON_PATH","Accordion","AccordionPrimitive","AccordionItem","AccordionTrigger","AccordionContent","Avatar","AvatarPrimitive","Slider","SliderPrimitive","Pagination","Breadcrumb","Children","isValidElement","cloneElement","BreadcrumbItem","Skeleton","Stepper","Label","LabelPrimitive","Collapsible","CollapsiblePrimitive","CollapsibleTrigger","CollapsibleContent","PopoverPrimitive","PopoverContent","PopoverArrow","DropdownMenuPrimitive","DropdownMenuContent","DropdownMenuItem","CHECK_PATH","DropdownMenuCheckboxItem","DropdownMenuRadioItem","DropdownMenuLabel","DropdownMenuSeparator","DialogPrimitive","DialogOverlay","DialogContent","DialogTitle","DialogDescription","AlertDialogPrimitive","AlertDialogOverlay","AlertDialogContent","AlertDialogTitle","AlertDialogDescription","AlertDialogAction","AlertDialogCancel","Command","CmdkCommand","CommandInput","CmdkInput","CommandList","CmdkList","CommandEmpty","CmdkEmpty","CommandGroup","CmdkGroup","CommandItem","CmdkItem","CommandSeparator","CmdkSeparator","PopoverPrimitive2","Kbd","Spinner","SIZE_STYLES","Toggle","TogglePrimitive","ToggleGroupPrimitive","ToggleGroupItem","InputGroupAddon","InputGroupInput","InputGroupButton","InputOTP","OTPInput","InputOTPGroup","InputOTPSlot","OTPInputContext","InputOTPSeparator","ScrollArea","ScrollAreaPrimitive","ScrollAreaViewport","ScrollBar","ResizablePrimitive","HoverCardPrimitive","HoverCardContent","ContextMenuPrimitive","ContextMenuContent","useMark","ContextMenuItem","ContextMenuCheckboxItem","ContextMenuRadioItem","ContextMenuLabel","ContextMenuSeparator","NavigationMenuPrimitive","NavigationMenuList","NavigationMenuTrigger","NavigationMenuContent","NavigationMenuViewport","NavigationMenuIndicator","NavigationMenuItemLink","MenubarPrimitive","MenubarTrigger","MenubarContent","MenubarItem","MenubarSeparator","MenubarLabel","MenubarShortcut","DialogPrimitive2","SlidingPanelOverlay","SlidingPanelContent","SlidingPanelTitle","SlidingPanelDescription","SheetContent","DrawerHandle","DrawerContent"],"mappings":"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","file":"index.cjs","sourcesContent":["import type { CSSProperties, HTMLAttributes } from \"react\";\nimport type { Options } from \"roughjs/bin/core\";\n\nexport type FillStyle =\n | \"hachure\"\n | \"solid\"\n | \"zigzag\"\n | \"cross-hatch\"\n | \"dots\"\n | \"dashed\"\n | \"zigzag-line\";\n\nexport type RoughShape = \"rectangle\" | \"ellipse\" | \"line\" | \"line-vertical\" | \"path\";\n\nexport interface SketchProps {\n /** Sketchiness intensity. Default 1.5 */\n roughness?: number;\n /** Lock the wobble. Omit to follow SketchSeedProvider or randomize on mount */\n seed?: number;\n /** Stroke color override */\n sketchColor?: string;\n /** Line curvature. Default 1 */\n bowing?: number;\n fillStyle?: FillStyle;\n strokeWidth?: number;\n}\n\nexport interface RoughSvgProps extends SketchProps {\n shape?: RoughShape;\n /** Explicit width. Falls back to the parent box via ResizeObserver */\n width?: number;\n height?: number;\n fill?: string;\n /** Inset the drawing from the box edge so strokes are not clipped */\n inset?: number;\n path?: string;\n className?: string;\n style?: CSSProperties;\n}\n\nexport type PolymorphicClassName = Pick<HTMLAttributes<HTMLElement>, \"className\" | \"style\">;\n\nexport function toRoughOptions(\n props: SketchProps & { fill?: string; stroke?: string },\n): Options {\n const stroke = props.stroke ?? props.sketchColor ?? DEFAULT_INK;\n const options: Options = {\n roughness: props.roughness ?? DEFAULT_ROUGHNESS,\n bowing: props.bowing ?? DEFAULT_BOWING,\n stroke,\n strokeWidth: props.strokeWidth ?? DEFAULT_STROKE_WIDTH,\n seed: props.seed,\n };\n if (props.fill) {\n options.fill = props.fill;\n options.fillStyle = props.fillStyle ?? \"hachure\";\n }\n return options;\n}\n\nexport const DEFAULT_ROUGHNESS = 1.5;\nexport const DEFAULT_BOWING = 1;\nexport const DEFAULT_STROKE_WIDTH = 1.75;\nexport const DEFAULT_INK = \"#1f1d1a\";\nexport const DEFAULT_INSET = 3;\n\nexport const SKETCH_COLORS = {\n ink: DEFAULT_INK,\n accent: \"#e24b3b\",\n accentFill: \"#f4c4bc\",\n secondaryFill: \"#d7e3d4\",\n paper: \"#eef0ea\",\n info: \"#1d4e89\",\n warning: \"#c47b17\",\n error: \"#c0392b\",\n success: \"#2d6a4f\",\n} as const;\n","import type { ForwardedRef, MutableRefObject } from \"react\";\n\nexport function assignRef<T>(ref: ForwardedRef<T> | undefined, value: T | null) {\n if (!ref) return;\n if (typeof ref === \"function\") ref(value);\n else (ref as MutableRefObject<T | null>).current = value;\n}\n\nexport function randomSeed(): number {\n return Math.floor(Math.random() * 2 ** 31);\n}\n\n/** Follows SketchSeedProvider --doodle-ui-font. Unset = inherit the page default. */\nexport const doodleUiFontFamily = \"var(--doodle-ui-font, inherit)\";\n\n/** When a handwriting face is active the provider sets --doodle-ui-font-weight to 400. */\nexport function doodleUiFontWeight(fallback: number): string {\n return `var(--doodle-ui-font-weight, ${fallback})`;\n}\n\nexport function nextFontIndex(current: number, count: number): number {\n if (count <= 1) return 0;\n let next = current;\n while (next === current) {\n next = Math.floor(Math.random() * count);\n }\n return next;\n}\n\nexport function cn(\n ...parts: Array<string | undefined | false | null>\n): string | undefined {\n const value = parts.filter(Boolean).join(\" \");\n return value.length > 0 ? value : undefined;\n}\n\n/**\n * Offset a resolved sketch seed by a stable hash of `key`.\n * Items in a list keep distinct wobbles that still redraw together on Shuffle.\n */\nexport function deriveSeed(base: number, key: string): number {\n let hash = 0;\n for (let i = 0; i < key.length; i += 1) {\n hash = (hash * 31 + key.charCodeAt(i)) | 0;\n }\n return (base + (hash >>> 0)) % 2 ** 31;\n}\n","\"use client\";\n\nimport {\n createContext,\n useCallback,\n useContext,\n useLayoutEffect,\n useMemo,\n useState,\n type ReactNode,\n} from \"react\";\nimport { nextFontIndex, randomSeed } from \"../utils\";\n\nexport interface SketchSeedContextValue {\n seed: number;\n fontIndex: number;\n shuffle: () => void;\n setSeed: (seed: number) => void;\n}\n\nconst SketchSeedContext = createContext<SketchSeedContextValue | null>(null);\n\nexport interface SketchSeedProviderProps {\n children: ReactNode;\n initialSeed?: number;\n /**\n * CSS font-family values for Shuffle. Index 0 is the page default\n * (`--doodle-ui-font` is left unset). Later indexes set the variable.\n */\n fonts?: readonly string[];\n /** Starting palette index. Defaults to 0 (unset / page default). */\n initialFontIndex?: number;\n}\n\nexport function SketchSeedProvider({\n children,\n initialSeed,\n fonts,\n initialFontIndex = 0,\n}: SketchSeedProviderProps) {\n const [seed, setSeed] = useState(() => initialSeed ?? randomSeed());\n const [fontIndex, setFontIndex] = useState(initialFontIndex);\n const fontCount = fonts?.length ?? 0;\n\n const shuffle = useCallback(() => {\n setSeed(randomSeed());\n setFontIndex((current) => nextFontIndex(current, fontCount));\n }, [fontCount]);\n\n const activeFamily = fontIndex > 0 ? fonts?.[fontIndex] : undefined;\n\n useLayoutEffect(() => {\n const root = document.documentElement;\n if (activeFamily) {\n root.style.setProperty(\"--doodle-ui-font\", activeFamily);\n root.style.setProperty(\"--doodle-ui-font-weight\", \"400\");\n } else {\n // Override docs :root defaults so Shuffle can return to Outfit.\n root.style.setProperty(\"--doodle-ui-font\", \"initial\");\n root.style.setProperty(\"--doodle-ui-font-weight\", \"initial\");\n }\n return () => {\n root.style.removeProperty(\"--doodle-ui-font\");\n root.style.removeProperty(\"--doodle-ui-font-weight\");\n };\n }, [activeFamily]);\n\n const value = useMemo(\n () => ({ seed, fontIndex, shuffle, setSeed }),\n [seed, fontIndex, shuffle],\n );\n\n return (\n <SketchSeedContext.Provider value={value}>\n {children}\n </SketchSeedContext.Provider>\n );\n}\n\nexport function useSketchSeed(): SketchSeedContextValue {\n const ctx = useContext(SketchSeedContext);\n if (!ctx) {\n throw new Error(\n \"useSketchSeed() must be used inside <SketchSeedProvider>. Wrap your tree so Shuffle can redraw every sketch.\",\n );\n }\n return ctx;\n}\n\nexport function useOptionalSketchSeed(): SketchSeedContextValue | null {\n return useContext(SketchSeedContext);\n}\n\nexport { SketchSeedContext };\n","\"use client\";\n\nimport { useState } from \"react\";\nimport { useOptionalSketchSeed } from \"../context/SketchSeedContext\";\nimport { randomSeed } from \"../utils\";\n\n/**\n * Resolves the seed used to draw a sketch:\n * 1. explicit `seed` prop (locked, ignores Shuffle)\n * 2. SketchSeedProvider seed (redraws on Shuffle)\n * 3. a stable random seed generated on mount\n */\nexport function useResolvedSeed(seed?: number): number {\n const ctx = useOptionalSketchSeed();\n const [fallback] = useState(randomSeed);\n if (seed != null) return seed;\n if (ctx) return ctx.seed;\n return fallback;\n}\n","\"use client\";\n\nimport { useLayoutEffect, useState, type RefObject } from \"react\";\n\nexport function useElementSize(\n ref: RefObject<HTMLElement | null>,\n): { width: number; height: number } {\n const [size, setSize] = useState({ width: 0, height: 0 });\n\n useLayoutEffect(() => {\n const el = ref.current;\n if (!el) return;\n\n const update = () => {\n setSize({ width: el.offsetWidth, height: el.offsetHeight });\n };\n\n update();\n const observer = new ResizeObserver(update);\n observer.observe(el);\n return () => observer.disconnect();\n }, [ref]);\n\n return size;\n}\n","\"use client\";\n\nimport { useLayoutEffect, useRef, type CSSProperties } from \"react\";\nimport rough from \"roughjs\";\nimport { useResolvedSeed } from \"../hooks/useResolvedSeed\";\nimport { useElementSize } from \"../hooks/useElementSize\";\nimport {\n DEFAULT_INSET,\n toRoughOptions,\n type RoughSvgProps,\n} from \"../types\";\n\n/**\n * Absolutely-positioned SVG layer that draws a rough.js shape behind HTML content.\n * Parent must be `position: relative`.\n */\nexport function RoughSvg({\n shape = \"rectangle\",\n width: widthProp,\n height: heightProp,\n roughness,\n seed: seedProp,\n sketchColor,\n bowing,\n fillStyle,\n strokeWidth,\n fill,\n inset = DEFAULT_INSET,\n path,\n className,\n style,\n}: RoughSvgProps) {\n const containerRef = useRef<HTMLDivElement>(null);\n const svgRef = useRef<SVGSVGElement>(null);\n const measured = useElementSize(containerRef);\n const seed = useResolvedSeed(seedProp);\n\n const width = widthProp ?? measured.width;\n const height = heightProp ?? measured.height;\n\n useLayoutEffect(() => {\n const svg = svgRef.current;\n if (!svg || width < 2 || height < 2) return;\n\n while (svg.firstChild) svg.removeChild(svg.firstChild);\n\n const rc = rough.svg(svg);\n const options = toRoughOptions({\n roughness,\n seed,\n sketchColor,\n bowing,\n fillStyle,\n strokeWidth,\n fill,\n });\n\n const x = inset;\n const y = inset;\n const w = Math.max(1, width - inset * 2);\n const h = Math.max(1, height - inset * 2);\n\n let node: SVGGElement;\n switch (shape) {\n case \"ellipse\":\n node = rc.ellipse(width / 2, height / 2, w, h, options);\n break;\n case \"line\":\n node = rc.line(inset, height / 2, width - inset, height / 2, options);\n break;\n case \"line-vertical\":\n node = rc.line(width / 2, inset, width / 2, height - inset, options);\n break;\n case \"path\":\n if (!path) return;\n node = rc.path(path, options);\n break;\n default:\n node = rc.rectangle(x, y, w, h, options);\n }\n\n svg.appendChild(node);\n }, [\n width,\n height,\n shape,\n roughness,\n seed,\n sketchColor,\n bowing,\n fillStyle,\n strokeWidth,\n fill,\n inset,\n path,\n ]);\n\n const overlayStyle: CSSProperties = {\n position: \"absolute\",\n inset: 0,\n width: \"100%\",\n height: \"100%\",\n pointerEvents: \"none\",\n overflow: \"visible\",\n zIndex: 0,\n ...style,\n };\n\n return (\n <div\n ref={containerRef}\n aria-hidden=\"true\"\n className={className}\n style={overlayStyle}\n >\n <svg\n ref={svgRef}\n width=\"100%\"\n height=\"100%\"\n overflow=\"visible\"\n style={{ display: \"block\" }}\n />\n </div>\n );\n}\n","\"use client\";\n\nimport {\n createContext,\n useContext,\n useMemo,\n type ReactNode,\n} from \"react\";\n\nexport interface DoodleUIContextValue {\n /** Default for components that do not set their own `animate` prop. */\n animate: boolean;\n /** When true, skip the prefers-reduced-motion disable. */\n forceAnimate: boolean;\n}\n\nconst DoodleUIContext = createContext<DoodleUIContextValue | null>(null);\n\nexport interface DoodleUIProviderProps {\n children: ReactNode;\n /**\n * Default animation setting for descendant doodle-ui components.\n * Per-component `animate` still wins when it is set.\n */\n animate?: boolean;\n /**\n * Play animations even when the user prefers reduced motion.\n * Off by default — only set this as an explicit escape hatch.\n */\n forceAnimate?: boolean;\n}\n\nexport function DoodleUIProvider({\n children,\n animate = true,\n forceAnimate = false,\n}: DoodleUIProviderProps) {\n const value = useMemo(\n () => ({ animate, forceAnimate }),\n [animate, forceAnimate],\n );\n\n return (\n <DoodleUIContext.Provider value={value}>\n {children}\n </DoodleUIContext.Provider>\n );\n}\n\nexport function useDoodleUI(): DoodleUIContextValue {\n return (\n useContext(DoodleUIContext) ?? { animate: true, forceAnimate: false }\n );\n}\n\nexport { DoodleUIContext };\n","export interface ResolveAnimateInput {\n /** Per-component override. When set, wins over the provider default. */\n animate?: boolean;\n /** Provider default. Defaults to true. */\n providerAnimate?: boolean;\n /** Ignore prefers-reduced-motion when true. */\n forceAnimate?: boolean;\n prefersReducedMotion?: boolean;\n}\n\n/**\n * Resolve whether sketch animations should run.\n * `prefers-reduced-motion: reduce` wins unless `forceAnimate` is set.\n * An explicit per-component `animate` prop then wins over the provider.\n */\nexport function resolveAnimate({\n animate,\n providerAnimate = true,\n forceAnimate = false,\n prefersReducedMotion = false,\n}: ResolveAnimateInput): boolean {\n if (prefersReducedMotion && !forceAnimate) return false;\n if (animate !== undefined) return animate;\n return providerAnimate;\n}\n","\"use client\";\n\nimport { useSyncExternalStore } from \"react\";\n\nfunction subscribe(onStoreChange: () => void) {\n const media = window.matchMedia(\"(prefers-reduced-motion: reduce)\");\n media.addEventListener(\"change\", onStoreChange);\n return () => media.removeEventListener(\"change\", onStoreChange);\n}\n\nfunction getSnapshot() {\n return window.matchMedia(\"(prefers-reduced-motion: reduce)\").matches;\n}\n\nfunction getServerSnapshot() {\n return false;\n}\n\nexport function usePrefersReducedMotion(): boolean {\n return useSyncExternalStore(subscribe, getSnapshot, getServerSnapshot);\n}\n","\"use client\";\n\nimport { useDoodleUI } from \"./DoodleUIProvider\";\nimport { resolveAnimate } from \"./resolveAnimate\";\nimport { usePrefersReducedMotion } from \"./usePrefersReducedMotion\";\n\n/**\n * Whether the calling component should play sketch animations.\n * Per-component `animate` overrides the provider. Reduced motion\n * disables animation unless the provider set `forceAnimate`.\n */\nexport function useAnimate(animate?: boolean): boolean {\n const { animate: providerAnimate, forceAnimate } = useDoodleUI();\n const prefersReducedMotion = usePrefersReducedMotion();\n return resolveAnimate({\n animate,\n providerAnimate,\n forceAnimate,\n prefersReducedMotion,\n });\n}\n","\"use client\";\n\nimport { useEffect, useRef, useState } from \"react\";\n\n/**\n * Ease a number toward `target`. When `enabled` is false, snap immediately.\n */\nexport function useTweenNumber(\n target: number,\n enabled: boolean,\n duration: number = 400,\n): number {\n const [value, setValue] = useState(target);\n const valueRef = useRef(target);\n valueRef.current = value;\n\n useEffect(() => {\n if (!enabled) {\n valueRef.current = target;\n setValue(target);\n return;\n }\n\n const from = valueRef.current;\n if (from === target) return;\n\n const start = performance.now();\n let frame = 0;\n const tick = (now: number) => {\n const t = Math.min(1, (now - start) / duration);\n const eased = 1 - (1 - t) ** 3;\n const next = from + (target - from) * eased;\n valueRef.current = next;\n setValue(next);\n if (t < 1) frame = requestAnimationFrame(tick);\n };\n frame = requestAnimationFrame(tick);\n return () => cancelAnimationFrame(frame);\n }, [target, enabled, duration]);\n\n return enabled ? value : target;\n}\n","\"use client\";\n\nimport { useLayoutEffect, type RefObject } from \"react\";\n\n/** Default sketch-in duration. Ease-out over ~400ms. */\nexport const DRAW_IN_DURATION_MS = 400;\n/** Alerts often appear dynamically — keep the sketch-in snappy. */\nexport const DRAW_IN_ALERT_MS = 200;\n/** Tooltips are transient — draw in quickly. */\nexport const DRAW_IN_TOOLTIP_MS = 180;\n/** Checkmarks, radio dots, and tab underlines. */\nexport const DRAW_IN_MARK_MS = 240;\n/** Delay between table row rules. */\nexport const TABLE_STAGGER_MS = 40;\n\nconst DRAW_IN_EASING = \"ease-out\";\n\nconst running = new WeakMap<Element, Animation[]>();\n\n/**\n * Rough.js puts fill (hachure) first and the outline last inside each `<g>`.\n * Animate the outline path so the border sketches in, not the wash.\n */\nfunction collectStrokePaths(root: Element): SVGPathElement[] {\n const groups = root.querySelectorAll(\"g\");\n if (groups.length > 0) {\n const paths: SVGPathElement[] = [];\n groups.forEach((group) => {\n const children = group.querySelectorAll(\":scope > path\");\n if (children.length === 0) return;\n paths.push(children[children.length - 1] as SVGPathElement);\n });\n return paths;\n }\n return Array.from(root.querySelectorAll(\"path\"));\n}\n\nexport function getStrokePaths(target: Element): SVGPathElement[] {\n if (target instanceof SVGPathElement) return [target];\n if (target instanceof SVGSVGElement) return collectStrokePaths(target);\n\n const svgs = target.querySelectorAll(\"svg\");\n if (svgs.length > 0) {\n return Array.from(svgs).flatMap((svg) => collectStrokePaths(svg));\n }\n return collectStrokePaths(target);\n}\n\nfunction clearDash(path: SVGPathElement) {\n path.style.strokeDasharray = \"\";\n path.style.strokeDashoffset = \"\";\n}\n\nexport function cancelDrawIn(target: Element | null): void {\n if (!target) return;\n const animations = running.get(target);\n animations?.forEach((animation) => animation.cancel());\n running.delete(target);\n getStrokePaths(target).forEach(clearDash);\n}\n\nexport function drawIn(\n target: Element,\n duration: number = DRAW_IN_DURATION_MS,\n delay: number = 0,\n): void {\n cancelDrawIn(target);\n const paths = getStrokePaths(target);\n const animations: Animation[] = [];\n\n for (const path of paths) {\n let length = 0;\n try {\n length = path.getTotalLength();\n } catch {\n continue;\n }\n if (length <= 0) continue;\n\n path.style.strokeDasharray = `${length}`;\n path.style.strokeDashoffset = `${length}`;\n\n const animation = path.animate(\n [{ strokeDashoffset: String(length) }, { strokeDashoffset: \"0\" }],\n { duration, delay, easing: DRAW_IN_EASING, fill: \"forwards\" },\n );\n animation.finished\n .then(() => {\n clearDash(path);\n })\n .catch(() => {\n /* cancelled */\n });\n animations.push(animation);\n }\n\n running.set(target, animations);\n}\n\n/**\n * Sketch-in the rough.js stroke path on the first paint, and again when\n * `replayKey` changes (e.g. a hover seed swap).\n *\n * `pathRef` may point at an SVG path, an `<svg>`, or any element that\n * contains one — the hook finds the outline path either way.\n */\nexport function useDrawIn(\n pathRef: RefObject<Element | null>,\n duration: number = DRAW_IN_DURATION_MS,\n enabled: boolean = true,\n replayKey?: unknown,\n delay: number = 0,\n): void {\n useLayoutEffect(() => {\n const target = pathRef.current;\n if (!target) return;\n\n if (!enabled) {\n cancelDrawIn(target);\n return;\n }\n\n const apply = () => drawIn(target, duration, delay);\n\n if (getStrokePaths(target).length > 0) {\n apply();\n return () => cancelDrawIn(target);\n }\n\n const observer = new MutationObserver(() => {\n if (getStrokePaths(target).length === 0) return;\n observer.disconnect();\n apply();\n });\n observer.observe(target, { childList: true, subtree: true });\n\n return () => {\n observer.disconnect();\n cancelDrawIn(target);\n };\n }, [pathRef, duration, enabled, replayKey, delay]);\n}\n","\"use client\";\n\nimport {\n forwardRef,\n useRef,\n type CSSProperties,\n type HTMLAttributes,\n type MutableRefObject,\n type ReactNode,\n} from \"react\";\nimport {\n DRAW_IN_DURATION_MS,\n useAnimate,\n useDrawIn,\n} from \"../animations\";\nimport type { FillStyle, RoughShape, SketchProps } from \"../types\";\nimport { assignRef, cn, doodleUiFontFamily } from \"../utils\";\nimport { RoughSvg } from \"./RoughSvg\";\n\nexport interface SketchBoxProps\n extends SketchProps, Omit<HTMLAttributes<HTMLDivElement>, \"color\"> {\n children?: ReactNode;\n shape?: RoughShape;\n fill?: string;\n fillStyle?: FillStyle;\n shadow?: boolean;\n contentClassName?: string;\n contentStyle?: CSSProperties;\n inset?: number;\n path?: string;\n /**\n * Sketch-in the border on mount. Defaults to the DoodleUIProvider value.\n */\n animate?: boolean;\n /** Override the default 400ms draw-in duration. */\n drawInDuration?: number;\n /** Replay draw-in when this value changes. */\n drawInKey?: unknown;\n}\n\nexport const SketchBox = forwardRef<HTMLDivElement, SketchBoxProps>(\n function SketchBox(\n {\n children,\n className,\n style,\n contentClassName,\n contentStyle,\n shape = \"rectangle\",\n fill,\n fillStyle,\n shadow = false,\n roughness,\n seed,\n sketchColor,\n bowing,\n strokeWidth,\n inset,\n path,\n animate,\n drawInDuration = DRAW_IN_DURATION_MS,\n drawInKey,\n ...rest\n },\n ref,\n ) {\n const rootRef = useRef<HTMLDivElement>(null);\n const shouldAnimate = useAnimate(animate);\n useDrawIn(rootRef, drawInDuration, shouldAnimate, drawInKey);\n\n return (\n <div\n ref={(node) => {\n (rootRef as MutableRefObject<HTMLDivElement | null>).current = node;\n assignRef(ref, node);\n }}\n className={cn(className)}\n style={{ position: \"relative\", ...style }}\n {...rest}\n >\n {shadow ? (\n <RoughSvg\n shape={shape}\n roughness={(roughness ?? 1.5) + 0.35}\n seed={seed}\n sketchColor={sketchColor}\n bowing={bowing}\n fillStyle=\"hachure\"\n fill={sketchColor ?? \"#1f1d1a\"}\n strokeWidth={1}\n inset={inset}\n style={{ transform: \"translate(5px, 6px)\", opacity: 0.16 }}\n />\n ) : null}\n <RoughSvg\n shape={shape}\n roughness={roughness}\n seed={seed}\n sketchColor={sketchColor}\n bowing={bowing}\n fillStyle={fill ? fillStyle : shadow ? \"solid\" : fillStyle}\n fill={fill ?? (shadow ? \"#f7f6f2\" : undefined)}\n strokeWidth={strokeWidth}\n inset={inset}\n path={path}\n />\n <div\n className={contentClassName}\n style={{\n position: \"relative\",\n zIndex: 1,\n fontFamily: doodleUiFontFamily,\n ...contentStyle,\n }}\n >\n {children}\n </div>\n </div>\n );\n },\n);\n","\"use client\";\n\nimport {\n forwardRef,\n useRef,\n useState,\n type ButtonHTMLAttributes,\n type CSSProperties,\n type ForwardedRef,\n type MutableRefObject,\n} from \"react\";\nimport {\n DRAW_IN_DURATION_MS,\n useAnimate,\n useDrawIn,\n} from \"../animations\";\nimport { useResolvedSeed } from \"../hooks/useResolvedSeed\";\nimport { RoughSvg } from \"../primitives/RoughSvg\";\nimport { SKETCH_COLORS, type SketchProps } from \"../types\";\nimport { cn, deriveSeed, doodleUiFontFamily, doodleUiFontWeight } from \"../utils\";\n\nexport type ButtonVariant = \"primary\" | \"secondary\" | \"outline\" | \"ghost\";\nexport type ButtonSize = \"sm\" | \"md\" | \"lg\";\n\nexport interface ButtonProps\n extends Omit<ButtonHTMLAttributes<HTMLButtonElement>, \"color\">,\n SketchProps {\n variant?: ButtonVariant;\n size?: ButtonSize;\n /**\n * Play sketch animations (draw-in on mount, seed morph on hover).\n * Defaults to the DoodleUIProvider value (true). Explicit `false`\n * renders a static sketch. `prefers-reduced-motion: reduce` disables\n * animation unless the provider set `forceAnimate`.\n */\n animate?: boolean;\n}\n\nconst SIZE_STYLES: Record<ButtonSize, CSSProperties> = {\n sm: { fontSize: 13, padding: \"4px 12px\", minHeight: 30 },\n md: { fontSize: 15, padding: \"8px 16px\", minHeight: 38 },\n lg: { fontSize: 17, padding: \"11px 22px\", minHeight: 46 },\n};\n\nfunction assignRef<T>(ref: ForwardedRef<T>, value: T | null) {\n if (typeof ref === \"function\") ref(value);\n else if (ref) (ref as MutableRefObject<T | null>).current = value;\n}\n\nexport const Button = forwardRef<HTMLButtonElement, ButtonProps>(\n function Button(\n {\n children,\n className,\n style,\n variant = \"primary\",\n size = \"md\",\n roughness,\n seed,\n sketchColor,\n bowing,\n fillStyle,\n strokeWidth,\n disabled,\n animate,\n onMouseEnter,\n onMouseLeave,\n ...rest\n },\n ref,\n ) {\n const rootRef = useRef<HTMLButtonElement>(null);\n const [hovered, setHovered] = useState(false);\n const shouldAnimate = useAnimate(animate);\n const resolvedSeed = useResolvedSeed(seed);\n const hoverSeed = deriveSeed(resolvedSeed, \"hover\");\n const sketchSeed =\n shouldAnimate && hovered && !disabled ? hoverSeed : resolvedSeed;\n const ink = sketchColor ?? SKETCH_COLORS.ink;\n\n const fill =\n variant === \"primary\"\n ? SKETCH_COLORS.accentFill\n : variant === \"secondary\"\n ? SKETCH_COLORS.secondaryFill\n : undefined;\n\n const stroke =\n variant === \"ghost\" && !hovered\n ? \"transparent\"\n : variant === \"primary\"\n ? sketchColor ?? SKETCH_COLORS.accent\n : ink;\n\n useDrawIn(rootRef, DRAW_IN_DURATION_MS, shouldAnimate, sketchSeed);\n\n return (\n <button\n ref={(node) => {\n (rootRef as MutableRefObject<HTMLButtonElement | null>).current =\n node;\n assignRef(ref, node);\n }}\n type=\"button\"\n className={cn(className)}\n disabled={disabled}\n onMouseEnter={(event) => {\n setHovered(true);\n onMouseEnter?.(event);\n }}\n onMouseLeave={(event) => {\n setHovered(false);\n onMouseLeave?.(event);\n }}\n style={{\n position: \"relative\",\n display: \"inline-flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n gap: 8,\n border: \"none\",\n background: \"transparent\",\n cursor: disabled ? \"not-allowed\" : \"pointer\",\n color: ink,\n fontFamily: doodleUiFontFamily,\n fontWeight: doodleUiFontWeight(600),\n lineHeight: 1.2,\n opacity: disabled ? 0.45 : 1,\n ...SIZE_STYLES[size],\n ...style,\n }}\n {...rest}\n >\n <RoughSvg\n shape=\"rectangle\"\n roughness={roughness}\n seed={sketchSeed}\n sketchColor={stroke}\n bowing={bowing}\n fillStyle={fillStyle ?? \"hachure\"}\n fill={fill}\n strokeWidth={\n !shouldAnimate && hovered\n ? (strokeWidth ?? 1.75) + 0.4\n : strokeWidth\n }\n />\n <span style={{ position: \"relative\", zIndex: 1 }}>{children}</span>\n </button>\n );\n },\n);\n","\"use client\";\n\nimport {\n forwardRef,\n useRef,\n useState,\n type InputHTMLAttributes,\n type ReactNode,\n} from \"react\";\nimport {\n DRAW_IN_DURATION_MS,\n useAnimate,\n useDrawIn,\n} from \"../animations\";\nimport { useResolvedSeed } from \"../hooks/useResolvedSeed\";\nimport { RoughSvg } from \"../primitives/RoughSvg\";\nimport { SKETCH_COLORS, type SketchProps } from \"../types\";\nimport { cn, deriveSeed, doodleUiFontFamily, doodleUiFontWeight } from \"../utils\";\n\nexport interface InputProps\n extends Omit<InputHTMLAttributes<HTMLInputElement>, \"color\" | \"size\">,\n SketchProps {\n label?: ReactNode;\n /**\n * Draw-in the border on mount and seed-morph on focus.\n * Defaults to the DoodleUIProvider value (true).\n */\n animate?: boolean;\n}\n\nexport const Input = forwardRef<HTMLInputElement, InputProps>(function Input(\n {\n className,\n style,\n label,\n roughness,\n seed,\n sketchColor,\n bowing,\n fillStyle,\n strokeWidth,\n id,\n onFocus,\n onBlur,\n animate,\n ...rest\n },\n ref,\n) {\n const [focused, setFocused] = useState(false);\n const fieldRef = useRef<HTMLSpanElement>(null);\n const shouldAnimate = useAnimate(animate);\n const resolvedSeed = useResolvedSeed(seed);\n const focusSeed = deriveSeed(resolvedSeed, \"focus\");\n const sketchSeed =\n shouldAnimate && focused ? focusSeed : resolvedSeed;\n const ink = sketchColor ?? SKETCH_COLORS.ink;\n const inputId = id;\n\n useDrawIn(fieldRef, DRAW_IN_DURATION_MS, shouldAnimate, sketchSeed);\n\n return (\n <label\n htmlFor={inputId}\n style={{\n display: \"flex\",\n flexDirection: \"column\",\n gap: 6,\n width: \"100%\",\n }}\n >\n {label ? (\n <span\n style={{\n fontSize: 13,\n fontWeight: doodleUiFontWeight(600),\n fontFamily: doodleUiFontFamily,\n color: ink,\n }}\n >\n {label}\n </span>\n ) : null}\n <span ref={fieldRef} style={{ position: \"relative\", display: \"block\" }}>\n <RoughSvg\n shape=\"rectangle\"\n roughness={roughness}\n seed={sketchSeed}\n sketchColor={focused ? SKETCH_COLORS.accent : ink}\n bowing={bowing}\n fillStyle={fillStyle}\n strokeWidth={\n focused && !shouldAnimate\n ? (strokeWidth ?? 1.75) + 0.35\n : focused\n ? (strokeWidth ?? 1.75) + 0.2\n : strokeWidth\n }\n />\n <input\n ref={ref}\n id={inputId}\n className={cn(className)}\n onFocus={(event) => {\n setFocused(true);\n onFocus?.(event);\n }}\n onBlur={(event) => {\n setFocused(false);\n onBlur?.(event);\n }}\n style={{\n position: \"relative\",\n zIndex: 1,\n width: \"100%\",\n boxSizing: \"border-box\",\n border: \"none\",\n outline: \"none\",\n background: \"transparent\",\n color: ink,\n fontFamily: doodleUiFontFamily,\n fontSize: 15,\n padding: \"8px 12px\",\n ...style,\n }}\n {...rest}\n />\n </span>\n </label>\n );\n});\n","\"use client\";\n\nimport {\n forwardRef,\n useRef,\n useState,\n type ReactNode,\n type TextareaHTMLAttributes,\n} from \"react\";\nimport {\n DRAW_IN_DURATION_MS,\n useAnimate,\n useDrawIn,\n} from \"../animations\";\nimport { useResolvedSeed } from \"../hooks/useResolvedSeed\";\nimport { RoughSvg } from \"../primitives/RoughSvg\";\nimport { SKETCH_COLORS, type SketchProps } from \"../types\";\nimport { cn, deriveSeed, doodleUiFontFamily, doodleUiFontWeight } from \"../utils\";\n\nexport interface TextareaProps\n extends Omit<TextareaHTMLAttributes<HTMLTextAreaElement>, \"color\">,\n SketchProps {\n label?: ReactNode;\n /**\n * Draw-in the border on mount and seed-morph on focus.\n * Defaults to the DoodleUIProvider value (true).\n */\n animate?: boolean;\n}\n\nexport const Textarea = forwardRef<HTMLTextAreaElement, TextareaProps>(\n function Textarea(\n {\n className,\n style,\n label,\n roughness,\n seed,\n sketchColor,\n bowing,\n fillStyle,\n strokeWidth,\n id,\n rows = 4,\n onFocus,\n onBlur,\n animate,\n ...rest\n },\n ref,\n ) {\n const [focused, setFocused] = useState(false);\n const fieldRef = useRef<HTMLSpanElement>(null);\n const shouldAnimate = useAnimate(animate);\n const resolvedSeed = useResolvedSeed(seed);\n const focusSeed = deriveSeed(resolvedSeed, \"focus\");\n const sketchSeed =\n shouldAnimate && focused ? focusSeed : resolvedSeed;\n const ink = sketchColor ?? SKETCH_COLORS.ink;\n\n useDrawIn(fieldRef, DRAW_IN_DURATION_MS, shouldAnimate, sketchSeed);\n\n return (\n <label\n htmlFor={id}\n style={{\n display: \"flex\",\n flexDirection: \"column\",\n gap: 6,\n width: \"100%\",\n }}\n >\n {label ? (\n <span\n style={{\n fontSize: 13,\n fontWeight: doodleUiFontWeight(600),\n fontFamily: doodleUiFontFamily,\n color: ink,\n }}\n >\n {label}\n </span>\n ) : null}\n <span ref={fieldRef} style={{ position: \"relative\", display: \"block\" }}>\n <RoughSvg\n shape=\"rectangle\"\n roughness={roughness}\n seed={sketchSeed}\n sketchColor={focused ? SKETCH_COLORS.accent : ink}\n bowing={bowing}\n fillStyle={fillStyle}\n strokeWidth={\n focused && !shouldAnimate\n ? (strokeWidth ?? 1.75) + 0.35\n : focused\n ? (strokeWidth ?? 1.75) + 0.2\n : strokeWidth\n }\n />\n <textarea\n ref={ref}\n id={id}\n rows={rows}\n className={cn(className)}\n onFocus={(event) => {\n setFocused(true);\n onFocus?.(event);\n }}\n onBlur={(event) => {\n setFocused(false);\n onBlur?.(event);\n }}\n style={{\n position: \"relative\",\n zIndex: 1,\n width: \"100%\",\n boxSizing: \"border-box\",\n border: \"none\",\n outline: \"none\",\n background: \"transparent\",\n color: ink,\n fontFamily: doodleUiFontFamily,\n fontSize: 15,\n lineHeight: 1.5,\n padding: \"10px 12px\",\n resize: \"vertical\",\n ...style,\n }}\n {...rest}\n />\n </span>\n </label>\n );\n },\n);\n","\"use client\";\n\nimport { forwardRef, useId, useRef, type ReactNode } from \"react\";\nimport * as CheckboxPrimitive from \"@radix-ui/react-checkbox\";\nimport {\n DRAW_IN_DURATION_MS,\n DRAW_IN_MARK_MS,\n useAnimate,\n useDrawIn,\n} from \"../animations\";\nimport { RoughSvg } from \"../primitives/RoughSvg\";\nimport { SKETCH_COLORS, type SketchProps } from \"../types\";\nimport { cn, doodleUiFontFamily } from \"../utils\";\n\nexport interface CheckboxProps\n extends Omit<CheckboxPrimitive.CheckboxProps, \"asChild\">,\n SketchProps {\n label?: ReactNode;\n /**\n * Draw-in the box on mount and the checkmark when checked.\n * Defaults to the DoodleUIProvider value (true).\n */\n animate?: boolean;\n}\n\nconst BOX = 20;\nconst CHECK_PATH = \"M 4.5 10.5 L 8.5 14.5 L 15.5 5.5\";\n\nfunction CheckMark({\n roughness,\n seed,\n bowing,\n strokeWidth,\n shouldAnimate,\n}: {\n roughness?: number;\n seed?: number;\n bowing?: number;\n strokeWidth?: number;\n shouldAnimate: boolean;\n}) {\n const ref = useRef<HTMLSpanElement>(null);\n useDrawIn(ref, DRAW_IN_MARK_MS, shouldAnimate);\n\n return (\n <span\n ref={ref}\n style={{ position: \"absolute\", inset: 0, pointerEvents: \"none\" }}\n >\n <RoughSvg\n shape=\"path\"\n path={CHECK_PATH}\n roughness={(roughness ?? 1.5) * 0.7}\n seed={seed}\n sketchColor={SKETCH_COLORS.accent}\n bowing={bowing}\n strokeWidth={(strokeWidth ?? 1.6) + 0.4}\n inset={0}\n />\n </span>\n );\n}\n\nexport const Checkbox = forwardRef<HTMLButtonElement, CheckboxProps>(\n function Checkbox(\n {\n className,\n style,\n label,\n roughness,\n seed,\n sketchColor,\n bowing,\n fillStyle,\n strokeWidth,\n checked,\n defaultChecked,\n onCheckedChange,\n id,\n animate,\n ...rest\n },\n ref,\n ) {\n const ink = sketchColor ?? SKETCH_COLORS.ink;\n const generatedId = useId();\n const inputId = id ?? generatedId;\n const boxRef = useRef<HTMLSpanElement>(null);\n const shouldAnimate = useAnimate(animate);\n useDrawIn(boxRef, DRAW_IN_DURATION_MS, shouldAnimate);\n\n return (\n <span\n className={cn(className)}\n style={{\n display: \"inline-flex\",\n alignItems: \"center\",\n gap: 8,\n cursor: \"pointer\",\n userSelect: \"none\",\n ...style,\n }}\n >\n <CheckboxPrimitive.Root\n ref={ref}\n id={inputId}\n checked={checked}\n defaultChecked={defaultChecked}\n onCheckedChange={onCheckedChange}\n style={{\n position: \"relative\",\n width: BOX,\n height: BOX,\n padding: 0,\n border: \"none\",\n background: \"transparent\",\n flexShrink: 0,\n cursor: \"pointer\",\n }}\n {...rest}\n >\n <span\n ref={boxRef}\n style={{ position: \"absolute\", inset: 0, pointerEvents: \"none\" }}\n >\n <RoughSvg\n shape=\"rectangle\"\n roughness={roughness}\n seed={seed}\n sketchColor={ink}\n bowing={bowing}\n fillStyle={fillStyle}\n strokeWidth={strokeWidth ?? 1.6}\n inset={1.5}\n />\n </span>\n <CheckboxPrimitive.Indicator\n style={{\n position: \"absolute\",\n inset: 0,\n display: \"block\",\n }}\n >\n <CheckMark\n roughness={roughness}\n seed={seed}\n bowing={bowing}\n strokeWidth={strokeWidth}\n shouldAnimate={shouldAnimate}\n />\n </CheckboxPrimitive.Indicator>\n </CheckboxPrimitive.Root>\n {label ? (\n <label\n htmlFor={inputId}\n style={{ fontSize: 15, cursor: \"pointer\", fontFamily: doodleUiFontFamily }}\n >\n {label}\n </label>\n ) : null}\n </span>\n );\n },\n);\n","\"use client\";\n\nimport {\n forwardRef,\n useId,\n useLayoutEffect,\n useRef,\n type ComponentPropsWithoutRef,\n type ReactNode,\n} from \"react\";\nimport * as RadioGroupPrimitive from \"@radix-ui/react-radio-group\";\nimport {\n DRAW_IN_DURATION_MS,\n DRAW_IN_MARK_MS,\n useAnimate,\n useDrawIn,\n} from \"../animations\";\nimport { RoughSvg } from \"../primitives/RoughSvg\";\nimport { SKETCH_COLORS, type SketchProps } from \"../types\";\nimport { cn, doodleUiFontFamily } from \"../utils\";\n\nexport interface RadioGroupProps\n extends ComponentPropsWithoutRef<typeof RadioGroupPrimitive.Root> {}\n\nexport const RadioGroup = forwardRef<HTMLDivElement, RadioGroupProps>(\n function RadioGroup({ className, style, children, ...rest }, ref) {\n return (\n <RadioGroupPrimitive.Root\n ref={ref}\n className={cn(className)}\n style={{\n display: \"flex\",\n flexDirection: \"column\",\n gap: 10,\n ...style,\n }}\n {...rest}\n >\n {children}\n </RadioGroupPrimitive.Root>\n );\n },\n);\n\nexport interface RadioProps\n extends Omit<\n ComponentPropsWithoutRef<typeof RadioGroupPrimitive.Item>,\n \"asChild\"\n >,\n SketchProps {\n label?: ReactNode;\n /**\n * Draw-in the ring on mount and scale/draw the dot on select.\n * Defaults to the DoodleUIProvider value (true).\n */\n animate?: boolean;\n}\n\nconst SIZE = 20;\n\nfunction RadioDot({\n roughness,\n seed,\n bowing,\n shouldAnimate,\n}: {\n roughness?: number;\n seed?: number;\n bowing?: number;\n shouldAnimate: boolean;\n}) {\n const ref = useRef<HTMLSpanElement>(null);\n useDrawIn(ref, DRAW_IN_MARK_MS, shouldAnimate);\n\n useLayoutEffect(() => {\n const node = ref.current;\n if (!node || !shouldAnimate) return;\n const animation = node.animate(\n [\n { transform: \"scale(0.35)\", opacity: 0 },\n { transform: \"scale(1)\", opacity: 1 },\n ],\n { duration: 180, easing: \"ease-out\", fill: \"forwards\" },\n );\n return () => animation.cancel();\n }, [shouldAnimate]);\n\n return (\n <span\n ref={ref}\n style={{\n position: \"absolute\",\n inset: 0,\n pointerEvents: \"none\",\n display: \"block\",\n }}\n >\n <RoughSvg\n shape=\"ellipse\"\n roughness={(roughness ?? 1.5) + 0.2}\n seed={seed}\n sketchColor={SKETCH_COLORS.accent}\n fill={SKETCH_COLORS.accent}\n fillStyle=\"solid\"\n bowing={bowing}\n strokeWidth={1}\n inset={6}\n />\n </span>\n );\n}\n\nexport const Radio = forwardRef<HTMLButtonElement, RadioProps>(function Radio(\n {\n className,\n style,\n label,\n roughness,\n seed,\n sketchColor,\n bowing,\n fillStyle,\n strokeWidth,\n id,\n animate,\n ...rest\n },\n ref,\n) {\n const ink = sketchColor ?? SKETCH_COLORS.ink;\n const generatedId = useId();\n const inputId = id ?? generatedId;\n const ringRef = useRef<HTMLSpanElement>(null);\n const shouldAnimate = useAnimate(animate);\n useDrawIn(ringRef, DRAW_IN_DURATION_MS, shouldAnimate);\n\n return (\n <span\n className={cn(className)}\n style={{\n display: \"inline-flex\",\n alignItems: \"center\",\n gap: 8,\n cursor: \"pointer\",\n userSelect: \"none\",\n ...style,\n }}\n >\n <RadioGroupPrimitive.Item\n ref={ref}\n id={inputId}\n style={{\n position: \"relative\",\n width: SIZE,\n height: SIZE,\n padding: 0,\n border: \"none\",\n background: \"transparent\",\n flexShrink: 0,\n cursor: \"pointer\",\n borderRadius: \"50%\",\n }}\n {...rest}\n >\n <span\n ref={ringRef}\n style={{ position: \"absolute\", inset: 0, pointerEvents: \"none\" }}\n >\n <RoughSvg\n shape=\"ellipse\"\n roughness={roughness}\n seed={seed}\n sketchColor={ink}\n bowing={bowing}\n fillStyle={fillStyle}\n strokeWidth={strokeWidth ?? 1.6}\n inset={1.5}\n />\n </span>\n <RadioGroupPrimitive.Indicator\n style={{\n position: \"absolute\",\n inset: 0,\n display: \"block\",\n }}\n >\n <RadioDot\n roughness={roughness}\n seed={seed}\n bowing={bowing}\n shouldAnimate={shouldAnimate}\n />\n </RadioGroupPrimitive.Indicator>\n </RadioGroupPrimitive.Item>\n {label ? (\n <label\n htmlFor={inputId}\n style={{ fontSize: 15, cursor: \"pointer\", fontFamily: doodleUiFontFamily }}\n >\n {label}\n </label>\n ) : null}\n </span>\n );\n});\n","\"use client\";\n\nimport { forwardRef, type HTMLAttributes, type ReactNode } from \"react\";\nimport { SketchBox, type SketchBoxProps } from \"../primitives/SketchBox\";\nimport { SKETCH_COLORS, type SketchProps } from \"../types\";\nimport { cn, doodleUiFontWeight } from \"../utils\";\n\nexport interface CardProps\n extends Omit<HTMLAttributes<HTMLDivElement>, \"color\" | \"title\">,\n SketchProps {\n shadow?: boolean;\n fill?: string;\n title?: ReactNode;\n footer?: ReactNode;\n /**\n * Draw-in the border on mount. Defaults to the DoodleUIProvider value (true).\n */\n animate?: boolean;\n}\n\nexport const Card = forwardRef<HTMLDivElement, CardProps>(function Card(\n {\n children,\n className,\n style,\n shadow = true,\n fill,\n title,\n footer,\n roughness,\n seed,\n sketchColor,\n bowing,\n fillStyle,\n strokeWidth,\n animate,\n ...rest\n },\n ref,\n) {\n const boxProps: SketchBoxProps = {\n shadow,\n fill,\n roughness,\n seed,\n sketchColor: sketchColor ?? SKETCH_COLORS.ink,\n bowing,\n fillStyle,\n strokeWidth,\n animate,\n };\n\n return (\n <SketchBox\n ref={ref}\n className={cn(className)}\n style={style}\n contentStyle={{ padding: \"16px 18px\" }}\n {...boxProps}\n {...rest}\n >\n {title ? (\n <div\n style={{\n fontWeight: doodleUiFontWeight(700),\n fontSize: 16,\n marginBottom: 10,\n }}\n >\n {title}\n </div>\n ) : null}\n {children}\n {footer ? (\n <div style={{ marginTop: 14, fontSize: 13, opacity: 0.8 }}>\n {footer}\n </div>\n ) : null}\n </SketchBox>\n );\n});\n","\"use client\";\n\nimport { forwardRef, type HTMLAttributes } from \"react\";\nimport { SketchBox } from \"../primitives/SketchBox\";\nimport { SKETCH_COLORS, type SketchProps } from \"../types\";\nimport { cn, doodleUiFontWeight } from \"../utils\";\n\nexport type BadgeVariant = \"default\" | \"accent\" | \"outline\";\n\nexport interface BadgeProps\n extends Omit<HTMLAttributes<HTMLSpanElement>, \"color\">,\n SketchProps {\n variant?: BadgeVariant;\n /**\n * Draw-in the border on mount. Defaults to the DoodleUIProvider value (true).\n */\n animate?: boolean;\n}\n\nexport const Badge = forwardRef<HTMLSpanElement, BadgeProps>(function Badge(\n {\n children,\n className,\n style,\n variant = \"default\",\n roughness,\n seed,\n sketchColor,\n bowing,\n fillStyle,\n strokeWidth,\n animate,\n ...rest\n },\n ref,\n) {\n const ink =\n variant === \"accent\"\n ? sketchColor ?? SKETCH_COLORS.accent\n : sketchColor ?? SKETCH_COLORS.ink;\n\n const fill =\n variant === \"accent\"\n ? SKETCH_COLORS.accentFill\n : variant === \"outline\"\n ? undefined\n : SKETCH_COLORS.secondaryFill;\n\n return (\n <SketchBox\n className={cn(className)}\n style={{\n display: \"inline-flex\",\n verticalAlign: \"middle\",\n ...style,\n }}\n contentStyle={{\n padding: \"2px 10px\",\n fontSize: 12,\n fontWeight: doodleUiFontWeight(650),\n lineHeight: 1.4,\n letterSpacing: \"0.01em\",\n }}\n fill={fill}\n fillStyle={fillStyle ?? \"hachure\"}\n roughness={roughness}\n seed={seed}\n sketchColor={ink}\n bowing={bowing}\n strokeWidth={strokeWidth ?? 1.4}\n animate={animate}\n {...rest}\n >\n <span ref={ref}>{children}</span>\n </SketchBox>\n );\n});\n","\"use client\";\n\nimport { forwardRef, type HTMLAttributes, type ReactNode } from \"react\";\nimport { DRAW_IN_ALERT_MS } from \"../animations\";\nimport { SketchBox } from \"../primitives/SketchBox\";\nimport { SKETCH_COLORS, type SketchProps } from \"../types\";\nimport { cn, doodleUiFontWeight } from \"../utils\";\n\nexport type AlertVariant = \"info\" | \"warning\" | \"error\" | \"success\";\n\nexport interface AlertProps\n extends Omit<HTMLAttributes<HTMLDivElement>, \"color\" | \"title\">,\n SketchProps {\n variant?: AlertVariant;\n title?: ReactNode;\n /**\n * Draw-in the border on mount (~200ms). Defaults to the DoodleUIProvider value (true).\n */\n animate?: boolean;\n}\n\nconst VARIANT_COLOR: Record<AlertVariant, string> = {\n info: SKETCH_COLORS.info,\n warning: SKETCH_COLORS.warning,\n error: SKETCH_COLORS.error,\n success: SKETCH_COLORS.success,\n};\n\nconst VARIANT_FILL: Record<AlertVariant, string> = {\n info: \"#d2deec\",\n warning: \"#f3e2c0\",\n error: \"#f3d0cc\",\n success: \"#d3e8dc\",\n};\n\nexport const Alert = forwardRef<HTMLDivElement, AlertProps>(function Alert(\n {\n children,\n className,\n style,\n variant = \"info\",\n title,\n roughness,\n seed,\n sketchColor,\n bowing,\n fillStyle,\n strokeWidth,\n role = \"status\",\n animate,\n ...rest\n },\n ref,\n) {\n const color = sketchColor ?? VARIANT_COLOR[variant];\n\n return (\n <SketchBox\n ref={ref}\n role={role}\n className={cn(className)}\n style={{ color, ...style }}\n contentStyle={{ padding: \"12px 16px\" }}\n roughness={roughness}\n seed={seed}\n sketchColor={color}\n bowing={bowing}\n fillStyle={fillStyle ?? \"hachure\"}\n fill={VARIANT_FILL[variant]}\n strokeWidth={strokeWidth}\n animate={animate}\n drawInDuration={DRAW_IN_ALERT_MS}\n {...rest}\n >\n {title ? (\n <div\n style={{\n fontWeight: doodleUiFontWeight(700),\n marginBottom: 4,\n fontSize: 15,\n }}\n >\n {title}\n </div>\n ) : null}\n <div style={{ fontSize: 14, lineHeight: 1.5, color: SKETCH_COLORS.ink }}>\n {children}\n </div>\n </SketchBox>\n );\n});\n","\"use client\";\n\nimport { useState, type ReactNode } from \"react\";\nimport * as Dialog from \"@radix-ui/react-dialog\";\nimport { AnimatePresence, motion } from \"framer-motion\";\nimport { useAnimate } from \"../animations\";\nimport { SketchBox } from \"../primitives/SketchBox\";\nimport { SKETCH_COLORS, type SketchProps } from \"../types\";\nimport { cn, doodleUiFontFamily, doodleUiFontWeight } from \"../utils\";\nimport { Button } from \"./Button\";\n\nexport interface ModalProps extends SketchProps {\n open?: boolean;\n defaultOpen?: boolean;\n onOpenChange?: (open: boolean) => void;\n trigger?: ReactNode;\n title?: ReactNode;\n description?: ReactNode;\n children?: ReactNode;\n className?: string;\n /**\n * Backdrop fade, panel enter/exit, and border draw-in on open.\n * Defaults to the DoodleUIProvider value (true).\n */\n animate?: boolean;\n}\n\nexport function Modal({\n open,\n defaultOpen,\n onOpenChange,\n trigger,\n title,\n description,\n children,\n className,\n roughness,\n seed,\n sketchColor,\n bowing,\n fillStyle,\n strokeWidth,\n animate,\n}: ModalProps) {\n const ink = sketchColor ?? SKETCH_COLORS.ink;\n const [uncontrolled, setUncontrolled] = useState(defaultOpen === true);\n const isOpen = open ?? uncontrolled;\n const shouldAnimate = useAnimate(animate);\n\n function handleOpenChange(next: boolean) {\n setUncontrolled(next);\n onOpenChange?.(next);\n }\n\n return (\n <Dialog.Root open={isOpen} onOpenChange={handleOpenChange}>\n {trigger ? <Dialog.Trigger asChild>{trigger}</Dialog.Trigger> : null}\n <AnimatePresence>\n {isOpen ? (\n <Dialog.Portal forceMount>\n <Dialog.Overlay asChild forceMount>\n <motion.div\n initial={shouldAnimate ? { opacity: 0 } : false}\n animate={{ opacity: 1 }}\n exit={shouldAnimate ? { opacity: 0 } : undefined}\n transition={\n shouldAnimate\n ? { duration: 0.2, ease: \"easeOut\" }\n : { duration: 0 }\n }\n style={{\n position: \"fixed\",\n inset: 0,\n background: \"rgba(31, 29, 26, 0.38)\",\n zIndex: 70,\n }}\n />\n </Dialog.Overlay>\n <div\n style={{\n position: \"fixed\",\n inset: 0,\n zIndex: 80,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n pointerEvents: \"none\",\n padding: 16,\n }}\n >\n <Dialog.Content asChild forceMount>\n <motion.div\n className={cn(className)}\n initial={\n shouldAnimate\n ? { opacity: 0, scale: 0.96, y: 10 }\n : false\n }\n animate={{ opacity: 1, scale: 1, y: 0 }}\n exit={\n shouldAnimate\n ? { opacity: 0, scale: 0.96, y: 8 }\n : undefined\n }\n transition={\n shouldAnimate\n ? { duration: 0.22, ease: \"easeOut\" }\n : { duration: 0 }\n }\n style={{\n width: \"min(480px, calc(100vw - 32px))\",\n outline: \"none\",\n pointerEvents: \"auto\",\n }}\n >\n <SketchBox\n roughness={roughness}\n seed={seed}\n sketchColor={ink}\n bowing={bowing}\n fillStyle={fillStyle ?? \"solid\"}\n fill=\"#f7f6f2\"\n strokeWidth={strokeWidth ?? 2}\n shadow\n animate={animate}\n contentStyle={{ padding: \"20px 22px 18px\" }}\n >\n <div\n style={{\n display: \"flex\",\n alignItems: \"flex-start\",\n justifyContent: \"space-between\",\n gap: 12,\n marginBottom: title ? 10 : 0,\n }}\n >\n {title ? (\n <Dialog.Title\n style={{\n margin: 0,\n fontSize: 18,\n fontWeight: doodleUiFontWeight(700),\n fontFamily: doodleUiFontFamily,\n color: ink,\n }}\n >\n {title}\n </Dialog.Title>\n ) : (\n <Dialog.Title\n style={{\n position: \"absolute\",\n width: 1,\n height: 1,\n overflow: \"hidden\",\n clip: \"rect(0 0 0 0)\",\n }}\n >\n Dialog\n </Dialog.Title>\n )}\n <Dialog.Close asChild>\n <Button\n variant=\"ghost\"\n size=\"sm\"\n roughness={roughness}\n seed={seed}\n sketchColor={ink}\n animate={animate}\n aria-label=\"Close\"\n >\n Close\n </Button>\n </Dialog.Close>\n </div>\n {description ? (\n <Dialog.Description\n style={{\n margin: \"0 0 14px\",\n fontSize: 14,\n lineHeight: 1.5,\n color: ink,\n opacity: 0.8,\n }}\n >\n {description}\n </Dialog.Description>\n ) : null}\n <div>{children}</div>\n </SketchBox>\n </motion.div>\n </Dialog.Content>\n </div>\n </Dialog.Portal>\n ) : null}\n </AnimatePresence>\n </Dialog.Root>\n );\n}\n\nexport const ModalRoot = Dialog.Root;\nexport const ModalTrigger = Dialog.Trigger;\nexport const ModalClose = Dialog.Close;\nexport const ModalTitle = Dialog.Title;\nexport const ModalDescription = Dialog.Description;\n","\"use client\";\n\nimport {\n forwardRef,\n useRef,\n type HTMLAttributes,\n type MutableRefObject,\n} from \"react\";\nimport {\n DRAW_IN_DURATION_MS,\n useAnimate,\n useDrawIn,\n} from \"../animations\";\nimport { RoughSvg } from \"../primitives/RoughSvg\";\nimport { SKETCH_COLORS, type SketchProps } from \"../types\";\nimport { assignRef, cn } from \"../utils\";\n\nexport type DividerOrientation = \"horizontal\" | \"vertical\";\n\nexport interface DividerProps\n extends Omit<HTMLAttributes<HTMLDivElement>, \"color\">,\n SketchProps {\n orientation?: DividerOrientation;\n /**\n * Draw-in so the line extends across its length. Defaults to the\n * DoodleUIProvider value (true).\n */\n animate?: boolean;\n}\n\nexport const Divider = forwardRef<HTMLDivElement, DividerProps>(\n function Divider(\n {\n className,\n style,\n orientation = \"horizontal\",\n roughness,\n seed,\n sketchColor,\n bowing,\n strokeWidth,\n animate,\n ...rest\n },\n ref,\n ) {\n const rootRef = useRef<HTMLDivElement>(null);\n const shouldAnimate = useAnimate(animate);\n const horizontal = orientation === \"horizontal\";\n useDrawIn(rootRef, DRAW_IN_DURATION_MS, shouldAnimate);\n\n return (\n <div\n ref={(node) => {\n (rootRef as MutableRefObject<HTMLDivElement | null>).current = node;\n assignRef(ref, node);\n }}\n role=\"separator\"\n aria-orientation={orientation}\n className={cn(className)}\n style={{\n position: \"relative\",\n width: horizontal ? \"100%\" : 12,\n height: horizontal ? 12 : \"100%\",\n minHeight: horizontal ? 12 : 48,\n ...style,\n }}\n {...rest}\n >\n <RoughSvg\n shape={horizontal ? \"line\" : \"line-vertical\"}\n roughness={roughness ?? 1.8}\n seed={seed}\n sketchColor={sketchColor ?? SKETCH_COLORS.ink}\n bowing={bowing ?? 2}\n strokeWidth={strokeWidth ?? 1.5}\n inset={4}\n />\n </div>\n );\n },\n);\n","\"use client\";\n\nimport {\n forwardRef,\n useRef,\n type HTMLAttributes,\n type MutableRefObject,\n} from \"react\";\nimport {\n DRAW_IN_DURATION_MS,\n useAnimate,\n useDrawIn,\n useTweenNumber,\n} from \"../animations\";\nimport { useResolvedSeed } from \"../hooks/useResolvedSeed\";\nimport { RoughSvg } from \"../primitives/RoughSvg\";\nimport { SKETCH_COLORS, type SketchProps } from \"../types\";\nimport { assignRef, cn, deriveSeed } from \"../utils\";\n\nexport interface ProgressProps\n extends Omit<HTMLAttributes<HTMLDivElement>, \"color\">,\n SketchProps {\n value?: number;\n max?: number;\n /**\n * Draw-in the track on mount and redraw the fill as value changes.\n * Defaults to the DoodleUIProvider value (true).\n */\n animate?: boolean;\n}\n\nexport const Progress = forwardRef<HTMLDivElement, ProgressProps>(\n function Progress(\n {\n className,\n style,\n value = 0,\n max = 100,\n roughness,\n seed,\n sketchColor,\n bowing,\n fillStyle,\n strokeWidth,\n animate,\n ...rest\n },\n ref,\n ) {\n const rootRef = useRef<HTMLDivElement>(null);\n const trackRef = useRef<HTMLSpanElement>(null);\n const ink = sketchColor ?? SKETCH_COLORS.accent;\n const clamped = Math.min(max, Math.max(0, value));\n const percent = max === 0 ? 0 : (clamped / max) * 100;\n const shouldAnimate = useAnimate(animate);\n const displayed = useTweenNumber(percent, shouldAnimate, 420);\n const resolvedSeed = useResolvedSeed(seed);\n const fillSeed = shouldAnimate\n ? deriveSeed(resolvedSeed, `fill-${Math.round(displayed / 6)}`)\n : resolvedSeed;\n const fillRoughness =\n (roughness ?? 1.5) + 0.4 + (displayed / 100) * 0.7;\n\n useDrawIn(trackRef, DRAW_IN_DURATION_MS, shouldAnimate);\n\n return (\n <div\n ref={(node) => {\n (rootRef as MutableRefObject<HTMLDivElement | null>).current = node;\n assignRef(ref, node);\n }}\n role=\"progressbar\"\n aria-valuemin={0}\n aria-valuemax={max}\n aria-valuenow={clamped}\n className={cn(className)}\n style={{\n position: \"relative\",\n width: \"100%\",\n height: 18,\n ...style,\n }}\n {...rest}\n >\n <span\n ref={trackRef}\n style={{ position: \"absolute\", inset: 0, pointerEvents: \"none\" }}\n >\n <RoughSvg\n shape=\"rectangle\"\n roughness={roughness}\n seed={resolvedSeed}\n sketchColor={SKETCH_COLORS.ink}\n bowing={bowing}\n strokeWidth={strokeWidth ?? 1.5}\n inset={2}\n />\n </span>\n {displayed > 0 ? (\n <div\n style={{\n position: \"absolute\",\n left: 5,\n top: 4,\n bottom: 4,\n width: `calc(${displayed}% - 10px)`,\n minWidth: displayed > 0 ? 8 : 0,\n overflow: \"hidden\",\n }}\n >\n <RoughSvg\n shape=\"rectangle\"\n roughness={fillRoughness}\n seed={fillSeed}\n sketchColor={ink}\n fill={ink}\n fillStyle={fillStyle ?? \"hachure\"}\n bowing={bowing}\n strokeWidth={1.1}\n inset={1}\n />\n </div>\n ) : null}\n </div>\n );\n },\n);\n","\"use client\";\n\nimport type { ComponentPropsWithoutRef, ReactNode } from \"react\";\nimport * as TooltipPrimitive from \"@radix-ui/react-tooltip\";\nimport { DRAW_IN_TOOLTIP_MS } from \"../animations\";\nimport { SketchBox } from \"../primitives/SketchBox\";\nimport { SKETCH_COLORS, type SketchProps } from \"../types\";\nimport { cn, doodleUiFontFamily } from \"../utils\";\n\nexport const TooltipProvider = TooltipPrimitive.Provider;\n\nexport interface TooltipProps extends SketchProps {\n content: ReactNode;\n children: ReactNode;\n side?: ComponentPropsWithoutRef<typeof TooltipPrimitive.Content>[\"side\"];\n delayDuration?: number;\n className?: string;\n /**\n * Quick draw-in when the bubble shows (~180ms). Defaults to the\n * DoodleUIProvider value (true).\n */\n animate?: boolean;\n}\n\nexport function Tooltip({\n content,\n children,\n side = \"top\",\n delayDuration = 200,\n className,\n roughness,\n seed,\n sketchColor,\n bowing,\n fillStyle,\n strokeWidth,\n animate,\n}: TooltipProps) {\n const ink = sketchColor ?? SKETCH_COLORS.ink;\n\n return (\n <TooltipPrimitive.Root delayDuration={delayDuration}>\n <TooltipPrimitive.Trigger asChild>{children}</TooltipPrimitive.Trigger>\n <TooltipPrimitive.Portal>\n <TooltipPrimitive.Content\n side={side}\n sideOffset={8}\n className={cn(className)}\n style={{ zIndex: 60, outline: \"none\" }}\n >\n <SketchBox\n roughness={roughness ?? 1.3}\n seed={seed}\n sketchColor={ink}\n bowing={bowing}\n fillStyle={fillStyle ?? \"solid\"}\n fill=\"#f7f6f2\"\n strokeWidth={strokeWidth ?? 1.4}\n animate={animate}\n drawInDuration={DRAW_IN_TOOLTIP_MS}\n contentStyle={{\n padding: \"6px 10px\",\n fontSize: 13,\n lineHeight: 1.35,\n fontFamily: doodleUiFontFamily,\n color: ink,\n maxWidth: 240,\n }}\n >\n {content}\n </SketchBox>\n </TooltipPrimitive.Content>\n </TooltipPrimitive.Portal>\n </TooltipPrimitive.Root>\n );\n}\n","\"use client\";\n\nimport {\n createContext,\n forwardRef,\n useContext,\n useRef,\n useState,\n type CSSProperties,\n type MutableRefObject,\n type ReactNode,\n} from \"react\";\nimport * as SelectPrimitive from \"@radix-ui/react-select\";\nimport {\n DRAW_IN_DURATION_MS,\n useAnimate,\n useDrawIn,\n} from \"../animations\";\nimport { useResolvedSeed } from \"../hooks/useResolvedSeed\";\nimport { RoughSvg } from \"../primitives/RoughSvg\";\nimport { SketchBox } from \"../primitives/SketchBox\";\nimport { SKETCH_COLORS, type SketchProps } from \"../types\";\nimport { assignRef, cn, doodleUiFontFamily, doodleUiFontWeight } from \"../utils\";\n\nconst CHEVRON_PATH = \"M 4 6 L 10 12 L 16 6\";\nconst UNDERLINE_INSET = 4;\n\nexport interface SelectOption {\n value: string;\n label: ReactNode;\n disabled?: boolean;\n}\n\ninterface SelectSketchContextValue extends SketchProps {\n resolvedSeed: number;\n ink: string;\n selectedValue?: string;\n selectedLabel?: ReactNode;\n placeholder?: string;\n animate?: boolean;\n}\n\nconst SelectSketchContext = createContext<SelectSketchContextValue | null>(\n null,\n);\n\nfunction useSelectSketch(): SelectSketchContextValue {\n const ctx = useContext(SelectSketchContext);\n if (!ctx) {\n throw new Error(\"Select parts must be used inside <Select>.\");\n }\n return ctx;\n}\n\nexport interface SelectProps\n extends Omit<SelectPrimitive.SelectProps, \"children\">,\n SketchProps {\n options: SelectOption[];\n placeholder?: string;\n className?: string;\n style?: CSSProperties;\n \"aria-label\"?: string;\n /**\n * Draw-in the trigger on mount and the popover border on open.\n * Defaults to the DoodleUIProvider value (true).\n */\n animate?: boolean;\n}\n\nexport function Select({\n options,\n placeholder = \"Select…\",\n className,\n style,\n roughness,\n seed,\n sketchColor,\n bowing,\n fillStyle,\n strokeWidth,\n value,\n defaultValue,\n onValueChange,\n animate,\n \"aria-label\": ariaLabel,\n ...rest\n}: SelectProps) {\n const [uncontrolled, setUncontrolled] = useState(defaultValue);\n const selectedValue = value ?? uncontrolled;\n const selectedLabel = options.find((option) => option.value === selectedValue)\n ?.label;\n const resolvedSeed = useResolvedSeed(seed);\n const ink = sketchColor ?? SKETCH_COLORS.ink;\n\n return (\n <SelectSketchContext.Provider\n value={{\n roughness,\n seed: resolvedSeed,\n sketchColor,\n bowing,\n fillStyle,\n strokeWidth,\n resolvedSeed,\n ink,\n selectedValue,\n selectedLabel,\n placeholder,\n animate,\n }}\n >\n <SelectPrimitive.Root\n value={value}\n defaultValue={defaultValue}\n onValueChange={(next) => {\n setUncontrolled(next);\n onValueChange?.(next);\n }}\n {...rest}\n >\n <SelectTrigger\n className={className}\n style={style}\n placeholder={placeholder}\n aria-label={ariaLabel}\n />\n <SelectContent>\n {options.map((option) => (\n <SelectItem\n key={option.value}\n value={option.value}\n disabled={option.disabled}\n >\n {option.label}\n </SelectItem>\n ))}\n </SelectContent>\n </SelectPrimitive.Root>\n </SelectSketchContext.Provider>\n );\n}\n\nexport interface SelectTriggerProps\n extends Omit<SelectPrimitive.SelectTriggerProps, \"asChild\"> {\n placeholder?: string;\n}\n\nexport const SelectTrigger = forwardRef<HTMLButtonElement, SelectTriggerProps>(\n function SelectTrigger(\n { className, style, placeholder, children, ...rest },\n ref,\n ) {\n const sketch = useSelectSketch();\n const [openish, setOpenish] = useState(false);\n const rootRef = useRef<HTMLButtonElement>(null);\n const shouldAnimate = useAnimate(sketch.animate);\n useDrawIn(rootRef, DRAW_IN_DURATION_MS, shouldAnimate);\n\n return (\n <SelectPrimitive.Trigger\n ref={(node) => {\n (rootRef as MutableRefObject<HTMLButtonElement | null>).current =\n node;\n assignRef(ref, node);\n }}\n className={cn(className)}\n onPointerDown={() => setOpenish(true)}\n onBlur={() => setOpenish(false)}\n style={{\n position: \"relative\",\n display: \"inline-flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n gap: 12,\n minWidth: 180,\n minHeight: 38,\n padding: \"8px 12px\",\n border: \"none\",\n background: \"transparent\",\n cursor: \"pointer\",\n color: sketch.ink,\n fontFamily: doodleUiFontFamily,\n fontSize: 15,\n lineHeight: 1.2,\n outline: \"none\",\n textAlign: \"left\",\n ...style,\n }}\n {...rest}\n >\n <RoughSvg\n shape=\"rectangle\"\n roughness={sketch.roughness}\n seed={sketch.resolvedSeed}\n sketchColor={openish ? SKETCH_COLORS.accent : sketch.ink}\n bowing={sketch.bowing}\n fillStyle={sketch.fillStyle}\n strokeWidth={\n openish\n ? (sketch.strokeWidth ?? 1.75) + 0.35\n : sketch.strokeWidth\n }\n />\n <span\n style={{\n position: \"relative\",\n zIndex: 1,\n flex: 1,\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n whiteSpace: \"nowrap\",\n }}\n >\n {children ?? sketch.selectedLabel ?? placeholder}\n </span>\n <SelectPrimitive.Icon\n style={{\n position: \"relative\",\n zIndex: 1,\n width: 18,\n height: 18,\n flexShrink: 0,\n }}\n >\n <RoughSvg\n shape=\"path\"\n path={CHEVRON_PATH}\n roughness={(sketch.roughness ?? 1.5) * 0.7}\n seed={sketch.resolvedSeed}\n sketchColor={sketch.ink}\n bowing={sketch.bowing}\n strokeWidth={(sketch.strokeWidth ?? 1.6) + 0.2}\n inset={0}\n />\n </SelectPrimitive.Icon>\n </SelectPrimitive.Trigger>\n );\n },\n);\n\nexport interface SelectContentProps\n extends Omit<SelectPrimitive.SelectContentProps, \"asChild\" | \"position\"> {\n children?: ReactNode;\n}\n\nexport const SelectContent = forwardRef<HTMLDivElement, SelectContentProps>(\n function SelectContent({ className, style, children, ...rest }, ref) {\n const sketch = useSelectSketch();\n\n return (\n <SelectPrimitive.Portal>\n <SelectPrimitive.Content\n ref={ref}\n position=\"popper\"\n sideOffset={6}\n className={cn(className)}\n style={{\n zIndex: 80,\n outline: \"none\",\n minWidth: \"var(--radix-select-trigger-width)\",\n ...style,\n }}\n {...rest}\n >\n <SketchBox\n roughness={sketch.roughness}\n seed={sketch.resolvedSeed}\n sketchColor={sketch.ink}\n bowing={sketch.bowing}\n fillStyle={sketch.fillStyle ?? \"solid\"}\n fill=\"#f7f6f2\"\n strokeWidth={sketch.strokeWidth ?? 1.5}\n animate={sketch.animate}\n contentStyle={{ padding: \"6px 4px\" }}\n >\n <SelectPrimitive.Viewport>{children}</SelectPrimitive.Viewport>\n </SketchBox>\n </SelectPrimitive.Content>\n </SelectPrimitive.Portal>\n );\n },\n);\n\nexport interface SelectItemProps\n extends Omit<SelectPrimitive.SelectItemProps, \"asChild\"> {\n children?: ReactNode;\n}\n\nexport const SelectItem = forwardRef<HTMLDivElement, SelectItemProps>(\n function SelectItem({ className, style, children, value, ...rest }, ref) {\n const sketch = useSelectSketch();\n const [highlighted, setHighlighted] = useState(false);\n const selected = sketch.selectedValue === value;\n const mark = highlighted || selected;\n\n return (\n <SelectPrimitive.Item\n ref={ref}\n value={value}\n className={cn(className)}\n onPointerMove={() => setHighlighted(true)}\n onPointerLeave={() => setHighlighted(false)}\n onFocus={() => setHighlighted(true)}\n onBlur={() => setHighlighted(false)}\n style={{\n position: \"relative\",\n display: \"flex\",\n alignItems: \"center\",\n padding: \"7px 12px\",\n fontFamily: doodleUiFontFamily,\n fontSize: 14,\n color: sketch.ink,\n outline: \"none\",\n cursor: \"pointer\",\n userSelect: \"none\",\n fontWeight: selected\n ? doodleUiFontWeight(650)\n : doodleUiFontWeight(400),\n ...style,\n }}\n {...rest}\n >\n {mark ? (\n <RoughSvg\n shape=\"line\"\n roughness={(sketch.roughness ?? 1.5) + 0.4}\n seed={sketch.resolvedSeed}\n sketchColor={\n selected ? SKETCH_COLORS.accent : sketch.ink\n }\n bowing={sketch.bowing ?? 1.6}\n strokeWidth={selected ? 1.8 : 1.3}\n inset={UNDERLINE_INSET}\n style={{ opacity: selected ? 0.9 : 0.45 }}\n />\n ) : null}\n <SelectPrimitive.ItemText\n style={{ position: \"relative\", zIndex: 1 }}\n >\n {children}\n </SelectPrimitive.ItemText>\n </SelectPrimitive.Item>\n );\n },\n);\n\nexport const SelectRoot = SelectPrimitive.Root;\nexport const SelectValue = SelectPrimitive.Value;\nexport const SelectGroup = SelectPrimitive.Group;\nexport const SelectLabel = SelectPrimitive.Label;\nexport const SelectSeparator = SelectPrimitive.Separator;\n","\"use client\";\n\nimport { forwardRef, useRef, useState, type ReactNode } from \"react\";\nimport * as SwitchPrimitive from \"@radix-ui/react-switch\";\nimport { motion } from \"framer-motion\";\nimport {\n DRAW_IN_DURATION_MS,\n useAnimate,\n useDrawIn,\n} from \"../animations\";\nimport { useResolvedSeed } from \"../hooks/useResolvedSeed\";\nimport { RoughSvg } from \"../primitives/RoughSvg\";\nimport { SKETCH_COLORS, type SketchProps } from \"../types\";\nimport { cn, deriveSeed, doodleUiFontFamily } from \"../utils\";\n\nconst TRACK_W = 44;\nconst TRACK_H = 24;\nconst THUMB = 18;\nconst THUMB_OFF = 3;\nconst THUMB_ON = TRACK_W - THUMB - 3;\n\nexport interface SwitchProps\n extends Omit<SwitchPrimitive.SwitchProps, \"asChild\">,\n SketchProps {\n label?: ReactNode;\n /**\n * Slide the thumb and seed-morph the track on toggle.\n * Defaults to the DoodleUIProvider value (true).\n */\n animate?: boolean;\n}\n\nexport const Switch = forwardRef<HTMLButtonElement, SwitchProps>(\n function Switch(\n {\n className,\n style,\n label,\n roughness,\n seed,\n sketchColor,\n bowing,\n fillStyle,\n strokeWidth,\n checked,\n defaultChecked,\n onCheckedChange,\n id,\n animate,\n ...rest\n },\n ref,\n ) {\n const [uncontrolled, setUncontrolled] = useState(defaultChecked === true);\n const isOn = checked ?? uncontrolled;\n const ink = sketchColor ?? SKETCH_COLORS.ink;\n const resolvedSeed = useResolvedSeed(seed);\n const shouldAnimate = useAnimate(animate);\n const trackRef = useRef<HTMLSpanElement>(null);\n const trackSeed = shouldAnimate\n ? deriveSeed(resolvedSeed, isOn ? \"on\" : \"off\")\n : resolvedSeed;\n\n useDrawIn(trackRef, DRAW_IN_DURATION_MS, shouldAnimate, trackSeed);\n\n return (\n <span\n className={cn(className)}\n style={{\n display: \"inline-flex\",\n alignItems: \"center\",\n gap: 8,\n cursor: \"pointer\",\n userSelect: \"none\",\n ...style,\n }}\n >\n <SwitchPrimitive.Root\n ref={ref}\n id={id}\n checked={checked}\n defaultChecked={defaultChecked}\n onCheckedChange={(next) => {\n setUncontrolled(next);\n onCheckedChange?.(next);\n }}\n style={{\n position: \"relative\",\n width: TRACK_W,\n height: TRACK_H,\n padding: 0,\n border: \"none\",\n background: \"transparent\",\n flexShrink: 0,\n cursor: \"pointer\",\n outline: \"none\",\n }}\n {...rest}\n >\n <span\n ref={trackRef}\n style={{ position: \"absolute\", inset: 0, pointerEvents: \"none\" }}\n >\n <RoughSvg\n shape=\"rectangle\"\n roughness={roughness}\n seed={trackSeed}\n sketchColor={isOn ? SKETCH_COLORS.accent : ink}\n bowing={bowing ?? 1.4}\n fillStyle={fillStyle ?? (isOn ? \"hachure\" : undefined)}\n fill={isOn ? SKETCH_COLORS.accentFill : undefined}\n strokeWidth={strokeWidth ?? 1.6}\n inset={1.5}\n />\n </span>\n <SwitchPrimitive.Thumb asChild>\n <motion.span\n initial={false}\n animate={{ x: isOn ? THUMB_ON : THUMB_OFF }}\n transition={\n shouldAnimate\n ? { type: \"spring\", stiffness: 420, damping: 30 }\n : { duration: 0 }\n }\n style={{\n position: \"absolute\",\n top: (TRACK_H - THUMB) / 2,\n left: 0,\n width: THUMB,\n height: THUMB,\n display: \"block\",\n zIndex: 1,\n }}\n >\n <RoughSvg\n shape=\"ellipse\"\n roughness={(roughness ?? 1.5) * 0.85}\n seed={deriveSeed(resolvedSeed, \"thumb\")}\n sketchColor={isOn ? SKETCH_COLORS.accent : ink}\n fill=\"#f7f6f2\"\n fillStyle=\"solid\"\n bowing={bowing}\n strokeWidth={(strokeWidth ?? 1.5) + 0.2}\n inset={1}\n />\n </motion.span>\n </SwitchPrimitive.Thumb>\n </SwitchPrimitive.Root>\n {label ? (\n <label\n htmlFor={id}\n style={{\n fontSize: 15,\n cursor: \"pointer\",\n fontFamily: doodleUiFontFamily,\n }}\n >\n {label}\n </label>\n ) : null}\n </span>\n );\n },\n);\n","\"use client\";\n\nimport {\n createContext,\n forwardRef,\n useContext,\n useLayoutEffect,\n useRef,\n useState,\n type ComponentPropsWithoutRef,\n type MutableRefObject,\n type ReactNode,\n} from \"react\";\nimport * as TabsPrimitive from \"@radix-ui/react-tabs\";\nimport {\n DRAW_IN_MARK_MS,\n useAnimate,\n useDrawIn,\n} from \"../animations\";\nimport { useResolvedSeed } from \"../hooks/useResolvedSeed\";\nimport { RoughSvg } from \"../primitives/RoughSvg\";\nimport { SKETCH_COLORS, type SketchProps } from \"../types\";\nimport { assignRef, cn, deriveSeed, doodleUiFontFamily, doodleUiFontWeight } from \"../utils\";\n\ninterface TabsSketchContextValue extends SketchProps {\n resolvedSeed: number;\n ink: string;\n current: string | undefined;\n shouldAnimate: boolean;\n}\n\nconst TabsSketchContext = createContext<TabsSketchContextValue | null>(null);\n\nfunction useTabsSketch(): TabsSketchContextValue {\n const ctx = useContext(TabsSketchContext);\n if (!ctx) {\n throw new Error(\"Tab parts must be used inside <Tabs>.\");\n }\n return ctx;\n}\n\nexport interface TabsProps\n extends Omit<ComponentPropsWithoutRef<typeof TabsPrimitive.Root>, \"asChild\">,\n SketchProps {\n /**\n * Draw-in the active underline and slide it on tab change.\n * Defaults to the DoodleUIProvider value (true).\n */\n animate?: boolean;\n}\n\nexport const Tabs = forwardRef<HTMLDivElement, TabsProps>(function Tabs(\n {\n className,\n style,\n children,\n value,\n defaultValue,\n onValueChange,\n roughness,\n seed,\n sketchColor,\n bowing,\n fillStyle,\n strokeWidth,\n animate,\n ...rest\n },\n ref,\n) {\n const [uncontrolled, setUncontrolled] = useState(defaultValue);\n const current = value ?? uncontrolled;\n const resolvedSeed = useResolvedSeed(seed);\n const ink = sketchColor ?? SKETCH_COLORS.ink;\n const shouldAnimate = useAnimate(animate);\n\n return (\n <TabsSketchContext.Provider\n value={{\n roughness,\n seed: resolvedSeed,\n sketchColor,\n bowing,\n fillStyle,\n strokeWidth,\n resolvedSeed,\n ink,\n current,\n shouldAnimate,\n }}\n >\n <TabsPrimitive.Root\n ref={ref}\n className={cn(className)}\n style={style}\n value={current}\n defaultValue={defaultValue}\n onValueChange={(next) => {\n setUncontrolled(next);\n onValueChange?.(next);\n }}\n {...rest}\n >\n {children}\n </TabsPrimitive.Root>\n </TabsSketchContext.Provider>\n );\n});\n\nexport interface TabListProps\n extends Omit<\n ComponentPropsWithoutRef<typeof TabsPrimitive.List>,\n \"asChild\"\n > {}\n\ninterface UnderlineBox {\n left: number;\n top: number;\n width: number;\n}\n\nfunction TabUnderline({\n box,\n seed,\n sketch,\n}: {\n box: UnderlineBox;\n seed: number;\n sketch: TabsSketchContextValue;\n}) {\n const ref = useRef<HTMLSpanElement>(null);\n useDrawIn(ref, DRAW_IN_MARK_MS, sketch.shouldAnimate, seed);\n\n return (\n <span\n ref={ref}\n aria-hidden=\"true\"\n style={{\n position: \"absolute\",\n left: box.left,\n top: box.top,\n width: box.width,\n height: 10,\n pointerEvents: \"none\",\n transition: sketch.shouldAnimate\n ? \"left 220ms ease, width 220ms ease, top 220ms ease\"\n : undefined,\n }}\n >\n <RoughSvg\n shape=\"line\"\n roughness={(sketch.roughness ?? 1.5) + 0.35}\n seed={seed}\n sketchColor={SKETCH_COLORS.accent}\n bowing={sketch.bowing ?? 1.8}\n strokeWidth={(sketch.strokeWidth ?? 1.75) + 0.4}\n inset={2}\n />\n </span>\n );\n}\n\nexport const TabList = forwardRef<HTMLDivElement, TabListProps>(\n function TabList({ className, style, children, ...rest }, ref) {\n const sketch = useTabsSketch();\n const listRef = useRef<HTMLDivElement>(null);\n const [underline, setUnderline] = useState<UnderlineBox | null>(null);\n\n useLayoutEffect(() => {\n const list = listRef.current;\n if (!list) return;\n\n const measure = () => {\n const active = list.querySelector<HTMLElement>('[data-state=\"active\"]');\n if (!active) {\n setUnderline(null);\n return;\n }\n setUnderline({\n left: active.offsetLeft + 8,\n top: active.offsetTop + active.offsetHeight - 10,\n width: Math.max(12, active.offsetWidth - 16),\n });\n };\n\n measure();\n const observer = new ResizeObserver(measure);\n observer.observe(list);\n return () => observer.disconnect();\n }, [sketch.current, children]);\n\n return (\n <TabsPrimitive.List\n ref={(node) => {\n (listRef as MutableRefObject<HTMLDivElement | null>).current = node;\n assignRef(ref, node);\n }}\n className={cn(className)}\n style={{\n display: \"flex\",\n flexWrap: \"wrap\",\n gap: 4,\n position: \"relative\",\n ...style,\n }}\n {...rest}\n >\n {children}\n {underline && sketch.current ? (\n <TabUnderline\n box={underline}\n seed={deriveSeed(sketch.resolvedSeed, sketch.current)}\n sketch={sketch}\n />\n ) : null}\n </TabsPrimitive.List>\n );\n },\n);\n\nexport interface TabProps\n extends Omit<\n ComponentPropsWithoutRef<typeof TabsPrimitive.Trigger>,\n \"asChild\"\n > {\n children?: ReactNode;\n}\n\nexport const Tab = forwardRef<HTMLButtonElement, TabProps>(function Tab(\n { className, style, children, value, ...rest },\n ref,\n) {\n const sketch = useTabsSketch();\n const active = sketch.current === value;\n\n return (\n <TabsPrimitive.Trigger\n ref={ref}\n value={value}\n className={cn(className)}\n style={{\n position: \"relative\",\n border: \"none\",\n background: \"transparent\",\n cursor: \"pointer\",\n padding: \"8px 14px 12px\",\n fontFamily: doodleUiFontFamily,\n fontSize: 15,\n fontWeight: active\n ? doodleUiFontWeight(650)\n : doodleUiFontWeight(400),\n color: sketch.ink,\n outline: \"none\",\n ...style,\n }}\n {...rest}\n >\n <span style={{ position: \"relative\", zIndex: 1 }}>{children}</span>\n </TabsPrimitive.Trigger>\n );\n});\n\nexport interface TabPanelProps\n extends Omit<\n ComponentPropsWithoutRef<typeof TabsPrimitive.Content>,\n \"asChild\"\n > {}\n\nexport const TabPanel = forwardRef<HTMLDivElement, TabPanelProps>(\n function TabPanel({ className, style, children, ...rest }, ref) {\n const sketch = useTabsSketch();\n return (\n <TabsPrimitive.Content\n ref={ref}\n className={cn(className)}\n style={{\n paddingTop: 14,\n fontFamily: doodleUiFontFamily,\n color: sketch.ink,\n fontSize: 15,\n lineHeight: 1.5,\n outline: \"none\",\n ...style,\n }}\n {...rest}\n >\n {children}\n </TabsPrimitive.Content>\n );\n },\n);\n","\"use client\";\n\nimport {\n createContext,\n forwardRef,\n useContext,\n useLayoutEffect,\n useRef,\n useState,\n type HTMLAttributes,\n type ReactNode,\n type TdHTMLAttributes,\n type ThHTMLAttributes,\n type TableHTMLAttributes,\n} from \"react\";\nimport {\n DRAW_IN_DURATION_MS,\n TABLE_STAGGER_MS,\n useAnimate,\n useDrawIn,\n} from \"../animations\";\nimport { useResolvedSeed } from \"../hooks/useResolvedSeed\";\nimport { RoughSvg } from \"../primitives/RoughSvg\";\nimport { SKETCH_COLORS, type SketchProps } from \"../types\";\nimport { assignRef, cn, deriveSeed, doodleUiFontFamily, doodleUiFontWeight } from \"../utils\";\n\ninterface TableSketchContextValue extends SketchProps {\n resolvedSeed: number;\n ink: string;\n shouldAnimate: boolean;\n}\n\nconst TableSketchContext = createContext<TableSketchContextValue | null>(null);\n\nfunction useTableSketch(): TableSketchContextValue {\n const ctx = useContext(TableSketchContext);\n if (!ctx) {\n throw new Error(\"Table parts must be used inside <Table>.\");\n }\n return ctx;\n}\n\nexport interface TableProps\n extends Omit<TableHTMLAttributes<HTMLTableElement>, \"color\">,\n SketchProps {\n headerUnderline?: boolean;\n children?: ReactNode;\n /**\n * Draw-in row rules on mount, staggered slightly. Defaults to the\n * DoodleUIProvider value (true).\n */\n animate?: boolean;\n}\n\ninterface RowLine {\n y: number;\n width: number;\n key: string;\n header: boolean;\n index: number;\n}\n\nfunction TableRule({\n line,\n headerUnderline,\n roughness,\n resolvedSeed,\n ink,\n bowing,\n strokeWidth,\n shouldAnimate,\n}: {\n line: RowLine;\n headerUnderline: boolean;\n roughness?: number;\n resolvedSeed: number;\n ink: string;\n bowing?: number;\n strokeWidth?: number;\n shouldAnimate: boolean;\n}) {\n const ref = useRef<HTMLDivElement>(null);\n const delay = shouldAnimate\n ? Math.min(line.index, 6) * TABLE_STAGGER_MS\n : 0;\n useDrawIn(ref, DRAW_IN_DURATION_MS, shouldAnimate, undefined, delay);\n\n if (line.header && !headerUnderline) return null;\n\n return (\n <div\n ref={ref}\n style={{\n position: \"absolute\",\n left: 0,\n width: line.width,\n top: line.y - 6,\n height: 12,\n }}\n >\n <RoughSvg\n shape=\"line\"\n roughness={\n line.header ? (roughness ?? 1.5) + 0.2 : roughness ?? 1.7\n }\n seed={deriveSeed(resolvedSeed, line.key)}\n sketchColor={ink}\n bowing={bowing ?? (line.header ? 1.4 : 2)}\n strokeWidth={\n line.header\n ? (strokeWidth ?? 1.75) + 0.35\n : strokeWidth ?? 1.35\n }\n inset={6}\n />\n </div>\n );\n}\n\nexport const Table = forwardRef<HTMLTableElement, TableProps>(function Table(\n {\n className,\n style,\n children,\n headerUnderline = true,\n roughness,\n seed,\n sketchColor,\n bowing,\n fillStyle,\n strokeWidth,\n animate,\n ...rest\n },\n ref,\n) {\n const wrapperRef = useRef<HTMLDivElement>(null);\n const tableRef = useRef<HTMLTableElement | null>(null);\n const [lines, setLines] = useState<RowLine[]>([]);\n const resolvedSeed = useResolvedSeed(seed);\n const ink = sketchColor ?? SKETCH_COLORS.ink;\n const shouldAnimate = useAnimate(animate);\n\n useLayoutEffect(() => {\n const wrapper = wrapperRef.current;\n const table = tableRef.current;\n if (!wrapper || !table) return;\n\n const measure = () => {\n const rows = Array.from(table.querySelectorAll(\"tr\"));\n const next: RowLine[] = [];\n rows.forEach((row, index) => {\n const isLast = index === rows.length - 1;\n const isHeader = row.parentElement?.tagName === \"THEAD\";\n if (isLast && !isHeader) return;\n next.push({\n y: row.offsetTop + row.offsetHeight,\n width: table.offsetWidth,\n key: isHeader ? `header-${index}` : `row-${index}`,\n header: Boolean(isHeader),\n index,\n });\n });\n setLines(next);\n };\n\n measure();\n const observer = new ResizeObserver(measure);\n observer.observe(table);\n observer.observe(wrapper);\n return () => observer.disconnect();\n }, [children]);\n\n return (\n <TableSketchContext.Provider\n value={{\n roughness,\n seed: resolvedSeed,\n sketchColor,\n bowing,\n fillStyle,\n strokeWidth,\n resolvedSeed,\n ink,\n shouldAnimate,\n }}\n >\n <div\n ref={wrapperRef}\n className={cn(className)}\n style={{ position: \"relative\", width: \"100%\", ...style }}\n >\n <div\n aria-hidden=\"true\"\n style={{\n position: \"absolute\",\n inset: 0,\n pointerEvents: \"none\",\n zIndex: 1,\n overflow: \"visible\",\n }}\n >\n {lines.map((line) => (\n <TableRule\n key={line.key}\n line={line}\n headerUnderline={headerUnderline}\n roughness={roughness}\n resolvedSeed={resolvedSeed}\n ink={ink}\n bowing={bowing}\n strokeWidth={strokeWidth}\n shouldAnimate={shouldAnimate}\n />\n ))}\n </div>\n <table\n ref={(node) => {\n tableRef.current = node;\n assignRef(ref, node);\n }}\n style={{\n width: \"100%\",\n borderCollapse: \"collapse\",\n position: \"relative\",\n zIndex: 0,\n fontFamily: doodleUiFontFamily,\n color: ink,\n }}\n {...rest}\n >\n {children}\n </table>\n </div>\n </TableSketchContext.Provider>\n );\n});\n\nexport const TableHead = forwardRef<\n HTMLTableSectionElement,\n HTMLAttributes<HTMLTableSectionElement>\n>(function TableHead({ className, style, ...rest }, ref) {\n return (\n <thead\n ref={ref}\n className={cn(className)}\n style={style}\n {...rest}\n />\n );\n});\n\nexport const TableBody = forwardRef<\n HTMLTableSectionElement,\n HTMLAttributes<HTMLTableSectionElement>\n>(function TableBody({ className, style, ...rest }, ref) {\n return (\n <tbody\n ref={ref}\n className={cn(className)}\n style={style}\n {...rest}\n />\n );\n});\n\nexport const TableRow = forwardRef<\n HTMLTableRowElement,\n HTMLAttributes<HTMLTableRowElement>\n>(function TableRow({ className, style, ...rest }, ref) {\n return (\n <tr\n ref={ref}\n className={cn(className)}\n style={style}\n {...rest}\n />\n );\n});\n\nexport interface TableHeaderCellProps\n extends Omit<ThHTMLAttributes<HTMLTableCellElement>, \"color\"> {}\n\nexport const TableHeaderCell = forwardRef<\n HTMLTableCellElement,\n TableHeaderCellProps\n>(function TableHeaderCell({ className, style, children, ...rest }, ref) {\n useTableSketch();\n return (\n <th\n ref={ref}\n className={cn(className)}\n style={{\n textAlign: \"left\",\n fontWeight: doodleUiFontWeight(650),\n fontSize: 13,\n padding: \"10px 12px\",\n ...style,\n }}\n {...rest}\n >\n {children}\n </th>\n );\n});\n\nexport interface TableCellProps\n extends Omit<TdHTMLAttributes<HTMLTableCellElement>, \"color\"> {}\n\nexport const TableCell = forwardRef<HTMLTableCellElement, TableCellProps>(\n function TableCell({ className, style, children, ...rest }, ref) {\n useTableSketch();\n return (\n <td\n ref={ref}\n className={cn(className)}\n style={{\n fontSize: 14,\n padding: \"10px 12px\",\n ...style,\n }}\n {...rest}\n >\n {children}\n </td>\n );\n },\n);\n","\"use client\";\n\nimport {\n createContext,\n useContext,\n useState,\n type CSSProperties,\n type ReactNode,\n} from \"react\";\nimport * as ToastPrimitive from \"@radix-ui/react-toast\";\nimport { AnimatePresence, motion } from \"framer-motion\";\nimport { useAnimate } from \"../animations\";\nimport { SketchBox } from \"../primitives/SketchBox\";\nimport { SKETCH_COLORS, type SketchProps } from \"../types\";\nimport { cn, doodleUiFontFamily, doodleUiFontWeight } from \"../utils\";\n\nexport type ToastVariant = \"info\" | \"warning\" | \"error\" | \"success\";\nexport type ToastPosition =\n | \"top-left\"\n | \"top-right\"\n | \"bottom-left\"\n | \"bottom-right\";\n\nconst VARIANT_COLOR: Record<ToastVariant, string> = {\n info: SKETCH_COLORS.info,\n warning: SKETCH_COLORS.warning,\n error: SKETCH_COLORS.error,\n success: SKETCH_COLORS.success,\n};\n\nconst VARIANT_FILL: Record<ToastVariant, string> = {\n info: \"#d2deec\",\n warning: \"#f3e2c0\",\n error: \"#f3d0cc\",\n success: \"#d3e8dc\",\n};\n\nconst POSITION_STYLE: Record<ToastPosition, CSSProperties> = {\n \"top-left\": { top: 16, left: 16 },\n \"top-right\": { top: 16, right: 16 },\n \"bottom-left\": { bottom: 16, left: 16 },\n \"bottom-right\": { bottom: 16, right: 16 },\n};\n\nconst ToastPositionContext = createContext<ToastPosition>(\"bottom-right\");\n\nexport interface ToastProviderProps {\n children?: ReactNode;\n position?: ToastPosition;\n duration?: number;\n swipeDirection?: ToastPrimitive.ToastProviderProps[\"swipeDirection\"];\n label?: string;\n}\n\nexport function ToastProvider({\n children,\n position = \"bottom-right\",\n duration = 4000,\n swipeDirection = \"right\",\n label,\n}: ToastProviderProps) {\n return (\n <ToastPositionContext.Provider value={position}>\n <ToastPrimitive.Provider\n duration={duration}\n swipeDirection={swipeDirection}\n label={label}\n >\n {children}\n <ToastPrimitive.Viewport\n style={{\n position: \"fixed\",\n zIndex: 90,\n display: \"flex\",\n flexDirection: \"column\",\n gap: 10,\n width: \"min(360px, calc(100vw - 32px))\",\n margin: 0,\n padding: 0,\n listStyle: \"none\",\n outline: \"none\",\n ...POSITION_STYLE[position],\n }}\n />\n </ToastPrimitive.Provider>\n </ToastPositionContext.Provider>\n );\n}\n\nexport interface ToastProps extends SketchProps {\n open?: boolean;\n defaultOpen?: boolean;\n onOpenChange?: (open: boolean) => void;\n title?: ReactNode;\n children?: ReactNode;\n variant?: ToastVariant;\n duration?: number;\n className?: string;\n style?: CSSProperties;\n /**\n * Slide-in with a sketchy settle wobble, reversed on exit.\n * Defaults to the DoodleUIProvider value (true).\n */\n animate?: boolean;\n}\n\nexport function Toast({\n open,\n defaultOpen,\n onOpenChange,\n title,\n children,\n variant = \"info\",\n duration,\n className,\n style,\n roughness,\n seed,\n sketchColor,\n bowing,\n fillStyle,\n strokeWidth,\n animate,\n}: ToastProps) {\n const position = useContext(ToastPositionContext);\n const fromTop = position.startsWith(\"top\");\n const [uncontrolled, setUncontrolled] = useState(defaultOpen ?? false);\n const isOpen = open ?? uncontrolled;\n const shouldAnimate = useAnimate(animate);\n const color = sketchColor ?? VARIANT_COLOR[variant];\n const offset = fromTop ? -14 : 14;\n\n function handleOpenChange(next: boolean) {\n setUncontrolled(next);\n onOpenChange?.(next);\n }\n\n return (\n <AnimatePresence>\n {isOpen ? (\n <ToastPrimitive.Root\n open={isOpen}\n onOpenChange={handleOpenChange}\n duration={duration}\n forceMount\n asChild\n >\n <motion.li\n className={cn(className)}\n initial={\n shouldAnimate\n ? { y: offset, opacity: 0, rotate: -1.4 }\n : false\n }\n animate={\n shouldAnimate\n ? { y: 0, opacity: 1, rotate: [-1.2, 0.9, -0.35, 0] }\n : { y: 0, opacity: 1, rotate: 0 }\n }\n exit={\n shouldAnimate\n ? { y: offset, opacity: 0, rotate: 1.2 }\n : { opacity: 0 }\n }\n transition={\n shouldAnimate\n ? { duration: 0.38, ease: \"easeOut\" }\n : { duration: 0 }\n }\n style={{\n listStyle: \"none\",\n outline: \"none\",\n ...style,\n }}\n >\n <SketchBox\n roughness={roughness}\n seed={seed}\n sketchColor={color}\n bowing={bowing}\n fillStyle={fillStyle ?? \"hachure\"}\n fill={VARIANT_FILL[variant]}\n strokeWidth={strokeWidth ?? 1.7}\n shadow\n animate={animate}\n contentStyle={{ padding: \"12px 16px\" }}\n >\n {title ? (\n <ToastPrimitive.Title\n style={{\n margin: 0,\n fontWeight: doodleUiFontWeight(700),\n fontSize: 15,\n fontFamily: doodleUiFontFamily,\n color,\n marginBottom: children ? 4 : 0,\n }}\n >\n {title}\n </ToastPrimitive.Title>\n ) : null}\n {children ? (\n <ToastPrimitive.Description\n style={{\n margin: 0,\n fontSize: 14,\n lineHeight: 1.5,\n fontFamily: doodleUiFontFamily,\n color: SKETCH_COLORS.ink,\n }}\n >\n {children}\n </ToastPrimitive.Description>\n ) : null}\n </SketchBox>\n </motion.li>\n </ToastPrimitive.Root>\n ) : null}\n </AnimatePresence>\n );\n}\n\nexport const ToastRoot = ToastPrimitive.Root;\nexport const ToastTitle = ToastPrimitive.Title;\nexport const ToastDescription = ToastPrimitive.Description;\nexport const ToastClose = ToastPrimitive.Close;\nexport const ToastAction = ToastPrimitive.Action;\nexport const ToastViewport = ToastPrimitive.Viewport;\n","\"use client\";\n\nimport {\n createContext,\n forwardRef,\n useContext,\n useState,\n type ComponentPropsWithoutRef,\n type CSSProperties,\n type ReactNode,\n} from \"react\";\nimport * as AccordionPrimitive from \"@radix-ui/react-accordion\";\nimport { RoughSvg } from \"../primitives/RoughSvg\";\nimport { SKETCH_COLORS, type SketchProps } from \"../types\";\nimport { cn, doodleUiFontFamily, doodleUiFontWeight } from \"../utils\";\nimport { useResolvedSeed } from \"../hooks/useResolvedSeed\";\nimport { deriveSeed } from \"../utils\";\n\nconst CHEVRON_PATH = \"M 6 4 L 12 10 L 6 16\";\n\ninterface AccordionSketchContextValue extends SketchProps {\n resolvedSeed: number;\n ink: string;\n openValue: string | string[] | undefined;\n}\n\nconst AccordionSketchContext =\n createContext<AccordionSketchContextValue | null>(null);\n\nfunction useAccordionSketch(): AccordionSketchContextValue {\n const ctx = useContext(AccordionSketchContext);\n if (!ctx) {\n throw new Error(\"Accordion parts must be used inside <Accordion>.\");\n }\n return ctx;\n}\n\nconst AccordionItemContext = createContext<string>(\"\");\n\nexport interface AccordionProps extends SketchProps {\n type?: \"single\" | \"multiple\";\n collapsible?: boolean;\n value?: string | string[];\n defaultValue?: string | string[];\n onValueChange?: (value: string | string[]) => void;\n disabled?: boolean;\n className?: string;\n style?: CSSProperties;\n children?: ReactNode;\n}\n\nexport const Accordion = forwardRef<HTMLDivElement, AccordionProps>(\n function Accordion(\n {\n className,\n style,\n children,\n type = \"single\",\n collapsible = true,\n value,\n defaultValue,\n onValueChange,\n disabled,\n roughness,\n seed,\n sketchColor,\n bowing,\n fillStyle,\n strokeWidth,\n },\n ref,\n ) {\n const resolvedSeed = useResolvedSeed(seed);\n const ink = sketchColor ?? SKETCH_COLORS.ink;\n const [uncontrolled, setUncontrolled] = useState<\n string | string[] | undefined\n >(defaultValue ?? (type === \"multiple\" ? [] : undefined));\n const openValue = value ?? uncontrolled;\n\n const sketchValue: AccordionSketchContextValue = {\n roughness,\n seed: resolvedSeed,\n sketchColor,\n bowing,\n fillStyle,\n strokeWidth,\n resolvedSeed,\n ink,\n openValue,\n };\n\n function handleChange(next: string | string[]) {\n setUncontrolled(next);\n onValueChange?.(next);\n }\n\n const root =\n type === \"multiple\" ? (\n <AccordionPrimitive.Root\n ref={ref}\n type=\"multiple\"\n disabled={disabled}\n className={cn(className)}\n style={style}\n value={openValue as string[] | undefined}\n defaultValue={defaultValue as string[] | undefined}\n onValueChange={handleChange}\n >\n {children}\n </AccordionPrimitive.Root>\n ) : (\n <AccordionPrimitive.Root\n ref={ref}\n type=\"single\"\n collapsible={collapsible}\n disabled={disabled}\n className={cn(className)}\n style={style}\n value={openValue as string | undefined}\n defaultValue={defaultValue as string | undefined}\n onValueChange={handleChange}\n >\n {children}\n </AccordionPrimitive.Root>\n );\n\n return (\n <AccordionSketchContext.Provider value={sketchValue}>\n {root}\n </AccordionSketchContext.Provider>\n );\n },\n);\n\nexport interface AccordionItemProps\n extends Omit<\n ComponentPropsWithoutRef<typeof AccordionPrimitive.Item>,\n \"asChild\"\n > {}\n\nexport const AccordionItem = forwardRef<HTMLDivElement, AccordionItemProps>(\n function AccordionItem({ className, style, children, value, ...rest }, ref) {\n const sketch = useAccordionSketch();\n\n return (\n <AccordionItemContext.Provider value={value}>\n <AccordionPrimitive.Item\n ref={ref}\n value={value}\n className={cn(className)}\n style={{ position: \"relative\", ...style }}\n {...rest}\n >\n <div\n style={{\n position: \"absolute\",\n left: 0,\n right: 0,\n top: -6,\n height: 12,\n pointerEvents: \"none\",\n }}\n >\n <RoughSvg\n shape=\"line\"\n roughness={(sketch.roughness ?? 1.5) + 0.25}\n seed={deriveSeed(sketch.resolvedSeed, `div-${value}`)}\n sketchColor={sketch.ink}\n bowing={sketch.bowing ?? 1.8}\n strokeWidth={sketch.strokeWidth ?? 1.4}\n inset={2}\n />\n </div>\n {children}\n </AccordionPrimitive.Item>\n </AccordionItemContext.Provider>\n );\n },\n);\n\nexport interface AccordionTriggerProps\n extends Omit<\n ComponentPropsWithoutRef<typeof AccordionPrimitive.Trigger>,\n \"asChild\"\n > {\n children?: ReactNode;\n}\n\nexport const AccordionTrigger = forwardRef<\n HTMLButtonElement,\n AccordionTriggerProps\n>(function AccordionTrigger({ className, style, children, ...rest }, ref) {\n const sketch = useAccordionSketch();\n const itemValue = useContext(AccordionItemContext);\n const open = Array.isArray(sketch.openValue)\n ? sketch.openValue.includes(itemValue)\n : sketch.openValue === itemValue;\n\n return (\n <AccordionPrimitive.Header asChild>\n <h3 style={{ margin: 0 }}>\n <AccordionPrimitive.Trigger\n ref={ref}\n className={cn(className)}\n style={{\n display: \"flex\",\n width: \"100%\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n gap: 12,\n padding: \"12px 4px\",\n border: \"none\",\n background: \"transparent\",\n cursor: \"pointer\",\n fontFamily: doodleUiFontFamily,\n fontSize: 15,\n fontWeight: doodleUiFontWeight(600),\n color: sketch.ink,\n textAlign: \"left\",\n outline: \"none\",\n ...style,\n }}\n {...rest}\n >\n <span>{children}</span>\n <span\n style={{\n position: \"relative\",\n width: 18,\n height: 18,\n flexShrink: 0,\n transform: open ? \"rotate(90deg)\" : \"rotate(0deg)\",\n transition: \"transform 180ms ease\",\n }}\n >\n <RoughSvg\n shape=\"path\"\n path={CHEVRON_PATH}\n roughness={(sketch.roughness ?? 1.5) * 0.7}\n seed={deriveSeed(sketch.resolvedSeed, `chevron-${itemValue}`)}\n sketchColor={sketch.ink}\n bowing={sketch.bowing}\n strokeWidth={(sketch.strokeWidth ?? 1.6) + 0.2}\n inset={0}\n />\n </span>\n </AccordionPrimitive.Trigger>\n </h3>\n </AccordionPrimitive.Header>\n );\n});\n\nexport interface AccordionContentProps\n extends Omit<\n ComponentPropsWithoutRef<typeof AccordionPrimitive.Content>,\n \"asChild\"\n > {}\n\nexport const AccordionContent = forwardRef<\n HTMLDivElement,\n AccordionContentProps\n>(function AccordionContent({ className, style, children, ...rest }, ref) {\n const sketch = useAccordionSketch();\n return (\n <AccordionPrimitive.Content\n ref={ref}\n className={cn(className)}\n style={{\n padding: \"0 4px 14px\",\n fontFamily: doodleUiFontFamily,\n fontSize: 14,\n lineHeight: 1.5,\n color: sketch.ink,\n ...style,\n }}\n {...rest}\n >\n {children}\n </AccordionPrimitive.Content>\n );\n});\n","\"use client\";\n\nimport { forwardRef, type CSSProperties, type ReactNode } from \"react\";\nimport * as AvatarPrimitive from \"@radix-ui/react-avatar\";\nimport { RoughSvg } from \"../primitives/RoughSvg\";\nimport { SKETCH_COLORS, type RoughShape, type SketchProps } from \"../types\";\nimport { cn, doodleUiFontFamily, doodleUiFontWeight } from \"../utils\";\nimport { useResolvedSeed } from \"../hooks/useResolvedSeed\";\nimport { deriveSeed } from \"../utils\";\n\nexport type AvatarStatus = \"online\" | \"offline\" | \"busy\";\nexport type AvatarShape = \"circle\" | \"square\";\n\nconst STATUS_COLOR: Record<AvatarStatus, string> = {\n online: SKETCH_COLORS.success,\n offline: \"#8a8680\",\n busy: SKETCH_COLORS.accent,\n};\n\nexport interface AvatarProps\n extends Omit<AvatarPrimitive.AvatarProps, \"asChild\">,\n SketchProps {\n src?: string;\n alt?: string;\n fallback?: ReactNode;\n size?: number;\n shape?: AvatarShape;\n status?: AvatarStatus;\n}\n\nexport const Avatar = forwardRef<HTMLSpanElement, AvatarProps>(\n function Avatar(\n {\n className,\n style,\n src,\n alt,\n fallback,\n size = 40,\n shape = \"circle\",\n status,\n roughness,\n seed,\n sketchColor,\n bowing,\n fillStyle,\n strokeWidth,\n ...rest\n },\n ref,\n ) {\n const ink = sketchColor ?? SKETCH_COLORS.ink;\n const resolvedSeed = useResolvedSeed(seed);\n const roughShape: RoughShape = shape === \"circle\" ? \"ellipse\" : \"rectangle\";\n const badge = 12;\n const rootStyle: CSSProperties = {\n position: \"relative\",\n display: \"inline-flex\",\n width: size,\n height: size,\n flexShrink: 0,\n verticalAlign: \"middle\",\n ...style,\n };\n\n return (\n <AvatarPrimitive.Root\n ref={ref}\n className={cn(className)}\n style={rootStyle}\n {...rest}\n >\n <RoughSvg\n shape={roughShape}\n roughness={roughness}\n seed={resolvedSeed}\n sketchColor={ink}\n bowing={bowing}\n fillStyle={fillStyle ?? \"solid\"}\n fill=\"#f7f6f2\"\n strokeWidth={strokeWidth ?? 1.6}\n inset={1.5}\n />\n <span\n style={{\n position: \"absolute\",\n inset: 4,\n overflow: \"hidden\",\n borderRadius: shape === \"circle\" ? \"50%\" : 4,\n zIndex: 1,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n }}\n >\n {src ? (\n <AvatarPrimitive.Image\n src={src}\n alt={alt}\n style={{\n width: \"100%\",\n height: \"100%\",\n objectFit: \"cover\",\n }}\n />\n ) : null}\n <AvatarPrimitive.Fallback\n delayMs={src ? 400 : 0}\n style={{\n width: \"100%\",\n height: \"100%\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n fontFamily: doodleUiFontFamily,\n fontWeight: doodleUiFontWeight(650),\n fontSize: Math.max(12, size * 0.36),\n color: ink,\n background: SKETCH_COLORS.secondaryFill,\n }}\n >\n {fallback}\n </AvatarPrimitive.Fallback>\n </span>\n {status ? (\n <span\n style={{\n position: \"absolute\",\n width: badge,\n height: badge,\n right: -1,\n bottom: -1,\n zIndex: 2,\n }}\n >\n <RoughSvg\n shape=\"ellipse\"\n roughness={(roughness ?? 1.5) * 0.8}\n seed={deriveSeed(resolvedSeed, \"status\")}\n sketchColor={STATUS_COLOR[status]}\n fill={STATUS_COLOR[status]}\n fillStyle=\"solid\"\n bowing={bowing}\n strokeWidth={1}\n inset={0.5}\n />\n </span>\n ) : null}\n </AvatarPrimitive.Root>\n );\n },\n);\n","\"use client\";\n\nimport { forwardRef, type ComponentPropsWithoutRef } from \"react\";\nimport * as SliderPrimitive from \"@radix-ui/react-slider\";\nimport { RoughSvg } from \"../primitives/RoughSvg\";\nimport { SKETCH_COLORS, type SketchProps } from \"../types\";\nimport { cn } from \"../utils\";\nimport { useResolvedSeed } from \"../hooks/useResolvedSeed\";\nimport { deriveSeed } from \"../utils\";\n\nexport type SliderThumbShape = \"circle\" | \"square\";\n\nexport interface SliderProps\n extends Omit<\n ComponentPropsWithoutRef<typeof SliderPrimitive.Root>,\n \"asChild\"\n >,\n SketchProps {\n thumbShape?: SliderThumbShape;\n}\n\nexport const Slider = forwardRef<HTMLSpanElement, SliderProps>(function Slider(\n {\n className,\n style,\n roughness,\n seed,\n sketchColor,\n bowing,\n fillStyle,\n strokeWidth,\n thumbShape = \"circle\",\n ...rest\n },\n ref,\n) {\n const ink = sketchColor ?? SKETCH_COLORS.ink;\n const resolvedSeed = useResolvedSeed(seed);\n\n return (\n <SliderPrimitive.Root\n ref={ref}\n className={cn(className)}\n style={{\n position: \"relative\",\n display: \"flex\",\n alignItems: \"center\",\n width: \"100%\",\n height: 28,\n userSelect: \"none\",\n touchAction: \"none\",\n ...style,\n }}\n {...rest}\n >\n <SliderPrimitive.Track\n style={{\n position: \"relative\",\n flex: 1,\n height: 16,\n }}\n >\n <RoughSvg\n shape=\"line\"\n roughness={roughness ?? 1.8}\n seed={resolvedSeed}\n sketchColor={ink}\n bowing={bowing ?? 2}\n strokeWidth={strokeWidth ?? 1.6}\n inset={4}\n />\n <SliderPrimitive.Range\n style={{\n position: \"absolute\",\n left: 0,\n height: \"100%\",\n }}\n >\n <RoughSvg\n shape=\"line\"\n roughness={(roughness ?? 1.5) + 0.4}\n seed={deriveSeed(resolvedSeed, \"range\")}\n sketchColor={SKETCH_COLORS.accent}\n bowing={bowing ?? 1.6}\n strokeWidth={(strokeWidth ?? 1.6) + 0.6}\n inset={4}\n />\n </SliderPrimitive.Range>\n </SliderPrimitive.Track>\n <SliderPrimitive.Thumb\n style={{\n display: \"block\",\n width: 20,\n height: 20,\n position: \"relative\",\n outline: \"none\",\n cursor: \"grab\",\n }}\n >\n <RoughSvg\n shape={thumbShape === \"square\" ? \"rectangle\" : \"ellipse\"}\n roughness={(roughness ?? 1.5) * 0.85}\n seed={deriveSeed(resolvedSeed, \"thumb\")}\n sketchColor={SKETCH_COLORS.accent}\n fill=\"#f7f6f2\"\n fillStyle={fillStyle ?? \"solid\"}\n bowing={bowing}\n strokeWidth={(strokeWidth ?? 1.5) + 0.3}\n inset={1}\n />\n </SliderPrimitive.Thumb>\n </SliderPrimitive.Root>\n );\n});\n","\"use client\";\n\nimport { forwardRef, type ButtonHTMLAttributes, type HTMLAttributes } from \"react\";\nimport { RoughSvg } from \"../primitives/RoughSvg\";\nimport { SKETCH_COLORS, type SketchProps } from \"../types\";\nimport { cn, doodleUiFontFamily, doodleUiFontWeight } from \"../utils\";\nimport { useResolvedSeed } from \"../hooks/useResolvedSeed\";\nimport { deriveSeed } from \"../utils\";\n\nconst PREV_PATH = \"M 12 4 L 6 10 L 12 16\";\nconst NEXT_PATH = \"M 6 4 L 12 10 L 6 16\";\n\nfunction pageItems(page: number, count: number): Array<number | \"ellipsis\"> {\n if (count <= 7) {\n return Array.from({ length: count }, (_, i) => i + 1);\n }\n const items: Array<number | \"ellipsis\"> = [1];\n const start = Math.max(2, page - 1);\n const end = Math.min(count - 1, page + 1);\n if (start > 2) items.push(\"ellipsis\");\n for (let n = start; n <= end; n += 1) items.push(n);\n if (end < count - 1) items.push(\"ellipsis\");\n items.push(count);\n return items;\n}\n\nexport interface PaginationProps\n extends Omit<HTMLAttributes<HTMLElement>, \"color\" | \"onChange\">,\n SketchProps {\n page: number;\n count: number;\n onPageChange?: (page: number) => void;\n}\n\nexport const Pagination = forwardRef<HTMLElement, PaginationProps>(\n function Pagination(\n {\n className,\n style,\n page,\n count,\n onPageChange,\n roughness,\n seed,\n sketchColor,\n bowing,\n strokeWidth,\n ...rest\n },\n ref,\n ) {\n const ink = sketchColor ?? SKETCH_COLORS.ink;\n const resolvedSeed = useResolvedSeed(seed);\n const items = pageItems(page, count);\n\n return (\n <nav\n ref={ref}\n className={cn(className)}\n aria-label=\"Pagination\"\n style={{\n display: \"inline-flex\",\n alignItems: \"center\",\n gap: 4,\n ...style,\n }}\n {...rest}\n >\n <PageButton\n aria-label=\"Previous page\"\n disabled={page <= 1}\n onClick={() => onPageChange?.(Math.max(1, page - 1))}\n roughness={roughness}\n seed={deriveSeed(resolvedSeed, \"prev\")}\n ink={ink}\n bowing={bowing}\n strokeWidth={strokeWidth}\n >\n <span style={{ position: \"relative\", width: 16, height: 16, display: \"block\" }}>\n <RoughSvg\n shape=\"path\"\n path={PREV_PATH}\n roughness={(roughness ?? 1.5) * 0.7}\n seed={deriveSeed(resolvedSeed, \"prev-arrow\")}\n sketchColor={ink}\n strokeWidth={(strokeWidth ?? 1.5) + 0.2}\n inset={0}\n />\n </span>\n </PageButton>\n {items.map((item, index) =>\n item === \"ellipsis\" ? (\n <span\n key={`e-${index}`}\n style={{\n width: 28,\n textAlign: \"center\",\n fontFamily: doodleUiFontFamily,\n color: ink,\n }}\n >\n …\n </span>\n ) : (\n <PageButton\n key={item}\n aria-label={`Page ${item}`}\n aria-current={item === page ? \"page\" : undefined}\n active={item === page}\n onClick={() => onPageChange?.(item)}\n roughness={roughness}\n seed={deriveSeed(resolvedSeed, `page-${item}`)}\n ink={ink}\n bowing={bowing}\n strokeWidth={strokeWidth}\n >\n {item}\n </PageButton>\n ),\n )}\n <PageButton\n aria-label=\"Next page\"\n disabled={page >= count}\n onClick={() => onPageChange?.(Math.min(count, page + 1))}\n roughness={roughness}\n seed={deriveSeed(resolvedSeed, \"next\")}\n ink={ink}\n bowing={bowing}\n strokeWidth={strokeWidth}\n >\n <span style={{ position: \"relative\", width: 16, height: 16, display: \"block\" }}>\n <RoughSvg\n shape=\"path\"\n path={NEXT_PATH}\n roughness={(roughness ?? 1.5) * 0.7}\n seed={deriveSeed(resolvedSeed, \"next-arrow\")}\n sketchColor={ink}\n strokeWidth={(strokeWidth ?? 1.5) + 0.2}\n inset={0}\n />\n </span>\n </PageButton>\n </nav>\n );\n },\n);\n\ninterface PageButtonProps\n extends Omit<ButtonHTMLAttributes<HTMLButtonElement>, \"color\"> {\n active?: boolean;\n roughness?: number;\n seed?: number;\n ink: string;\n bowing?: number;\n strokeWidth?: number;\n}\n\nfunction PageButton({\n children,\n className,\n style,\n active,\n disabled,\n roughness,\n seed,\n ink,\n bowing,\n strokeWidth,\n ...rest\n}: PageButtonProps) {\n return (\n <button\n type=\"button\"\n disabled={disabled}\n className={cn(className)}\n style={{\n position: \"relative\",\n width: 36,\n height: 36,\n padding: 0,\n border: \"none\",\n background: \"transparent\",\n cursor: disabled ? \"not-allowed\" : \"pointer\",\n color: ink,\n fontFamily: doodleUiFontFamily,\n fontWeight: active ? doodleUiFontWeight(700) : doodleUiFontWeight(400),\n fontSize: 14,\n outline: \"none\",\n opacity: disabled ? 0.4 : 1,\n ...style,\n }}\n {...rest}\n >\n <RoughSvg\n shape=\"ellipse\"\n roughness={roughness}\n seed={seed}\n sketchColor={active ? SKETCH_COLORS.accent : ink}\n bowing={bowing}\n fill={active ? SKETCH_COLORS.accentFill : undefined}\n fillStyle={active ? \"hachure\" : undefined}\n strokeWidth={active ? (strokeWidth ?? 1.6) + 0.3 : strokeWidth ?? 1.4}\n inset={1.5}\n />\n {active ? (\n <RoughSvg\n shape=\"ellipse\"\n roughness={(roughness ?? 1.5) + 0.45}\n seed={seed}\n sketchColor={SKETCH_COLORS.accent}\n bowing={bowing ?? 1.6}\n strokeWidth={1.1}\n inset={-1.5}\n style={{ opacity: 0.7 }}\n />\n ) : null}\n <span style={{ position: \"relative\", zIndex: 1 }}>{children}</span>\n </button>\n );\n}\n","\"use client\";\n\nimport {\n Children,\n cloneElement,\n createContext,\n forwardRef,\n isValidElement,\n useContext,\n type HTMLAttributes,\n type ReactElement,\n type ReactNode,\n} from \"react\";\nimport { RoughSvg } from \"../primitives/RoughSvg\";\nimport { SKETCH_COLORS, type SketchProps } from \"../types\";\nimport { cn, doodleUiFontFamily } from \"../utils\";\nimport { useResolvedSeed } from \"../hooks/useResolvedSeed\";\nimport { deriveSeed } from \"../utils\";\n\nconst SLASH_PATH = \"M 10 3 L 6 15\";\nconst CHEVRON_PATH = \"M 5 4 L 11 9 L 5 14\";\n\nexport type BreadcrumbSeparator = \"slash\" | \"chevron\";\n\ninterface BreadcrumbSketchContextValue extends SketchProps {\n resolvedSeed: number;\n ink: string;\n separator: BreadcrumbSeparator;\n}\n\nconst BreadcrumbSketchContext =\n createContext<BreadcrumbSketchContextValue | null>(null);\n\nfunction useBreadcrumbSketch(): BreadcrumbSketchContextValue {\n const ctx = useContext(BreadcrumbSketchContext);\n if (!ctx) {\n throw new Error(\"BreadcrumbItem must be used inside <Breadcrumb>.\");\n }\n return ctx;\n}\n\nexport interface BreadcrumbProps\n extends Omit<HTMLAttributes<HTMLElement>, \"color\">,\n SketchProps {\n separator?: BreadcrumbSeparator;\n children?: ReactNode;\n}\n\nexport const Breadcrumb = forwardRef<HTMLElement, BreadcrumbProps>(\n function Breadcrumb(\n {\n className,\n style,\n children,\n separator = \"slash\",\n roughness,\n seed,\n sketchColor,\n bowing,\n strokeWidth,\n ...rest\n },\n ref,\n ) {\n const ink = sketchColor ?? SKETCH_COLORS.ink;\n const resolvedSeed = useResolvedSeed(seed);\n const items = Children.toArray(children).filter(isValidElement);\n\n return (\n <BreadcrumbSketchContext.Provider\n value={{\n roughness,\n seed: resolvedSeed,\n sketchColor,\n bowing,\n strokeWidth,\n resolvedSeed,\n ink,\n separator,\n }}\n >\n <nav\n ref={ref}\n className={cn(className)}\n aria-label=\"Breadcrumb\"\n style={style}\n {...rest}\n >\n <ol\n style={{\n display: \"flex\",\n flexWrap: \"wrap\",\n alignItems: \"center\",\n gap: 4,\n listStyle: \"none\",\n margin: 0,\n padding: 0,\n fontFamily: doodleUiFontFamily,\n color: ink,\n fontSize: 14,\n }}\n >\n {items.map((child, index) => (\n <li\n key={index}\n style={{ display: \"inline-flex\", alignItems: \"center\", gap: 4 }}\n >\n {cloneElement(child as ReactElement<{ index?: number }>, {\n index,\n })}\n {index < items.length - 1 ? (\n <SeparatorMark\n index={index}\n separator={separator}\n resolvedSeed={resolvedSeed}\n roughness={roughness}\n ink={ink}\n bowing={bowing}\n strokeWidth={strokeWidth}\n />\n ) : null}\n </li>\n ))}\n </ol>\n </nav>\n </BreadcrumbSketchContext.Provider>\n );\n },\n);\n\nfunction SeparatorMark({\n index,\n separator,\n resolvedSeed,\n roughness,\n ink,\n bowing,\n strokeWidth,\n}: {\n index: number;\n separator: BreadcrumbSeparator;\n resolvedSeed: number;\n roughness?: number;\n ink: string;\n bowing?: number;\n strokeWidth?: number;\n}) {\n return (\n <span\n aria-hidden=\"true\"\n style={{ position: \"relative\", width: 16, height: 18, display: \"inline-block\" }}\n >\n <RoughSvg\n shape=\"path\"\n path={separator === \"chevron\" ? CHEVRON_PATH : SLASH_PATH}\n roughness={(roughness ?? 1.5) * 0.85}\n seed={deriveSeed(resolvedSeed, `sep-${index}`)}\n sketchColor={ink}\n bowing={bowing ?? 1.6}\n strokeWidth={strokeWidth ?? 1.4}\n inset={0}\n />\n </span>\n );\n}\n\nexport interface BreadcrumbItemProps\n extends Omit<HTMLAttributes<HTMLSpanElement>, \"color\"> {\n href?: string;\n current?: boolean;\n index?: number;\n children?: ReactNode;\n}\n\nexport const BreadcrumbItem = forwardRef<HTMLSpanElement, BreadcrumbItemProps>(\n function BreadcrumbItem(\n { className, style, href, current, children, index: _index, ...rest },\n ref,\n ) {\n const sketch = useBreadcrumbSketch();\n const contentStyle = {\n color: current ? sketch.ink : sketch.ink,\n opacity: current ? 1 : 0.75,\n textDecoration: \"none\",\n fontFamily: doodleUiFontFamily,\n ...style,\n };\n\n if (href && !current) {\n return (\n <a\n href={href}\n className={cn(className)}\n style={contentStyle}\n {...rest}\n >\n {children}\n </a>\n );\n }\n\n return (\n <span\n ref={ref}\n className={cn(className)}\n aria-current={current ? \"page\" : undefined}\n style={contentStyle}\n {...rest}\n >\n {children}\n </span>\n );\n },\n);\n","\"use client\";\n\nimport { forwardRef, useEffect, useState, type HTMLAttributes } from \"react\";\nimport { RoughSvg } from \"../primitives/RoughSvg\";\nimport { SKETCH_COLORS, type RoughShape, type SketchProps } from \"../types\";\nimport { cn } from \"../utils\";\nimport { useResolvedSeed } from \"../hooks/useResolvedSeed\";\nimport { deriveSeed } from \"../utils\";\n\nexport type SkeletonVariant = \"text\" | \"rect\" | \"circle\";\n\nexport interface SkeletonProps\n extends Omit<HTMLAttributes<HTMLDivElement>, \"color\">,\n SketchProps {\n variant?: SkeletonVariant;\n pulse?: boolean;\n width?: number | string;\n height?: number | string;\n}\n\nexport const Skeleton = forwardRef<HTMLDivElement, SkeletonProps>(\n function Skeleton(\n {\n className,\n style,\n variant = \"rect\",\n pulse = true,\n width,\n height,\n roughness,\n seed,\n sketchColor,\n bowing,\n fillStyle,\n strokeWidth,\n ...rest\n },\n ref,\n ) {\n const base = useResolvedSeed(seed);\n const [tick, setTick] = useState(0);\n const ink = sketchColor ?? SKETCH_COLORS.ink;\n\n useEffect(() => {\n if (!pulse) return;\n const id = window.setInterval(() => {\n setTick((current) => current + 1);\n }, 900);\n return () => window.clearInterval(id);\n }, [pulse]);\n\n const resolved = pulse ? deriveSeed(base, `pulse-${tick}`) : base;\n const shape: RoughShape = variant === \"circle\" ? \"ellipse\" : \"rectangle\";\n const defaultHeight = variant === \"text\" ? 14 : variant === \"circle\" ? 40 : 80;\n const defaultWidth = variant === \"circle\" ? 40 : \"100%\";\n\n return (\n <div\n ref={ref}\n aria-hidden=\"true\"\n className={cn(className)}\n style={{\n position: \"relative\",\n width: width ?? defaultWidth,\n height: height ?? defaultHeight,\n maxWidth: \"100%\",\n ...style,\n }}\n {...rest}\n >\n <RoughSvg\n shape={shape}\n roughness={(roughness ?? 1.5) + 0.4}\n seed={resolved}\n sketchColor={ink}\n fill={ink}\n fillStyle={fillStyle ?? \"hachure\"}\n bowing={bowing ?? 1.6}\n strokeWidth={strokeWidth ?? 1.1}\n inset={2}\n style={{ opacity: 0.28 }}\n />\n </div>\n );\n },\n);\n","\"use client\";\n\nimport { forwardRef, type HTMLAttributes, type ReactNode } from \"react\";\nimport { RoughSvg } from \"../primitives/RoughSvg\";\nimport { SKETCH_COLORS, type SketchProps } from \"../types\";\nimport { cn, doodleUiFontFamily, doodleUiFontWeight } from \"../utils\";\nimport { useResolvedSeed } from \"../hooks/useResolvedSeed\";\nimport { deriveSeed } from \"../utils\";\n\nexport type StepperOrientation = \"horizontal\" | \"vertical\";\n\nexport interface StepperStep {\n label: ReactNode;\n description?: ReactNode;\n}\n\nexport interface StepperProps\n extends Omit<HTMLAttributes<HTMLDivElement>, \"color\">,\n SketchProps {\n steps: Array<StepperStep | ReactNode>;\n current?: number;\n orientation?: StepperOrientation;\n}\n\nfunction normalizeSteps(steps: Array<StepperStep | ReactNode>): StepperStep[] {\n return steps.map((step) =>\n step !== null && typeof step === \"object\" && \"label\" in step\n ? (step as StepperStep)\n : { label: step },\n );\n}\n\nexport const Stepper = forwardRef<HTMLDivElement, StepperProps>(\n function Stepper(\n {\n className,\n style,\n steps,\n current = 0,\n orientation = \"horizontal\",\n roughness,\n seed,\n sketchColor,\n bowing,\n fillStyle,\n strokeWidth,\n ...rest\n },\n ref,\n ) {\n const ink = sketchColor ?? SKETCH_COLORS.ink;\n const resolvedSeed = useResolvedSeed(seed);\n const items = normalizeSteps(steps);\n const horizontal = orientation === \"horizontal\";\n\n return (\n <div\n ref={ref}\n role=\"list\"\n className={cn(className)}\n style={{\n display: \"flex\",\n flexDirection: horizontal ? \"row\" : \"column\",\n alignItems: horizontal ? \"flex-start\" : \"stretch\",\n ...style,\n }}\n {...rest}\n >\n {items.map((step, index) => {\n const complete = index < current;\n const active = index === current;\n const markerColor = complete || active ? SKETCH_COLORS.accent : ink;\n\n return (\n <div\n key={index}\n role=\"listitem\"\n aria-current={active ? \"step\" : undefined}\n style={{\n display: \"flex\",\n flex: horizontal ? 1 : undefined,\n flexDirection: horizontal ? \"column\" : \"row\",\n alignItems: horizontal ? \"center\" : \"flex-start\",\n minWidth: 0,\n }}\n >\n <div\n style={{\n display: \"flex\",\n flexDirection: horizontal ? \"row\" : \"column\",\n alignItems: \"center\",\n width: horizontal ? \"100%\" : undefined,\n }}\n >\n <span\n style={{\n position: \"relative\",\n width: 28,\n height: 28,\n flexShrink: 0,\n display: \"inline-flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n fontFamily: doodleUiFontFamily,\n fontWeight: doodleUiFontWeight(700),\n fontSize: 13,\n color: markerColor,\n }}\n >\n <RoughSvg\n shape=\"ellipse\"\n roughness={roughness}\n seed={deriveSeed(resolvedSeed, `step-${index}`)}\n sketchColor={markerColor}\n fill={\n complete\n ? SKETCH_COLORS.accentFill\n : active\n ? \"#f7f6f2\"\n : undefined\n }\n fillStyle={\n complete || active ? fillStyle ?? \"hachure\" : undefined\n }\n bowing={bowing}\n strokeWidth={\n active\n ? (strokeWidth ?? 1.6) + 0.4\n : strokeWidth ?? 1.5\n }\n inset={1.5}\n />\n <span style={{ position: \"relative\", zIndex: 1 }}>\n {complete ? \"✓\" : index + 1}\n </span>\n </span>\n {index < items.length - 1 ? (\n <span\n style={{\n position: \"relative\",\n flex: 1,\n width: horizontal ? undefined : 12,\n height: horizontal ? 12 : 28,\n minWidth: horizontal ? 16 : 12,\n alignSelf: \"center\",\n }}\n >\n <RoughSvg\n shape={horizontal ? \"line\" : \"line-vertical\"}\n roughness={(roughness ?? 1.5) + 0.3}\n seed={deriveSeed(resolvedSeed, `connector-${index}`)}\n sketchColor={complete ? SKETCH_COLORS.accent : ink}\n bowing={bowing ?? 2}\n strokeWidth={strokeWidth ?? 1.4}\n inset={2}\n />\n </span>\n ) : null}\n </div>\n <div\n style={{\n marginTop: horizontal ? 8 : 0,\n marginLeft: horizontal ? 0 : 10,\n paddingBottom: horizontal ? 0 : 8,\n textAlign: horizontal ? \"center\" : \"left\",\n fontFamily: doodleUiFontFamily,\n fontSize: 13,\n color: ink,\n }}\n >\n <div style={{ fontWeight: doodleUiFontWeight(600) }}>\n {step.label}\n </div>\n {step.description ? (\n <div style={{ opacity: 0.7, fontSize: 12, marginTop: 2 }}>\n {step.description}\n </div>\n ) : null}\n </div>\n </div>\n );\n })}\n </div>\n );\n },\n);\n","\"use client\";\n\nimport { forwardRef, useRef, type ReactNode } from \"react\";\nimport * as LabelPrimitive from \"@radix-ui/react-label\";\nimport { DRAW_IN_MARK_MS, useAnimate, useDrawIn } from \"../animations\";\nimport { useResolvedSeed } from \"../hooks/useResolvedSeed\";\nimport { RoughSvg } from \"../primitives/RoughSvg\";\nimport { SKETCH_COLORS, type SketchProps } from \"../types\";\nimport { cn, doodleUiFontFamily, doodleUiFontWeight } from \"../utils\";\n\nexport interface LabelProps\n extends Omit<LabelPrimitive.LabelProps, \"asChild\" | \"color\">,\n SketchProps {\n children?: ReactNode;\n /** Adds a small hand-drawn required mark after the text. */\n required?: boolean;\n /**\n * Draw-in the required mark on mount.\n * Defaults to the DoodleUIProvider value (true).\n */\n animate?: boolean;\n}\n\n/**\n * Thin, mostly-typographic wrapper around Radix Label. Ties a caption to a\n * form field via `htmlFor` for accessibility. The only sketch chrome is a\n * small drawn mark next to the text when `required` is set.\n */\nexport const Label = forwardRef<HTMLLabelElement, LabelProps>(function Label(\n {\n className,\n style,\n children,\n required,\n roughness,\n seed,\n sketchColor,\n bowing,\n strokeWidth,\n animate,\n ...rest\n },\n ref,\n) {\n const ink = sketchColor ?? SKETCH_COLORS.ink;\n const resolvedSeed = useResolvedSeed(seed);\n const shouldAnimate = useAnimate(animate);\n const markRef = useRef<HTMLSpanElement>(null);\n useDrawIn(markRef, DRAW_IN_MARK_MS, shouldAnimate);\n\n return (\n <LabelPrimitive.Root\n ref={ref}\n className={cn(className)}\n style={{\n display: \"inline-flex\",\n alignItems: \"center\",\n gap: 4,\n fontFamily: doodleUiFontFamily,\n fontSize: 13,\n fontWeight: doodleUiFontWeight(600),\n color: ink,\n cursor: \"default\",\n ...style,\n }}\n {...rest}\n >\n {children}\n {required ? (\n <span\n ref={markRef}\n aria-hidden=\"true\"\n style={{ position: \"relative\", width: 10, height: 10, flexShrink: 0 }}\n >\n <RoughSvg\n shape=\"ellipse\"\n roughness={(roughness ?? 1.5) * 0.9}\n seed={resolvedSeed}\n sketchColor={SKETCH_COLORS.accent}\n bowing={bowing}\n fillStyle=\"solid\"\n fill={SKETCH_COLORS.accent}\n strokeWidth={strokeWidth ?? 1.2}\n inset={1}\n />\n </span>\n ) : null}\n </LabelPrimitive.Root>\n );\n});\n","\"use client\";\n\nimport {\n createContext,\n forwardRef,\n useContext,\n useState,\n type ComponentPropsWithoutRef,\n type ReactNode,\n} from \"react\";\nimport * as CollapsiblePrimitive from \"@radix-ui/react-collapsible\";\nimport { RoughSvg } from \"../primitives/RoughSvg\";\nimport { SKETCH_COLORS, type SketchProps } from \"../types\";\nimport { cn, doodleUiFontFamily, doodleUiFontWeight } from \"../utils\";\nimport { useResolvedSeed } from \"../hooks/useResolvedSeed\";\n\nconst CHEVRON_PATH = \"M 6 4 L 12 10 L 6 16\";\n\ninterface CollapsibleSketchContextValue extends SketchProps {\n resolvedSeed: number;\n ink: string;\n open: boolean;\n}\n\nconst CollapsibleSketchContext =\n createContext<CollapsibleSketchContextValue | null>(null);\n\nfunction useCollapsibleSketch(): CollapsibleSketchContextValue {\n const ctx = useContext(CollapsibleSketchContext);\n if (!ctx) {\n throw new Error(\n \"Collapsible parts must be used inside <Collapsible>.\",\n );\n }\n return ctx;\n}\n\nexport interface CollapsibleProps\n extends Omit<CollapsiblePrimitive.CollapsibleProps, \"asChild\">,\n SketchProps {\n children?: ReactNode;\n}\n\nexport const Collapsible = forwardRef<HTMLDivElement, CollapsibleProps>(\n function Collapsible(\n {\n className,\n style,\n children,\n open,\n defaultOpen,\n onOpenChange,\n disabled,\n roughness,\n seed,\n sketchColor,\n bowing,\n fillStyle,\n strokeWidth,\n ...rest\n },\n ref,\n ) {\n const resolvedSeed = useResolvedSeed(seed);\n const ink = sketchColor ?? SKETCH_COLORS.ink;\n const [uncontrolled, setUncontrolled] = useState(defaultOpen ?? false);\n const isOpen = open ?? uncontrolled;\n\n return (\n <CollapsibleSketchContext.Provider\n value={{\n roughness,\n seed: resolvedSeed,\n sketchColor,\n bowing,\n fillStyle,\n strokeWidth,\n resolvedSeed,\n ink,\n open: isOpen,\n }}\n >\n <CollapsiblePrimitive.Root\n ref={ref}\n open={isOpen}\n disabled={disabled}\n className={cn(className)}\n style={style}\n onOpenChange={(next) => {\n setUncontrolled(next);\n onOpenChange?.(next);\n }}\n {...rest}\n >\n {children}\n </CollapsiblePrimitive.Root>\n </CollapsibleSketchContext.Provider>\n );\n },\n);\n\nexport interface CollapsibleTriggerProps\n extends Omit<\n ComponentPropsWithoutRef<typeof CollapsiblePrimitive.Trigger>,\n \"asChild\"\n > {\n children?: ReactNode;\n}\n\nexport const CollapsibleTrigger = forwardRef<\n HTMLButtonElement,\n CollapsibleTriggerProps\n>(function CollapsibleTrigger({ className, style, children, ...rest }, ref) {\n const sketch = useCollapsibleSketch();\n\n return (\n <CollapsiblePrimitive.Trigger\n ref={ref}\n className={cn(className)}\n style={{\n display: \"flex\",\n width: \"100%\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n gap: 12,\n padding: \"10px 4px\",\n border: \"none\",\n background: \"transparent\",\n cursor: \"pointer\",\n fontFamily: doodleUiFontFamily,\n fontSize: 15,\n fontWeight: doodleUiFontWeight(600),\n color: sketch.ink,\n textAlign: \"left\",\n outline: \"none\",\n ...style,\n }}\n {...rest}\n >\n <span>{children}</span>\n <span\n style={{\n position: \"relative\",\n width: 18,\n height: 18,\n flexShrink: 0,\n transform: sketch.open ? \"rotate(90deg)\" : \"rotate(0deg)\",\n transition: \"transform 180ms ease\",\n }}\n >\n <RoughSvg\n shape=\"path\"\n path={CHEVRON_PATH}\n roughness={(sketch.roughness ?? 1.5) * 0.7}\n seed={sketch.resolvedSeed}\n sketchColor={sketch.ink}\n bowing={sketch.bowing}\n strokeWidth={(sketch.strokeWidth ?? 1.6) + 0.2}\n inset={0}\n />\n </span>\n </CollapsiblePrimitive.Trigger>\n );\n});\n\nexport interface CollapsibleContentProps\n extends Omit<\n ComponentPropsWithoutRef<typeof CollapsiblePrimitive.Content>,\n \"asChild\"\n > {}\n\nexport const CollapsibleContent = forwardRef<\n HTMLDivElement,\n CollapsibleContentProps\n>(function CollapsibleContent({ className, style, children, ...rest }, ref) {\n const sketch = useCollapsibleSketch();\n return (\n <CollapsiblePrimitive.Content\n ref={ref}\n className={cn(className)}\n style={{\n padding: \"0 4px 12px\",\n fontFamily: doodleUiFontFamily,\n fontSize: 14,\n lineHeight: 1.5,\n color: sketch.ink,\n ...style,\n }}\n {...rest}\n >\n {children}\n </CollapsiblePrimitive.Content>\n );\n});\n","\"use client\";\n\nimport {\n createContext,\n forwardRef,\n useContext,\n type ComponentPropsWithoutRef,\n type ReactNode,\n} from \"react\";\nimport * as PopoverPrimitive from \"@radix-ui/react-popover\";\nimport { useResolvedSeed } from \"../hooks/useResolvedSeed\";\nimport { SketchBox } from \"../primitives/SketchBox\";\nimport { SKETCH_COLORS, type SketchProps } from \"../types\";\nimport { cn } from \"../utils\";\n\ninterface PopoverSketchContextValue extends SketchProps {\n resolvedSeed: number;\n ink: string;\n animate?: boolean;\n}\n\nconst PopoverSketchContext = createContext<PopoverSketchContextValue | null>(\n null,\n);\n\nfunction usePopoverSketch(): PopoverSketchContextValue {\n const ctx = useContext(PopoverSketchContext);\n if (!ctx) {\n throw new Error(\"Popover parts must be used inside <Popover>.\");\n }\n return ctx;\n}\n\nexport interface PopoverProps\n extends Omit<PopoverPrimitive.PopoverProps, \"children\">,\n SketchProps {\n children?: ReactNode;\n /**\n * Draw-in the panel border when the popover opens.\n * Defaults to the DoodleUIProvider value (true).\n */\n animate?: boolean;\n}\n\nexport function Popover({\n children,\n roughness,\n seed,\n sketchColor,\n bowing,\n fillStyle,\n strokeWidth,\n animate,\n ...rest\n}: PopoverProps) {\n const resolvedSeed = useResolvedSeed(seed);\n const ink = sketchColor ?? SKETCH_COLORS.ink;\n\n return (\n <PopoverSketchContext.Provider\n value={{\n roughness,\n seed: resolvedSeed,\n sketchColor,\n bowing,\n fillStyle,\n strokeWidth,\n resolvedSeed,\n ink,\n animate,\n }}\n >\n <PopoverPrimitive.Root {...rest}>{children}</PopoverPrimitive.Root>\n </PopoverSketchContext.Provider>\n );\n}\n\nexport const PopoverTrigger = PopoverPrimitive.Trigger;\nexport const PopoverAnchor = PopoverPrimitive.Anchor;\nexport const PopoverClose = PopoverPrimitive.Close;\n\nexport interface PopoverContentProps\n extends Omit<PopoverPrimitive.PopoverContentProps, \"asChild\"> {\n children?: ReactNode;\n}\n\nexport const PopoverContent = forwardRef<HTMLDivElement, PopoverContentProps>(\n function PopoverContent(\n { className, style, children, sideOffset = 8, ...rest },\n ref,\n ) {\n const sketch = usePopoverSketch();\n\n return (\n <PopoverPrimitive.Portal>\n <PopoverPrimitive.Content\n ref={ref}\n sideOffset={sideOffset}\n className={cn(className)}\n style={{ zIndex: 80, outline: \"none\", ...style }}\n {...rest}\n >\n <SketchBox\n roughness={sketch.roughness}\n seed={sketch.resolvedSeed}\n sketchColor={sketch.ink}\n bowing={sketch.bowing}\n fillStyle={sketch.fillStyle ?? \"solid\"}\n fill=\"#f7f6f2\"\n strokeWidth={sketch.strokeWidth ?? 1.5}\n shadow\n animate={sketch.animate}\n contentStyle={{ padding: \"14px 16px\", minWidth: 200 }}\n >\n {children}\n </SketchBox>\n </PopoverPrimitive.Content>\n </PopoverPrimitive.Portal>\n );\n },\n);\n\nexport interface PopoverArrowProps\n extends ComponentPropsWithoutRef<typeof PopoverPrimitive.Arrow> {}\n\nexport const PopoverArrow = forwardRef<SVGSVGElement, PopoverArrowProps>(\n function PopoverArrow(props, ref) {\n const sketch = usePopoverSketch();\n return (\n <PopoverPrimitive.Arrow ref={ref} fill={sketch.ink} {...props} />\n );\n },\n);\n","\"use client\";\n\nimport {\n createContext,\n forwardRef,\n useContext,\n useState,\n type ReactNode,\n} from \"react\";\nimport * as DropdownMenuPrimitive from \"@radix-ui/react-dropdown-menu\";\nimport { useResolvedSeed } from \"../hooks/useResolvedSeed\";\nimport { RoughSvg } from \"../primitives/RoughSvg\";\nimport { SketchBox } from \"../primitives/SketchBox\";\nimport { SKETCH_COLORS, type SketchProps } from \"../types\";\nimport { cn, deriveSeed, doodleUiFontFamily } from \"../utils\";\n\ninterface DropdownMenuSketchContextValue extends SketchProps {\n resolvedSeed: number;\n ink: string;\n animate?: boolean;\n}\n\nconst DropdownMenuSketchContext =\n createContext<DropdownMenuSketchContextValue | null>(null);\n\nfunction useDropdownMenuSketch(): DropdownMenuSketchContextValue {\n const ctx = useContext(DropdownMenuSketchContext);\n if (!ctx) {\n throw new Error(\n \"DropdownMenu parts must be used inside <DropdownMenu>.\",\n );\n }\n return ctx;\n}\n\nexport interface DropdownMenuProps\n extends Omit<DropdownMenuPrimitive.DropdownMenuProps, \"children\">,\n SketchProps {\n children?: ReactNode;\n /**\n * Draw-in the panel border when the menu opens.\n * Defaults to the DoodleUIProvider value (true).\n */\n animate?: boolean;\n}\n\nexport function DropdownMenu({\n children,\n roughness,\n seed,\n sketchColor,\n bowing,\n fillStyle,\n strokeWidth,\n animate,\n ...rest\n}: DropdownMenuProps) {\n const resolvedSeed = useResolvedSeed(seed);\n const ink = sketchColor ?? SKETCH_COLORS.ink;\n\n return (\n <DropdownMenuSketchContext.Provider\n value={{\n roughness,\n seed: resolvedSeed,\n sketchColor,\n bowing,\n fillStyle,\n strokeWidth,\n resolvedSeed,\n ink,\n animate,\n }}\n >\n <DropdownMenuPrimitive.Root {...rest}>\n {children}\n </DropdownMenuPrimitive.Root>\n </DropdownMenuSketchContext.Provider>\n );\n}\n\nexport const DropdownMenuTrigger = DropdownMenuPrimitive.Trigger;\nexport const DropdownMenuGroup = DropdownMenuPrimitive.Group;\nexport const DropdownMenuRadioGroup = DropdownMenuPrimitive.RadioGroup;\nexport const DropdownMenuSub = DropdownMenuPrimitive.Sub;\n\nexport interface DropdownMenuContentProps\n extends Omit<DropdownMenuPrimitive.DropdownMenuContentProps, \"asChild\"> {\n children?: ReactNode;\n}\n\nexport const DropdownMenuContent = forwardRef<\n HTMLDivElement,\n DropdownMenuContentProps\n>(function DropdownMenuContent(\n { className, style, children, sideOffset = 6, align = \"start\", ...rest },\n ref,\n) {\n const sketch = useDropdownMenuSketch();\n\n return (\n <DropdownMenuPrimitive.Portal>\n <DropdownMenuPrimitive.Content\n ref={ref}\n sideOffset={sideOffset}\n align={align}\n className={cn(className)}\n style={{ zIndex: 80, outline: \"none\", minWidth: 180, ...style }}\n {...rest}\n >\n <SketchBox\n roughness={sketch.roughness}\n seed={sketch.resolvedSeed}\n sketchColor={sketch.ink}\n bowing={sketch.bowing}\n fillStyle={sketch.fillStyle ?? \"solid\"}\n fill=\"#f7f6f2\"\n strokeWidth={sketch.strokeWidth ?? 1.5}\n shadow\n animate={sketch.animate}\n contentStyle={{ padding: \"6px 4px\" }}\n >\n {children}\n </SketchBox>\n </DropdownMenuPrimitive.Content>\n </DropdownMenuPrimitive.Portal>\n );\n});\n\nfunction useMark(highlighted: boolean) {\n const sketch = useDropdownMenuSketch();\n return { sketch, mark: highlighted };\n}\n\nexport interface DropdownMenuItemProps\n extends Omit<DropdownMenuPrimitive.DropdownMenuItemProps, \"asChild\"> {\n children?: ReactNode;\n inset?: boolean;\n}\n\nexport const DropdownMenuItem = forwardRef<\n HTMLDivElement,\n DropdownMenuItemProps\n>(function DropdownMenuItem(\n { className, style, children, inset, ...rest },\n ref,\n) {\n const [highlighted, setHighlighted] = useState(false);\n const { sketch, mark } = useMark(highlighted);\n\n return (\n <DropdownMenuPrimitive.Item\n ref={ref}\n className={cn(className)}\n onPointerMove={() => setHighlighted(true)}\n onPointerLeave={() => setHighlighted(false)}\n onFocus={() => setHighlighted(true)}\n onBlur={() => setHighlighted(false)}\n style={{\n position: \"relative\",\n display: \"flex\",\n alignItems: \"center\",\n gap: 8,\n padding: inset ? \"7px 12px 7px 26px\" : \"7px 12px\",\n fontFamily: doodleUiFontFamily,\n fontSize: 14,\n color: sketch.ink,\n outline: \"none\",\n cursor: \"pointer\",\n userSelect: \"none\",\n ...style,\n }}\n {...rest}\n >\n {mark ? (\n <RoughSvg\n shape=\"line\"\n roughness={(sketch.roughness ?? 1.5) + 0.4}\n seed={sketch.resolvedSeed}\n sketchColor={sketch.ink}\n bowing={sketch.bowing ?? 1.6}\n strokeWidth={1.3}\n inset={4}\n style={{ opacity: 0.4 }}\n />\n ) : null}\n <span style={{ position: \"relative\", zIndex: 1 }}>{children}</span>\n </DropdownMenuPrimitive.Item>\n );\n});\n\nexport interface DropdownMenuCheckboxItemProps\n extends Omit<\n DropdownMenuPrimitive.DropdownMenuCheckboxItemProps,\n \"asChild\"\n > {\n children?: ReactNode;\n}\n\nconst CHECK_PATH = \"M 2 6 L 5 9 L 10 3\";\n\nexport const DropdownMenuCheckboxItem = forwardRef<\n HTMLDivElement,\n DropdownMenuCheckboxItemProps\n>(function DropdownMenuCheckboxItem(\n { className, style, children, checked, ...rest },\n ref,\n) {\n const [highlighted, setHighlighted] = useState(false);\n const { sketch, mark } = useMark(highlighted);\n\n return (\n <DropdownMenuPrimitive.CheckboxItem\n ref={ref}\n checked={checked}\n className={cn(className)}\n onPointerMove={() => setHighlighted(true)}\n onPointerLeave={() => setHighlighted(false)}\n style={{\n position: \"relative\",\n display: \"flex\",\n alignItems: \"center\",\n gap: 8,\n padding: \"7px 12px 7px 26px\",\n fontFamily: doodleUiFontFamily,\n fontSize: 14,\n color: sketch.ink,\n outline: \"none\",\n cursor: \"pointer\",\n userSelect: \"none\",\n ...style,\n }}\n {...rest}\n >\n {mark ? (\n <RoughSvg\n shape=\"line\"\n roughness={(sketch.roughness ?? 1.5) + 0.4}\n seed={sketch.resolvedSeed}\n sketchColor={sketch.ink}\n bowing={sketch.bowing ?? 1.6}\n strokeWidth={1.3}\n inset={4}\n style={{ opacity: 0.4 }}\n />\n ) : null}\n <span\n style={{\n position: \"relative\",\n width: 12,\n height: 12,\n flexShrink: 0,\n marginLeft: -18,\n }}\n >\n <DropdownMenuPrimitive.ItemIndicator>\n <RoughSvg\n shape=\"path\"\n path={CHECK_PATH}\n roughness={(sketch.roughness ?? 1.5) * 0.7}\n seed={deriveSeed(sketch.resolvedSeed, \"checkbox-mark\")}\n sketchColor={SKETCH_COLORS.accent}\n bowing={sketch.bowing}\n strokeWidth={1.6}\n inset={0}\n />\n </DropdownMenuPrimitive.ItemIndicator>\n </span>\n <span style={{ position: \"relative\", zIndex: 1 }}>{children}</span>\n </DropdownMenuPrimitive.CheckboxItem>\n );\n});\n\nexport interface DropdownMenuRadioItemProps\n extends Omit<DropdownMenuPrimitive.DropdownMenuRadioItemProps, \"asChild\"> {\n children?: ReactNode;\n}\n\nexport const DropdownMenuRadioItem = forwardRef<\n HTMLDivElement,\n DropdownMenuRadioItemProps\n>(function DropdownMenuRadioItem(\n { className, style, children, ...rest },\n ref,\n) {\n const [highlighted, setHighlighted] = useState(false);\n const { sketch, mark } = useMark(highlighted);\n\n return (\n <DropdownMenuPrimitive.RadioItem\n ref={ref}\n className={cn(className)}\n onPointerMove={() => setHighlighted(true)}\n onPointerLeave={() => setHighlighted(false)}\n style={{\n position: \"relative\",\n display: \"flex\",\n alignItems: \"center\",\n gap: 8,\n padding: \"7px 12px 7px 26px\",\n fontFamily: doodleUiFontFamily,\n fontSize: 14,\n color: sketch.ink,\n outline: \"none\",\n cursor: \"pointer\",\n userSelect: \"none\",\n ...style,\n }}\n {...rest}\n >\n {mark ? (\n <RoughSvg\n shape=\"line\"\n roughness={(sketch.roughness ?? 1.5) + 0.4}\n seed={sketch.resolvedSeed}\n sketchColor={sketch.ink}\n bowing={sketch.bowing ?? 1.6}\n strokeWidth={1.3}\n inset={4}\n style={{ opacity: 0.4 }}\n />\n ) : null}\n <span\n style={{\n position: \"relative\",\n width: 8,\n height: 8,\n flexShrink: 0,\n marginLeft: -18,\n }}\n >\n <DropdownMenuPrimitive.ItemIndicator>\n <RoughSvg\n shape=\"ellipse\"\n roughness={(sketch.roughness ?? 1.5) * 0.8}\n seed={deriveSeed(sketch.resolvedSeed, \"radio-mark\")}\n sketchColor={SKETCH_COLORS.accent}\n bowing={sketch.bowing}\n fillStyle=\"solid\"\n fill={SKETCH_COLORS.accent}\n strokeWidth={1.2}\n inset={0}\n />\n </DropdownMenuPrimitive.ItemIndicator>\n </span>\n <span style={{ position: \"relative\", zIndex: 1 }}>{children}</span>\n </DropdownMenuPrimitive.RadioItem>\n );\n});\n\nexport interface DropdownMenuLabelProps\n extends Omit<DropdownMenuPrimitive.DropdownMenuLabelProps, \"asChild\"> {\n children?: ReactNode;\n}\n\nexport const DropdownMenuLabel = forwardRef<\n HTMLDivElement,\n DropdownMenuLabelProps\n>(function DropdownMenuLabel({ className, style, children, ...rest }, ref) {\n const sketch = useDropdownMenuSketch();\n return (\n <DropdownMenuPrimitive.Label\n ref={ref}\n className={cn(className)}\n style={{\n padding: \"6px 12px\",\n fontFamily: doodleUiFontFamily,\n fontSize: 12,\n fontWeight: 700,\n color: sketch.ink,\n opacity: 0.6,\n textTransform: \"uppercase\",\n letterSpacing: 0.4,\n ...style,\n }}\n {...rest}\n >\n {children}\n </DropdownMenuPrimitive.Label>\n );\n});\n\nexport interface DropdownMenuSeparatorProps\n extends Omit<DropdownMenuPrimitive.DropdownMenuSeparatorProps, \"asChild\"> {}\n\nexport const DropdownMenuSeparator = forwardRef<\n HTMLDivElement,\n DropdownMenuSeparatorProps\n>(function DropdownMenuSeparator({ className, style, ...rest }, ref) {\n const sketch = useDropdownMenuSketch();\n return (\n <DropdownMenuPrimitive.Separator\n ref={ref}\n className={cn(className)}\n style={{ position: \"relative\", height: 10, margin: \"2px 0\", ...style }}\n {...rest}\n >\n <RoughSvg\n shape=\"line\"\n roughness={(sketch.roughness ?? 1.5) + 0.2}\n seed={deriveSeed(sketch.resolvedSeed, \"separator\")}\n sketchColor={sketch.ink}\n bowing={sketch.bowing ?? 1.8}\n strokeWidth={1.2}\n inset={6}\n style={{ opacity: 0.5 }}\n />\n </DropdownMenuPrimitive.Separator>\n );\n});\n","\"use client\";\n\nimport {\n createContext,\n forwardRef,\n useContext,\n useState,\n type CSSProperties,\n type ReactNode,\n} from \"react\";\nimport * as DialogPrimitive from \"@radix-ui/react-dialog\";\nimport { AnimatePresence, motion } from \"framer-motion\";\nimport { useAnimate } from \"../animations\";\nimport { useResolvedSeed } from \"../hooks/useResolvedSeed\";\nimport { SketchBox } from \"../primitives/SketchBox\";\nimport { SKETCH_COLORS, type SketchProps } from \"../types\";\nimport { cn, doodleUiFontFamily, doodleUiFontWeight } from \"../utils\";\n\ninterface DialogSketchContextValue extends SketchProps {\n resolvedSeed: number;\n ink: string;\n animate?: boolean;\n open: boolean;\n}\n\nconst DialogSketchContext = createContext<DialogSketchContextValue | null>(\n null,\n);\n\nfunction useDialogSketch(): DialogSketchContextValue {\n const ctx = useContext(DialogSketchContext);\n if (!ctx) {\n throw new Error(\"Dialog parts must be used inside <Dialog>.\");\n }\n return ctx;\n}\n\nexport interface DialogProps\n extends Omit<DialogPrimitive.DialogProps, \"children\">,\n SketchProps {\n children?: ReactNode;\n /**\n * Backdrop fade, panel enter/exit, and border draw-in on open.\n * Defaults to the DoodleUIProvider value (true).\n */\n animate?: boolean;\n}\n\n/**\n * Lighter-weight sibling to `Modal`: a composable, shadcn-style dialog built\n * from `Dialog` / `DialogTrigger` / `DialogContent` / `DialogHeader` /\n * `DialogFooter` / `DialogTitle` / `DialogDescription` / `DialogClose`. Unlike\n * `Modal`, `DialogContent` has no forced width or shadow and no built-in\n * close button — compose your own layout inside it.\n */\nexport function Dialog({\n children,\n open,\n defaultOpen,\n onOpenChange,\n roughness,\n seed,\n sketchColor,\n bowing,\n fillStyle,\n strokeWidth,\n animate,\n ...rest\n}: DialogProps) {\n const resolvedSeed = useResolvedSeed(seed);\n const ink = sketchColor ?? SKETCH_COLORS.ink;\n const [uncontrolled, setUncontrolled] = useState(defaultOpen === true);\n const isOpen = open ?? uncontrolled;\n\n return (\n <DialogSketchContext.Provider\n value={{\n roughness,\n seed: resolvedSeed,\n sketchColor,\n bowing,\n fillStyle,\n strokeWidth,\n resolvedSeed,\n ink,\n animate,\n open: isOpen,\n }}\n >\n <DialogPrimitive.Root\n open={isOpen}\n onOpenChange={(next) => {\n setUncontrolled(next);\n onOpenChange?.(next);\n }}\n {...rest}\n >\n {children}\n </DialogPrimitive.Root>\n </DialogSketchContext.Provider>\n );\n}\n\nexport const DialogTrigger = DialogPrimitive.Trigger;\nexport const DialogPortal = DialogPrimitive.Portal;\nexport const DialogClose = DialogPrimitive.Close;\n\nexport interface DialogOverlayProps\n extends Omit<DialogPrimitive.DialogOverlayProps, \"asChild\" | \"forceMount\"> {}\n\nexport const DialogOverlay = forwardRef<HTMLDivElement, DialogOverlayProps>(\n function DialogOverlay({ style, ...rest }, ref) {\n const sketch = useDialogSketch();\n const shouldAnimate = useAnimate(sketch.animate);\n\n return (\n <DialogPrimitive.Overlay ref={ref} asChild forceMount {...rest}>\n <motion.div\n initial={shouldAnimate ? { opacity: 0 } : false}\n animate={{ opacity: 1 }}\n exit={shouldAnimate ? { opacity: 0 } : undefined}\n transition={\n shouldAnimate\n ? { duration: 0.2, ease: \"easeOut\" }\n : { duration: 0 }\n }\n style={{\n position: \"fixed\",\n inset: 0,\n background: \"rgba(31, 29, 26, 0.38)\",\n zIndex: 70,\n ...style,\n }}\n />\n </DialogPrimitive.Overlay>\n );\n },\n);\n\nexport interface DialogContentProps\n extends Omit<DialogPrimitive.DialogContentProps, \"asChild\" | \"forceMount\"> {\n children?: ReactNode;\n /** Panel width. Defaults to `min(420px, calc(100vw - 32px))`. */\n contentStyle?: CSSProperties;\n}\n\nexport const DialogContent = forwardRef<HTMLDivElement, DialogContentProps>(\n function DialogContent(\n { className, style, contentStyle, children, ...rest },\n ref,\n ) {\n const sketch = useDialogSketch();\n const shouldAnimate = useAnimate(sketch.animate);\n\n return (\n <AnimatePresence>\n {sketch.open ? (\n <DialogPrimitive.Portal forceMount>\n <DialogOverlay />\n <div\n style={{\n position: \"fixed\",\n inset: 0,\n zIndex: 80,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n pointerEvents: \"none\",\n padding: 16,\n }}\n >\n <DialogPrimitive.Content ref={ref} asChild forceMount {...rest}>\n <motion.div\n className={cn(className)}\n initial={\n shouldAnimate ? { opacity: 0, scale: 0.96, y: 10 } : false\n }\n animate={{ opacity: 1, scale: 1, y: 0 }}\n exit={\n shouldAnimate\n ? { opacity: 0, scale: 0.96, y: 8 }\n : undefined\n }\n transition={\n shouldAnimate\n ? { duration: 0.22, ease: \"easeOut\" }\n : { duration: 0 }\n }\n style={{\n width: \"min(420px, calc(100vw - 32px))\",\n outline: \"none\",\n pointerEvents: \"auto\",\n ...style,\n }}\n >\n <SketchBox\n roughness={sketch.roughness}\n seed={sketch.resolvedSeed}\n sketchColor={sketch.ink}\n bowing={sketch.bowing}\n fillStyle={sketch.fillStyle ?? \"solid\"}\n fill=\"#f7f6f2\"\n strokeWidth={sketch.strokeWidth ?? 2}\n animate={sketch.animate}\n contentStyle={{ padding: 20, ...contentStyle }}\n >\n {children}\n </SketchBox>\n </motion.div>\n </DialogPrimitive.Content>\n </div>\n </DialogPrimitive.Portal>\n ) : null}\n </AnimatePresence>\n );\n },\n);\n\nexport interface DialogHeaderProps {\n children?: ReactNode;\n className?: string;\n style?: CSSProperties;\n}\n\nexport function DialogHeader({ children, className, style }: DialogHeaderProps) {\n return (\n <div\n className={cn(className)}\n style={{\n display: \"flex\",\n flexDirection: \"column\",\n gap: 6,\n marginBottom: 12,\n ...style,\n }}\n >\n {children}\n </div>\n );\n}\n\nexport interface DialogFooterProps {\n children?: ReactNode;\n className?: string;\n style?: CSSProperties;\n}\n\nexport function DialogFooter({ children, className, style }: DialogFooterProps) {\n return (\n <div\n className={cn(className)}\n style={{\n display: \"flex\",\n justifyContent: \"flex-end\",\n gap: 8,\n marginTop: 16,\n ...style,\n }}\n >\n {children}\n </div>\n );\n}\n\nexport interface DialogTitleProps\n extends Omit<DialogPrimitive.DialogTitleProps, \"asChild\"> {}\n\nexport const DialogTitle = forwardRef<HTMLHeadingElement, DialogTitleProps>(\n function DialogTitle({ style, ...rest }, ref) {\n const sketch = useDialogSketch();\n return (\n <DialogPrimitive.Title\n ref={ref}\n style={{\n margin: 0,\n fontSize: 18,\n fontWeight: doodleUiFontWeight(700),\n fontFamily: doodleUiFontFamily,\n color: sketch.ink,\n ...style,\n }}\n {...rest}\n />\n );\n },\n);\n\nexport interface DialogDescriptionProps\n extends Omit<DialogPrimitive.DialogDescriptionProps, \"asChild\"> {}\n\nexport const DialogDescription = forwardRef<\n HTMLParagraphElement,\n DialogDescriptionProps\n>(function DialogDescription({ style, ...rest }, ref) {\n const sketch = useDialogSketch();\n return (\n <DialogPrimitive.Description\n ref={ref}\n style={{\n margin: 0,\n fontSize: 14,\n lineHeight: 1.5,\n fontFamily: doodleUiFontFamily,\n color: sketch.ink,\n opacity: 0.8,\n ...style,\n }}\n {...rest}\n />\n );\n});\n","\"use client\";\n\nimport {\n createContext,\n forwardRef,\n useContext,\n useState,\n type CSSProperties,\n type ReactNode,\n} from \"react\";\nimport * as AlertDialogPrimitive from \"@radix-ui/react-alert-dialog\";\nimport { AnimatePresence, motion } from \"framer-motion\";\nimport { useAnimate } from \"../animations\";\nimport { useResolvedSeed } from \"../hooks/useResolvedSeed\";\nimport { SketchBox } from \"../primitives/SketchBox\";\nimport { SKETCH_COLORS, type SketchProps } from \"../types\";\nimport { cn, doodleUiFontFamily, doodleUiFontWeight } from \"../utils\";\nimport { Button } from \"./Button\";\n\ninterface AlertDialogSketchContextValue extends SketchProps {\n resolvedSeed: number;\n ink: string;\n animate?: boolean;\n open: boolean;\n}\n\nconst AlertDialogSketchContext =\n createContext<AlertDialogSketchContextValue | null>(null);\n\nfunction useAlertDialogSketch(): AlertDialogSketchContextValue {\n const ctx = useContext(AlertDialogSketchContext);\n if (!ctx) {\n throw new Error(\n \"AlertDialog parts must be used inside <AlertDialog>.\",\n );\n }\n return ctx;\n}\n\nexport interface AlertDialogProps\n extends Omit<AlertDialogPrimitive.AlertDialogProps, \"children\">,\n SketchProps {\n children?: ReactNode;\n /**\n * Backdrop fade, panel enter/exit, and border draw-in on open.\n * Defaults to the DoodleUIProvider value (true).\n */\n animate?: boolean;\n}\n\n/**\n * Confirm / destructive-action variant of `Dialog`. Same composable shape,\n * but Radix's alert dialog primitive requires an explicit action — there is\n * no dismiss-on-outside-click or Escape by default, and `AlertDialogAction`\n * / `AlertDialogCancel` give the confirm button visual emphasis.\n */\nexport function AlertDialog({\n children,\n open,\n defaultOpen,\n onOpenChange,\n roughness,\n seed,\n sketchColor,\n bowing,\n fillStyle,\n strokeWidth,\n animate,\n ...rest\n}: AlertDialogProps) {\n const resolvedSeed = useResolvedSeed(seed);\n const ink = sketchColor ?? SKETCH_COLORS.ink;\n const [uncontrolled, setUncontrolled] = useState(defaultOpen === true);\n const isOpen = open ?? uncontrolled;\n\n return (\n <AlertDialogSketchContext.Provider\n value={{\n roughness,\n seed: resolvedSeed,\n sketchColor,\n bowing,\n fillStyle,\n strokeWidth,\n resolvedSeed,\n ink,\n animate,\n open: isOpen,\n }}\n >\n <AlertDialogPrimitive.Root\n open={isOpen}\n onOpenChange={(next) => {\n setUncontrolled(next);\n onOpenChange?.(next);\n }}\n {...rest}\n >\n {children}\n </AlertDialogPrimitive.Root>\n </AlertDialogSketchContext.Provider>\n );\n}\n\nexport const AlertDialogTrigger = AlertDialogPrimitive.Trigger;\nexport const AlertDialogPortal = AlertDialogPrimitive.Portal;\n\nexport interface AlertDialogOverlayProps\n extends Omit<\n AlertDialogPrimitive.AlertDialogOverlayProps,\n \"asChild\" | \"forceMount\"\n > {}\n\nexport const AlertDialogOverlay = forwardRef<\n HTMLDivElement,\n AlertDialogOverlayProps\n>(function AlertDialogOverlay({ style, ...rest }, ref) {\n const sketch = useAlertDialogSketch();\n const shouldAnimate = useAnimate(sketch.animate);\n\n return (\n <AlertDialogPrimitive.Overlay ref={ref} asChild forceMount {...rest}>\n <motion.div\n initial={shouldAnimate ? { opacity: 0 } : false}\n animate={{ opacity: 1 }}\n exit={shouldAnimate ? { opacity: 0 } : undefined}\n transition={\n shouldAnimate ? { duration: 0.2, ease: \"easeOut\" } : { duration: 0 }\n }\n style={{\n position: \"fixed\",\n inset: 0,\n background: \"rgba(31, 29, 26, 0.38)\",\n zIndex: 70,\n ...style,\n }}\n />\n </AlertDialogPrimitive.Overlay>\n );\n});\n\nexport interface AlertDialogContentProps\n extends Omit<\n AlertDialogPrimitive.AlertDialogContentProps,\n \"asChild\" | \"forceMount\"\n > {\n children?: ReactNode;\n contentStyle?: CSSProperties;\n}\n\nexport const AlertDialogContent = forwardRef<\n HTMLDivElement,\n AlertDialogContentProps\n>(function AlertDialogContent(\n { className, style, contentStyle, children, ...rest },\n ref,\n) {\n const sketch = useAlertDialogSketch();\n const shouldAnimate = useAnimate(sketch.animate);\n\n return (\n <AnimatePresence>\n {sketch.open ? (\n <AlertDialogPrimitive.Portal forceMount>\n <AlertDialogOverlay />\n <div\n style={{\n position: \"fixed\",\n inset: 0,\n zIndex: 80,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n pointerEvents: \"none\",\n padding: 16,\n }}\n >\n <AlertDialogPrimitive.Content ref={ref} asChild forceMount {...rest}>\n <motion.div\n className={cn(className)}\n initial={\n shouldAnimate ? { opacity: 0, scale: 0.96, y: 10 } : false\n }\n animate={{ opacity: 1, scale: 1, y: 0 }}\n exit={\n shouldAnimate ? { opacity: 0, scale: 0.96, y: 8 } : undefined\n }\n transition={\n shouldAnimate\n ? { duration: 0.22, ease: \"easeOut\" }\n : { duration: 0 }\n }\n style={{\n width: \"min(420px, calc(100vw - 32px))\",\n outline: \"none\",\n pointerEvents: \"auto\",\n ...style,\n }}\n >\n <SketchBox\n roughness={sketch.roughness}\n seed={sketch.resolvedSeed}\n sketchColor={sketch.ink}\n bowing={sketch.bowing}\n fillStyle={sketch.fillStyle ?? \"solid\"}\n fill=\"#f7f6f2\"\n strokeWidth={sketch.strokeWidth ?? 2}\n animate={sketch.animate}\n contentStyle={{ padding: 20, ...contentStyle }}\n >\n {children}\n </SketchBox>\n </motion.div>\n </AlertDialogPrimitive.Content>\n </div>\n </AlertDialogPrimitive.Portal>\n ) : null}\n </AnimatePresence>\n );\n});\n\nexport interface AlertDialogHeaderProps {\n children?: ReactNode;\n className?: string;\n style?: CSSProperties;\n}\n\nexport function AlertDialogHeader({\n children,\n className,\n style,\n}: AlertDialogHeaderProps) {\n return (\n <div\n className={cn(className)}\n style={{\n display: \"flex\",\n flexDirection: \"column\",\n gap: 6,\n marginBottom: 12,\n ...style,\n }}\n >\n {children}\n </div>\n );\n}\n\nexport interface AlertDialogFooterProps {\n children?: ReactNode;\n className?: string;\n style?: CSSProperties;\n}\n\nexport function AlertDialogFooter({\n children,\n className,\n style,\n}: AlertDialogFooterProps) {\n return (\n <div\n className={cn(className)}\n style={{\n display: \"flex\",\n justifyContent: \"flex-end\",\n gap: 8,\n marginTop: 16,\n ...style,\n }}\n >\n {children}\n </div>\n );\n}\n\nexport interface AlertDialogTitleProps\n extends Omit<AlertDialogPrimitive.AlertDialogTitleProps, \"asChild\"> {}\n\nexport const AlertDialogTitle = forwardRef<\n HTMLHeadingElement,\n AlertDialogTitleProps\n>(function AlertDialogTitle({ style, ...rest }, ref) {\n const sketch = useAlertDialogSketch();\n return (\n <AlertDialogPrimitive.Title\n ref={ref}\n style={{\n margin: 0,\n fontSize: 18,\n fontWeight: doodleUiFontWeight(700),\n fontFamily: doodleUiFontFamily,\n color: sketch.ink,\n ...style,\n }}\n {...rest}\n />\n );\n});\n\nexport interface AlertDialogDescriptionProps\n extends Omit<AlertDialogPrimitive.AlertDialogDescriptionProps, \"asChild\"> {}\n\nexport const AlertDialogDescription = forwardRef<\n HTMLParagraphElement,\n AlertDialogDescriptionProps\n>(function AlertDialogDescription({ style, ...rest }, ref) {\n const sketch = useAlertDialogSketch();\n return (\n <AlertDialogPrimitive.Description\n ref={ref}\n style={{\n margin: 0,\n fontSize: 14,\n lineHeight: 1.5,\n fontFamily: doodleUiFontFamily,\n color: sketch.ink,\n opacity: 0.8,\n ...style,\n }}\n {...rest}\n />\n );\n});\n\nexport interface AlertDialogActionProps\n extends Omit<AlertDialogPrimitive.AlertDialogActionProps, \"asChild\"> {}\n\nexport const AlertDialogAction = forwardRef<\n HTMLButtonElement,\n AlertDialogActionProps\n>(function AlertDialogAction({ children, ...rest }, ref) {\n const sketch = useAlertDialogSketch();\n return (\n <AlertDialogPrimitive.Action asChild>\n <Button\n ref={ref}\n variant=\"primary\"\n sketchColor={sketch.sketchColor}\n roughness={sketch.roughness}\n seed={sketch.resolvedSeed}\n bowing={sketch.bowing}\n animate={sketch.animate}\n {...rest}\n >\n {children}\n </Button>\n </AlertDialogPrimitive.Action>\n );\n});\n\nexport interface AlertDialogCancelProps\n extends Omit<AlertDialogPrimitive.AlertDialogCancelProps, \"asChild\"> {}\n\nexport const AlertDialogCancel = forwardRef<\n HTMLButtonElement,\n AlertDialogCancelProps\n>(function AlertDialogCancel({ children, ...rest }, ref) {\n const sketch = useAlertDialogSketch();\n return (\n <AlertDialogPrimitive.Cancel asChild>\n <Button\n ref={ref}\n variant=\"outline\"\n sketchColor={sketch.sketchColor}\n roughness={sketch.roughness}\n seed={sketch.resolvedSeed}\n bowing={sketch.bowing}\n animate={sketch.animate}\n {...rest}\n >\n {children}\n </Button>\n </AlertDialogPrimitive.Cancel>\n );\n});\n","\"use client\";\n\nimport {\n createContext,\n forwardRef,\n useContext,\n useState,\n type ComponentPropsWithoutRef,\n type ReactNode,\n} from \"react\";\nimport {\n Command as CmdkCommand,\n CommandEmpty as CmdkEmpty,\n CommandGroup as CmdkGroup,\n CommandInput as CmdkInput,\n CommandItem as CmdkItem,\n CommandList as CmdkList,\n CommandSeparator as CmdkSeparator,\n} from \"cmdk\";\nimport { useResolvedSeed } from \"../hooks/useResolvedSeed\";\nimport { RoughSvg } from \"../primitives/RoughSvg\";\nimport { SketchBox } from \"../primitives/SketchBox\";\nimport { SKETCH_COLORS, type SketchProps } from \"../types\";\nimport { cn, deriveSeed, doodleUiFontFamily } from \"../utils\";\n\ninterface CommandSketchContextValue extends SketchProps {\n resolvedSeed: number;\n ink: string;\n animate?: boolean;\n}\n\nconst CommandSketchContext = createContext<CommandSketchContextValue | null>(\n null,\n);\n\nfunction useCommandSketch(): CommandSketchContextValue {\n const ctx = useContext(CommandSketchContext);\n if (!ctx) {\n throw new Error(\"Command parts must be used inside <Command>.\");\n }\n return ctx;\n}\n\nexport interface CommandProps\n extends Omit<ComponentPropsWithoutRef<typeof CmdkCommand>, \"asChild\">,\n SketchProps {\n children?: ReactNode;\n /**\n * Draw-in the panel border on mount.\n * Defaults to the DoodleUIProvider value (true).\n */\n animate?: boolean;\n}\n\n/**\n * Command palette / cmd+k style searchable list, built on `cmdk` with a\n * `SketchBox` frame. Compose with `CommandInput`, `CommandList`,\n * `CommandEmpty`, `CommandGroup`, `CommandItem`, `CommandSeparator`.\n */\nexport const Command = forwardRef<HTMLDivElement, CommandProps>(\n function Command(\n {\n className,\n style,\n children,\n roughness,\n seed,\n sketchColor,\n bowing,\n fillStyle,\n strokeWidth,\n animate,\n ...rest\n },\n ref,\n ) {\n const resolvedSeed = useResolvedSeed(seed);\n const ink = sketchColor ?? SKETCH_COLORS.ink;\n\n return (\n <CommandSketchContext.Provider\n value={{\n roughness,\n seed: resolvedSeed,\n sketchColor,\n bowing,\n fillStyle,\n strokeWidth,\n resolvedSeed,\n ink,\n animate,\n }}\n >\n <SketchBox\n className={cn(className)}\n style={style}\n roughness={roughness}\n seed={resolvedSeed}\n sketchColor={ink}\n bowing={bowing}\n fillStyle={fillStyle ?? \"solid\"}\n fill=\"#f7f6f2\"\n strokeWidth={strokeWidth ?? 1.5}\n animate={animate}\n contentStyle={{ padding: 0, display: \"flex\", flexDirection: \"column\" }}\n >\n <CmdkCommand ref={ref} {...rest}>\n {children}\n </CmdkCommand>\n </SketchBox>\n </CommandSketchContext.Provider>\n );\n },\n);\n\nexport interface CommandInputProps\n extends Omit<ComponentPropsWithoutRef<typeof CmdkInput>, \"asChild\"> {}\n\nexport const CommandInput = forwardRef<HTMLInputElement, CommandInputProps>(\n function CommandInput({ className, style, ...rest }, ref) {\n const sketch = useCommandSketch();\n return (\n <div style={{ position: \"relative\", padding: \"10px 12px 12px\" }}>\n <CmdkInput\n ref={ref}\n className={cn(className)}\n style={{\n width: \"100%\",\n boxSizing: \"border-box\",\n border: \"none\",\n outline: \"none\",\n background: \"transparent\",\n color: sketch.ink,\n fontFamily: doodleUiFontFamily,\n fontSize: 15,\n padding: \"2px 2px 8px\",\n ...style,\n }}\n {...rest}\n />\n <RoughSvg\n shape=\"line\"\n roughness={(sketch.roughness ?? 1.5) + 0.2}\n seed={deriveSeed(sketch.resolvedSeed, \"command-divider\")}\n sketchColor={sketch.ink}\n bowing={sketch.bowing ?? 1.6}\n strokeWidth={1.2}\n inset={4}\n style={{ position: \"absolute\", bottom: 0, left: 0, right: 0, height: 8, opacity: 0.4 }}\n />\n </div>\n );\n },\n);\n\nexport interface CommandListProps\n extends Omit<ComponentPropsWithoutRef<typeof CmdkList>, \"asChild\"> {}\n\nexport const CommandList = forwardRef<HTMLDivElement, CommandListProps>(\n function CommandList({ className, style, ...rest }, ref) {\n return (\n <CmdkList\n ref={ref}\n className={cn(className)}\n style={{\n maxHeight: 280,\n overflowY: \"auto\",\n padding: \"4px 4px 8px\",\n ...style,\n }}\n {...rest}\n />\n );\n },\n);\n\nexport interface CommandEmptyProps\n extends Omit<ComponentPropsWithoutRef<typeof CmdkEmpty>, \"asChild\"> {}\n\nexport const CommandEmpty = forwardRef<HTMLDivElement, CommandEmptyProps>(\n function CommandEmpty({ className, style, ...rest }, ref) {\n const sketch = useCommandSketch();\n return (\n <CmdkEmpty\n ref={ref}\n className={cn(className)}\n style={{\n padding: \"16px 12px\",\n textAlign: \"center\",\n fontFamily: doodleUiFontFamily,\n fontSize: 14,\n color: sketch.ink,\n opacity: 0.6,\n ...style,\n }}\n {...rest}\n />\n );\n },\n);\n\nexport interface CommandGroupProps\n extends Omit<ComponentPropsWithoutRef<typeof CmdkGroup>, \"asChild\"> {}\n\nexport const CommandGroup = forwardRef<HTMLDivElement, CommandGroupProps>(\n function CommandGroup({ className, style, ...rest }, ref) {\n const sketch = useCommandSketch();\n return (\n <CmdkGroup\n ref={ref}\n className={cn(className)}\n style={{ padding: \"4px 2px\", color: sketch.ink, ...style }}\n {...rest}\n />\n );\n },\n);\n\nexport interface CommandItemProps\n extends Omit<ComponentPropsWithoutRef<typeof CmdkItem>, \"asChild\"> {}\n\nexport const CommandItem = forwardRef<HTMLDivElement, CommandItemProps>(\n function CommandItem(\n { className, style, children, onMouseEnter, onMouseLeave, ...rest },\n ref,\n ) {\n const sketch = useCommandSketch();\n const [highlighted, setHighlighted] = useState(false);\n\n return (\n <CmdkItem\n ref={ref}\n className={cn(className)}\n onMouseEnter={(event) => {\n setHighlighted(true);\n onMouseEnter?.(event);\n }}\n onMouseLeave={(event) => {\n setHighlighted(false);\n onMouseLeave?.(event);\n }}\n style={{\n position: \"relative\",\n display: \"flex\",\n alignItems: \"center\",\n gap: 8,\n padding: \"7px 10px\",\n borderRadius: 4,\n fontFamily: doodleUiFontFamily,\n fontSize: 14,\n color: sketch.ink,\n cursor: \"pointer\",\n userSelect: \"none\",\n outline: \"none\",\n ...style,\n }}\n {...rest}\n >\n {highlighted ? (\n <RoughSvg\n shape=\"line\"\n roughness={(sketch.roughness ?? 1.5) + 0.4}\n seed={sketch.resolvedSeed}\n sketchColor={sketch.ink}\n bowing={sketch.bowing ?? 1.6}\n strokeWidth={1.3}\n inset={3}\n style={{ opacity: 0.4 }}\n />\n ) : null}\n <span style={{ position: \"relative\", zIndex: 1, flex: 1 }}>\n {children}\n </span>\n </CmdkItem>\n );\n },\n);\n\nexport interface CommandSeparatorProps\n extends Omit<ComponentPropsWithoutRef<typeof CmdkSeparator>, \"asChild\"> {}\n\nexport const CommandSeparator = forwardRef<\n HTMLDivElement,\n CommandSeparatorProps\n>(function CommandSeparator({ className, style, ...rest }, ref) {\n const sketch = useCommandSketch();\n return (\n <CmdkSeparator\n ref={ref}\n className={cn(className)}\n style={{ position: \"relative\", height: 10, margin: \"2px 4px\", ...style }}\n {...rest}\n >\n <RoughSvg\n shape=\"line\"\n roughness={(sketch.roughness ?? 1.5) + 0.2}\n seed={deriveSeed(sketch.resolvedSeed, \"command-separator\")}\n sketchColor={sketch.ink}\n bowing={sketch.bowing ?? 1.8}\n strokeWidth={1.2}\n inset={4}\n style={{ opacity: 0.4 }}\n />\n </CmdkSeparator>\n );\n});\n\nexport function CommandShortcut({\n children,\n className,\n style,\n}: {\n children?: ReactNode;\n className?: string;\n style?: React.CSSProperties;\n}) {\n const sketch = useCommandSketch();\n return (\n <span\n className={cn(className)}\n style={{\n marginLeft: \"auto\",\n fontFamily: doodleUiFontFamily,\n fontSize: 12,\n color: sketch.ink,\n opacity: 0.5,\n letterSpacing: 0.4,\n ...style,\n }}\n >\n {children}\n </span>\n );\n}\n","\"use client\";\n\nimport { useRef, useState, type CSSProperties, type ReactNode } from \"react\";\nimport * as PopoverPrimitive from \"@radix-ui/react-popover\";\nimport {\n DRAW_IN_DURATION_MS,\n useAnimate,\n useDrawIn,\n} from \"../animations\";\nimport { useResolvedSeed } from \"../hooks/useResolvedSeed\";\nimport { RoughSvg } from \"../primitives/RoughSvg\";\nimport { SKETCH_COLORS, type SketchProps } from \"../types\";\nimport { assignRef, cn, doodleUiFontFamily } from \"../utils\";\nimport {\n Command,\n CommandEmpty,\n CommandGroup,\n CommandInput,\n CommandItem,\n CommandList,\n} from \"./Command\";\nimport type { SelectOption } from \"./Select\";\n\nconst CHEVRON_PATH = \"M 4 6 L 10 12 L 16 6\";\n\nexport interface ComboboxProps extends SketchProps {\n options: SelectOption[];\n placeholder?: string;\n searchPlaceholder?: string;\n emptyMessage?: ReactNode;\n value?: string;\n defaultValue?: string;\n onValueChange?: (value: string) => void;\n disabled?: boolean;\n className?: string;\n style?: CSSProperties;\n \"aria-label\"?: string;\n /**\n * Draw-in the trigger on mount and the popover border on open.\n * Defaults to the DoodleUIProvider value (true).\n */\n animate?: boolean;\n}\n\n/**\n * Searchable select. Composes `Popover` (positioning) + `Command` (cmdk\n * filtering/list) behind a sketchy `Input`-styled trigger button — the same\n * recipe shadcn uses, since Radix has no dedicated Combobox primitive.\n */\nexport function Combobox({\n options,\n placeholder = \"Select…\",\n searchPlaceholder = \"Search…\",\n emptyMessage = \"No results.\",\n value,\n defaultValue,\n onValueChange,\n disabled,\n className,\n style,\n roughness,\n seed,\n sketchColor,\n bowing,\n fillStyle,\n strokeWidth,\n animate,\n \"aria-label\": ariaLabel,\n}: ComboboxProps) {\n const [open, setOpen] = useState(false);\n const [uncontrolled, setUncontrolled] = useState(defaultValue);\n const selectedValue = value ?? uncontrolled;\n const selectedOption = options.find(\n (option) => option.value === selectedValue,\n );\n\n const ink = sketchColor ?? SKETCH_COLORS.ink;\n const resolvedSeed = useResolvedSeed(seed);\n const shouldAnimate = useAnimate(animate);\n const triggerRef = useRef<HTMLButtonElement>(null);\n useDrawIn(triggerRef, DRAW_IN_DURATION_MS, shouldAnimate);\n\n function handleSelect(nextValue: string) {\n setUncontrolled(nextValue);\n onValueChange?.(nextValue);\n setOpen(false);\n }\n\n return (\n <PopoverPrimitive.Root open={open} onOpenChange={setOpen}>\n <PopoverPrimitive.Trigger asChild>\n <button\n ref={(node) => assignRef(triggerRef as never, node)}\n type=\"button\"\n role=\"combobox\"\n aria-expanded={open}\n aria-label={ariaLabel}\n disabled={disabled}\n className={cn(className)}\n style={{\n position: \"relative\",\n display: \"inline-flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n gap: 12,\n width: \"100%\",\n minWidth: 200,\n minHeight: 38,\n padding: \"8px 12px\",\n border: \"none\",\n background: \"transparent\",\n cursor: disabled ? \"not-allowed\" : \"pointer\",\n opacity: disabled ? 0.5 : 1,\n color: ink,\n fontFamily: doodleUiFontFamily,\n fontSize: 15,\n lineHeight: 1.2,\n outline: \"none\",\n textAlign: \"left\",\n ...style,\n }}\n >\n <RoughSvg\n shape=\"rectangle\"\n roughness={roughness}\n seed={resolvedSeed}\n sketchColor={open ? SKETCH_COLORS.accent : ink}\n bowing={bowing}\n fillStyle={fillStyle}\n strokeWidth={open ? (strokeWidth ?? 1.75) + 0.35 : strokeWidth}\n />\n <span\n style={{\n position: \"relative\",\n zIndex: 1,\n flex: 1,\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n whiteSpace: \"nowrap\",\n }}\n >\n {selectedOption?.label ?? placeholder}\n </span>\n <span\n style={{ position: \"relative\", zIndex: 1, width: 18, height: 18, flexShrink: 0 }}\n >\n <RoughSvg\n shape=\"path\"\n path={CHEVRON_PATH}\n roughness={roughness ? roughness * 0.7 : 1.05}\n seed={resolvedSeed}\n sketchColor={ink}\n bowing={bowing}\n strokeWidth={(strokeWidth ?? 1.6) + 0.2}\n inset={0}\n />\n </span>\n </button>\n </PopoverPrimitive.Trigger>\n <PopoverPrimitive.Portal>\n <PopoverPrimitive.Content\n align=\"start\"\n sideOffset={8}\n style={{\n zIndex: 80,\n outline: \"none\",\n width: \"var(--radix-popover-trigger-width)\",\n }}\n >\n <Command\n roughness={roughness}\n seed={resolvedSeed}\n sketchColor={ink}\n bowing={bowing}\n fillStyle={fillStyle}\n strokeWidth={strokeWidth}\n animate={animate}\n >\n <CommandInput placeholder={searchPlaceholder} />\n <CommandList>\n <CommandEmpty>{emptyMessage}</CommandEmpty>\n <CommandGroup>\n {options.map((option) => (\n <CommandItem\n key={option.value}\n value={option.value}\n disabled={option.disabled}\n onSelect={handleSelect}\n >\n {option.label}\n </CommandItem>\n ))}\n </CommandGroup>\n </CommandList>\n </Command>\n </PopoverPrimitive.Content>\n </PopoverPrimitive.Portal>\n </PopoverPrimitive.Root>\n );\n}\n","\"use client\";\n\nimport { forwardRef, type HTMLAttributes } from \"react\";\nimport { SketchBox } from \"../primitives/SketchBox\";\nimport { SKETCH_COLORS, type SketchProps } from \"../types\";\nimport { cn, doodleUiFontFamily } from \"../utils\";\n\nexport interface KbdProps\n extends Omit<HTMLAttributes<HTMLElement>, \"color\">,\n SketchProps {\n /**\n * Draw-in the border on mount. Defaults to the DoodleUIProvider value (true).\n */\n animate?: boolean;\n}\n\nexport const Kbd = forwardRef<HTMLElement, KbdProps>(function Kbd(\n {\n children,\n className,\n style,\n roughness,\n seed,\n sketchColor,\n bowing,\n fillStyle,\n strokeWidth,\n animate,\n ...rest\n },\n ref,\n) {\n const ink = sketchColor ?? SKETCH_COLORS.ink;\n\n return (\n <SketchBox\n className={cn(className)}\n style={{\n display: \"inline-flex\",\n verticalAlign: \"middle\",\n ...style,\n }}\n contentStyle={{\n padding: \"2px 7px\",\n fontSize: 11,\n fontFamily: doodleUiFontFamily,\n lineHeight: 1.35,\n letterSpacing: \"0.04em\",\n }}\n fill={SKETCH_COLORS.secondaryFill}\n fillStyle={fillStyle ?? \"hachure\"}\n roughness={roughness}\n seed={seed}\n sketchColor={ink}\n bowing={bowing}\n strokeWidth={strokeWidth ?? 1.3}\n animate={animate}\n {...rest}\n >\n <kbd\n ref={ref}\n style={{\n border: \"none\",\n background: \"transparent\",\n padding: 0,\n font: \"inherit\",\n color: \"inherit\",\n }}\n >\n {children}\n </kbd>\n </SketchBox>\n );\n});\n","\"use client\";\n\nimport { forwardRef, type CSSProperties, type HTMLAttributes } from \"react\";\nimport { motion } from \"framer-motion\";\nimport { useAnimate } from \"../animations\";\nimport { useResolvedSeed } from \"../hooks/useResolvedSeed\";\nimport { RoughSvg } from \"../primitives/RoughSvg\";\nimport { SKETCH_COLORS, type SketchProps } from \"../types\";\nimport { cn } from \"../utils\";\n\n/** Partial circle arc for a 24×24 viewBox */\nconst SPINNER_ARC = \"M 12 3 A 9 9 0 1 1 11.5 3\";\n\nexport type SpinnerSize = \"sm\" | \"md\" | \"lg\";\n\nconst SIZE_PX: Record<SpinnerSize, number> = {\n sm: 18,\n md: 24,\n lg: 32,\n};\n\nexport interface SpinnerProps\n extends Omit<HTMLAttributes<HTMLDivElement>, \"color\">,\n SketchProps {\n size?: SpinnerSize;\n /**\n * Continuous rotation. Defaults to the DoodleUIProvider value (true).\n * Reduced motion shows a static arc.\n */\n animate?: boolean;\n}\n\nexport const Spinner = forwardRef<HTMLDivElement, SpinnerProps>(\n function Spinner(\n {\n className,\n style,\n size = \"md\",\n roughness,\n seed,\n sketchColor,\n bowing,\n fillStyle,\n strokeWidth,\n animate,\n ...rest\n },\n ref,\n ) {\n const px = SIZE_PX[size];\n const resolvedSeed = useResolvedSeed(seed);\n const ink = sketchColor ?? SKETCH_COLORS.ink;\n const shouldSpin = useAnimate(animate);\n\n const boxStyle: CSSProperties = {\n position: \"relative\",\n width: px,\n height: px,\n flexShrink: 0,\n display: \"inline-block\",\n ...style,\n };\n\n const arc = (\n <RoughSvg\n shape=\"path\"\n path={SPINNER_ARC}\n width={px}\n height={px}\n roughness={roughness ?? 1.6}\n seed={resolvedSeed}\n sketchColor={ink}\n bowing={bowing ?? 1.2}\n fillStyle={fillStyle}\n strokeWidth={strokeWidth ?? 2}\n inset={2}\n />\n );\n\n return (\n <div\n ref={ref}\n role=\"status\"\n aria-label=\"Loading\"\n className={cn(className)}\n style={boxStyle}\n {...rest}\n >\n {shouldSpin ? (\n <motion.div\n style={{ position: \"absolute\", inset: 0 }}\n animate={{ rotate: 360 }}\n transition={{\n duration: 0.9,\n ease: \"linear\",\n repeat: Infinity,\n }}\n >\n {arc}\n </motion.div>\n ) : (\n arc\n )}\n </div>\n );\n },\n);\n","\"use client\";\n\nimport {\n forwardRef,\n useRef,\n useState,\n type MutableRefObject,\n} from \"react\";\nimport * as TogglePrimitive from \"@radix-ui/react-toggle\";\nimport {\n DRAW_IN_DURATION_MS,\n useAnimate,\n useDrawIn,\n} from \"../animations\";\nimport { useResolvedSeed } from \"../hooks/useResolvedSeed\";\nimport { RoughSvg } from \"../primitives/RoughSvg\";\nimport { SKETCH_COLORS, type SketchProps } from \"../types\";\nimport { assignRef, cn, deriveSeed, doodleUiFontFamily, doodleUiFontWeight } from \"../utils\";\n\nexport type ToggleSize = \"sm\" | \"md\" | \"lg\";\n\nconst SIZE_STYLES: Record<ToggleSize, { fontSize: number; padding: string; minHeight: number }> =\n {\n sm: { fontSize: 13, padding: \"4px 10px\", minHeight: 30 },\n md: { fontSize: 15, padding: \"7px 14px\", minHeight: 38 },\n lg: { fontSize: 17, padding: \"10px 18px\", minHeight: 46 },\n };\n\nexport interface ToggleProps\n extends Omit<TogglePrimitive.ToggleProps, \"asChild\">,\n SketchProps {\n size?: ToggleSize;\n /**\n * Draw-in on mount and seed morph on press.\n * Defaults to the DoodleUIProvider value (true).\n */\n animate?: boolean;\n}\n\nexport const Toggle = forwardRef<HTMLButtonElement, ToggleProps>(\n function Toggle(\n {\n className,\n style,\n size = \"md\",\n roughness,\n seed,\n sketchColor,\n bowing,\n fillStyle,\n strokeWidth,\n pressed,\n defaultPressed,\n onPressedChange,\n disabled,\n animate,\n children,\n ...rest\n },\n ref,\n ) {\n const rootRef = useRef<HTMLButtonElement>(null);\n const [uncontrolled, setUncontrolled] = useState(defaultPressed === true);\n const isPressed = pressed ?? uncontrolled;\n const ink = sketchColor ?? SKETCH_COLORS.ink;\n const resolvedSeed = useResolvedSeed(seed);\n const shouldAnimate = useAnimate(animate);\n const pressSeed = deriveSeed(resolvedSeed, isPressed ? \"on\" : \"off\");\n const sketchSeed = shouldAnimate ? pressSeed : resolvedSeed;\n\n useDrawIn(rootRef, DRAW_IN_DURATION_MS, shouldAnimate, sketchSeed);\n\n return (\n <TogglePrimitive.Root\n ref={(node) => {\n (rootRef as MutableRefObject<HTMLButtonElement | null>).current = node;\n assignRef(ref, node);\n }}\n pressed={pressed}\n defaultPressed={defaultPressed}\n onPressedChange={(next) => {\n setUncontrolled(next);\n onPressedChange?.(next);\n }}\n disabled={disabled}\n className={cn(className)}\n style={{\n position: \"relative\",\n display: \"inline-flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n border: \"none\",\n background: \"transparent\",\n cursor: disabled ? \"not-allowed\" : \"pointer\",\n color: ink,\n fontFamily: doodleUiFontFamily,\n fontWeight: doodleUiFontWeight(600),\n opacity: disabled ? 0.45 : 1,\n outline: \"none\",\n ...SIZE_STYLES[size],\n ...style,\n }}\n {...rest}\n >\n <RoughSvg\n shape=\"rectangle\"\n roughness={roughness}\n seed={sketchSeed}\n sketchColor={isPressed ? SKETCH_COLORS.accent : ink}\n bowing={bowing}\n fillStyle={fillStyle ?? \"hachure\"}\n fill={isPressed ? SKETCH_COLORS.accentFill : undefined}\n strokeWidth={strokeWidth ?? 1.6}\n />\n <span style={{ position: \"relative\", zIndex: 1 }}>{children}</span>\n </TogglePrimitive.Root>\n );\n },\n);\n","\"use client\";\n\nimport {\n createContext,\n forwardRef,\n useContext,\n useLayoutEffect,\n useRef,\n useState,\n type MutableRefObject,\n type ReactNode,\n} from \"react\";\nimport * as ToggleGroupPrimitive from \"@radix-ui/react-toggle-group\";\nimport {\n DRAW_IN_DURATION_MS,\n useAnimate,\n useDrawIn,\n} from \"../animations\";\nimport { useResolvedSeed } from \"../hooks/useResolvedSeed\";\nimport { RoughSvg } from \"../primitives/RoughSvg\";\nimport { SKETCH_COLORS, type SketchProps } from \"../types\";\nimport { cn, assignRef, deriveSeed, doodleUiFontFamily, doodleUiFontWeight } from \"../utils\";\nimport type { ToggleSize } from \"./Toggle\";\n\ninterface ToggleGroupSketchContextValue extends SketchProps {\n resolvedSeed: number;\n ink: string;\n animate?: boolean;\n size: ToggleSize;\n}\n\nconst ToggleGroupSketchContext =\n createContext<ToggleGroupSketchContextValue | null>(null);\n\nfunction useToggleGroupSketch(): ToggleGroupSketchContextValue {\n const ctx = useContext(ToggleGroupSketchContext);\n if (!ctx) {\n throw new Error(\"ToggleGroupItem must be used inside <ToggleGroup>.\");\n }\n return ctx;\n}\n\nexport type ToggleGroupProps = SketchProps & {\n children?: ReactNode;\n size?: ToggleSize;\n animate?: boolean;\n} & (\n | ({ type?: \"single\" } & Omit<\n ToggleGroupPrimitive.ToggleGroupSingleProps,\n \"type\" | \"children\"\n >)\n | ({ type: \"multiple\" } & Omit<\n ToggleGroupPrimitive.ToggleGroupMultipleProps,\n \"type\" | \"children\"\n >)\n);\n\nexport function ToggleGroup(props: ToggleGroupProps) {\n const {\n children,\n roughness,\n seed,\n sketchColor,\n bowing,\n fillStyle,\n strokeWidth,\n size = \"md\",\n animate,\n type = \"single\",\n ...rest\n } = props;\n const resolvedSeed = useResolvedSeed(seed);\n const ink = sketchColor ?? SKETCH_COLORS.ink;\n\n const rootStyle = { display: \"inline-flex\", gap: 6, flexWrap: \"wrap\" as const };\n\n return (\n <ToggleGroupSketchContext.Provider\n value={{\n roughness,\n seed: resolvedSeed,\n sketchColor,\n bowing,\n fillStyle,\n strokeWidth,\n resolvedSeed,\n ink,\n animate,\n size,\n }}\n >\n {type === \"multiple\" ? (\n <ToggleGroupPrimitive.Root\n type=\"multiple\"\n style={rootStyle}\n {...(rest as Omit<\n ToggleGroupPrimitive.ToggleGroupMultipleProps,\n \"type\" | \"children\"\n >)}\n >\n {children}\n </ToggleGroupPrimitive.Root>\n ) : (\n <ToggleGroupPrimitive.Root\n type=\"single\"\n style={rootStyle}\n {...(rest as Omit<\n ToggleGroupPrimitive.ToggleGroupSingleProps,\n \"type\" | \"children\"\n >)}\n >\n {children}\n </ToggleGroupPrimitive.Root>\n )}\n </ToggleGroupSketchContext.Provider>\n );\n}\n\nconst ITEM_SIZE: Record<\n ToggleSize,\n { fontSize: number; padding: string; minHeight: number }\n> = {\n sm: { fontSize: 13, padding: \"4px 10px\", minHeight: 30 },\n md: { fontSize: 15, padding: \"7px 14px\", minHeight: 38 },\n lg: { fontSize: 17, padding: \"10px 18px\", minHeight: 46 },\n};\n\nexport interface ToggleGroupItemProps\n extends Omit<ToggleGroupPrimitive.ToggleGroupItemProps, \"asChild\"> {\n children?: ReactNode;\n}\n\nexport const ToggleGroupItem = forwardRef<\n HTMLButtonElement,\n ToggleGroupItemProps\n>(function ToggleGroupItem(\n { className, style, children, value, disabled, ...rest },\n ref,\n) {\n const sketch = useToggleGroupSketch();\n const rootRef = useRef<HTMLButtonElement>(null);\n const [pressed, setPressed] = useState(false);\n const shouldAnimate = useAnimate(sketch.animate);\n const pressSeed = deriveSeed(\n sketch.resolvedSeed,\n `${value}-${pressed ? \"on\" : \"off\"}`,\n );\n const sketchSeed = shouldAnimate ? pressSeed : sketch.resolvedSeed;\n\n useLayoutEffect(() => {\n const el = rootRef.current;\n if (!el) return;\n const sync = () => setPressed(el.getAttribute(\"data-state\") === \"on\");\n sync();\n const obs = new MutationObserver(sync);\n obs.observe(el, { attributes: true, attributeFilter: [\"data-state\"] });\n return () => obs.disconnect();\n }, [value]);\n\n useDrawIn(rootRef, DRAW_IN_DURATION_MS, shouldAnimate, sketchSeed);\n\n return (\n <ToggleGroupPrimitive.Item\n ref={(node) => {\n (rootRef as MutableRefObject<HTMLButtonElement | null>).current = node;\n assignRef(ref, node);\n }}\n value={value}\n disabled={disabled}\n className={cn(className)}\n style={{\n position: \"relative\",\n display: \"inline-flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n border: \"none\",\n background: \"transparent\",\n cursor: disabled ? \"not-allowed\" : \"pointer\",\n color: sketch.ink,\n fontFamily: doodleUiFontFamily,\n fontWeight: doodleUiFontWeight(600),\n opacity: disabled ? 0.45 : 1,\n outline: \"none\",\n ...ITEM_SIZE[sketch.size],\n ...style,\n }}\n {...rest}\n >\n <RoughSvg\n shape=\"rectangle\"\n roughness={sketch.roughness}\n seed={sketchSeed}\n sketchColor={pressed ? SKETCH_COLORS.accent : sketch.ink}\n bowing={sketch.bowing}\n fillStyle={sketch.fillStyle ?? \"hachure\"}\n fill={pressed ? SKETCH_COLORS.accentFill : undefined}\n strokeWidth={sketch.strokeWidth ?? 1.6}\n />\n <span style={{ position: \"relative\", zIndex: 1 }}>{children}</span>\n </ToggleGroupPrimitive.Item>\n );\n});\n","\"use client\";\n\nimport {\n createContext,\n forwardRef,\n useContext,\n useState,\n type HTMLAttributes,\n type InputHTMLAttributes,\n type ReactNode,\n} from \"react\";\nimport { useAnimate } from \"../animations\";\nimport { useResolvedSeed } from \"../hooks/useResolvedSeed\";\nimport { SketchBox } from \"../primitives/SketchBox\";\nimport { SKETCH_COLORS, type SketchProps } from \"../types\";\nimport { cn, deriveSeed, doodleUiFontFamily } from \"../utils\";\n\ninterface InputGroupSketchContextValue extends SketchProps {\n resolvedSeed: number;\n ink: string;\n animate?: boolean;\n focused: boolean;\n setFocused: (next: boolean) => void;\n}\n\nconst InputGroupSketchContext =\n createContext<InputGroupSketchContextValue | null>(null);\n\nfunction useInputGroupSketch(): InputGroupSketchContextValue {\n const ctx = useContext(InputGroupSketchContext);\n if (!ctx) {\n throw new Error(\"InputGroup parts must be used inside <InputGroup>.\");\n }\n return ctx;\n}\n\nexport interface InputGroupProps\n extends Omit<HTMLAttributes<HTMLDivElement>, \"color\">,\n SketchProps {\n children?: ReactNode;\n animate?: boolean;\n}\n\nexport function InputGroup({\n children,\n className,\n style,\n roughness,\n seed,\n sketchColor,\n bowing,\n fillStyle,\n strokeWidth,\n animate,\n onFocus,\n onBlur,\n ...rest\n}: InputGroupProps) {\n const resolvedSeed = useResolvedSeed(seed);\n const ink = sketchColor ?? SKETCH_COLORS.ink;\n const [focused, setFocused] = useState(false);\n const shouldAnimate = useAnimate(animate);\n const focusSeed = deriveSeed(resolvedSeed, \"focus\");\n const sketchSeed = shouldAnimate && focused ? focusSeed : resolvedSeed;\n\n return (\n <InputGroupSketchContext.Provider\n value={{\n roughness,\n seed: resolvedSeed,\n sketchColor,\n bowing,\n fillStyle,\n strokeWidth,\n resolvedSeed,\n ink,\n animate,\n focused,\n setFocused,\n }}\n >\n <div\n className={cn(className)}\n style={{ position: \"relative\", width: \"100%\", ...style }}\n onFocus={(event) => {\n setFocused(true);\n onFocus?.(event);\n }}\n onBlur={(event) => {\n if (!event.currentTarget.contains(event.relatedTarget as Node | null)) {\n setFocused(false);\n }\n onBlur?.(event);\n }}\n {...rest}\n >\n <SketchBox\n roughness={roughness}\n seed={sketchSeed}\n sketchColor={focused ? SKETCH_COLORS.accent : ink}\n bowing={bowing}\n fillStyle={fillStyle}\n strokeWidth={\n focused && !shouldAnimate\n ? (strokeWidth ?? 1.75) + 0.35\n : strokeWidth\n }\n animate={animate}\n drawInKey={sketchSeed}\n contentStyle={{\n display: \"flex\",\n alignItems: \"stretch\",\n minHeight: 38,\n }}\n >\n {children}\n </SketchBox>\n </div>\n </InputGroupSketchContext.Provider>\n );\n}\n\nexport interface InputGroupAddonProps extends HTMLAttributes<HTMLSpanElement> {\n align?: \"inline-start\" | \"inline-end\";\n}\n\nexport const InputGroupAddon = forwardRef<HTMLSpanElement, InputGroupAddonProps>(\n function InputGroupAddon(\n { className, style, align = \"inline-start\", children, ...rest },\n ref,\n ) {\n const sketch = useInputGroupSketch();\n return (\n <span\n ref={ref}\n className={cn(className)}\n style={{\n display: \"inline-flex\",\n alignItems: \"center\",\n padding: align === \"inline-start\" ? \"0 0 0 10px\" : \"0 10px 0 0\",\n fontFamily: doodleUiFontFamily,\n fontSize: 14,\n color: sketch.ink,\n flexShrink: 0,\n ...style,\n }}\n {...rest}\n >\n {children}\n </span>\n );\n },\n);\n\nexport interface InputGroupInputProps\n extends Omit<InputHTMLAttributes<HTMLInputElement>, \"color\" | \"size\"> {}\n\nexport const InputGroupInput = forwardRef<\n HTMLInputElement,\n InputGroupInputProps\n>(function InputGroupInput({ className, style, ...rest }, ref) {\n const sketch = useInputGroupSketch();\n return (\n <input\n ref={ref}\n className={cn(className)}\n style={{\n flex: 1,\n minWidth: 0,\n border: \"none\",\n outline: \"none\",\n background: \"transparent\",\n color: sketch.ink,\n fontFamily: doodleUiFontFamily,\n fontSize: 15,\n padding: \"8px 10px\",\n ...style,\n }}\n {...rest}\n />\n );\n});\n\nexport interface InputGroupButtonProps extends HTMLAttributes<HTMLSpanElement> {}\n\nexport const InputGroupButton = forwardRef<\n HTMLSpanElement,\n InputGroupButtonProps\n>(function InputGroupButton({ className, style, children, ...rest }, ref) {\n return (\n <span\n ref={ref}\n className={cn(className)}\n style={{\n display: \"inline-flex\",\n alignItems: \"center\",\n padding: \"0 6px 0 0\",\n ...style,\n }}\n {...rest}\n >\n {children}\n </span>\n );\n});\n","\"use client\";\n\nimport {\n createContext,\n forwardRef,\n useContext,\n useRef,\n type ComponentPropsWithoutRef,\n type HTMLAttributes,\n type MutableRefObject,\n type ReactNode,\n} from \"react\";\nimport { OTPInput, OTPInputContext } from \"input-otp\";\nimport { motion } from \"framer-motion\";\nimport {\n DRAW_IN_DURATION_MS,\n useAnimate,\n useDrawIn,\n} from \"../animations\";\nimport { useResolvedSeed } from \"../hooks/useResolvedSeed\";\nimport { RoughSvg } from \"../primitives/RoughSvg\";\nimport { SKETCH_COLORS, type SketchProps } from \"../types\";\nimport { cn, assignRef, deriveSeed, doodleUiFontFamily } from \"../utils\";\n\ninterface InputOTPSketchContextValue extends SketchProps {\n resolvedSeed: number;\n ink: string;\n animate?: boolean;\n}\n\nconst InputOTPSketchContext = createContext<InputOTPSketchContextValue | null>(\n null,\n);\n\nfunction useInputOTPSketch(): InputOTPSketchContextValue {\n const ctx = useContext(InputOTPSketchContext);\n if (!ctx) {\n throw new Error(\"InputOTP parts must be used inside <InputOTP>.\");\n }\n return ctx;\n}\n\nexport interface InputOTPProps\n extends Omit<ComponentPropsWithoutRef<typeof OTPInput>, \"render\">,\n SketchProps {\n animate?: boolean;\n}\n\nexport const InputOTP = forwardRef<HTMLInputElement, InputOTPProps>(\n function InputOTP(\n {\n className,\n containerClassName,\n roughness,\n seed,\n sketchColor,\n bowing,\n fillStyle,\n strokeWidth,\n animate,\n children,\n ...rest\n },\n ref,\n ) {\n const resolvedSeed = useResolvedSeed(seed);\n const ink = sketchColor ?? SKETCH_COLORS.ink;\n\n return (\n <InputOTPSketchContext.Provider\n value={{\n roughness,\n seed: resolvedSeed,\n sketchColor,\n bowing,\n fillStyle,\n strokeWidth,\n resolvedSeed,\n ink,\n animate,\n }}\n >\n <OTPInput\n ref={ref}\n containerClassName={cn(className, containerClassName)}\n {...rest}\n >\n {children}\n </OTPInput>\n </InputOTPSketchContext.Provider>\n );\n },\n);\n\nexport interface InputOTPGroupProps extends HTMLAttributes<HTMLDivElement> {\n children?: ReactNode;\n}\n\nexport const InputOTPGroup = forwardRef<HTMLDivElement, InputOTPGroupProps>(\n function InputOTPGroup({ className, style, children, ...rest }, ref) {\n return (\n <div\n ref={ref}\n className={cn(className)}\n style={{ display: \"flex\", alignItems: \"center\", gap: 8, ...style }}\n {...rest}\n >\n {children}\n </div>\n );\n },\n);\n\nexport interface InputOTPSlotProps extends HTMLAttributes<HTMLDivElement> {\n index: number;\n}\n\nexport const InputOTPSlot = forwardRef<HTMLDivElement, InputOTPSlotProps>(\n function InputOTPSlot({ index, className, style, ...rest }, ref) {\n const inputContext = useContext(OTPInputContext);\n const sketch = useInputOTPSketch();\n const slotRef = useRef<HTMLDivElement>(null);\n const shouldAnimate = useAnimate(sketch.animate);\n\n const { char, isActive, hasFakeCaret } = inputContext?.slots[index] ?? {\n char: null,\n isActive: false,\n hasFakeCaret: false,\n };\n const slotSeed = deriveSeed(\n sketch.resolvedSeed,\n `slot-${index}-${isActive ? \"active\" : \"idle\"}`,\n );\n\n useDrawIn(slotRef, DRAW_IN_DURATION_MS, shouldAnimate, slotSeed);\n\n if (!inputContext) {\n throw new Error(\"InputOTPSlot must be used inside <InputOTP>.\");\n }\n\n return (\n <div\n ref={(node) => {\n (slotRef as MutableRefObject<HTMLDivElement | null>).current = node;\n assignRef(ref, node);\n }}\n className={cn(className)}\n style={{\n position: \"relative\",\n width: 40,\n height: 44,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n fontFamily: doodleUiFontFamily,\n fontSize: 18,\n color: sketch.ink,\n ...style,\n }}\n {...rest}\n >\n <RoughSvg\n shape=\"rectangle\"\n roughness={sketch.roughness}\n seed={slotSeed}\n sketchColor={isActive ? SKETCH_COLORS.accent : sketch.ink}\n bowing={sketch.bowing}\n fillStyle={sketch.fillStyle}\n strokeWidth={\n isActive ? (sketch.strokeWidth ?? 1.75) + 0.15 : sketch.strokeWidth\n }\n />\n <span style={{ position: \"relative\", zIndex: 1 }}>\n {char}\n {hasFakeCaret ? (\n <motion.span\n aria-hidden\n style={{\n display: \"inline-block\",\n width: 2,\n height: \"0.85em\",\n marginLeft: 2,\n background: sketch.ink,\n verticalAlign: \"middle\",\n }}\n animate={shouldAnimate ? { opacity: [1, 0, 1] } : { opacity: 1 }}\n transition={\n shouldAnimate\n ? { duration: 1, repeat: Infinity, ease: \"linear\" }\n : undefined\n }\n />\n ) : null}\n </span>\n </div>\n );\n },\n);\n\nexport interface InputOTPSeparatorProps extends HTMLAttributes<HTMLSpanElement> {}\n\nexport const InputOTPSeparator = forwardRef<\n HTMLSpanElement,\n InputOTPSeparatorProps\n>(function InputOTPSeparator({ children = \"–\", className, style, ...rest }, ref) {\n const sketch = useInputOTPSketch();\n return (\n <span\n ref={ref}\n role=\"separator\"\n className={cn(className)}\n style={{\n fontFamily: doodleUiFontFamily,\n color: sketch.ink,\n opacity: 0.5,\n userSelect: \"none\",\n ...style,\n }}\n {...rest}\n >\n {children}\n </span>\n );\n});\n","\"use client\";\n\nimport {\n createContext,\n forwardRef,\n useContext,\n type ComponentPropsWithoutRef,\n type ReactNode,\n} from \"react\";\nimport * as ScrollAreaPrimitive from \"@radix-ui/react-scroll-area\";\nimport { useResolvedSeed } from \"../hooks/useResolvedSeed\";\nimport { RoughSvg } from \"../primitives/RoughSvg\";\nimport { SketchBox } from \"../primitives/SketchBox\";\nimport { SKETCH_COLORS, type SketchProps } from \"../types\";\nimport { cn } from \"../utils\";\n\ninterface ScrollAreaSketchContextValue extends SketchProps {\n resolvedSeed: number;\n ink: string;\n animate?: boolean;\n}\n\nconst ScrollAreaSketchContext =\n createContext<ScrollAreaSketchContextValue | null>(null);\n\nfunction useScrollAreaSketch(): ScrollAreaSketchContextValue {\n const ctx = useContext(ScrollAreaSketchContext);\n if (!ctx) {\n throw new Error(\"ScrollArea parts must be used inside <ScrollArea>.\");\n }\n return ctx;\n}\n\nexport interface ScrollAreaProps\n extends Omit<ComponentPropsWithoutRef<typeof ScrollAreaPrimitive.Root>, \"children\">,\n SketchProps {\n children?: ReactNode;\n animate?: boolean;\n}\n\nexport const ScrollArea = forwardRef<\n HTMLDivElement,\n ScrollAreaProps\n>(function ScrollArea(\n {\n className,\n style,\n children,\n roughness,\n seed,\n sketchColor,\n bowing,\n fillStyle,\n strokeWidth,\n animate,\n ...rest\n },\n ref,\n) {\n const resolvedSeed = useResolvedSeed(seed);\n const ink = sketchColor ?? SKETCH_COLORS.ink;\n\n return (\n <ScrollAreaSketchContext.Provider\n value={{\n roughness,\n seed: resolvedSeed,\n sketchColor,\n bowing,\n fillStyle,\n strokeWidth,\n resolvedSeed,\n ink,\n animate,\n }}\n >\n <ScrollAreaPrimitive.Root\n ref={ref}\n className={cn(className)}\n style={{ position: \"relative\", overflow: \"hidden\", ...style }}\n {...rest}\n >\n <SketchBox\n roughness={roughness}\n seed={resolvedSeed}\n sketchColor={ink}\n bowing={bowing}\n fillStyle={fillStyle ?? \"solid\"}\n fill=\"#f7f6f2\"\n strokeWidth={strokeWidth ?? 1.5}\n animate={animate}\n contentStyle={{ padding: 0, height: \"100%\" }}\n style={{ height: \"100%\" }}\n >\n {children}\n </SketchBox>\n </ScrollAreaPrimitive.Root>\n </ScrollAreaSketchContext.Provider>\n );\n});\n\nexport const ScrollAreaViewport = forwardRef<\n HTMLDivElement,\n ComponentPropsWithoutRef<typeof ScrollAreaPrimitive.Viewport>\n>(function ScrollAreaViewport({ className, style, children, ...rest }, ref) {\n return (\n <ScrollAreaPrimitive.Viewport\n ref={ref}\n className={cn(className)}\n style={{\n width: \"100%\",\n height: \"100%\",\n borderRadius: 0,\n ...style,\n }}\n {...rest}\n >\n {children}\n </ScrollAreaPrimitive.Viewport>\n );\n});\n\nexport interface ScrollBarProps\n extends ComponentPropsWithoutRef<typeof ScrollAreaPrimitive.ScrollAreaScrollbar> {}\n\nexport const ScrollBar = forwardRef<HTMLDivElement, ScrollBarProps>(\n function ScrollBar(\n { className, style, orientation = \"vertical\", ...rest },\n ref,\n ) {\n const sketch = useScrollAreaSketch();\n\n return (\n <ScrollAreaPrimitive.ScrollAreaScrollbar\n ref={ref}\n orientation={orientation}\n className={cn(className)}\n style={{\n display: \"flex\",\n touchAction: \"none\",\n userSelect: \"none\",\n padding: 2,\n ...(orientation === \"vertical\"\n ? { width: 12, flexDirection: \"column\" }\n : { height: 12, flexDirection: \"row\" }),\n ...style,\n }}\n {...rest}\n >\n <ScrollAreaPrimitive.ScrollAreaThumb asChild>\n <div style={{ position: \"relative\", flex: 1 }}>\n <RoughSvg\n shape={orientation === \"vertical\" ? \"line-vertical\" : \"line\"}\n roughness={(sketch.roughness ?? 1.5) + 0.3}\n seed={sketch.resolvedSeed}\n sketchColor={sketch.ink}\n bowing={sketch.bowing}\n strokeWidth={sketch.strokeWidth ?? 2.2}\n inset={1}\n />\n </div>\n </ScrollAreaPrimitive.ScrollAreaThumb>\n </ScrollAreaPrimitive.ScrollAreaScrollbar>\n );\n },\n);\n\nexport const ScrollAreaCorner = ScrollAreaPrimitive.Corner;\n","\"use client\";\n\nimport {\n type ComponentPropsWithoutRef,\n type CSSProperties,\n} from \"react\";\nimport * as ResizablePrimitive from \"react-resizable-panels\";\nimport { useResolvedSeed } from \"../hooks/useResolvedSeed\";\nimport { RoughSvg } from \"../primitives/RoughSvg\";\nimport { SKETCH_COLORS, type SketchProps } from \"../types\";\nimport { cn, deriveSeed } from \"../utils\";\n\nexport type ResizablePanelGroupProps = ComponentPropsWithoutRef<\n typeof ResizablePrimitive.PanelGroup\n> &\n SketchProps;\n\nexport function ResizablePanelGroup({\n className,\n style,\n ...rest\n}: ResizablePanelGroupProps) {\n return (\n <ResizablePrimitive.PanelGroup\n className={cn(className)}\n style={{ display: \"flex\", width: \"100%\", height: \"100%\", ...style }}\n {...rest}\n />\n );\n}\n\nexport const ResizablePanel = ResizablePrimitive.Panel;\n\nexport interface ResizableHandleProps\n extends ComponentPropsWithoutRef<typeof ResizablePrimitive.PanelResizeHandle>,\n SketchProps {\n withHandle?: boolean;\n}\n\nexport function ResizableHandle({\n className,\n style,\n withHandle = true,\n roughness,\n seed,\n sketchColor,\n bowing,\n strokeWidth,\n ...rest\n}: ResizableHandleProps) {\n const resolvedSeed = useResolvedSeed(seed);\n const ink = sketchColor ?? SKETCH_COLORS.ink;\n const handleSeed = deriveSeed(resolvedSeed, \"handle\");\n\n const base: CSSProperties = {\n position: \"relative\",\n flexShrink: 0,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n background: \"transparent\",\n touchAction: \"none\",\n ...style,\n };\n\n return (\n <ResizablePrimitive.PanelResizeHandle\n className={cn(className)}\n style={base}\n {...rest}\n >\n {withHandle ? (\n <div\n style={{\n position: \"relative\",\n width: 14,\n height: 28,\n zIndex: 1,\n }}\n >\n <RoughSvg\n shape=\"line-vertical\"\n roughness={roughness ?? 1.8}\n seed={handleSeed}\n sketchColor={ink}\n bowing={bowing ?? 1.5}\n strokeWidth={strokeWidth ?? 2.4}\n width={14}\n height={28}\n inset={2}\n />\n <RoughSvg\n shape=\"ellipse\"\n roughness={(roughness ?? 1.5) + 0.2}\n seed={deriveSeed(handleSeed, \"dot-a\")}\n sketchColor={ink}\n width={14}\n height={28}\n strokeWidth={1.2}\n inset={5}\n style={{ opacity: 0.55 }}\n />\n </div>\n ) : null}\n </ResizablePrimitive.PanelResizeHandle>\n );\n}\n","\"use client\";\n\nimport {\n createContext,\n forwardRef,\n useContext,\n type ComponentPropsWithoutRef,\n type ReactNode,\n} from \"react\";\nimport * as HoverCardPrimitive from \"@radix-ui/react-hover-card\";\nimport { useResolvedSeed } from \"../hooks/useResolvedSeed\";\nimport { SketchBox } from \"../primitives/SketchBox\";\nimport { SKETCH_COLORS, type SketchProps } from \"../types\";\nimport { cn } from \"../utils\";\n\ninterface HoverCardSketchContextValue extends SketchProps {\n resolvedSeed: number;\n ink: string;\n animate?: boolean;\n}\n\nconst HoverCardSketchContext = createContext<HoverCardSketchContextValue | null>(\n null,\n);\n\nfunction useHoverCardSketch(): HoverCardSketchContextValue {\n const ctx = useContext(HoverCardSketchContext);\n if (!ctx) {\n throw new Error(\"HoverCard parts must be used inside <HoverCard>.\");\n }\n return ctx;\n}\n\nexport interface HoverCardProps\n extends Omit<ComponentPropsWithoutRef<typeof HoverCardPrimitive.Root>, \"children\">,\n SketchProps {\n children?: ReactNode;\n animate?: boolean;\n}\n\nexport function HoverCard({\n children,\n roughness,\n seed,\n sketchColor,\n bowing,\n fillStyle,\n strokeWidth,\n animate,\n ...rest\n}: HoverCardProps) {\n const resolvedSeed = useResolvedSeed(seed);\n const ink = sketchColor ?? SKETCH_COLORS.ink;\n\n return (\n <HoverCardSketchContext.Provider\n value={{\n roughness,\n seed: resolvedSeed,\n sketchColor,\n bowing,\n fillStyle,\n strokeWidth,\n resolvedSeed,\n ink,\n animate,\n }}\n >\n <HoverCardPrimitive.Root {...rest}>{children}</HoverCardPrimitive.Root>\n </HoverCardSketchContext.Provider>\n );\n}\n\nexport const HoverCardTrigger = HoverCardPrimitive.Trigger;\n\nexport interface HoverCardContentProps\n extends ComponentPropsWithoutRef<typeof HoverCardPrimitive.Content> {\n children?: ReactNode;\n}\n\nexport const HoverCardContent = forwardRef<\n HTMLDivElement,\n HoverCardContentProps\n>(function HoverCardContent(\n { className, style, children, sideOffset = 6, align = \"center\", ...rest },\n ref,\n) {\n const sketch = useHoverCardSketch();\n\n return (\n <HoverCardPrimitive.Portal>\n <HoverCardPrimitive.Content\n ref={ref}\n sideOffset={sideOffset}\n align={align}\n className={cn(className)}\n style={{ zIndex: 75, outline: \"none\", ...style }}\n {...rest}\n >\n <SketchBox\n roughness={sketch.roughness}\n seed={sketch.resolvedSeed}\n sketchColor={sketch.ink}\n bowing={sketch.bowing}\n fillStyle={sketch.fillStyle ?? \"solid\"}\n fill=\"#f7f6f2\"\n strokeWidth={sketch.strokeWidth ?? 1.5}\n shadow\n animate={sketch.animate}\n contentStyle={{ padding: 14, maxWidth: 320, fontSize: 14 }}\n >\n {children}\n </SketchBox>\n </HoverCardPrimitive.Content>\n </HoverCardPrimitive.Portal>\n );\n});\n\nexport const HoverCardArrow = HoverCardPrimitive.Arrow;\n","\"use client\";\n\nimport {\n createContext,\n forwardRef,\n useContext,\n useState,\n type ComponentPropsWithoutRef,\n type ReactNode,\n} from \"react\";\nimport * as ContextMenuPrimitive from \"@radix-ui/react-context-menu\";\nimport { useResolvedSeed } from \"../hooks/useResolvedSeed\";\nimport { RoughSvg } from \"../primitives/RoughSvg\";\nimport { SketchBox } from \"../primitives/SketchBox\";\nimport { SKETCH_COLORS, type SketchProps } from \"../types\";\nimport { cn, deriveSeed, doodleUiFontFamily } from \"../utils\";\n\ninterface ContextMenuSketchContextValue extends SketchProps {\n resolvedSeed: number;\n ink: string;\n animate?: boolean;\n}\n\nconst ContextMenuSketchContext =\n createContext<ContextMenuSketchContextValue | null>(null);\n\nfunction useContextMenuSketch(): ContextMenuSketchContextValue {\n const ctx = useContext(ContextMenuSketchContext);\n if (!ctx) {\n throw new Error(\n \"ContextMenu parts must be used inside <ContextMenu>.\",\n );\n }\n return ctx;\n}\n\nexport interface ContextMenuProps\n extends Omit<ContextMenuPrimitive.ContextMenuProps, \"children\">,\n SketchProps {\n children?: ReactNode;\n /**\n * Draw-in the panel border when the menu opens.\n * Defaults to the DoodleUIProvider value (true).\n */\n animate?: boolean;\n}\n\nexport function ContextMenu({\n children,\n roughness,\n seed,\n sketchColor,\n bowing,\n fillStyle,\n strokeWidth,\n animate,\n ...rest\n}: ContextMenuProps) {\n const resolvedSeed = useResolvedSeed(seed);\n const ink = sketchColor ?? SKETCH_COLORS.ink;\n\n return (\n <ContextMenuSketchContext.Provider\n value={{\n roughness,\n seed: resolvedSeed,\n sketchColor,\n bowing,\n fillStyle,\n strokeWidth,\n resolvedSeed,\n ink,\n animate,\n }}\n >\n <ContextMenuPrimitive.Root {...rest}>\n {children}\n </ContextMenuPrimitive.Root>\n </ContextMenuSketchContext.Provider>\n );\n}\n\nexport const ContextMenuTrigger = ContextMenuPrimitive.Trigger;\nexport const ContextMenuGroup = ContextMenuPrimitive.Group;\nexport const ContextMenuRadioGroup = ContextMenuPrimitive.RadioGroup;\nexport const ContextMenuSub = ContextMenuPrimitive.Sub;\n\nexport interface ContextMenuContentProps\n extends Omit<ComponentPropsWithoutRef<typeof ContextMenuPrimitive.Content>, \"asChild\"> {\n children?: ReactNode;\n}\n\nexport const ContextMenuContent = forwardRef<\n HTMLDivElement,\n ContextMenuContentProps\n>(function ContextMenuContent(\n { className, style, children, ...rest },\n ref,\n) {\n const sketch = useContextMenuSketch();\n\n return (\n <ContextMenuPrimitive.Portal>\n <ContextMenuPrimitive.Content\n ref={ref}\n className={cn(className)}\n style={{ zIndex: 80, outline: \"none\", minWidth: 180, ...style }}\n {...rest}\n >\n <SketchBox\n roughness={sketch.roughness}\n seed={sketch.resolvedSeed}\n sketchColor={sketch.ink}\n bowing={sketch.bowing}\n fillStyle={sketch.fillStyle ?? \"solid\"}\n fill=\"#f7f6f2\"\n strokeWidth={sketch.strokeWidth ?? 1.5}\n shadow\n animate={sketch.animate}\n contentStyle={{ padding: \"6px 4px\" }}\n >\n {children}\n </SketchBox>\n </ContextMenuPrimitive.Content>\n </ContextMenuPrimitive.Portal>\n );\n});\n\nfunction useMark(highlighted: boolean) {\n const sketch = useContextMenuSketch();\n return { sketch, mark: highlighted };\n}\n\nexport interface ContextMenuItemProps\n extends Omit<ContextMenuPrimitive.ContextMenuItemProps, \"asChild\"> {\n children?: ReactNode;\n inset?: boolean;\n}\n\nexport const ContextMenuItem = forwardRef<\n HTMLDivElement,\n ContextMenuItemProps\n>(function ContextMenuItem(\n { className, style, children, inset, ...rest },\n ref,\n) {\n const [highlighted, setHighlighted] = useState(false);\n const { sketch, mark } = useMark(highlighted);\n\n return (\n <ContextMenuPrimitive.Item\n ref={ref}\n className={cn(className)}\n onPointerMove={() => setHighlighted(true)}\n onPointerLeave={() => setHighlighted(false)}\n onFocus={() => setHighlighted(true)}\n onBlur={() => setHighlighted(false)}\n style={{\n position: \"relative\",\n display: \"flex\",\n alignItems: \"center\",\n gap: 8,\n padding: inset ? \"7px 12px 7px 26px\" : \"7px 12px\",\n fontFamily: doodleUiFontFamily,\n fontSize: 14,\n color: sketch.ink,\n outline: \"none\",\n cursor: \"pointer\",\n userSelect: \"none\",\n ...style,\n }}\n {...rest}\n >\n {mark ? (\n <RoughSvg\n shape=\"line\"\n roughness={(sketch.roughness ?? 1.5) + 0.4}\n seed={sketch.resolvedSeed}\n sketchColor={sketch.ink}\n bowing={sketch.bowing ?? 1.6}\n strokeWidth={1.3}\n inset={4}\n style={{ opacity: 0.4 }}\n />\n ) : null}\n <span style={{ position: \"relative\", zIndex: 1 }}>{children}</span>\n </ContextMenuPrimitive.Item>\n );\n});\n\nexport interface ContextMenuCheckboxItemProps\n extends Omit<\n ContextMenuPrimitive.ContextMenuCheckboxItemProps,\n \"asChild\"\n > {\n children?: ReactNode;\n}\n\nconst CHECK_PATH = \"M 2 6 L 5 9 L 10 3\";\n\nexport const ContextMenuCheckboxItem = forwardRef<\n HTMLDivElement,\n ContextMenuCheckboxItemProps\n>(function ContextMenuCheckboxItem(\n { className, style, children, checked, ...rest },\n ref,\n) {\n const [highlighted, setHighlighted] = useState(false);\n const { sketch, mark } = useMark(highlighted);\n\n return (\n <ContextMenuPrimitive.CheckboxItem\n ref={ref}\n checked={checked}\n className={cn(className)}\n onPointerMove={() => setHighlighted(true)}\n onPointerLeave={() => setHighlighted(false)}\n style={{\n position: \"relative\",\n display: \"flex\",\n alignItems: \"center\",\n gap: 8,\n padding: \"7px 12px 7px 26px\",\n fontFamily: doodleUiFontFamily,\n fontSize: 14,\n color: sketch.ink,\n outline: \"none\",\n cursor: \"pointer\",\n userSelect: \"none\",\n ...style,\n }}\n {...rest}\n >\n {mark ? (\n <RoughSvg\n shape=\"line\"\n roughness={(sketch.roughness ?? 1.5) + 0.4}\n seed={sketch.resolvedSeed}\n sketchColor={sketch.ink}\n bowing={sketch.bowing ?? 1.6}\n strokeWidth={1.3}\n inset={4}\n style={{ opacity: 0.4 }}\n />\n ) : null}\n <span\n style={{\n position: \"relative\",\n width: 12,\n height: 12,\n flexShrink: 0,\n marginLeft: -18,\n }}\n >\n <ContextMenuPrimitive.ItemIndicator>\n <RoughSvg\n shape=\"path\"\n path={CHECK_PATH}\n roughness={(sketch.roughness ?? 1.5) * 0.7}\n seed={deriveSeed(sketch.resolvedSeed, \"checkbox-mark\")}\n sketchColor={SKETCH_COLORS.accent}\n bowing={sketch.bowing}\n strokeWidth={1.6}\n inset={0}\n />\n </ContextMenuPrimitive.ItemIndicator>\n </span>\n <span style={{ position: \"relative\", zIndex: 1 }}>{children}</span>\n </ContextMenuPrimitive.CheckboxItem>\n );\n});\n\nexport interface ContextMenuRadioItemProps\n extends Omit<ContextMenuPrimitive.ContextMenuRadioItemProps, \"asChild\"> {\n children?: ReactNode;\n}\n\nexport const ContextMenuRadioItem = forwardRef<\n HTMLDivElement,\n ContextMenuRadioItemProps\n>(function ContextMenuRadioItem(\n { className, style, children, ...rest },\n ref,\n) {\n const [highlighted, setHighlighted] = useState(false);\n const { sketch, mark } = useMark(highlighted);\n\n return (\n <ContextMenuPrimitive.RadioItem\n ref={ref}\n className={cn(className)}\n onPointerMove={() => setHighlighted(true)}\n onPointerLeave={() => setHighlighted(false)}\n style={{\n position: \"relative\",\n display: \"flex\",\n alignItems: \"center\",\n gap: 8,\n padding: \"7px 12px 7px 26px\",\n fontFamily: doodleUiFontFamily,\n fontSize: 14,\n color: sketch.ink,\n outline: \"none\",\n cursor: \"pointer\",\n userSelect: \"none\",\n ...style,\n }}\n {...rest}\n >\n {mark ? (\n <RoughSvg\n shape=\"line\"\n roughness={(sketch.roughness ?? 1.5) + 0.4}\n seed={sketch.resolvedSeed}\n sketchColor={sketch.ink}\n bowing={sketch.bowing ?? 1.6}\n strokeWidth={1.3}\n inset={4}\n style={{ opacity: 0.4 }}\n />\n ) : null}\n <span\n style={{\n position: \"relative\",\n width: 8,\n height: 8,\n flexShrink: 0,\n marginLeft: -18,\n }}\n >\n <ContextMenuPrimitive.ItemIndicator>\n <RoughSvg\n shape=\"ellipse\"\n roughness={(sketch.roughness ?? 1.5) * 0.8}\n seed={deriveSeed(sketch.resolvedSeed, \"radio-mark\")}\n sketchColor={SKETCH_COLORS.accent}\n bowing={sketch.bowing}\n fillStyle=\"solid\"\n fill={SKETCH_COLORS.accent}\n strokeWidth={1.2}\n inset={0}\n />\n </ContextMenuPrimitive.ItemIndicator>\n </span>\n <span style={{ position: \"relative\", zIndex: 1 }}>{children}</span>\n </ContextMenuPrimitive.RadioItem>\n );\n});\n\nexport interface ContextMenuLabelProps\n extends Omit<ContextMenuPrimitive.ContextMenuLabelProps, \"asChild\"> {\n children?: ReactNode;\n}\n\nexport const ContextMenuLabel = forwardRef<\n HTMLDivElement,\n ContextMenuLabelProps\n>(function ContextMenuLabel({ className, style, children, ...rest }, ref) {\n const sketch = useContextMenuSketch();\n return (\n <ContextMenuPrimitive.Label\n ref={ref}\n className={cn(className)}\n style={{\n padding: \"6px 12px\",\n fontFamily: doodleUiFontFamily,\n fontSize: 12,\n fontWeight: 700,\n color: sketch.ink,\n opacity: 0.6,\n textTransform: \"uppercase\",\n letterSpacing: 0.4,\n ...style,\n }}\n {...rest}\n >\n {children}\n </ContextMenuPrimitive.Label>\n );\n});\n\nexport interface ContextMenuSeparatorProps\n extends Omit<ContextMenuPrimitive.ContextMenuSeparatorProps, \"asChild\"> {}\n\nexport const ContextMenuSeparator = forwardRef<\n HTMLDivElement,\n ContextMenuSeparatorProps\n>(function ContextMenuSeparator({ className, style, ...rest }, ref) {\n const sketch = useContextMenuSketch();\n return (\n <ContextMenuPrimitive.Separator\n ref={ref}\n className={cn(className)}\n style={{ position: \"relative\", height: 10, margin: \"2px 0\", ...style }}\n {...rest}\n >\n <RoughSvg\n shape=\"line\"\n roughness={(sketch.roughness ?? 1.5) + 0.2}\n seed={deriveSeed(sketch.resolvedSeed, \"separator\")}\n sketchColor={sketch.ink}\n bowing={sketch.bowing ?? 1.8}\n strokeWidth={1.2}\n inset={6}\n style={{ opacity: 0.5 }}\n />\n </ContextMenuPrimitive.Separator>\n );\n});\n","\"use client\";\n\nimport {\n createContext,\n forwardRef,\n useContext,\n useState,\n type ComponentPropsWithoutRef,\n type ReactNode,\n} from \"react\";\nimport * as NavigationMenuPrimitive from \"@radix-ui/react-navigation-menu\";\nimport { useResolvedSeed } from \"../hooks/useResolvedSeed\";\nimport { RoughSvg } from \"../primitives/RoughSvg\";\nimport { SketchBox } from \"../primitives/SketchBox\";\nimport { SKETCH_COLORS, type SketchProps } from \"../types\";\nimport { cn, deriveSeed, doodleUiFontFamily, doodleUiFontWeight } from \"../utils\";\n\ninterface NavigationMenuSketchContextValue extends SketchProps {\n resolvedSeed: number;\n ink: string;\n animate?: boolean;\n}\n\nconst NavigationMenuSketchContext =\n createContext<NavigationMenuSketchContextValue | null>(null);\n\nfunction useNavigationMenuSketch(): NavigationMenuSketchContextValue {\n const ctx = useContext(NavigationMenuSketchContext);\n if (!ctx) {\n throw new Error(\"NavigationMenu parts must be used inside <NavigationMenu>.\");\n }\n return ctx;\n}\n\nexport interface NavigationMenuProps\n extends Omit<\n ComponentPropsWithoutRef<typeof NavigationMenuPrimitive.Root>,\n \"children\"\n >,\n SketchProps {\n children?: ReactNode;\n animate?: boolean;\n}\n\nexport function NavigationMenu({\n children,\n roughness,\n seed,\n sketchColor,\n bowing,\n fillStyle,\n strokeWidth,\n animate,\n ...rest\n}: NavigationMenuProps) {\n const resolvedSeed = useResolvedSeed(seed);\n const ink = sketchColor ?? SKETCH_COLORS.ink;\n\n return (\n <NavigationMenuSketchContext.Provider\n value={{\n roughness,\n seed: resolvedSeed,\n sketchColor,\n bowing,\n fillStyle,\n strokeWidth,\n resolvedSeed,\n ink,\n animate,\n }}\n >\n <NavigationMenuPrimitive.Root {...rest}>\n {children}\n <NavigationMenuViewport />\n </NavigationMenuPrimitive.Root>\n </NavigationMenuSketchContext.Provider>\n );\n}\n\nexport const NavigationMenuList = forwardRef<\n HTMLUListElement,\n ComponentPropsWithoutRef<typeof NavigationMenuPrimitive.List>\n>(function NavigationMenuList({ className, style, ...rest }, ref) {\n return (\n <NavigationMenuPrimitive.List\n ref={ref}\n className={cn(className)}\n style={{\n display: \"flex\",\n alignItems: \"center\",\n gap: 4,\n listStyle: \"none\",\n margin: 0,\n padding: 0,\n ...style,\n }}\n {...rest}\n />\n );\n});\n\nexport const NavigationMenuItem = NavigationMenuPrimitive.Item;\n\nexport const NavigationMenuTrigger = forwardRef<\n HTMLButtonElement,\n ComponentPropsWithoutRef<typeof NavigationMenuPrimitive.Trigger>\n>(function NavigationMenuTrigger({ className, style, children, ...rest }, ref) {\n const sketch = useNavigationMenuSketch();\n return (\n <NavigationMenuPrimitive.Trigger\n ref={ref}\n className={cn(className)}\n style={{\n position: \"relative\",\n border: \"none\",\n background: \"transparent\",\n fontFamily: doodleUiFontFamily,\n fontWeight: doodleUiFontWeight(600),\n fontSize: 14,\n color: sketch.ink,\n padding: \"8px 12px\",\n cursor: \"pointer\",\n outline: \"none\",\n ...style,\n }}\n {...rest}\n >\n {children}\n </NavigationMenuPrimitive.Trigger>\n );\n});\n\nexport const NavigationMenuContent = forwardRef<\n HTMLDivElement,\n ComponentPropsWithoutRef<typeof NavigationMenuPrimitive.Content>\n>(function NavigationMenuContent({ className, style, children, ...rest }, ref) {\n const sketch = useNavigationMenuSketch();\n return (\n <NavigationMenuPrimitive.Content\n ref={ref}\n className={cn(className)}\n style={{ outline: \"none\", ...style }}\n {...rest}\n >\n <SketchBox\n roughness={sketch.roughness}\n seed={sketch.resolvedSeed}\n sketchColor={sketch.ink}\n bowing={sketch.bowing}\n fillStyle={sketch.fillStyle ?? \"solid\"}\n fill=\"#f7f6f2\"\n strokeWidth={sketch.strokeWidth ?? 1.5}\n shadow\n animate={sketch.animate}\n contentStyle={{ padding: 12, minWidth: 200 }}\n >\n {children}\n </SketchBox>\n </NavigationMenuPrimitive.Content>\n );\n});\n\nexport const NavigationMenuLink = NavigationMenuPrimitive.Link;\n\nexport const NavigationMenuViewport = forwardRef<\n HTMLDivElement,\n ComponentPropsWithoutRef<typeof NavigationMenuPrimitive.Viewport>\n>(function NavigationMenuViewport({ className, style, ...rest }, ref) {\n return (\n <div style={{ position: \"absolute\", top: \"100%\", left: 0, perspective: 2000 }}>\n <NavigationMenuPrimitive.Viewport\n ref={ref}\n className={cn(className)}\n style={{\n position: \"relative\",\n marginTop: 6,\n overflow: \"hidden\",\n ...style,\n }}\n {...rest}\n />\n </div>\n );\n});\n\nexport const NavigationMenuIndicator = forwardRef<\n HTMLDivElement,\n ComponentPropsWithoutRef<typeof NavigationMenuPrimitive.Indicator>\n>(function NavigationMenuIndicator({ className, style, ...rest }, ref) {\n const sketch = useNavigationMenuSketch();\n return (\n <NavigationMenuPrimitive.Indicator\n ref={ref}\n className={cn(className)}\n style={{ position: \"relative\", height: 6, ...style }}\n {...rest}\n >\n <RoughSvg\n shape=\"line\"\n roughness={(sketch.roughness ?? 1.5) + 0.2}\n seed={deriveSeed(sketch.resolvedSeed, \"nav-indicator\")}\n sketchColor={sketch.ink}\n strokeWidth={2}\n inset={2}\n />\n </NavigationMenuPrimitive.Indicator>\n );\n});\n\nexport interface NavigationMenuItemLinkProps\n extends ComponentPropsWithoutRef<typeof NavigationMenuPrimitive.Link> {\n active?: boolean;\n}\n\nexport const NavigationMenuItemLink = forwardRef<\n HTMLAnchorElement,\n NavigationMenuItemLinkProps\n>(function NavigationMenuItemLink(\n { className, style, active, children, ...rest },\n ref,\n) {\n const sketch = useNavigationMenuSketch();\n const [hovered, setHovered] = useState(false);\n const showMark = active || hovered;\n\n return (\n <NavigationMenuPrimitive.Link\n ref={ref}\n className={cn(className)}\n onPointerEnter={() => setHovered(true)}\n onPointerLeave={() => setHovered(false)}\n style={{\n position: \"relative\",\n display: \"inline-flex\",\n padding: \"8px 12px\",\n fontFamily: doodleUiFontFamily,\n fontSize: 14,\n color: sketch.ink,\n textDecoration: \"none\",\n outline: \"none\",\n ...style,\n }}\n {...rest}\n >\n {showMark ? (\n <RoughSvg\n shape=\"line\"\n roughness={(sketch.roughness ?? 1.5) + 0.3}\n seed={deriveSeed(sketch.resolvedSeed, \"nav-link\")}\n sketchColor={sketch.ink}\n strokeWidth={1.4}\n inset={4}\n style={{ opacity: 0.35 }}\n />\n ) : null}\n <span style={{ position: \"relative\", zIndex: 1 }}>{children}</span>\n </NavigationMenuPrimitive.Link>\n );\n});\n","\"use client\";\n\nimport {\n createContext,\n forwardRef,\n useContext,\n useState,\n type ComponentPropsWithoutRef,\n type HTMLAttributes,\n type ReactNode,\n} from \"react\";\nimport * as MenubarPrimitive from \"@radix-ui/react-menubar\";\nimport { useResolvedSeed } from \"../hooks/useResolvedSeed\";\nimport { RoughSvg } from \"../primitives/RoughSvg\";\nimport { SketchBox } from \"../primitives/SketchBox\";\nimport { SKETCH_COLORS, type SketchProps } from \"../types\";\nimport { cn, deriveSeed, doodleUiFontFamily } from \"../utils\";\n\ninterface MenubarSketchContextValue extends SketchProps {\n resolvedSeed: number;\n ink: string;\n animate?: boolean;\n}\n\nconst MenubarSketchContext = createContext<MenubarSketchContextValue | null>(\n null,\n);\n\nfunction useMenubarSketch(): MenubarSketchContextValue {\n const ctx = useContext(MenubarSketchContext);\n if (!ctx) {\n throw new Error(\"Menubar parts must be used inside <Menubar>.\");\n }\n return ctx;\n}\n\nexport interface MenubarProps\n extends Omit<ComponentPropsWithoutRef<typeof MenubarPrimitive.Root>, \"children\">,\n SketchProps {\n children?: ReactNode;\n animate?: boolean;\n}\n\nexport function Menubar({\n children,\n className,\n style,\n roughness,\n seed,\n sketchColor,\n bowing,\n fillStyle,\n strokeWidth,\n animate,\n ...rest\n}: MenubarProps) {\n const resolvedSeed = useResolvedSeed(seed);\n const ink = sketchColor ?? SKETCH_COLORS.ink;\n\n return (\n <MenubarSketchContext.Provider\n value={{\n roughness,\n seed: resolvedSeed,\n sketchColor,\n bowing,\n fillStyle,\n strokeWidth,\n resolvedSeed,\n ink,\n animate,\n }}\n >\n <MenubarPrimitive.Root\n className={cn(className)}\n style={{\n display: \"inline-flex\",\n alignItems: \"center\",\n gap: 4,\n padding: 4,\n ...style,\n }}\n {...rest}\n >\n {children}\n </MenubarPrimitive.Root>\n </MenubarSketchContext.Provider>\n );\n}\n\nexport const MenubarMenu: typeof MenubarPrimitive.Menu = MenubarPrimitive.Menu;\n\nexport const MenubarTrigger = forwardRef<\n HTMLButtonElement,\n ComponentPropsWithoutRef<typeof MenubarPrimitive.Trigger>\n>(function MenubarTrigger({ className, style, children, ...rest }, ref) {\n const sketch = useMenubarSketch();\n return (\n <MenubarPrimitive.Trigger\n ref={ref}\n className={cn(className)}\n style={{\n border: \"none\",\n background: \"transparent\",\n fontFamily: doodleUiFontFamily,\n fontSize: 14,\n padding: \"6px 10px\",\n cursor: \"pointer\",\n color: sketch.ink,\n outline: \"none\",\n ...style,\n }}\n {...rest}\n >\n {children}\n </MenubarPrimitive.Trigger>\n );\n});\n\nexport const MenubarContent = forwardRef<\n HTMLDivElement,\n ComponentPropsWithoutRef<typeof MenubarPrimitive.Content>\n>(function MenubarContent(\n { className, style, children, align = \"start\", sideOffset = 6, ...rest },\n ref,\n) {\n const sketch = useMenubarSketch();\n return (\n <MenubarPrimitive.Portal>\n <MenubarPrimitive.Content\n ref={ref}\n align={align}\n sideOffset={sideOffset}\n className={cn(className)}\n style={{ zIndex: 80, outline: \"none\", minWidth: 180, ...style }}\n {...rest}\n >\n <SketchBox\n roughness={sketch.roughness}\n seed={sketch.resolvedSeed}\n sketchColor={sketch.ink}\n bowing={sketch.bowing}\n fillStyle={sketch.fillStyle ?? \"solid\"}\n fill=\"#f7f6f2\"\n strokeWidth={sketch.strokeWidth ?? 1.5}\n shadow\n animate={sketch.animate}\n contentStyle={{ padding: \"6px 4px\" }}\n >\n {children}\n </SketchBox>\n </MenubarPrimitive.Content>\n </MenubarPrimitive.Portal>\n );\n});\n\nfunction useMark(highlighted: boolean) {\n const sketch = useMenubarSketch();\n return { sketch, mark: highlighted };\n}\n\nexport const MenubarItem = forwardRef<\n HTMLDivElement,\n ComponentPropsWithoutRef<typeof MenubarPrimitive.Item>\n>(function MenubarItem({ className, style, children, ...rest }, ref) {\n const [highlighted, setHighlighted] = useState(false);\n const { sketch, mark } = useMark(highlighted);\n\n return (\n <MenubarPrimitive.Item\n ref={ref}\n className={cn(className)}\n onPointerMove={() => setHighlighted(true)}\n onPointerLeave={() => setHighlighted(false)}\n style={{\n position: \"relative\",\n display: \"flex\",\n alignItems: \"center\",\n gap: 8,\n padding: \"7px 12px\",\n fontFamily: doodleUiFontFamily,\n fontSize: 14,\n color: sketch.ink,\n outline: \"none\",\n cursor: \"pointer\",\n userSelect: \"none\",\n ...style,\n }}\n {...rest}\n >\n {mark ? (\n <RoughSvg\n shape=\"line\"\n roughness={(sketch.roughness ?? 1.5) + 0.4}\n seed={sketch.resolvedSeed}\n sketchColor={sketch.ink}\n bowing={sketch.bowing ?? 1.6}\n strokeWidth={1.3}\n inset={4}\n style={{ opacity: 0.4 }}\n />\n ) : null}\n <span style={{ position: \"relative\", zIndex: 1 }}>{children}</span>\n </MenubarPrimitive.Item>\n );\n});\n\nexport const MenubarSeparator = forwardRef<\n HTMLDivElement,\n ComponentPropsWithoutRef<typeof MenubarPrimitive.Separator>\n>(function MenubarSeparator({ className, style, ...rest }, ref) {\n const sketch = useMenubarSketch();\n return (\n <MenubarPrimitive.Separator\n ref={ref}\n className={cn(className)}\n style={{ position: \"relative\", height: 10, margin: \"2px 0\", ...style }}\n {...rest}\n >\n <RoughSvg\n shape=\"line\"\n roughness={(sketch.roughness ?? 1.5) + 0.2}\n seed={deriveSeed(sketch.resolvedSeed, \"separator\")}\n sketchColor={sketch.ink}\n bowing={sketch.bowing ?? 1.8}\n strokeWidth={1.2}\n inset={6}\n style={{ opacity: 0.5 }}\n />\n </MenubarPrimitive.Separator>\n );\n});\n\nexport const MenubarLabel = forwardRef<\n HTMLDivElement,\n ComponentPropsWithoutRef<typeof MenubarPrimitive.Label>\n>(function MenubarLabel({ className, style, children, ...rest }, ref) {\n const sketch = useMenubarSketch();\n return (\n <MenubarPrimitive.Label\n ref={ref}\n className={cn(className)}\n style={{\n padding: \"6px 12px\",\n fontFamily: doodleUiFontFamily,\n fontSize: 12,\n fontWeight: 700,\n color: sketch.ink,\n opacity: 0.6,\n ...style,\n }}\n {...rest}\n >\n {children}\n </MenubarPrimitive.Label>\n );\n});\n\nexport const MenubarShortcut = forwardRef<\n HTMLSpanElement,\n HTMLAttributes<HTMLSpanElement>\n>(function MenubarShortcut({ className, style, children, ...rest }, ref) {\n return (\n <span\n ref={ref}\n className={cn(className)}\n style={{\n marginLeft: \"auto\",\n fontSize: 12,\n opacity: 0.55,\n letterSpacing: 0.04,\n ...style,\n }}\n {...rest}\n >\n {children}\n </span>\n );\n});\n\nexport const MenubarSub = MenubarPrimitive.Sub;\nexport const MenubarSubTrigger = MenubarPrimitive.SubTrigger;\nexport const MenubarSubContent = MenubarPrimitive.SubContent;\nexport const MenubarCheckboxItem = MenubarPrimitive.CheckboxItem;\nexport const MenubarRadioGroup = MenubarPrimitive.RadioGroup;\nexport const MenubarRadioItem = MenubarPrimitive.RadioItem;\n","\"use client\";\n\nimport {\n createContext,\n forwardRef,\n useContext,\n useState,\n type CSSProperties,\n type ReactNode,\n} from \"react\";\nimport * as DialogPrimitive from \"@radix-ui/react-dialog\";\nimport { AnimatePresence, motion, type Variants } from \"framer-motion\";\nimport { useAnimate } from \"../animations\";\nimport { useResolvedSeed } from \"../hooks/useResolvedSeed\";\nimport { SketchBox } from \"../primitives/SketchBox\";\nimport { SKETCH_COLORS, type SketchProps } from \"../types\";\nimport { cn, doodleUiFontFamily, doodleUiFontWeight } from \"../utils\";\n\nexport type SlidingPanelSide = \"top\" | \"right\" | \"bottom\" | \"left\";\n\ninterface SlidingPanelSketchContextValue extends SketchProps {\n resolvedSeed: number;\n ink: string;\n animate?: boolean;\n open: boolean;\n side: SlidingPanelSide;\n}\n\nconst SlidingPanelSketchContext =\n createContext<SlidingPanelSketchContextValue | null>(null);\n\nexport function useSlidingPanelSketch(): SlidingPanelSketchContextValue {\n const ctx = useContext(SlidingPanelSketchContext);\n if (!ctx) {\n throw new Error(\"Sliding panel parts must be used inside the panel root.\");\n }\n return ctx;\n}\n\nexport interface SlidingPanelRootProps\n extends Omit<DialogPrimitive.DialogProps, \"children\">,\n SketchProps {\n children?: ReactNode;\n side?: SlidingPanelSide;\n animate?: boolean;\n}\n\nexport function SlidingPanelRoot({\n children,\n open,\n defaultOpen,\n onOpenChange,\n side = \"right\",\n roughness,\n seed,\n sketchColor,\n bowing,\n fillStyle,\n strokeWidth,\n animate,\n ...rest\n}: SlidingPanelRootProps) {\n const resolvedSeed = useResolvedSeed(seed);\n const ink = sketchColor ?? SKETCH_COLORS.ink;\n const [uncontrolled, setUncontrolled] = useState(defaultOpen === true);\n const isOpen = open ?? uncontrolled;\n\n return (\n <SlidingPanelSketchContext.Provider\n value={{\n roughness,\n seed: resolvedSeed,\n sketchColor,\n bowing,\n fillStyle,\n strokeWidth,\n resolvedSeed,\n ink,\n animate,\n open: isOpen,\n side,\n }}\n >\n <DialogPrimitive.Root\n open={isOpen}\n onOpenChange={(next) => {\n setUncontrolled(next);\n onOpenChange?.(next);\n }}\n {...rest}\n >\n {children}\n </DialogPrimitive.Root>\n </SlidingPanelSketchContext.Provider>\n );\n}\n\nexport const SlidingPanelTrigger = DialogPrimitive.Trigger;\nexport const SlidingPanelClose = DialogPrimitive.Close;\nexport const SlidingPanelPortal = DialogPrimitive.Portal;\n\nfunction slideVariants(side: SlidingPanelSide, shouldAnimate: boolean): Variants {\n if (!shouldAnimate) {\n return { hidden: {}, visible: {} };\n }\n const offset = 420;\n const hidden =\n side === \"left\"\n ? { x: -offset }\n : side === \"right\"\n ? { x: offset }\n : side === \"top\"\n ? { y: -offset }\n : { y: offset };\n return {\n hidden: { ...hidden, opacity: 0.85 },\n visible: { x: 0, y: 0, opacity: 1 },\n };\n}\n\nfunction panelPosition(side: SlidingPanelSide): CSSProperties {\n switch (side) {\n case \"left\":\n return {\n top: 0,\n bottom: 0,\n left: 0,\n width: \"min(420px, 100vw)\",\n };\n case \"right\":\n return {\n top: 0,\n bottom: 0,\n right: 0,\n width: \"min(420px, 100vw)\",\n };\n case \"top\":\n return {\n top: 0,\n left: 0,\n right: 0,\n height: \"min(420px, 90vh)\",\n };\n default:\n return {\n bottom: 0,\n left: 0,\n right: 0,\n height: \"min(420px, 90vh)\",\n };\n }\n}\n\nexport interface SlidingPanelOverlayProps\n extends Omit<DialogPrimitive.DialogOverlayProps, \"asChild\" | \"forceMount\"> {}\n\nexport const SlidingPanelOverlay = forwardRef<\n HTMLDivElement,\n SlidingPanelOverlayProps\n>(function SlidingPanelOverlay({ style, ...rest }, ref) {\n const sketch = useSlidingPanelSketch();\n const shouldAnimate = useAnimate(sketch.animate);\n\n return (\n <DialogPrimitive.Overlay ref={ref} asChild forceMount {...rest}>\n <motion.div\n initial={shouldAnimate ? { opacity: 0 } : false}\n animate={{ opacity: 1 }}\n exit={shouldAnimate ? { opacity: 0 } : undefined}\n transition={\n shouldAnimate ? { duration: 0.22, ease: \"easeOut\" } : { duration: 0 }\n }\n style={{\n position: \"fixed\",\n inset: 0,\n background: \"rgba(31, 29, 26, 0.38)\",\n zIndex: 70,\n ...style,\n }}\n />\n </DialogPrimitive.Overlay>\n );\n});\n\nexport interface SlidingPanelContentProps\n extends Omit<DialogPrimitive.DialogContentProps, \"asChild\" | \"forceMount\"> {\n children?: ReactNode;\n contentStyle?: CSSProperties;\n /** Extra chrome above panel content (e.g. drawer handle). */\n chrome?: ReactNode;\n}\n\nexport const SlidingPanelContent = forwardRef<\n HTMLDivElement,\n SlidingPanelContentProps\n>(function SlidingPanelContent(\n { className, style, contentStyle, children, chrome, ...rest },\n ref,\n) {\n const sketch = useSlidingPanelSketch();\n const shouldAnimate = useAnimate(sketch.animate);\n const variants = slideVariants(sketch.side, shouldAnimate);\n\n return (\n <AnimatePresence>\n {sketch.open ? (\n <DialogPrimitive.Portal forceMount>\n <SlidingPanelOverlay />\n <DialogPrimitive.Content ref={ref} asChild forceMount {...rest}>\n <motion.div\n className={cn(className)}\n initial={shouldAnimate ? \"hidden\" : false}\n animate=\"visible\"\n exit={shouldAnimate ? \"hidden\" : undefined}\n variants={variants}\n transition={\n shouldAnimate\n ? { duration: 0.28, ease: \"easeOut\" }\n : { duration: 0 }\n }\n style={{\n position: \"fixed\",\n zIndex: 80,\n outline: \"none\",\n pointerEvents: \"auto\",\n ...panelPosition(sketch.side),\n ...style,\n }}\n >\n <SketchBox\n roughness={sketch.roughness}\n seed={sketch.resolvedSeed}\n sketchColor={sketch.ink}\n bowing={sketch.bowing}\n fillStyle={sketch.fillStyle ?? \"solid\"}\n fill=\"#f7f6f2\"\n strokeWidth={sketch.strokeWidth ?? 2}\n animate={sketch.animate}\n contentStyle={{\n padding: 20,\n height: \"100%\",\n boxSizing: \"border-box\",\n display: \"flex\",\n flexDirection: \"column\",\n ...contentStyle,\n }}\n style={{ height: \"100%\" }}\n >\n {chrome}\n {children}\n </SketchBox>\n </motion.div>\n </DialogPrimitive.Content>\n </DialogPrimitive.Portal>\n ) : null}\n </AnimatePresence>\n );\n});\n\nexport interface SlidingPanelHeaderProps {\n children?: ReactNode;\n className?: string;\n style?: CSSProperties;\n}\n\nexport function SlidingPanelHeader({\n children,\n className,\n style,\n}: SlidingPanelHeaderProps) {\n return (\n <div\n className={cn(className)}\n style={{\n display: \"flex\",\n flexDirection: \"column\",\n gap: 6,\n marginBottom: 12,\n ...style,\n }}\n >\n {children}\n </div>\n );\n}\n\nexport interface SlidingPanelFooterProps {\n children?: ReactNode;\n className?: string;\n style?: CSSProperties;\n}\n\nexport function SlidingPanelFooter({\n children,\n className,\n style,\n}: SlidingPanelFooterProps) {\n return (\n <div\n className={cn(className)}\n style={{\n display: \"flex\",\n gap: 8,\n marginTop: \"auto\",\n paddingTop: 12,\n ...style,\n }}\n >\n {children}\n </div>\n );\n}\n\nexport const SlidingPanelTitle = forwardRef<\n HTMLHeadingElement,\n DialogPrimitive.DialogTitleProps\n>(function SlidingPanelTitle({ className, style, ...rest }, ref) {\n const sketch = useSlidingPanelSketch();\n return (\n <DialogPrimitive.Title\n ref={ref}\n className={cn(className)}\n style={{\n margin: 0,\n fontFamily: doodleUiFontFamily,\n fontWeight: doodleUiFontWeight(700),\n fontSize: 20,\n color: sketch.ink,\n ...style,\n }}\n {...rest}\n />\n );\n});\n\nexport const SlidingPanelDescription = forwardRef<\n HTMLParagraphElement,\n DialogPrimitive.DialogDescriptionProps\n>(function SlidingPanelDescription({ className, style, ...rest }, ref) {\n const sketch = useSlidingPanelSketch();\n return (\n <DialogPrimitive.Description\n ref={ref}\n className={cn(className)}\n style={{\n margin: 0,\n fontFamily: doodleUiFontFamily,\n fontSize: 14,\n color: sketch.ink,\n opacity: 0.75,\n ...style,\n }}\n {...rest}\n />\n );\n});\n","\"use client\";\n\nimport { forwardRef } from \"react\";\nimport {\n SlidingPanelClose,\n SlidingPanelContent,\n SlidingPanelDescription,\n SlidingPanelFooter,\n SlidingPanelHeader,\n SlidingPanelRoot,\n SlidingPanelTitle,\n SlidingPanelTrigger,\n type SlidingPanelContentProps,\n type SlidingPanelRootProps,\n type SlidingPanelSide,\n} from \"../primitives/SlidingPanel\";\n\nexport type SheetProps = SlidingPanelRootProps & {\n side?: SlidingPanelSide;\n};\n\nexport function Sheet({ side = \"right\", ...rest }: SheetProps) {\n return <SlidingPanelRoot side={side} {...rest} />;\n}\n\nexport const SheetTrigger = SlidingPanelTrigger;\nexport const SheetClose = SlidingPanelClose;\n\nexport type SheetContentProps = SlidingPanelContentProps;\n\nexport const SheetContent = forwardRef<HTMLDivElement, SheetContentProps>(\n function SheetContent(props, ref) {\n return <SlidingPanelContent ref={ref} {...props} />;\n },\n);\n\nexport const SheetHeader = SlidingPanelHeader;\nexport const SheetFooter = SlidingPanelFooter;\nexport const SheetTitle = SlidingPanelTitle;\nexport const SheetDescription = SlidingPanelDescription;\n","\"use client\";\n\nimport { forwardRef } from \"react\";\nimport { RoughSvg } from \"../primitives/RoughSvg\";\nimport {\n SlidingPanelClose,\n SlidingPanelContent,\n SlidingPanelDescription,\n SlidingPanelFooter,\n SlidingPanelHeader,\n SlidingPanelRoot,\n SlidingPanelTitle,\n SlidingPanelTrigger,\n useSlidingPanelSketch,\n type SlidingPanelContentProps,\n type SlidingPanelRootProps,\n} from \"../primitives/SlidingPanel\";\nimport { SKETCH_COLORS } from \"../types\";\nimport { deriveSeed } from \"../utils\";\n\nexport type DrawerProps = Omit<SlidingPanelRootProps, \"side\">;\n\nexport function Drawer(props: DrawerProps) {\n return <SlidingPanelRoot side=\"bottom\" {...props} />;\n}\n\nexport const DrawerTrigger = SlidingPanelTrigger;\nexport const DrawerClose = SlidingPanelClose;\n\nexport const DrawerHandle = forwardRef<HTMLDivElement, { className?: string }>(\n function DrawerHandle({ className }, ref) {\n const sketch = useSlidingPanelSketch();\n return (\n <div\n ref={ref}\n className={className}\n style={{\n position: \"relative\",\n width: 48,\n height: 10,\n margin: \"0 auto 12px\",\n }}\n aria-hidden\n >\n <RoughSvg\n shape=\"line\"\n roughness={(sketch.roughness ?? 1.5) + 0.3}\n seed={deriveSeed(sketch.resolvedSeed, \"drawer-handle\")}\n sketchColor={sketch.sketchColor ?? SKETCH_COLORS.ink}\n bowing={sketch.bowing ?? 1.6}\n strokeWidth={2.4}\n width={48}\n height={10}\n inset={2}\n />\n </div>\n );\n },\n);\n\nexport type DrawerContentProps = Omit<SlidingPanelContentProps, \"chrome\">;\n\nexport const DrawerContent = forwardRef<HTMLDivElement, DrawerContentProps>(\n function DrawerContent({ children, ...rest }, ref) {\n return (\n <SlidingPanelContent\n ref={ref}\n chrome={<DrawerHandle />}\n contentStyle={{ paddingTop: 8 }}\n {...rest}\n >\n {children}\n </SlidingPanelContent>\n );\n },\n);\n\nexport const DrawerHeader = SlidingPanelHeader;\nexport const DrawerFooter = SlidingPanelFooter;\nexport const DrawerTitle = SlidingPanelTitle;\nexport const DrawerDescription = SlidingPanelDescription;\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/types.ts","../src/utils.ts","../src/context/SketchSeedContext.tsx","../src/hooks/useResolvedSeed.ts","../src/hooks/useElementSize.ts","../src/primitives/RoughSvg.tsx","../src/animations/DoodleUIProvider.tsx","../src/animations/resolveAnimate.ts","../src/animations/usePrefersReducedMotion.ts","../src/animations/useAnimate.ts","../src/animations/useTweenNumber.ts","../src/animations/useDrawIn.ts","../src/hooks/useSketchTheme.ts","../src/primitives/SketchBox.tsx","../src/components/Button.tsx","../src/components/Input.tsx","../src/components/Textarea.tsx","../src/components/Checkbox.tsx","../src/components/Radio.tsx","../src/components/Card.tsx","../src/components/Badge.tsx","../src/components/Alert.tsx","../src/components/Modal.tsx","../src/components/Divider.tsx","../src/components/Progress.tsx","../src/components/Tooltip.tsx","../src/components/Select.tsx","../src/components/Switch.tsx","../src/components/Tabs.tsx","../src/components/Table.tsx","../src/components/Toast.tsx","../src/components/Accordion.tsx","../src/components/Avatar.tsx","../src/components/Slider.tsx","../src/components/Pagination.tsx","../src/components/Breadcrumb.tsx","../src/components/Skeleton.tsx","../src/components/Stepper.tsx","../src/components/Label.tsx","../src/components/Collapsible.tsx","../src/components/Popover.tsx","../src/components/DropdownMenu.tsx","../src/components/Dialog.tsx","../src/components/AlertDialog.tsx","../src/components/Command.tsx","../src/components/Combobox.tsx","../src/components/Kbd.tsx","../src/components/Spinner.tsx","../src/components/Toggle.tsx","../src/components/ToggleGroup.tsx","../src/components/InputGroup.tsx","../src/components/InputOTP.tsx","../src/components/ScrollArea.tsx","../src/components/Resizable.tsx","../src/components/HoverCard.tsx","../src/components/ContextMenu.tsx","../src/components/NavigationMenu.tsx","../src/components/Menubar.tsx","../src/primitives/SlidingPanel.tsx","../src/components/Sheet.tsx","../src/components/Drawer.tsx","../src/components/AspectRatio.tsx","../src/components/NativeSelect.tsx","../src/components/Empty.tsx","../src/components/Field.tsx","../src/components/Typography.tsx","../src/components/Sidebar.tsx","../src/components/Carousel.tsx"],"names":["createContext","useState","useCallback","useLayoutEffect","useMemo","jsx","useContext","useRef","rough","useSyncExternalStore","useEffect","forwardRef","SketchBox","jsxs","assignRef","Button","Input","Textarea","Checkbox","useId","CheckboxPrimitive","RadioGroup","RadioGroupPrimitive","Radio","Card","Badge","Alert","Dialog","AnimatePresence","motion","Divider","Progress","TooltipPrimitive","SelectPrimitive","SelectTrigger","SelectContent","SelectItem","Switch","SwitchPrimitive","Tabs","TabsPrimitive","TabList","Tab","TabPanel","Table","TableHead","TableBody","TableRow","TableHeaderCell","TableCell","LIGHT_VARIANT_FILL","DARK_VARIANT_FILL","ToastPrimitive","CHEVRON_PATH","Accordion","AccordionPrimitive","AccordionItem","AccordionTrigger","AccordionContent","Avatar","AvatarPrimitive","Slider","SliderPrimitive","Pagination","Breadcrumb","Children","isValidElement","cloneElement","BreadcrumbItem","Skeleton","Stepper","Label","LabelPrimitive","Collapsible","CollapsiblePrimitive","CollapsibleTrigger","CollapsibleContent","PopoverPrimitive","PopoverContent","DropdownMenuPrimitive","DropdownMenuContent","DropdownMenuItem","CHECK_PATH","DropdownMenuCheckboxItem","DropdownMenuRadioItem","DropdownMenuLabel","DropdownMenuSeparator","DialogPrimitive","DialogOverlay","DialogContent","DialogTitle","DialogDescription","AlertDialogPrimitive","AlertDialogOverlay","AlertDialogContent","AlertDialogTitle","AlertDialogDescription","AlertDialogAction","AlertDialogCancel","Command","CmdkCommand","CommandInput","CmdkInput","CommandList","CmdkList","CommandEmpty","CmdkEmpty","CommandGroup","CmdkGroup","CommandItem","CmdkItem","CommandSeparator","CmdkSeparator","PopoverPrimitive2","Kbd","Spinner","SIZE_STYLES","Toggle","TogglePrimitive","ToggleGroupPrimitive","ToggleGroupItem","InputGroupAddon","InputGroupInput","InputGroupButton","InputOTP","OTPInput","InputOTPGroup","InputOTPSlot","OTPInputContext","InputOTPSeparator","ScrollArea","ScrollAreaPrimitive","ScrollAreaViewport","ScrollBar","ResizablePrimitive","HoverCardPrimitive","HoverCardContent","ContextMenuPrimitive","ContextMenuContent","useMark","ContextMenuItem","ContextMenuCheckboxItem","ContextMenuRadioItem","ContextMenuLabel","ContextMenuSeparator","NavigationMenuPrimitive","NavigationMenuList","NavigationMenuTrigger","NavigationMenuContent","NavigationMenuViewport","NavigationMenuIndicator","NavigationMenuItemLink","MenubarPrimitive","MenubarTrigger","MenubarContent","MenubarItem","MenubarSeparator","MenubarLabel","MenubarShortcut","DialogPrimitive2","SlidingPanelOverlay","SlidingPanelContent","SlidingPanelTitle","SlidingPanelDescription","SheetContent","DrawerHandle","DrawerContent","AspectRatioPrimitive","NativeSelect","Empty","Heading","Text","Blockquote","InlineCode","Highlight","Sidebar","SidebarItem","useEmblaCarousel","CarouselContent","CarouselItem","CarouselArrow","CarouselPrevious","CarouselNext"],"mappings":"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","file":"index.cjs","sourcesContent":["import type { CSSProperties, HTMLAttributes } from \"react\";\nimport type { Options } from \"roughjs/bin/core\";\n\nexport type FillStyle =\n | \"hachure\"\n | \"solid\"\n | \"zigzag\"\n | \"cross-hatch\"\n | \"dots\"\n | \"dashed\"\n | \"zigzag-line\";\n\nexport type RoughShape = \"rectangle\" | \"ellipse\" | \"line\" | \"line-vertical\" | \"path\";\n\nexport interface SketchProps {\n /** Sketchiness intensity. Default 1.5 */\n roughness?: number;\n /** Lock the wobble. Omit to follow SketchSeedProvider or randomize on mount */\n seed?: number;\n /** Stroke color override */\n sketchColor?: string;\n /** Line curvature. Default 1 */\n bowing?: number;\n fillStyle?: FillStyle;\n strokeWidth?: number;\n /** Spacing between hatch lines for patterned fills. Defaults to 4 in roughjs, higher = airier */\n hachureGap?: number;\n /** Angle in degrees of the hatch lines */\n hachureAngle?: number;\n /** Weight/thickness of the hatch lines */\n fillWeight?: number;\n}\n\nexport interface RoughSvgProps extends SketchProps {\n shape?: RoughShape;\n /** Explicit width. Falls back to the parent box via ResizeObserver */\n width?: number;\n height?: number;\n fill?: string;\n /** Inset the drawing from the box edge so strokes are not clipped */\n inset?: number;\n path?: string;\n className?: string;\n style?: CSSProperties;\n}\n\nexport type PolymorphicClassName = Pick<HTMLAttributes<HTMLElement>, \"className\" | \"style\">;\n\nexport function toRoughOptions(\n props: SketchProps & { fill?: string; stroke?: string },\n): Options {\n const stroke = props.stroke ?? props.sketchColor ?? DEFAULT_INK;\n const options: Options = {\n roughness: props.roughness ?? DEFAULT_ROUGHNESS,\n bowing: props.bowing ?? DEFAULT_BOWING,\n stroke,\n strokeWidth: props.strokeWidth ?? DEFAULT_STROKE_WIDTH,\n seed: props.seed,\n };\n if (props.fill) {\n options.fill = props.fill;\n options.fillStyle = props.fillStyle ?? \"hachure\";\n if (props.hachureGap !== undefined) options.hachureGap = props.hachureGap;\n if (props.hachureAngle !== undefined) options.hachureAngle = props.hachureAngle;\n if (props.fillWeight !== undefined) options.fillWeight = props.fillWeight;\n }\n return options;\n}\n\nexport const DEFAULT_ROUGHNESS = 1.5;\nexport const DEFAULT_BOWING = 1;\nexport const DEFAULT_STROKE_WIDTH = 1.75;\nexport const DEFAULT_INK = \"#1f1d1a\";\nexport const DEFAULT_DARK_INK = \"#f3f4f6\";\nexport const DEFAULT_PAPER = \"#f7f6f2\";\nexport const DEFAULT_DARK_PAPER = \"#131923\";\nexport const DEFAULT_DARK_CARD_BG = \"#131923\";\nexport const DEFAULT_INSET = 3;\n\nexport const SKETCH_COLORS = {\n ink: DEFAULT_INK,\n accent: \"#e24b3b\",\n accentFill: \"#f4c4bc\",\n secondaryFill: \"#d7e3d4\",\n paper: \"#eef0ea\",\n info: \"#1d4e89\",\n warning: \"#c47b17\",\n error: \"#c0392b\",\n success: \"#2d6a4f\",\n} as const;\n\nexport const DARK_SKETCH_COLORS = {\n ink: DEFAULT_DARK_INK,\n accent: \"#f87171\",\n accentFill: \"rgba(248, 113, 113, 0.22)\",\n secondaryFill: \"rgba(255, 255, 255, 0.08)\",\n paper: DEFAULT_DARK_PAPER,\n cardBg: DEFAULT_DARK_CARD_BG,\n shadow: \"#000000\",\n info: \"#60a5fa\",\n warning: \"#fbbf24\",\n error: \"#f87171\",\n success: \"#34d399\",\n} as const;\n","import type { ForwardedRef, MutableRefObject } from \"react\";\n\nexport function assignRef<T>(ref: ForwardedRef<T> | undefined, value: T | null) {\n if (!ref) return;\n if (typeof ref === \"function\") ref(value);\n else (ref as MutableRefObject<T | null>).current = value;\n}\n\nexport function randomSeed(): number {\n return Math.floor(Math.random() * 2 ** 31);\n}\n\n/** Follows SketchSeedProvider --doodle-ui-font. Unset = inherit the page default. */\nexport const doodleUiFontFamily = \"var(--doodle-ui-font, inherit)\";\n\n/** When a handwriting face is active the provider sets --doodle-ui-font-weight to 400. */\nexport function doodleUiFontWeight(fallback: number): string {\n return `var(--doodle-ui-font-weight, ${fallback})`;\n}\n\nexport function nextFontIndex(current: number, count: number): number {\n if (count <= 1) return 0;\n let next = current;\n while (next === current) {\n next = Math.floor(Math.random() * count);\n }\n return next;\n}\n\nexport function cn(\n ...parts: Array<string | undefined | false | null>\n): string | undefined {\n const value = parts.filter(Boolean).join(\" \");\n return value.length > 0 ? value : undefined;\n}\n\n/**\n * Offset a resolved sketch seed by a stable hash of `key`.\n * Items in a list keep distinct wobbles that still redraw together on Shuffle.\n */\nexport function deriveSeed(base: number, key: string): number {\n let hash = 0;\n for (let i = 0; i < key.length; i += 1) {\n hash = (hash * 31 + key.charCodeAt(i)) | 0;\n }\n return (base + (hash >>> 0)) % 2 ** 31;\n}\n","\"use client\";\n\nimport {\n createContext,\n useCallback,\n useContext,\n useLayoutEffect,\n useMemo,\n useState,\n type ReactNode,\n} from \"react\";\nimport { nextFontIndex, randomSeed } from \"../utils\";\n\nexport interface SketchSeedContextValue {\n seed: number;\n fontIndex: number;\n shuffle: () => void;\n setSeed: (seed: number) => void;\n}\n\nconst SketchSeedContext = createContext<SketchSeedContextValue | null>(null);\n\nexport interface SketchSeedProviderProps {\n children: ReactNode;\n initialSeed?: number;\n /**\n * CSS font-family values for Shuffle. Index 0 is the page default\n * (`--doodle-ui-font` is left unset). Later indexes set the variable.\n */\n fonts?: readonly string[];\n /** Starting palette index. Defaults to 0 (unset / page default). */\n initialFontIndex?: number;\n}\n\nexport function SketchSeedProvider({\n children,\n initialSeed,\n fonts,\n initialFontIndex = 0,\n}: SketchSeedProviderProps) {\n const [seed, setSeed] = useState(() => initialSeed ?? randomSeed());\n const [fontIndex, setFontIndex] = useState(initialFontIndex);\n const fontCount = fonts?.length ?? 0;\n\n const shuffle = useCallback(() => {\n setSeed(randomSeed());\n setFontIndex((current) => nextFontIndex(current, fontCount));\n }, [fontCount]);\n\n const activeFamily = fontIndex > 0 ? fonts?.[fontIndex] : undefined;\n\n useLayoutEffect(() => {\n const root = document.documentElement;\n if (activeFamily) {\n root.style.setProperty(\"--doodle-ui-font\", activeFamily);\n root.style.setProperty(\"--doodle-ui-font-weight\", \"400\");\n } else {\n // Override docs :root defaults so Shuffle can return to Outfit.\n root.style.setProperty(\"--doodle-ui-font\", \"initial\");\n root.style.setProperty(\"--doodle-ui-font-weight\", \"initial\");\n }\n return () => {\n root.style.removeProperty(\"--doodle-ui-font\");\n root.style.removeProperty(\"--doodle-ui-font-weight\");\n };\n }, [activeFamily]);\n\n const value = useMemo(\n () => ({ seed, fontIndex, shuffle, setSeed }),\n [seed, fontIndex, shuffle],\n );\n\n return (\n <SketchSeedContext.Provider value={value}>\n {children}\n </SketchSeedContext.Provider>\n );\n}\n\nexport function useSketchSeed(): SketchSeedContextValue {\n const ctx = useContext(SketchSeedContext);\n if (!ctx) {\n throw new Error(\n \"useSketchSeed() must be used inside <SketchSeedProvider>. Wrap your tree so Shuffle can redraw every sketch.\",\n );\n }\n return ctx;\n}\n\nexport function useOptionalSketchSeed(): SketchSeedContextValue | null {\n return useContext(SketchSeedContext);\n}\n\nexport { SketchSeedContext };\n","\"use client\";\n\nimport { useState } from \"react\";\nimport { useOptionalSketchSeed } from \"../context/SketchSeedContext\";\nimport { randomSeed } from \"../utils\";\n\n/**\n * Resolves the seed used to draw a sketch:\n * 1. explicit `seed` prop (locked, ignores Shuffle)\n * 2. SketchSeedProvider seed (redraws on Shuffle)\n * 3. a stable random seed generated on mount\n */\nexport function useResolvedSeed(seed?: number): number {\n const ctx = useOptionalSketchSeed();\n const [fallback] = useState(randomSeed);\n if (seed != null) return seed;\n if (ctx) return ctx.seed;\n return fallback;\n}\n","\"use client\";\n\nimport { useLayoutEffect, useState, type RefObject } from \"react\";\n\nexport function useElementSize(\n ref: RefObject<HTMLElement | null>,\n): { width: number; height: number } {\n const [size, setSize] = useState({ width: 0, height: 0 });\n\n useLayoutEffect(() => {\n const el = ref.current;\n if (!el) return;\n\n const update = () => {\n setSize({ width: el.offsetWidth, height: el.offsetHeight });\n };\n\n update();\n const observer = new ResizeObserver(update);\n observer.observe(el);\n return () => observer.disconnect();\n }, [ref]);\n\n return size;\n}\n","\"use client\";\n\nimport { useLayoutEffect, useRef, type CSSProperties } from \"react\";\nimport rough from \"roughjs\";\nimport { useResolvedSeed } from \"../hooks/useResolvedSeed\";\nimport { useElementSize } from \"../hooks/useElementSize\";\nimport {\n DEFAULT_INSET,\n toRoughOptions,\n type RoughSvgProps,\n} from \"../types\";\n\n/**\n * Absolutely-positioned SVG layer that draws a rough.js shape behind HTML content.\n * Parent must be `position: relative`.\n */\nexport function RoughSvg({\n shape = \"rectangle\",\n width: widthProp,\n height: heightProp,\n roughness,\n seed: seedProp,\n sketchColor,\n bowing,\n fillStyle,\n strokeWidth,\n fill,\n hachureGap,\n hachureAngle,\n fillWeight,\n inset = DEFAULT_INSET,\n path,\n className,\n style,\n}: RoughSvgProps) {\n const containerRef = useRef<HTMLDivElement>(null);\n const svgRef = useRef<SVGSVGElement>(null);\n const measured = useElementSize(containerRef);\n const seed = useResolvedSeed(seedProp);\n\n const width = widthProp ?? measured.width;\n const height = heightProp ?? measured.height;\n\n useLayoutEffect(() => {\n const svg = svgRef.current;\n if (!svg || width < 2 || height < 2) return;\n\n while (svg.firstChild) svg.removeChild(svg.firstChild);\n\n const rc = rough.svg(svg);\n const options = toRoughOptions({\n roughness,\n seed,\n sketchColor,\n bowing,\n fillStyle,\n strokeWidth,\n fill,\n hachureGap,\n hachureAngle,\n fillWeight,\n });\n\n const x = inset;\n const y = inset;\n const w = Math.max(1, width - inset * 2);\n const h = Math.max(1, height - inset * 2);\n\n let node: SVGGElement;\n switch (shape) {\n case \"ellipse\":\n node = rc.ellipse(width / 2, height / 2, w, h, options);\n break;\n case \"line\":\n node = rc.line(inset, height / 2, width - inset, height / 2, options);\n break;\n case \"line-vertical\":\n node = rc.line(width / 2, inset, width / 2, height - inset, options);\n break;\n case \"path\":\n if (!path) return;\n node = rc.path(path, options);\n break;\n default:\n node = rc.rectangle(x, y, w, h, options);\n }\n\n svg.appendChild(node);\n }, [\n width,\n height,\n shape,\n roughness,\n seed,\n sketchColor,\n bowing,\n fillStyle,\n strokeWidth,\n fill,\n hachureGap,\n hachureAngle,\n fillWeight,\n inset,\n path,\n ]);\n\n const overlayStyle: CSSProperties = {\n position: \"absolute\",\n inset: 0,\n width: \"100%\",\n height: \"100%\",\n pointerEvents: \"none\",\n overflow: \"visible\",\n zIndex: 0,\n ...style,\n };\n\n return (\n <div\n ref={containerRef}\n aria-hidden=\"true\"\n className={className}\n style={overlayStyle}\n >\n <svg\n ref={svgRef}\n width=\"100%\"\n height=\"100%\"\n overflow=\"visible\"\n style={{ display: \"block\" }}\n />\n </div>\n );\n}\n","\"use client\";\n\nimport {\n createContext,\n useContext,\n useMemo,\n type ReactNode,\n} from \"react\";\n\nexport type DoodleUITheme = \"light\" | \"dark\" | \"system\";\n\nexport interface DoodleUIContextValue {\n /** Default for components that do not set their own `animate` prop. */\n animate: boolean;\n /** When true, skip the prefers-reduced-motion disable. */\n forceAnimate: boolean;\n /**\n * Theme mode: \"light\", \"dark\", or \"system\". Defaults to \"system\"\n * (automatically tracks document .dark class or prefers-color-scheme).\n */\n theme?: DoodleUITheme;\n}\n\nconst DoodleUIContext = createContext<DoodleUIContextValue | null>(null);\n\nexport interface DoodleUIProviderProps {\n children: ReactNode;\n /**\n * Default animation setting for descendant doodle-ui components.\n * Per-component `animate` still wins when it is set.\n */\n animate?: boolean;\n /**\n * Play animations even when the user prefers reduced motion.\n * Off by default — only set this as an explicit escape hatch.\n */\n forceAnimate?: boolean;\n /**\n * Theme mode: \"light\", \"dark\", or \"system\". Defaults to \"system\"\n * (automatically reacts to html.dark, [data-theme=\"dark\"], and system dark mode).\n */\n theme?: DoodleUITheme;\n}\n\nexport function DoodleUIProvider({\n children,\n animate = true,\n forceAnimate = false,\n theme = \"system\",\n}: DoodleUIProviderProps) {\n const value = useMemo(\n () => ({ animate, forceAnimate, theme }),\n [animate, forceAnimate, theme],\n );\n\n return (\n <DoodleUIContext.Provider value={value}>\n {children}\n </DoodleUIContext.Provider>\n );\n}\n\nexport function useDoodleUI(): DoodleUIContextValue {\n return (\n useContext(DoodleUIContext) ?? { animate: true, forceAnimate: false, theme: \"system\" }\n );\n}\n\nexport { DoodleUIContext };\n","export interface ResolveAnimateInput {\n /** Per-component override. When set, wins over the provider default. */\n animate?: boolean;\n /** Provider default. Defaults to true. */\n providerAnimate?: boolean;\n /** Ignore prefers-reduced-motion when true. */\n forceAnimate?: boolean;\n prefersReducedMotion?: boolean;\n}\n\n/**\n * Resolve whether sketch animations should run.\n * `prefers-reduced-motion: reduce` wins unless `forceAnimate` is set.\n * An explicit per-component `animate` prop then wins over the provider.\n */\nexport function resolveAnimate({\n animate,\n providerAnimate = true,\n forceAnimate = false,\n prefersReducedMotion = false,\n}: ResolveAnimateInput): boolean {\n if (prefersReducedMotion && !forceAnimate) return false;\n if (animate !== undefined) return animate;\n return providerAnimate;\n}\n","\"use client\";\n\nimport { useSyncExternalStore } from \"react\";\n\nfunction subscribe(onStoreChange: () => void) {\n const media = window.matchMedia(\"(prefers-reduced-motion: reduce)\");\n media.addEventListener(\"change\", onStoreChange);\n return () => media.removeEventListener(\"change\", onStoreChange);\n}\n\nfunction getSnapshot() {\n return window.matchMedia(\"(prefers-reduced-motion: reduce)\").matches;\n}\n\nfunction getServerSnapshot() {\n return false;\n}\n\nexport function usePrefersReducedMotion(): boolean {\n return useSyncExternalStore(subscribe, getSnapshot, getServerSnapshot);\n}\n","\"use client\";\n\nimport { useDoodleUI } from \"./DoodleUIProvider\";\nimport { resolveAnimate } from \"./resolveAnimate\";\nimport { usePrefersReducedMotion } from \"./usePrefersReducedMotion\";\n\n/**\n * Whether the calling component should play sketch animations.\n * Per-component `animate` overrides the provider. Reduced motion\n * disables animation unless the provider set `forceAnimate`.\n */\nexport function useAnimate(animate?: boolean): boolean {\n const { animate: providerAnimate, forceAnimate } = useDoodleUI();\n const prefersReducedMotion = usePrefersReducedMotion();\n return resolveAnimate({\n animate,\n providerAnimate,\n forceAnimate,\n prefersReducedMotion,\n });\n}\n","\"use client\";\n\nimport { useEffect, useRef, useState } from \"react\";\n\n/**\n * Ease a number toward `target`. When `enabled` is false, snap immediately.\n */\nexport function useTweenNumber(\n target: number,\n enabled: boolean,\n duration: number = 400,\n): number {\n const [value, setValue] = useState(target);\n const valueRef = useRef(target);\n valueRef.current = value;\n\n useEffect(() => {\n if (!enabled) {\n valueRef.current = target;\n setValue(target);\n return;\n }\n\n const from = valueRef.current;\n if (from === target) return;\n\n const start = performance.now();\n let frame = 0;\n const tick = (now: number) => {\n const t = Math.min(1, (now - start) / duration);\n const eased = 1 - (1 - t) ** 3;\n const next = from + (target - from) * eased;\n valueRef.current = next;\n setValue(next);\n if (t < 1) frame = requestAnimationFrame(tick);\n };\n frame = requestAnimationFrame(tick);\n return () => cancelAnimationFrame(frame);\n }, [target, enabled, duration]);\n\n return enabled ? value : target;\n}\n","\"use client\";\n\nimport { useLayoutEffect, type RefObject } from \"react\";\n\n/** Default sketch-in duration. Ease-out over ~400ms. */\nexport const DRAW_IN_DURATION_MS = 400;\n/** Alerts often appear dynamically — keep the sketch-in snappy. */\nexport const DRAW_IN_ALERT_MS = 200;\n/** Tooltips are transient — draw in quickly. */\nexport const DRAW_IN_TOOLTIP_MS = 180;\n/** Checkmarks, radio dots, and tab underlines. */\nexport const DRAW_IN_MARK_MS = 240;\n/** Delay between table row rules. */\nexport const TABLE_STAGGER_MS = 40;\n\nconst DRAW_IN_EASING = \"ease-out\";\n\nconst running = new WeakMap<Element, Animation[]>();\n\n/**\n * Rough.js puts fill (hachure) first and the outline last inside each `<g>`.\n * Animate the outline path so the border sketches in, not the wash.\n */\nfunction collectStrokePaths(root: Element): SVGPathElement[] {\n const groups = root.querySelectorAll(\"g\");\n if (groups.length > 0) {\n const paths: SVGPathElement[] = [];\n groups.forEach((group) => {\n const children = group.querySelectorAll(\":scope > path\");\n if (children.length === 0) return;\n paths.push(children[children.length - 1] as SVGPathElement);\n });\n return paths;\n }\n return Array.from(root.querySelectorAll(\"path\"));\n}\n\nexport function getStrokePaths(target: Element): SVGPathElement[] {\n if (target instanceof SVGPathElement) return [target];\n if (target instanceof SVGSVGElement) return collectStrokePaths(target);\n\n const svgs = target.querySelectorAll(\"svg\");\n if (svgs.length > 0) {\n return Array.from(svgs).flatMap((svg) => collectStrokePaths(svg));\n }\n return collectStrokePaths(target);\n}\n\nfunction clearDash(path: SVGPathElement) {\n path.style.strokeDasharray = \"\";\n path.style.strokeDashoffset = \"\";\n}\n\nexport function cancelDrawIn(target: Element | null): void {\n if (!target) return;\n const animations = running.get(target);\n animations?.forEach((animation) => animation.cancel());\n running.delete(target);\n getStrokePaths(target).forEach(clearDash);\n}\n\nexport function drawIn(\n target: Element,\n duration: number = DRAW_IN_DURATION_MS,\n delay: number = 0,\n): void {\n cancelDrawIn(target);\n const paths = getStrokePaths(target);\n const animations: Animation[] = [];\n\n for (const path of paths) {\n let length = 0;\n try {\n length = path.getTotalLength();\n } catch {\n continue;\n }\n if (length <= 0) continue;\n\n path.style.strokeDasharray = `${length}`;\n path.style.strokeDashoffset = `${length}`;\n\n const animation = path.animate(\n [{ strokeDashoffset: String(length) }, { strokeDashoffset: \"0\" }],\n { duration, delay, easing: DRAW_IN_EASING, fill: \"forwards\" },\n );\n animation.finished\n .then(() => {\n clearDash(path);\n })\n .catch(() => {\n /* cancelled */\n });\n animations.push(animation);\n }\n\n running.set(target, animations);\n}\n\n/**\n * Sketch-in the rough.js stroke path on the first paint, and again when\n * `replayKey` changes (e.g. a hover seed swap).\n *\n * `pathRef` may point at an SVG path, an `<svg>`, or any element that\n * contains one — the hook finds the outline path either way.\n */\nexport function useDrawIn(\n pathRef: RefObject<Element | null>,\n duration: number = DRAW_IN_DURATION_MS,\n enabled: boolean = true,\n replayKey?: unknown,\n delay: number = 0,\n): void {\n useLayoutEffect(() => {\n const target = pathRef.current;\n if (!target) return;\n\n if (!enabled) {\n cancelDrawIn(target);\n return;\n }\n\n const apply = () => drawIn(target, duration, delay);\n\n if (getStrokePaths(target).length > 0) {\n apply();\n return () => cancelDrawIn(target);\n }\n\n const observer = new MutationObserver(() => {\n if (getStrokePaths(target).length === 0) return;\n observer.disconnect();\n apply();\n });\n observer.observe(target, { childList: true, subtree: true });\n\n return () => {\n observer.disconnect();\n cancelDrawIn(target);\n };\n }, [pathRef, duration, enabled, replayKey, delay]);\n}\n","\"use client\";\n\nimport { useEffect, useState } from \"react\";\nimport { useDoodleUI } from \"../animations/DoodleUIProvider\";\nimport {\n DARK_SKETCH_COLORS,\n DEFAULT_DARK_CARD_BG,\n DEFAULT_DARK_INK,\n DEFAULT_DARK_PAPER,\n DEFAULT_INK,\n DEFAULT_PAPER,\n SKETCH_COLORS,\n} from \"../types\";\n\nexport interface ResolvedSketchTheme {\n isDark: boolean;\n ink: string;\n paper: string;\n cardBg: string;\n shadow: string;\n accent: string;\n accentFill: string;\n secondaryFill: string;\n info: string;\n warning: string;\n error: string;\n success: string;\n}\n\nexport type SketchTheme = ResolvedSketchTheme;\n\nfunction checkIsDark(): boolean {\n if (typeof window === \"undefined\" || typeof document === \"undefined\") {\n return false;\n }\n const root = document.documentElement;\n if (root.classList.contains(\"dark\")) return true;\n const dataTheme = root.getAttribute(\"data-theme\");\n if (dataTheme === \"dark\") return true;\n if (window.matchMedia && window.matchMedia(\"(prefers-color-scheme: dark)\").matches) {\n return true;\n }\n return false;\n}\n\nexport function useSketchTheme(sketchColorOverride?: string): ResolvedSketchTheme {\n const doodleContext = useDoodleUI();\n const contextTheme = doodleContext?.theme;\n\n const [isClientDark, setIsClientDark] = useState<boolean>(() => {\n if (contextTheme === \"dark\") return true;\n if (contextTheme === \"light\") return false;\n return checkIsDark();\n });\n\n useEffect(() => {\n if (contextTheme === \"dark\") {\n setIsClientDark(true);\n return;\n }\n if (contextTheme === \"light\") {\n setIsClientDark(false);\n return;\n }\n\n // \"system\" / \"auto\" mode: detect from DOM and media query\n const update = () => {\n setIsClientDark(checkIsDark());\n };\n update();\n\n const mediaQuery = window.matchMedia?.(\"(prefers-color-scheme: dark)\");\n mediaQuery?.addEventListener?.(\"change\", update);\n\n const observer = new MutationObserver((mutations) => {\n for (const m of mutations) {\n if (m.attributeName === \"class\" || m.attributeName === \"data-theme\") {\n update();\n break;\n }\n }\n });\n\n observer.observe(document.documentElement, {\n attributes: true,\n attributeFilter: [\"class\", \"data-theme\"],\n });\n\n return () => {\n mediaQuery?.removeEventListener?.(\"change\", update);\n observer.disconnect();\n };\n }, [contextTheme]);\n\n const isDark = contextTheme === \"dark\" ? true : contextTheme === \"light\" ? false : isClientDark;\n\n const baseInk = isDark ? DEFAULT_DARK_INK : DEFAULT_INK;\n const ink = sketchColorOverride ?? baseInk;\n\n if (isDark) {\n return {\n isDark: true,\n ink,\n paper: DEFAULT_DARK_PAPER,\n cardBg: DEFAULT_DARK_CARD_BG,\n shadow: \"rgba(0, 0, 0, 0.45)\",\n accent: DARK_SKETCH_COLORS.accent,\n accentFill: DARK_SKETCH_COLORS.accentFill,\n secondaryFill: DARK_SKETCH_COLORS.secondaryFill,\n info: DARK_SKETCH_COLORS.info,\n warning: DARK_SKETCH_COLORS.warning,\n error: DARK_SKETCH_COLORS.error,\n success: DARK_SKETCH_COLORS.success,\n };\n }\n\n return {\n isDark: false,\n ink,\n paper: DEFAULT_PAPER,\n cardBg: DEFAULT_PAPER,\n shadow: sketchColorOverride ?? DEFAULT_INK,\n accent: SKETCH_COLORS.accent,\n accentFill: SKETCH_COLORS.accentFill,\n secondaryFill: SKETCH_COLORS.secondaryFill,\n info: SKETCH_COLORS.info,\n warning: SKETCH_COLORS.warning,\n error: SKETCH_COLORS.error,\n success: SKETCH_COLORS.success,\n };\n}\n","\"use client\";\n\nimport {\n forwardRef,\n useRef,\n type CSSProperties,\n type HTMLAttributes,\n type MutableRefObject,\n type ReactNode,\n} from \"react\";\nimport {\n DRAW_IN_DURATION_MS,\n useAnimate,\n useDrawIn,\n} from \"../animations\";\nimport { useSketchTheme } from \"../hooks/useSketchTheme\";\nimport type { FillStyle, RoughShape, SketchProps } from \"../types\";\nimport { assignRef, cn, doodleUiFontFamily } from \"../utils\";\nimport { RoughSvg } from \"./RoughSvg\";\n\nexport interface SketchBoxProps\n extends SketchProps, Omit<HTMLAttributes<HTMLDivElement>, \"color\"> {\n children?: ReactNode;\n shape?: RoughShape;\n fill?: string;\n fillStyle?: FillStyle;\n shadow?: boolean;\n contentClassName?: string;\n contentStyle?: CSSProperties;\n inset?: number;\n path?: string;\n /**\n * Sketch-in the border on mount. Defaults to the DoodleUIProvider value.\n */\n animate?: boolean;\n /** Override the default 400ms draw-in duration. */\n drawInDuration?: number;\n /** Replay draw-in when this value changes. */\n drawInKey?: unknown;\n}\n\nexport const SketchBox = forwardRef<HTMLDivElement, SketchBoxProps>(\n function SketchBox(\n {\n children,\n className,\n style,\n contentClassName,\n contentStyle,\n shape = \"rectangle\",\n fill,\n fillStyle,\n shadow = false,\n roughness,\n seed,\n sketchColor,\n bowing,\n strokeWidth,\n hachureGap,\n hachureAngle,\n fillWeight,\n inset,\n path,\n animate,\n drawInDuration = DRAW_IN_DURATION_MS,\n drawInKey,\n ...rest\n },\n ref,\n ) {\n const rootRef = useRef<HTMLDivElement>(null);\n const theme = useSketchTheme(sketchColor);\n const resolvedInk = sketchColor ?? theme.ink;\n const shouldAnimate = useAnimate(animate);\n useDrawIn(rootRef, drawInDuration, shouldAnimate, drawInKey);\n\n // Resolve fill & fillStyle:\n // When fill is passed (or when shadow is true), default to \"solid\" fill.\n // If developer explicitly passed fillStyle (\"hachure\", \"dots\", etc.), respect it.\n const hasExplicitFill = fill !== undefined;\n const resolvedFill = hasExplicitFill ? fill : (shadow ? theme.cardBg : undefined);\n const resolvedFillStyle: FillStyle = fillStyle ?? (resolvedFill ? \"solid\" : \"solid\");\n const isPatternedFill = Boolean(resolvedFill && resolvedFillStyle !== \"solid\");\n\n return (\n <div\n ref={(node) => {\n (rootRef as MutableRefObject<HTMLDivElement | null>).current = node;\n assignRef(ref, node);\n }}\n className={cn(className)}\n style={{ position: \"relative\", ...style }}\n {...rest}\n >\n {shadow ? (\n <RoughSvg\n shape={shape}\n roughness={(roughness ?? 1.5) + 0.35}\n seed={seed}\n sketchColor={theme.isDark ? \"rgba(0, 0, 0, 0.45)\" : resolvedInk}\n bowing={bowing}\n fillStyle=\"hachure\"\n fill={theme.isDark ? theme.shadow : (resolvedInk ?? theme.ink)}\n strokeWidth={1}\n hachureGap={8}\n inset={inset}\n style={{\n transform: \"translate(5px, 6px)\",\n opacity: theme.isDark ? 0.35 : 0.16,\n }}\n />\n ) : null}\n\n {/* If a patterned fill (e.g. hachure) is requested, draw an underlying solid\n card surface first so text remains 100% legible and high-contrast */}\n {isPatternedFill ? (\n <RoughSvg\n shape={shape}\n roughness={roughness}\n seed={seed}\n sketchColor=\"transparent\"\n bowing={bowing}\n fillStyle=\"solid\"\n fill={theme.cardBg}\n strokeWidth={0}\n inset={inset}\n />\n ) : null}\n\n <RoughSvg\n shape={shape}\n roughness={roughness}\n seed={seed}\n sketchColor={resolvedInk}\n bowing={bowing}\n fillStyle={resolvedFill ? resolvedFillStyle : undefined}\n fill={resolvedFill}\n strokeWidth={strokeWidth}\n hachureGap={hachureGap ?? (isPatternedFill ? 10 : undefined)}\n hachureAngle={hachureAngle}\n fillWeight={fillWeight ?? (isPatternedFill ? 0.9 : undefined)}\n inset={inset}\n path={path}\n />\n <div\n className={contentClassName}\n style={{\n position: \"relative\",\n zIndex: 1,\n fontFamily: doodleUiFontFamily,\n color: resolvedInk,\n ...contentStyle,\n }}\n >\n {children}\n </div>\n </div>\n );\n },\n);\n","\"use client\";\n\nimport {\n forwardRef,\n useRef,\n useState,\n type ButtonHTMLAttributes,\n type CSSProperties,\n type ForwardedRef,\n type MutableRefObject,\n} from \"react\";\nimport {\n DRAW_IN_DURATION_MS,\n useAnimate,\n useDrawIn,\n} from \"../animations\";\nimport { useResolvedSeed } from \"../hooks/useResolvedSeed\";\nimport { useSketchTheme } from \"../hooks/useSketchTheme\";\nimport { RoughSvg } from \"../primitives/RoughSvg\";\nimport type { SketchProps } from \"../types\";\nimport { cn, deriveSeed, doodleUiFontFamily, doodleUiFontWeight } from \"../utils\";\n\nexport type ButtonVariant = \"primary\" | \"secondary\" | \"outline\" | \"ghost\";\nexport type ButtonSize = \"sm\" | \"md\" | \"lg\";\n\nexport interface ButtonProps\n extends Omit<ButtonHTMLAttributes<HTMLButtonElement>, \"color\">,\n SketchProps {\n variant?: ButtonVariant;\n size?: ButtonSize;\n /**\n * Play sketch animations (draw-in on mount, seed morph on hover).\n * Defaults to the DoodleUIProvider value (true). Explicit `false`\n * renders a static sketch. `prefers-reduced-motion: reduce` disables\n * animation unless the provider set `forceAnimate`.\n */\n animate?: boolean;\n}\n\nconst SIZE_STYLES: Record<ButtonSize, CSSProperties> = {\n sm: { fontSize: 13, padding: \"4px 12px\", minHeight: 30 },\n md: { fontSize: 15, padding: \"8px 16px\", minHeight: 38 },\n lg: { fontSize: 17, padding: \"11px 22px\", minHeight: 46 },\n};\n\nfunction assignRef<T>(ref: ForwardedRef<T>, value: T | null) {\n if (typeof ref === \"function\") ref(value);\n else if (ref) (ref as MutableRefObject<T | null>).current = value;\n}\n\nexport const Button = forwardRef<HTMLButtonElement, ButtonProps>(\n function Button(\n {\n children,\n className,\n style,\n variant = \"primary\",\n size = \"md\",\n roughness,\n seed,\n sketchColor,\n bowing,\n fillStyle,\n strokeWidth,\n hachureGap,\n hachureAngle,\n fillWeight,\n disabled,\n animate,\n onMouseEnter,\n onMouseLeave,\n ...rest\n },\n ref,\n ) {\n const rootRef = useRef<HTMLButtonElement>(null);\n const [hovered, setHovered] = useState(false);\n const theme = useSketchTheme(sketchColor);\n const shouldAnimate = useAnimate(animate);\n const resolvedSeed = useResolvedSeed(seed);\n const hoverSeed = deriveSeed(resolvedSeed, \"hover\");\n const sketchSeed =\n shouldAnimate && hovered && !disabled ? hoverSeed : resolvedSeed;\n const ink = sketchColor ?? theme.ink;\n\n const fill =\n variant === \"primary\"\n ? (theme.isDark\n ? (sketchColor ? `${sketchColor}28` : theme.accentFill)\n : theme.accentFill)\n : variant === \"secondary\"\n ? theme.secondaryFill\n : hovered && variant === \"ghost\"\n ? (theme.isDark ? \"rgba(255,255,255,0.06)\" : \"rgba(31,29,26,0.05)\")\n : undefined;\n\n const stroke =\n variant === \"ghost\" && !hovered\n ? \"transparent\"\n : variant === \"primary\"\n ? (sketchColor ?? theme.accent)\n : ink;\n\n const textColor =\n variant === \"primary\"\n ? (sketchColor ?? (theme.isDark ? \"#ffffff\" : ink))\n : ink;\n\n useDrawIn(rootRef, DRAW_IN_DURATION_MS, shouldAnimate, sketchSeed);\n\n return (\n <button\n ref={(node) => {\n (rootRef as MutableRefObject<HTMLButtonElement | null>).current =\n node;\n assignRef(ref, node);\n }}\n type=\"button\"\n className={cn(className)}\n disabled={disabled}\n onMouseEnter={(event) => {\n setHovered(true);\n onMouseEnter?.(event);\n }}\n onMouseLeave={(event) => {\n setHovered(false);\n onMouseLeave?.(event);\n }}\n style={{\n position: \"relative\",\n display: \"inline-flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n gap: 8,\n border: \"none\",\n background: \"transparent\",\n cursor: disabled ? \"not-allowed\" : \"pointer\",\n color: textColor,\n fontFamily: doodleUiFontFamily,\n fontWeight: doodleUiFontWeight(600),\n lineHeight: 1.2,\n opacity: disabled ? 0.45 : 1,\n ...SIZE_STYLES[size],\n ...style,\n }}\n {...rest}\n >\n <RoughSvg\n shape=\"rectangle\"\n roughness={roughness}\n seed={sketchSeed}\n sketchColor={stroke}\n bowing={bowing}\n fillStyle={fillStyle ?? (fill ? \"hachure\" : undefined)}\n fill={fill}\n hachureGap={hachureGap ?? 7}\n hachureAngle={hachureAngle}\n fillWeight={fillWeight ?? 1}\n strokeWidth={\n !shouldAnimate && hovered\n ? (strokeWidth ?? 1.75) + 0.4\n : strokeWidth\n }\n />\n <span style={{ position: \"relative\", zIndex: 1 }}>{children}</span>\n </button>\n );\n },\n);\n","\"use client\";\n\nimport {\n forwardRef,\n useRef,\n useState,\n type InputHTMLAttributes,\n type ReactNode,\n} from \"react\";\nimport {\n DRAW_IN_DURATION_MS,\n useAnimate,\n useDrawIn,\n} from \"../animations\";\nimport { useResolvedSeed } from \"../hooks/useResolvedSeed\";\nimport { useSketchTheme } from \"../hooks/useSketchTheme\";\nimport { RoughSvg } from \"../primitives/RoughSvg\";\nimport type { SketchProps } from \"../types\";\nimport { cn, deriveSeed, doodleUiFontFamily, doodleUiFontWeight } from \"../utils\";\n\nexport interface InputProps\n extends Omit<InputHTMLAttributes<HTMLInputElement>, \"color\" | \"size\">,\n SketchProps {\n label?: ReactNode;\n /**\n * Draw-in the border on mount and seed-morph on focus.\n * Defaults to the DoodleUIProvider value (true).\n */\n animate?: boolean;\n}\n\nexport const Input = forwardRef<HTMLInputElement, InputProps>(function Input(\n {\n className,\n style,\n label,\n roughness,\n seed,\n sketchColor,\n bowing,\n fillStyle,\n strokeWidth,\n hachureGap,\n hachureAngle,\n fillWeight,\n id,\n onFocus,\n onBlur,\n animate,\n ...rest\n },\n ref,\n) {\n const [focused, setFocused] = useState(false);\n const fieldRef = useRef<HTMLSpanElement>(null);\n const theme = useSketchTheme(sketchColor);\n const shouldAnimate = useAnimate(animate);\n const resolvedSeed = useResolvedSeed(seed);\n const focusSeed = deriveSeed(resolvedSeed, \"focus\");\n const sketchSeed =\n shouldAnimate && focused ? focusSeed : resolvedSeed;\n const ink = sketchColor ?? theme.ink;\n const inputId = id;\n\n useDrawIn(fieldRef, DRAW_IN_DURATION_MS, shouldAnimate, sketchSeed);\n\n return (\n <label\n htmlFor={inputId}\n style={{\n display: \"flex\",\n flexDirection: \"column\",\n gap: 6,\n width: \"100%\",\n }}\n >\n {label ? (\n <span\n style={{\n fontSize: 13,\n fontWeight: doodleUiFontWeight(600),\n fontFamily: doodleUiFontFamily,\n color: ink,\n }}\n >\n {label}\n </span>\n ) : null}\n <span ref={fieldRef} style={{ position: \"relative\", display: \"block\" }}>\n <RoughSvg\n shape=\"rectangle\"\n roughness={roughness}\n seed={sketchSeed}\n sketchColor={focused ? (sketchColor ?? theme.accent) : ink}\n bowing={bowing}\n fillStyle={fillStyle}\n hachureGap={hachureGap}\n hachureAngle={hachureAngle}\n fillWeight={fillWeight}\n strokeWidth={\n focused && !shouldAnimate\n ? (strokeWidth ?? 1.75) + 0.35\n : focused\n ? (strokeWidth ?? 1.75) + 0.2\n : strokeWidth\n }\n />\n <input\n ref={ref}\n id={inputId}\n className={cn(className)}\n onFocus={(event) => {\n setFocused(true);\n onFocus?.(event);\n }}\n onBlur={(event) => {\n setFocused(false);\n onBlur?.(event);\n }}\n style={{\n position: \"relative\",\n zIndex: 1,\n width: \"100%\",\n boxSizing: \"border-box\",\n border: \"none\",\n outline: \"none\",\n background: \"transparent\",\n color: ink,\n fontFamily: doodleUiFontFamily,\n fontSize: 15,\n padding: \"8px 12px\",\n ...style,\n }}\n {...rest}\n />\n </span>\n </label>\n );\n});\n","\"use client\";\n\nimport {\n forwardRef,\n useRef,\n useState,\n type ReactNode,\n type TextareaHTMLAttributes,\n} from \"react\";\nimport {\n DRAW_IN_DURATION_MS,\n useAnimate,\n useDrawIn,\n} from \"../animations\";\nimport { useResolvedSeed } from \"../hooks/useResolvedSeed\";\nimport { useSketchTheme } from \"../hooks/useSketchTheme\";\nimport { RoughSvg } from \"../primitives/RoughSvg\";\nimport type { SketchProps } from \"../types\";\nimport { cn, deriveSeed, doodleUiFontFamily, doodleUiFontWeight } from \"../utils\";\n\nexport interface TextareaProps\n extends Omit<TextareaHTMLAttributes<HTMLTextAreaElement>, \"color\">,\n SketchProps {\n label?: ReactNode;\n /**\n * Draw-in the border on mount and seed-morph on focus.\n * Defaults to the DoodleUIProvider value (true).\n */\n animate?: boolean;\n}\n\nexport const Textarea = forwardRef<HTMLTextAreaElement, TextareaProps>(\n function Textarea(\n {\n className,\n style,\n label,\n roughness,\n seed,\n sketchColor,\n bowing,\n fillStyle,\n strokeWidth,\n hachureGap,\n hachureAngle,\n fillWeight,\n id,\n rows = 4,\n onFocus,\n onBlur,\n animate,\n ...rest\n },\n ref,\n ) {\n const [focused, setFocused] = useState(false);\n const fieldRef = useRef<HTMLSpanElement>(null);\n const theme = useSketchTheme(sketchColor);\n const shouldAnimate = useAnimate(animate);\n const resolvedSeed = useResolvedSeed(seed);\n const focusSeed = deriveSeed(resolvedSeed, \"focus\");\n const sketchSeed =\n shouldAnimate && focused ? focusSeed : resolvedSeed;\n const ink = sketchColor ?? theme.ink;\n\n useDrawIn(fieldRef, DRAW_IN_DURATION_MS, shouldAnimate, sketchSeed);\n\n return (\n <label\n htmlFor={id}\n style={{\n display: \"flex\",\n flexDirection: \"column\",\n gap: 6,\n width: \"100%\",\n }}\n >\n {label ? (\n <span\n style={{\n fontSize: 13,\n fontWeight: doodleUiFontWeight(600),\n fontFamily: doodleUiFontFamily,\n color: ink,\n }}\n >\n {label}\n </span>\n ) : null}\n <span ref={fieldRef} style={{ position: \"relative\", display: \"block\" }}>\n <RoughSvg\n shape=\"rectangle\"\n roughness={roughness}\n seed={sketchSeed}\n sketchColor={focused ? (sketchColor ?? theme.accent) : ink}\n bowing={bowing}\n fillStyle={fillStyle}\n hachureGap={hachureGap}\n hachureAngle={hachureAngle}\n fillWeight={fillWeight}\n strokeWidth={\n focused && !shouldAnimate\n ? (strokeWidth ?? 1.75) + 0.35\n : focused\n ? (strokeWidth ?? 1.75) + 0.2\n : strokeWidth\n }\n />\n <textarea\n ref={ref}\n id={id}\n rows={rows}\n className={cn(className)}\n onFocus={(event) => {\n setFocused(true);\n onFocus?.(event);\n }}\n onBlur={(event) => {\n setFocused(false);\n onBlur?.(event);\n }}\n style={{\n position: \"relative\",\n zIndex: 1,\n width: \"100%\",\n boxSizing: \"border-box\",\n border: \"none\",\n outline: \"none\",\n background: \"transparent\",\n color: ink,\n fontFamily: doodleUiFontFamily,\n fontSize: 15,\n padding: \"8px 12px\",\n resize: \"vertical\",\n ...style,\n }}\n {...rest}\n />\n </span>\n </label>\n );\n },\n);\n","\"use client\";\n\nimport { forwardRef, useId, useRef, type ReactNode } from \"react\";\nimport * as CheckboxPrimitive from \"@radix-ui/react-checkbox\";\nimport {\n DRAW_IN_DURATION_MS,\n DRAW_IN_MARK_MS,\n useAnimate,\n useDrawIn,\n} from \"../animations\";\nimport { useSketchTheme } from \"../hooks/useSketchTheme\";\nimport { RoughSvg } from \"../primitives/RoughSvg\";\nimport type { SketchProps } from \"../types\";\nimport { cn, doodleUiFontFamily } from \"../utils\";\n\nexport interface CheckboxProps\n extends Omit<CheckboxPrimitive.CheckboxProps, \"asChild\">,\n SketchProps {\n label?: ReactNode;\n fill?: string;\n /**\n * Draw-in the box on mount and the checkmark when checked.\n * Defaults to the DoodleUIProvider value (true).\n */\n animate?: boolean;\n}\n\nconst BOX = 20;\nconst CHECK_PATH = \"M 4.5 10.5 L 8.5 14.5 L 15.5 5.5\";\n\nfunction CheckMark({\n roughness,\n seed,\n sketchColor,\n bowing,\n strokeWidth,\n shouldAnimate,\n}: {\n roughness?: number;\n seed?: number;\n sketchColor?: string;\n bowing?: number;\n strokeWidth?: number;\n shouldAnimate: boolean;\n}) {\n const ref = useRef<HTMLSpanElement>(null);\n useDrawIn(ref, DRAW_IN_MARK_MS, shouldAnimate);\n\n return (\n <span\n ref={ref}\n style={{ position: \"absolute\", inset: 0, pointerEvents: \"none\" }}\n >\n <RoughSvg\n shape=\"path\"\n path={CHECK_PATH}\n roughness={(roughness ?? 1.5) * 0.7}\n seed={seed}\n sketchColor={sketchColor}\n bowing={bowing}\n strokeWidth={(strokeWidth ?? 1.6) + 0.4}\n inset={0}\n />\n </span>\n );\n}\n\nexport const Checkbox = forwardRef<HTMLButtonElement, CheckboxProps>(\n function Checkbox(\n {\n className,\n style,\n label,\n fill,\n roughness,\n seed,\n sketchColor,\n bowing,\n fillStyle,\n strokeWidth,\n hachureGap,\n hachureAngle,\n fillWeight,\n checked,\n defaultChecked,\n onCheckedChange,\n id,\n animate,\n ...rest\n },\n ref,\n ) {\n const theme = useSketchTheme(sketchColor);\n const ink = sketchColor ?? theme.ink;\n const accent = sketchColor ?? theme.accent;\n const generatedId = useId();\n const inputId = id ?? generatedId;\n const boxRef = useRef<HTMLSpanElement>(null);\n const shouldAnimate = useAnimate(animate);\n useDrawIn(boxRef, DRAW_IN_DURATION_MS, shouldAnimate);\n\n return (\n <span\n className={cn(className)}\n style={{\n display: \"inline-flex\",\n alignItems: \"center\",\n gap: 8,\n cursor: \"pointer\",\n userSelect: \"none\",\n color: ink,\n ...style,\n }}\n >\n <CheckboxPrimitive.Root\n ref={ref}\n id={inputId}\n checked={checked}\n defaultChecked={defaultChecked}\n onCheckedChange={onCheckedChange}\n style={{\n position: \"relative\",\n width: BOX,\n height: BOX,\n padding: 0,\n border: \"none\",\n background: \"transparent\",\n flexShrink: 0,\n cursor: \"pointer\",\n }}\n {...rest}\n >\n <span\n ref={boxRef}\n style={{ position: \"absolute\", inset: 0, pointerEvents: \"none\" }}\n >\n <RoughSvg\n shape=\"rectangle\"\n roughness={roughness}\n seed={seed}\n sketchColor={ink}\n bowing={bowing}\n fillStyle={fillStyle ?? (fill ? \"solid\" : undefined)}\n fill={fill}\n strokeWidth={strokeWidth ?? 1.6}\n hachureGap={hachureGap}\n hachureAngle={hachureAngle}\n fillWeight={fillWeight}\n inset={1.5}\n />\n </span>\n <CheckboxPrimitive.Indicator\n style={{\n position: \"absolute\",\n inset: 0,\n display: \"block\",\n }}\n >\n <CheckMark\n roughness={roughness}\n seed={seed}\n sketchColor={accent}\n bowing={bowing}\n strokeWidth={strokeWidth}\n shouldAnimate={shouldAnimate}\n />\n </CheckboxPrimitive.Indicator>\n </CheckboxPrimitive.Root>\n {label ? (\n <label\n htmlFor={inputId}\n style={{ fontSize: 15, cursor: \"pointer\", fontFamily: doodleUiFontFamily, color: ink }}\n >\n {label}\n </label>\n ) : null}\n </span>\n );\n },\n);\n","\"use client\";\n\nimport {\n forwardRef,\n useId,\n useLayoutEffect,\n useRef,\n type ComponentPropsWithoutRef,\n type ReactNode,\n} from \"react\";\nimport * as RadioGroupPrimitive from \"@radix-ui/react-radio-group\";\nimport {\n DRAW_IN_DURATION_MS,\n DRAW_IN_MARK_MS,\n useAnimate,\n useDrawIn,\n} from \"../animations\";\nimport { useSketchTheme } from \"../hooks/useSketchTheme\";\nimport { RoughSvg } from \"../primitives/RoughSvg\";\nimport type { SketchProps } from \"../types\";\nimport { cn, doodleUiFontFamily } from \"../utils\";\n\nexport interface RadioGroupProps\n extends ComponentPropsWithoutRef<typeof RadioGroupPrimitive.Root> {}\n\nexport const RadioGroup = forwardRef<HTMLDivElement, RadioGroupProps>(\n function RadioGroup({ className, style, children, ...rest }, ref) {\n return (\n <RadioGroupPrimitive.Root\n ref={ref}\n className={cn(className)}\n style={{\n display: \"flex\",\n flexDirection: \"column\",\n gap: 10,\n ...style,\n }}\n {...rest}\n >\n {children}\n </RadioGroupPrimitive.Root>\n );\n },\n);\n\nexport interface RadioProps\n extends Omit<\n ComponentPropsWithoutRef<typeof RadioGroupPrimitive.Item>,\n \"asChild\"\n >,\n SketchProps {\n label?: ReactNode;\n fill?: string;\n /**\n * Draw-in the ring on mount and scale/draw the dot on select.\n * Defaults to the DoodleUIProvider value (true).\n */\n animate?: boolean;\n}\n\nconst SIZE = 20;\n\nfunction RadioDot({\n roughness,\n seed,\n sketchColor,\n bowing,\n shouldAnimate,\n}: {\n roughness?: number;\n seed?: number;\n sketchColor?: string;\n bowing?: number;\n shouldAnimate: boolean;\n}) {\n const ref = useRef<HTMLSpanElement>(null);\n useDrawIn(ref, DRAW_IN_MARK_MS, shouldAnimate);\n\n useLayoutEffect(() => {\n const node = ref.current;\n if (!node || !shouldAnimate) return;\n const animation = node.animate(\n [\n { transform: \"scale(0.35)\", opacity: 0 },\n { transform: \"scale(1)\", opacity: 1 },\n ],\n { duration: 180, easing: \"ease-out\", fill: \"forwards\" },\n );\n return () => animation.cancel();\n }, [shouldAnimate]);\n\n return (\n <span\n ref={ref}\n style={{\n position: \"absolute\",\n inset: 0,\n pointerEvents: \"none\",\n display: \"block\",\n }}\n >\n <RoughSvg\n shape=\"ellipse\"\n roughness={(roughness ?? 1.5) + 0.2}\n seed={seed}\n sketchColor={sketchColor}\n fill={sketchColor}\n fillStyle=\"solid\"\n bowing={bowing}\n strokeWidth={1}\n inset={6}\n />\n </span>\n );\n}\n\nexport const Radio = forwardRef<HTMLButtonElement, RadioProps>(function Radio(\n {\n className,\n style,\n label,\n fill,\n roughness,\n seed,\n sketchColor,\n bowing,\n fillStyle,\n strokeWidth,\n hachureGap,\n hachureAngle,\n fillWeight,\n id,\n animate,\n ...rest\n },\n ref,\n) {\n const theme = useSketchTheme(sketchColor);\n const ink = sketchColor ?? theme.ink;\n const accent = sketchColor ?? theme.accent;\n const generatedId = useId();\n const inputId = id ?? generatedId;\n const ringRef = useRef<HTMLSpanElement>(null);\n const shouldAnimate = useAnimate(animate);\n useDrawIn(ringRef, DRAW_IN_DURATION_MS, shouldAnimate);\n\n return (\n <span\n className={cn(className)}\n style={{\n display: \"inline-flex\",\n alignItems: \"center\",\n gap: 8,\n cursor: \"pointer\",\n userSelect: \"none\",\n color: ink,\n ...style,\n }}\n >\n <RadioGroupPrimitive.Item\n ref={ref}\n id={inputId}\n style={{\n position: \"relative\",\n width: SIZE,\n height: SIZE,\n padding: 0,\n border: \"none\",\n background: \"transparent\",\n flexShrink: 0,\n cursor: \"pointer\",\n borderRadius: \"50%\",\n }}\n {...rest}\n >\n <span\n ref={ringRef}\n style={{ position: \"absolute\", inset: 0, pointerEvents: \"none\" }}\n >\n <RoughSvg\n shape=\"ellipse\"\n roughness={roughness}\n seed={seed}\n sketchColor={ink}\n bowing={bowing}\n fillStyle={fillStyle ?? (fill ? \"solid\" : undefined)}\n fill={fill}\n strokeWidth={strokeWidth ?? 1.6}\n hachureGap={hachureGap}\n hachureAngle={hachureAngle}\n fillWeight={fillWeight}\n inset={1.5}\n />\n </span>\n <RadioGroupPrimitive.Indicator\n style={{\n position: \"absolute\",\n inset: 0,\n display: \"block\",\n }}\n >\n <RadioDot\n roughness={roughness}\n seed={seed}\n sketchColor={accent}\n bowing={bowing}\n shouldAnimate={shouldAnimate}\n />\n </RadioGroupPrimitive.Indicator>\n </RadioGroupPrimitive.Item>\n {label ? (\n <label\n htmlFor={inputId}\n style={{ fontSize: 15, cursor: \"pointer\", fontFamily: doodleUiFontFamily, color: ink }}\n >\n {label}\n </label>\n ) : null}\n </span>\n );\n});\n","\"use client\";\n\nimport { forwardRef, type HTMLAttributes, type ReactNode } from \"react\";\nimport { SketchBox, type SketchBoxProps } from \"../primitives/SketchBox\";\nimport { useSketchTheme } from \"../hooks/useSketchTheme\";\nimport type { SketchProps } from \"../types\";\nimport { cn, doodleUiFontWeight } from \"../utils\";\n\nexport interface CardProps\n extends Omit<HTMLAttributes<HTMLDivElement>, \"color\" | \"title\">,\n SketchProps {\n shadow?: boolean;\n fill?: string;\n title?: ReactNode;\n footer?: ReactNode;\n /**\n * Draw-in the border on mount. Defaults to the DoodleUIProvider value (true).\n */\n animate?: boolean;\n}\n\nexport const Card = forwardRef<HTMLDivElement, CardProps>(function Card(\n {\n children,\n className,\n style,\n shadow = true,\n fill,\n title,\n footer,\n roughness,\n seed,\n sketchColor,\n bowing,\n fillStyle,\n strokeWidth,\n hachureGap,\n hachureAngle,\n fillWeight,\n animate,\n ...rest\n },\n ref,\n) {\n const theme = useSketchTheme(sketchColor);\n const ink = sketchColor ?? theme.ink;\n\n const boxProps: SketchBoxProps = {\n shadow,\n fill,\n roughness,\n seed,\n sketchColor: ink,\n bowing,\n fillStyle,\n strokeWidth,\n hachureGap,\n hachureAngle,\n fillWeight,\n animate,\n };\n\n return (\n <SketchBox\n ref={ref}\n className={cn(className)}\n style={{\n color: ink,\n ...style,\n }}\n contentStyle={{ padding: \"16px 18px\" }}\n {...boxProps}\n {...rest}\n >\n {title ? (\n <div\n style={{\n fontWeight: doodleUiFontWeight(700),\n fontSize: 16,\n marginBottom: 10,\n color: ink,\n }}\n >\n {title}\n </div>\n ) : null}\n {children}\n {footer ? (\n <div style={{ marginTop: 14, fontSize: 13, opacity: 0.8, color: ink }}>\n {footer}\n </div>\n ) : null}\n </SketchBox>\n );\n});\n","\"use client\";\n\nimport { forwardRef, type HTMLAttributes } from \"react\";\nimport { useSketchTheme } from \"../hooks/useSketchTheme\";\nimport { SketchBox } from \"../primitives/SketchBox\";\nimport type { SketchProps } from \"../types\";\nimport { cn, doodleUiFontWeight } from \"../utils\";\n\nexport type BadgeVariant = \"default\" | \"accent\" | \"outline\";\n\nexport interface BadgeProps\n extends Omit<HTMLAttributes<HTMLSpanElement>, \"color\">,\n SketchProps {\n variant?: BadgeVariant;\n /**\n * Draw-in the border on mount. Defaults to the DoodleUIProvider value (true).\n */\n animate?: boolean;\n}\n\nexport const Badge = forwardRef<HTMLSpanElement, BadgeProps>(function Badge(\n {\n children,\n className,\n style,\n variant = \"default\",\n roughness,\n seed,\n sketchColor,\n bowing,\n fillStyle,\n strokeWidth,\n hachureGap,\n hachureAngle,\n fillWeight,\n animate,\n ...rest\n },\n ref,\n) {\n const theme = useSketchTheme(sketchColor);\n const ink =\n variant === \"accent\"\n ? sketchColor ?? theme.accent\n : sketchColor ?? theme.ink;\n\n const fill =\n variant === \"accent\"\n ? (theme.isDark ? (sketchColor ? `${sketchColor}25` : theme.accentFill) : theme.accentFill)\n : variant === \"outline\"\n ? undefined\n : theme.secondaryFill;\n\n return (\n <SketchBox\n className={cn(className)}\n style={{\n display: \"inline-flex\",\n verticalAlign: \"middle\",\n ...style,\n }}\n contentStyle={{\n padding: \"2px 10px\",\n fontSize: 12,\n fontWeight: doodleUiFontWeight(650),\n lineHeight: 1.4,\n letterSpacing: \"0.01em\",\n color: ink,\n }}\n fill={fill}\n fillStyle={fillStyle ?? (fill ? \"hachure\" : undefined)}\n hachureGap={hachureGap ?? 6}\n hachureAngle={hachureAngle}\n fillWeight={fillWeight ?? 0.9}\n roughness={roughness}\n seed={seed}\n sketchColor={ink}\n bowing={bowing}\n strokeWidth={strokeWidth ?? 1.4}\n animate={animate}\n {...rest}\n >\n <span ref={ref}>{children}</span>\n </SketchBox>\n );\n});\n","\"use client\";\n\nimport { forwardRef, type HTMLAttributes, type ReactNode } from \"react\";\nimport { DRAW_IN_ALERT_MS } from \"../animations\";\nimport { useSketchTheme } from \"../hooks/useSketchTheme\";\nimport { SketchBox } from \"../primitives/SketchBox\";\nimport type { SketchProps } from \"../types\";\nimport { cn, doodleUiFontWeight } from \"../utils\";\n\nexport type AlertVariant = \"info\" | \"warning\" | \"error\" | \"success\";\n\nexport interface AlertProps\n extends Omit<HTMLAttributes<HTMLDivElement>, \"color\" | \"title\">,\n SketchProps {\n variant?: AlertVariant;\n title?: ReactNode;\n fill?: string;\n /**\n * Draw-in the border on mount (~200ms). Defaults to the DoodleUIProvider value (true).\n */\n animate?: boolean;\n}\n\nconst LIGHT_VARIANT_FILL: Record<AlertVariant, string> = {\n info: \"#d2deec\",\n warning: \"#f3e2c0\",\n error: \"#f3d0cc\",\n success: \"#d3e8dc\",\n};\n\nconst DARK_VARIANT_FILL: Record<AlertVariant, string> = {\n info: \"rgba(96, 165, 250, 0.16)\",\n warning: \"rgba(251, 191, 36, 0.16)\",\n error: \"rgba(248, 113, 113, 0.16)\",\n success: \"rgba(52, 211, 153, 0.16)\",\n};\n\nexport const Alert = forwardRef<HTMLDivElement, AlertProps>(function Alert(\n {\n children,\n className,\n style,\n variant = \"info\",\n title,\n fill,\n roughness,\n seed,\n sketchColor,\n bowing,\n fillStyle,\n strokeWidth,\n hachureGap,\n hachureAngle,\n fillWeight,\n role = \"status\",\n animate,\n ...rest\n },\n ref,\n) {\n const theme = useSketchTheme(sketchColor);\n const color = sketchColor ?? theme[variant];\n const defaultFill = theme.isDark ? DARK_VARIANT_FILL[variant] : LIGHT_VARIANT_FILL[variant];\n const resolvedFill = fill ?? defaultFill;\n\n return (\n <SketchBox\n ref={ref}\n role={role}\n className={cn(className)}\n style={{ color, ...style }}\n contentStyle={{ padding: \"12px 16px\", color: theme.ink }}\n roughness={roughness}\n seed={seed}\n sketchColor={color}\n bowing={bowing}\n fillStyle={fillStyle ?? \"hachure\"}\n fill={resolvedFill}\n strokeWidth={strokeWidth}\n hachureGap={hachureGap ?? 9}\n hachureAngle={hachureAngle}\n fillWeight={fillWeight ?? 0.85}\n animate={animate}\n drawInDuration={DRAW_IN_ALERT_MS}\n {...rest}\n >\n {title ? (\n <div\n style={{\n fontWeight: doodleUiFontWeight(700),\n marginBottom: 4,\n fontSize: 15,\n color,\n }}\n >\n {title}\n </div>\n ) : null}\n <div style={{ fontSize: 14, lineHeight: 1.5, color: theme.ink }}>\n {children}\n </div>\n </SketchBox>\n );\n});\n","\"use client\";\n\nimport { useState, type ReactNode } from \"react\";\nimport * as Dialog from \"@radix-ui/react-dialog\";\nimport { AnimatePresence, motion } from \"framer-motion\";\nimport { useAnimate } from \"../animations\";\nimport { useSketchTheme } from \"../hooks/useSketchTheme\";\nimport { SketchBox } from \"../primitives/SketchBox\";\nimport type { SketchProps } from \"../types\";\nimport { cn, doodleUiFontFamily, doodleUiFontWeight } from \"../utils\";\nimport { Button } from \"./Button\";\n\nexport interface ModalProps extends SketchProps {\n open?: boolean;\n defaultOpen?: boolean;\n onOpenChange?: (open: boolean) => void;\n trigger?: ReactNode;\n title?: ReactNode;\n description?: ReactNode;\n children?: ReactNode;\n className?: string;\n fill?: string;\n /**\n * Backdrop fade, panel enter/exit, and border draw-in on open.\n * Defaults to the DoodleUIProvider value (true).\n */\n animate?: boolean;\n}\n\nexport function Modal({\n open,\n defaultOpen,\n onOpenChange,\n trigger,\n title,\n description,\n children,\n className,\n fill,\n roughness,\n seed,\n sketchColor,\n bowing,\n fillStyle,\n strokeWidth,\n hachureGap,\n hachureAngle,\n fillWeight,\n animate,\n}: ModalProps) {\n const theme = useSketchTheme(sketchColor);\n const ink = sketchColor ?? theme.ink;\n const [uncontrolled, setUncontrolled] = useState(defaultOpen === true);\n const isOpen = open ?? uncontrolled;\n const shouldAnimate = useAnimate(animate);\n\n function handleOpenChange(next: boolean) {\n setUncontrolled(next);\n onOpenChange?.(next);\n }\n\n return (\n <Dialog.Root open={isOpen} onOpenChange={handleOpenChange}>\n {trigger ? <Dialog.Trigger asChild>{trigger}</Dialog.Trigger> : null}\n <AnimatePresence>\n {isOpen ? (\n <Dialog.Portal forceMount>\n <Dialog.Overlay asChild forceMount>\n <motion.div\n initial={shouldAnimate ? { opacity: 0 } : false}\n animate={{ opacity: 1 }}\n exit={shouldAnimate ? { opacity: 0 } : undefined}\n transition={\n shouldAnimate\n ? { duration: 0.2, ease: \"easeOut\" }\n : { duration: 0 }\n }\n style={{\n position: \"fixed\",\n inset: 0,\n background: theme.isDark ? \"rgba(0, 0, 0, 0.65)\" : \"rgba(31, 29, 26, 0.38)\",\n zIndex: 70,\n }}\n />\n </Dialog.Overlay>\n <div\n style={{\n position: \"fixed\",\n inset: 0,\n zIndex: 80,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n pointerEvents: \"none\",\n padding: 16,\n }}\n >\n <Dialog.Content asChild forceMount>\n <motion.div\n className={cn(className)}\n initial={\n shouldAnimate\n ? { opacity: 0, scale: 0.96, y: 10 }\n : false\n }\n animate={{ opacity: 1, scale: 1, y: 0 }}\n exit={\n shouldAnimate\n ? { opacity: 0, scale: 0.96, y: 8 }\n : undefined\n }\n transition={\n shouldAnimate\n ? { duration: 0.22, ease: \"easeOut\" }\n : { duration: 0 }\n }\n style={{\n width: \"min(480px, calc(100vw - 32px))\",\n outline: \"none\",\n pointerEvents: \"auto\",\n color: ink,\n }}\n >\n <SketchBox\n roughness={roughness}\n seed={seed}\n sketchColor={ink}\n bowing={bowing}\n fillStyle={fillStyle ?? \"solid\"}\n fill={fill ?? theme.paper}\n strokeWidth={strokeWidth ?? 2}\n hachureGap={hachureGap}\n hachureAngle={hachureAngle}\n fillWeight={fillWeight}\n shadow\n animate={animate}\n contentStyle={{ padding: \"20px 22px 18px\", color: ink }}\n >\n <div\n style={{\n display: \"flex\",\n alignItems: \"flex-start\",\n justifyContent: \"space-between\",\n gap: 12,\n marginBottom: title ? 10 : 0,\n }}\n >\n {title ? (\n <Dialog.Title\n style={{\n margin: 0,\n fontSize: 18,\n fontWeight: doodleUiFontWeight(700),\n fontFamily: doodleUiFontFamily,\n color: ink,\n }}\n >\n {title}\n </Dialog.Title>\n ) : (\n <Dialog.Title\n style={{\n position: \"absolute\",\n width: 1,\n height: 1,\n overflow: \"hidden\",\n clip: \"rect(0 0 0 0)\",\n }}\n >\n Dialog\n </Dialog.Title>\n )}\n <Dialog.Close asChild>\n <Button\n variant=\"ghost\"\n size=\"sm\"\n sketchColor={ink}\n aria-label=\"Close dialog\"\n style={{ padding: \"2px 8px\", minHeight: 26 }}\n >\n ✕\n </Button>\n </Dialog.Close>\n </div>\n {description ? (\n <Dialog.Description\n style={{\n margin: 0,\n marginBottom: 14,\n fontSize: 14,\n lineHeight: 1.4,\n opacity: 0.78,\n fontFamily: doodleUiFontFamily,\n color: ink,\n }}\n >\n {description}\n </Dialog.Description>\n ) : null}\n <div>{children}</div>\n </SketchBox>\n </motion.div>\n </Dialog.Content>\n </div>\n </Dialog.Portal>\n ) : null}\n </AnimatePresence>\n </Dialog.Root>\n );\n}\n\nexport const ModalRoot = Dialog.Root;\nexport const ModalTrigger = Dialog.Trigger;\nexport const ModalClose = Dialog.Close;\nexport const ModalTitle = Dialog.Title;\nexport const ModalDescription = Dialog.Description;\n","\"use client\";\n\nimport {\n forwardRef,\n useRef,\n type HTMLAttributes,\n type MutableRefObject,\n} from \"react\";\nimport {\n DRAW_IN_DURATION_MS,\n useAnimate,\n useDrawIn,\n} from \"../animations\";\nimport { useSketchTheme } from \"../hooks/useSketchTheme\";\nimport { RoughSvg } from \"../primitives/RoughSvg\";\nimport type { SketchProps } from \"../types\";\nimport { assignRef, cn } from \"../utils\";\n\nexport type DividerOrientation = \"horizontal\" | \"vertical\";\n\nexport interface DividerProps\n extends Omit<HTMLAttributes<HTMLDivElement>, \"color\">,\n SketchProps {\n orientation?: DividerOrientation;\n /**\n * Draw-in so the line extends across its length. Defaults to the\n * DoodleUIProvider value (true).\n */\n animate?: boolean;\n}\n\nexport const Divider = forwardRef<HTMLDivElement, DividerProps>(\n function Divider(\n {\n className,\n style,\n orientation = \"horizontal\",\n roughness,\n seed,\n sketchColor,\n bowing,\n strokeWidth,\n hachureGap,\n hachureAngle,\n fillWeight,\n animate,\n ...rest\n },\n ref,\n ) {\n const rootRef = useRef<HTMLDivElement>(null);\n const theme = useSketchTheme(sketchColor);\n const ink = sketchColor ?? theme.ink;\n const shouldAnimate = useAnimate(animate);\n const horizontal = orientation === \"horizontal\";\n useDrawIn(rootRef, DRAW_IN_DURATION_MS, shouldAnimate);\n\n return (\n <div\n ref={(node) => {\n (rootRef as MutableRefObject<HTMLDivElement | null>).current = node;\n assignRef(ref, node);\n }}\n role=\"separator\"\n aria-orientation={orientation}\n className={cn(className)}\n style={{\n position: \"relative\",\n width: horizontal ? \"100%\" : 12,\n height: horizontal ? 12 : \"100%\",\n minHeight: horizontal ? 12 : 48,\n ...style,\n }}\n {...rest}\n >\n <RoughSvg\n shape={horizontal ? \"line\" : \"line-vertical\"}\n roughness={roughness ?? 1.8}\n seed={seed}\n sketchColor={ink}\n bowing={bowing ?? 2}\n strokeWidth={strokeWidth ?? 1.5}\n hachureGap={hachureGap}\n hachureAngle={hachureAngle}\n fillWeight={fillWeight}\n inset={4}\n />\n </div>\n );\n },\n);\n","\"use client\";\n\nimport {\n forwardRef,\n useRef,\n type HTMLAttributes,\n type MutableRefObject,\n} from \"react\";\nimport {\n DRAW_IN_DURATION_MS,\n useAnimate,\n useDrawIn,\n useTweenNumber,\n} from \"../animations\";\nimport { useResolvedSeed } from \"../hooks/useResolvedSeed\";\nimport { useSketchTheme } from \"../hooks/useSketchTheme\";\nimport { RoughSvg } from \"../primitives/RoughSvg\";\nimport type { SketchProps } from \"../types\";\nimport { assignRef, cn, deriveSeed } from \"../utils\";\n\nexport interface ProgressProps\n extends Omit<HTMLAttributes<HTMLDivElement>, \"color\">,\n SketchProps {\n value?: number;\n max?: number;\n /**\n * Draw-in the track on mount and redraw the fill as value changes.\n * Defaults to the DoodleUIProvider value (true).\n */\n animate?: boolean;\n}\n\nexport const Progress = forwardRef<HTMLDivElement, ProgressProps>(\n function Progress(\n {\n className,\n style,\n value = 0,\n max = 100,\n roughness,\n seed,\n sketchColor,\n bowing,\n fillStyle,\n strokeWidth,\n hachureGap,\n fillWeight,\n animate,\n ...rest\n },\n ref,\n ) {\n const rootRef = useRef<HTMLDivElement>(null);\n const trackRef = useRef<HTMLSpanElement>(null);\n const theme = useSketchTheme(sketchColor);\n const ink = sketchColor ?? theme.accent;\n const trackInk = sketchColor ?? (theme.isDark ? \"rgba(243, 244, 246, 0.45)\" : theme.ink);\n const clamped = Math.min(max, Math.max(0, value));\n const percent = max === 0 ? 0 : (clamped / max) * 100;\n const shouldAnimate = useAnimate(animate);\n const displayed = useTweenNumber(percent, shouldAnimate, 420);\n const resolvedSeed = useResolvedSeed(seed);\n const fillSeed = shouldAnimate\n ? deriveSeed(resolvedSeed, `fill-${Math.round(displayed / 6)}`)\n : resolvedSeed;\n const fillRoughness =\n (roughness ?? 1.5) + 0.4 + (displayed / 100) * 0.7;\n\n useDrawIn(trackRef, DRAW_IN_DURATION_MS, shouldAnimate);\n\n return (\n <div\n ref={(node) => {\n (rootRef as MutableRefObject<HTMLDivElement | null>).current = node;\n assignRef(ref, node);\n }}\n role=\"progressbar\"\n aria-valuemin={0}\n aria-valuemax={max}\n aria-valuenow={clamped}\n className={cn(className)}\n style={{\n position: \"relative\",\n width: \"100%\",\n height: 18,\n ...style,\n }}\n {...rest}\n >\n <span\n ref={trackRef}\n style={{ position: \"absolute\", inset: 0, pointerEvents: \"none\" }}\n >\n <RoughSvg\n shape=\"rectangle\"\n roughness={roughness}\n seed={resolvedSeed}\n sketchColor={trackInk}\n bowing={bowing}\n strokeWidth={strokeWidth ?? 1.5}\n inset={2}\n />\n </span>\n {displayed > 0 ? (\n <div\n style={{\n position: \"absolute\",\n left: 5,\n top: 4,\n bottom: 4,\n width: `calc(${displayed}% - 10px)`,\n minWidth: displayed > 0 ? 8 : 0,\n overflow: \"hidden\",\n }}\n >\n <RoughSvg\n shape=\"rectangle\"\n roughness={fillRoughness}\n seed={fillSeed}\n sketchColor={ink}\n fill={ink}\n fillStyle={fillStyle ?? \"hachure\"}\n bowing={bowing}\n strokeWidth={1.1}\n hachureGap={hachureGap ?? 5}\n fillWeight={fillWeight ?? 1.2}\n inset={1}\n />\n </div>\n ) : null}\n </div>\n );\n },\n);\n","\"use client\";\n\nimport type { ComponentPropsWithoutRef, ReactNode } from \"react\";\nimport * as TooltipPrimitive from \"@radix-ui/react-tooltip\";\nimport { DRAW_IN_TOOLTIP_MS } from \"../animations\";\nimport { useSketchTheme } from \"../hooks/useSketchTheme\";\nimport { SketchBox } from \"../primitives/SketchBox\";\nimport type { SketchProps } from \"../types\";\nimport { cn, doodleUiFontFamily } from \"../utils\";\n\nexport const TooltipProvider = TooltipPrimitive.Provider;\n\nexport interface TooltipProps extends SketchProps {\n content: ReactNode;\n children: ReactNode;\n side?: ComponentPropsWithoutRef<typeof TooltipPrimitive.Content>[\"side\"];\n delayDuration?: number;\n className?: string;\n fill?: string;\n /**\n * Quick draw-in when the bubble shows (~180ms). Defaults to the\n * DoodleUIProvider value (true).\n */\n animate?: boolean;\n}\n\nexport function Tooltip({\n content,\n children,\n side = \"top\",\n delayDuration = 200,\n className,\n fill,\n roughness,\n seed,\n sketchColor,\n bowing,\n fillStyle,\n strokeWidth,\n hachureGap,\n hachureAngle,\n fillWeight,\n animate,\n}: TooltipProps) {\n const theme = useSketchTheme(sketchColor);\n const ink = sketchColor ?? theme.ink;\n\n return (\n <TooltipPrimitive.Root delayDuration={delayDuration}>\n <TooltipPrimitive.Trigger asChild>{children}</TooltipPrimitive.Trigger>\n <TooltipPrimitive.Portal>\n <TooltipPrimitive.Content\n side={side}\n sideOffset={8}\n className={cn(className)}\n style={{ zIndex: 60, outline: \"none\" }}\n >\n <SketchBox\n roughness={roughness ?? 1.3}\n seed={seed}\n sketchColor={ink}\n bowing={bowing}\n fillStyle={fillStyle ?? \"solid\"}\n fill={fill ?? theme.paper}\n strokeWidth={strokeWidth ?? 1.4}\n hachureGap={hachureGap}\n hachureAngle={hachureAngle}\n fillWeight={fillWeight}\n animate={animate}\n drawInDuration={DRAW_IN_TOOLTIP_MS}\n contentStyle={{\n padding: \"6px 10px\",\n fontSize: 13,\n lineHeight: 1.35,\n fontFamily: doodleUiFontFamily,\n color: ink,\n maxWidth: 240,\n }}\n >\n {content}\n </SketchBox>\n </TooltipPrimitive.Content>\n </TooltipPrimitive.Portal>\n </TooltipPrimitive.Root>\n );\n}\n","\"use client\";\n\nimport {\n createContext,\n forwardRef,\n useContext,\n useRef,\n useState,\n type CSSProperties,\n type MutableRefObject,\n type ReactNode,\n} from \"react\";\nimport * as SelectPrimitive from \"@radix-ui/react-select\";\nimport {\n DRAW_IN_DURATION_MS,\n useAnimate,\n useDrawIn,\n} from \"../animations\";\nimport { useResolvedSeed } from \"../hooks/useResolvedSeed\";\nimport { useSketchTheme } from \"../hooks/useSketchTheme\";\nimport { RoughSvg } from \"../primitives/RoughSvg\";\nimport { SketchBox } from \"../primitives/SketchBox\";\nimport type { SketchProps } from \"../types\";\nimport { assignRef, cn, doodleUiFontFamily, doodleUiFontWeight } from \"../utils\";\n\nconst CHEVRON_PATH = \"M 4 6 L 10 12 L 16 6\";\nconst UNDERLINE_INSET = 4;\n\nexport interface SelectOption {\n value: string;\n label: ReactNode;\n disabled?: boolean;\n}\n\ninterface SelectSketchContextValue extends SketchProps {\n resolvedSeed: number;\n ink: string;\n paper: string;\n accent: string;\n selectedValue?: string;\n selectedLabel?: ReactNode;\n placeholder?: string;\n animate?: boolean;\n}\n\nconst SelectSketchContext = createContext<SelectSketchContextValue | null>(\n null,\n);\n\nfunction useSelectSketch(): SelectSketchContextValue {\n const ctx = useContext(SelectSketchContext);\n if (!ctx) {\n throw new Error(\"Select parts must be used inside <Select>.\");\n }\n return ctx;\n}\n\nexport interface SelectProps\n extends Omit<SelectPrimitive.SelectProps, \"children\">,\n SketchProps {\n options: SelectOption[];\n placeholder?: string;\n className?: string;\n style?: CSSProperties;\n fill?: string;\n \"aria-label\"?: string;\n /**\n * Draw-in the trigger on mount and the popover border on open.\n * Defaults to the DoodleUIProvider value (true).\n */\n animate?: boolean;\n}\n\nexport function Select({\n options,\n placeholder = \"Select…\",\n className,\n style,\n fill,\n roughness,\n seed,\n sketchColor,\n bowing,\n fillStyle,\n strokeWidth,\n hachureGap,\n hachureAngle,\n fillWeight,\n value,\n defaultValue,\n onValueChange,\n animate,\n \"aria-label\": ariaLabel,\n ...rest\n}: SelectProps) {\n const [uncontrolled, setUncontrolled] = useState(defaultValue);\n const selectedValue = value ?? uncontrolled;\n const selectedLabel = options.find((option) => option.value === selectedValue)\n ?.label;\n const resolvedSeed = useResolvedSeed(seed);\n const theme = useSketchTheme(sketchColor);\n const ink = sketchColor ?? theme.ink;\n\n return (\n <SelectSketchContext.Provider\n value={{\n roughness,\n seed: resolvedSeed,\n sketchColor,\n bowing,\n fillStyle,\n strokeWidth,\n hachureGap,\n hachureAngle,\n fillWeight,\n resolvedSeed,\n ink,\n paper: fill ?? theme.paper,\n accent: theme.accent,\n selectedValue,\n selectedLabel,\n placeholder,\n animate,\n }}\n >\n <SelectPrimitive.Root\n value={value}\n defaultValue={defaultValue}\n onValueChange={(next) => {\n setUncontrolled(next);\n onValueChange?.(next);\n }}\n {...rest}\n >\n <SelectTrigger\n className={className}\n style={style}\n placeholder={placeholder}\n aria-label={ariaLabel}\n />\n <SelectContent>\n {options.map((option) => (\n <SelectItem\n key={option.value}\n value={option.value}\n disabled={option.disabled}\n >\n {option.label}\n </SelectItem>\n ))}\n </SelectContent>\n </SelectPrimitive.Root>\n </SelectSketchContext.Provider>\n );\n}\n\nexport interface SelectTriggerProps\n extends Omit<SelectPrimitive.SelectTriggerProps, \"asChild\"> {\n placeholder?: string;\n}\n\nexport const SelectTrigger = forwardRef<HTMLButtonElement, SelectTriggerProps>(\n function SelectTrigger(\n { className, style, placeholder, children, ...rest },\n ref,\n ) {\n const sketch = useSelectSketch();\n const [openish, setOpenish] = useState(false);\n const rootRef = useRef<HTMLButtonElement>(null);\n const shouldAnimate = useAnimate(sketch.animate);\n useDrawIn(rootRef, DRAW_IN_DURATION_MS, shouldAnimate);\n\n return (\n <SelectPrimitive.Trigger\n ref={(node) => {\n (rootRef as MutableRefObject<HTMLButtonElement | null>).current =\n node;\n assignRef(ref, node);\n }}\n className={cn(className)}\n onPointerDown={() => setOpenish(true)}\n onBlur={() => setOpenish(false)}\n style={{\n position: \"relative\",\n display: \"inline-flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n gap: 12,\n minWidth: 180,\n minHeight: 38,\n padding: \"8px 12px\",\n border: \"none\",\n background: \"transparent\",\n cursor: \"pointer\",\n color: sketch.ink,\n fontFamily: doodleUiFontFamily,\n fontSize: 15,\n lineHeight: 1.2,\n outline: \"none\",\n textAlign: \"left\",\n ...style,\n }}\n {...rest}\n >\n <RoughSvg\n shape=\"rectangle\"\n roughness={sketch.roughness}\n seed={sketch.resolvedSeed}\n sketchColor={openish ? sketch.accent : sketch.ink}\n bowing={sketch.bowing}\n fillStyle={sketch.fillStyle}\n strokeWidth={\n openish\n ? (sketch.strokeWidth ?? 1.75) + 0.35\n : sketch.strokeWidth\n }\n />\n <span\n style={{\n position: \"relative\",\n zIndex: 1,\n flex: 1,\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n whiteSpace: \"nowrap\",\n }}\n >\n {children ?? sketch.selectedLabel ?? placeholder}\n </span>\n <SelectPrimitive.Icon\n style={{\n position: \"relative\",\n zIndex: 1,\n width: 18,\n height: 18,\n flexShrink: 0,\n }}\n >\n <RoughSvg\n shape=\"path\"\n path={CHEVRON_PATH}\n roughness={(sketch.roughness ?? 1.5) * 0.7}\n seed={sketch.resolvedSeed}\n sketchColor={sketch.ink}\n bowing={sketch.bowing}\n strokeWidth={(sketch.strokeWidth ?? 1.6) + 0.2}\n inset={0}\n />\n </SelectPrimitive.Icon>\n </SelectPrimitive.Trigger>\n );\n },\n);\n\nexport interface SelectContentProps\n extends Omit<SelectPrimitive.SelectContentProps, \"asChild\" | \"position\"> {\n children?: ReactNode;\n fill?: string;\n}\n\nexport const SelectContent = forwardRef<HTMLDivElement, SelectContentProps>(\n function SelectContent({ className, style, children, fill, ...rest }, ref) {\n const sketch = useSelectSketch();\n\n return (\n <SelectPrimitive.Portal>\n <SelectPrimitive.Content\n ref={ref}\n position=\"popper\"\n sideOffset={6}\n className={cn(className)}\n style={{\n zIndex: 80,\n outline: \"none\",\n minWidth: \"var(--radix-select-trigger-width)\",\n color: sketch.ink,\n ...style,\n }}\n {...rest}\n >\n <SketchBox\n roughness={sketch.roughness}\n seed={sketch.resolvedSeed}\n sketchColor={sketch.ink}\n bowing={sketch.bowing}\n fillStyle={sketch.fillStyle ?? \"solid\"}\n fill={fill ?? sketch.paper}\n strokeWidth={sketch.strokeWidth ?? 1.5}\n hachureGap={sketch.hachureGap}\n hachureAngle={sketch.hachureAngle}\n fillWeight={sketch.fillWeight}\n animate={sketch.animate}\n contentStyle={{ padding: \"6px 4px\", color: sketch.ink }}\n >\n <SelectPrimitive.Viewport>{children}</SelectPrimitive.Viewport>\n </SketchBox>\n </SelectPrimitive.Content>\n </SelectPrimitive.Portal>\n );\n },\n);\n\nexport interface SelectItemProps\n extends Omit<SelectPrimitive.SelectItemProps, \"asChild\"> {\n children?: ReactNode;\n}\n\nexport const SelectItem = forwardRef<HTMLDivElement, SelectItemProps>(\n function SelectItem({ className, style, children, value, ...rest }, ref) {\n const sketch = useSelectSketch();\n const [highlighted, setHighlighted] = useState(false);\n const selected = sketch.selectedValue === value;\n const mark = highlighted || selected;\n\n return (\n <SelectPrimitive.Item\n ref={ref}\n value={value}\n className={cn(className)}\n onPointerMove={() => setHighlighted(true)}\n onPointerLeave={() => setHighlighted(false)}\n onFocus={() => setHighlighted(true)}\n onBlur={() => setHighlighted(false)}\n style={{\n position: \"relative\",\n display: \"flex\",\n alignItems: \"center\",\n padding: \"7px 12px\",\n fontFamily: doodleUiFontFamily,\n fontSize: 14,\n color: sketch.ink,\n outline: \"none\",\n cursor: \"pointer\",\n userSelect: \"none\",\n fontWeight: selected\n ? doodleUiFontWeight(650)\n : doodleUiFontWeight(400),\n ...style,\n }}\n {...rest}\n >\n {mark ? (\n <RoughSvg\n shape=\"line\"\n roughness={(sketch.roughness ?? 1.5) + 0.4}\n seed={sketch.resolvedSeed}\n sketchColor={\n selected ? sketch.accent : sketch.ink\n }\n bowing={sketch.bowing ?? 1.6}\n strokeWidth={selected ? 1.8 : 1.3}\n inset={UNDERLINE_INSET}\n style={{ opacity: selected ? 0.9 : 0.45 }}\n />\n ) : null}\n <SelectPrimitive.ItemText\n style={{ position: \"relative\", zIndex: 1 }}\n >\n {children}\n </SelectPrimitive.ItemText>\n </SelectPrimitive.Item>\n );\n },\n);\n\nexport const SelectRoot = SelectPrimitive.Root;\nexport const SelectValue = SelectPrimitive.Value;\nexport const SelectGroup = SelectPrimitive.Group;\nexport const SelectLabel = SelectPrimitive.Label;\nexport const SelectSeparator = SelectPrimitive.Separator;\n","\"use client\";\n\nimport { forwardRef, useRef, useState, type ReactNode } from \"react\";\nimport * as SwitchPrimitive from \"@radix-ui/react-switch\";\nimport { motion } from \"framer-motion\";\nimport {\n DRAW_IN_DURATION_MS,\n useAnimate,\n useDrawIn,\n} from \"../animations\";\nimport { useResolvedSeed } from \"../hooks/useResolvedSeed\";\nimport { useSketchTheme } from \"../hooks/useSketchTheme\";\nimport { RoughSvg } from \"../primitives/RoughSvg\";\nimport type { SketchProps } from \"../types\";\nimport { cn, deriveSeed, doodleUiFontFamily } from \"../utils\";\n\nconst TRACK_W = 44;\nconst TRACK_H = 24;\nconst THUMB = 18;\nconst THUMB_OFF = 3;\nconst THUMB_ON = TRACK_W - THUMB - 3;\n\nexport interface SwitchProps\n extends Omit<SwitchPrimitive.SwitchProps, \"asChild\">,\n SketchProps {\n label?: ReactNode;\n /**\n * Slide the thumb and seed-morph the track on toggle.\n * Defaults to the DoodleUIProvider value (true).\n */\n animate?: boolean;\n}\n\nexport const Switch = forwardRef<HTMLButtonElement, SwitchProps>(\n function Switch(\n {\n className,\n style,\n label,\n roughness,\n seed,\n sketchColor,\n bowing,\n fillStyle,\n strokeWidth,\n checked,\n defaultChecked,\n onCheckedChange,\n id,\n animate,\n ...rest\n },\n ref,\n ) {\n const [uncontrolled, setUncontrolled] = useState(defaultChecked === true);\n const isOn = checked ?? uncontrolled;\n const theme = useSketchTheme(sketchColor);\n const ink = sketchColor ?? theme.ink;\n const activeColor = sketchColor ?? theme.accent;\n const activeFill = theme.isDark\n ? (sketchColor ? `${sketchColor}25` : theme.accentFill)\n : theme.accentFill;\n const resolvedSeed = useResolvedSeed(seed);\n const shouldAnimate = useAnimate(animate);\n const trackRef = useRef<HTMLSpanElement>(null);\n const trackSeed = shouldAnimate\n ? deriveSeed(resolvedSeed, isOn ? \"on\" : \"off\")\n : resolvedSeed;\n\n useDrawIn(trackRef, DRAW_IN_DURATION_MS, shouldAnimate, trackSeed);\n\n return (\n <span\n className={cn(className)}\n style={{\n display: \"inline-flex\",\n alignItems: \"center\",\n gap: 8,\n cursor: \"pointer\",\n userSelect: \"none\",\n color: ink,\n ...style,\n }}\n >\n <SwitchPrimitive.Root\n ref={ref}\n id={id}\n checked={checked}\n defaultChecked={defaultChecked}\n onCheckedChange={(next) => {\n setUncontrolled(next);\n onCheckedChange?.(next);\n }}\n style={{\n position: \"relative\",\n width: TRACK_W,\n height: TRACK_H,\n padding: 0,\n border: \"none\",\n background: \"transparent\",\n flexShrink: 0,\n cursor: \"pointer\",\n outline: \"none\",\n }}\n {...rest}\n >\n <span\n ref={trackRef}\n style={{ position: \"absolute\", inset: 0, pointerEvents: \"none\" }}\n >\n <RoughSvg\n shape=\"rectangle\"\n roughness={roughness}\n seed={trackSeed}\n sketchColor={isOn ? activeColor : ink}\n bowing={bowing ?? 1.4}\n fillStyle={fillStyle ?? (isOn ? \"hachure\" : undefined)}\n fill={isOn ? activeFill : undefined}\n strokeWidth={strokeWidth ?? 1.6}\n inset={1.5}\n />\n </span>\n <SwitchPrimitive.Thumb asChild>\n <motion.span\n initial={false}\n animate={{ x: isOn ? THUMB_ON : THUMB_OFF }}\n transition={\n shouldAnimate\n ? { type: \"spring\", stiffness: 420, damping: 30 }\n : { duration: 0 }\n }\n style={{\n position: \"absolute\",\n top: (TRACK_H - THUMB) / 2,\n left: 0,\n width: THUMB,\n height: THUMB,\n display: \"block\",\n zIndex: 1,\n }}\n >\n <RoughSvg\n shape=\"ellipse\"\n roughness={(roughness ?? 1.5) * 0.85}\n seed={deriveSeed(resolvedSeed, \"thumb\")}\n sketchColor={isOn ? activeColor : ink}\n fill={theme.paper}\n fillStyle=\"solid\"\n bowing={bowing}\n strokeWidth={(strokeWidth ?? 1.5) + 0.2}\n inset={1}\n />\n </motion.span>\n </SwitchPrimitive.Thumb>\n </SwitchPrimitive.Root>\n {label ? (\n <label\n htmlFor={id}\n style={{\n fontSize: 15,\n cursor: \"pointer\",\n fontFamily: doodleUiFontFamily,\n color: ink,\n }}\n >\n {label}\n </label>\n ) : null}\n </span>\n );\n },\n);\n","\"use client\";\n\nimport {\n createContext,\n forwardRef,\n useContext,\n useLayoutEffect,\n useRef,\n useState,\n type ComponentPropsWithoutRef,\n type MutableRefObject,\n type ReactNode,\n} from \"react\";\nimport * as TabsPrimitive from \"@radix-ui/react-tabs\";\nimport {\n DRAW_IN_MARK_MS,\n useAnimate,\n useDrawIn,\n} from \"../animations\";\nimport { useResolvedSeed } from \"../hooks/useResolvedSeed\";\nimport { useSketchTheme } from \"../hooks/useSketchTheme\";\nimport { RoughSvg } from \"../primitives/RoughSvg\";\nimport type { SketchProps } from \"../types\";\nimport { assignRef, cn, deriveSeed, doodleUiFontFamily, doodleUiFontWeight } from \"../utils\";\n\ninterface TabsSketchContextValue extends SketchProps {\n resolvedSeed: number;\n ink: string;\n accent: string;\n current: string | undefined;\n shouldAnimate: boolean;\n}\n\nconst TabsSketchContext = createContext<TabsSketchContextValue | null>(null);\n\nfunction useTabsSketch(): TabsSketchContextValue {\n const ctx = useContext(TabsSketchContext);\n if (!ctx) {\n throw new Error(\"Tab parts must be used inside <Tabs>.\");\n }\n return ctx;\n}\n\nexport interface TabsProps\n extends Omit<ComponentPropsWithoutRef<typeof TabsPrimitive.Root>, \"asChild\">,\n SketchProps {\n /**\n * Draw-in the active underline and slide it on tab change.\n * Defaults to the DoodleUIProvider value (true).\n */\n animate?: boolean;\n}\n\nexport const Tabs = forwardRef<HTMLDivElement, TabsProps>(function Tabs(\n {\n className,\n style,\n children,\n value,\n defaultValue,\n onValueChange,\n roughness,\n seed,\n sketchColor,\n bowing,\n fillStyle,\n strokeWidth,\n animate,\n ...rest\n },\n ref,\n) {\n const [uncontrolled, setUncontrolled] = useState(defaultValue);\n const current = value ?? uncontrolled;\n const resolvedSeed = useResolvedSeed(seed);\n const theme = useSketchTheme(sketchColor);\n const ink = sketchColor ?? theme.ink;\n const accent = sketchColor ?? theme.accent;\n const shouldAnimate = useAnimate(animate);\n\n return (\n <TabsSketchContext.Provider\n value={{\n roughness,\n seed: resolvedSeed,\n sketchColor,\n bowing,\n fillStyle,\n strokeWidth,\n resolvedSeed,\n ink,\n accent,\n current,\n shouldAnimate,\n }}\n >\n <TabsPrimitive.Root\n ref={ref}\n className={cn(className)}\n style={style}\n value={current}\n defaultValue={defaultValue}\n onValueChange={(next) => {\n setUncontrolled(next);\n onValueChange?.(next);\n }}\n {...rest}\n >\n {children}\n </TabsPrimitive.Root>\n </TabsSketchContext.Provider>\n );\n});\n\nexport interface TabListProps\n extends Omit<\n ComponentPropsWithoutRef<typeof TabsPrimitive.List>,\n \"asChild\"\n > {}\n\ninterface UnderlineBox {\n left: number;\n top: number;\n width: number;\n}\n\nfunction TabUnderline({\n box,\n seed,\n sketch,\n}: {\n box: UnderlineBox;\n seed: number;\n sketch: TabsSketchContextValue;\n}) {\n const ref = useRef<HTMLSpanElement>(null);\n useDrawIn(ref, DRAW_IN_MARK_MS, sketch.shouldAnimate, seed);\n\n return (\n <span\n ref={ref}\n aria-hidden=\"true\"\n style={{\n position: \"absolute\",\n left: box.left,\n top: box.top,\n width: box.width,\n height: 10,\n pointerEvents: \"none\",\n transition: sketch.shouldAnimate\n ? \"left 220ms ease, width 220ms ease, top 220ms ease\"\n : undefined,\n }}\n >\n <RoughSvg\n shape=\"line\"\n roughness={(sketch.roughness ?? 1.5) + 0.35}\n seed={seed}\n sketchColor={sketch.accent}\n bowing={sketch.bowing ?? 1.8}\n strokeWidth={(sketch.strokeWidth ?? 1.75) + 0.4}\n inset={2}\n />\n </span>\n );\n}\n\nexport const TabList = forwardRef<HTMLDivElement, TabListProps>(\n function TabList({ className, style, children, ...rest }, ref) {\n const sketch = useTabsSketch();\n const listRef = useRef<HTMLDivElement>(null);\n const [underline, setUnderline] = useState<UnderlineBox | null>(null);\n\n useLayoutEffect(() => {\n const list = listRef.current;\n if (!list) return;\n\n const measure = () => {\n const active = list.querySelector<HTMLElement>('[data-state=\"active\"]');\n if (!active) {\n setUnderline(null);\n return;\n }\n setUnderline({\n left: active.offsetLeft + 8,\n top: active.offsetTop + active.offsetHeight - 10,\n width: Math.max(12, active.offsetWidth - 16),\n });\n };\n\n measure();\n const observer = new ResizeObserver(measure);\n observer.observe(list);\n return () => observer.disconnect();\n }, [sketch.current, children]);\n\n return (\n <TabsPrimitive.List\n ref={(node) => {\n (listRef as MutableRefObject<HTMLDivElement | null>).current = node;\n assignRef(ref, node);\n }}\n className={cn(className)}\n style={{\n display: \"flex\",\n flexWrap: \"wrap\",\n gap: 4,\n position: \"relative\",\n ...style,\n }}\n {...rest}\n >\n {children}\n {underline && sketch.current ? (\n <TabUnderline\n box={underline}\n seed={deriveSeed(sketch.resolvedSeed, sketch.current)}\n sketch={sketch}\n />\n ) : null}\n </TabsPrimitive.List>\n );\n },\n);\n\nexport interface TabProps\n extends Omit<\n ComponentPropsWithoutRef<typeof TabsPrimitive.Trigger>,\n \"asChild\"\n > {\n children?: ReactNode;\n}\n\nexport const Tab = forwardRef<HTMLButtonElement, TabProps>(function Tab(\n { className, style, children, value, ...rest },\n ref,\n) {\n const sketch = useTabsSketch();\n const active = sketch.current === value;\n\n return (\n <TabsPrimitive.Trigger\n ref={ref}\n value={value}\n className={cn(className)}\n style={{\n position: \"relative\",\n border: \"none\",\n background: \"transparent\",\n cursor: \"pointer\",\n padding: \"8px 14px 12px\",\n fontFamily: doodleUiFontFamily,\n fontSize: 15,\n fontWeight: active\n ? doodleUiFontWeight(650)\n : doodleUiFontWeight(400),\n color: active ? sketch.accent : sketch.ink,\n outline: \"none\",\n ...style,\n }}\n {...rest}\n >\n <span style={{ position: \"relative\", zIndex: 1 }}>{children}</span>\n </TabsPrimitive.Trigger>\n );\n});\n\nexport interface TabPanelProps\n extends Omit<\n ComponentPropsWithoutRef<typeof TabsPrimitive.Content>,\n \"asChild\"\n > {}\n\nexport const TabPanel = forwardRef<HTMLDivElement, TabPanelProps>(\n function TabPanel({ className, style, children, ...rest }, ref) {\n const sketch = useTabsSketch();\n return (\n <TabsPrimitive.Content\n ref={ref}\n className={cn(className)}\n style={{\n paddingTop: 14,\n fontFamily: doodleUiFontFamily,\n color: sketch.ink,\n fontSize: 15,\n lineHeight: 1.5,\n outline: \"none\",\n ...style,\n }}\n {...rest}\n >\n {children}\n </TabsPrimitive.Content>\n );\n },\n);\n","\"use client\";\n\nimport {\n createContext,\n forwardRef,\n useContext,\n useLayoutEffect,\n useRef,\n useState,\n type HTMLAttributes,\n type ReactNode,\n type TdHTMLAttributes,\n type ThHTMLAttributes,\n type TableHTMLAttributes,\n} from \"react\";\nimport {\n DRAW_IN_DURATION_MS,\n TABLE_STAGGER_MS,\n useAnimate,\n useDrawIn,\n} from \"../animations\";\nimport { useResolvedSeed } from \"../hooks/useResolvedSeed\";\nimport { useSketchTheme } from \"../hooks/useSketchTheme\";\nimport { RoughSvg } from \"../primitives/RoughSvg\";\nimport type { SketchProps } from \"../types\";\nimport { assignRef, cn, deriveSeed, doodleUiFontFamily, doodleUiFontWeight } from \"../utils\";\n\ninterface TableSketchContextValue extends SketchProps {\n resolvedSeed: number;\n ink: string;\n shouldAnimate: boolean;\n}\n\nconst TableSketchContext = createContext<TableSketchContextValue | null>(null);\n\nfunction useTableSketch(): TableSketchContextValue {\n const ctx = useContext(TableSketchContext);\n if (!ctx) {\n throw new Error(\"Table parts must be used inside <Table>.\");\n }\n return ctx;\n}\n\nexport interface TableProps\n extends Omit<TableHTMLAttributes<HTMLTableElement>, \"color\">,\n SketchProps {\n headerUnderline?: boolean;\n children?: ReactNode;\n /**\n * Draw-in row rules on mount, staggered slightly. Defaults to the\n * DoodleUIProvider value (true).\n */\n animate?: boolean;\n}\n\ninterface RowLine {\n y: number;\n width: number;\n key: string;\n header: boolean;\n index: number;\n}\n\nfunction TableRule({\n line,\n headerUnderline,\n roughness,\n resolvedSeed,\n ink,\n bowing,\n strokeWidth,\n shouldAnimate,\n}: {\n line: RowLine;\n headerUnderline: boolean;\n roughness?: number;\n resolvedSeed: number;\n ink: string;\n bowing?: number;\n strokeWidth?: number;\n shouldAnimate: boolean;\n}) {\n const ref = useRef<HTMLDivElement>(null);\n const delay = shouldAnimate\n ? Math.min(line.index, 6) * TABLE_STAGGER_MS\n : 0;\n useDrawIn(ref, DRAW_IN_DURATION_MS, shouldAnimate, undefined, delay);\n\n if (line.header && !headerUnderline) return null;\n\n return (\n <div\n ref={ref}\n style={{\n position: \"absolute\",\n left: 0,\n width: line.width,\n top: line.y - 6,\n height: 12,\n }}\n >\n <RoughSvg\n shape=\"line\"\n roughness={\n line.header ? (roughness ?? 1.5) + 0.2 : roughness ?? 1.7\n }\n seed={deriveSeed(resolvedSeed, line.key)}\n sketchColor={ink}\n bowing={bowing ?? (line.header ? 1.4 : 2)}\n strokeWidth={\n line.header\n ? (strokeWidth ?? 1.75) + 0.35\n : strokeWidth ?? 1.35\n }\n inset={6}\n />\n </div>\n );\n}\n\nexport const Table = forwardRef<HTMLTableElement, TableProps>(function Table(\n {\n className,\n style,\n children,\n headerUnderline = true,\n roughness,\n seed,\n sketchColor,\n bowing,\n fillStyle,\n strokeWidth,\n animate,\n ...rest\n },\n ref,\n) {\n const wrapperRef = useRef<HTMLDivElement>(null);\n const tableRef = useRef<HTMLTableElement | null>(null);\n const [lines, setLines] = useState<RowLine[]>([]);\n const resolvedSeed = useResolvedSeed(seed);\n const theme = useSketchTheme(sketchColor);\n const ink = sketchColor ?? theme.ink;\n const shouldAnimate = useAnimate(animate);\n\n useLayoutEffect(() => {\n const wrapper = wrapperRef.current;\n const table = tableRef.current;\n if (!wrapper || !table) return;\n\n const measure = () => {\n const rows = Array.from(table.querySelectorAll(\"tr\"));\n const next: RowLine[] = [];\n rows.forEach((row, index) => {\n const isLast = index === rows.length - 1;\n const isHeader = row.parentElement?.tagName === \"THEAD\";\n if (isLast && !isHeader) return;\n next.push({\n y: row.offsetTop + row.offsetHeight,\n width: table.offsetWidth,\n key: isHeader ? `header-${index}` : `row-${index}`,\n header: Boolean(isHeader),\n index,\n });\n });\n setLines(next);\n };\n\n measure();\n const observer = new ResizeObserver(measure);\n observer.observe(table);\n observer.observe(wrapper);\n return () => observer.disconnect();\n }, [children]);\n\n return (\n <TableSketchContext.Provider\n value={{\n roughness,\n seed: resolvedSeed,\n sketchColor,\n bowing,\n fillStyle,\n strokeWidth,\n resolvedSeed,\n ink,\n shouldAnimate,\n }}\n >\n <div\n ref={wrapperRef}\n className={cn(className)}\n style={{ position: \"relative\", width: \"100%\", ...style }}\n >\n <div\n aria-hidden=\"true\"\n style={{\n position: \"absolute\",\n inset: 0,\n pointerEvents: \"none\",\n zIndex: 1,\n overflow: \"visible\",\n }}\n >\n {lines.map((line) => (\n <TableRule\n key={line.key}\n line={line}\n headerUnderline={headerUnderline}\n roughness={roughness}\n resolvedSeed={resolvedSeed}\n ink={ink}\n bowing={bowing}\n strokeWidth={strokeWidth}\n shouldAnimate={shouldAnimate}\n />\n ))}\n </div>\n <table\n ref={(node) => {\n tableRef.current = node;\n assignRef(ref, node);\n }}\n style={{\n width: \"100%\",\n borderCollapse: \"collapse\",\n position: \"relative\",\n zIndex: 0,\n fontFamily: doodleUiFontFamily,\n color: ink,\n }}\n {...rest}\n >\n {children}\n </table>\n </div>\n </TableSketchContext.Provider>\n );\n});\n\nexport const TableHead = forwardRef<\n HTMLTableSectionElement,\n HTMLAttributes<HTMLTableSectionElement>\n>(function TableHead({ className, style, ...rest }, ref) {\n return (\n <thead\n ref={ref}\n className={cn(className)}\n style={style}\n {...rest}\n />\n );\n});\n\nexport const TableBody = forwardRef<\n HTMLTableSectionElement,\n HTMLAttributes<HTMLTableSectionElement>\n>(function TableBody({ className, style, ...rest }, ref) {\n return (\n <tbody\n ref={ref}\n className={cn(className)}\n style={style}\n {...rest}\n />\n );\n});\n\nexport const TableRow = forwardRef<\n HTMLTableRowElement,\n HTMLAttributes<HTMLTableRowElement>\n>(function TableRow({ className, style, ...rest }, ref) {\n return (\n <tr\n ref={ref}\n className={cn(className)}\n style={style}\n {...rest}\n />\n );\n});\n\nexport interface TableHeaderCellProps\n extends Omit<ThHTMLAttributes<HTMLTableCellElement>, \"color\"> {}\n\nexport const TableHeaderCell = forwardRef<\n HTMLTableCellElement,\n TableHeaderCellProps\n>(function TableHeaderCell({ className, style, children, ...rest }, ref) {\n useTableSketch();\n return (\n <th\n ref={ref}\n className={cn(className)}\n style={{\n textAlign: \"left\",\n fontWeight: doodleUiFontWeight(650),\n fontSize: 13,\n padding: \"10px 12px\",\n ...style,\n }}\n {...rest}\n >\n {children}\n </th>\n );\n});\n\nexport interface TableCellProps\n extends Omit<TdHTMLAttributes<HTMLTableCellElement>, \"color\"> {}\n\nexport const TableCell = forwardRef<HTMLTableCellElement, TableCellProps>(\n function TableCell({ className, style, children, ...rest }, ref) {\n useTableSketch();\n return (\n <td\n ref={ref}\n className={cn(className)}\n style={{\n fontSize: 14,\n padding: \"10px 12px\",\n ...style,\n }}\n {...rest}\n >\n {children}\n </td>\n );\n },\n);\n","\"use client\";\n\nimport {\n createContext,\n useContext,\n useState,\n type CSSProperties,\n type ReactNode,\n} from \"react\";\nimport * as ToastPrimitive from \"@radix-ui/react-toast\";\nimport { AnimatePresence, motion } from \"framer-motion\";\nimport { useAnimate } from \"../animations\";\nimport { useSketchTheme } from \"../hooks/useSketchTheme\";\nimport { SketchBox } from \"../primitives/SketchBox\";\nimport type { SketchProps } from \"../types\";\nimport { cn, doodleUiFontFamily, doodleUiFontWeight } from \"../utils\";\n\nexport type ToastVariant = \"info\" | \"warning\" | \"error\" | \"success\";\nexport type ToastPosition =\n | \"top-left\"\n | \"top-right\"\n | \"bottom-left\"\n | \"bottom-right\";\n\nconst LIGHT_VARIANT_FILL: Record<ToastVariant, string> = {\n info: \"#d2deec\",\n warning: \"#f3e2c0\",\n error: \"#f3d0cc\",\n success: \"#d3e8dc\",\n};\n\nconst DARK_VARIANT_FILL: Record<ToastVariant, string> = {\n info: \"rgba(96, 165, 250, 0.16)\",\n warning: \"rgba(251, 191, 36, 0.16)\",\n error: \"rgba(248, 113, 113, 0.16)\",\n success: \"rgba(52, 211, 153, 0.16)\",\n};\n\nconst POSITION_STYLE: Record<ToastPosition, CSSProperties> = {\n \"top-left\": { top: 16, left: 16 },\n \"top-right\": { top: 16, right: 16 },\n \"bottom-left\": { bottom: 16, left: 16 },\n \"bottom-right\": { bottom: 16, right: 16 },\n};\n\nconst ToastPositionContext = createContext<ToastPosition>(\"bottom-right\");\n\nexport interface ToastProviderProps {\n children?: ReactNode;\n position?: ToastPosition;\n duration?: number;\n swipeDirection?: ToastPrimitive.ToastProviderProps[\"swipeDirection\"];\n label?: string;\n}\n\nexport function ToastProvider({\n children,\n position = \"bottom-right\",\n duration = 4000,\n swipeDirection = \"right\",\n label,\n}: ToastProviderProps) {\n return (\n <ToastPositionContext.Provider value={position}>\n <ToastPrimitive.Provider\n duration={duration}\n swipeDirection={swipeDirection}\n label={label}\n >\n {children}\n <ToastPrimitive.Viewport\n style={{\n position: \"fixed\",\n zIndex: 90,\n display: \"flex\",\n flexDirection: \"column\",\n gap: 10,\n width: \"min(360px, calc(100vw - 32px))\",\n margin: 0,\n padding: 0,\n listStyle: \"none\",\n outline: \"none\",\n ...POSITION_STYLE[position],\n }}\n />\n </ToastPrimitive.Provider>\n </ToastPositionContext.Provider>\n );\n}\n\nexport interface ToastProps extends SketchProps {\n open?: boolean;\n defaultOpen?: boolean;\n onOpenChange?: (open: boolean) => void;\n title?: ReactNode;\n children?: ReactNode;\n variant?: ToastVariant;\n fill?: string;\n duration?: number;\n className?: string;\n style?: CSSProperties;\n /**\n * Slide-in with a sketchy settle wobble, reversed on exit.\n * Defaults to the DoodleUIProvider value (true).\n */\n animate?: boolean;\n}\n\nexport function Toast({\n open,\n defaultOpen,\n onOpenChange,\n title,\n children,\n variant = \"info\",\n fill,\n duration,\n className,\n style,\n roughness,\n seed,\n sketchColor,\n bowing,\n fillStyle,\n strokeWidth,\n hachureGap,\n hachureAngle,\n fillWeight,\n animate,\n}: ToastProps) {\n const position = useContext(ToastPositionContext);\n const fromTop = position.startsWith(\"top\");\n const [uncontrolled, setUncontrolled] = useState(defaultOpen ?? false);\n const isOpen = open ?? uncontrolled;\n const shouldAnimate = useAnimate(animate);\n const theme = useSketchTheme(sketchColor);\n const color = sketchColor ?? theme[variant];\n const defaultFill = theme.isDark ? DARK_VARIANT_FILL[variant] : LIGHT_VARIANT_FILL[variant];\n const resolvedFill = fill ?? defaultFill;\n const offset = fromTop ? -14 : 14;\n\n function handleOpenChange(next: boolean) {\n setUncontrolled(next);\n onOpenChange?.(next);\n }\n\n return (\n <AnimatePresence>\n {isOpen ? (\n <ToastPrimitive.Root\n open={isOpen}\n onOpenChange={handleOpenChange}\n duration={duration}\n forceMount\n asChild\n >\n <motion.li\n className={cn(className)}\n initial={\n shouldAnimate\n ? { y: offset, opacity: 0, rotate: -1.4 }\n : false\n }\n animate={\n shouldAnimate\n ? { y: 0, opacity: 1, rotate: [-1.2, 0.9, -0.35, 0] }\n : { y: 0, opacity: 1, rotate: 0 }\n }\n exit={\n shouldAnimate\n ? { y: offset, opacity: 0, rotate: 1.2 }\n : { opacity: 0 }\n }\n transition={\n shouldAnimate\n ? { duration: 0.38, ease: \"easeOut\" }\n : { duration: 0 }\n }\n style={{\n listStyle: \"none\",\n outline: \"none\",\n ...style,\n }}\n >\n <SketchBox\n roughness={roughness}\n seed={seed}\n sketchColor={color}\n bowing={bowing}\n fillStyle={fillStyle ?? \"hachure\"}\n fill={resolvedFill}\n strokeWidth={strokeWidth ?? 1.7}\n hachureGap={hachureGap ?? 9}\n hachureAngle={hachureAngle}\n fillWeight={fillWeight ?? 0.85}\n shadow\n animate={animate}\n contentStyle={{ padding: \"12px 16px\", color: theme.ink }}\n >\n {title ? (\n <ToastPrimitive.Title\n style={{\n margin: 0,\n fontWeight: doodleUiFontWeight(700),\n fontSize: 15,\n fontFamily: doodleUiFontFamily,\n color,\n marginBottom: children ? 4 : 0,\n }}\n >\n {title}\n </ToastPrimitive.Title>\n ) : null}\n {children ? (\n <ToastPrimitive.Description\n style={{\n margin: 0,\n fontSize: 14,\n lineHeight: 1.5,\n fontFamily: doodleUiFontFamily,\n color: theme.ink,\n }}\n >\n {children}\n </ToastPrimitive.Description>\n ) : null}\n </SketchBox>\n </motion.li>\n </ToastPrimitive.Root>\n ) : null}\n </AnimatePresence>\n );\n}\n\nexport const ToastRoot = ToastPrimitive.Root;\nexport const ToastTitle = ToastPrimitive.Title;\nexport const ToastDescription = ToastPrimitive.Description;\nexport const ToastClose = ToastPrimitive.Close;\nexport const ToastAction = ToastPrimitive.Action;\nexport const ToastViewport = ToastPrimitive.Viewport;\n","\"use client\";\n\nimport {\n createContext,\n forwardRef,\n useContext,\n useState,\n type ComponentPropsWithoutRef,\n type CSSProperties,\n type ReactNode,\n} from \"react\";\nimport * as AccordionPrimitive from \"@radix-ui/react-accordion\";\nimport { RoughSvg } from \"../primitives/RoughSvg\";\nimport type { SketchProps } from \"../types\";\nimport { cn, doodleUiFontFamily, doodleUiFontWeight } from \"../utils\";\nimport { useResolvedSeed } from \"../hooks/useResolvedSeed\";\nimport { useSketchTheme } from \"../hooks/useSketchTheme\";\nimport { deriveSeed } from \"../utils\";\n\nconst CHEVRON_PATH = \"M 6 4 L 12 10 L 6 16\";\n\ninterface AccordionSketchContextValue extends SketchProps {\n resolvedSeed: number;\n ink: string;\n openValue: string | string[] | undefined;\n}\n\nconst AccordionSketchContext =\n createContext<AccordionSketchContextValue | null>(null);\n\nfunction useAccordionSketch(): AccordionSketchContextValue {\n const ctx = useContext(AccordionSketchContext);\n if (!ctx) {\n throw new Error(\"Accordion parts must be used inside <Accordion>.\");\n }\n return ctx;\n}\n\nconst AccordionItemContext = createContext<string>(\"\");\n\nexport interface AccordionProps extends SketchProps {\n type?: \"single\" | \"multiple\";\n collapsible?: boolean;\n value?: string | string[];\n defaultValue?: string | string[];\n onValueChange?: (value: string | string[]) => void;\n disabled?: boolean;\n className?: string;\n style?: CSSProperties;\n children?: ReactNode;\n}\n\nexport const Accordion = forwardRef<HTMLDivElement, AccordionProps>(\n function Accordion(\n {\n className,\n style,\n children,\n type = \"single\",\n collapsible = true,\n value,\n defaultValue,\n onValueChange,\n disabled,\n roughness,\n seed,\n sketchColor,\n bowing,\n fillStyle,\n strokeWidth,\n hachureGap,\n hachureAngle,\n fillWeight,\n },\n ref,\n ) {\n const resolvedSeed = useResolvedSeed(seed);\n const theme = useSketchTheme(sketchColor);\n const ink = sketchColor ?? theme.ink;\n const [uncontrolled, setUncontrolled] = useState<\n string | string[] | undefined\n >(defaultValue ?? (type === \"multiple\" ? [] : undefined));\n const openValue = value ?? uncontrolled;\n\n const sketchValue: AccordionSketchContextValue = {\n roughness,\n seed: resolvedSeed,\n sketchColor: ink,\n bowing,\n fillStyle,\n strokeWidth,\n hachureGap,\n hachureAngle,\n fillWeight,\n resolvedSeed,\n ink,\n openValue,\n };\n\n function handleChange(next: string | string[]) {\n setUncontrolled(next);\n onValueChange?.(next);\n }\n\n const root =\n type === \"multiple\" ? (\n <AccordionPrimitive.Root\n ref={ref}\n type=\"multiple\"\n disabled={disabled}\n className={cn(className)}\n style={style}\n value={openValue as string[] | undefined}\n defaultValue={defaultValue as string[] | undefined}\n onValueChange={handleChange}\n >\n {children}\n </AccordionPrimitive.Root>\n ) : (\n <AccordionPrimitive.Root\n ref={ref}\n type=\"single\"\n collapsible={collapsible}\n disabled={disabled}\n className={cn(className)}\n style={style}\n value={openValue as string | undefined}\n defaultValue={defaultValue as string | undefined}\n onValueChange={handleChange}\n >\n {children}\n </AccordionPrimitive.Root>\n );\n\n return (\n <AccordionSketchContext.Provider value={sketchValue}>\n {root}\n </AccordionSketchContext.Provider>\n );\n },\n);\n\nexport interface AccordionItemProps\n extends Omit<\n ComponentPropsWithoutRef<typeof AccordionPrimitive.Item>,\n \"asChild\"\n > {}\n\nexport const AccordionItem = forwardRef<HTMLDivElement, AccordionItemProps>(\n function AccordionItem({ className, style, children, value, ...rest }, ref) {\n const sketch = useAccordionSketch();\n\n return (\n <AccordionItemContext.Provider value={value}>\n <AccordionPrimitive.Item\n ref={ref}\n value={value}\n className={cn(className)}\n style={{ position: \"relative\", ...style }}\n {...rest}\n >\n <div\n style={{\n position: \"absolute\",\n left: 0,\n right: 0,\n top: -6,\n height: 12,\n pointerEvents: \"none\",\n }}\n >\n <RoughSvg\n shape=\"line\"\n roughness={(sketch.roughness ?? 1.5) + 0.25}\n seed={deriveSeed(sketch.resolvedSeed, `div-${value}`)}\n sketchColor={sketch.ink}\n bowing={sketch.bowing ?? 1.8}\n strokeWidth={sketch.strokeWidth ?? 1.4}\n inset={2}\n />\n </div>\n {children}\n </AccordionPrimitive.Item>\n </AccordionItemContext.Provider>\n );\n },\n);\n\nexport interface AccordionTriggerProps\n extends Omit<\n ComponentPropsWithoutRef<typeof AccordionPrimitive.Trigger>,\n \"asChild\"\n > {\n children?: ReactNode;\n}\n\nexport const AccordionTrigger = forwardRef<\n HTMLButtonElement,\n AccordionTriggerProps\n>(function AccordionTrigger({ className, style, children, ...rest }, ref) {\n const sketch = useAccordionSketch();\n const itemValue = useContext(AccordionItemContext);\n const open = Array.isArray(sketch.openValue)\n ? sketch.openValue.includes(itemValue)\n : sketch.openValue === itemValue;\n\n return (\n <AccordionPrimitive.Header asChild>\n <h3 style={{ margin: 0 }}>\n <AccordionPrimitive.Trigger\n ref={ref}\n className={cn(className)}\n style={{\n display: \"flex\",\n width: \"100%\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n gap: 12,\n padding: \"12px 4px\",\n border: \"none\",\n background: \"transparent\",\n cursor: \"pointer\",\n fontFamily: doodleUiFontFamily,\n fontSize: 15,\n fontWeight: doodleUiFontWeight(600),\n color: sketch.ink,\n textAlign: \"left\",\n outline: \"none\",\n ...style,\n }}\n {...rest}\n >\n <span>{children}</span>\n <span\n style={{\n position: \"relative\",\n width: 18,\n height: 18,\n flexShrink: 0,\n transform: open ? \"rotate(90deg)\" : \"rotate(0deg)\",\n transition: \"transform 180ms ease\",\n }}\n >\n <RoughSvg\n shape=\"path\"\n path={CHEVRON_PATH}\n roughness={(sketch.roughness ?? 1.5) * 0.7}\n seed={deriveSeed(sketch.resolvedSeed, `chevron-${itemValue}`)}\n sketchColor={sketch.ink}\n bowing={sketch.bowing}\n strokeWidth={(sketch.strokeWidth ?? 1.6) + 0.2}\n inset={0}\n />\n </span>\n </AccordionPrimitive.Trigger>\n </h3>\n </AccordionPrimitive.Header>\n );\n});\n\nexport interface AccordionContentProps\n extends Omit<\n ComponentPropsWithoutRef<typeof AccordionPrimitive.Content>,\n \"asChild\"\n > {}\n\nexport const AccordionContent = forwardRef<\n HTMLDivElement,\n AccordionContentProps\n>(function AccordionContent({ className, style, children, ...rest }, ref) {\n const sketch = useAccordionSketch();\n return (\n <AccordionPrimitive.Content\n ref={ref}\n className={cn(className)}\n style={{\n padding: \"0 4px 14px\",\n fontFamily: doodleUiFontFamily,\n fontSize: 14,\n lineHeight: 1.5,\n color: sketch.ink,\n ...style,\n }}\n {...rest}\n >\n {children}\n </AccordionPrimitive.Content>\n );\n});\n","\"use client\";\n\nimport { forwardRef, type CSSProperties, type ReactNode } from \"react\";\nimport * as AvatarPrimitive from \"@radix-ui/react-avatar\";\nimport { useResolvedSeed } from \"../hooks/useResolvedSeed\";\nimport { useSketchTheme } from \"../hooks/useSketchTheme\";\nimport { RoughSvg } from \"../primitives/RoughSvg\";\nimport type { RoughShape, SketchProps } from \"../types\";\nimport { cn, deriveSeed, doodleUiFontFamily, doodleUiFontWeight } from \"../utils\";\n\nexport type AvatarStatus = \"online\" | \"offline\" | \"busy\";\nexport type AvatarShape = \"circle\" | \"square\";\n\nexport interface AvatarProps\n extends Omit<AvatarPrimitive.AvatarProps, \"asChild\">,\n SketchProps {\n src?: string;\n alt?: string;\n fallback?: ReactNode;\n size?: number;\n shape?: AvatarShape;\n status?: AvatarStatus;\n fill?: string;\n}\n\nexport const Avatar = forwardRef<HTMLSpanElement, AvatarProps>(\n function Avatar(\n {\n className,\n style,\n src,\n alt,\n fallback,\n size = 40,\n shape = \"circle\",\n status,\n fill,\n roughness,\n seed,\n sketchColor,\n bowing,\n fillStyle,\n strokeWidth,\n hachureGap,\n hachureAngle,\n fillWeight,\n ...rest\n },\n ref,\n ) {\n const theme = useSketchTheme(sketchColor);\n const ink = sketchColor ?? theme.ink;\n const resolvedSeed = useResolvedSeed(seed);\n const roughShape: RoughShape = shape === \"circle\" ? \"ellipse\" : \"rectangle\";\n const badge = 12;\n\n const statusColors: Record<AvatarStatus, string> = {\n online: theme.success,\n offline: theme.isDark ? \"#9ca3af\" : \"#8a8680\",\n busy: theme.accent,\n };\n\n const rootStyle: CSSProperties = {\n position: \"relative\",\n display: \"inline-flex\",\n width: size,\n height: size,\n flexShrink: 0,\n verticalAlign: \"middle\",\n ...style,\n };\n\n return (\n <AvatarPrimitive.Root\n ref={ref}\n className={cn(className)}\n style={rootStyle}\n {...rest}\n >\n <RoughSvg\n shape={roughShape}\n roughness={roughness}\n seed={resolvedSeed}\n sketchColor={ink}\n bowing={bowing}\n fillStyle={fillStyle ?? \"solid\"}\n fill={fill ?? theme.paper}\n strokeWidth={strokeWidth ?? 1.6}\n hachureGap={hachureGap}\n hachureAngle={hachureAngle}\n fillWeight={fillWeight}\n inset={1.5}\n />\n <span\n style={{\n position: \"absolute\",\n inset: 4,\n overflow: \"hidden\",\n borderRadius: shape === \"circle\" ? \"50%\" : 4,\n zIndex: 1,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n }}\n >\n {src ? (\n <AvatarPrimitive.Image\n src={src}\n alt={alt}\n style={{\n width: \"100%\",\n height: \"100%\",\n objectFit: \"cover\",\n }}\n />\n ) : null}\n <AvatarPrimitive.Fallback\n delayMs={src ? 400 : 0}\n style={{\n width: \"100%\",\n height: \"100%\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n fontFamily: doodleUiFontFamily,\n fontWeight: doodleUiFontWeight(650),\n fontSize: Math.max(12, size * 0.36),\n color: ink,\n background: theme.secondaryFill,\n }}\n >\n {fallback}\n </AvatarPrimitive.Fallback>\n </span>\n {status ? (\n <span\n style={{\n position: \"absolute\",\n width: badge,\n height: badge,\n right: -1,\n bottom: -1,\n zIndex: 2,\n }}\n >\n <RoughSvg\n shape=\"ellipse\"\n roughness={(roughness ?? 1.5) * 0.8}\n seed={deriveSeed(resolvedSeed, \"status\")}\n sketchColor={statusColors[status]}\n fill={statusColors[status]}\n fillStyle=\"solid\"\n bowing={bowing}\n strokeWidth={1}\n inset={0.5}\n />\n </span>\n ) : null}\n </AvatarPrimitive.Root>\n );\n },\n);\n","\"use client\";\n\nimport { forwardRef, type ComponentPropsWithoutRef } from \"react\";\nimport * as SliderPrimitive from \"@radix-ui/react-slider\";\nimport { useResolvedSeed } from \"../hooks/useResolvedSeed\";\nimport { useSketchTheme } from \"../hooks/useSketchTheme\";\nimport { RoughSvg } from \"../primitives/RoughSvg\";\nimport type { SketchProps } from \"../types\";\nimport { cn, deriveSeed } from \"../utils\";\n\nexport type SliderThumbShape = \"circle\" | \"square\";\n\nexport interface SliderProps\n extends Omit<\n ComponentPropsWithoutRef<typeof SliderPrimitive.Root>,\n \"asChild\"\n >,\n SketchProps {\n thumbShape?: SliderThumbShape;\n fill?: string;\n}\n\nexport const Slider = forwardRef<HTMLSpanElement, SliderProps>(function Slider(\n {\n className,\n style,\n fill,\n roughness,\n seed,\n sketchColor,\n bowing,\n fillStyle,\n strokeWidth,\n hachureGap,\n hachureAngle,\n fillWeight,\n thumbShape = \"circle\",\n ...rest\n },\n ref,\n) {\n const theme = useSketchTheme(sketchColor);\n const ink = sketchColor ?? theme.ink;\n const accent = sketchColor ?? theme.accent;\n const trackInk = sketchColor ?? (theme.isDark ? \"rgba(243, 244, 246, 0.4)\" : theme.ink);\n const resolvedSeed = useResolvedSeed(seed);\n\n return (\n <SliderPrimitive.Root\n ref={ref}\n className={cn(className)}\n style={{\n position: \"relative\",\n display: \"flex\",\n alignItems: \"center\",\n width: \"100%\",\n height: 28,\n userSelect: \"none\",\n touchAction: \"none\",\n color: ink,\n ...style,\n }}\n {...rest}\n >\n <SliderPrimitive.Track\n style={{\n position: \"relative\",\n flex: 1,\n height: 16,\n }}\n >\n <RoughSvg\n shape=\"line\"\n roughness={roughness ?? 1.8}\n seed={resolvedSeed}\n sketchColor={trackInk}\n bowing={bowing ?? 2}\n strokeWidth={strokeWidth ?? 1.6}\n inset={4}\n />\n <SliderPrimitive.Range\n style={{\n position: \"absolute\",\n left: 0,\n height: \"100%\",\n }}\n >\n <RoughSvg\n shape=\"line\"\n roughness={(roughness ?? 1.5) + 0.4}\n seed={deriveSeed(resolvedSeed, \"range\")}\n sketchColor={accent}\n bowing={bowing ?? 1.6}\n strokeWidth={(strokeWidth ?? 1.6) + 0.6}\n inset={4}\n />\n </SliderPrimitive.Range>\n </SliderPrimitive.Track>\n <SliderPrimitive.Thumb\n style={{\n display: \"block\",\n width: 20,\n height: 20,\n position: \"relative\",\n outline: \"none\",\n cursor: \"grab\",\n }}\n >\n <RoughSvg\n shape={thumbShape === \"square\" ? \"rectangle\" : \"ellipse\"}\n roughness={(roughness ?? 1.5) * 0.85}\n seed={deriveSeed(resolvedSeed, \"thumb\")}\n sketchColor={accent}\n fill={fill ?? theme.paper}\n fillStyle={fillStyle ?? \"solid\"}\n bowing={bowing}\n strokeWidth={(strokeWidth ?? 1.5) + 0.3}\n hachureGap={hachureGap}\n hachureAngle={hachureAngle}\n fillWeight={fillWeight}\n inset={1}\n />\n </SliderPrimitive.Thumb>\n </SliderPrimitive.Root>\n );\n});\n","\"use client\";\n\nimport { forwardRef, type ButtonHTMLAttributes, type HTMLAttributes } from \"react\";\nimport { useResolvedSeed } from \"../hooks/useResolvedSeed\";\nimport { useSketchTheme } from \"../hooks/useSketchTheme\";\nimport { RoughSvg } from \"../primitives/RoughSvg\";\nimport type { SketchProps } from \"../types\";\nimport { cn, deriveSeed, doodleUiFontFamily, doodleUiFontWeight } from \"../utils\";\n\nconst PREV_PATH = \"M 12 4 L 6 10 L 12 16\";\nconst NEXT_PATH = \"M 6 4 L 12 10 L 6 16\";\n\nfunction pageItems(page: number, count: number): Array<number | \"ellipsis\"> {\n if (count <= 7) {\n return Array.from({ length: count }, (_, i) => i + 1);\n }\n const items: Array<number | \"ellipsis\"> = [1];\n const start = Math.max(2, page - 1);\n const end = Math.min(count - 1, page + 1);\n if (start > 2) items.push(\"ellipsis\");\n for (let n = start; n <= end; n += 1) items.push(n);\n if (end < count - 1) items.push(\"ellipsis\");\n items.push(count);\n return items;\n}\n\nexport interface PaginationProps\n extends Omit<HTMLAttributes<HTMLElement>, \"color\" | \"onChange\">,\n SketchProps {\n page: number;\n count: number;\n onPageChange?: (page: number) => void;\n}\n\nexport const Pagination = forwardRef<HTMLElement, PaginationProps>(\n function Pagination(\n {\n className,\n style,\n page,\n count,\n onPageChange,\n roughness,\n seed,\n sketchColor,\n bowing,\n strokeWidth,\n ...rest\n },\n ref,\n ) {\n const theme = useSketchTheme(sketchColor);\n const ink = sketchColor ?? theme.ink;\n const accent = sketchColor ?? theme.accent;\n const accentFill = theme.isDark\n ? (sketchColor ? `${sketchColor}25` : theme.accentFill)\n : theme.accentFill;\n const resolvedSeed = useResolvedSeed(seed);\n const items = pageItems(page, count);\n\n return (\n <nav\n ref={ref}\n className={cn(className)}\n aria-label=\"Pagination\"\n style={{\n display: \"inline-flex\",\n alignItems: \"center\",\n gap: 4,\n color: ink,\n ...style,\n }}\n {...rest}\n >\n <PageButton\n aria-label=\"Previous page\"\n disabled={page <= 1}\n onClick={() => onPageChange?.(Math.max(1, page - 1))}\n roughness={roughness}\n seed={deriveSeed(resolvedSeed, \"prev\")}\n ink={ink}\n accent={accent}\n accentFill={accentFill}\n isDark={theme.isDark}\n bowing={bowing}\n strokeWidth={strokeWidth}\n >\n <span style={{ position: \"relative\", width: 16, height: 16, display: \"block\" }}>\n <RoughSvg\n shape=\"path\"\n path={PREV_PATH}\n roughness={(roughness ?? 1.5) * 0.7}\n seed={deriveSeed(resolvedSeed, \"prev-arrow\")}\n sketchColor={ink}\n strokeWidth={(strokeWidth ?? 1.5) + 0.2}\n inset={0}\n />\n </span>\n </PageButton>\n {items.map((item, index) =>\n item === \"ellipsis\" ? (\n <span\n key={`e-${index}`}\n style={{\n width: 28,\n textAlign: \"center\",\n fontFamily: doodleUiFontFamily,\n color: ink,\n }}\n >\n …\n </span>\n ) : (\n <PageButton\n key={item}\n aria-label={`Page ${item}`}\n aria-current={item === page ? \"page\" : undefined}\n active={item === page}\n onClick={() => onPageChange?.(item)}\n roughness={roughness}\n seed={deriveSeed(resolvedSeed, `page-${item}`)}\n ink={ink}\n accent={accent}\n accentFill={accentFill}\n isDark={theme.isDark}\n bowing={bowing}\n strokeWidth={strokeWidth}\n >\n {item}\n </PageButton>\n ),\n )}\n <PageButton\n aria-label=\"Next page\"\n disabled={page >= count}\n onClick={() => onPageChange?.(Math.min(count, page + 1))}\n roughness={roughness}\n seed={deriveSeed(resolvedSeed, \"next\")}\n ink={ink}\n accent={accent}\n accentFill={accentFill}\n isDark={theme.isDark}\n bowing={bowing}\n strokeWidth={strokeWidth}\n >\n <span style={{ position: \"relative\", width: 16, height: 16, display: \"block\" }}>\n <RoughSvg\n shape=\"path\"\n path={NEXT_PATH}\n roughness={(roughness ?? 1.5) * 0.7}\n seed={deriveSeed(resolvedSeed, \"next-arrow\")}\n sketchColor={ink}\n strokeWidth={(strokeWidth ?? 1.5) + 0.2}\n inset={0}\n />\n </span>\n </PageButton>\n </nav>\n );\n },\n);\n\ninterface PageButtonProps\n extends Omit<ButtonHTMLAttributes<HTMLButtonElement>, \"color\"> {\n active?: boolean;\n roughness?: number;\n seed?: number;\n ink: string;\n accent?: string;\n accentFill?: string;\n isDark?: boolean;\n bowing?: number;\n strokeWidth?: number;\n}\n\nfunction PageButton({\n children,\n className,\n style,\n active,\n disabled,\n roughness,\n seed,\n ink,\n accent,\n accentFill,\n isDark,\n bowing,\n strokeWidth,\n ...rest\n}: PageButtonProps) {\n const activeColor = accent ?? ink;\n const textColor = active ? (isDark ? \"#ffffff\" : activeColor) : ink;\n\n return (\n <button\n type=\"button\"\n disabled={disabled}\n className={cn(className)}\n style={{\n position: \"relative\",\n width: 36,\n height: 36,\n padding: 0,\n border: \"none\",\n background: \"transparent\",\n cursor: disabled ? \"not-allowed\" : \"pointer\",\n color: textColor,\n fontFamily: doodleUiFontFamily,\n fontWeight: active ? doodleUiFontWeight(700) : doodleUiFontWeight(400),\n fontSize: 14,\n outline: \"none\",\n opacity: disabled ? 0.4 : 1,\n ...style,\n }}\n {...rest}\n >\n <RoughSvg\n shape=\"ellipse\"\n roughness={roughness}\n seed={seed}\n sketchColor={active ? activeColor : ink}\n bowing={bowing}\n fill={active ? accentFill : undefined}\n fillStyle={active ? \"hachure\" : undefined}\n strokeWidth={active ? (strokeWidth ?? 1.6) + 0.3 : strokeWidth ?? 1.4}\n inset={1.5}\n />\n {active ? (\n <RoughSvg\n shape=\"ellipse\"\n roughness={(roughness ?? 1.5) + 0.45}\n seed={seed}\n sketchColor={activeColor}\n bowing={bowing ?? 1.6}\n strokeWidth={1.1}\n inset={-1.5}\n style={{ opacity: 0.7 }}\n />\n ) : null}\n <span style={{ position: \"relative\", zIndex: 1 }}>{children}</span>\n </button>\n );\n}\n","\"use client\";\n\nimport {\n Children,\n cloneElement,\n createContext,\n forwardRef,\n isValidElement,\n useContext,\n type HTMLAttributes,\n type ReactElement,\n type ReactNode,\n} from \"react\";\nimport { RoughSvg } from \"../primitives/RoughSvg\";\nimport type { SketchProps } from \"../types\";\nimport { cn, doodleUiFontFamily } from \"../utils\";\nimport { useResolvedSeed } from \"../hooks/useResolvedSeed\";\nimport { useSketchTheme } from \"../hooks/useSketchTheme\";\nimport { deriveSeed } from \"../utils\";\n\nconst SLASH_PATH = \"M 10 3 L 6 15\";\nconst CHEVRON_PATH = \"M 5 4 L 11 9 L 5 14\";\n\nexport type BreadcrumbSeparator = \"slash\" | \"chevron\";\n\ninterface BreadcrumbSketchContextValue extends SketchProps {\n resolvedSeed: number;\n ink: string;\n separator: BreadcrumbSeparator;\n}\n\nconst BreadcrumbSketchContext =\n createContext<BreadcrumbSketchContextValue | null>(null);\n\nfunction useBreadcrumbSketch(): BreadcrumbSketchContextValue {\n const ctx = useContext(BreadcrumbSketchContext);\n if (!ctx) {\n throw new Error(\"BreadcrumbItem must be used inside <Breadcrumb>.\");\n }\n return ctx;\n}\n\nexport interface BreadcrumbProps\n extends Omit<HTMLAttributes<HTMLElement>, \"color\">,\n SketchProps {\n separator?: BreadcrumbSeparator;\n children?: ReactNode;\n}\n\nexport const Breadcrumb = forwardRef<HTMLElement, BreadcrumbProps>(\n function Breadcrumb(\n {\n className,\n style,\n children,\n separator = \"slash\",\n roughness,\n seed,\n sketchColor,\n bowing,\n strokeWidth,\n hachureGap,\n hachureAngle,\n fillWeight,\n ...rest\n },\n ref,\n ) {\n const theme = useSketchTheme(sketchColor);\n const ink = sketchColor ?? theme.ink;\n const resolvedSeed = useResolvedSeed(seed);\n const items = Children.toArray(children).filter(isValidElement);\n\n return (\n <BreadcrumbSketchContext.Provider\n value={{\n roughness,\n seed: resolvedSeed,\n sketchColor: ink,\n bowing,\n strokeWidth,\n hachureGap,\n hachureAngle,\n fillWeight,\n resolvedSeed,\n ink,\n separator,\n }}\n >\n <nav\n ref={ref}\n className={cn(className)}\n aria-label=\"Breadcrumb\"\n style={style}\n {...rest}\n >\n <ol\n style={{\n display: \"flex\",\n flexWrap: \"wrap\",\n alignItems: \"center\",\n gap: 4,\n listStyle: \"none\",\n margin: 0,\n padding: 0,\n fontFamily: doodleUiFontFamily,\n color: ink,\n fontSize: 14,\n }}\n >\n {items.map((child, index) => (\n <li\n key={index}\n style={{ display: \"inline-flex\", alignItems: \"center\", gap: 4 }}\n >\n {cloneElement(child as ReactElement<{ index?: number }>, {\n index,\n })}\n {index < items.length - 1 ? (\n <SeparatorMark\n index={index}\n separator={separator}\n resolvedSeed={resolvedSeed}\n roughness={roughness}\n ink={ink}\n bowing={bowing}\n strokeWidth={strokeWidth}\n />\n ) : null}\n </li>\n ))}\n </ol>\n </nav>\n </BreadcrumbSketchContext.Provider>\n );\n },\n);\n\nfunction SeparatorMark({\n index,\n separator,\n resolvedSeed,\n roughness,\n ink,\n bowing,\n strokeWidth,\n}: {\n index: number;\n separator: BreadcrumbSeparator;\n resolvedSeed: number;\n roughness?: number;\n ink: string;\n bowing?: number;\n strokeWidth?: number;\n}) {\n return (\n <span\n aria-hidden=\"true\"\n style={{ position: \"relative\", width: 16, height: 18, display: \"inline-block\" }}\n >\n <RoughSvg\n shape=\"path\"\n path={separator === \"chevron\" ? CHEVRON_PATH : SLASH_PATH}\n roughness={(roughness ?? 1.5) * 0.85}\n seed={deriveSeed(resolvedSeed, `sep-${index}`)}\n sketchColor={ink}\n bowing={bowing ?? 1.6}\n strokeWidth={strokeWidth ?? 1.4}\n inset={0}\n />\n </span>\n );\n}\n\nexport interface BreadcrumbItemProps\n extends Omit<HTMLAttributes<HTMLSpanElement>, \"color\"> {\n href?: string;\n current?: boolean;\n index?: number;\n children?: ReactNode;\n}\n\nexport const BreadcrumbItem = forwardRef<HTMLSpanElement, BreadcrumbItemProps>(\n function BreadcrumbItem(\n { className, style, href, current, children, index: _index, ...rest },\n ref,\n ) {\n const sketch = useBreadcrumbSketch();\n const contentStyle = {\n color: current ? sketch.ink : sketch.ink,\n opacity: current ? 1 : 0.75,\n textDecoration: \"none\",\n fontFamily: doodleUiFontFamily,\n ...style,\n };\n\n if (href && !current) {\n return (\n <a\n href={href}\n className={cn(className)}\n style={contentStyle}\n {...rest}\n >\n {children}\n </a>\n );\n }\n\n return (\n <span\n ref={ref}\n className={cn(className)}\n aria-current={current ? \"page\" : undefined}\n style={contentStyle}\n {...rest}\n >\n {children}\n </span>\n );\n },\n);\n","\"use client\";\n\nimport { forwardRef, useEffect, useState, type HTMLAttributes } from \"react\";\nimport { RoughSvg } from \"../primitives/RoughSvg\";\nimport type { RoughShape, SketchProps } from \"../types\";\nimport { cn } from \"../utils\";\nimport { useResolvedSeed } from \"../hooks/useResolvedSeed\";\nimport { useSketchTheme } from \"../hooks/useSketchTheme\";\nimport { deriveSeed } from \"../utils\";\n\nexport type SkeletonVariant = \"text\" | \"rect\" | \"circle\";\n\nexport interface SkeletonProps\n extends Omit<HTMLAttributes<HTMLDivElement>, \"color\">,\n SketchProps {\n variant?: SkeletonVariant;\n pulse?: boolean;\n width?: number | string;\n height?: number | string;\n}\n\nexport const Skeleton = forwardRef<HTMLDivElement, SkeletonProps>(\n function Skeleton(\n {\n className,\n style,\n variant = \"rect\",\n pulse = true,\n width,\n height,\n roughness,\n seed,\n sketchColor,\n bowing,\n fillStyle,\n strokeWidth,\n hachureGap,\n hachureAngle,\n fillWeight,\n ...rest\n },\n ref,\n ) {\n const base = useResolvedSeed(seed);\n const [tick, setTick] = useState(0);\n const theme = useSketchTheme(sketchColor);\n const ink = sketchColor ?? theme.ink;\n\n useEffect(() => {\n if (!pulse) return;\n const id = window.setInterval(() => {\n setTick((current) => current + 1);\n }, 900);\n return () => window.clearInterval(id);\n }, [pulse]);\n\n const resolved = pulse ? deriveSeed(base, `pulse-${tick}`) : base;\n const shape: RoughShape = variant === \"circle\" ? \"ellipse\" : \"rectangle\";\n const defaultHeight = variant === \"text\" ? 14 : variant === \"circle\" ? 40 : 80;\n const defaultWidth = variant === \"circle\" ? 40 : \"100%\";\n\n return (\n <div\n ref={ref}\n aria-hidden=\"true\"\n className={cn(className)}\n style={{\n position: \"relative\",\n width: width ?? defaultWidth,\n height: height ?? defaultHeight,\n maxWidth: \"100%\",\n ...style,\n }}\n {...rest}\n >\n <RoughSvg\n shape={shape}\n roughness={(roughness ?? 1.5) + 0.4}\n seed={resolved}\n sketchColor={ink}\n fill={ink}\n fillStyle={fillStyle ?? \"hachure\"}\n bowing={bowing ?? 1.6}\n strokeWidth={strokeWidth ?? 1.1}\n hachureGap={hachureGap}\n hachureAngle={hachureAngle}\n fillWeight={fillWeight}\n inset={2}\n style={{ opacity: 0.28 }}\n />\n </div>\n );\n },\n);\n","\"use client\";\n\nimport { forwardRef, type HTMLAttributes, type ReactNode } from \"react\";\nimport { useResolvedSeed } from \"../hooks/useResolvedSeed\";\nimport { useSketchTheme } from \"../hooks/useSketchTheme\";\nimport { RoughSvg } from \"../primitives/RoughSvg\";\nimport type { SketchProps } from \"../types\";\nimport { cn, deriveSeed, doodleUiFontFamily, doodleUiFontWeight } from \"../utils\";\n\nexport type StepperOrientation = \"horizontal\" | \"vertical\";\n\nexport interface StepperStep {\n label: ReactNode;\n description?: ReactNode;\n}\n\nexport interface StepperProps\n extends Omit<HTMLAttributes<HTMLDivElement>, \"color\">,\n SketchProps {\n steps: Array<StepperStep | ReactNode>;\n current?: number;\n orientation?: StepperOrientation;\n fill?: string;\n}\n\nfunction normalizeSteps(steps: Array<StepperStep | ReactNode>): StepperStep[] {\n return steps.map((step) =>\n step !== null && typeof step === \"object\" && \"label\" in step\n ? (step as StepperStep)\n : { label: step },\n );\n}\n\nexport const Stepper = forwardRef<HTMLDivElement, StepperProps>(\n function Stepper(\n {\n className,\n style,\n steps,\n current = 0,\n orientation = \"horizontal\",\n fill,\n roughness,\n seed,\n sketchColor,\n bowing,\n fillStyle,\n strokeWidth,\n hachureGap,\n hachureAngle,\n fillWeight,\n ...rest\n },\n ref,\n ) {\n const theme = useSketchTheme(sketchColor);\n const ink = sketchColor ?? theme.ink;\n const accent = sketchColor ?? theme.accent;\n const resolvedSeed = useResolvedSeed(seed);\n const items = normalizeSteps(steps);\n const horizontal = orientation === \"horizontal\";\n\n return (\n <div\n ref={ref}\n role=\"list\"\n className={cn(className)}\n style={{\n display: \"flex\",\n flexDirection: horizontal ? \"row\" : \"column\",\n alignItems: horizontal ? \"flex-start\" : \"stretch\",\n color: ink,\n ...style,\n }}\n {...rest}\n >\n {items.map((step, index) => {\n const complete = index < current;\n const active = index === current;\n const markerColor = complete || active ? accent : ink;\n const completeFill = theme.isDark\n ? (sketchColor ? `${sketchColor}25` : theme.accentFill)\n : theme.accentFill;\n\n return (\n <div\n key={index}\n role=\"listitem\"\n aria-current={active ? \"step\" : undefined}\n style={{\n display: \"flex\",\n flex: horizontal ? 1 : undefined,\n flexDirection: horizontal ? \"column\" : \"row\",\n alignItems: horizontal ? \"center\" : \"flex-start\",\n minWidth: 0,\n }}\n >\n <div\n style={{\n display: \"flex\",\n flexDirection: horizontal ? \"row\" : \"column\",\n alignItems: \"center\",\n width: horizontal ? \"100%\" : undefined,\n }}\n >\n <span\n style={{\n position: \"relative\",\n width: 28,\n height: 28,\n flexShrink: 0,\n display: \"inline-flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n fontFamily: doodleUiFontFamily,\n fontWeight: doodleUiFontWeight(700),\n fontSize: 13,\n color: markerColor,\n }}\n >\n <RoughSvg\n shape=\"ellipse\"\n roughness={roughness}\n seed={deriveSeed(resolvedSeed, `step-${index}`)}\n sketchColor={markerColor}\n fill={\n complete\n ? completeFill\n : active\n ? (fill ?? theme.paper)\n : undefined\n }\n fillStyle={\n complete || active ? fillStyle ?? \"hachure\" : undefined\n }\n bowing={bowing}\n strokeWidth={\n active\n ? (strokeWidth ?? 1.6) + 0.4\n : strokeWidth ?? 1.5\n }\n hachureGap={hachureGap}\n hachureAngle={hachureAngle}\n fillWeight={fillWeight}\n inset={1.5}\n />\n <span style={{ position: \"relative\", zIndex: 1 }}>\n {complete ? \"✓\" : index + 1}\n </span>\n </span>\n {index < items.length - 1 ? (\n <span\n style={{\n position: \"relative\",\n flex: 1,\n width: horizontal ? undefined : 12,\n height: horizontal ? 12 : 28,\n minWidth: horizontal ? 16 : 12,\n alignSelf: \"center\",\n }}\n >\n <RoughSvg\n shape={horizontal ? \"line\" : \"line-vertical\"}\n roughness={(roughness ?? 1.5) + 0.3}\n seed={deriveSeed(resolvedSeed, `connector-${index}`)}\n sketchColor={\n complete\n ? accent\n : theme.isDark\n ? \"rgba(243, 244, 246, 0.35)\"\n : ink\n }\n bowing={bowing ?? 2}\n strokeWidth={strokeWidth ?? 1.4}\n inset={2}\n />\n </span>\n ) : null}\n </div>\n <div\n style={{\n marginTop: horizontal ? 8 : 0,\n marginLeft: horizontal ? 0 : 10,\n paddingBottom: horizontal ? 0 : 8,\n textAlign: horizontal ? \"center\" : \"left\",\n fontFamily: doodleUiFontFamily,\n fontSize: 13,\n color: ink,\n }}\n >\n <div style={{ fontWeight: doodleUiFontWeight(600) }}>\n {step.label}\n </div>\n {step.description ? (\n <div style={{ opacity: 0.7, fontSize: 12, marginTop: 2 }}>\n {step.description}\n </div>\n ) : null}\n </div>\n </div>\n );\n })}\n </div>\n );\n },\n);\n","\"use client\";\n\nimport { forwardRef, useRef, type ReactNode } from \"react\";\nimport * as LabelPrimitive from \"@radix-ui/react-label\";\nimport { DRAW_IN_MARK_MS, useAnimate, useDrawIn } from \"../animations\";\nimport { useResolvedSeed } from \"../hooks/useResolvedSeed\";\nimport { useSketchTheme } from \"../hooks/useSketchTheme\";\nimport { RoughSvg } from \"../primitives/RoughSvg\";\nimport type { SketchProps } from \"../types\";\nimport { cn, doodleUiFontFamily, doodleUiFontWeight } from \"../utils\";\n\nexport interface LabelProps\n extends Omit<LabelPrimitive.LabelProps, \"asChild\" | \"color\">,\n SketchProps {\n children?: ReactNode;\n /** Adds a small hand-drawn required mark after the text. */\n required?: boolean;\n /**\n * Draw-in the required mark on mount.\n * Defaults to the DoodleUIProvider value (true).\n */\n animate?: boolean;\n}\n\n/**\n * Thin, mostly-typographic wrapper around Radix Label. Ties a caption to a\n * form field via `htmlFor` for accessibility. The only sketch chrome is a\n * small drawn mark next to the text when `required` is set.\n */\nexport const Label = forwardRef<HTMLLabelElement, LabelProps>(function Label(\n {\n className,\n style,\n children,\n required,\n roughness,\n seed,\n sketchColor,\n bowing,\n strokeWidth,\n hachureGap,\n hachureAngle,\n fillWeight,\n animate,\n ...rest\n },\n ref,\n) {\n const theme = useSketchTheme(sketchColor);\n const ink = sketchColor ?? theme.ink;\n const resolvedSeed = useResolvedSeed(seed);\n const shouldAnimate = useAnimate(animate);\n const markRef = useRef<HTMLSpanElement>(null);\n useDrawIn(markRef, DRAW_IN_MARK_MS, shouldAnimate);\n\n return (\n <LabelPrimitive.Root\n ref={ref}\n className={cn(className)}\n style={{\n display: \"inline-flex\",\n alignItems: \"center\",\n gap: 4,\n fontFamily: doodleUiFontFamily,\n fontSize: 13,\n fontWeight: doodleUiFontWeight(600),\n color: ink,\n cursor: \"default\",\n ...style,\n }}\n {...rest}\n >\n {children}\n {required ? (\n <span\n ref={markRef}\n aria-hidden=\"true\"\n style={{ position: \"relative\", width: 10, height: 10, flexShrink: 0 }}\n >\n <RoughSvg\n shape=\"ellipse\"\n roughness={(roughness ?? 1.5) * 0.9}\n seed={resolvedSeed}\n sketchColor={theme.accent}\n bowing={bowing}\n fillStyle=\"solid\"\n fill={theme.accent}\n strokeWidth={strokeWidth ?? 1.2}\n hachureGap={hachureGap}\n hachureAngle={hachureAngle}\n fillWeight={fillWeight}\n inset={1}\n />\n </span>\n ) : null}\n </LabelPrimitive.Root>\n );\n});\n","\"use client\";\n\nimport {\n createContext,\n forwardRef,\n useContext,\n useState,\n type ComponentPropsWithoutRef,\n type ReactNode,\n} from \"react\";\nimport * as CollapsiblePrimitive from \"@radix-ui/react-collapsible\";\nimport { RoughSvg } from \"../primitives/RoughSvg\";\nimport type { SketchProps } from \"../types\";\nimport { cn, doodleUiFontFamily, doodleUiFontWeight } from \"../utils\";\nimport { useResolvedSeed } from \"../hooks/useResolvedSeed\";\nimport { useSketchTheme } from \"../hooks/useSketchTheme\";\n\nconst CHEVRON_PATH = \"M 6 4 L 12 10 L 6 16\";\n\ninterface CollapsibleSketchContextValue extends SketchProps {\n resolvedSeed: number;\n ink: string;\n open: boolean;\n}\n\nconst CollapsibleSketchContext =\n createContext<CollapsibleSketchContextValue | null>(null);\n\nfunction useCollapsibleSketch(): CollapsibleSketchContextValue {\n const ctx = useContext(CollapsibleSketchContext);\n if (!ctx) {\n throw new Error(\n \"Collapsible parts must be used inside <Collapsible>.\",\n );\n }\n return ctx;\n}\n\nexport interface CollapsibleProps\n extends Omit<CollapsiblePrimitive.CollapsibleProps, \"asChild\">,\n SketchProps {\n children?: ReactNode;\n}\n\nexport const Collapsible = forwardRef<HTMLDivElement, CollapsibleProps>(\n function Collapsible(\n {\n className,\n style,\n children,\n open,\n defaultOpen,\n onOpenChange,\n disabled,\n roughness,\n seed,\n sketchColor,\n bowing,\n fillStyle,\n strokeWidth,\n hachureGap,\n hachureAngle,\n fillWeight,\n ...rest\n },\n ref,\n ) {\n const resolvedSeed = useResolvedSeed(seed);\n const theme = useSketchTheme(sketchColor);\n const ink = sketchColor ?? theme.ink;\n const [uncontrolled, setUncontrolled] = useState(defaultOpen ?? false);\n const isOpen = open ?? uncontrolled;\n\n return (\n <CollapsibleSketchContext.Provider\n value={{\n roughness,\n seed: resolvedSeed,\n sketchColor: ink,\n bowing,\n fillStyle,\n strokeWidth,\n hachureGap,\n hachureAngle,\n fillWeight,\n resolvedSeed,\n ink,\n open: isOpen,\n }}\n >\n <CollapsiblePrimitive.Root\n ref={ref}\n open={isOpen}\n disabled={disabled}\n className={cn(className)}\n style={style}\n onOpenChange={(next) => {\n setUncontrolled(next);\n onOpenChange?.(next);\n }}\n {...rest}\n >\n {children}\n </CollapsiblePrimitive.Root>\n </CollapsibleSketchContext.Provider>\n );\n },\n);\n\nexport interface CollapsibleTriggerProps\n extends Omit<\n ComponentPropsWithoutRef<typeof CollapsiblePrimitive.Trigger>,\n \"asChild\"\n > {\n children?: ReactNode;\n}\n\nexport const CollapsibleTrigger = forwardRef<\n HTMLButtonElement,\n CollapsibleTriggerProps\n>(function CollapsibleTrigger({ className, style, children, ...rest }, ref) {\n const sketch = useCollapsibleSketch();\n\n return (\n <CollapsiblePrimitive.Trigger\n ref={ref}\n className={cn(className)}\n style={{\n display: \"flex\",\n width: \"100%\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n gap: 12,\n padding: \"10px 4px\",\n border: \"none\",\n background: \"transparent\",\n cursor: \"pointer\",\n fontFamily: doodleUiFontFamily,\n fontSize: 15,\n fontWeight: doodleUiFontWeight(600),\n color: sketch.ink,\n textAlign: \"left\",\n outline: \"none\",\n ...style,\n }}\n {...rest}\n >\n <span>{children}</span>\n <span\n style={{\n position: \"relative\",\n width: 18,\n height: 18,\n flexShrink: 0,\n transform: sketch.open ? \"rotate(90deg)\" : \"rotate(0deg)\",\n transition: \"transform 180ms ease\",\n }}\n >\n <RoughSvg\n shape=\"path\"\n path={CHEVRON_PATH}\n roughness={(sketch.roughness ?? 1.5) * 0.7}\n seed={sketch.resolvedSeed}\n sketchColor={sketch.ink}\n bowing={sketch.bowing}\n strokeWidth={(sketch.strokeWidth ?? 1.6) + 0.2}\n inset={0}\n />\n </span>\n </CollapsiblePrimitive.Trigger>\n );\n});\n\nexport interface CollapsibleContentProps\n extends Omit<\n ComponentPropsWithoutRef<typeof CollapsiblePrimitive.Content>,\n \"asChild\"\n > {}\n\nexport const CollapsibleContent = forwardRef<\n HTMLDivElement,\n CollapsibleContentProps\n>(function CollapsibleContent({ className, style, children, ...rest }, ref) {\n const sketch = useCollapsibleSketch();\n return (\n <CollapsiblePrimitive.Content\n ref={ref}\n className={cn(className)}\n style={{\n padding: \"0 4px 12px\",\n fontFamily: doodleUiFontFamily,\n fontSize: 14,\n lineHeight: 1.5,\n color: sketch.ink,\n ...style,\n }}\n {...rest}\n >\n {children}\n </CollapsiblePrimitive.Content>\n );\n});\n","\"use client\";\n\nimport {\n createContext,\n forwardRef,\n useContext,\n type ComponentPropsWithoutRef,\n type ReactNode,\n} from \"react\";\nimport * as PopoverPrimitive from \"@radix-ui/react-popover\";\nimport { useResolvedSeed } from \"../hooks/useResolvedSeed\";\nimport { useSketchTheme } from \"../hooks/useSketchTheme\";\nimport { SketchBox } from \"../primitives/SketchBox\";\nimport type { SketchProps } from \"../types\";\nimport { cn } from \"../utils\";\n\ninterface PopoverSketchContextValue extends SketchProps {\n resolvedSeed: number;\n ink: string;\n paper: string;\n animate?: boolean;\n}\n\nconst PopoverSketchContext = createContext<PopoverSketchContextValue | null>(\n null,\n);\n\nfunction usePopoverSketch(): PopoverSketchContextValue {\n const ctx = useContext(PopoverSketchContext);\n if (!ctx) {\n throw new Error(\"Popover parts must be used inside <Popover>.\");\n }\n return ctx;\n}\n\nexport interface PopoverProps\n extends Omit<PopoverPrimitive.PopoverProps, \"children\">,\n SketchProps {\n children?: ReactNode;\n fill?: string;\n /**\n * Draw-in the panel border when the popover opens.\n * Defaults to the DoodleUIProvider value (true).\n */\n animate?: boolean;\n}\n\nexport function Popover({\n children,\n fill,\n roughness,\n seed,\n sketchColor,\n bowing,\n fillStyle,\n strokeWidth,\n hachureGap,\n hachureAngle,\n fillWeight,\n animate,\n ...rest\n}: PopoverProps) {\n const resolvedSeed = useResolvedSeed(seed);\n const theme = useSketchTheme(sketchColor);\n const ink = sketchColor ?? theme.ink;\n\n return (\n <PopoverSketchContext.Provider\n value={{\n roughness,\n seed: resolvedSeed,\n sketchColor,\n bowing,\n fillStyle,\n strokeWidth,\n hachureGap,\n hachureAngle,\n fillWeight,\n resolvedSeed,\n ink,\n paper: fill ?? theme.paper,\n animate,\n }}\n >\n <PopoverPrimitive.Root {...rest}>{children}</PopoverPrimitive.Root>\n </PopoverSketchContext.Provider>\n );\n}\n\nexport const PopoverTrigger = PopoverPrimitive.Trigger;\nexport const PopoverAnchor = PopoverPrimitive.Anchor;\nexport const PopoverClose = PopoverPrimitive.Close;\n\nexport interface PopoverContentProps\n extends Omit<PopoverPrimitive.PopoverContentProps, \"asChild\"> {\n children?: ReactNode;\n fill?: string;\n}\n\nexport const PopoverContent = forwardRef<HTMLDivElement, PopoverContentProps>(\n function PopoverContent(\n { className, style, children, fill, sideOffset = 8, ...rest },\n ref,\n ) {\n const sketch = usePopoverSketch();\n\n return (\n <PopoverPrimitive.Portal>\n <PopoverPrimitive.Content\n ref={ref}\n sideOffset={sideOffset}\n className={cn(className)}\n style={{ zIndex: 80, outline: \"none\", color: sketch.ink, ...style }}\n {...rest}\n >\n <SketchBox\n roughness={sketch.roughness}\n seed={sketch.resolvedSeed}\n sketchColor={sketch.ink}\n bowing={sketch.bowing}\n fillStyle={sketch.fillStyle ?? \"solid\"}\n fill={fill ?? sketch.paper}\n strokeWidth={sketch.strokeWidth ?? 1.5}\n hachureGap={sketch.hachureGap}\n hachureAngle={sketch.hachureAngle}\n fillWeight={sketch.fillWeight}\n shadow\n animate={sketch.animate}\n contentStyle={{ padding: \"14px 16px\", minWidth: 200, color: sketch.ink }}\n >\n {children}\n </SketchBox>\n </PopoverPrimitive.Content>\n </PopoverPrimitive.Portal>\n );\n },\n);\n\nexport function PopoverArrow(\n props: ComponentPropsWithoutRef<typeof PopoverPrimitive.Arrow>,\n) {\n return <PopoverPrimitive.Arrow {...props} />;\n}\n","\"use client\";\n\nimport {\n createContext,\n forwardRef,\n useContext,\n useState,\n type ReactNode,\n} from \"react\";\nimport * as DropdownMenuPrimitive from \"@radix-ui/react-dropdown-menu\";\nimport { useResolvedSeed } from \"../hooks/useResolvedSeed\";\nimport { useSketchTheme } from \"../hooks/useSketchTheme\";\nimport { RoughSvg } from \"../primitives/RoughSvg\";\nimport { SketchBox } from \"../primitives/SketchBox\";\nimport type { SketchProps } from \"../types\";\nimport { cn, deriveSeed, doodleUiFontFamily } from \"../utils\";\n\ninterface DropdownMenuSketchContextValue extends SketchProps {\n resolvedSeed: number;\n ink: string;\n paper: string;\n accent: string;\n animate?: boolean;\n}\n\nconst DropdownMenuSketchContext =\n createContext<DropdownMenuSketchContextValue | null>(null);\n\nfunction useDropdownMenuSketch(): DropdownMenuSketchContextValue {\n const ctx = useContext(DropdownMenuSketchContext);\n if (!ctx) {\n throw new Error(\n \"DropdownMenu parts must be used inside <DropdownMenu>.\",\n );\n }\n return ctx;\n}\n\nexport interface DropdownMenuProps\n extends Omit<DropdownMenuPrimitive.DropdownMenuProps, \"children\">,\n SketchProps {\n children?: ReactNode;\n fill?: string;\n /**\n * Draw-in the panel border when the menu opens.\n * Defaults to the DoodleUIProvider value (true).\n */\n animate?: boolean;\n}\n\nexport function DropdownMenu({\n children,\n fill,\n roughness,\n seed,\n sketchColor,\n bowing,\n fillStyle,\n strokeWidth,\n hachureGap,\n hachureAngle,\n fillWeight,\n animate,\n ...rest\n}: DropdownMenuProps) {\n const resolvedSeed = useResolvedSeed(seed);\n const theme = useSketchTheme(sketchColor);\n const ink = sketchColor ?? theme.ink;\n\n return (\n <DropdownMenuSketchContext.Provider\n value={{\n roughness,\n seed: resolvedSeed,\n sketchColor,\n bowing,\n fillStyle,\n strokeWidth,\n hachureGap,\n hachureAngle,\n fillWeight,\n resolvedSeed,\n ink,\n paper: fill ?? theme.paper,\n accent: theme.accent,\n animate,\n }}\n >\n <DropdownMenuPrimitive.Root {...rest}>\n {children}\n </DropdownMenuPrimitive.Root>\n </DropdownMenuSketchContext.Provider>\n );\n}\n\nexport const DropdownMenuTrigger = DropdownMenuPrimitive.Trigger;\nexport const DropdownMenuGroup = DropdownMenuPrimitive.Group;\nexport const DropdownMenuRadioGroup = DropdownMenuPrimitive.RadioGroup;\nexport const DropdownMenuSub = DropdownMenuPrimitive.Sub;\n\nexport interface DropdownMenuContentProps\n extends Omit<DropdownMenuPrimitive.DropdownMenuContentProps, \"asChild\"> {\n children?: ReactNode;\n fill?: string;\n}\n\nexport const DropdownMenuContent = forwardRef<\n HTMLDivElement,\n DropdownMenuContentProps\n>(function DropdownMenuContent(\n { className, style, children, fill, sideOffset = 6, align = \"start\", ...rest },\n ref,\n) {\n const sketch = useDropdownMenuSketch();\n\n return (\n <DropdownMenuPrimitive.Portal>\n <DropdownMenuPrimitive.Content\n ref={ref}\n sideOffset={sideOffset}\n align={align}\n className={cn(className)}\n style={{ zIndex: 80, outline: \"none\", minWidth: 180, color: sketch.ink, ...style }}\n {...rest}\n >\n <SketchBox\n roughness={sketch.roughness}\n seed={sketch.resolvedSeed}\n sketchColor={sketch.ink}\n bowing={sketch.bowing}\n fillStyle={sketch.fillStyle ?? \"solid\"}\n fill={fill ?? sketch.paper}\n strokeWidth={sketch.strokeWidth ?? 1.5}\n hachureGap={sketch.hachureGap}\n hachureAngle={sketch.hachureAngle}\n fillWeight={sketch.fillWeight}\n shadow\n animate={sketch.animate}\n contentStyle={{ padding: \"6px 4px\", color: sketch.ink }}\n >\n {children}\n </SketchBox>\n </DropdownMenuPrimitive.Content>\n </DropdownMenuPrimitive.Portal>\n );\n});\n\nfunction useMark(highlighted: boolean) {\n const sketch = useDropdownMenuSketch();\n return { sketch, mark: highlighted };\n}\n\nexport interface DropdownMenuItemProps\n extends Omit<DropdownMenuPrimitive.DropdownMenuItemProps, \"asChild\"> {\n children?: ReactNode;\n inset?: boolean;\n}\n\nexport const DropdownMenuItem = forwardRef<\n HTMLDivElement,\n DropdownMenuItemProps\n>(function DropdownMenuItem(\n { className, style, children, inset, ...rest },\n ref,\n) {\n const [highlighted, setHighlighted] = useState(false);\n const { sketch, mark } = useMark(highlighted);\n\n return (\n <DropdownMenuPrimitive.Item\n ref={ref}\n className={cn(className)}\n onPointerMove={() => setHighlighted(true)}\n onPointerLeave={() => setHighlighted(false)}\n onFocus={() => setHighlighted(true)}\n onBlur={() => setHighlighted(false)}\n style={{\n position: \"relative\",\n display: \"flex\",\n alignItems: \"center\",\n gap: 8,\n padding: inset ? \"7px 12px 7px 26px\" : \"7px 12px\",\n fontFamily: doodleUiFontFamily,\n fontSize: 14,\n color: sketch.ink,\n outline: \"none\",\n cursor: \"pointer\",\n userSelect: \"none\",\n ...style,\n }}\n {...rest}\n >\n {mark ? (\n <RoughSvg\n shape=\"line\"\n roughness={(sketch.roughness ?? 1.5) + 0.4}\n seed={sketch.resolvedSeed}\n sketchColor={sketch.ink}\n bowing={sketch.bowing ?? 1.6}\n strokeWidth={1.3}\n inset={4}\n style={{ opacity: 0.4 }}\n />\n ) : null}\n <span style={{ position: \"relative\", zIndex: 1 }}>{children}</span>\n </DropdownMenuPrimitive.Item>\n );\n});\n\nexport interface DropdownMenuCheckboxItemProps\n extends Omit<\n DropdownMenuPrimitive.DropdownMenuCheckboxItemProps,\n \"asChild\"\n > {\n children?: ReactNode;\n}\n\nconst CHECK_PATH = \"M 2 6 L 5 9 L 10 3\";\n\nexport const DropdownMenuCheckboxItem = forwardRef<\n HTMLDivElement,\n DropdownMenuCheckboxItemProps\n>(function DropdownMenuCheckboxItem(\n { className, style, children, checked, ...rest },\n ref,\n) {\n const [highlighted, setHighlighted] = useState(false);\n const { sketch, mark } = useMark(highlighted);\n\n return (\n <DropdownMenuPrimitive.CheckboxItem\n ref={ref}\n checked={checked}\n className={cn(className)}\n onPointerMove={() => setHighlighted(true)}\n onPointerLeave={() => setHighlighted(false)}\n style={{\n position: \"relative\",\n display: \"flex\",\n alignItems: \"center\",\n gap: 8,\n padding: \"7px 12px 7px 26px\",\n fontFamily: doodleUiFontFamily,\n fontSize: 14,\n color: sketch.ink,\n outline: \"none\",\n cursor: \"pointer\",\n userSelect: \"none\",\n ...style,\n }}\n {...rest}\n >\n {mark ? (\n <RoughSvg\n shape=\"line\"\n roughness={(sketch.roughness ?? 1.5) + 0.4}\n seed={sketch.resolvedSeed}\n sketchColor={sketch.ink}\n bowing={sketch.bowing ?? 1.6}\n strokeWidth={1.3}\n inset={4}\n style={{ opacity: 0.4 }}\n />\n ) : null}\n <span\n style={{\n position: \"relative\",\n width: 12,\n height: 12,\n flexShrink: 0,\n marginLeft: -18,\n }}\n >\n <DropdownMenuPrimitive.ItemIndicator>\n <RoughSvg\n shape=\"path\"\n path={CHECK_PATH}\n roughness={(sketch.roughness ?? 1.5) * 0.7}\n seed={deriveSeed(sketch.resolvedSeed, \"checkbox-mark\")}\n sketchColor={sketch.accent}\n bowing={sketch.bowing}\n strokeWidth={1.6}\n inset={0}\n />\n </DropdownMenuPrimitive.ItemIndicator>\n </span>\n <span style={{ position: \"relative\", zIndex: 1 }}>{children}</span>\n </DropdownMenuPrimitive.CheckboxItem>\n );\n});\n\nexport interface DropdownMenuRadioItemProps\n extends Omit<DropdownMenuPrimitive.DropdownMenuRadioItemProps, \"asChild\"> {\n children?: ReactNode;\n}\n\nexport const DropdownMenuRadioItem = forwardRef<\n HTMLDivElement,\n DropdownMenuRadioItemProps\n>(function DropdownMenuRadioItem(\n { className, style, children, ...rest },\n ref,\n) {\n const [highlighted, setHighlighted] = useState(false);\n const { sketch, mark } = useMark(highlighted);\n\n return (\n <DropdownMenuPrimitive.RadioItem\n ref={ref}\n className={cn(className)}\n onPointerMove={() => setHighlighted(true)}\n onPointerLeave={() => setHighlighted(false)}\n style={{\n position: \"relative\",\n display: \"flex\",\n alignItems: \"center\",\n gap: 8,\n padding: \"7px 12px 7px 26px\",\n fontFamily: doodleUiFontFamily,\n fontSize: 14,\n color: sketch.ink,\n outline: \"none\",\n cursor: \"pointer\",\n userSelect: \"none\",\n ...style,\n }}\n {...rest}\n >\n {mark ? (\n <RoughSvg\n shape=\"line\"\n roughness={(sketch.roughness ?? 1.5) + 0.4}\n seed={sketch.resolvedSeed}\n sketchColor={sketch.ink}\n bowing={sketch.bowing ?? 1.6}\n strokeWidth={1.3}\n inset={4}\n style={{ opacity: 0.4 }}\n />\n ) : null}\n <span\n style={{\n position: \"relative\",\n width: 8,\n height: 8,\n flexShrink: 0,\n marginLeft: -18,\n }}\n >\n <DropdownMenuPrimitive.ItemIndicator>\n <RoughSvg\n shape=\"ellipse\"\n roughness={(sketch.roughness ?? 1.5) * 0.8}\n seed={deriveSeed(sketch.resolvedSeed, \"radio-mark\")}\n sketchColor={sketch.accent}\n bowing={sketch.bowing}\n fillStyle=\"solid\"\n fill={sketch.accent}\n strokeWidth={1.2}\n inset={0}\n />\n </DropdownMenuPrimitive.ItemIndicator>\n </span>\n <span style={{ position: \"relative\", zIndex: 1 }}>{children}</span>\n </DropdownMenuPrimitive.RadioItem>\n );\n});\n\nexport interface DropdownMenuLabelProps\n extends Omit<DropdownMenuPrimitive.DropdownMenuLabelProps, \"asChild\"> {\n children?: ReactNode;\n}\n\nexport const DropdownMenuLabel = forwardRef<\n HTMLDivElement,\n DropdownMenuLabelProps\n>(function DropdownMenuLabel({ className, style, children, ...rest }, ref) {\n const sketch = useDropdownMenuSketch();\n return (\n <DropdownMenuPrimitive.Label\n ref={ref}\n className={cn(className)}\n style={{\n padding: \"6px 12px\",\n fontFamily: doodleUiFontFamily,\n fontSize: 12,\n fontWeight: 700,\n color: sketch.ink,\n opacity: 0.6,\n textTransform: \"uppercase\",\n letterSpacing: 0.4,\n ...style,\n }}\n {...rest}\n >\n {children}\n </DropdownMenuPrimitive.Label>\n );\n});\n\nexport interface DropdownMenuSeparatorProps\n extends Omit<DropdownMenuPrimitive.DropdownMenuSeparatorProps, \"asChild\"> {}\n\nexport const DropdownMenuSeparator = forwardRef<\n HTMLDivElement,\n DropdownMenuSeparatorProps\n>(function DropdownMenuSeparator({ className, style, ...rest }, ref) {\n const sketch = useDropdownMenuSketch();\n return (\n <DropdownMenuPrimitive.Separator\n ref={ref}\n className={cn(className)}\n style={{ position: \"relative\", height: 10, margin: \"2px 0\", ...style }}\n {...rest}\n >\n <RoughSvg\n shape=\"line\"\n roughness={(sketch.roughness ?? 1.5) + 0.2}\n seed={deriveSeed(sketch.resolvedSeed, \"separator\")}\n sketchColor={sketch.ink}\n bowing={sketch.bowing ?? 1.8}\n strokeWidth={1.2}\n inset={6}\n style={{ opacity: 0.5 }}\n />\n </DropdownMenuPrimitive.Separator>\n );\n});\n","\"use client\";\n\nimport {\n createContext,\n forwardRef,\n useContext,\n useState,\n type CSSProperties,\n type ReactNode,\n} from \"react\";\nimport * as DialogPrimitive from \"@radix-ui/react-dialog\";\nimport { AnimatePresence, motion } from \"framer-motion\";\nimport { useAnimate } from \"../animations\";\nimport { useResolvedSeed } from \"../hooks/useResolvedSeed\";\nimport { useSketchTheme } from \"../hooks/useSketchTheme\";\nimport { SketchBox } from \"../primitives/SketchBox\";\nimport type { SketchProps } from \"../types\";\nimport { cn, doodleUiFontFamily, doodleUiFontWeight } from \"../utils\";\n\ninterface DialogSketchContextValue extends SketchProps {\n resolvedSeed: number;\n ink: string;\n paper: string;\n isDark: boolean;\n animate?: boolean;\n open: boolean;\n}\n\nconst DialogSketchContext = createContext<DialogSketchContextValue | null>(\n null,\n);\n\nfunction useDialogSketch(): DialogSketchContextValue {\n const ctx = useContext(DialogSketchContext);\n if (!ctx) {\n throw new Error(\"Dialog parts must be used inside <Dialog>.\");\n }\n return ctx;\n}\n\nexport interface DialogProps\n extends Omit<DialogPrimitive.DialogProps, \"children\">,\n SketchProps {\n children?: ReactNode;\n fill?: string;\n /**\n * Backdrop fade, panel enter/exit, and border draw-in on open.\n * Defaults to the DoodleUIProvider value (true).\n */\n animate?: boolean;\n}\n\n/**\n * Lighter-weight sibling to `Modal`: a composable, shadcn-style dialog built\n * from `Dialog` / `DialogTrigger` / `DialogContent` / `DialogHeader` /\n * `DialogFooter` / `DialogTitle` / `DialogDescription` / `DialogClose`. Unlike\n * `Modal`, `DialogContent` has no forced width or shadow and no built-in\n * close button — compose your own layout inside it.\n */\nexport function Dialog({\n children,\n open,\n defaultOpen,\n onOpenChange,\n fill,\n roughness,\n seed,\n sketchColor,\n bowing,\n fillStyle,\n strokeWidth,\n hachureGap,\n hachureAngle,\n fillWeight,\n animate,\n ...rest\n}: DialogProps) {\n const resolvedSeed = useResolvedSeed(seed);\n const theme = useSketchTheme(sketchColor);\n const ink = sketchColor ?? theme.ink;\n const [uncontrolled, setUncontrolled] = useState(defaultOpen === true);\n const isOpen = open ?? uncontrolled;\n\n return (\n <DialogSketchContext.Provider\n value={{\n roughness,\n seed: resolvedSeed,\n sketchColor,\n bowing,\n fillStyle,\n strokeWidth,\n hachureGap,\n hachureAngle,\n fillWeight,\n resolvedSeed,\n ink,\n paper: fill ?? theme.paper,\n isDark: theme.isDark,\n animate,\n open: isOpen,\n }}\n >\n <DialogPrimitive.Root\n open={isOpen}\n onOpenChange={(next) => {\n setUncontrolled(next);\n onOpenChange?.(next);\n }}\n {...rest}\n >\n {children}\n </DialogPrimitive.Root>\n </DialogSketchContext.Provider>\n );\n}\n\nexport const DialogTrigger = DialogPrimitive.Trigger;\nexport const DialogPortal = DialogPrimitive.Portal;\nexport const DialogClose = DialogPrimitive.Close;\n\nexport interface DialogOverlayProps\n extends Omit<DialogPrimitive.DialogOverlayProps, \"asChild\" | \"forceMount\"> {}\n\nexport const DialogOverlay = forwardRef<HTMLDivElement, DialogOverlayProps>(\n function DialogOverlay({ style, ...rest }, ref) {\n const sketch = useDialogSketch();\n const shouldAnimate = useAnimate(sketch.animate);\n\n return (\n <DialogPrimitive.Overlay ref={ref} asChild forceMount {...rest}>\n <motion.div\n initial={shouldAnimate ? { opacity: 0 } : false}\n animate={{ opacity: 1 }}\n exit={shouldAnimate ? { opacity: 0 } : undefined}\n transition={\n shouldAnimate\n ? { duration: 0.2, ease: \"easeOut\" }\n : { duration: 0 }\n }\n style={{\n position: \"fixed\",\n inset: 0,\n background: sketch.isDark ? \"rgba(0, 0, 0, 0.65)\" : \"rgba(31, 29, 26, 0.38)\",\n zIndex: 70,\n ...style,\n }}\n />\n </DialogPrimitive.Overlay>\n );\n },\n);\n\nexport interface DialogContentProps\n extends Omit<DialogPrimitive.DialogContentProps, \"asChild\" | \"forceMount\"> {\n children?: ReactNode;\n fill?: string;\n /** Panel width. Defaults to `min(420px, calc(100vw - 32px))`. */\n contentStyle?: CSSProperties;\n}\n\nexport const DialogContent = forwardRef<HTMLDivElement, DialogContentProps>(\n function DialogContent(\n { className, style, contentStyle, fill, children, ...rest },\n ref,\n ) {\n const sketch = useDialogSketch();\n const shouldAnimate = useAnimate(sketch.animate);\n\n return (\n <AnimatePresence>\n {sketch.open ? (\n <DialogPrimitive.Portal forceMount>\n <DialogOverlay />\n <div\n style={{\n position: \"fixed\",\n inset: 0,\n zIndex: 80,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n pointerEvents: \"none\",\n padding: 16,\n }}\n >\n <DialogPrimitive.Content ref={ref} asChild forceMount {...rest}>\n <motion.div\n className={cn(className)}\n initial={\n shouldAnimate ? { opacity: 0, scale: 0.96, y: 10 } : false\n }\n animate={{ opacity: 1, scale: 1, y: 0 }}\n exit={\n shouldAnimate\n ? { opacity: 0, scale: 0.96, y: 8 }\n : undefined\n }\n transition={\n shouldAnimate\n ? { duration: 0.22, ease: \"easeOut\" }\n : { duration: 0 }\n }\n style={{\n width: \"min(420px, calc(100vw - 32px))\",\n outline: \"none\",\n pointerEvents: \"auto\",\n color: sketch.ink,\n ...style,\n }}\n >\n <SketchBox\n roughness={sketch.roughness}\n seed={sketch.resolvedSeed}\n sketchColor={sketch.ink}\n bowing={sketch.bowing}\n fillStyle={sketch.fillStyle ?? \"solid\"}\n fill={fill ?? sketch.paper}\n strokeWidth={sketch.strokeWidth ?? 2}\n hachureGap={sketch.hachureGap}\n hachureAngle={sketch.hachureAngle}\n fillWeight={sketch.fillWeight}\n animate={sketch.animate}\n contentStyle={{ padding: 20, color: sketch.ink, ...contentStyle }}\n >\n {children}\n </SketchBox>\n </motion.div>\n </DialogPrimitive.Content>\n </div>\n </DialogPrimitive.Portal>\n ) : null}\n </AnimatePresence>\n );\n },\n);\n\nexport interface DialogHeaderProps {\n children?: ReactNode;\n className?: string;\n style?: CSSProperties;\n}\n\nexport function DialogHeader({ children, className, style }: DialogHeaderProps) {\n return (\n <div\n className={cn(className)}\n style={{\n display: \"flex\",\n flexDirection: \"column\",\n gap: 6,\n marginBottom: 12,\n ...style,\n }}\n >\n {children}\n </div>\n );\n}\n\nexport interface DialogFooterProps {\n children?: ReactNode;\n className?: string;\n style?: CSSProperties;\n}\n\nexport function DialogFooter({ children, className, style }: DialogFooterProps) {\n return (\n <div\n className={cn(className)}\n style={{\n display: \"flex\",\n justifyContent: \"flex-end\",\n gap: 8,\n marginTop: 16,\n ...style,\n }}\n >\n {children}\n </div>\n );\n}\n\nexport interface DialogTitleProps\n extends Omit<DialogPrimitive.DialogTitleProps, \"asChild\"> {}\n\nexport const DialogTitle = forwardRef<HTMLHeadingElement, DialogTitleProps>(\n function DialogTitle({ style, ...rest }, ref) {\n const sketch = useDialogSketch();\n return (\n <DialogPrimitive.Title\n ref={ref}\n style={{\n margin: 0,\n fontSize: 18,\n fontWeight: doodleUiFontWeight(700),\n fontFamily: doodleUiFontFamily,\n color: sketch.ink,\n ...style,\n }}\n {...rest}\n />\n );\n },\n);\n\nexport interface DialogDescriptionProps\n extends Omit<DialogPrimitive.DialogDescriptionProps, \"asChild\"> {}\n\nexport const DialogDescription = forwardRef<\n HTMLParagraphElement,\n DialogDescriptionProps\n>(function DialogDescription({ style, ...rest }, ref) {\n const sketch = useDialogSketch();\n return (\n <DialogPrimitive.Description\n ref={ref}\n style={{\n margin: 0,\n fontSize: 14,\n lineHeight: 1.5,\n fontFamily: doodleUiFontFamily,\n color: sketch.ink,\n opacity: 0.8,\n ...style,\n }}\n {...rest}\n />\n );\n});\n","\"use client\";\n\nimport {\n createContext,\n forwardRef,\n useContext,\n useState,\n type CSSProperties,\n type ReactNode,\n} from \"react\";\nimport * as AlertDialogPrimitive from \"@radix-ui/react-alert-dialog\";\nimport { AnimatePresence, motion } from \"framer-motion\";\nimport { useAnimate } from \"../animations\";\nimport { useResolvedSeed } from \"../hooks/useResolvedSeed\";\nimport { useSketchTheme } from \"../hooks/useSketchTheme\";\nimport { SketchBox } from \"../primitives/SketchBox\";\nimport type { SketchProps } from \"../types\";\nimport { cn, doodleUiFontFamily, doodleUiFontWeight } from \"../utils\";\nimport { Button } from \"./Button\";\n\ninterface AlertDialogSketchContextValue extends SketchProps {\n resolvedSeed: number;\n ink: string;\n paper: string;\n isDark: boolean;\n animate?: boolean;\n open: boolean;\n}\n\nconst AlertDialogSketchContext =\n createContext<AlertDialogSketchContextValue | null>(null);\n\nfunction useAlertDialogSketch(): AlertDialogSketchContextValue {\n const ctx = useContext(AlertDialogSketchContext);\n if (!ctx) {\n throw new Error(\n \"AlertDialog parts must be used inside <AlertDialog>.\",\n );\n }\n return ctx;\n}\n\nexport interface AlertDialogProps\n extends Omit<AlertDialogPrimitive.AlertDialogProps, \"children\">,\n SketchProps {\n children?: ReactNode;\n fill?: string;\n /**\n * Backdrop fade, panel enter/exit, and border draw-in on open.\n * Defaults to the DoodleUIProvider value (true).\n */\n animate?: boolean;\n}\n\n/**\n * Confirm / destructive-action variant of `Dialog`. Same composable shape,\n * but Radix's alert dialog primitive requires an explicit action — there is\n * no dismiss-on-outside-click or Escape by default, and `AlertDialogAction`\n * / `AlertDialogCancel` give the confirm button visual emphasis.\n */\nexport function AlertDialog({\n children,\n open,\n defaultOpen,\n onOpenChange,\n fill,\n roughness,\n seed,\n sketchColor,\n bowing,\n fillStyle,\n strokeWidth,\n hachureGap,\n hachureAngle,\n fillWeight,\n animate,\n ...rest\n}: AlertDialogProps) {\n const resolvedSeed = useResolvedSeed(seed);\n const theme = useSketchTheme(sketchColor);\n const ink = sketchColor ?? theme.ink;\n const [uncontrolled, setUncontrolled] = useState(defaultOpen === true);\n const isOpen = open ?? uncontrolled;\n\n return (\n <AlertDialogSketchContext.Provider\n value={{\n roughness,\n seed: resolvedSeed,\n sketchColor,\n bowing,\n fillStyle,\n strokeWidth,\n hachureGap,\n hachureAngle,\n fillWeight,\n resolvedSeed,\n ink,\n paper: fill ?? theme.paper,\n isDark: theme.isDark,\n animate,\n open: isOpen,\n }}\n >\n <AlertDialogPrimitive.Root\n open={isOpen}\n onOpenChange={(next) => {\n setUncontrolled(next);\n onOpenChange?.(next);\n }}\n {...rest}\n >\n {children}\n </AlertDialogPrimitive.Root>\n </AlertDialogSketchContext.Provider>\n );\n}\n\nexport const AlertDialogTrigger = AlertDialogPrimitive.Trigger;\nexport const AlertDialogPortal = AlertDialogPrimitive.Portal;\n\nexport interface AlertDialogOverlayProps\n extends Omit<\n AlertDialogPrimitive.AlertDialogOverlayProps,\n \"asChild\" | \"forceMount\"\n > {}\n\nexport const AlertDialogOverlay = forwardRef<\n HTMLDivElement,\n AlertDialogOverlayProps\n>(function AlertDialogOverlay({ style, ...rest }, ref) {\n const sketch = useAlertDialogSketch();\n const shouldAnimate = useAnimate(sketch.animate);\n\n return (\n <AlertDialogPrimitive.Overlay ref={ref} asChild forceMount {...rest}>\n <motion.div\n initial={shouldAnimate ? { opacity: 0 } : false}\n animate={{ opacity: 1 }}\n exit={shouldAnimate ? { opacity: 0 } : undefined}\n transition={\n shouldAnimate ? { duration: 0.2, ease: \"easeOut\" } : { duration: 0 }\n }\n style={{\n position: \"fixed\",\n inset: 0,\n background: sketch.isDark ? \"rgba(0, 0, 0, 0.65)\" : \"rgba(31, 29, 26, 0.38)\",\n zIndex: 70,\n ...style,\n }}\n />\n </AlertDialogPrimitive.Overlay>\n );\n});\n\nexport interface AlertDialogContentProps\n extends Omit<\n AlertDialogPrimitive.AlertDialogContentProps,\n \"asChild\" | \"forceMount\"\n > {\n children?: ReactNode;\n fill?: string;\n contentStyle?: CSSProperties;\n}\n\nexport const AlertDialogContent = forwardRef<\n HTMLDivElement,\n AlertDialogContentProps\n>(function AlertDialogContent(\n { className, style, contentStyle, fill, children, ...rest },\n ref,\n) {\n const sketch = useAlertDialogSketch();\n const shouldAnimate = useAnimate(sketch.animate);\n\n return (\n <AnimatePresence>\n {sketch.open ? (\n <AlertDialogPrimitive.Portal forceMount>\n <AlertDialogOverlay />\n <div\n style={{\n position: \"fixed\",\n inset: 0,\n zIndex: 80,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n pointerEvents: \"none\",\n padding: 16,\n }}\n >\n <AlertDialogPrimitive.Content ref={ref} asChild forceMount {...rest}>\n <motion.div\n className={cn(className)}\n initial={\n shouldAnimate ? { opacity: 0, scale: 0.96, y: 10 } : false\n }\n animate={{ opacity: 1, scale: 1, y: 0 }}\n exit={\n shouldAnimate ? { opacity: 0, scale: 0.96, y: 8 } : undefined\n }\n transition={\n shouldAnimate\n ? { duration: 0.22, ease: \"easeOut\" }\n : { duration: 0 }\n }\n style={{\n width: \"min(420px, calc(100vw - 32px))\",\n outline: \"none\",\n pointerEvents: \"auto\",\n color: sketch.ink,\n ...style,\n }}\n >\n <SketchBox\n roughness={sketch.roughness}\n seed={sketch.resolvedSeed}\n sketchColor={sketch.ink}\n bowing={sketch.bowing}\n fillStyle={sketch.fillStyle ?? \"solid\"}\n fill={fill ?? sketch.paper}\n strokeWidth={sketch.strokeWidth ?? 2}\n hachureGap={sketch.hachureGap}\n hachureAngle={sketch.hachureAngle}\n fillWeight={sketch.fillWeight}\n animate={sketch.animate}\n contentStyle={{ padding: 20, color: sketch.ink, ...contentStyle }}\n >\n {children}\n </SketchBox>\n </motion.div>\n </AlertDialogPrimitive.Content>\n </div>\n </AlertDialogPrimitive.Portal>\n ) : null}\n </AnimatePresence>\n );\n});\n\nexport interface AlertDialogHeaderProps {\n children?: ReactNode;\n className?: string;\n style?: CSSProperties;\n}\n\nexport function AlertDialogHeader({\n children,\n className,\n style,\n}: AlertDialogHeaderProps) {\n return (\n <div\n className={cn(className)}\n style={{\n display: \"flex\",\n flexDirection: \"column\",\n gap: 6,\n marginBottom: 12,\n ...style,\n }}\n >\n {children}\n </div>\n );\n}\n\nexport interface AlertDialogFooterProps {\n children?: ReactNode;\n className?: string;\n style?: CSSProperties;\n}\n\nexport function AlertDialogFooter({\n children,\n className,\n style,\n}: AlertDialogFooterProps) {\n return (\n <div\n className={cn(className)}\n style={{\n display: \"flex\",\n justifyContent: \"flex-end\",\n gap: 8,\n marginTop: 16,\n ...style,\n }}\n >\n {children}\n </div>\n );\n}\n\nexport interface AlertDialogTitleProps\n extends Omit<AlertDialogPrimitive.AlertDialogTitleProps, \"asChild\"> {}\n\nexport const AlertDialogTitle = forwardRef<\n HTMLHeadingElement,\n AlertDialogTitleProps\n>(function AlertDialogTitle({ style, ...rest }, ref) {\n const sketch = useAlertDialogSketch();\n return (\n <AlertDialogPrimitive.Title\n ref={ref}\n style={{\n margin: 0,\n fontSize: 18,\n fontWeight: doodleUiFontWeight(700),\n fontFamily: doodleUiFontFamily,\n color: sketch.ink,\n ...style,\n }}\n {...rest}\n />\n );\n});\n\nexport interface AlertDialogDescriptionProps\n extends Omit<AlertDialogPrimitive.AlertDialogDescriptionProps, \"asChild\"> {}\n\nexport const AlertDialogDescription = forwardRef<\n HTMLParagraphElement,\n AlertDialogDescriptionProps\n>(function AlertDialogDescription({ style, ...rest }, ref) {\n const sketch = useAlertDialogSketch();\n return (\n <AlertDialogPrimitive.Description\n ref={ref}\n style={{\n margin: 0,\n fontSize: 14,\n lineHeight: 1.5,\n fontFamily: doodleUiFontFamily,\n color: sketch.ink,\n opacity: 0.8,\n ...style,\n }}\n {...rest}\n />\n );\n});\n\nexport interface AlertDialogActionProps\n extends Omit<AlertDialogPrimitive.AlertDialogActionProps, \"asChild\"> {}\n\nexport const AlertDialogAction = forwardRef<\n HTMLButtonElement,\n AlertDialogActionProps\n>(function AlertDialogAction({ children, ...rest }, ref) {\n const sketch = useAlertDialogSketch();\n return (\n <AlertDialogPrimitive.Action asChild>\n <Button\n ref={ref}\n variant=\"primary\"\n sketchColor={sketch.sketchColor}\n roughness={sketch.roughness}\n seed={sketch.resolvedSeed}\n bowing={sketch.bowing}\n animate={sketch.animate}\n {...rest}\n >\n {children}\n </Button>\n </AlertDialogPrimitive.Action>\n );\n});\n\nexport interface AlertDialogCancelProps\n extends Omit<AlertDialogPrimitive.AlertDialogCancelProps, \"asChild\"> {}\n\nexport const AlertDialogCancel = forwardRef<\n HTMLButtonElement,\n AlertDialogCancelProps\n>(function AlertDialogCancel({ children, ...rest }, ref) {\n const sketch = useAlertDialogSketch();\n return (\n <AlertDialogPrimitive.Cancel asChild>\n <Button\n ref={ref}\n variant=\"outline\"\n sketchColor={sketch.sketchColor}\n roughness={sketch.roughness}\n seed={sketch.resolvedSeed}\n bowing={sketch.bowing}\n animate={sketch.animate}\n {...rest}\n >\n {children}\n </Button>\n </AlertDialogPrimitive.Cancel>\n );\n});\n","\"use client\";\n\nimport {\n createContext,\n forwardRef,\n useContext,\n useState,\n type ComponentPropsWithoutRef,\n type ReactNode,\n} from \"react\";\nimport {\n Command as CmdkCommand,\n CommandEmpty as CmdkEmpty,\n CommandGroup as CmdkGroup,\n CommandInput as CmdkInput,\n CommandItem as CmdkItem,\n CommandList as CmdkList,\n CommandSeparator as CmdkSeparator,\n} from \"cmdk\";\nimport { useResolvedSeed } from \"../hooks/useResolvedSeed\";\nimport { useSketchTheme } from \"../hooks/useSketchTheme\";\nimport { RoughSvg } from \"../primitives/RoughSvg\";\nimport { SketchBox } from \"../primitives/SketchBox\";\nimport type { SketchProps } from \"../types\";\nimport { cn, deriveSeed, doodleUiFontFamily } from \"../utils\";\n\ninterface CommandSketchContextValue extends SketchProps {\n resolvedSeed: number;\n ink: string;\n paper: string;\n animate?: boolean;\n}\n\nconst CommandSketchContext = createContext<CommandSketchContextValue | null>(\n null,\n);\n\nfunction useCommandSketch(): CommandSketchContextValue {\n const ctx = useContext(CommandSketchContext);\n if (!ctx) {\n throw new Error(\"Command parts must be used inside <Command>.\");\n }\n return ctx;\n}\n\nexport interface CommandProps\n extends Omit<ComponentPropsWithoutRef<typeof CmdkCommand>, \"asChild\">,\n SketchProps {\n children?: ReactNode;\n /**\n * Draw-in the panel border on mount.\n * Defaults to the DoodleUIProvider value (true).\n */\n animate?: boolean;\n}\n\n/**\n * Command palette / cmd+k style searchable list, built on `cmdk` with a\n * `SketchBox` frame. Compose with `CommandInput`, `CommandList`,\n * `CommandEmpty`, `CommandGroup`, `CommandItem`, `CommandSeparator`.\n */\nexport const Command = forwardRef<HTMLDivElement, CommandProps>(\n function Command(\n {\n className,\n style,\n children,\n roughness,\n seed,\n sketchColor,\n bowing,\n fillStyle,\n strokeWidth,\n hachureGap,\n hachureAngle,\n fillWeight,\n animate,\n ...rest\n },\n ref,\n ) {\n const resolvedSeed = useResolvedSeed(seed);\n const theme = useSketchTheme(sketchColor);\n const ink = sketchColor ?? theme.ink;\n\n return (\n <CommandSketchContext.Provider\n value={{\n roughness,\n seed: resolvedSeed,\n sketchColor,\n bowing,\n fillStyle,\n strokeWidth,\n hachureGap,\n hachureAngle,\n fillWeight,\n resolvedSeed,\n ink,\n paper: theme.paper,\n animate,\n }}\n >\n <SketchBox\n className={cn(className)}\n style={{ color: ink, ...style }}\n roughness={roughness}\n seed={resolvedSeed}\n sketchColor={ink}\n bowing={bowing}\n fillStyle={fillStyle ?? \"solid\"}\n fill={theme.paper}\n strokeWidth={strokeWidth ?? 1.5}\n hachureGap={hachureGap}\n hachureAngle={hachureAngle}\n fillWeight={fillWeight}\n animate={animate}\n contentStyle={{ padding: 0, display: \"flex\", flexDirection: \"column\", color: ink }}\n >\n <CmdkCommand ref={ref} {...rest}>\n {children}\n </CmdkCommand>\n </SketchBox>\n </CommandSketchContext.Provider>\n );\n },\n);\n\nexport interface CommandInputProps\n extends Omit<ComponentPropsWithoutRef<typeof CmdkInput>, \"asChild\"> {}\n\nexport const CommandInput = forwardRef<HTMLInputElement, CommandInputProps>(\n function CommandInput({ className, style, ...rest }, ref) {\n const sketch = useCommandSketch();\n return (\n <div style={{ position: \"relative\", padding: \"10px 12px 12px\" }}>\n <CmdkInput\n ref={ref}\n className={cn(className)}\n style={{\n width: \"100%\",\n boxSizing: \"border-box\",\n border: \"none\",\n outline: \"none\",\n background: \"transparent\",\n color: sketch.ink,\n fontFamily: doodleUiFontFamily,\n fontSize: 15,\n padding: \"2px 2px 8px\",\n ...style,\n }}\n {...rest}\n />\n <RoughSvg\n shape=\"line\"\n roughness={(sketch.roughness ?? 1.5) + 0.2}\n seed={deriveSeed(sketch.resolvedSeed, \"command-divider\")}\n sketchColor={sketch.ink}\n bowing={sketch.bowing ?? 1.6}\n strokeWidth={1.2}\n inset={4}\n style={{ position: \"absolute\", bottom: 0, left: 0, right: 0, height: 8, opacity: 0.4 }}\n />\n </div>\n );\n },\n);\n\nexport interface CommandListProps\n extends Omit<ComponentPropsWithoutRef<typeof CmdkList>, \"asChild\"> {}\n\nexport const CommandList = forwardRef<HTMLDivElement, CommandListProps>(\n function CommandList({ className, style, ...rest }, ref) {\n return (\n <CmdkList\n ref={ref}\n className={cn(className)}\n style={{\n maxHeight: 280,\n overflowY: \"auto\",\n padding: \"4px 4px 8px\",\n ...style,\n }}\n {...rest}\n />\n );\n },\n);\n\nexport interface CommandEmptyProps\n extends Omit<ComponentPropsWithoutRef<typeof CmdkEmpty>, \"asChild\"> {}\n\nexport const CommandEmpty = forwardRef<HTMLDivElement, CommandEmptyProps>(\n function CommandEmpty({ className, style, ...rest }, ref) {\n const sketch = useCommandSketch();\n return (\n <CmdkEmpty\n ref={ref}\n className={cn(className)}\n style={{\n padding: \"16px 12px\",\n textAlign: \"center\",\n fontFamily: doodleUiFontFamily,\n fontSize: 14,\n color: sketch.ink,\n opacity: 0.6,\n ...style,\n }}\n {...rest}\n />\n );\n },\n);\n\nexport interface CommandGroupProps\n extends Omit<ComponentPropsWithoutRef<typeof CmdkGroup>, \"asChild\"> {}\n\nexport const CommandGroup = forwardRef<HTMLDivElement, CommandGroupProps>(\n function CommandGroup({ className, style, ...rest }, ref) {\n const sketch = useCommandSketch();\n return (\n <CmdkGroup\n ref={ref}\n className={cn(className)}\n style={{ padding: \"4px 2px\", color: sketch.ink, ...style }}\n {...rest}\n />\n );\n },\n);\n\nexport interface CommandItemProps\n extends Omit<ComponentPropsWithoutRef<typeof CmdkItem>, \"asChild\"> {}\n\nexport const CommandItem = forwardRef<HTMLDivElement, CommandItemProps>(\n function CommandItem(\n { className, style, children, onMouseEnter, onMouseLeave, ...rest },\n ref,\n ) {\n const sketch = useCommandSketch();\n const [highlighted, setHighlighted] = useState(false);\n\n return (\n <CmdkItem\n ref={ref}\n className={cn(className)}\n onMouseEnter={(event) => {\n setHighlighted(true);\n onMouseEnter?.(event);\n }}\n onMouseLeave={(event) => {\n setHighlighted(false);\n onMouseLeave?.(event);\n }}\n style={{\n position: \"relative\",\n display: \"flex\",\n alignItems: \"center\",\n gap: 8,\n padding: \"7px 10px\",\n borderRadius: 4,\n fontFamily: doodleUiFontFamily,\n fontSize: 14,\n color: sketch.ink,\n cursor: \"pointer\",\n userSelect: \"none\",\n outline: \"none\",\n ...style,\n }}\n {...rest}\n >\n {highlighted ? (\n <RoughSvg\n shape=\"line\"\n roughness={(sketch.roughness ?? 1.5) + 0.4}\n seed={sketch.resolvedSeed}\n sketchColor={sketch.ink}\n bowing={sketch.bowing ?? 1.6}\n strokeWidth={1.3}\n inset={3}\n style={{ opacity: 0.4 }}\n />\n ) : null}\n <span style={{ position: \"relative\", zIndex: 1, flex: 1 }}>\n {children}\n </span>\n </CmdkItem>\n );\n },\n);\n\nexport interface CommandSeparatorProps\n extends Omit<ComponentPropsWithoutRef<typeof CmdkSeparator>, \"asChild\"> {}\n\nexport const CommandSeparator = forwardRef<\n HTMLDivElement,\n CommandSeparatorProps\n>(function CommandSeparator({ className, style, ...rest }, ref) {\n const sketch = useCommandSketch();\n return (\n <CmdkSeparator\n ref={ref}\n className={cn(className)}\n style={{ position: \"relative\", height: 10, margin: \"2px 4px\", ...style }}\n {...rest}\n >\n <RoughSvg\n shape=\"line\"\n roughness={(sketch.roughness ?? 1.5) + 0.2}\n seed={deriveSeed(sketch.resolvedSeed, \"command-separator\")}\n sketchColor={sketch.ink}\n bowing={sketch.bowing ?? 1.8}\n strokeWidth={1.2}\n inset={4}\n style={{ opacity: 0.4 }}\n />\n </CmdkSeparator>\n );\n});\n\nexport function CommandShortcut({\n children,\n className,\n style,\n}: {\n children?: ReactNode;\n className?: string;\n style?: React.CSSProperties;\n}) {\n const sketch = useCommandSketch();\n return (\n <span\n className={cn(className)}\n style={{\n marginLeft: \"auto\",\n fontFamily: doodleUiFontFamily,\n fontSize: 12,\n color: sketch.ink,\n opacity: 0.5,\n letterSpacing: 0.4,\n ...style,\n }}\n >\n {children}\n </span>\n );\n}\n","\"use client\";\n\nimport { useRef, useState, type CSSProperties, type ReactNode } from \"react\";\nimport * as PopoverPrimitive from \"@radix-ui/react-popover\";\nimport {\n DRAW_IN_DURATION_MS,\n useAnimate,\n useDrawIn,\n} from \"../animations\";\nimport { useResolvedSeed } from \"../hooks/useResolvedSeed\";\nimport { useSketchTheme } from \"../hooks/useSketchTheme\";\nimport { RoughSvg } from \"../primitives/RoughSvg\";\nimport type { SketchProps } from \"../types\";\nimport { assignRef, cn, doodleUiFontFamily } from \"../utils\";\nimport {\n Command,\n CommandEmpty,\n CommandGroup,\n CommandInput,\n CommandItem,\n CommandList,\n} from \"./Command\";\nimport type { SelectOption } from \"./Select\";\n\nconst CHEVRON_PATH = \"M 4 6 L 10 12 L 16 6\";\n\nexport interface ComboboxProps extends SketchProps {\n options: SelectOption[];\n placeholder?: string;\n searchPlaceholder?: string;\n emptyMessage?: ReactNode;\n value?: string;\n defaultValue?: string;\n onValueChange?: (value: string) => void;\n disabled?: boolean;\n className?: string;\n style?: CSSProperties;\n \"aria-label\"?: string;\n /**\n * Draw-in the trigger on mount and the popover border on open.\n * Defaults to the DoodleUIProvider value (true).\n */\n animate?: boolean;\n}\n\n/**\n * Searchable select. Composes `Popover` (positioning) + `Command` (cmdk\n * filtering/list) behind a sketchy `Input`-styled trigger button — the same\n * recipe shadcn uses, since Radix has no dedicated Combobox primitive.\n */\nexport function Combobox({\n options,\n placeholder = \"Select…\",\n searchPlaceholder = \"Search…\",\n emptyMessage = \"No results.\",\n value,\n defaultValue,\n onValueChange,\n disabled,\n className,\n style,\n roughness,\n seed,\n sketchColor,\n bowing,\n fillStyle,\n strokeWidth,\n hachureGap,\n hachureAngle,\n fillWeight,\n animate,\n \"aria-label\": ariaLabel,\n}: ComboboxProps) {\n const [open, setOpen] = useState(false);\n const [uncontrolled, setUncontrolled] = useState(defaultValue);\n const selectedValue = value ?? uncontrolled;\n const selectedOption = options.find(\n (option) => option.value === selectedValue,\n );\n\n const theme = useSketchTheme(sketchColor);\n const ink = sketchColor ?? theme.ink;\n const resolvedSeed = useResolvedSeed(seed);\n const shouldAnimate = useAnimate(animate);\n const triggerRef = useRef<HTMLButtonElement>(null);\n useDrawIn(triggerRef, DRAW_IN_DURATION_MS, shouldAnimate);\n\n function handleSelect(nextValue: string) {\n setUncontrolled(nextValue);\n onValueChange?.(nextValue);\n setOpen(false);\n }\n\n return (\n <PopoverPrimitive.Root open={open} onOpenChange={setOpen}>\n <PopoverPrimitive.Trigger asChild>\n <button\n ref={(node) => assignRef(triggerRef as never, node)}\n type=\"button\"\n role=\"combobox\"\n aria-expanded={open}\n aria-label={ariaLabel}\n disabled={disabled}\n className={cn(className)}\n style={{\n position: \"relative\",\n display: \"inline-flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n gap: 12,\n width: \"100%\",\n minWidth: 200,\n minHeight: 38,\n padding: \"8px 12px\",\n border: \"none\",\n background: \"transparent\",\n cursor: disabled ? \"not-allowed\" : \"pointer\",\n opacity: disabled ? 0.5 : 1,\n color: ink,\n fontFamily: doodleUiFontFamily,\n fontSize: 15,\n lineHeight: 1.2,\n outline: \"none\",\n textAlign: \"left\",\n ...style,\n }}\n >\n <RoughSvg\n shape=\"rectangle\"\n roughness={roughness}\n seed={resolvedSeed}\n sketchColor={open ? theme.accent : ink}\n bowing={bowing}\n fillStyle={fillStyle}\n hachureGap={hachureGap}\n hachureAngle={hachureAngle}\n fillWeight={fillWeight}\n strokeWidth={open ? (strokeWidth ?? 1.75) + 0.35 : strokeWidth}\n />\n <span\n style={{\n position: \"relative\",\n zIndex: 1,\n flex: 1,\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n whiteSpace: \"nowrap\",\n }}\n >\n {selectedOption?.label ?? placeholder}\n </span>\n <span\n style={{ position: \"relative\", zIndex: 1, width: 18, height: 18, flexShrink: 0 }}\n >\n <RoughSvg\n shape=\"path\"\n path={CHEVRON_PATH}\n roughness={roughness ? roughness * 0.7 : 1.05}\n seed={resolvedSeed}\n sketchColor={ink}\n bowing={bowing}\n strokeWidth={(strokeWidth ?? 1.6) + 0.2}\n inset={0}\n />\n </span>\n </button>\n </PopoverPrimitive.Trigger>\n <PopoverPrimitive.Portal>\n <PopoverPrimitive.Content\n align=\"start\"\n sideOffset={8}\n style={{\n zIndex: 80,\n outline: \"none\",\n width: \"var(--radix-popover-trigger-width)\",\n }}\n >\n <Command\n roughness={roughness}\n seed={resolvedSeed}\n sketchColor={ink}\n bowing={bowing}\n fillStyle={fillStyle}\n strokeWidth={strokeWidth}\n hachureGap={hachureGap}\n hachureAngle={hachureAngle}\n fillWeight={fillWeight}\n animate={animate}\n >\n <CommandInput placeholder={searchPlaceholder} />\n <CommandList>\n <CommandEmpty>{emptyMessage}</CommandEmpty>\n <CommandGroup>\n {options.map((option) => (\n <CommandItem\n key={option.value}\n value={option.value}\n disabled={option.disabled}\n onSelect={handleSelect}\n >\n {option.label}\n </CommandItem>\n ))}\n </CommandGroup>\n </CommandList>\n </Command>\n </PopoverPrimitive.Content>\n </PopoverPrimitive.Portal>\n </PopoverPrimitive.Root>\n );\n}\n","\"use client\";\n\nimport { forwardRef, type HTMLAttributes } from \"react\";\nimport { useSketchTheme } from \"../hooks/useSketchTheme\";\nimport { SketchBox } from \"../primitives/SketchBox\";\nimport type { SketchProps } from \"../types\";\nimport { cn, doodleUiFontFamily } from \"../utils\";\n\nexport interface KbdProps\n extends Omit<HTMLAttributes<HTMLElement>, \"color\">,\n SketchProps {\n fill?: string;\n /**\n * Draw-in the border on mount. Defaults to the DoodleUIProvider value (true).\n */\n animate?: boolean;\n}\n\nexport const Kbd = forwardRef<HTMLElement, KbdProps>(function Kbd(\n {\n children,\n className,\n style,\n fill,\n roughness,\n seed,\n sketchColor,\n bowing,\n fillStyle,\n strokeWidth,\n hachureGap,\n hachureAngle,\n fillWeight,\n animate,\n ...rest\n },\n ref,\n) {\n const theme = useSketchTheme(sketchColor);\n const ink = sketchColor ?? theme.ink;\n\n return (\n <SketchBox\n className={cn(className)}\n style={{\n display: \"inline-flex\",\n verticalAlign: \"middle\",\n color: ink,\n ...style,\n }}\n contentStyle={{\n padding: \"2px 7px\",\n fontSize: 11,\n fontFamily: doodleUiFontFamily,\n lineHeight: 1.35,\n letterSpacing: \"0.04em\",\n color: ink,\n }}\n fill={fill ?? theme.secondaryFill}\n fillStyle={fillStyle ?? \"hachure\"}\n hachureGap={hachureGap ?? 6}\n hachureAngle={hachureAngle}\n fillWeight={fillWeight ?? 0.8}\n roughness={roughness}\n seed={seed}\n sketchColor={ink}\n bowing={bowing}\n strokeWidth={strokeWidth ?? 1.3}\n animate={animate}\n {...rest}\n >\n <kbd\n ref={ref}\n style={{\n border: \"none\",\n background: \"transparent\",\n padding: 0,\n font: \"inherit\",\n color: \"inherit\",\n }}\n >\n {children}\n </kbd>\n </SketchBox>\n );\n});\n","\"use client\";\n\nimport { forwardRef, type CSSProperties, type HTMLAttributes } from \"react\";\nimport { motion } from \"framer-motion\";\nimport { useAnimate } from \"../animations\";\nimport { useResolvedSeed } from \"../hooks/useResolvedSeed\";\nimport { useSketchTheme } from \"../hooks/useSketchTheme\";\nimport { RoughSvg } from \"../primitives/RoughSvg\";\nimport type { SketchProps } from \"../types\";\nimport { cn } from \"../utils\";\n\n/** Partial circle arc for a 24×24 viewBox */\nconst SPINNER_ARC = \"M 12 3 A 9 9 0 1 1 11.5 3\";\n\nexport type SpinnerSize = \"sm\" | \"md\" | \"lg\";\n\nconst SIZE_PX: Record<SpinnerSize, number> = {\n sm: 18,\n md: 24,\n lg: 32,\n};\n\nexport interface SpinnerProps\n extends Omit<HTMLAttributes<HTMLDivElement>, \"color\">,\n SketchProps {\n size?: SpinnerSize;\n /**\n * Continuous rotation. Defaults to the DoodleUIProvider value (true).\n * Reduced motion shows a static arc.\n */\n animate?: boolean;\n}\n\nexport const Spinner = forwardRef<HTMLDivElement, SpinnerProps>(\n function Spinner(\n {\n className,\n style,\n size = \"md\",\n roughness,\n seed,\n sketchColor,\n bowing,\n fillStyle,\n strokeWidth,\n animate,\n ...rest\n },\n ref,\n ) {\n const px = SIZE_PX[size];\n const resolvedSeed = useResolvedSeed(seed);\n const theme = useSketchTheme(sketchColor);\n const ink = sketchColor ?? theme.ink;\n const shouldSpin = useAnimate(animate);\n\n const boxStyle: CSSProperties = {\n position: \"relative\",\n width: px,\n height: px,\n flexShrink: 0,\n display: \"inline-block\",\n ...style,\n };\n\n const arc = (\n <RoughSvg\n shape=\"path\"\n path={SPINNER_ARC}\n width={px}\n height={px}\n roughness={roughness ?? 1.6}\n seed={resolvedSeed}\n sketchColor={ink}\n bowing={bowing ?? 1.2}\n fillStyle={fillStyle}\n strokeWidth={strokeWidth ?? 2}\n inset={2}\n />\n );\n\n return (\n <div\n ref={ref}\n role=\"status\"\n aria-label=\"Loading\"\n className={cn(className)}\n style={boxStyle}\n {...rest}\n >\n {shouldSpin ? (\n <motion.div\n style={{ position: \"absolute\", inset: 0 }}\n animate={{ rotate: 360 }}\n transition={{\n duration: 0.9,\n ease: \"linear\",\n repeat: Infinity,\n }}\n >\n {arc}\n </motion.div>\n ) : (\n arc\n )}\n </div>\n );\n },\n);\n","\"use client\";\n\nimport {\n forwardRef,\n useRef,\n useState,\n type MutableRefObject,\n} from \"react\";\nimport * as TogglePrimitive from \"@radix-ui/react-toggle\";\nimport {\n DRAW_IN_DURATION_MS,\n useAnimate,\n useDrawIn,\n} from \"../animations\";\nimport { useResolvedSeed } from \"../hooks/useResolvedSeed\";\nimport { useSketchTheme } from \"../hooks/useSketchTheme\";\nimport { RoughSvg } from \"../primitives/RoughSvg\";\nimport type { SketchProps } from \"../types\";\nimport { assignRef, cn, deriveSeed, doodleUiFontFamily, doodleUiFontWeight } from \"../utils\";\n\nexport type ToggleSize = \"sm\" | \"md\" | \"lg\";\n\nconst SIZE_STYLES: Record<ToggleSize, { fontSize: number; padding: string; minHeight: number }> =\n {\n sm: { fontSize: 13, padding: \"4px 10px\", minHeight: 30 },\n md: { fontSize: 15, padding: \"7px 14px\", minHeight: 38 },\n lg: { fontSize: 17, padding: \"10px 18px\", minHeight: 46 },\n };\n\nexport interface ToggleProps\n extends Omit<TogglePrimitive.ToggleProps, \"asChild\">,\n SketchProps {\n size?: ToggleSize;\n /**\n * Draw-in on mount and seed morph on press.\n * Defaults to the DoodleUIProvider value (true).\n */\n animate?: boolean;\n}\n\nexport const Toggle = forwardRef<HTMLButtonElement, ToggleProps>(\n function Toggle(\n {\n className,\n style,\n size = \"md\",\n roughness,\n seed,\n sketchColor,\n bowing,\n fillStyle,\n strokeWidth,\n hachureGap,\n hachureAngle,\n fillWeight,\n pressed,\n defaultPressed,\n onPressedChange,\n disabled,\n animate,\n children,\n ...rest\n },\n ref,\n ) {\n const rootRef = useRef<HTMLButtonElement>(null);\n const [uncontrolled, setUncontrolled] = useState(defaultPressed === true);\n const isPressed = pressed ?? uncontrolled;\n const theme = useSketchTheme(sketchColor);\n const ink = sketchColor ?? theme.ink;\n const accent = sketchColor ?? theme.accent;\n const accentFill = theme.isDark\n ? (sketchColor ? `${sketchColor}25` : theme.accentFill)\n : theme.accentFill;\n const resolvedSeed = useResolvedSeed(seed);\n const shouldAnimate = useAnimate(animate);\n const pressSeed = deriveSeed(resolvedSeed, isPressed ? \"on\" : \"off\");\n const sketchSeed = shouldAnimate ? pressSeed : resolvedSeed;\n\n useDrawIn(rootRef, DRAW_IN_DURATION_MS, shouldAnimate, sketchSeed);\n\n return (\n <TogglePrimitive.Root\n ref={(node) => {\n (rootRef as MutableRefObject<HTMLButtonElement | null>).current = node;\n assignRef(ref, node);\n }}\n pressed={pressed}\n defaultPressed={defaultPressed}\n onPressedChange={(next) => {\n setUncontrolled(next);\n onPressedChange?.(next);\n }}\n disabled={disabled}\n className={cn(className)}\n style={{\n position: \"relative\",\n display: \"inline-flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n border: \"none\",\n background: \"transparent\",\n cursor: disabled ? \"not-allowed\" : \"pointer\",\n color: isPressed ? (theme.isDark ? \"#ffffff\" : accent) : ink,\n fontFamily: doodleUiFontFamily,\n fontWeight: doodleUiFontWeight(600),\n opacity: disabled ? 0.45 : 1,\n outline: \"none\",\n ...SIZE_STYLES[size],\n ...style,\n }}\n {...rest}\n >\n <RoughSvg\n shape=\"rectangle\"\n roughness={roughness}\n seed={sketchSeed}\n sketchColor={isPressed ? accent : ink}\n bowing={bowing}\n fillStyle={fillStyle ?? \"hachure\"}\n fill={isPressed ? accentFill : undefined}\n strokeWidth={strokeWidth ?? 1.6}\n hachureGap={hachureGap ?? 7}\n hachureAngle={hachureAngle}\n fillWeight={fillWeight ?? 1}\n />\n <span style={{ position: \"relative\", zIndex: 1 }}>{children}</span>\n </TogglePrimitive.Root>\n );\n },\n);\n","\"use client\";\n\nimport {\n createContext,\n forwardRef,\n useContext,\n useLayoutEffect,\n useRef,\n useState,\n type MutableRefObject,\n type ReactNode,\n} from \"react\";\nimport * as ToggleGroupPrimitive from \"@radix-ui/react-toggle-group\";\nimport {\n DRAW_IN_DURATION_MS,\n useAnimate,\n useDrawIn,\n} from \"../animations\";\nimport { useResolvedSeed } from \"../hooks/useResolvedSeed\";\nimport { useSketchTheme } from \"../hooks/useSketchTheme\";\nimport { RoughSvg } from \"../primitives/RoughSvg\";\nimport type { SketchProps } from \"../types\";\nimport { cn, assignRef, deriveSeed, doodleUiFontFamily, doodleUiFontWeight } from \"../utils\";\nimport type { ToggleSize } from \"./Toggle\";\n\ninterface ToggleGroupSketchContextValue extends SketchProps {\n resolvedSeed: number;\n ink: string;\n accent: string;\n accentFill: string;\n isDark: boolean;\n animate?: boolean;\n size: ToggleSize;\n}\n\nconst ToggleGroupSketchContext =\n createContext<ToggleGroupSketchContextValue | null>(null);\n\nfunction useToggleGroupSketch(): ToggleGroupSketchContextValue {\n const ctx = useContext(ToggleGroupSketchContext);\n if (!ctx) {\n throw new Error(\"ToggleGroupItem must be used inside <ToggleGroup>.\");\n }\n return ctx;\n}\n\nexport type ToggleGroupProps = SketchProps & {\n children?: ReactNode;\n size?: ToggleSize;\n animate?: boolean;\n} & (\n | ({ type?: \"single\" } & Omit<\n ToggleGroupPrimitive.ToggleGroupSingleProps,\n \"type\" | \"children\"\n >)\n | ({ type: \"multiple\" } & Omit<\n ToggleGroupPrimitive.ToggleGroupMultipleProps,\n \"type\" | \"children\"\n >)\n);\n\nexport function ToggleGroup(props: ToggleGroupProps) {\n const {\n children,\n roughness,\n seed,\n sketchColor,\n bowing,\n fillStyle,\n strokeWidth,\n hachureGap,\n hachureAngle,\n fillWeight,\n size = \"md\",\n animate,\n type = \"single\",\n ...rest\n } = props;\n const resolvedSeed = useResolvedSeed(seed);\n const theme = useSketchTheme(sketchColor);\n const ink = sketchColor ?? theme.ink;\n const accent = sketchColor ?? theme.accent;\n const accentFill = theme.isDark\n ? (sketchColor ? `${sketchColor}25` : theme.accentFill)\n : theme.accentFill;\n\n const rootStyle = { display: \"inline-flex\", gap: 6, flexWrap: \"wrap\" as const };\n\n return (\n <ToggleGroupSketchContext.Provider\n value={{\n roughness,\n seed: resolvedSeed,\n sketchColor,\n bowing,\n fillStyle,\n strokeWidth,\n hachureGap,\n hachureAngle,\n fillWeight,\n resolvedSeed,\n ink,\n accent,\n accentFill,\n isDark: theme.isDark,\n animate,\n size,\n }}\n >\n {type === \"multiple\" ? (\n <ToggleGroupPrimitive.Root\n type=\"multiple\"\n style={rootStyle}\n {...(rest as Omit<\n ToggleGroupPrimitive.ToggleGroupMultipleProps,\n \"type\" | \"children\"\n >)}\n >\n {children}\n </ToggleGroupPrimitive.Root>\n ) : (\n <ToggleGroupPrimitive.Root\n type=\"single\"\n style={rootStyle}\n {...(rest as Omit<\n ToggleGroupPrimitive.ToggleGroupSingleProps,\n \"type\" | \"children\"\n >)}\n >\n {children}\n </ToggleGroupPrimitive.Root>\n )}\n </ToggleGroupSketchContext.Provider>\n );\n}\n\nconst ITEM_SIZE: Record<\n ToggleSize,\n { fontSize: number; padding: string; minHeight: number }\n> = {\n sm: { fontSize: 13, padding: \"4px 10px\", minHeight: 30 },\n md: { fontSize: 15, padding: \"7px 14px\", minHeight: 38 },\n lg: { fontSize: 17, padding: \"10px 18px\", minHeight: 46 },\n};\n\nexport interface ToggleGroupItemProps\n extends Omit<ToggleGroupPrimitive.ToggleGroupItemProps, \"asChild\"> {\n children?: ReactNode;\n}\n\nexport const ToggleGroupItem = forwardRef<\n HTMLButtonElement,\n ToggleGroupItemProps\n>(function ToggleGroupItem(\n { className, style, children, value, disabled, ...rest },\n ref,\n) {\n const sketch = useToggleGroupSketch();\n const rootRef = useRef<HTMLButtonElement>(null);\n const [pressed, setPressed] = useState(false);\n const shouldAnimate = useAnimate(sketch.animate);\n const pressSeed = deriveSeed(\n sketch.resolvedSeed,\n `${value}-${pressed ? \"on\" : \"off\"}`,\n );\n const sketchSeed = shouldAnimate ? pressSeed : sketch.resolvedSeed;\n\n useLayoutEffect(() => {\n const el = rootRef.current;\n if (!el) return;\n const sync = () => setPressed(el.getAttribute(\"data-state\") === \"on\");\n sync();\n const obs = new MutationObserver(sync);\n obs.observe(el, { attributes: true, attributeFilter: [\"data-state\"] });\n return () => obs.disconnect();\n }, [value]);\n\n useDrawIn(rootRef, DRAW_IN_DURATION_MS, shouldAnimate, sketchSeed);\n\n const textColor = pressed\n ? (sketch.isDark ? \"#ffffff\" : sketch.accent)\n : sketch.ink;\n\n return (\n <ToggleGroupPrimitive.Item\n ref={(node) => {\n (rootRef as MutableRefObject<HTMLButtonElement | null>).current = node;\n assignRef(ref, node);\n }}\n value={value}\n disabled={disabled}\n className={cn(className)}\n style={{\n position: \"relative\",\n display: \"inline-flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n border: \"none\",\n background: \"transparent\",\n cursor: disabled ? \"not-allowed\" : \"pointer\",\n color: textColor,\n fontFamily: doodleUiFontFamily,\n fontWeight: doodleUiFontWeight(600),\n opacity: disabled ? 0.45 : 1,\n outline: \"none\",\n ...ITEM_SIZE[sketch.size],\n ...style,\n }}\n {...rest}\n >\n <RoughSvg\n shape=\"rectangle\"\n roughness={sketch.roughness}\n seed={sketchSeed}\n sketchColor={pressed ? sketch.accent : sketch.ink}\n bowing={sketch.bowing}\n fillStyle={sketch.fillStyle ?? \"hachure\"}\n fill={pressed ? sketch.accentFill : undefined}\n strokeWidth={sketch.strokeWidth ?? 1.6}\n hachureGap={sketch.hachureGap ?? 7}\n hachureAngle={sketch.hachureAngle}\n fillWeight={sketch.fillWeight ?? 1}\n />\n <span style={{ position: \"relative\", zIndex: 1 }}>{children}</span>\n </ToggleGroupPrimitive.Item>\n );\n});\n","\"use client\";\n\nimport {\n createContext,\n forwardRef,\n useContext,\n useState,\n type HTMLAttributes,\n type InputHTMLAttributes,\n type ReactNode,\n} from \"react\";\nimport { useAnimate } from \"../animations\";\nimport { useResolvedSeed } from \"../hooks/useResolvedSeed\";\nimport { useSketchTheme } from \"../hooks/useSketchTheme\";\nimport { SketchBox } from \"../primitives/SketchBox\";\nimport type { SketchProps } from \"../types\";\nimport { cn, deriveSeed, doodleUiFontFamily } from \"../utils\";\n\ninterface InputGroupSketchContextValue extends SketchProps {\n resolvedSeed: number;\n ink: string;\n accent: string;\n animate?: boolean;\n focused: boolean;\n setFocused: (next: boolean) => void;\n}\n\nconst InputGroupSketchContext =\n createContext<InputGroupSketchContextValue | null>(null);\n\nfunction useInputGroupSketch(): InputGroupSketchContextValue {\n const ctx = useContext(InputGroupSketchContext);\n if (!ctx) {\n throw new Error(\"InputGroup parts must be used inside <InputGroup>.\");\n }\n return ctx;\n}\n\nexport interface InputGroupProps\n extends Omit<HTMLAttributes<HTMLDivElement>, \"color\">,\n SketchProps {\n children?: ReactNode;\n animate?: boolean;\n}\n\nexport function InputGroup({\n children,\n className,\n style,\n roughness,\n seed,\n sketchColor,\n bowing,\n fillStyle,\n strokeWidth,\n hachureGap,\n hachureAngle,\n fillWeight,\n animate,\n onFocus,\n onBlur,\n ...rest\n}: InputGroupProps) {\n const resolvedSeed = useResolvedSeed(seed);\n const theme = useSketchTheme(sketchColor);\n const ink = sketchColor ?? theme.ink;\n const [focused, setFocused] = useState(false);\n const shouldAnimate = useAnimate(animate);\n const focusSeed = deriveSeed(resolvedSeed, \"focus\");\n const sketchSeed = shouldAnimate && focused ? focusSeed : resolvedSeed;\n\n return (\n <InputGroupSketchContext.Provider\n value={{\n roughness,\n seed: resolvedSeed,\n sketchColor: ink,\n bowing,\n fillStyle,\n strokeWidth,\n hachureGap,\n hachureAngle,\n fillWeight,\n resolvedSeed,\n ink,\n accent: theme.accent,\n animate,\n focused,\n setFocused,\n }}\n >\n <div\n className={cn(className)}\n style={{ position: \"relative\", width: \"100%\", ...style }}\n onFocus={(event) => {\n setFocused(true);\n onFocus?.(event);\n }}\n onBlur={(event) => {\n if (!event.currentTarget.contains(event.relatedTarget as Node | null)) {\n setFocused(false);\n }\n onBlur?.(event);\n }}\n {...rest}\n >\n <SketchBox\n roughness={roughness}\n seed={sketchSeed}\n sketchColor={focused ? theme.accent : ink}\n bowing={bowing}\n fillStyle={fillStyle}\n strokeWidth={\n focused && !shouldAnimate\n ? (strokeWidth ?? 1.75) + 0.35\n : strokeWidth\n }\n hachureGap={hachureGap}\n hachureAngle={hachureAngle}\n fillWeight={fillWeight}\n animate={animate}\n drawInKey={sketchSeed}\n contentStyle={{\n display: \"flex\",\n alignItems: \"stretch\",\n minHeight: 38,\n }}\n >\n {children}\n </SketchBox>\n </div>\n </InputGroupSketchContext.Provider>\n );\n}\n\nexport interface InputGroupAddonProps extends HTMLAttributes<HTMLSpanElement> {\n align?: \"inline-start\" | \"inline-end\";\n}\n\nexport const InputGroupAddon = forwardRef<HTMLSpanElement, InputGroupAddonProps>(\n function InputGroupAddon(\n { className, style, align = \"inline-start\", children, ...rest },\n ref,\n ) {\n const sketch = useInputGroupSketch();\n return (\n <span\n ref={ref}\n className={cn(className)}\n style={{\n display: \"inline-flex\",\n alignItems: \"center\",\n padding: align === \"inline-start\" ? \"0 0 0 10px\" : \"0 10px 0 0\",\n fontFamily: doodleUiFontFamily,\n fontSize: 14,\n color: sketch.ink,\n flexShrink: 0,\n ...style,\n }}\n {...rest}\n >\n {children}\n </span>\n );\n },\n);\n\nexport interface InputGroupInputProps\n extends Omit<InputHTMLAttributes<HTMLInputElement>, \"color\" | \"size\"> {}\n\nexport const InputGroupInput = forwardRef<\n HTMLInputElement,\n InputGroupInputProps\n>(function InputGroupInput({ className, style, ...rest }, ref) {\n const sketch = useInputGroupSketch();\n return (\n <input\n ref={ref}\n className={cn(className)}\n style={{\n flex: 1,\n minWidth: 0,\n border: \"none\",\n outline: \"none\",\n background: \"transparent\",\n color: sketch.ink,\n fontFamily: doodleUiFontFamily,\n fontSize: 15,\n padding: \"8px 10px\",\n ...style,\n }}\n {...rest}\n />\n );\n});\n\nexport interface InputGroupButtonProps extends HTMLAttributes<HTMLSpanElement> {}\n\nexport const InputGroupButton = forwardRef<\n HTMLSpanElement,\n InputGroupButtonProps\n>(function InputGroupButton({ className, style, children, ...rest }, ref) {\n return (\n <span\n ref={ref}\n className={cn(className)}\n style={{\n display: \"inline-flex\",\n alignItems: \"center\",\n padding: \"0 6px 0 0\",\n ...style,\n }}\n {...rest}\n >\n {children}\n </span>\n );\n});\n","\"use client\";\n\nimport {\n createContext,\n forwardRef,\n useContext,\n useRef,\n type ComponentPropsWithoutRef,\n type HTMLAttributes,\n type MutableRefObject,\n type ReactNode,\n} from \"react\";\nimport { OTPInput, OTPInputContext } from \"input-otp\";\nimport { motion } from \"framer-motion\";\nimport {\n DRAW_IN_DURATION_MS,\n useAnimate,\n useDrawIn,\n} from \"../animations\";\nimport { useResolvedSeed } from \"../hooks/useResolvedSeed\";\nimport { useSketchTheme } from \"../hooks/useSketchTheme\";\nimport { RoughSvg } from \"../primitives/RoughSvg\";\nimport type { SketchProps } from \"../types\";\nimport { cn, assignRef, deriveSeed, doodleUiFontFamily } from \"../utils\";\n\ninterface InputOTPSketchContextValue extends SketchProps {\n resolvedSeed: number;\n ink: string;\n accent: string;\n paper: string;\n fill?: string;\n animate?: boolean;\n}\n\nconst InputOTPSketchContext = createContext<InputOTPSketchContextValue | null>(\n null,\n);\n\nfunction useInputOTPSketch(): InputOTPSketchContextValue {\n const ctx = useContext(InputOTPSketchContext);\n if (!ctx) {\n throw new Error(\"InputOTP parts must be used inside <InputOTP>.\");\n }\n return ctx;\n}\n\nexport interface InputOTPProps\n extends Omit<ComponentPropsWithoutRef<typeof OTPInput>, \"render\">,\n SketchProps {\n fill?: string;\n animate?: boolean;\n}\n\nexport const InputOTP = forwardRef<HTMLInputElement, InputOTPProps>(\n function InputOTP(\n {\n className,\n containerClassName,\n roughness,\n seed,\n sketchColor,\n bowing,\n fillStyle,\n strokeWidth,\n hachureGap,\n hachureAngle,\n fillWeight,\n fill,\n animate,\n children,\n ...rest\n },\n ref,\n ) {\n const resolvedSeed = useResolvedSeed(seed);\n const theme = useSketchTheme(sketchColor);\n const ink = sketchColor ?? theme.ink;\n\n return (\n <InputOTPSketchContext.Provider\n value={{\n roughness,\n seed: resolvedSeed,\n sketchColor: ink,\n bowing,\n fillStyle,\n strokeWidth,\n hachureGap,\n hachureAngle,\n fillWeight,\n fill,\n resolvedSeed,\n ink,\n accent: theme.accent,\n paper: theme.paper,\n animate,\n }}\n >\n <OTPInput\n ref={ref}\n containerClassName={cn(className, containerClassName)}\n {...rest}\n >\n {children}\n </OTPInput>\n </InputOTPSketchContext.Provider>\n );\n },\n);\n\nexport interface InputOTPGroupProps extends HTMLAttributes<HTMLDivElement> {\n children?: ReactNode;\n}\n\nexport const InputOTPGroup = forwardRef<HTMLDivElement, InputOTPGroupProps>(\n function InputOTPGroup({ className, style, children, ...rest }, ref) {\n return (\n <div\n ref={ref}\n className={cn(className)}\n style={{ display: \"flex\", alignItems: \"center\", gap: 8, ...style }}\n {...rest}\n >\n {children}\n </div>\n );\n },\n);\n\nexport interface InputOTPSlotProps extends HTMLAttributes<HTMLDivElement> {\n index: number;\n}\n\nexport const InputOTPSlot = forwardRef<HTMLDivElement, InputOTPSlotProps>(\n function InputOTPSlot({ index, className, style, ...rest }, ref) {\n const inputContext = useContext(OTPInputContext);\n const sketch = useInputOTPSketch();\n const slotRef = useRef<HTMLDivElement>(null);\n const shouldAnimate = useAnimate(sketch.animate);\n\n const { char, isActive, hasFakeCaret } = inputContext?.slots[index] ?? {\n char: null,\n isActive: false,\n hasFakeCaret: false,\n };\n const slotSeed = deriveSeed(\n sketch.resolvedSeed,\n `slot-${index}-${isActive ? \"active\" : \"idle\"}`,\n );\n\n useDrawIn(slotRef, DRAW_IN_DURATION_MS, shouldAnimate, slotSeed);\n\n if (!inputContext) {\n throw new Error(\"InputOTPSlot must be used inside <InputOTP>.\");\n }\n\n return (\n <div\n ref={(node) => {\n (slotRef as MutableRefObject<HTMLDivElement | null>).current = node;\n assignRef(ref, node);\n }}\n className={cn(className)}\n style={{\n position: \"relative\",\n width: 40,\n height: 44,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n fontFamily: doodleUiFontFamily,\n fontSize: 18,\n color: sketch.ink,\n ...style,\n }}\n {...rest}\n >\n <RoughSvg\n shape=\"rectangle\"\n roughness={sketch.roughness}\n seed={slotSeed}\n sketchColor={isActive ? sketch.accent : sketch.ink}\n bowing={sketch.bowing}\n fillStyle={sketch.fillStyle}\n fill={sketch.fill}\n hachureGap={sketch.hachureGap}\n hachureAngle={sketch.hachureAngle}\n fillWeight={sketch.fillWeight}\n strokeWidth={\n isActive ? (sketch.strokeWidth ?? 1.75) + 0.15 : sketch.strokeWidth\n }\n />\n <span style={{ position: \"relative\", zIndex: 1 }}>\n {char}\n {hasFakeCaret ? (\n <motion.span\n aria-hidden\n style={{\n display: \"inline-block\",\n width: 2,\n height: \"0.85em\",\n marginLeft: 2,\n background: sketch.ink,\n verticalAlign: \"middle\",\n }}\n animate={shouldAnimate ? { opacity: [1, 0, 1] } : { opacity: 1 }}\n transition={\n shouldAnimate\n ? { duration: 1, repeat: Infinity, ease: \"linear\" }\n : undefined\n }\n />\n ) : null}\n </span>\n </div>\n );\n },\n);\n\nexport interface InputOTPSeparatorProps extends HTMLAttributes<HTMLSpanElement> {}\n\nexport const InputOTPSeparator = forwardRef<\n HTMLSpanElement,\n InputOTPSeparatorProps\n>(function InputOTPSeparator({ children = \"–\", className, style, ...rest }, ref) {\n const sketch = useInputOTPSketch();\n return (\n <span\n ref={ref}\n role=\"separator\"\n className={cn(className)}\n style={{\n fontFamily: doodleUiFontFamily,\n color: sketch.ink,\n opacity: 0.5,\n userSelect: \"none\",\n ...style,\n }}\n {...rest}\n >\n {children}\n </span>\n );\n});\n","\"use client\";\n\nimport {\n createContext,\n forwardRef,\n useContext,\n type ComponentPropsWithoutRef,\n type ReactNode,\n} from \"react\";\nimport * as ScrollAreaPrimitive from \"@radix-ui/react-scroll-area\";\nimport { useResolvedSeed } from \"../hooks/useResolvedSeed\";\nimport { useSketchTheme } from \"../hooks/useSketchTheme\";\nimport { RoughSvg } from \"../primitives/RoughSvg\";\nimport { SketchBox } from \"../primitives/SketchBox\";\nimport type { SketchProps } from \"../types\";\nimport { cn } from \"../utils\";\n\ninterface ScrollAreaSketchContextValue extends SketchProps {\n resolvedSeed: number;\n ink: string;\n paper: string;\n animate?: boolean;\n}\n\nconst ScrollAreaSketchContext =\n createContext<ScrollAreaSketchContextValue | null>(null);\n\nfunction useScrollAreaSketch(): ScrollAreaSketchContextValue {\n const ctx = useContext(ScrollAreaSketchContext);\n if (!ctx) {\n throw new Error(\"ScrollArea parts must be used inside <ScrollArea>.\");\n }\n return ctx;\n}\n\nexport interface ScrollAreaProps\n extends Omit<ComponentPropsWithoutRef<typeof ScrollAreaPrimitive.Root>, \"children\">,\n SketchProps {\n children?: ReactNode;\n fill?: string;\n animate?: boolean;\n}\n\nexport const ScrollArea = forwardRef<\n HTMLDivElement,\n ScrollAreaProps\n>(function ScrollArea(\n {\n className,\n style,\n children,\n fill,\n roughness,\n seed,\n sketchColor,\n bowing,\n fillStyle,\n strokeWidth,\n hachureGap,\n hachureAngle,\n fillWeight,\n animate,\n ...rest\n },\n ref,\n) {\n const resolvedSeed = useResolvedSeed(seed);\n const theme = useSketchTheme(sketchColor);\n const ink = sketchColor ?? theme.ink;\n\n return (\n <ScrollAreaSketchContext.Provider\n value={{\n roughness,\n seed: resolvedSeed,\n sketchColor,\n bowing,\n fillStyle,\n strokeWidth,\n hachureGap,\n hachureAngle,\n fillWeight,\n resolvedSeed,\n ink,\n paper: fill ?? theme.paper,\n animate,\n }}\n >\n <ScrollAreaPrimitive.Root\n ref={ref}\n className={cn(className)}\n style={{ position: \"relative\", overflow: \"hidden\", color: ink, ...style }}\n {...rest}\n >\n <SketchBox\n roughness={roughness}\n seed={resolvedSeed}\n sketchColor={ink}\n bowing={bowing}\n fillStyle={fillStyle ?? \"solid\"}\n fill={fill ?? theme.paper}\n strokeWidth={strokeWidth ?? 1.5}\n hachureGap={hachureGap}\n hachureAngle={hachureAngle}\n fillWeight={fillWeight}\n animate={animate}\n contentStyle={{ padding: 0, height: \"100%\", color: ink }}\n style={{ height: \"100%\" }}\n >\n {children}\n </SketchBox>\n </ScrollAreaPrimitive.Root>\n </ScrollAreaSketchContext.Provider>\n );\n});\n\nexport const ScrollAreaViewport = forwardRef<\n HTMLDivElement,\n ComponentPropsWithoutRef<typeof ScrollAreaPrimitive.Viewport>\n>(function ScrollAreaViewport({ className, style, children, ...rest }, ref) {\n return (\n <ScrollAreaPrimitive.Viewport\n ref={ref}\n className={cn(className)}\n style={{\n width: \"100%\",\n height: \"100%\",\n borderRadius: 0,\n ...style,\n }}\n {...rest}\n >\n {children}\n </ScrollAreaPrimitive.Viewport>\n );\n});\n\nexport interface ScrollBarProps\n extends ComponentPropsWithoutRef<typeof ScrollAreaPrimitive.ScrollAreaScrollbar> {}\n\nexport const ScrollBar = forwardRef<HTMLDivElement, ScrollBarProps>(\n function ScrollBar(\n { className, style, orientation = \"vertical\", ...rest },\n ref,\n ) {\n const sketch = useScrollAreaSketch();\n\n return (\n <ScrollAreaPrimitive.ScrollAreaScrollbar\n ref={ref}\n orientation={orientation}\n className={cn(className)}\n style={{\n display: \"flex\",\n touchAction: \"none\",\n userSelect: \"none\",\n padding: 2,\n ...(orientation === \"vertical\"\n ? { width: 12, flexDirection: \"column\" }\n : { height: 12, flexDirection: \"row\" }),\n ...style,\n }}\n {...rest}\n >\n <ScrollAreaPrimitive.ScrollAreaThumb asChild>\n <div style={{ position: \"relative\", flex: 1 }}>\n <RoughSvg\n shape={orientation === \"vertical\" ? \"line-vertical\" : \"line\"}\n roughness={(sketch.roughness ?? 1.5) + 0.3}\n seed={sketch.resolvedSeed}\n sketchColor={sketch.ink}\n bowing={sketch.bowing}\n strokeWidth={sketch.strokeWidth ?? 2.2}\n inset={1}\n />\n </div>\n </ScrollAreaPrimitive.ScrollAreaThumb>\n </ScrollAreaPrimitive.ScrollAreaScrollbar>\n );\n },\n);\n\nexport const ScrollAreaCorner = ScrollAreaPrimitive.Corner;\n","\"use client\";\n\nimport {\n type ComponentPropsWithoutRef,\n type CSSProperties,\n} from \"react\";\nimport * as ResizablePrimitive from \"react-resizable-panels\";\nimport { useResolvedSeed } from \"../hooks/useResolvedSeed\";\nimport { useSketchTheme } from \"../hooks/useSketchTheme\";\nimport { RoughSvg } from \"../primitives/RoughSvg\";\nimport type { SketchProps } from \"../types\";\nimport { cn, deriveSeed } from \"../utils\";\n\nexport type ResizablePanelGroupProps = ComponentPropsWithoutRef<\n typeof ResizablePrimitive.PanelGroup\n> &\n SketchProps;\n\nexport function ResizablePanelGroup({\n className,\n style,\n ...rest\n}: ResizablePanelGroupProps) {\n return (\n <ResizablePrimitive.PanelGroup\n className={cn(className)}\n style={{ display: \"flex\", width: \"100%\", height: \"100%\", ...style }}\n {...rest}\n />\n );\n}\n\nexport const ResizablePanel = ResizablePrimitive.Panel;\n\nexport interface ResizableHandleProps\n extends ComponentPropsWithoutRef<typeof ResizablePrimitive.PanelResizeHandle>,\n SketchProps {\n withHandle?: boolean;\n}\n\nexport function ResizableHandle({\n className,\n style,\n withHandle = true,\n roughness,\n seed,\n sketchColor,\n bowing,\n strokeWidth,\n ...rest\n}: ResizableHandleProps) {\n const resolvedSeed = useResolvedSeed(seed);\n const theme = useSketchTheme(sketchColor);\n const ink = sketchColor ?? theme.ink;\n const handleSeed = deriveSeed(resolvedSeed, \"handle\");\n\n const base: CSSProperties = {\n position: \"relative\",\n flexShrink: 0,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n background: \"transparent\",\n touchAction: \"none\",\n ...style,\n };\n\n return (\n <ResizablePrimitive.PanelResizeHandle\n className={cn(className)}\n style={base}\n {...rest}\n >\n {withHandle ? (\n <div\n style={{\n position: \"relative\",\n width: 14,\n height: 28,\n zIndex: 1,\n }}\n >\n <RoughSvg\n shape=\"line-vertical\"\n roughness={roughness ?? 1.8}\n seed={handleSeed}\n sketchColor={ink}\n bowing={bowing ?? 1.5}\n strokeWidth={strokeWidth ?? 2.4}\n width={14}\n height={28}\n inset={2}\n />\n <RoughSvg\n shape=\"ellipse\"\n roughness={(roughness ?? 1.5) + 0.2}\n seed={deriveSeed(handleSeed, \"dot-a\")}\n sketchColor={ink}\n width={14}\n height={28}\n strokeWidth={1.2}\n inset={5}\n style={{ opacity: 0.55 }}\n />\n </div>\n ) : null}\n </ResizablePrimitive.PanelResizeHandle>\n );\n}\n","\"use client\";\n\nimport {\n createContext,\n forwardRef,\n useContext,\n type ComponentPropsWithoutRef,\n type ReactNode,\n} from \"react\";\nimport * as HoverCardPrimitive from \"@radix-ui/react-hover-card\";\nimport { useResolvedSeed } from \"../hooks/useResolvedSeed\";\nimport { useSketchTheme } from \"../hooks/useSketchTheme\";\nimport { SketchBox } from \"../primitives/SketchBox\";\nimport type { SketchProps } from \"../types\";\nimport { cn } from \"../utils\";\n\ninterface HoverCardSketchContextValue extends SketchProps {\n resolvedSeed: number;\n ink: string;\n paper: string;\n animate?: boolean;\n}\n\nconst HoverCardSketchContext = createContext<HoverCardSketchContextValue | null>(\n null,\n);\n\nfunction useHoverCardSketch(): HoverCardSketchContextValue {\n const ctx = useContext(HoverCardSketchContext);\n if (!ctx) {\n throw new Error(\"HoverCard parts must be used inside <HoverCard>.\");\n }\n return ctx;\n}\n\nexport interface HoverCardProps\n extends Omit<ComponentPropsWithoutRef<typeof HoverCardPrimitive.Root>, \"children\">,\n SketchProps {\n children?: ReactNode;\n fill?: string;\n animate?: boolean;\n}\n\nexport function HoverCard({\n children,\n fill,\n roughness,\n seed,\n sketchColor,\n bowing,\n fillStyle,\n strokeWidth,\n hachureGap,\n hachureAngle,\n fillWeight,\n animate,\n ...rest\n}: HoverCardProps) {\n const resolvedSeed = useResolvedSeed(seed);\n const theme = useSketchTheme(sketchColor);\n const ink = sketchColor ?? theme.ink;\n\n return (\n <HoverCardSketchContext.Provider\n value={{\n roughness,\n seed: resolvedSeed,\n sketchColor,\n bowing,\n fillStyle,\n strokeWidth,\n hachureGap,\n hachureAngle,\n fillWeight,\n resolvedSeed,\n ink,\n paper: fill ?? theme.paper,\n animate,\n }}\n >\n <HoverCardPrimitive.Root {...rest}>{children}</HoverCardPrimitive.Root>\n </HoverCardSketchContext.Provider>\n );\n}\n\nexport const HoverCardTrigger = HoverCardPrimitive.Trigger;\n\nexport interface HoverCardContentProps\n extends ComponentPropsWithoutRef<typeof HoverCardPrimitive.Content> {\n children?: ReactNode;\n fill?: string;\n}\n\nexport const HoverCardContent = forwardRef<\n HTMLDivElement,\n HoverCardContentProps\n>(function HoverCardContent(\n { className, style, children, fill, sideOffset = 6, align = \"center\", ...rest },\n ref,\n) {\n const sketch = useHoverCardSketch();\n\n return (\n <HoverCardPrimitive.Portal>\n <HoverCardPrimitive.Content\n ref={ref}\n sideOffset={sideOffset}\n align={align}\n className={cn(className)}\n style={{ zIndex: 75, outline: \"none\", color: sketch.ink, ...style }}\n {...rest}\n >\n <SketchBox\n roughness={sketch.roughness}\n seed={sketch.resolvedSeed}\n sketchColor={sketch.ink}\n bowing={sketch.bowing}\n fillStyle={sketch.fillStyle ?? \"solid\"}\n fill={fill ?? sketch.paper}\n strokeWidth={sketch.strokeWidth ?? 1.5}\n hachureGap={sketch.hachureGap}\n hachureAngle={sketch.hachureAngle}\n fillWeight={sketch.fillWeight}\n shadow\n animate={sketch.animate}\n contentStyle={{ padding: 14, maxWidth: 320, fontSize: 14, color: sketch.ink }}\n >\n {children}\n </SketchBox>\n </HoverCardPrimitive.Content>\n </HoverCardPrimitive.Portal>\n );\n});\n\nexport const HoverCardArrow = HoverCardPrimitive.Arrow;\n","\"use client\";\n\nimport {\n createContext,\n forwardRef,\n useContext,\n useState,\n type ComponentPropsWithoutRef,\n type ReactNode,\n} from \"react\";\nimport * as ContextMenuPrimitive from \"@radix-ui/react-context-menu\";\nimport { useResolvedSeed } from \"../hooks/useResolvedSeed\";\nimport { useSketchTheme } from \"../hooks/useSketchTheme\";\nimport { RoughSvg } from \"../primitives/RoughSvg\";\nimport { SketchBox } from \"../primitives/SketchBox\";\nimport type { SketchProps } from \"../types\";\nimport { cn, deriveSeed, doodleUiFontFamily } from \"../utils\";\n\ninterface ContextMenuSketchContextValue extends SketchProps {\n resolvedSeed: number;\n ink: string;\n paper: string;\n accent: string;\n animate?: boolean;\n}\n\nconst ContextMenuSketchContext =\n createContext<ContextMenuSketchContextValue | null>(null);\n\nfunction useContextMenuSketch(): ContextMenuSketchContextValue {\n const ctx = useContext(ContextMenuSketchContext);\n if (!ctx) {\n throw new Error(\n \"ContextMenu parts must be used inside <ContextMenu>.\",\n );\n }\n return ctx;\n}\n\nexport interface ContextMenuProps\n extends Omit<ContextMenuPrimitive.ContextMenuProps, \"children\">,\n SketchProps {\n children?: ReactNode;\n fill?: string;\n /**\n * Draw-in the panel border when the menu opens.\n * Defaults to the DoodleUIProvider value (true).\n */\n animate?: boolean;\n}\n\nexport function ContextMenu({\n children,\n fill,\n roughness,\n seed,\n sketchColor,\n bowing,\n fillStyle,\n strokeWidth,\n hachureGap,\n hachureAngle,\n fillWeight,\n animate,\n ...rest\n}: ContextMenuProps) {\n const resolvedSeed = useResolvedSeed(seed);\n const theme = useSketchTheme(sketchColor);\n const ink = sketchColor ?? theme.ink;\n\n return (\n <ContextMenuSketchContext.Provider\n value={{\n roughness,\n seed: resolvedSeed,\n sketchColor,\n bowing,\n fillStyle,\n strokeWidth,\n hachureGap,\n hachureAngle,\n fillWeight,\n resolvedSeed,\n ink,\n paper: fill ?? theme.paper,\n accent: theme.accent,\n animate,\n }}\n >\n <ContextMenuPrimitive.Root {...rest}>\n {children}\n </ContextMenuPrimitive.Root>\n </ContextMenuSketchContext.Provider>\n );\n}\n\nexport const ContextMenuTrigger = ContextMenuPrimitive.Trigger;\nexport const ContextMenuGroup = ContextMenuPrimitive.Group;\nexport const ContextMenuRadioGroup = ContextMenuPrimitive.RadioGroup;\nexport const ContextMenuSub = ContextMenuPrimitive.Sub;\n\nexport interface ContextMenuContentProps\n extends Omit<ComponentPropsWithoutRef<typeof ContextMenuPrimitive.Content>, \"asChild\"> {\n children?: ReactNode;\n fill?: string;\n}\n\nexport const ContextMenuContent = forwardRef<\n HTMLDivElement,\n ContextMenuContentProps\n>(function ContextMenuContent(\n { className, style, children, fill, ...rest },\n ref,\n) {\n const sketch = useContextMenuSketch();\n\n return (\n <ContextMenuPrimitive.Portal>\n <ContextMenuPrimitive.Content\n ref={ref}\n className={cn(className)}\n style={{ zIndex: 80, outline: \"none\", minWidth: 180, color: sketch.ink, ...style }}\n {...rest}\n >\n <SketchBox\n roughness={sketch.roughness}\n seed={sketch.resolvedSeed}\n sketchColor={sketch.ink}\n bowing={sketch.bowing}\n fillStyle={sketch.fillStyle ?? \"solid\"}\n fill={fill ?? sketch.paper}\n strokeWidth={sketch.strokeWidth ?? 1.5}\n hachureGap={sketch.hachureGap}\n hachureAngle={sketch.hachureAngle}\n fillWeight={sketch.fillWeight}\n shadow\n animate={sketch.animate}\n contentStyle={{ padding: \"6px 4px\", color: sketch.ink }}\n >\n {children}\n </SketchBox>\n </ContextMenuPrimitive.Content>\n </ContextMenuPrimitive.Portal>\n );\n});\n\nfunction useMark(highlighted: boolean) {\n const sketch = useContextMenuSketch();\n return { sketch, mark: highlighted };\n}\n\nexport interface ContextMenuItemProps\n extends Omit<ContextMenuPrimitive.ContextMenuItemProps, \"asChild\"> {\n children?: ReactNode;\n inset?: boolean;\n}\n\nexport const ContextMenuItem = forwardRef<\n HTMLDivElement,\n ContextMenuItemProps\n>(function ContextMenuItem(\n { className, style, children, inset, ...rest },\n ref,\n) {\n const [highlighted, setHighlighted] = useState(false);\n const { sketch, mark } = useMark(highlighted);\n\n return (\n <ContextMenuPrimitive.Item\n ref={ref}\n className={cn(className)}\n onPointerMove={() => setHighlighted(true)}\n onPointerLeave={() => setHighlighted(false)}\n onFocus={() => setHighlighted(true)}\n onBlur={() => setHighlighted(false)}\n style={{\n position: \"relative\",\n display: \"flex\",\n alignItems: \"center\",\n gap: 8,\n padding: inset ? \"7px 12px 7px 26px\" : \"7px 12px\",\n fontFamily: doodleUiFontFamily,\n fontSize: 14,\n color: sketch.ink,\n outline: \"none\",\n cursor: \"pointer\",\n userSelect: \"none\",\n ...style,\n }}\n {...rest}\n >\n {mark ? (\n <RoughSvg\n shape=\"line\"\n roughness={(sketch.roughness ?? 1.5) + 0.4}\n seed={sketch.resolvedSeed}\n sketchColor={sketch.ink}\n bowing={sketch.bowing ?? 1.6}\n strokeWidth={1.3}\n inset={4}\n style={{ opacity: 0.4 }}\n />\n ) : null}\n <span style={{ position: \"relative\", zIndex: 1 }}>{children}</span>\n </ContextMenuPrimitive.Item>\n );\n});\n\nexport interface ContextMenuCheckboxItemProps\n extends Omit<\n ContextMenuPrimitive.ContextMenuCheckboxItemProps,\n \"asChild\"\n > {\n children?: ReactNode;\n}\n\nconst CHECK_PATH = \"M 2 6 L 5 9 L 10 3\";\n\nexport const ContextMenuCheckboxItem = forwardRef<\n HTMLDivElement,\n ContextMenuCheckboxItemProps\n>(function ContextMenuCheckboxItem(\n { className, style, children, checked, ...rest },\n ref,\n) {\n const [highlighted, setHighlighted] = useState(false);\n const { sketch, mark } = useMark(highlighted);\n\n return (\n <ContextMenuPrimitive.CheckboxItem\n ref={ref}\n checked={checked}\n className={cn(className)}\n onPointerMove={() => setHighlighted(true)}\n onPointerLeave={() => setHighlighted(false)}\n style={{\n position: \"relative\",\n display: \"flex\",\n alignItems: \"center\",\n gap: 8,\n padding: \"7px 12px 7px 26px\",\n fontFamily: doodleUiFontFamily,\n fontSize: 14,\n color: sketch.ink,\n outline: \"none\",\n cursor: \"pointer\",\n userSelect: \"none\",\n ...style,\n }}\n {...rest}\n >\n {mark ? (\n <RoughSvg\n shape=\"line\"\n roughness={(sketch.roughness ?? 1.5) + 0.4}\n seed={sketch.resolvedSeed}\n sketchColor={sketch.ink}\n bowing={sketch.bowing ?? 1.6}\n strokeWidth={1.3}\n inset={4}\n style={{ opacity: 0.4 }}\n />\n ) : null}\n <span\n style={{\n position: \"relative\",\n width: 12,\n height: 12,\n flexShrink: 0,\n marginLeft: -18,\n }}\n >\n <ContextMenuPrimitive.ItemIndicator>\n <RoughSvg\n shape=\"path\"\n path={CHECK_PATH}\n roughness={(sketch.roughness ?? 1.5) * 0.7}\n seed={deriveSeed(sketch.resolvedSeed, \"checkbox-mark\")}\n sketchColor={sketch.accent}\n bowing={sketch.bowing}\n strokeWidth={1.6}\n inset={0}\n />\n </ContextMenuPrimitive.ItemIndicator>\n </span>\n <span style={{ position: \"relative\", zIndex: 1 }}>{children}</span>\n </ContextMenuPrimitive.CheckboxItem>\n );\n});\n\nexport interface ContextMenuRadioItemProps\n extends Omit<ContextMenuPrimitive.ContextMenuRadioItemProps, \"asChild\"> {\n children?: ReactNode;\n}\n\nexport const ContextMenuRadioItem = forwardRef<\n HTMLDivElement,\n ContextMenuRadioItemProps\n>(function ContextMenuRadioItem(\n { className, style, children, ...rest },\n ref,\n) {\n const [highlighted, setHighlighted] = useState(false);\n const { sketch, mark } = useMark(highlighted);\n\n return (\n <ContextMenuPrimitive.RadioItem\n ref={ref}\n className={cn(className)}\n onPointerMove={() => setHighlighted(true)}\n onPointerLeave={() => setHighlighted(false)}\n style={{\n position: \"relative\",\n display: \"flex\",\n alignItems: \"center\",\n gap: 8,\n padding: \"7px 12px 7px 26px\",\n fontFamily: doodleUiFontFamily,\n fontSize: 14,\n color: sketch.ink,\n outline: \"none\",\n cursor: \"pointer\",\n userSelect: \"none\",\n ...style,\n }}\n {...rest}\n >\n {mark ? (\n <RoughSvg\n shape=\"line\"\n roughness={(sketch.roughness ?? 1.5) + 0.4}\n seed={sketch.resolvedSeed}\n sketchColor={sketch.ink}\n bowing={sketch.bowing ?? 1.6}\n strokeWidth={1.3}\n inset={4}\n style={{ opacity: 0.4 }}\n />\n ) : null}\n <span\n style={{\n position: \"relative\",\n width: 8,\n height: 8,\n flexShrink: 0,\n marginLeft: -18,\n }}\n >\n <ContextMenuPrimitive.ItemIndicator>\n <RoughSvg\n shape=\"ellipse\"\n roughness={(sketch.roughness ?? 1.5) * 0.8}\n seed={deriveSeed(sketch.resolvedSeed, \"radio-mark\")}\n sketchColor={sketch.accent}\n bowing={sketch.bowing}\n fillStyle=\"solid\"\n fill={sketch.accent}\n strokeWidth={1.2}\n inset={0}\n />\n </ContextMenuPrimitive.ItemIndicator>\n </span>\n <span style={{ position: \"relative\", zIndex: 1 }}>{children}</span>\n </ContextMenuPrimitive.RadioItem>\n );\n});\n\nexport interface ContextMenuLabelProps\n extends Omit<ContextMenuPrimitive.ContextMenuLabelProps, \"asChild\"> {\n children?: ReactNode;\n}\n\nexport const ContextMenuLabel = forwardRef<\n HTMLDivElement,\n ContextMenuLabelProps\n>(function ContextMenuLabel({ className, style, children, ...rest }, ref) {\n const sketch = useContextMenuSketch();\n return (\n <ContextMenuPrimitive.Label\n ref={ref}\n className={cn(className)}\n style={{\n padding: \"6px 12px\",\n fontFamily: doodleUiFontFamily,\n fontSize: 12,\n fontWeight: 700,\n color: sketch.ink,\n opacity: 0.6,\n textTransform: \"uppercase\",\n letterSpacing: 0.4,\n ...style,\n }}\n {...rest}\n >\n {children}\n </ContextMenuPrimitive.Label>\n );\n});\n\nexport interface ContextMenuSeparatorProps\n extends Omit<ContextMenuPrimitive.ContextMenuSeparatorProps, \"asChild\"> {}\n\nexport const ContextMenuSeparator = forwardRef<\n HTMLDivElement,\n ContextMenuSeparatorProps\n>(function ContextMenuSeparator({ className, style, ...rest }, ref) {\n const sketch = useContextMenuSketch();\n return (\n <ContextMenuPrimitive.Separator\n ref={ref}\n className={cn(className)}\n style={{ position: \"relative\", height: 10, margin: \"2px 0\", ...style }}\n {...rest}\n >\n <RoughSvg\n shape=\"line\"\n roughness={(sketch.roughness ?? 1.5) + 0.2}\n seed={deriveSeed(sketch.resolvedSeed, \"separator\")}\n sketchColor={sketch.ink}\n bowing={sketch.bowing ?? 1.8}\n strokeWidth={1.2}\n inset={6}\n style={{ opacity: 0.5 }}\n />\n </ContextMenuPrimitive.Separator>\n );\n});\n","\"use client\";\n\nimport {\n createContext,\n forwardRef,\n useContext,\n useState,\n type ComponentPropsWithoutRef,\n type ReactNode,\n} from \"react\";\nimport * as NavigationMenuPrimitive from \"@radix-ui/react-navigation-menu\";\nimport { useResolvedSeed } from \"../hooks/useResolvedSeed\";\nimport { useSketchTheme } from \"../hooks/useSketchTheme\";\nimport { RoughSvg } from \"../primitives/RoughSvg\";\nimport { SketchBox } from \"../primitives/SketchBox\";\nimport type { SketchProps } from \"../types\";\nimport { cn, deriveSeed, doodleUiFontFamily, doodleUiFontWeight } from \"../utils\";\n\ninterface NavigationMenuSketchContextValue extends SketchProps {\n resolvedSeed: number;\n ink: string;\n paper: string;\n animate?: boolean;\n}\n\nconst NavigationMenuSketchContext =\n createContext<NavigationMenuSketchContextValue | null>(null);\n\nfunction useNavigationMenuSketch(): NavigationMenuSketchContextValue {\n const ctx = useContext(NavigationMenuSketchContext);\n if (!ctx) {\n throw new Error(\"NavigationMenu parts must be used inside <NavigationMenu>.\");\n }\n return ctx;\n}\n\nexport interface NavigationMenuProps\n extends Omit<\n ComponentPropsWithoutRef<typeof NavigationMenuPrimitive.Root>,\n \"children\"\n >,\n SketchProps {\n children?: ReactNode;\n fill?: string;\n animate?: boolean;\n}\n\nexport function NavigationMenu({\n children,\n fill,\n roughness,\n seed,\n sketchColor,\n bowing,\n fillStyle,\n strokeWidth,\n hachureGap,\n hachureAngle,\n fillWeight,\n animate,\n ...rest\n}: NavigationMenuProps) {\n const resolvedSeed = useResolvedSeed(seed);\n const theme = useSketchTheme(sketchColor);\n const ink = sketchColor ?? theme.ink;\n\n return (\n <NavigationMenuSketchContext.Provider\n value={{\n roughness,\n seed: resolvedSeed,\n sketchColor,\n bowing,\n fillStyle,\n strokeWidth,\n hachureGap,\n hachureAngle,\n fillWeight,\n resolvedSeed,\n ink,\n paper: fill ?? theme.paper,\n animate,\n }}\n >\n <NavigationMenuPrimitive.Root {...rest}>\n {children}\n <NavigationMenuViewport />\n </NavigationMenuPrimitive.Root>\n </NavigationMenuSketchContext.Provider>\n );\n}\n\nexport const NavigationMenuList = forwardRef<\n HTMLUListElement,\n ComponentPropsWithoutRef<typeof NavigationMenuPrimitive.List>\n>(function NavigationMenuList({ className, style, ...rest }, ref) {\n return (\n <NavigationMenuPrimitive.List\n ref={ref}\n className={cn(className)}\n style={{\n display: \"flex\",\n alignItems: \"center\",\n gap: 4,\n listStyle: \"none\",\n margin: 0,\n padding: 0,\n ...style,\n }}\n {...rest}\n />\n );\n});\n\nexport const NavigationMenuItem = NavigationMenuPrimitive.Item;\n\nexport const NavigationMenuTrigger = forwardRef<\n HTMLButtonElement,\n ComponentPropsWithoutRef<typeof NavigationMenuPrimitive.Trigger>\n>(function NavigationMenuTrigger({ className, style, children, ...rest }, ref) {\n const sketch = useNavigationMenuSketch();\n return (\n <NavigationMenuPrimitive.Trigger\n ref={ref}\n className={cn(className)}\n style={{\n position: \"relative\",\n border: \"none\",\n background: \"transparent\",\n fontFamily: doodleUiFontFamily,\n fontWeight: doodleUiFontWeight(600),\n fontSize: 14,\n color: sketch.ink,\n padding: \"8px 12px\",\n cursor: \"pointer\",\n outline: \"none\",\n ...style,\n }}\n {...rest}\n >\n {children}\n </NavigationMenuPrimitive.Trigger>\n );\n});\n\nexport const NavigationMenuContent = forwardRef<\n HTMLDivElement,\n ComponentPropsWithoutRef<typeof NavigationMenuPrimitive.Content> & { fill?: string }\n>(function NavigationMenuContent({ className, style, children, fill, ...rest }, ref) {\n const sketch = useNavigationMenuSketch();\n return (\n <NavigationMenuPrimitive.Content\n ref={ref}\n className={cn(className)}\n style={{ outline: \"none\", color: sketch.ink, ...style }}\n {...rest}\n >\n <SketchBox\n roughness={sketch.roughness}\n seed={sketch.resolvedSeed}\n sketchColor={sketch.ink}\n bowing={sketch.bowing}\n fillStyle={sketch.fillStyle ?? \"solid\"}\n fill={fill ?? sketch.paper}\n strokeWidth={sketch.strokeWidth ?? 1.5}\n hachureGap={sketch.hachureGap}\n hachureAngle={sketch.hachureAngle}\n fillWeight={sketch.fillWeight}\n shadow\n animate={sketch.animate}\n contentStyle={{ padding: 12, minWidth: 200, color: sketch.ink }}\n >\n {children}\n </SketchBox>\n </NavigationMenuPrimitive.Content>\n );\n});\n\nexport const NavigationMenuLink = NavigationMenuPrimitive.Link;\n\nexport const NavigationMenuViewport = forwardRef<\n HTMLDivElement,\n ComponentPropsWithoutRef<typeof NavigationMenuPrimitive.Viewport>\n>(function NavigationMenuViewport({ className, style, ...rest }, ref) {\n return (\n <div style={{ position: \"absolute\", top: \"100%\", left: 0, perspective: 2000 }}>\n <NavigationMenuPrimitive.Viewport\n ref={ref}\n className={cn(className)}\n style={{\n position: \"relative\",\n marginTop: 6,\n overflow: \"hidden\",\n ...style,\n }}\n {...rest}\n />\n </div>\n );\n});\n\nexport const NavigationMenuIndicator = forwardRef<\n HTMLDivElement,\n ComponentPropsWithoutRef<typeof NavigationMenuPrimitive.Indicator>\n>(function NavigationMenuIndicator({ className, style, ...rest }, ref) {\n const sketch = useNavigationMenuSketch();\n return (\n <NavigationMenuPrimitive.Indicator\n ref={ref}\n className={cn(className)}\n style={{ position: \"relative\", height: 6, ...style }}\n {...rest}\n >\n <RoughSvg\n shape=\"line\"\n roughness={(sketch.roughness ?? 1.5) + 0.2}\n seed={deriveSeed(sketch.resolvedSeed, \"nav-indicator\")}\n sketchColor={sketch.ink}\n strokeWidth={2}\n inset={2}\n />\n </NavigationMenuPrimitive.Indicator>\n );\n});\n\nexport interface NavigationMenuItemLinkProps\n extends ComponentPropsWithoutRef<typeof NavigationMenuPrimitive.Link> {\n active?: boolean;\n}\n\nexport const NavigationMenuItemLink = forwardRef<\n HTMLAnchorElement,\n NavigationMenuItemLinkProps\n>(function NavigationMenuItemLink(\n { className, style, active, children, ...rest },\n ref,\n) {\n const sketch = useNavigationMenuSketch();\n const [hovered, setHovered] = useState(false);\n const showMark = active || hovered;\n\n return (\n <NavigationMenuPrimitive.Link\n ref={ref}\n className={cn(className)}\n onPointerEnter={() => setHovered(true)}\n onPointerLeave={() => setHovered(false)}\n style={{\n position: \"relative\",\n display: \"inline-flex\",\n padding: \"8px 12px\",\n fontFamily: doodleUiFontFamily,\n fontSize: 14,\n color: sketch.ink,\n textDecoration: \"none\",\n outline: \"none\",\n ...style,\n }}\n {...rest}\n >\n {showMark ? (\n <RoughSvg\n shape=\"line\"\n roughness={(sketch.roughness ?? 1.5) + 0.3}\n seed={deriveSeed(sketch.resolvedSeed, \"nav-link\")}\n sketchColor={sketch.ink}\n strokeWidth={1.4}\n inset={4}\n style={{ opacity: 0.35 }}\n />\n ) : null}\n <span style={{ position: \"relative\", zIndex: 1 }}>{children}</span>\n </NavigationMenuPrimitive.Link>\n );\n});\n","\"use client\";\n\nimport {\n createContext,\n forwardRef,\n useContext,\n useState,\n type ComponentPropsWithoutRef,\n type HTMLAttributes,\n type ReactNode,\n} from \"react\";\nimport * as MenubarPrimitive from \"@radix-ui/react-menubar\";\nimport { useResolvedSeed } from \"../hooks/useResolvedSeed\";\nimport { useSketchTheme } from \"../hooks/useSketchTheme\";\nimport { RoughSvg } from \"../primitives/RoughSvg\";\nimport { SketchBox } from \"../primitives/SketchBox\";\nimport type { SketchProps } from \"../types\";\nimport { cn, deriveSeed, doodleUiFontFamily } from \"../utils\";\n\ninterface MenubarSketchContextValue extends SketchProps {\n resolvedSeed: number;\n ink: string;\n paper: string;\n animate?: boolean;\n}\n\nconst MenubarSketchContext = createContext<MenubarSketchContextValue | null>(\n null,\n);\n\nfunction useMenubarSketch(): MenubarSketchContextValue {\n const ctx = useContext(MenubarSketchContext);\n if (!ctx) {\n throw new Error(\"Menubar parts must be used inside <Menubar>.\");\n }\n return ctx;\n}\n\nexport interface MenubarProps\n extends Omit<ComponentPropsWithoutRef<typeof MenubarPrimitive.Root>, \"children\">,\n SketchProps {\n children?: ReactNode;\n fill?: string;\n animate?: boolean;\n}\n\nexport function Menubar({\n children,\n className,\n style,\n fill,\n roughness,\n seed,\n sketchColor,\n bowing,\n fillStyle,\n strokeWidth,\n hachureGap,\n hachureAngle,\n fillWeight,\n animate,\n ...rest\n}: MenubarProps) {\n const resolvedSeed = useResolvedSeed(seed);\n const theme = useSketchTheme(sketchColor);\n const ink = sketchColor ?? theme.ink;\n\n return (\n <MenubarSketchContext.Provider\n value={{\n roughness,\n seed: resolvedSeed,\n sketchColor,\n bowing,\n fillStyle,\n strokeWidth,\n hachureGap,\n hachureAngle,\n fillWeight,\n resolvedSeed,\n ink,\n paper: fill ?? theme.paper,\n animate,\n }}\n >\n <MenubarPrimitive.Root\n className={cn(className)}\n style={{\n display: \"inline-flex\",\n alignItems: \"center\",\n gap: 4,\n padding: 4,\n ...style,\n }}\n {...rest}\n >\n {children}\n </MenubarPrimitive.Root>\n </MenubarSketchContext.Provider>\n );\n}\n\nexport const MenubarMenu: typeof MenubarPrimitive.Menu = MenubarPrimitive.Menu;\n\nexport const MenubarTrigger = forwardRef<\n HTMLButtonElement,\n ComponentPropsWithoutRef<typeof MenubarPrimitive.Trigger>\n>(function MenubarTrigger({ className, style, children, ...rest }, ref) {\n const sketch = useMenubarSketch();\n return (\n <MenubarPrimitive.Trigger\n ref={ref}\n className={cn(className)}\n style={{\n border: \"none\",\n background: \"transparent\",\n fontFamily: doodleUiFontFamily,\n fontSize: 14,\n padding: \"6px 10px\",\n cursor: \"pointer\",\n color: sketch.ink,\n outline: \"none\",\n ...style,\n }}\n {...rest}\n >\n {children}\n </MenubarPrimitive.Trigger>\n );\n});\n\nexport const MenubarContent = forwardRef<\n HTMLDivElement,\n ComponentPropsWithoutRef<typeof MenubarPrimitive.Content> & { fill?: string }\n>(function MenubarContent(\n { className, style, children, fill, align = \"start\", sideOffset = 6, ...rest },\n ref,\n) {\n const sketch = useMenubarSketch();\n return (\n <MenubarPrimitive.Portal>\n <MenubarPrimitive.Content\n ref={ref}\n align={align}\n sideOffset={sideOffset}\n className={cn(className)}\n style={{ zIndex: 80, outline: \"none\", minWidth: 180, color: sketch.ink, ...style }}\n {...rest}\n >\n <SketchBox\n roughness={sketch.roughness}\n seed={sketch.resolvedSeed}\n sketchColor={sketch.ink}\n bowing={sketch.bowing}\n fillStyle={sketch.fillStyle ?? \"solid\"}\n fill={fill ?? sketch.paper}\n strokeWidth={sketch.strokeWidth ?? 1.5}\n hachureGap={sketch.hachureGap}\n hachureAngle={sketch.hachureAngle}\n fillWeight={sketch.fillWeight}\n shadow\n animate={sketch.animate}\n contentStyle={{ padding: \"6px 4px\", color: sketch.ink }}\n >\n {children}\n </SketchBox>\n </MenubarPrimitive.Content>\n </MenubarPrimitive.Portal>\n );\n});\n\nfunction useMark(highlighted: boolean) {\n const sketch = useMenubarSketch();\n return { sketch, mark: highlighted };\n}\n\nexport const MenubarItem = forwardRef<\n HTMLDivElement,\n ComponentPropsWithoutRef<typeof MenubarPrimitive.Item>\n>(function MenubarItem({ className, style, children, ...rest }, ref) {\n const [highlighted, setHighlighted] = useState(false);\n const { sketch, mark } = useMark(highlighted);\n\n return (\n <MenubarPrimitive.Item\n ref={ref}\n className={cn(className)}\n onPointerMove={() => setHighlighted(true)}\n onPointerLeave={() => setHighlighted(false)}\n style={{\n position: \"relative\",\n display: \"flex\",\n alignItems: \"center\",\n gap: 8,\n padding: \"7px 12px\",\n fontFamily: doodleUiFontFamily,\n fontSize: 14,\n color: sketch.ink,\n outline: \"none\",\n cursor: \"pointer\",\n userSelect: \"none\",\n ...style,\n }}\n {...rest}\n >\n {mark ? (\n <RoughSvg\n shape=\"line\"\n roughness={(sketch.roughness ?? 1.5) + 0.4}\n seed={sketch.resolvedSeed}\n sketchColor={sketch.ink}\n bowing={sketch.bowing ?? 1.6}\n strokeWidth={1.3}\n inset={4}\n style={{ opacity: 0.4 }}\n />\n ) : null}\n <span style={{ position: \"relative\", zIndex: 1 }}>{children}</span>\n </MenubarPrimitive.Item>\n );\n});\n\nexport const MenubarSeparator = forwardRef<\n HTMLDivElement,\n ComponentPropsWithoutRef<typeof MenubarPrimitive.Separator>\n>(function MenubarSeparator({ className, style, ...rest }, ref) {\n const sketch = useMenubarSketch();\n return (\n <MenubarPrimitive.Separator\n ref={ref}\n className={cn(className)}\n style={{ position: \"relative\", height: 10, margin: \"2px 0\", ...style }}\n {...rest}\n >\n <RoughSvg\n shape=\"line\"\n roughness={(sketch.roughness ?? 1.5) + 0.2}\n seed={deriveSeed(sketch.resolvedSeed, \"separator\")}\n sketchColor={sketch.ink}\n bowing={sketch.bowing ?? 1.8}\n strokeWidth={1.2}\n inset={6}\n style={{ opacity: 0.5 }}\n />\n </MenubarPrimitive.Separator>\n );\n});\n\nexport const MenubarLabel = forwardRef<\n HTMLDivElement,\n ComponentPropsWithoutRef<typeof MenubarPrimitive.Label>\n>(function MenubarLabel({ className, style, children, ...rest }, ref) {\n const sketch = useMenubarSketch();\n return (\n <MenubarPrimitive.Label\n ref={ref}\n className={cn(className)}\n style={{\n padding: \"6px 12px\",\n fontFamily: doodleUiFontFamily,\n fontSize: 12,\n fontWeight: 700,\n color: sketch.ink,\n opacity: 0.6,\n ...style,\n }}\n {...rest}\n >\n {children}\n </MenubarPrimitive.Label>\n );\n});\n\nexport const MenubarShortcut = forwardRef<\n HTMLSpanElement,\n HTMLAttributes<HTMLSpanElement>\n>(function MenubarShortcut({ className, style, children, ...rest }, ref) {\n return (\n <span\n ref={ref}\n className={cn(className)}\n style={{\n marginLeft: \"auto\",\n fontSize: 12,\n opacity: 0.55,\n letterSpacing: 0.04,\n ...style,\n }}\n {...rest}\n >\n {children}\n </span>\n );\n});\n\nexport const MenubarSub = MenubarPrimitive.Sub;\nexport const MenubarSubTrigger = MenubarPrimitive.SubTrigger;\nexport const MenubarSubContent = MenubarPrimitive.SubContent;\nexport const MenubarCheckboxItem = MenubarPrimitive.CheckboxItem;\nexport const MenubarRadioGroup = MenubarPrimitive.RadioGroup;\nexport const MenubarRadioItem = MenubarPrimitive.RadioItem;\n","\"use client\";\n\nimport {\n createContext,\n forwardRef,\n useContext,\n useState,\n type CSSProperties,\n type ReactNode,\n} from \"react\";\nimport * as DialogPrimitive from \"@radix-ui/react-dialog\";\nimport { AnimatePresence, motion, type Variants } from \"framer-motion\";\nimport { useAnimate } from \"../animations\";\nimport { useResolvedSeed } from \"../hooks/useResolvedSeed\";\nimport { useSketchTheme } from \"../hooks/useSketchTheme\";\nimport { SketchBox } from \"../primitives/SketchBox\";\nimport type { SketchProps } from \"../types\";\nimport { cn, doodleUiFontFamily, doodleUiFontWeight } from \"../utils\";\n\nexport type SlidingPanelSide = \"top\" | \"right\" | \"bottom\" | \"left\";\n\ninterface SlidingPanelSketchContextValue extends SketchProps {\n resolvedSeed: number;\n ink: string;\n paper: string;\n isDark: boolean;\n animate?: boolean;\n open: boolean;\n side: SlidingPanelSide;\n}\n\nconst SlidingPanelSketchContext =\n createContext<SlidingPanelSketchContextValue | null>(null);\n\nexport function useSlidingPanelSketch(): SlidingPanelSketchContextValue {\n const ctx = useContext(SlidingPanelSketchContext);\n if (!ctx) {\n throw new Error(\"Sliding panel parts must be used inside the panel root.\");\n }\n return ctx;\n}\n\nexport interface SlidingPanelRootProps\n extends Omit<DialogPrimitive.DialogProps, \"children\">,\n SketchProps {\n children?: ReactNode;\n side?: SlidingPanelSide;\n fill?: string;\n animate?: boolean;\n}\n\nexport function SlidingPanelRoot({\n children,\n open,\n defaultOpen,\n onOpenChange,\n side = \"right\",\n fill,\n roughness,\n seed,\n sketchColor,\n bowing,\n fillStyle,\n strokeWidth,\n hachureGap,\n hachureAngle,\n fillWeight,\n animate,\n ...rest\n}: SlidingPanelRootProps) {\n const resolvedSeed = useResolvedSeed(seed);\n const theme = useSketchTheme(sketchColor);\n const ink = sketchColor ?? theme.ink;\n const [uncontrolled, setUncontrolled] = useState(defaultOpen === true);\n const isOpen = open ?? uncontrolled;\n\n return (\n <SlidingPanelSketchContext.Provider\n value={{\n roughness,\n seed: resolvedSeed,\n sketchColor,\n bowing,\n fillStyle,\n strokeWidth,\n hachureGap,\n hachureAngle,\n fillWeight,\n resolvedSeed,\n ink,\n paper: fill ?? theme.paper,\n isDark: theme.isDark,\n animate,\n open: isOpen,\n side,\n }}\n >\n <DialogPrimitive.Root\n open={isOpen}\n onOpenChange={(next) => {\n setUncontrolled(next);\n onOpenChange?.(next);\n }}\n {...rest}\n >\n {children}\n </DialogPrimitive.Root>\n </SlidingPanelSketchContext.Provider>\n );\n}\n\nexport const SlidingPanelTrigger = DialogPrimitive.Trigger;\nexport const SlidingPanelClose = DialogPrimitive.Close;\nexport const SlidingPanelPortal = DialogPrimitive.Portal;\n\nfunction slideVariants(side: SlidingPanelSide, shouldAnimate: boolean): Variants {\n if (!shouldAnimate) {\n return { hidden: {}, visible: {} };\n }\n const offset = 420;\n const hidden =\n side === \"left\"\n ? { x: -offset }\n : side === \"right\"\n ? { x: offset }\n : side === \"top\"\n ? { y: -offset }\n : { y: offset };\n return {\n hidden: { ...hidden, opacity: 0.85 },\n visible: { x: 0, y: 0, opacity: 1 },\n };\n}\n\nfunction panelPosition(side: SlidingPanelSide): CSSProperties {\n switch (side) {\n case \"left\":\n return {\n top: 0,\n bottom: 0,\n left: 0,\n width: \"min(420px, 100vw)\",\n };\n case \"right\":\n return {\n top: 0,\n bottom: 0,\n right: 0,\n width: \"min(420px, 100vw)\",\n };\n case \"top\":\n return {\n top: 0,\n left: 0,\n right: 0,\n height: \"min(420px, 90vh)\",\n };\n default:\n return {\n bottom: 0,\n left: 0,\n right: 0,\n height: \"min(420px, 90vh)\",\n };\n }\n}\n\nexport interface SlidingPanelOverlayProps\n extends Omit<DialogPrimitive.DialogOverlayProps, \"asChild\" | \"forceMount\"> {}\n\nexport const SlidingPanelOverlay = forwardRef<\n HTMLDivElement,\n SlidingPanelOverlayProps\n>(function SlidingPanelOverlay({ style, ...rest }, ref) {\n const sketch = useSlidingPanelSketch();\n const shouldAnimate = useAnimate(sketch.animate);\n\n return (\n <DialogPrimitive.Overlay ref={ref} asChild forceMount {...rest}>\n <motion.div\n initial={shouldAnimate ? { opacity: 0 } : false}\n animate={{ opacity: 1 }}\n exit={shouldAnimate ? { opacity: 0 } : undefined}\n transition={\n shouldAnimate ? { duration: 0.22, ease: \"easeOut\" } : { duration: 0 }\n }\n style={{\n position: \"fixed\",\n inset: 0,\n background: sketch.isDark ? \"rgba(0, 0, 0, 0.65)\" : \"rgba(31, 29, 26, 0.38)\",\n zIndex: 70,\n ...style,\n }}\n />\n </DialogPrimitive.Overlay>\n );\n});\n\nexport interface SlidingPanelContentProps\n extends Omit<DialogPrimitive.DialogContentProps, \"asChild\" | \"forceMount\"> {\n children?: ReactNode;\n contentStyle?: CSSProperties;\n fill?: string;\n /** Extra chrome above panel content (e.g. drawer handle). */\n chrome?: ReactNode;\n}\n\nexport const SlidingPanelContent = forwardRef<\n HTMLDivElement,\n SlidingPanelContentProps\n>(function SlidingPanelContent(\n { className, style, contentStyle, fill, children, chrome, ...rest },\n ref,\n) {\n const sketch = useSlidingPanelSketch();\n const shouldAnimate = useAnimate(sketch.animate);\n const variants = slideVariants(sketch.side, shouldAnimate);\n\n return (\n <AnimatePresence>\n {sketch.open ? (\n <DialogPrimitive.Portal forceMount>\n <SlidingPanelOverlay />\n <DialogPrimitive.Content ref={ref} asChild forceMount {...rest}>\n <motion.div\n className={cn(className)}\n initial={shouldAnimate ? \"hidden\" : false}\n animate=\"visible\"\n exit={shouldAnimate ? \"hidden\" : undefined}\n variants={variants}\n transition={\n shouldAnimate\n ? { duration: 0.28, ease: \"easeOut\" }\n : { duration: 0 }\n }\n style={{\n position: \"fixed\",\n zIndex: 80,\n outline: \"none\",\n pointerEvents: \"auto\",\n ...panelPosition(sketch.side),\n ...style,\n }}\n >\n <SketchBox\n roughness={sketch.roughness}\n seed={sketch.resolvedSeed}\n sketchColor={sketch.ink}\n bowing={sketch.bowing}\n fillStyle={sketch.fillStyle ?? \"solid\"}\n fill={fill ?? sketch.paper}\n strokeWidth={sketch.strokeWidth ?? 2}\n hachureGap={sketch.hachureGap}\n hachureAngle={sketch.hachureAngle}\n fillWeight={sketch.fillWeight}\n animate={sketch.animate}\n contentStyle={{\n padding: 20,\n height: \"100%\",\n boxSizing: \"border-box\",\n display: \"flex\",\n flexDirection: \"column\",\n color: sketch.ink,\n ...contentStyle,\n }}\n style={{ height: \"100%\" }}\n >\n {chrome}\n {children}\n </SketchBox>\n </motion.div>\n </DialogPrimitive.Content>\n </DialogPrimitive.Portal>\n ) : null}\n </AnimatePresence>\n );\n});\n\nexport interface SlidingPanelHeaderProps {\n children?: ReactNode;\n className?: string;\n style?: CSSProperties;\n}\n\nexport function SlidingPanelHeader({\n children,\n className,\n style,\n}: SlidingPanelHeaderProps) {\n return (\n <div\n className={cn(className)}\n style={{\n display: \"flex\",\n flexDirection: \"column\",\n gap: 6,\n marginBottom: 12,\n ...style,\n }}\n >\n {children}\n </div>\n );\n}\n\nexport interface SlidingPanelFooterProps {\n children?: ReactNode;\n className?: string;\n style?: CSSProperties;\n}\n\nexport function SlidingPanelFooter({\n children,\n className,\n style,\n}: SlidingPanelFooterProps) {\n return (\n <div\n className={cn(className)}\n style={{\n display: \"flex\",\n gap: 8,\n marginTop: \"auto\",\n paddingTop: 12,\n ...style,\n }}\n >\n {children}\n </div>\n );\n}\n\nexport const SlidingPanelTitle = forwardRef<\n HTMLHeadingElement,\n DialogPrimitive.DialogTitleProps\n>(function SlidingPanelTitle({ className, style, ...rest }, ref) {\n const sketch = useSlidingPanelSketch();\n return (\n <DialogPrimitive.Title\n ref={ref}\n className={cn(className)}\n style={{\n margin: 0,\n fontFamily: doodleUiFontFamily,\n fontWeight: doodleUiFontWeight(700),\n fontSize: 20,\n color: sketch.ink,\n ...style,\n }}\n {...rest}\n />\n );\n});\n\nexport const SlidingPanelDescription = forwardRef<\n HTMLParagraphElement,\n DialogPrimitive.DialogDescriptionProps\n>(function SlidingPanelDescription({ className, style, ...rest }, ref) {\n const sketch = useSlidingPanelSketch();\n return (\n <DialogPrimitive.Description\n ref={ref}\n className={cn(className)}\n style={{\n margin: 0,\n fontFamily: doodleUiFontFamily,\n fontSize: 14,\n color: sketch.ink,\n opacity: 0.75,\n ...style,\n }}\n {...rest}\n />\n );\n});\n","\"use client\";\n\nimport { forwardRef } from \"react\";\nimport {\n SlidingPanelClose,\n SlidingPanelContent,\n SlidingPanelDescription,\n SlidingPanelFooter,\n SlidingPanelHeader,\n SlidingPanelRoot,\n SlidingPanelTitle,\n SlidingPanelTrigger,\n type SlidingPanelContentProps,\n type SlidingPanelRootProps,\n type SlidingPanelSide,\n} from \"../primitives/SlidingPanel\";\n\nexport type SheetProps = SlidingPanelRootProps & {\n side?: SlidingPanelSide;\n};\n\nexport function Sheet({ side = \"right\", ...rest }: SheetProps) {\n return <SlidingPanelRoot side={side} {...rest} />;\n}\n\nexport const SheetTrigger = SlidingPanelTrigger;\nexport const SheetClose = SlidingPanelClose;\n\nexport type SheetContentProps = SlidingPanelContentProps;\n\nexport const SheetContent = forwardRef<HTMLDivElement, SheetContentProps>(\n function SheetContent(props, ref) {\n return <SlidingPanelContent ref={ref} {...props} />;\n },\n);\n\nexport const SheetHeader = SlidingPanelHeader;\nexport const SheetFooter = SlidingPanelFooter;\nexport const SheetTitle = SlidingPanelTitle;\nexport const SheetDescription = SlidingPanelDescription;\n","\"use client\";\n\nimport { forwardRef } from \"react\";\nimport { RoughSvg } from \"../primitives/RoughSvg\";\nimport {\n SlidingPanelClose,\n SlidingPanelContent,\n SlidingPanelDescription,\n SlidingPanelFooter,\n SlidingPanelHeader,\n SlidingPanelRoot,\n SlidingPanelTitle,\n SlidingPanelTrigger,\n useSlidingPanelSketch,\n type SlidingPanelContentProps,\n type SlidingPanelRootProps,\n} from \"../primitives/SlidingPanel\";\nimport { deriveSeed } from \"../utils\";\n\nexport type DrawerProps = Omit<SlidingPanelRootProps, \"side\">;\n\nexport function Drawer(props: DrawerProps) {\n return <SlidingPanelRoot side=\"bottom\" {...props} />;\n}\n\nexport const DrawerTrigger = SlidingPanelTrigger;\nexport const DrawerClose = SlidingPanelClose;\n\nexport const DrawerHandle = forwardRef<HTMLDivElement, { className?: string }>(\n function DrawerHandle({ className }, ref) {\n const sketch = useSlidingPanelSketch();\n return (\n <div\n ref={ref}\n className={className}\n style={{\n position: \"relative\",\n width: 48,\n height: 10,\n margin: \"0 auto 12px\",\n }}\n aria-hidden\n >\n <RoughSvg\n shape=\"line\"\n roughness={(sketch.roughness ?? 1.5) + 0.3}\n seed={deriveSeed(sketch.resolvedSeed, \"drawer-handle\")}\n sketchColor={sketch.sketchColor ?? sketch.ink}\n bowing={sketch.bowing ?? 1.6}\n strokeWidth={2.4}\n width={48}\n height={10}\n inset={2}\n />\n </div>\n );\n },\n);\n\nexport type DrawerContentProps = Omit<SlidingPanelContentProps, \"chrome\">;\n\nexport const DrawerContent = forwardRef<HTMLDivElement, DrawerContentProps>(\n function DrawerContent({ children, ...rest }, ref) {\n return (\n <SlidingPanelContent\n ref={ref}\n chrome={<DrawerHandle />}\n contentStyle={{ paddingTop: 8 }}\n {...rest}\n >\n {children}\n </SlidingPanelContent>\n );\n },\n);\n\nexport const DrawerHeader = SlidingPanelHeader;\nexport const DrawerFooter = SlidingPanelFooter;\nexport const DrawerTitle = SlidingPanelTitle;\nexport const DrawerDescription = SlidingPanelDescription;\n","\"use client\";\n\nimport * as AspectRatioPrimitive from \"@radix-ui/react-aspect-ratio\";\nimport type { CSSProperties, ReactNode } from \"react\";\nimport { useSketchTheme } from \"../hooks/useSketchTheme\";\nimport { SketchBox } from \"../primitives/SketchBox\";\nimport type { SketchProps } from \"../types\";\nimport { cn } from \"../utils\";\n\nexport interface AspectRatioProps extends SketchProps {\n ratio?: number;\n /** Wrap content in a hand-drawn frame. Default false — ratio box only. */\n bordered?: boolean;\n className?: string;\n style?: CSSProperties;\n children?: ReactNode;\n fill?: string;\n animate?: boolean;\n}\n\nexport function AspectRatio({\n ratio = 16 / 9,\n bordered = false,\n className,\n style,\n children,\n fill,\n roughness,\n seed,\n sketchColor,\n bowing,\n fillStyle,\n strokeWidth,\n hachureGap,\n hachureAngle,\n fillWeight,\n animate,\n}: AspectRatioProps) {\n const theme = useSketchTheme(sketchColor);\n const ink = sketchColor ?? theme.ink;\n\n const inner = (\n <AspectRatioPrimitive.Root\n ratio={ratio}\n className={cn(className)}\n style={{\n width: \"100%\",\n overflow: \"hidden\",\n color: ink,\n ...style,\n }}\n >\n <div style={{ width: \"100%\", height: \"100%\" }}>{children}</div>\n </AspectRatioPrimitive.Root>\n );\n\n if (!bordered) {\n return inner;\n }\n\n return (\n <SketchBox\n className={cn(className)}\n style={{ width: \"100%\", color: ink, ...style }}\n contentStyle={{ padding: 0, width: \"100%\", color: ink }}\n fill={fill ?? theme.paper}\n fillStyle={fillStyle ?? \"solid\"}\n hachureGap={hachureGap}\n hachureAngle={hachureAngle}\n fillWeight={fillWeight}\n roughness={roughness}\n seed={seed}\n sketchColor={ink}\n bowing={bowing}\n strokeWidth={strokeWidth}\n animate={animate}\n >\n <AspectRatioPrimitive.Root ratio={ratio} style={{ width: \"100%\" }}>\n <div style={{ width: \"100%\", height: \"100%\" }}>{children}</div>\n </AspectRatioPrimitive.Root>\n </SketchBox>\n );\n}\n","\"use client\";\n\nimport {\n forwardRef,\n useRef,\n type CSSProperties,\n type ReactNode,\n type SelectHTMLAttributes,\n} from \"react\";\nimport {\n DRAW_IN_DURATION_MS,\n useAnimate,\n useDrawIn,\n} from \"../animations\";\nimport { useResolvedSeed } from \"../hooks/useResolvedSeed\";\nimport { useSketchTheme } from \"../hooks/useSketchTheme\";\nimport { RoughSvg } from \"../primitives/RoughSvg\";\nimport type { SketchProps } from \"../types\";\nimport { cn, doodleUiFontFamily, doodleUiFontWeight } from \"../utils\";\n\nconst CHEVRON_PATH = \"M 4 6 L 10 12 L 16 6\";\n\nexport interface NativeSelectOption {\n value: string;\n label: ReactNode;\n disabled?: boolean;\n}\n\nexport interface NativeSelectProps\n extends Omit<SelectHTMLAttributes<HTMLSelectElement>, \"color\" | \"size\">,\n SketchProps {\n options?: NativeSelectOption[];\n fill?: string;\n /** Draw-in the border on mount. Defaults to DoodleUIProvider (true). */\n animate?: boolean;\n className?: string;\n style?: CSSProperties;\n}\n\nexport const NativeSelect = forwardRef<HTMLSelectElement, NativeSelectProps>(\n function NativeSelect(\n {\n className,\n style,\n options,\n children,\n fill,\n roughness,\n seed,\n sketchColor,\n bowing,\n fillStyle,\n strokeWidth,\n hachureGap,\n hachureAngle,\n fillWeight,\n animate,\n disabled,\n ...rest\n },\n ref,\n ) {\n const fieldRef = useRef<HTMLSpanElement>(null);\n const shouldAnimate = useAnimate(animate);\n const resolvedSeed = useResolvedSeed(seed);\n const theme = useSketchTheme(sketchColor);\n const ink = sketchColor ?? theme.ink;\n\n useDrawIn(fieldRef, DRAW_IN_DURATION_MS, shouldAnimate);\n\n return (\n <span\n className={cn(className)}\n style={{\n position: \"relative\",\n display: \"block\",\n width: \"100%\",\n opacity: disabled ? 0.6 : 1,\n color: ink,\n ...style,\n }}\n >\n <span ref={fieldRef} style={{ position: \"relative\", display: \"block\" }}>\n <RoughSvg\n shape=\"rectangle\"\n roughness={roughness}\n seed={resolvedSeed}\n sketchColor={ink}\n bowing={bowing}\n fillStyle={fillStyle ?? \"solid\"}\n fill={fill ?? theme.paper}\n strokeWidth={strokeWidth}\n hachureGap={hachureGap}\n hachureAngle={hachureAngle}\n fillWeight={fillWeight}\n />\n <select\n ref={ref}\n disabled={disabled}\n style={{\n position: \"relative\",\n zIndex: 1,\n width: \"100%\",\n border: \"none\",\n background: \"transparent\",\n padding: \"10px 36px 10px 12px\",\n fontFamily: doodleUiFontFamily,\n fontSize: 14,\n fontWeight: doodleUiFontWeight(500),\n color: ink,\n cursor: disabled ? \"not-allowed\" : \"pointer\",\n appearance: \"none\",\n WebkitAppearance: \"none\",\n MozAppearance: \"none\",\n outline: \"none\",\n }}\n {...rest}\n >\n {options\n ? options.map((opt) => (\n <option\n key={opt.value}\n value={opt.value}\n disabled={opt.disabled}\n >\n {opt.label}\n </option>\n ))\n : children}\n </select>\n <span\n aria-hidden\n style={{\n position: \"absolute\",\n right: 10,\n top: \"50%\",\n transform: \"translateY(-50%)\",\n width: 20,\n height: 14,\n pointerEvents: \"none\",\n zIndex: 2,\n }}\n >\n <RoughSvg\n shape=\"path\"\n path={CHEVRON_PATH}\n roughness={(roughness ?? 1.5) * 0.85}\n seed={resolvedSeed}\n sketchColor={ink}\n bowing={bowing}\n strokeWidth={strokeWidth ?? 1.5}\n />\n </span>\n </span>\n </span>\n );\n },\n);\n","\"use client\";\n\nimport {\n createContext,\n forwardRef,\n useContext,\n type CSSProperties,\n type HTMLAttributes,\n} from \"react\";\nimport { useSketchTheme } from \"../hooks/useSketchTheme\";\nimport { SketchBox } from \"../primitives/SketchBox\";\nimport type { SketchProps } from \"../types\";\nimport { cn, doodleUiFontFamily, doodleUiFontWeight } from \"../utils\";\n\ninterface EmptyContextValue {\n ink: string;\n}\n\nconst EmptyContext = createContext<EmptyContextValue | null>(null);\n\nfunction useEmptyInk(): string {\n const ctx = useContext(EmptyContext);\n const theme = useSketchTheme();\n return ctx?.ink ?? theme.ink;\n}\n\nconst emptyContentStyle: CSSProperties = {\n display: \"flex\",\n flexDirection: \"column\",\n alignItems: \"center\",\n justifyContent: \"center\",\n textAlign: \"center\",\n gap: 12,\n padding: \"32px 24px\",\n minHeight: 160,\n width: \"100%\",\n};\n\nexport interface EmptyProps\n extends Omit<HTMLAttributes<HTMLDivElement>, \"color\">,\n SketchProps {\n bordered?: boolean;\n fill?: string;\n animate?: boolean;\n}\n\nexport const Empty = forwardRef<HTMLDivElement, EmptyProps>(function Empty(\n {\n className,\n style,\n children,\n bordered = true,\n fill,\n roughness,\n seed,\n sketchColor,\n bowing,\n fillStyle,\n strokeWidth,\n hachureGap,\n hachureAngle,\n fillWeight,\n animate,\n ...rest\n },\n ref,\n) {\n const theme = useSketchTheme(sketchColor);\n const ink = sketchColor ?? theme.ink;\n\n const inner = (\n <EmptyContext.Provider value={{ ink }}>\n <div\n ref={bordered ? undefined : ref}\n className={cn(className)}\n style={{ ...emptyContentStyle, color: ink, ...style }}\n {...(bordered ? {} : rest)}\n >\n {children}\n </div>\n </EmptyContext.Provider>\n );\n\n if (!bordered) {\n return inner;\n }\n\n return (\n <SketchBox\n ref={ref}\n className={cn(className)}\n style={{ width: \"100%\", color: ink, ...style }}\n contentStyle={{ ...emptyContentStyle, color: ink }}\n fill={fill ?? theme.secondaryFill}\n fillStyle={fillStyle ?? \"hachure\"}\n hachureGap={hachureGap ?? 8}\n hachureAngle={hachureAngle}\n fillWeight={fillWeight ?? 0.85}\n roughness={roughness}\n seed={seed}\n sketchColor={ink}\n bowing={bowing}\n strokeWidth={strokeWidth}\n animate={animate}\n {...rest}\n >\n <EmptyContext.Provider value={{ ink }}>{children}</EmptyContext.Provider>\n </SketchBox>\n );\n});\n\nexport function EmptyMedia({\n className,\n style,\n children,\n}: HTMLAttributes<HTMLDivElement>) {\n return (\n <div\n className={cn(className)}\n style={{\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n marginBottom: 4,\n ...style,\n }}\n >\n {children}\n </div>\n );\n}\n\nexport function EmptyTitle({\n className,\n style,\n children,\n}: HTMLAttributes<HTMLHeadingElement>) {\n const ink = useEmptyInk();\n return (\n <h3\n className={cn(className)}\n style={{\n margin: 0,\n fontFamily: doodleUiFontFamily,\n fontSize: 18,\n fontWeight: doodleUiFontWeight(700),\n color: ink,\n ...style,\n }}\n >\n {children}\n </h3>\n );\n}\n\nexport function EmptyDescription({\n className,\n style,\n children,\n}: HTMLAttributes<HTMLParagraphElement>) {\n const ink = useEmptyInk();\n return (\n <p\n className={cn(className)}\n style={{\n margin: 0,\n maxWidth: 360,\n fontFamily: doodleUiFontFamily,\n fontSize: 14,\n lineHeight: 1.5,\n color: ink,\n opacity: 0.85,\n ...style,\n }}\n >\n {children}\n </p>\n );\n}\n\nexport function EmptyAction({\n className,\n style,\n children,\n}: HTMLAttributes<HTMLDivElement>) {\n return (\n <div\n className={cn(className)}\n style={{\n display: \"flex\",\n flexWrap: \"wrap\",\n gap: 8,\n justifyContent: \"center\",\n marginTop: 8,\n ...style,\n }}\n >\n {children}\n </div>\n );\n}\n","\"use client\";\n\nimport {\n Children,\n cloneElement,\n createContext,\n isValidElement,\n useContext,\n useId,\n useMemo,\n type HTMLAttributes,\n type ReactElement,\n type ReactNode,\n} from \"react\";\nimport { Label } from \"./Label\";\nimport { useSketchTheme } from \"../hooks/useSketchTheme\";\nimport { cn, doodleUiFontFamily } from \"../utils\";\n\ninterface FieldContextValue {\n id: string;\n descriptionId: string;\n errorId: string;\n invalid: boolean;\n error?: ReactNode;\n}\n\nconst FieldContext = createContext<FieldContextValue | null>(null);\n\nfunction useField(): FieldContextValue {\n const ctx = useContext(FieldContext);\n if (!ctx) {\n throw new Error(\"Field parts must be used inside <Field>.\");\n }\n return ctx;\n}\n\nexport interface FieldProps extends HTMLAttributes<HTMLDivElement> {\n invalid?: boolean;\n error?: ReactNode;\n}\n\nexport function Field({\n className,\n style,\n children,\n invalid = false,\n error,\n ...rest\n}: FieldProps) {\n const id = useId();\n const descriptionId = `${id}-description`;\n const errorId = `${id}-error`;\n const value = useMemo(\n () => ({\n id,\n descriptionId,\n errorId,\n invalid: invalid || Boolean(error),\n error,\n }),\n [id, descriptionId, errorId, invalid, error],\n );\n\n return (\n <FieldContext.Provider value={value}>\n <div\n className={cn(className)}\n style={{\n display: \"flex\",\n flexDirection: \"column\",\n gap: 6,\n width: \"100%\",\n ...style,\n }}\n {...rest}\n >\n {children}\n </div>\n </FieldContext.Provider>\n );\n}\n\nexport interface FieldLabelProps\n extends Omit<React.ComponentProps<typeof Label>, \"htmlFor\"> {}\n\nexport function FieldLabel({ className, style, ...rest }: FieldLabelProps) {\n const { id } = useField();\n return <Label htmlFor={id} className={className} style={style} {...rest} />;\n}\n\nexport function FieldDescription({\n className,\n style,\n children,\n ...rest\n}: HTMLAttributes<HTMLParagraphElement>) {\n const { descriptionId } = useField();\n const theme = useSketchTheme();\n return (\n <p\n id={descriptionId}\n className={cn(className)}\n style={{\n margin: 0,\n fontFamily: doodleUiFontFamily,\n fontSize: 12,\n lineHeight: 1.45,\n color: theme.ink,\n opacity: 0.75,\n ...style,\n }}\n {...rest}\n >\n {children}\n </p>\n );\n}\n\nexport function FieldError({\n className,\n style,\n children,\n ...rest\n}: HTMLAttributes<HTMLParagraphElement>) {\n const { error, errorId } = useField();\n const theme = useSketchTheme();\n const message = children ?? error;\n if (!message) return null;\n\n return (\n <p\n id={errorId}\n role=\"alert\"\n className={cn(className)}\n style={{\n margin: 0,\n fontFamily: doodleUiFontFamily,\n fontSize: 12,\n lineHeight: 1.45,\n color: theme.error,\n ...style,\n }}\n {...rest}\n >\n {message}\n </p>\n );\n}\n\nexport interface FieldControlProps {\n children: ReactElement;\n}\n\nexport function FieldControl({ children }: FieldControlProps) {\n const { id, descriptionId, errorId, invalid } = useField();\n const child = Children.only(children);\n if (!isValidElement(child)) {\n throw new Error(\"FieldControl expects a single React element child.\");\n }\n\n const describedBy = [descriptionId, invalid ? errorId : null]\n .filter(Boolean)\n .join(\" \");\n\n const props = child.props as {\n id?: string;\n \"aria-describedby\"?: string;\n \"aria-invalid\"?: boolean;\n };\n return cloneElement(child as ReactElement<Record<string, unknown>>, {\n id: props.id ?? id,\n \"aria-describedby\":\n props[\"aria-describedby\"] ??\n (describedBy.length > 0 ? describedBy : undefined),\n \"aria-invalid\": invalid ? true : props[\"aria-invalid\"],\n });\n}\n","\"use client\";\n\nimport {\n forwardRef,\n useRef,\n type HTMLAttributes,\n} from \"react\";\nimport { DRAW_IN_MARK_MS, useAnimate, useDrawIn } from \"../animations\";\nimport { useResolvedSeed } from \"../hooks/useResolvedSeed\";\nimport { useSketchTheme } from \"../hooks/useSketchTheme\";\nimport { RoughSvg } from \"../primitives/RoughSvg\";\nimport { SketchBox } from \"../primitives/SketchBox\";\nimport type { SketchProps } from \"../types\";\nimport { cn, doodleUiFontFamily, doodleUiFontWeight } from \"../utils\";\n\ntype HeadingLevel = 1 | 2 | 3 | 4 | 5 | 6;\ntype HeadingAccent = \"none\" | \"underline\" | \"highlight\";\n\nconst HEADING_SIZES: Record<HeadingLevel, number> = {\n 1: 32,\n 2: 26,\n 3: 22,\n 4: 18,\n 5: 16,\n 6: 14,\n};\n\nexport interface HeadingProps\n extends Omit<HTMLAttributes<HTMLHeadingElement>, \"color\">,\n SketchProps {\n level?: HeadingLevel;\n accent?: HeadingAccent;\n animate?: boolean;\n}\n\nexport const Heading = forwardRef<HTMLHeadingElement, HeadingProps>(\n function Heading(\n {\n level = 2,\n accent = \"none\",\n className,\n style,\n children,\n roughness,\n seed,\n sketchColor,\n bowing,\n strokeWidth,\n animate,\n ...rest\n },\n ref,\n ) {\n const Tag = `h${level}` as const;\n const theme = useSketchTheme(sketchColor);\n const ink = sketchColor ?? theme.ink;\n const accentColor = sketchColor ?? theme.accent;\n const accentFill = theme.isDark\n ? (sketchColor ? `${sketchColor}25` : theme.accentFill)\n : theme.accentFill;\n const resolvedSeed = useResolvedSeed(seed);\n const shouldAnimate = useAnimate(animate);\n const accentRef = useRef<HTMLSpanElement>(null);\n useDrawIn(accentRef, DRAW_IN_MARK_MS, shouldAnimate && accent !== \"none\");\n\n const fontSize = HEADING_SIZES[level];\n\n return (\n <Tag\n ref={ref}\n className={cn(className)}\n style={{\n position: \"relative\",\n margin: 0,\n fontFamily: doodleUiFontFamily,\n fontSize,\n fontWeight: doodleUiFontWeight(700),\n color: ink,\n lineHeight: 1.2,\n ...style,\n }}\n {...rest}\n >\n {accent === \"highlight\" ? (\n <span style={{ position: \"relative\", display: \"inline\" }}>\n <span\n ref={accentRef}\n aria-hidden\n style={{\n position: \"absolute\",\n left: -4,\n right: -4,\n bottom: 2,\n height: \"0.45em\",\n zIndex: 0,\n }}\n >\n <RoughSvg\n shape=\"rectangle\"\n roughness={roughness}\n seed={resolvedSeed}\n sketchColor={accentColor}\n fill={accentFill}\n fillStyle=\"solid\"\n bowing={bowing}\n strokeWidth={strokeWidth ?? 1.2}\n />\n </span>\n <span style={{ position: \"relative\", zIndex: 1 }}>{children}</span>\n </span>\n ) : (\n children\n )}\n {accent === \"underline\" ? (\n <span\n ref={accentRef}\n aria-hidden\n style={{\n display: \"block\",\n position: \"relative\",\n height: 6,\n marginTop: 4,\n maxWidth: \"100%\",\n }}\n >\n <RoughSvg\n shape=\"path\"\n path=\"M 2 4 Q 40 1 80 5 T 160 3\"\n roughness={roughness}\n seed={resolvedSeed}\n sketchColor={accentColor}\n bowing={bowing}\n strokeWidth={strokeWidth ?? 1.5}\n />\n </span>\n ) : null}\n </Tag>\n );\n },\n);\n\nexport interface TextProps extends HTMLAttributes<HTMLParagraphElement> {\n variant?: \"body\" | \"lead\" | \"muted\";\n}\n\nexport const Text = forwardRef<HTMLParagraphElement, TextProps>(function Text(\n { variant = \"body\", className, style, children, ...rest },\n ref,\n) {\n const theme = useSketchTheme();\n const sizes = { body: 14, lead: 17, muted: 13 };\n const opacity = variant === \"muted\" ? 0.75 : 1;\n return (\n <p\n ref={ref}\n className={cn(className)}\n style={{\n margin: 0,\n fontFamily: doodleUiFontFamily,\n fontSize: sizes[variant],\n fontWeight: doodleUiFontWeight(variant === \"lead\" ? 500 : 400),\n lineHeight: 1.55,\n color: theme.ink,\n opacity,\n ...style,\n }}\n {...rest}\n >\n {children}\n </p>\n );\n});\n\nexport const Paragraph = Text;\n\nexport interface BlockquoteProps\n extends Omit<HTMLAttributes<HTMLQuoteElement>, \"color\">,\n SketchProps {\n animate?: boolean;\n}\n\nexport const Blockquote = forwardRef<HTMLQuoteElement, BlockquoteProps>(\n function Blockquote(\n {\n className,\n style,\n children,\n roughness,\n seed,\n sketchColor,\n bowing,\n strokeWidth,\n animate,\n ...rest\n },\n ref,\n ) {\n const theme = useSketchTheme(sketchColor);\n const ink = sketchColor ?? theme.ink;\n const accent = sketchColor ?? theme.accent;\n const resolvedSeed = useResolvedSeed(seed);\n const shouldAnimate = useAnimate(animate);\n const ruleRef = useRef<HTMLSpanElement>(null);\n useDrawIn(ruleRef, DRAW_IN_MARK_MS, shouldAnimate);\n\n return (\n <blockquote\n ref={ref}\n className={cn(className)}\n style={{\n display: \"flex\",\n gap: 12,\n margin: 0,\n padding: \"8px 0 8px 4px\",\n fontFamily: doodleUiFontFamily,\n fontSize: 15,\n fontStyle: \"italic\",\n lineHeight: 1.5,\n color: ink,\n ...style,\n }}\n {...rest}\n >\n <span\n ref={ruleRef}\n aria-hidden\n style={{ position: \"relative\", width: 6, flexShrink: 0, minHeight: 40 }}\n >\n <RoughSvg\n shape=\"line-vertical\"\n roughness={roughness}\n seed={resolvedSeed}\n sketchColor={accent}\n bowing={bowing}\n strokeWidth={strokeWidth ?? 2}\n />\n </span>\n <span>{children}</span>\n </blockquote>\n );\n },\n);\n\nexport interface InlineCodeProps\n extends Omit<HTMLAttributes<HTMLElement>, \"color\">,\n SketchProps {\n fill?: string;\n animate?: boolean;\n}\n\nexport const InlineCode = forwardRef<HTMLElement, InlineCodeProps>(\n function InlineCode(\n {\n className,\n style,\n children,\n fill,\n roughness,\n seed,\n sketchColor,\n bowing,\n fillStyle,\n strokeWidth,\n hachureGap,\n hachureAngle,\n fillWeight,\n animate,\n ...rest\n },\n ref,\n ) {\n const theme = useSketchTheme(sketchColor);\n const ink = sketchColor ?? theme.ink;\n\n return (\n <SketchBox\n className={cn(className)}\n style={{ display: \"inline-flex\", verticalAlign: \"baseline\", color: ink, ...style }}\n contentStyle={{\n padding: \"1px 6px\",\n fontSize: \"0.9em\",\n fontFamily: \"ui-monospace, monospace\",\n color: ink,\n }}\n fill={fill ?? theme.paper}\n fillStyle={fillStyle ?? \"solid\"}\n roughness={roughness}\n seed={seed}\n sketchColor={ink}\n bowing={bowing}\n strokeWidth={strokeWidth ?? 1.2}\n hachureGap={hachureGap}\n hachureAngle={hachureAngle}\n fillWeight={fillWeight}\n animate={animate}\n {...rest}\n >\n <code\n ref={ref}\n style={{\n border: \"none\",\n background: \"transparent\",\n padding: 0,\n font: \"inherit\",\n color: ink,\n }}\n >\n {children}\n </code>\n </SketchBox>\n );\n },\n);\n\nexport interface HighlightProps\n extends Omit<HTMLAttributes<HTMLSpanElement>, \"color\">,\n SketchProps {\n fill?: string;\n animate?: boolean;\n}\n\nexport const Highlight = forwardRef<HTMLSpanElement, HighlightProps>(\n function Highlight(\n {\n className,\n style,\n children,\n fill,\n roughness,\n seed,\n sketchColor,\n bowing,\n strokeWidth,\n animate,\n ...rest\n },\n ref,\n ) {\n const resolvedSeed = useResolvedSeed(seed);\n const theme = useSketchTheme(sketchColor);\n const accent = sketchColor ?? theme.accent;\n const accentFill = fill ?? (theme.isDark\n ? (sketchColor ? `${sketchColor}25` : theme.accentFill)\n : theme.accentFill);\n const shouldAnimate = useAnimate(animate);\n const markRef = useRef<HTMLSpanElement>(null);\n useDrawIn(markRef, DRAW_IN_MARK_MS, shouldAnimate);\n\n return (\n <span\n ref={ref}\n className={cn(className)}\n style={{ position: \"relative\", display: \"inline\", ...style }}\n {...rest}\n >\n <span\n ref={markRef}\n aria-hidden\n style={{\n position: \"absolute\",\n left: -2,\n right: -2,\n bottom: 0,\n top: \"35%\",\n zIndex: 0,\n }}\n >\n <RoughSvg\n shape=\"rectangle\"\n roughness={roughness}\n seed={resolvedSeed}\n sketchColor={accent}\n fill={accentFill}\n fillStyle=\"solid\"\n bowing={bowing}\n strokeWidth={strokeWidth ?? 1}\n />\n </span>\n <span style={{ position: \"relative\", zIndex: 1 }}>{children}</span>\n </span>\n );\n },\n);\n","\"use client\";\n\nimport {\n createContext,\n forwardRef,\n useCallback,\n useContext,\n useMemo,\n useState,\n type ButtonHTMLAttributes,\n type HTMLAttributes,\n type ReactNode,\n} from \"react\";\nimport { useResolvedSeed } from \"../hooks/useResolvedSeed\";\nimport { useSketchTheme } from \"../hooks/useSketchTheme\";\nimport { RoughSvg } from \"../primitives/RoughSvg\";\nimport type { SketchProps } from \"../types\";\nimport { cn, doodleUiFontFamily, doodleUiFontWeight } from \"../utils\";\nimport { Button } from \"./Button\";\n\nconst SIDEBAR_WIDTH = 240;\nconst SIDEBAR_WIDTH_COLLAPSED = 56;\n\ninterface SidebarContextValue {\n open: boolean;\n setOpen: (open: boolean) => void;\n collapsed: boolean;\n toggleCollapsed: () => void;\n ink: string;\n paper: string;\n sketch: SketchProps;\n}\n\nconst SidebarContext = createContext<SidebarContextValue | null>(null);\n\nexport function useSidebar(): SidebarContextValue {\n const ctx = useContext(SidebarContext);\n if (!ctx) {\n throw new Error(\"Sidebar parts must be used inside <SidebarProvider>.\");\n }\n return ctx;\n}\n\nexport interface SidebarProviderProps extends SketchProps {\n defaultOpen?: boolean;\n open?: boolean;\n onOpenChange?: (open: boolean) => void;\n defaultCollapsed?: boolean;\n children?: ReactNode;\n}\n\nexport function SidebarProvider({\n defaultOpen = true,\n open: openProp,\n onOpenChange,\n defaultCollapsed = false,\n children,\n roughness,\n seed,\n sketchColor,\n bowing,\n strokeWidth,\n}: SidebarProviderProps) {\n const [uncontrolledOpen, setUncontrolledOpen] = useState(defaultOpen);\n const [collapsed, setCollapsed] = useState(defaultCollapsed);\n const open = openProp ?? uncontrolledOpen;\n const setOpen = useCallback(\n (next: boolean) => {\n onOpenChange?.(next);\n if (openProp === undefined) {\n setUncontrolledOpen(next);\n }\n },\n [onOpenChange, openProp],\n );\n const toggleCollapsed = useCallback(() => {\n setCollapsed((c) => !c);\n }, []);\n const theme = useSketchTheme(sketchColor);\n const ink = sketchColor ?? theme.ink;\n const paper = theme.paper;\n const value = useMemo(\n () => ({\n open,\n setOpen,\n collapsed,\n toggleCollapsed,\n ink,\n paper,\n sketch: { roughness, seed, sketchColor: ink, bowing, strokeWidth },\n }),\n [\n open,\n setOpen,\n collapsed,\n toggleCollapsed,\n ink,\n paper,\n roughness,\n seed,\n bowing,\n strokeWidth,\n ],\n );\n\n return (\n <SidebarContext.Provider value={value}>{children}</SidebarContext.Provider>\n );\n}\n\nexport interface SidebarProps extends HTMLAttributes<HTMLElement> {\n side?: \"left\" | \"right\";\n fill?: string;\n}\n\nexport const Sidebar = forwardRef<HTMLElement, SidebarProps>(function Sidebar(\n { className, style, children, fill, side = \"left\", ...rest },\n ref,\n) {\n const { open, collapsed, ink, paper, sketch } = useSidebar();\n const resolvedSeed = useResolvedSeed(sketch.seed);\n const width = collapsed ? SIDEBAR_WIDTH_COLLAPSED : SIDEBAR_WIDTH;\n\n if (!open) {\n return null;\n }\n\n return (\n <aside\n ref={ref}\n className={cn(className)}\n style={{\n position: \"relative\",\n flexShrink: 0,\n width,\n minHeight: 200,\n transition: \"width 200ms ease\",\n display: \"flex\",\n flexDirection: \"column\",\n background: fill ?? paper,\n color: ink,\n ...style,\n }}\n data-side={side}\n {...rest}\n >\n {children}\n <span\n aria-hidden\n style={{\n position: \"absolute\",\n top: 0,\n bottom: 0,\n width: 4,\n ...(side === \"left\" ? { right: 0 } : { left: 0 }),\n pointerEvents: \"none\",\n }}\n >\n <RoughSvg\n shape=\"line-vertical\"\n roughness={sketch.roughness}\n seed={resolvedSeed}\n sketchColor={sketch.sketchColor ?? ink}\n bowing={sketch.bowing}\n strokeWidth={sketch.strokeWidth ?? 1.5}\n />\n </span>\n </aside>\n );\n});\n\nexport function SidebarHeader({\n className,\n style,\n children,\n ...rest\n}: HTMLAttributes<HTMLDivElement>) {\n const { collapsed, ink } = useSidebar();\n return (\n <div\n className={cn(className)}\n style={{\n padding: collapsed ? \"12px 8px\" : \"16px 14px\",\n borderBottom: `1px solid ${ink}22`,\n ...style,\n }}\n {...rest}\n >\n {children}\n </div>\n );\n}\n\nexport function SidebarContent({\n className,\n style,\n children,\n ...rest\n}: HTMLAttributes<HTMLDivElement>) {\n return (\n <div\n className={cn(className)}\n style={{\n flex: 1,\n overflow: \"auto\",\n padding: \"8px 6px\",\n ...style,\n }}\n {...rest}\n >\n {children}\n </div>\n );\n}\n\nexport function SidebarFooter({\n className,\n style,\n children,\n ...rest\n}: HTMLAttributes<HTMLDivElement>) {\n const { ink } = useSidebar();\n return (\n <div\n className={cn(className)}\n style={{\n padding: \"12px 10px\",\n borderTop: `1px solid ${ink}22`,\n ...style,\n }}\n {...rest}\n >\n {children}\n </div>\n );\n}\n\nexport function SidebarGroup({\n className,\n style,\n children,\n title,\n ...rest\n}: HTMLAttributes<HTMLDivElement> & { title?: ReactNode }) {\n const { collapsed, ink } = useSidebar();\n return (\n <div\n className={cn(className)}\n style={{ marginBottom: 12, ...style }}\n {...rest}\n >\n {title && !collapsed ? (\n <div\n style={{\n padding: \"4px 10px 8px\",\n fontSize: 11,\n fontWeight: doodleUiFontWeight(600),\n fontFamily: doodleUiFontFamily,\n color: ink,\n opacity: 0.65,\n textTransform: \"uppercase\",\n letterSpacing: \"0.06em\",\n }}\n >\n {title}\n </div>\n ) : null}\n {children}\n </div>\n );\n}\n\nexport interface SidebarItemProps extends ButtonHTMLAttributes<HTMLButtonElement> {\n active?: boolean;\n}\n\nexport const SidebarItem = forwardRef<HTMLButtonElement, SidebarItemProps>(\n function SidebarItem(\n { className, style, children, active, ...rest },\n ref,\n ) {\n const { collapsed, ink, sketch } = useSidebar();\n return (\n <Button\n ref={ref}\n type=\"button\"\n variant={active ? \"secondary\" : \"ghost\"}\n className={cn(className)}\n style={{\n width: \"100%\",\n justifyContent: collapsed ? \"center\" : \"flex-start\",\n marginBottom: 4,\n ...style,\n }}\n roughness={sketch.roughness}\n seed={sketch.seed}\n sketchColor={ink}\n bowing={sketch.bowing}\n strokeWidth={sketch.strokeWidth}\n {...rest}\n >\n {children}\n </Button>\n );\n },\n);\n\nexport function SidebarTrigger({\n className,\n style,\n children,\n ...rest\n}: ButtonHTMLAttributes<HTMLButtonElement>) {\n const { toggleCollapsed, sketch, ink } = useSidebar();\n return (\n <Button\n type=\"button\"\n variant=\"outline\"\n size=\"sm\"\n className={cn(className)}\n style={style}\n onClick={toggleCollapsed}\n roughness={sketch.roughness}\n seed={sketch.seed}\n sketchColor={ink}\n bowing={sketch.bowing}\n strokeWidth={sketch.strokeWidth}\n {...rest}\n >\n {children ?? \"Toggle\"}\n </Button>\n );\n}\n\nexport interface SidebarLayoutProps extends HTMLAttributes<HTMLDivElement> {\n children?: ReactNode;\n}\n\nexport function SidebarLayout({\n className,\n style,\n children,\n ...rest\n}: SidebarLayoutProps) {\n return (\n <div\n className={cn(className)}\n style={{\n display: \"flex\",\n width: \"100%\",\n minHeight: 280,\n alignItems: \"stretch\",\n ...style,\n }}\n {...rest}\n >\n {children}\n </div>\n );\n}\n\nexport function SidebarInset({\n className,\n style,\n children,\n ...rest\n}: HTMLAttributes<HTMLDivElement>) {\n return (\n <div\n className={cn(className)}\n style={{\n flex: 1,\n padding: 16,\n minWidth: 0,\n ...style,\n }}\n {...rest}\n >\n {children}\n </div>\n );\n}\n","\"use client\";\n\nimport useEmblaCarousel, {\n type UseEmblaCarouselType,\n} from \"embla-carousel-react\";\nimport {\n createContext,\n forwardRef,\n useCallback,\n useContext,\n useEffect,\n useRef,\n useState,\n type ButtonHTMLAttributes,\n type CSSProperties,\n type HTMLAttributes,\n type KeyboardEvent,\n type MutableRefObject,\n type ReactNode,\n} from \"react\";\nimport {\n DRAW_IN_DURATION_MS,\n useAnimate,\n useDrawIn,\n} from \"../animations\";\nimport { useResolvedSeed } from \"../hooks/useResolvedSeed\";\nimport { useSketchTheme } from \"../hooks/useSketchTheme\";\nimport { SketchBox } from \"../primitives/SketchBox\";\nimport { RoughSvg } from \"../primitives/RoughSvg\";\nimport type { SketchProps } from \"../types\";\nimport { assignRef, cn, deriveSeed } from \"../utils\";\n\ntype CarouselApi = UseEmblaCarouselType[1];\n\ninterface CarouselContextValue {\n emblaRef: ReturnType<typeof useEmblaCarousel>[0];\n api: CarouselApi;\n scrollPrev: () => void;\n scrollNext: () => void;\n canScrollPrev: boolean;\n canScrollNext: boolean;\n orientation: \"horizontal\" | \"vertical\";\n sketch: SketchProps & { animate?: boolean; paper: string; ink: string };\n bordered: boolean;\n}\n\nconst CarouselContext = createContext<CarouselContextValue | null>(null);\n\nexport function useCarousel(): CarouselContextValue {\n const ctx = useContext(CarouselContext);\n if (!ctx) {\n throw new Error(\"Carousel parts must be used inside <Carousel>.\");\n }\n return ctx;\n}\n\nexport type CarouselOptions = Parameters<typeof useEmblaCarousel>[0];\n\nexport interface CarouselProps extends SketchProps {\n opts?: CarouselOptions;\n plugins?: Parameters<typeof useEmblaCarousel>[1];\n orientation?: \"horizontal\" | \"vertical\";\n bordered?: boolean;\n className?: string;\n style?: CSSProperties;\n children?: ReactNode;\n setApi?: (api: CarouselApi) => void;\n fill?: string;\n animate?: boolean;\n}\n\nexport function Carousel({\n opts,\n plugins,\n orientation = \"horizontal\",\n bordered = false,\n className,\n style,\n children,\n setApi,\n fill,\n roughness,\n seed,\n sketchColor,\n bowing,\n strokeWidth,\n fillStyle,\n hachureGap,\n hachureAngle,\n fillWeight,\n animate,\n}: CarouselProps) {\n const [emblaRef, api] = useEmblaCarousel(\n {\n ...opts,\n axis: orientation === \"horizontal\" ? \"x\" : \"y\",\n },\n plugins,\n );\n const [canScrollPrev, setCanScrollPrev] = useState(false);\n const [canScrollNext, setCanScrollNext] = useState(false);\n\n const theme = useSketchTheme(sketchColor);\n const ink = sketchColor ?? theme.ink;\n const paper = fill ?? theme.paper;\n\n const scrollPrev = useCallback(() => api?.scrollPrev(), [api]);\n const scrollNext = useCallback(() => api?.scrollNext(), [api]);\n\n const onSelect = useCallback(() => {\n if (!api) return;\n setCanScrollPrev(api.canScrollPrev());\n setCanScrollNext(api.canScrollNext());\n }, [api]);\n\n useEffect(() => {\n if (!api) return;\n setApi?.(api);\n onSelect();\n api.on(\"reInit\", onSelect);\n api.on(\"select\", onSelect);\n return () => {\n api.off(\"reInit\", onSelect);\n api.off(\"select\", onSelect);\n };\n }, [api, onSelect, setApi]);\n\n const handleKeyDown = useCallback(\n (event: KeyboardEvent<HTMLDivElement>) => {\n if (orientation === \"horizontal\") {\n if (event.key === \"ArrowLeft\") {\n event.preventDefault();\n scrollPrev();\n } else if (event.key === \"ArrowRight\") {\n event.preventDefault();\n scrollNext();\n }\n } else if (event.key === \"ArrowUp\") {\n event.preventDefault();\n scrollPrev();\n } else if (event.key === \"ArrowDown\") {\n event.preventDefault();\n scrollNext();\n }\n },\n [orientation, scrollPrev, scrollNext],\n );\n\n const value: CarouselContextValue = {\n emblaRef,\n api,\n scrollPrev,\n scrollNext,\n canScrollPrev,\n canScrollNext,\n orientation,\n sketch: {\n roughness,\n seed,\n sketchColor: ink,\n bowing,\n strokeWidth,\n fillStyle,\n hachureGap,\n hachureAngle,\n fillWeight,\n animate,\n paper,\n ink,\n },\n bordered,\n };\n\n return (\n <CarouselContext.Provider value={value}>\n <div\n className={cn(className)}\n role=\"region\"\n aria-roledescription=\"carousel\"\n tabIndex={0}\n onKeyDown={handleKeyDown}\n style={{\n position: \"relative\",\n width: \"100%\",\n outline: \"none\",\n color: ink,\n ...style,\n }}\n >\n {children}\n </div>\n </CarouselContext.Provider>\n );\n}\n\nexport interface CarouselContentProps extends HTMLAttributes<HTMLDivElement> {}\n\nexport const CarouselContent = forwardRef<HTMLDivElement, CarouselContentProps>(\n function CarouselContent({ className, style, children, ...rest }, ref) {\n const { emblaRef, orientation, bordered, sketch } = useCarousel();\n const gap = 16;\n\n const viewport = (\n <div ref={emblaRef} style={{ overflow: \"hidden\" }}>\n <div\n ref={ref}\n className={cn(className)}\n style={{\n display: \"flex\",\n flexDirection: orientation === \"vertical\" ? \"column\" : \"row\",\n marginLeft: orientation === \"horizontal\" ? -gap : 0,\n marginTop: orientation === \"vertical\" ? -gap : 0,\n ...style,\n }}\n {...rest}\n >\n {children}\n </div>\n </div>\n );\n\n if (!bordered) {\n return viewport;\n }\n\n return (\n <SketchBox\n fill={sketch.paper}\n fillStyle={sketch.fillStyle ?? \"solid\"}\n roughness={sketch.roughness}\n seed={sketch.seed}\n sketchColor={sketch.sketchColor}\n bowing={sketch.bowing}\n strokeWidth={sketch.strokeWidth}\n hachureGap={sketch.hachureGap}\n hachureAngle={sketch.hachureAngle}\n fillWeight={sketch.fillWeight}\n animate={sketch.animate}\n contentStyle={{ padding: 8, color: sketch.ink }}\n >\n {viewport}\n </SketchBox>\n );\n },\n);\n\nexport interface CarouselItemProps extends HTMLAttributes<HTMLDivElement> {}\n\nexport const CarouselItem = forwardRef<HTMLDivElement, CarouselItemProps>(\n function CarouselItem({ className, style, children, ...rest }, ref) {\n const { orientation } = useCarousel();\n const gap = 16;\n return (\n <div\n ref={ref}\n className={cn(className)}\n role=\"group\"\n aria-roledescription=\"slide\"\n style={{\n flex: \"0 0 100%\",\n minWidth: 0,\n paddingLeft: orientation === \"horizontal\" ? gap : 0,\n paddingTop: orientation === \"vertical\" ? gap : 0,\n ...style,\n }}\n {...rest}\n >\n {children}\n </div>\n );\n },\n);\n\nconst ARROW_PATH_PREV = \"M 14 4 L 6 12 L 14 20\";\nconst ARROW_PATH_NEXT = \"M 6 4 L 14 12 L 6 20\";\nconst ARROW_OFFSET = 52;\nconst ARROW_SIZE = 40;\n\nexport interface CarouselArrowProps\n extends ButtonHTMLAttributes<HTMLButtonElement> {}\n\nconst CarouselArrow = forwardRef<\n HTMLButtonElement,\n CarouselArrowProps & { direction: \"prev\" | \"next\" }\n>(function CarouselArrow(\n { className, style, direction, ...rest },\n ref,\n) {\n const {\n scrollPrev,\n scrollNext,\n canScrollPrev,\n canScrollNext,\n sketch,\n orientation,\n } = useCarousel();\n const resolvedSeed = useResolvedSeed(sketch.seed);\n const ink = sketch.sketchColor ?? sketch.ink;\n const isPrev = direction === \"prev\";\n const disabled = isPrev ? !canScrollPrev : !canScrollNext;\n const shouldAnimate = useAnimate(sketch.animate);\n const rootRef = useRef<HTMLButtonElement>(null);\n const sketchSeed = deriveSeed(resolvedSeed, direction);\n\n useDrawIn(rootRef, DRAW_IN_DURATION_MS, shouldAnimate, sketchSeed);\n\n const horizontal = orientation === \"horizontal\";\n\n return (\n <button\n ref={(node) => {\n (rootRef as MutableRefObject<HTMLButtonElement | null>).current = node;\n assignRef(ref, node);\n }}\n type=\"button\"\n disabled={disabled}\n className={cn(className)}\n style={{\n position: \"absolute\",\n zIndex: 2,\n width: ARROW_SIZE,\n height: ARROW_SIZE,\n padding: 0,\n border: \"none\",\n background: \"transparent\",\n cursor: disabled ? \"not-allowed\" : \"pointer\",\n opacity: disabled ? 0.5 : 1,\n ...(horizontal\n ? {\n top: \"50%\",\n transform: \"translateY(-50%)\",\n left: isPrev ? -ARROW_OFFSET : undefined,\n right: isPrev ? undefined : -ARROW_OFFSET,\n }\n : {\n left: \"50%\",\n transform: \"translateX(-50%) rotate(90deg)\",\n top: isPrev ? -ARROW_OFFSET : undefined,\n bottom: isPrev ? undefined : -ARROW_OFFSET,\n }),\n ...style,\n }}\n onClick={isPrev ? scrollPrev : scrollNext}\n aria-label={isPrev ? \"Previous slide\" : \"Next slide\"}\n {...rest}\n >\n <RoughSvg\n shape=\"ellipse\"\n roughness={sketch.roughness}\n seed={sketchSeed}\n sketchColor={ink}\n bowing={sketch.bowing}\n fill={sketch.paper}\n fillStyle=\"solid\"\n strokeWidth={sketch.strokeWidth ?? 1.5}\n inset={1.5}\n />\n <span\n style={{\n position: \"relative\",\n zIndex: 1,\n width: 18,\n height: 22,\n display: \"block\",\n margin: \"0 auto\",\n }}\n >\n <RoughSvg\n shape=\"path\"\n path={isPrev ? ARROW_PATH_PREV : ARROW_PATH_NEXT}\n roughness={sketch.roughness}\n seed={deriveSeed(resolvedSeed, `${direction}-arrow`)}\n sketchColor={ink}\n strokeWidth={sketch.strokeWidth ?? 1.6}\n />\n </span>\n </button>\n );\n});\n\nexport const CarouselPrevious = forwardRef<HTMLButtonElement, CarouselArrowProps>(\n function CarouselPrevious(props, ref) {\n return <CarouselArrow ref={ref} direction=\"prev\" {...props} />;\n },\n);\n\nexport const CarouselNext = forwardRef<HTMLButtonElement, CarouselArrowProps>(\n function CarouselNext(props, ref) {\n return <CarouselArrow ref={ref} direction=\"next\" {...props} />;\n },\n);\n"]}
|