doodleui-react 0.1.1 → 0.2.0
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/README.md +3 -1
- package/dist/index.cjs +2004 -0
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +192 -2
- package/dist/index.d.ts +192 -2
- package/dist/index.js +1959 -2
- package/dist/index.js.map +1 -1
- package/package.json +8 -1
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/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"],"names":["createContext","useState","useCallback","useLayoutEffect","useMemo","jsx","useContext","useRef","rough","forwardRef","SketchBox","jsxs","Button","Input","Textarea","Checkbox","useId","CheckboxPrimitive","RadioGroup","RadioGroupPrimitive","Radio","Card","Badge","Alert","Dialog","Divider","Progress","TooltipPrimitive"],"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","export 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","\"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 forwardRef,\n type CSSProperties,\n type HTMLAttributes,\n type ReactNode,\n} from \"react\";\nimport { RoughSvg } from \"./RoughSvg\";\nimport type { FillStyle, RoughShape, SketchProps } from \"../types\";\nimport { cn, doodleUiFontFamily } from \"../utils\";\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\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 ...rest\n },\n ref,\n ) {\n return (\n <div\n ref={ref}\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 useState,\n type ButtonHTMLAttributes,\n type CSSProperties,\n} from \"react\";\nimport { RoughSvg } from \"../primitives/RoughSvg\";\nimport { SKETCH_COLORS, type SketchProps } from \"../types\";\nimport { cn, 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\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\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 onMouseEnter,\n onMouseLeave,\n ...rest\n },\n ref,\n ) {\n const [hovered, setHovered] = useState(false);\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 return (\n <button\n ref={ref}\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={seed}\n sketchColor={stroke}\n bowing={bowing}\n fillStyle={fillStyle ?? \"hachure\"}\n fill={fill}\n strokeWidth={\n hovered ? (strokeWidth ?? 1.75) + 0.4 : 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 useState,\n type InputHTMLAttributes,\n type ReactNode,\n} from \"react\";\nimport { RoughSvg } from \"../primitives/RoughSvg\";\nimport { SKETCH_COLORS, type SketchProps } from \"../types\";\nimport { cn, doodleUiFontFamily, doodleUiFontWeight } from \"../utils\";\n\nexport interface InputProps\n extends Omit<InputHTMLAttributes<HTMLInputElement>, \"color\" | \"size\">,\n SketchProps {\n label?: ReactNode;\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 ...rest\n },\n ref,\n) {\n const [focused, setFocused] = useState(false);\n const ink = sketchColor ?? SKETCH_COLORS.ink;\n const inputId = id;\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 style={{ position: \"relative\", display: \"block\" }}>\n <RoughSvg\n shape=\"rectangle\"\n roughness={roughness}\n seed={seed}\n sketchColor={focused ? SKETCH_COLORS.accent : ink}\n bowing={bowing}\n fillStyle={fillStyle}\n strokeWidth={focused ? (strokeWidth ?? 1.75) + 0.35 : strokeWidth}\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 useState,\n type ReactNode,\n type TextareaHTMLAttributes,\n} from \"react\";\nimport { RoughSvg } from \"../primitives/RoughSvg\";\nimport { SKETCH_COLORS, type SketchProps } from \"../types\";\nimport { cn, doodleUiFontFamily, doodleUiFontWeight } from \"../utils\";\n\nexport interface TextareaProps\n extends Omit<TextareaHTMLAttributes<HTMLTextAreaElement>, \"color\">,\n SketchProps {\n label?: ReactNode;\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 ...rest\n },\n ref,\n ) {\n const [focused, setFocused] = useState(false);\n const ink = sketchColor ?? SKETCH_COLORS.ink;\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 style={{ position: \"relative\", display: \"block\" }}>\n <RoughSvg\n shape=\"rectangle\"\n roughness={roughness}\n seed={seed}\n sketchColor={focused ? SKETCH_COLORS.accent : ink}\n bowing={bowing}\n fillStyle={fillStyle}\n strokeWidth={focused ? (strokeWidth ?? 1.75) + 0.35 : strokeWidth}\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, type ReactNode } from \"react\";\nimport * as CheckboxPrimitive from \"@radix-ui/react-checkbox\";\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\nconst BOX = 20;\nconst CHECK_PATH = \"M 4.5 10.5 L 8.5 14.5 L 15.5 5.5\";\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 ...rest\n },\n ref,\n ) {\n const ink = sketchColor ?? SKETCH_COLORS.ink;\n const generatedId = useId();\n const inputId = id ?? generatedId;\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 <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 <CheckboxPrimitive.Indicator\n style={{\n position: \"absolute\",\n inset: 0,\n display: \"block\",\n }}\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 </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 type ComponentPropsWithoutRef,\n type ReactNode,\n} from \"react\";\nimport * as RadioGroupPrimitive from \"@radix-ui/react-radio-group\";\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\nconst SIZE = 20;\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 ...rest\n },\n ref,\n) {\n const ink = sketchColor ?? SKETCH_COLORS.ink;\n const generatedId = useId();\n const inputId = id ?? generatedId;\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 <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 <RadioGroupPrimitive.Indicator\n style={{\n position: \"absolute\",\n inset: 0,\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 </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\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 ...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 };\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\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 ...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 {...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 { 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\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 ...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 {...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 type { ReactNode } from \"react\";\nimport * as Dialog from \"@radix-ui/react-dialog\";\nimport { SketchBox } from \"../primitives/SketchBox\";\nimport { Button } from \"./Button\";\nimport { SKETCH_COLORS, type SketchProps } from \"../types\";\nimport { cn, doodleUiFontFamily, doodleUiFontWeight } from \"../utils\";\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\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}: ModalProps) {\n const ink = sketchColor ?? SKETCH_COLORS.ink;\n\n return (\n <Dialog.Root open={open} defaultOpen={defaultOpen} onOpenChange={onOpenChange}>\n {trigger ? <Dialog.Trigger asChild>{trigger}</Dialog.Trigger> : null}\n <Dialog.Portal>\n <Dialog.Overlay\n style={{\n position: \"fixed\",\n inset: 0,\n background: \"rgba(31, 29, 26, 0.38)\",\n zIndex: 70,\n }}\n />\n <Dialog.Content\n className={cn(className)}\n style={{\n position: \"fixed\",\n left: \"50%\",\n top: \"50%\",\n transform: \"translate(-50%, -50%)\",\n zIndex: 80,\n width: \"min(480px, calc(100vw - 32px))\",\n outline: \"none\",\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 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 style={{ position: \"absolute\", width: 1, height: 1, overflow: \"hidden\", clip: \"rect(0 0 0 0)\" }}>\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 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 </Dialog.Content>\n </Dialog.Portal>\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 { forwardRef, type HTMLAttributes } from \"react\";\nimport { RoughSvg } from \"../primitives/RoughSvg\";\nimport { SKETCH_COLORS, type SketchProps } from \"../types\";\nimport { 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\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 ...rest\n },\n ref,\n ) {\n const horizontal = orientation === \"horizontal\";\n\n return (\n <div\n ref={ref}\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 { forwardRef, type HTMLAttributes } from \"react\";\nimport { RoughSvg } from \"../primitives/RoughSvg\";\nimport { SKETCH_COLORS, type SketchProps } from \"../types\";\nimport { cn } from \"../utils\";\n\nexport interface ProgressProps\n extends Omit<HTMLAttributes<HTMLDivElement>, \"color\">,\n SketchProps {\n value?: number;\n max?: number;\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 ...rest\n },\n ref,\n ) {\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\n return (\n <div\n ref={ref}\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 <RoughSvg\n shape=\"rectangle\"\n roughness={roughness}\n seed={seed}\n sketchColor={SKETCH_COLORS.ink}\n bowing={bowing}\n strokeWidth={strokeWidth ?? 1.5}\n inset={2}\n />\n {percent > 0 ? (\n <div\n style={{\n position: \"absolute\",\n left: 5,\n top: 4,\n bottom: 4,\n width: `calc(${percent}% - 10px)`,\n minWidth: percent > 0 ? 8 : 0,\n overflow: \"hidden\",\n }}\n >\n <RoughSvg\n shape=\"rectangle\"\n roughness={(roughness ?? 1.5) + 0.55}\n seed={seed}\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 { 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\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}: 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 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"]}
|
|
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/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"],"names":["createContext","useState","useCallback","useLayoutEffect","useMemo","jsx","useContext","useRef","rough","forwardRef","SketchBox","jsxs","Button","Input","Textarea","Checkbox","useId","CheckboxPrimitive","RadioGroup","RadioGroupPrimitive","Radio","Card","Badge","Alert","Dialog","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","useEffect","Stepper"],"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","export 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 forwardRef,\n type CSSProperties,\n type HTMLAttributes,\n type ReactNode,\n} from \"react\";\nimport { RoughSvg } from \"./RoughSvg\";\nimport type { FillStyle, RoughShape, SketchProps } from \"../types\";\nimport { cn, doodleUiFontFamily } from \"../utils\";\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\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 ...rest\n },\n ref,\n ) {\n return (\n <div\n ref={ref}\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 useState,\n type ButtonHTMLAttributes,\n type CSSProperties,\n} from \"react\";\nimport { RoughSvg } from \"../primitives/RoughSvg\";\nimport { SKETCH_COLORS, type SketchProps } from \"../types\";\nimport { cn, 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\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\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 onMouseEnter,\n onMouseLeave,\n ...rest\n },\n ref,\n ) {\n const [hovered, setHovered] = useState(false);\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 return (\n <button\n ref={ref}\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={seed}\n sketchColor={stroke}\n bowing={bowing}\n fillStyle={fillStyle ?? \"hachure\"}\n fill={fill}\n strokeWidth={\n hovered ? (strokeWidth ?? 1.75) + 0.4 : 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 useState,\n type InputHTMLAttributes,\n type ReactNode,\n} from \"react\";\nimport { RoughSvg } from \"../primitives/RoughSvg\";\nimport { SKETCH_COLORS, type SketchProps } from \"../types\";\nimport { cn, doodleUiFontFamily, doodleUiFontWeight } from \"../utils\";\n\nexport interface InputProps\n extends Omit<InputHTMLAttributes<HTMLInputElement>, \"color\" | \"size\">,\n SketchProps {\n label?: ReactNode;\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 ...rest\n },\n ref,\n) {\n const [focused, setFocused] = useState(false);\n const ink = sketchColor ?? SKETCH_COLORS.ink;\n const inputId = id;\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 style={{ position: \"relative\", display: \"block\" }}>\n <RoughSvg\n shape=\"rectangle\"\n roughness={roughness}\n seed={seed}\n sketchColor={focused ? SKETCH_COLORS.accent : ink}\n bowing={bowing}\n fillStyle={fillStyle}\n strokeWidth={focused ? (strokeWidth ?? 1.75) + 0.35 : strokeWidth}\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 useState,\n type ReactNode,\n type TextareaHTMLAttributes,\n} from \"react\";\nimport { RoughSvg } from \"../primitives/RoughSvg\";\nimport { SKETCH_COLORS, type SketchProps } from \"../types\";\nimport { cn, doodleUiFontFamily, doodleUiFontWeight } from \"../utils\";\n\nexport interface TextareaProps\n extends Omit<TextareaHTMLAttributes<HTMLTextAreaElement>, \"color\">,\n SketchProps {\n label?: ReactNode;\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 ...rest\n },\n ref,\n ) {\n const [focused, setFocused] = useState(false);\n const ink = sketchColor ?? SKETCH_COLORS.ink;\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 style={{ position: \"relative\", display: \"block\" }}>\n <RoughSvg\n shape=\"rectangle\"\n roughness={roughness}\n seed={seed}\n sketchColor={focused ? SKETCH_COLORS.accent : ink}\n bowing={bowing}\n fillStyle={fillStyle}\n strokeWidth={focused ? (strokeWidth ?? 1.75) + 0.35 : strokeWidth}\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, type ReactNode } from \"react\";\nimport * as CheckboxPrimitive from \"@radix-ui/react-checkbox\";\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\nconst BOX = 20;\nconst CHECK_PATH = \"M 4.5 10.5 L 8.5 14.5 L 15.5 5.5\";\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 ...rest\n },\n ref,\n ) {\n const ink = sketchColor ?? SKETCH_COLORS.ink;\n const generatedId = useId();\n const inputId = id ?? generatedId;\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 <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 <CheckboxPrimitive.Indicator\n style={{\n position: \"absolute\",\n inset: 0,\n display: \"block\",\n }}\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 </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 type ComponentPropsWithoutRef,\n type ReactNode,\n} from \"react\";\nimport * as RadioGroupPrimitive from \"@radix-ui/react-radio-group\";\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\nconst SIZE = 20;\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 ...rest\n },\n ref,\n) {\n const ink = sketchColor ?? SKETCH_COLORS.ink;\n const generatedId = useId();\n const inputId = id ?? generatedId;\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 <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 <RadioGroupPrimitive.Indicator\n style={{\n position: \"absolute\",\n inset: 0,\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 </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\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 ...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 };\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\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 ...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 {...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 { 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\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 ...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 {...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 type { ReactNode } from \"react\";\nimport * as Dialog from \"@radix-ui/react-dialog\";\nimport { SketchBox } from \"../primitives/SketchBox\";\nimport { Button } from \"./Button\";\nimport { SKETCH_COLORS, type SketchProps } from \"../types\";\nimport { cn, doodleUiFontFamily, doodleUiFontWeight } from \"../utils\";\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\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}: ModalProps) {\n const ink = sketchColor ?? SKETCH_COLORS.ink;\n\n return (\n <Dialog.Root open={open} defaultOpen={defaultOpen} onOpenChange={onOpenChange}>\n {trigger ? <Dialog.Trigger asChild>{trigger}</Dialog.Trigger> : null}\n <Dialog.Portal>\n <Dialog.Overlay\n style={{\n position: \"fixed\",\n inset: 0,\n background: \"rgba(31, 29, 26, 0.38)\",\n zIndex: 70,\n }}\n />\n <Dialog.Content\n className={cn(className)}\n style={{\n position: \"fixed\",\n left: \"50%\",\n top: \"50%\",\n transform: \"translate(-50%, -50%)\",\n zIndex: 80,\n width: \"min(480px, calc(100vw - 32px))\",\n outline: \"none\",\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 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 style={{ position: \"absolute\", width: 1, height: 1, overflow: \"hidden\", clip: \"rect(0 0 0 0)\" }}>\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 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 </Dialog.Content>\n </Dialog.Portal>\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 { forwardRef, type HTMLAttributes } from \"react\";\nimport { RoughSvg } from \"../primitives/RoughSvg\";\nimport { SKETCH_COLORS, type SketchProps } from \"../types\";\nimport { 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\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 ...rest\n },\n ref,\n ) {\n const horizontal = orientation === \"horizontal\";\n\n return (\n <div\n ref={ref}\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 { forwardRef, type HTMLAttributes } from \"react\";\nimport { RoughSvg } from \"../primitives/RoughSvg\";\nimport { SKETCH_COLORS, type SketchProps } from \"../types\";\nimport { cn } from \"../utils\";\n\nexport interface ProgressProps\n extends Omit<HTMLAttributes<HTMLDivElement>, \"color\">,\n SketchProps {\n value?: number;\n max?: number;\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 ...rest\n },\n ref,\n ) {\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\n return (\n <div\n ref={ref}\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 <RoughSvg\n shape=\"rectangle\"\n roughness={roughness}\n seed={seed}\n sketchColor={SKETCH_COLORS.ink}\n bowing={bowing}\n strokeWidth={strokeWidth ?? 1.5}\n inset={2}\n />\n {percent > 0 ? (\n <div\n style={{\n position: \"absolute\",\n left: 5,\n top: 4,\n bottom: 4,\n width: `calc(${percent}% - 10px)`,\n minWidth: percent > 0 ? 8 : 0,\n overflow: \"hidden\",\n }}\n >\n <RoughSvg\n shape=\"rectangle\"\n roughness={(roughness ?? 1.5) + 0.55}\n seed={seed}\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 { 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\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}: 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 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 useState,\n type CSSProperties,\n type ReactNode,\n} from \"react\";\nimport * as SelectPrimitive from \"@radix-ui/react-select\";\nimport { RoughSvg } from \"../primitives/RoughSvg\";\nimport { SketchBox } from \"../primitives/SketchBox\";\nimport { SKETCH_COLORS, type SketchProps } from \"../types\";\nimport { cn, doodleUiFontFamily, doodleUiFontWeight } from \"../utils\";\nimport { useResolvedSeed } from \"../hooks/useResolvedSeed\";\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}\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\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 \"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 }}\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\n return (\n <SelectPrimitive.Trigger\n ref={ref}\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 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, useState, type ReactNode } from \"react\";\nimport * as SwitchPrimitive from \"@radix-ui/react-switch\";\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 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\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 ...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\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 <RoughSvg\n shape=\"rectangle\"\n roughness={roughness}\n seed={resolvedSeed}\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 <SwitchPrimitive.Thumb\n style={{\n position: \"absolute\",\n top: (TRACK_H - THUMB) / 2,\n left: 0,\n width: THUMB,\n height: THUMB,\n display: \"block\",\n transform: `translateX(${isOn ? THUMB_ON : THUMB_OFF}px)`,\n transition: \"transform 160ms ease\",\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 </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 useState,\n type ComponentPropsWithoutRef,\n type ReactNode,\n} from \"react\";\nimport * as TabsPrimitive from \"@radix-ui/react-tabs\";\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\ninterface TabsSketchContextValue extends SketchProps {\n resolvedSeed: number;\n ink: string;\n current: string | undefined;\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\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 ...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\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 }}\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\nexport const TabList = forwardRef<HTMLDivElement, TabListProps>(\n function TabList({ className, style, children, ...rest }, ref) {\n return (\n <TabsPrimitive.List\n ref={ref}\n className={cn(className)}\n style={{\n display: \"flex\",\n flexWrap: \"wrap\",\n gap: 4,\n ...style,\n }}\n {...rest}\n >\n {children}\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 {active ? (\n <span\n style={{\n position: \"absolute\",\n left: 8,\n right: 8,\n bottom: 2,\n height: 10,\n pointerEvents: \"none\",\n }}\n >\n <RoughSvg\n shape=\"line\"\n roughness={(sketch.roughness ?? 1.5) + 0.35}\n seed={deriveSeed(sketch.resolvedSeed, value)}\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 ) : null}\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 { 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\ninterface TableSketchContextValue extends SketchProps {\n resolvedSeed: number;\n ink: string;\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\ninterface RowLine {\n y: number;\n width: number;\n key: string;\n header: boolean;\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 ...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\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 });\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 }}\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 if (line.header && !headerUnderline) return null;\n return (\n <div\n key={line.key}\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\n ? (roughness ?? 1.5) + 0.2\n : 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 </div>\n <table\n ref={(node) => {\n tableRef.current = node;\n if (typeof ref === \"function\") ref(node);\n else if (ref) ref.current = 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 useLayoutEffect,\n useState,\n type CSSProperties,\n type ReactNode,\n} from \"react\";\nimport * as ToastPrimitive from \"@radix-ui/react-toast\";\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\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}: ToastProps) {\n const position = useContext(ToastPositionContext);\n const fromTop = position.startsWith(\"top\");\n const [entered, setEntered] = useState(false);\n const color = sketchColor ?? VARIANT_COLOR[variant];\n const visible = open ?? true;\n\n useLayoutEffect(() => {\n if (!visible) {\n setEntered(false);\n return;\n }\n setEntered(false);\n const frame = requestAnimationFrame(() => {\n requestAnimationFrame(() => setEntered(true));\n });\n return () => cancelAnimationFrame(frame);\n }, [visible]);\n\n return (\n <ToastPrimitive.Root\n open={open}\n defaultOpen={defaultOpen}\n onOpenChange={onOpenChange}\n duration={duration}\n className={cn(className)}\n style={{\n transform: entered\n ? \"translateY(0)\"\n : `translateY(${fromTop ? \"-10px\" : \"10px\"})`,\n opacity: entered ? 1 : 0,\n transition: \"transform 200ms ease, opacity 200ms ease\",\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 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 </ToastPrimitive.Root>\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"]}
|