doodleui-react 0.1.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.
@@ -0,0 +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","useMemo","jsx","useContext","useLayoutEffect","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\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 useMemo,\n useState,\n type ReactNode,\n} from \"react\";\nimport { randomSeed } from \"../utils\";\n\nexport interface SketchSeedContextValue {\n seed: 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\nexport function SketchSeedProvider({\n children,\n initialSeed,\n}: SketchSeedProviderProps) {\n const [seed, setSeed] = useState(() => initialSeed ?? randomSeed());\n\n const shuffle = useCallback(() => {\n setSeed(randomSeed());\n }, []);\n\n const value = useMemo(\n () => ({ seed, shuffle, setSeed }),\n [seed, 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 } 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={{ position: \"relative\", zIndex: 1, ...contentStyle }}\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 } 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: \"inherit\",\n fontWeight: 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 } 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 style={{ fontSize: 13, fontWeight: 600, color: ink }}>\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: \"inherit\",\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 } 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 style={{ fontSize: 13, fontWeight: 600, color: ink }}>\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: \"inherit\",\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 } 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 htmlFor={inputId} style={{ fontSize: 15, cursor: \"pointer\" }}>\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 } 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 htmlFor={inputId} style={{ fontSize: 15, cursor: \"pointer\" }}>\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 } 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: 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 } 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: 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 } 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 style={{ fontWeight: 700, marginBottom: 4, fontSize: 15 }}>\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 } 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: 700,\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 } 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 color: ink,\n maxWidth: 240,\n }}\n >\n {content}\n </SketchBox>\n </TooltipPrimitive.Content>\n </TooltipPrimitive.Portal>\n </TooltipPrimitive.Root>\n );\n}\n"]}
@@ -0,0 +1,185 @@
1
+ import * as react from 'react';
2
+ import { CSSProperties, HTMLAttributes, ReactNode, ButtonHTMLAttributes, InputHTMLAttributes, TextareaHTMLAttributes, ComponentPropsWithoutRef } from 'react';
3
+ import { Options } from 'roughjs/bin/core';
4
+ import * as CheckboxPrimitive from '@radix-ui/react-checkbox';
5
+ import * as RadioGroupPrimitive from '@radix-ui/react-radio-group';
6
+ import * as Dialog from '@radix-ui/react-dialog';
7
+ import * as TooltipPrimitive from '@radix-ui/react-tooltip';
8
+
9
+ type FillStyle = "hachure" | "solid" | "zigzag" | "cross-hatch" | "dots" | "dashed" | "zigzag-line";
10
+ type RoughShape = "rectangle" | "ellipse" | "line" | "line-vertical" | "path";
11
+ interface SketchProps {
12
+ /** Sketchiness intensity. Default 1.5 */
13
+ roughness?: number;
14
+ /** Lock the wobble. Omit to follow SketchSeedProvider or randomize on mount */
15
+ seed?: number;
16
+ /** Stroke color override */
17
+ sketchColor?: string;
18
+ /** Line curvature. Default 1 */
19
+ bowing?: number;
20
+ fillStyle?: FillStyle;
21
+ strokeWidth?: number;
22
+ }
23
+ interface RoughSvgProps extends SketchProps {
24
+ shape?: RoughShape;
25
+ /** Explicit width. Falls back to the parent box via ResizeObserver */
26
+ width?: number;
27
+ height?: number;
28
+ fill?: string;
29
+ /** Inset the drawing from the box edge so strokes are not clipped */
30
+ inset?: number;
31
+ path?: string;
32
+ className?: string;
33
+ style?: CSSProperties;
34
+ }
35
+ declare function toRoughOptions(props: SketchProps & {
36
+ fill?: string;
37
+ stroke?: string;
38
+ }): Options;
39
+ declare const DEFAULT_ROUGHNESS = 1.5;
40
+ declare const DEFAULT_BOWING = 1;
41
+ declare const DEFAULT_STROKE_WIDTH = 1.75;
42
+ declare const DEFAULT_INK = "#1f1d1a";
43
+ declare const SKETCH_COLORS: {
44
+ readonly ink: "#1f1d1a";
45
+ readonly accent: "#e24b3b";
46
+ readonly accentFill: "#f4c4bc";
47
+ readonly secondaryFill: "#d7e3d4";
48
+ readonly paper: "#eef0ea";
49
+ readonly info: "#1d4e89";
50
+ readonly warning: "#c47b17";
51
+ readonly error: "#c0392b";
52
+ readonly success: "#2d6a4f";
53
+ };
54
+
55
+ /**
56
+ * Absolutely-positioned SVG layer that draws a rough.js shape behind HTML content.
57
+ * Parent must be `position: relative`.
58
+ */
59
+ declare function RoughSvg({ shape, width: widthProp, height: heightProp, roughness, seed: seedProp, sketchColor, bowing, fillStyle, strokeWidth, fill, inset, path, className, style, }: RoughSvgProps): react.JSX.Element;
60
+
61
+ interface SketchBoxProps extends SketchProps, Omit<HTMLAttributes<HTMLDivElement>, "color"> {
62
+ children?: ReactNode;
63
+ shape?: RoughShape;
64
+ fill?: string;
65
+ fillStyle?: FillStyle;
66
+ shadow?: boolean;
67
+ contentClassName?: string;
68
+ contentStyle?: CSSProperties;
69
+ inset?: number;
70
+ path?: string;
71
+ }
72
+ declare const SketchBox: react.ForwardRefExoticComponent<SketchBoxProps & react.RefAttributes<HTMLDivElement>>;
73
+
74
+ interface SketchSeedContextValue {
75
+ seed: number;
76
+ shuffle: () => void;
77
+ setSeed: (seed: number) => void;
78
+ }
79
+ interface SketchSeedProviderProps {
80
+ children: ReactNode;
81
+ initialSeed?: number;
82
+ }
83
+ declare function SketchSeedProvider({ children, initialSeed, }: SketchSeedProviderProps): react.JSX.Element;
84
+ declare function useSketchSeed(): SketchSeedContextValue;
85
+
86
+ /**
87
+ * Resolves the seed used to draw a sketch:
88
+ * 1. explicit `seed` prop (locked, ignores Shuffle)
89
+ * 2. SketchSeedProvider seed (redraws on Shuffle)
90
+ * 3. a stable random seed generated on mount
91
+ */
92
+ declare function useResolvedSeed(seed?: number): number;
93
+
94
+ type ButtonVariant = "primary" | "secondary" | "outline" | "ghost";
95
+ type ButtonSize = "sm" | "md" | "lg";
96
+ interface ButtonProps extends Omit<ButtonHTMLAttributes<HTMLButtonElement>, "color">, SketchProps {
97
+ variant?: ButtonVariant;
98
+ size?: ButtonSize;
99
+ }
100
+ declare const Button: react.ForwardRefExoticComponent<ButtonProps & react.RefAttributes<HTMLButtonElement>>;
101
+
102
+ interface InputProps extends Omit<InputHTMLAttributes<HTMLInputElement>, "color" | "size">, SketchProps {
103
+ label?: ReactNode;
104
+ }
105
+ declare const Input: react.ForwardRefExoticComponent<InputProps & react.RefAttributes<HTMLInputElement>>;
106
+
107
+ interface TextareaProps extends Omit<TextareaHTMLAttributes<HTMLTextAreaElement>, "color">, SketchProps {
108
+ label?: ReactNode;
109
+ }
110
+ declare const Textarea: react.ForwardRefExoticComponent<TextareaProps & react.RefAttributes<HTMLTextAreaElement>>;
111
+
112
+ interface CheckboxProps extends Omit<CheckboxPrimitive.CheckboxProps, "asChild">, SketchProps {
113
+ label?: ReactNode;
114
+ }
115
+ declare const Checkbox: react.ForwardRefExoticComponent<CheckboxProps & react.RefAttributes<HTMLButtonElement>>;
116
+
117
+ interface RadioGroupProps extends ComponentPropsWithoutRef<typeof RadioGroupPrimitive.Root> {
118
+ }
119
+ declare const RadioGroup: react.ForwardRefExoticComponent<RadioGroupProps & react.RefAttributes<HTMLDivElement>>;
120
+ interface RadioProps extends Omit<ComponentPropsWithoutRef<typeof RadioGroupPrimitive.Item>, "asChild">, SketchProps {
121
+ label?: ReactNode;
122
+ }
123
+ declare const Radio: react.ForwardRefExoticComponent<RadioProps & react.RefAttributes<HTMLButtonElement>>;
124
+
125
+ interface CardProps extends Omit<HTMLAttributes<HTMLDivElement>, "color" | "title">, SketchProps {
126
+ shadow?: boolean;
127
+ fill?: string;
128
+ title?: ReactNode;
129
+ footer?: ReactNode;
130
+ }
131
+ declare const Card: react.ForwardRefExoticComponent<CardProps & react.RefAttributes<HTMLDivElement>>;
132
+
133
+ type BadgeVariant = "default" | "accent" | "outline";
134
+ interface BadgeProps extends Omit<HTMLAttributes<HTMLSpanElement>, "color">, SketchProps {
135
+ variant?: BadgeVariant;
136
+ }
137
+ declare const Badge: react.ForwardRefExoticComponent<BadgeProps & react.RefAttributes<HTMLSpanElement>>;
138
+
139
+ type AlertVariant = "info" | "warning" | "error" | "success";
140
+ interface AlertProps extends Omit<HTMLAttributes<HTMLDivElement>, "color" | "title">, SketchProps {
141
+ variant?: AlertVariant;
142
+ title?: ReactNode;
143
+ }
144
+ declare const Alert: react.ForwardRefExoticComponent<AlertProps & react.RefAttributes<HTMLDivElement>>;
145
+
146
+ interface ModalProps extends SketchProps {
147
+ open?: boolean;
148
+ defaultOpen?: boolean;
149
+ onOpenChange?: (open: boolean) => void;
150
+ trigger?: ReactNode;
151
+ title?: ReactNode;
152
+ description?: ReactNode;
153
+ children?: ReactNode;
154
+ className?: string;
155
+ }
156
+ declare function Modal({ open, defaultOpen, onOpenChange, trigger, title, description, children, className, roughness, seed, sketchColor, bowing, fillStyle, strokeWidth, }: ModalProps): react.JSX.Element;
157
+ declare const ModalRoot: react.FC<Dialog.DialogProps>;
158
+ declare const ModalTrigger: react.ForwardRefExoticComponent<Dialog.DialogTriggerProps & react.RefAttributes<HTMLButtonElement>>;
159
+ declare const ModalClose: react.ForwardRefExoticComponent<Dialog.DialogCloseProps & react.RefAttributes<HTMLButtonElement>>;
160
+ declare const ModalTitle: react.ForwardRefExoticComponent<Dialog.DialogTitleProps & react.RefAttributes<HTMLHeadingElement>>;
161
+ declare const ModalDescription: react.ForwardRefExoticComponent<Dialog.DialogDescriptionProps & react.RefAttributes<HTMLParagraphElement>>;
162
+
163
+ type DividerOrientation = "horizontal" | "vertical";
164
+ interface DividerProps extends Omit<HTMLAttributes<HTMLDivElement>, "color">, SketchProps {
165
+ orientation?: DividerOrientation;
166
+ }
167
+ declare const Divider: react.ForwardRefExoticComponent<DividerProps & react.RefAttributes<HTMLDivElement>>;
168
+
169
+ interface ProgressProps extends Omit<HTMLAttributes<HTMLDivElement>, "color">, SketchProps {
170
+ value?: number;
171
+ max?: number;
172
+ }
173
+ declare const Progress: react.ForwardRefExoticComponent<ProgressProps & react.RefAttributes<HTMLDivElement>>;
174
+
175
+ declare const TooltipProvider: react.FC<TooltipPrimitive.TooltipProviderProps>;
176
+ interface TooltipProps extends SketchProps {
177
+ content: ReactNode;
178
+ children: ReactNode;
179
+ side?: ComponentPropsWithoutRef<typeof TooltipPrimitive.Content>["side"];
180
+ delayDuration?: number;
181
+ className?: string;
182
+ }
183
+ declare function Tooltip({ content, children, side, delayDuration, className, roughness, seed, sketchColor, bowing, fillStyle, strokeWidth, }: TooltipProps): react.JSX.Element;
184
+
185
+ export { Alert, type AlertProps, type AlertVariant, Badge, type BadgeProps, type BadgeVariant, Button, type ButtonProps, type ButtonSize, type ButtonVariant, Card, type CardProps, Checkbox, type CheckboxProps, DEFAULT_BOWING, DEFAULT_INK, DEFAULT_ROUGHNESS, DEFAULT_STROKE_WIDTH, Divider, type DividerOrientation, type DividerProps, type FillStyle, Input, type InputProps, Modal, ModalClose, ModalDescription, type ModalProps, ModalRoot, ModalTitle, ModalTrigger, Progress, type ProgressProps, Radio, RadioGroup, type RadioGroupProps, type RadioProps, type RoughShape, RoughSvg, type RoughSvgProps, SKETCH_COLORS, SketchBox, type SketchBoxProps, type SketchProps, type SketchSeedContextValue, SketchSeedProvider, type SketchSeedProviderProps, Textarea, type TextareaProps, Tooltip, type TooltipProps, TooltipProvider, toRoughOptions, useResolvedSeed, useSketchSeed };
@@ -0,0 +1,185 @@
1
+ import * as react from 'react';
2
+ import { CSSProperties, HTMLAttributes, ReactNode, ButtonHTMLAttributes, InputHTMLAttributes, TextareaHTMLAttributes, ComponentPropsWithoutRef } from 'react';
3
+ import { Options } from 'roughjs/bin/core';
4
+ import * as CheckboxPrimitive from '@radix-ui/react-checkbox';
5
+ import * as RadioGroupPrimitive from '@radix-ui/react-radio-group';
6
+ import * as Dialog from '@radix-ui/react-dialog';
7
+ import * as TooltipPrimitive from '@radix-ui/react-tooltip';
8
+
9
+ type FillStyle = "hachure" | "solid" | "zigzag" | "cross-hatch" | "dots" | "dashed" | "zigzag-line";
10
+ type RoughShape = "rectangle" | "ellipse" | "line" | "line-vertical" | "path";
11
+ interface SketchProps {
12
+ /** Sketchiness intensity. Default 1.5 */
13
+ roughness?: number;
14
+ /** Lock the wobble. Omit to follow SketchSeedProvider or randomize on mount */
15
+ seed?: number;
16
+ /** Stroke color override */
17
+ sketchColor?: string;
18
+ /** Line curvature. Default 1 */
19
+ bowing?: number;
20
+ fillStyle?: FillStyle;
21
+ strokeWidth?: number;
22
+ }
23
+ interface RoughSvgProps extends SketchProps {
24
+ shape?: RoughShape;
25
+ /** Explicit width. Falls back to the parent box via ResizeObserver */
26
+ width?: number;
27
+ height?: number;
28
+ fill?: string;
29
+ /** Inset the drawing from the box edge so strokes are not clipped */
30
+ inset?: number;
31
+ path?: string;
32
+ className?: string;
33
+ style?: CSSProperties;
34
+ }
35
+ declare function toRoughOptions(props: SketchProps & {
36
+ fill?: string;
37
+ stroke?: string;
38
+ }): Options;
39
+ declare const DEFAULT_ROUGHNESS = 1.5;
40
+ declare const DEFAULT_BOWING = 1;
41
+ declare const DEFAULT_STROKE_WIDTH = 1.75;
42
+ declare const DEFAULT_INK = "#1f1d1a";
43
+ declare const SKETCH_COLORS: {
44
+ readonly ink: "#1f1d1a";
45
+ readonly accent: "#e24b3b";
46
+ readonly accentFill: "#f4c4bc";
47
+ readonly secondaryFill: "#d7e3d4";
48
+ readonly paper: "#eef0ea";
49
+ readonly info: "#1d4e89";
50
+ readonly warning: "#c47b17";
51
+ readonly error: "#c0392b";
52
+ readonly success: "#2d6a4f";
53
+ };
54
+
55
+ /**
56
+ * Absolutely-positioned SVG layer that draws a rough.js shape behind HTML content.
57
+ * Parent must be `position: relative`.
58
+ */
59
+ declare function RoughSvg({ shape, width: widthProp, height: heightProp, roughness, seed: seedProp, sketchColor, bowing, fillStyle, strokeWidth, fill, inset, path, className, style, }: RoughSvgProps): react.JSX.Element;
60
+
61
+ interface SketchBoxProps extends SketchProps, Omit<HTMLAttributes<HTMLDivElement>, "color"> {
62
+ children?: ReactNode;
63
+ shape?: RoughShape;
64
+ fill?: string;
65
+ fillStyle?: FillStyle;
66
+ shadow?: boolean;
67
+ contentClassName?: string;
68
+ contentStyle?: CSSProperties;
69
+ inset?: number;
70
+ path?: string;
71
+ }
72
+ declare const SketchBox: react.ForwardRefExoticComponent<SketchBoxProps & react.RefAttributes<HTMLDivElement>>;
73
+
74
+ interface SketchSeedContextValue {
75
+ seed: number;
76
+ shuffle: () => void;
77
+ setSeed: (seed: number) => void;
78
+ }
79
+ interface SketchSeedProviderProps {
80
+ children: ReactNode;
81
+ initialSeed?: number;
82
+ }
83
+ declare function SketchSeedProvider({ children, initialSeed, }: SketchSeedProviderProps): react.JSX.Element;
84
+ declare function useSketchSeed(): SketchSeedContextValue;
85
+
86
+ /**
87
+ * Resolves the seed used to draw a sketch:
88
+ * 1. explicit `seed` prop (locked, ignores Shuffle)
89
+ * 2. SketchSeedProvider seed (redraws on Shuffle)
90
+ * 3. a stable random seed generated on mount
91
+ */
92
+ declare function useResolvedSeed(seed?: number): number;
93
+
94
+ type ButtonVariant = "primary" | "secondary" | "outline" | "ghost";
95
+ type ButtonSize = "sm" | "md" | "lg";
96
+ interface ButtonProps extends Omit<ButtonHTMLAttributes<HTMLButtonElement>, "color">, SketchProps {
97
+ variant?: ButtonVariant;
98
+ size?: ButtonSize;
99
+ }
100
+ declare const Button: react.ForwardRefExoticComponent<ButtonProps & react.RefAttributes<HTMLButtonElement>>;
101
+
102
+ interface InputProps extends Omit<InputHTMLAttributes<HTMLInputElement>, "color" | "size">, SketchProps {
103
+ label?: ReactNode;
104
+ }
105
+ declare const Input: react.ForwardRefExoticComponent<InputProps & react.RefAttributes<HTMLInputElement>>;
106
+
107
+ interface TextareaProps extends Omit<TextareaHTMLAttributes<HTMLTextAreaElement>, "color">, SketchProps {
108
+ label?: ReactNode;
109
+ }
110
+ declare const Textarea: react.ForwardRefExoticComponent<TextareaProps & react.RefAttributes<HTMLTextAreaElement>>;
111
+
112
+ interface CheckboxProps extends Omit<CheckboxPrimitive.CheckboxProps, "asChild">, SketchProps {
113
+ label?: ReactNode;
114
+ }
115
+ declare const Checkbox: react.ForwardRefExoticComponent<CheckboxProps & react.RefAttributes<HTMLButtonElement>>;
116
+
117
+ interface RadioGroupProps extends ComponentPropsWithoutRef<typeof RadioGroupPrimitive.Root> {
118
+ }
119
+ declare const RadioGroup: react.ForwardRefExoticComponent<RadioGroupProps & react.RefAttributes<HTMLDivElement>>;
120
+ interface RadioProps extends Omit<ComponentPropsWithoutRef<typeof RadioGroupPrimitive.Item>, "asChild">, SketchProps {
121
+ label?: ReactNode;
122
+ }
123
+ declare const Radio: react.ForwardRefExoticComponent<RadioProps & react.RefAttributes<HTMLButtonElement>>;
124
+
125
+ interface CardProps extends Omit<HTMLAttributes<HTMLDivElement>, "color" | "title">, SketchProps {
126
+ shadow?: boolean;
127
+ fill?: string;
128
+ title?: ReactNode;
129
+ footer?: ReactNode;
130
+ }
131
+ declare const Card: react.ForwardRefExoticComponent<CardProps & react.RefAttributes<HTMLDivElement>>;
132
+
133
+ type BadgeVariant = "default" | "accent" | "outline";
134
+ interface BadgeProps extends Omit<HTMLAttributes<HTMLSpanElement>, "color">, SketchProps {
135
+ variant?: BadgeVariant;
136
+ }
137
+ declare const Badge: react.ForwardRefExoticComponent<BadgeProps & react.RefAttributes<HTMLSpanElement>>;
138
+
139
+ type AlertVariant = "info" | "warning" | "error" | "success";
140
+ interface AlertProps extends Omit<HTMLAttributes<HTMLDivElement>, "color" | "title">, SketchProps {
141
+ variant?: AlertVariant;
142
+ title?: ReactNode;
143
+ }
144
+ declare const Alert: react.ForwardRefExoticComponent<AlertProps & react.RefAttributes<HTMLDivElement>>;
145
+
146
+ interface ModalProps extends SketchProps {
147
+ open?: boolean;
148
+ defaultOpen?: boolean;
149
+ onOpenChange?: (open: boolean) => void;
150
+ trigger?: ReactNode;
151
+ title?: ReactNode;
152
+ description?: ReactNode;
153
+ children?: ReactNode;
154
+ className?: string;
155
+ }
156
+ declare function Modal({ open, defaultOpen, onOpenChange, trigger, title, description, children, className, roughness, seed, sketchColor, bowing, fillStyle, strokeWidth, }: ModalProps): react.JSX.Element;
157
+ declare const ModalRoot: react.FC<Dialog.DialogProps>;
158
+ declare const ModalTrigger: react.ForwardRefExoticComponent<Dialog.DialogTriggerProps & react.RefAttributes<HTMLButtonElement>>;
159
+ declare const ModalClose: react.ForwardRefExoticComponent<Dialog.DialogCloseProps & react.RefAttributes<HTMLButtonElement>>;
160
+ declare const ModalTitle: react.ForwardRefExoticComponent<Dialog.DialogTitleProps & react.RefAttributes<HTMLHeadingElement>>;
161
+ declare const ModalDescription: react.ForwardRefExoticComponent<Dialog.DialogDescriptionProps & react.RefAttributes<HTMLParagraphElement>>;
162
+
163
+ type DividerOrientation = "horizontal" | "vertical";
164
+ interface DividerProps extends Omit<HTMLAttributes<HTMLDivElement>, "color">, SketchProps {
165
+ orientation?: DividerOrientation;
166
+ }
167
+ declare const Divider: react.ForwardRefExoticComponent<DividerProps & react.RefAttributes<HTMLDivElement>>;
168
+
169
+ interface ProgressProps extends Omit<HTMLAttributes<HTMLDivElement>, "color">, SketchProps {
170
+ value?: number;
171
+ max?: number;
172
+ }
173
+ declare const Progress: react.ForwardRefExoticComponent<ProgressProps & react.RefAttributes<HTMLDivElement>>;
174
+
175
+ declare const TooltipProvider: react.FC<TooltipPrimitive.TooltipProviderProps>;
176
+ interface TooltipProps extends SketchProps {
177
+ content: ReactNode;
178
+ children: ReactNode;
179
+ side?: ComponentPropsWithoutRef<typeof TooltipPrimitive.Content>["side"];
180
+ delayDuration?: number;
181
+ className?: string;
182
+ }
183
+ declare function Tooltip({ content, children, side, delayDuration, className, roughness, seed, sketchColor, bowing, fillStyle, strokeWidth, }: TooltipProps): react.JSX.Element;
184
+
185
+ export { Alert, type AlertProps, type AlertVariant, Badge, type BadgeProps, type BadgeVariant, Button, type ButtonProps, type ButtonSize, type ButtonVariant, Card, type CardProps, Checkbox, type CheckboxProps, DEFAULT_BOWING, DEFAULT_INK, DEFAULT_ROUGHNESS, DEFAULT_STROKE_WIDTH, Divider, type DividerOrientation, type DividerProps, type FillStyle, Input, type InputProps, Modal, ModalClose, ModalDescription, type ModalProps, ModalRoot, ModalTitle, ModalTrigger, Progress, type ProgressProps, Radio, RadioGroup, type RadioGroupProps, type RadioProps, type RoughShape, RoughSvg, type RoughSvgProps, SKETCH_COLORS, SketchBox, type SketchBoxProps, type SketchProps, type SketchSeedContextValue, SketchSeedProvider, type SketchSeedProviderProps, Textarea, type TextareaProps, Tooltip, type TooltipProps, TooltipProvider, toRoughOptions, useResolvedSeed, useSketchSeed };