doodleui-react 0.1.0 → 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -61,7 +61,9 @@ Button, Input, Textarea, Checkbox, Radio, Card, Badge, Alert, Modal, Divider, Pr
61
61
 
62
62
  ## Docs
63
63
 
64
- See the documentation site in `apps/docs` of this monorepo.
64
+ Live site: [doodle-ui.netlify.app](https://doodle-ui.netlify.app)
65
+
66
+ The source for that site is `apps/docs` in the [doodle-ui](https://github.com/KanchanaSW/doodle-ui) monorepo.
65
67
 
66
68
  ## License
67
69
 
package/dist/index.cjs CHANGED
@@ -72,6 +72,18 @@ var SKETCH_COLORS = {
72
72
  function randomSeed() {
73
73
  return Math.floor(Math.random() * 2 ** 31);
74
74
  }
75
+ var doodleUiFontFamily = "var(--doodle-ui-font, inherit)";
76
+ function doodleUiFontWeight(fallback) {
77
+ return `var(--doodle-ui-font-weight, ${fallback})`;
78
+ }
79
+ function nextFontIndex(current, count) {
80
+ if (count <= 1) return 0;
81
+ let next = current;
82
+ while (next === current) {
83
+ next = Math.floor(Math.random() * count);
84
+ }
85
+ return next;
86
+ }
75
87
  function cn(...parts) {
76
88
  const value = parts.filter(Boolean).join(" ");
77
89
  return value.length > 0 ? value : void 0;
@@ -79,15 +91,35 @@ function cn(...parts) {
79
91
  var SketchSeedContext = react.createContext(null);
80
92
  function SketchSeedProvider({
81
93
  children,
82
- initialSeed
94
+ initialSeed,
95
+ fonts,
96
+ initialFontIndex = 0
83
97
  }) {
84
98
  const [seed, setSeed] = react.useState(() => initialSeed ?? randomSeed());
99
+ const [fontIndex, setFontIndex] = react.useState(initialFontIndex);
100
+ const fontCount = fonts?.length ?? 0;
85
101
  const shuffle = react.useCallback(() => {
86
102
  setSeed(randomSeed());
87
- }, []);
103
+ setFontIndex((current) => nextFontIndex(current, fontCount));
104
+ }, [fontCount]);
105
+ const activeFamily = fontIndex > 0 ? fonts?.[fontIndex] : void 0;
106
+ react.useLayoutEffect(() => {
107
+ const root = document.documentElement;
108
+ if (activeFamily) {
109
+ root.style.setProperty("--doodle-ui-font", activeFamily);
110
+ root.style.setProperty("--doodle-ui-font-weight", "400");
111
+ } else {
112
+ root.style.setProperty("--doodle-ui-font", "initial");
113
+ root.style.setProperty("--doodle-ui-font-weight", "initial");
114
+ }
115
+ return () => {
116
+ root.style.removeProperty("--doodle-ui-font");
117
+ root.style.removeProperty("--doodle-ui-font-weight");
118
+ };
119
+ }, [activeFamily]);
88
120
  const value = react.useMemo(
89
- () => ({ seed, shuffle, setSeed }),
90
- [seed, shuffle]
121
+ () => ({ seed, fontIndex, shuffle, setSeed }),
122
+ [seed, fontIndex, shuffle]
91
123
  );
92
124
  return /* @__PURE__ */ jsxRuntime.jsx(SketchSeedContext.Provider, { value, children });
93
125
  }
@@ -292,7 +324,12 @@ var SketchBox = react.forwardRef(
292
324
  "div",
293
325
  {
294
326
  className: contentClassName,
295
- style: { position: "relative", zIndex: 1, ...contentStyle },
327
+ style: {
328
+ position: "relative",
329
+ zIndex: 1,
330
+ fontFamily: doodleUiFontFamily,
331
+ ...contentStyle
332
+ },
296
333
  children
297
334
  }
298
335
  )
@@ -353,8 +390,8 @@ var Button = react.forwardRef(
353
390
  background: "transparent",
354
391
  cursor: disabled ? "not-allowed" : "pointer",
355
392
  color: ink,
356
- fontFamily: "inherit",
357
- fontWeight: 600,
393
+ fontFamily: doodleUiFontFamily,
394
+ fontWeight: doodleUiFontWeight(600),
358
395
  lineHeight: 1.2,
359
396
  opacity: disabled ? 0.45 : 1,
360
397
  ...SIZE_STYLES[size],
@@ -410,7 +447,18 @@ var Input = react.forwardRef(function Input2({
410
447
  width: "100%"
411
448
  },
412
449
  children: [
413
- label ? /* @__PURE__ */ jsxRuntime.jsx("span", { style: { fontSize: 13, fontWeight: 600, color: ink }, children: label }) : null,
450
+ label ? /* @__PURE__ */ jsxRuntime.jsx(
451
+ "span",
452
+ {
453
+ style: {
454
+ fontSize: 13,
455
+ fontWeight: doodleUiFontWeight(600),
456
+ fontFamily: doodleUiFontFamily,
457
+ color: ink
458
+ },
459
+ children: label
460
+ }
461
+ ) : null,
414
462
  /* @__PURE__ */ jsxRuntime.jsxs("span", { style: { position: "relative", display: "block" }, children: [
415
463
  /* @__PURE__ */ jsxRuntime.jsx(
416
464
  RoughSvg,
@@ -447,7 +495,7 @@ var Input = react.forwardRef(function Input2({
447
495
  outline: "none",
448
496
  background: "transparent",
449
497
  color: ink,
450
- fontFamily: "inherit",
498
+ fontFamily: doodleUiFontFamily,
451
499
  fontSize: 15,
452
500
  padding: "8px 12px",
453
501
  ...style
@@ -490,7 +538,18 @@ var Textarea = react.forwardRef(
490
538
  width: "100%"
491
539
  },
492
540
  children: [
493
- label ? /* @__PURE__ */ jsxRuntime.jsx("span", { style: { fontSize: 13, fontWeight: 600, color: ink }, children: label }) : null,
541
+ label ? /* @__PURE__ */ jsxRuntime.jsx(
542
+ "span",
543
+ {
544
+ style: {
545
+ fontSize: 13,
546
+ fontWeight: doodleUiFontWeight(600),
547
+ fontFamily: doodleUiFontFamily,
548
+ color: ink
549
+ },
550
+ children: label
551
+ }
552
+ ) : null,
494
553
  /* @__PURE__ */ jsxRuntime.jsxs("span", { style: { position: "relative", display: "block" }, children: [
495
554
  /* @__PURE__ */ jsxRuntime.jsx(
496
555
  RoughSvg,
@@ -528,7 +587,7 @@ var Textarea = react.forwardRef(
528
587
  outline: "none",
529
588
  background: "transparent",
530
589
  color: ink,
531
- fontFamily: "inherit",
590
+ fontFamily: doodleUiFontFamily,
532
591
  fontSize: 15,
533
592
  lineHeight: 1.5,
534
593
  padding: "10px 12px",
@@ -638,7 +697,14 @@ var Checkbox = react.forwardRef(
638
697
  ]
639
698
  }
640
699
  ),
641
- label ? /* @__PURE__ */ jsxRuntime.jsx("label", { htmlFor: inputId, style: { fontSize: 15, cursor: "pointer" }, children: label }) : null
700
+ label ? /* @__PURE__ */ jsxRuntime.jsx(
701
+ "label",
702
+ {
703
+ htmlFor: inputId,
704
+ style: { fontSize: 15, cursor: "pointer", fontFamily: doodleUiFontFamily },
705
+ children: label
706
+ }
707
+ ) : null
642
708
  ]
643
709
  }
644
710
  );
@@ -751,7 +817,14 @@ var Radio = react.forwardRef(function Radio2({
751
817
  ]
752
818
  }
753
819
  ),
754
- label ? /* @__PURE__ */ jsxRuntime.jsx("label", { htmlFor: inputId, style: { fontSize: 15, cursor: "pointer" }, children: label }) : null
820
+ label ? /* @__PURE__ */ jsxRuntime.jsx(
821
+ "label",
822
+ {
823
+ htmlFor: inputId,
824
+ style: { fontSize: 15, cursor: "pointer", fontFamily: doodleUiFontFamily },
825
+ children: label
826
+ }
827
+ ) : null
755
828
  ]
756
829
  }
757
830
  );
@@ -796,7 +869,7 @@ var Card = react.forwardRef(function Card2({
796
869
  "div",
797
870
  {
798
871
  style: {
799
- fontWeight: 700,
872
+ fontWeight: doodleUiFontWeight(700),
800
873
  fontSize: 16,
801
874
  marginBottom: 10
802
875
  },
@@ -836,7 +909,7 @@ var Badge = react.forwardRef(function Badge2({
836
909
  contentStyle: {
837
910
  padding: "2px 10px",
838
911
  fontSize: 12,
839
- fontWeight: 650,
912
+ fontWeight: doodleUiFontWeight(650),
840
913
  lineHeight: 1.4,
841
914
  letterSpacing: "0.01em"
842
915
  },
@@ -897,7 +970,17 @@ var Alert = react.forwardRef(function Alert2({
897
970
  strokeWidth,
898
971
  ...rest,
899
972
  children: [
900
- title ? /* @__PURE__ */ jsxRuntime.jsx("div", { style: { fontWeight: 700, marginBottom: 4, fontSize: 15 }, children: title }) : null,
973
+ title ? /* @__PURE__ */ jsxRuntime.jsx(
974
+ "div",
975
+ {
976
+ style: {
977
+ fontWeight: doodleUiFontWeight(700),
978
+ marginBottom: 4,
979
+ fontSize: 15
980
+ },
981
+ children: title
982
+ }
983
+ ) : null,
901
984
  /* @__PURE__ */ jsxRuntime.jsx("div", { style: { fontSize: 14, lineHeight: 1.5, color: SKETCH_COLORS.ink }, children })
902
985
  ]
903
986
  }
@@ -977,7 +1060,8 @@ function Modal({
977
1060
  style: {
978
1061
  margin: 0,
979
1062
  fontSize: 18,
980
- fontWeight: 700,
1063
+ fontWeight: doodleUiFontWeight(700),
1064
+ fontFamily: doodleUiFontFamily,
981
1065
  color: ink
982
1066
  },
983
1067
  children: title
@@ -1186,6 +1270,7 @@ function Tooltip({
1186
1270
  padding: "6px 10px",
1187
1271
  fontSize: 13,
1188
1272
  lineHeight: 1.35,
1273
+ fontFamily: doodleUiFontFamily,
1189
1274
  color: ink,
1190
1275
  maxWidth: 240
1191
1276
  },
@@ -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","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"]}
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"]}
package/dist/index.d.cts CHANGED
@@ -73,14 +73,22 @@ declare const SketchBox: react.ForwardRefExoticComponent<SketchBoxProps & react.
73
73
 
74
74
  interface SketchSeedContextValue {
75
75
  seed: number;
76
+ fontIndex: number;
76
77
  shuffle: () => void;
77
78
  setSeed: (seed: number) => void;
78
79
  }
79
80
  interface SketchSeedProviderProps {
80
81
  children: ReactNode;
81
82
  initialSeed?: number;
82
- }
83
- declare function SketchSeedProvider({ children, initialSeed, }: SketchSeedProviderProps): react.JSX.Element;
83
+ /**
84
+ * CSS font-family values for Shuffle. Index 0 is the page default
85
+ * (`--doodle-ui-font` is left unset). Later indexes set the variable.
86
+ */
87
+ fonts?: readonly string[];
88
+ /** Starting palette index. Defaults to 0 (unset / page default). */
89
+ initialFontIndex?: number;
90
+ }
91
+ declare function SketchSeedProvider({ children, initialSeed, fonts, initialFontIndex, }: SketchSeedProviderProps): react.JSX.Element;
84
92
  declare function useSketchSeed(): SketchSeedContextValue;
85
93
 
86
94
  /**
package/dist/index.d.ts CHANGED
@@ -73,14 +73,22 @@ declare const SketchBox: react.ForwardRefExoticComponent<SketchBoxProps & react.
73
73
 
74
74
  interface SketchSeedContextValue {
75
75
  seed: number;
76
+ fontIndex: number;
76
77
  shuffle: () => void;
77
78
  setSeed: (seed: number) => void;
78
79
  }
79
80
  interface SketchSeedProviderProps {
80
81
  children: ReactNode;
81
82
  initialSeed?: number;
82
- }
83
- declare function SketchSeedProvider({ children, initialSeed, }: SketchSeedProviderProps): react.JSX.Element;
83
+ /**
84
+ * CSS font-family values for Shuffle. Index 0 is the page default
85
+ * (`--doodle-ui-font` is left unset). Later indexes set the variable.
86
+ */
87
+ fonts?: readonly string[];
88
+ /** Starting palette index. Defaults to 0 (unset / page default). */
89
+ initialFontIndex?: number;
90
+ }
91
+ declare function SketchSeedProvider({ children, initialSeed, fonts, initialFontIndex, }: SketchSeedProviderProps): react.JSX.Element;
84
92
  declare function useSketchSeed(): SketchSeedContextValue;
85
93
 
86
94
  /**
package/dist/index.js CHANGED
@@ -44,6 +44,18 @@ var SKETCH_COLORS = {
44
44
  function randomSeed() {
45
45
  return Math.floor(Math.random() * 2 ** 31);
46
46
  }
47
+ var doodleUiFontFamily = "var(--doodle-ui-font, inherit)";
48
+ function doodleUiFontWeight(fallback) {
49
+ return `var(--doodle-ui-font-weight, ${fallback})`;
50
+ }
51
+ function nextFontIndex(current, count) {
52
+ if (count <= 1) return 0;
53
+ let next = current;
54
+ while (next === current) {
55
+ next = Math.floor(Math.random() * count);
56
+ }
57
+ return next;
58
+ }
47
59
  function cn(...parts) {
48
60
  const value = parts.filter(Boolean).join(" ");
49
61
  return value.length > 0 ? value : void 0;
@@ -51,15 +63,35 @@ function cn(...parts) {
51
63
  var SketchSeedContext = createContext(null);
52
64
  function SketchSeedProvider({
53
65
  children,
54
- initialSeed
66
+ initialSeed,
67
+ fonts,
68
+ initialFontIndex = 0
55
69
  }) {
56
70
  const [seed, setSeed] = useState(() => initialSeed ?? randomSeed());
71
+ const [fontIndex, setFontIndex] = useState(initialFontIndex);
72
+ const fontCount = fonts?.length ?? 0;
57
73
  const shuffle = useCallback(() => {
58
74
  setSeed(randomSeed());
59
- }, []);
75
+ setFontIndex((current) => nextFontIndex(current, fontCount));
76
+ }, [fontCount]);
77
+ const activeFamily = fontIndex > 0 ? fonts?.[fontIndex] : void 0;
78
+ useLayoutEffect(() => {
79
+ const root = document.documentElement;
80
+ if (activeFamily) {
81
+ root.style.setProperty("--doodle-ui-font", activeFamily);
82
+ root.style.setProperty("--doodle-ui-font-weight", "400");
83
+ } else {
84
+ root.style.setProperty("--doodle-ui-font", "initial");
85
+ root.style.setProperty("--doodle-ui-font-weight", "initial");
86
+ }
87
+ return () => {
88
+ root.style.removeProperty("--doodle-ui-font");
89
+ root.style.removeProperty("--doodle-ui-font-weight");
90
+ };
91
+ }, [activeFamily]);
60
92
  const value = useMemo(
61
- () => ({ seed, shuffle, setSeed }),
62
- [seed, shuffle]
93
+ () => ({ seed, fontIndex, shuffle, setSeed }),
94
+ [seed, fontIndex, shuffle]
63
95
  );
64
96
  return /* @__PURE__ */ jsx(SketchSeedContext.Provider, { value, children });
65
97
  }
@@ -264,7 +296,12 @@ var SketchBox = forwardRef(
264
296
  "div",
265
297
  {
266
298
  className: contentClassName,
267
- style: { position: "relative", zIndex: 1, ...contentStyle },
299
+ style: {
300
+ position: "relative",
301
+ zIndex: 1,
302
+ fontFamily: doodleUiFontFamily,
303
+ ...contentStyle
304
+ },
268
305
  children
269
306
  }
270
307
  )
@@ -325,8 +362,8 @@ var Button = forwardRef(
325
362
  background: "transparent",
326
363
  cursor: disabled ? "not-allowed" : "pointer",
327
364
  color: ink,
328
- fontFamily: "inherit",
329
- fontWeight: 600,
365
+ fontFamily: doodleUiFontFamily,
366
+ fontWeight: doodleUiFontWeight(600),
330
367
  lineHeight: 1.2,
331
368
  opacity: disabled ? 0.45 : 1,
332
369
  ...SIZE_STYLES[size],
@@ -382,7 +419,18 @@ var Input = forwardRef(function Input2({
382
419
  width: "100%"
383
420
  },
384
421
  children: [
385
- label ? /* @__PURE__ */ jsx("span", { style: { fontSize: 13, fontWeight: 600, color: ink }, children: label }) : null,
422
+ label ? /* @__PURE__ */ jsx(
423
+ "span",
424
+ {
425
+ style: {
426
+ fontSize: 13,
427
+ fontWeight: doodleUiFontWeight(600),
428
+ fontFamily: doodleUiFontFamily,
429
+ color: ink
430
+ },
431
+ children: label
432
+ }
433
+ ) : null,
386
434
  /* @__PURE__ */ jsxs("span", { style: { position: "relative", display: "block" }, children: [
387
435
  /* @__PURE__ */ jsx(
388
436
  RoughSvg,
@@ -419,7 +467,7 @@ var Input = forwardRef(function Input2({
419
467
  outline: "none",
420
468
  background: "transparent",
421
469
  color: ink,
422
- fontFamily: "inherit",
470
+ fontFamily: doodleUiFontFamily,
423
471
  fontSize: 15,
424
472
  padding: "8px 12px",
425
473
  ...style
@@ -462,7 +510,18 @@ var Textarea = forwardRef(
462
510
  width: "100%"
463
511
  },
464
512
  children: [
465
- label ? /* @__PURE__ */ jsx("span", { style: { fontSize: 13, fontWeight: 600, color: ink }, children: label }) : null,
513
+ label ? /* @__PURE__ */ jsx(
514
+ "span",
515
+ {
516
+ style: {
517
+ fontSize: 13,
518
+ fontWeight: doodleUiFontWeight(600),
519
+ fontFamily: doodleUiFontFamily,
520
+ color: ink
521
+ },
522
+ children: label
523
+ }
524
+ ) : null,
466
525
  /* @__PURE__ */ jsxs("span", { style: { position: "relative", display: "block" }, children: [
467
526
  /* @__PURE__ */ jsx(
468
527
  RoughSvg,
@@ -500,7 +559,7 @@ var Textarea = forwardRef(
500
559
  outline: "none",
501
560
  background: "transparent",
502
561
  color: ink,
503
- fontFamily: "inherit",
562
+ fontFamily: doodleUiFontFamily,
504
563
  fontSize: 15,
505
564
  lineHeight: 1.5,
506
565
  padding: "10px 12px",
@@ -610,7 +669,14 @@ var Checkbox = forwardRef(
610
669
  ]
611
670
  }
612
671
  ),
613
- label ? /* @__PURE__ */ jsx("label", { htmlFor: inputId, style: { fontSize: 15, cursor: "pointer" }, children: label }) : null
672
+ label ? /* @__PURE__ */ jsx(
673
+ "label",
674
+ {
675
+ htmlFor: inputId,
676
+ style: { fontSize: 15, cursor: "pointer", fontFamily: doodleUiFontFamily },
677
+ children: label
678
+ }
679
+ ) : null
614
680
  ]
615
681
  }
616
682
  );
@@ -723,7 +789,14 @@ var Radio = forwardRef(function Radio2({
723
789
  ]
724
790
  }
725
791
  ),
726
- label ? /* @__PURE__ */ jsx("label", { htmlFor: inputId, style: { fontSize: 15, cursor: "pointer" }, children: label }) : null
792
+ label ? /* @__PURE__ */ jsx(
793
+ "label",
794
+ {
795
+ htmlFor: inputId,
796
+ style: { fontSize: 15, cursor: "pointer", fontFamily: doodleUiFontFamily },
797
+ children: label
798
+ }
799
+ ) : null
727
800
  ]
728
801
  }
729
802
  );
@@ -768,7 +841,7 @@ var Card = forwardRef(function Card2({
768
841
  "div",
769
842
  {
770
843
  style: {
771
- fontWeight: 700,
844
+ fontWeight: doodleUiFontWeight(700),
772
845
  fontSize: 16,
773
846
  marginBottom: 10
774
847
  },
@@ -808,7 +881,7 @@ var Badge = forwardRef(function Badge2({
808
881
  contentStyle: {
809
882
  padding: "2px 10px",
810
883
  fontSize: 12,
811
- fontWeight: 650,
884
+ fontWeight: doodleUiFontWeight(650),
812
885
  lineHeight: 1.4,
813
886
  letterSpacing: "0.01em"
814
887
  },
@@ -869,7 +942,17 @@ var Alert = forwardRef(function Alert2({
869
942
  strokeWidth,
870
943
  ...rest,
871
944
  children: [
872
- title ? /* @__PURE__ */ jsx("div", { style: { fontWeight: 700, marginBottom: 4, fontSize: 15 }, children: title }) : null,
945
+ title ? /* @__PURE__ */ jsx(
946
+ "div",
947
+ {
948
+ style: {
949
+ fontWeight: doodleUiFontWeight(700),
950
+ marginBottom: 4,
951
+ fontSize: 15
952
+ },
953
+ children: title
954
+ }
955
+ ) : null,
873
956
  /* @__PURE__ */ jsx("div", { style: { fontSize: 14, lineHeight: 1.5, color: SKETCH_COLORS.ink }, children })
874
957
  ]
875
958
  }
@@ -949,7 +1032,8 @@ function Modal({
949
1032
  style: {
950
1033
  margin: 0,
951
1034
  fontSize: 18,
952
- fontWeight: 700,
1035
+ fontWeight: doodleUiFontWeight(700),
1036
+ fontFamily: doodleUiFontFamily,
953
1037
  color: ink
954
1038
  },
955
1039
  children: title
@@ -1158,6 +1242,7 @@ function Tooltip({
1158
1242
  padding: "6px 10px",
1159
1243
  fontSize: 13,
1160
1244
  lineHeight: 1.35,
1245
+ fontFamily: doodleUiFontFamily,
1161
1246
  color: ink,
1162
1247
  maxWidth: 240
1163
1248
  },
package/dist/index.js.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":["useState","useLayoutEffect","jsx","SketchBox","forwardRef","Button","jsxs","Input","Textarea","Checkbox","RadioGroup","Radio","useId","Card","Badge","Alert","Divider","Progress"],"mappings":"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","file":"index.js","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"]}
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":["useState","useLayoutEffect","jsx","SketchBox","forwardRef","Button","jsxs","Input","Textarea","Checkbox","RadioGroup","Radio","useId","Card","Badge","Alert","Divider","Progress"],"mappings":"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","file":"index.js","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"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "doodleui-react",
3
- "version": "0.1.0",
3
+ "version": "0.1.1",
4
4
  "description": "Hand-drawn React component library with an Excalidraw-like sketch aesthetic",
5
5
  "license": "MIT",
6
6
  "author": "KanchanaSW",