doodleui-react 0.2.0 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.ts CHANGED
@@ -1,9 +1,9 @@
1
1
  import * as react from 'react';
2
- import { CSSProperties, HTMLAttributes, ReactNode, ButtonHTMLAttributes, InputHTMLAttributes, TextareaHTMLAttributes, ComponentPropsWithoutRef, TableHTMLAttributes, TdHTMLAttributes, ThHTMLAttributes } from 'react';
2
+ import { CSSProperties, HTMLAttributes, ReactNode, RefObject, ButtonHTMLAttributes, InputHTMLAttributes, TextareaHTMLAttributes, ComponentPropsWithoutRef, TableHTMLAttributes, TdHTMLAttributes, ThHTMLAttributes } from 'react';
3
3
  import { Options } from 'roughjs/bin/core';
4
4
  import * as CheckboxPrimitive from '@radix-ui/react-checkbox';
5
5
  import * as RadioGroupPrimitive from '@radix-ui/react-radio-group';
6
- import * as Dialog from '@radix-ui/react-dialog';
6
+ import * as DialogPrimitive from '@radix-ui/react-dialog';
7
7
  import * as TooltipPrimitive from '@radix-ui/react-tooltip';
8
8
  import * as SelectPrimitive from '@radix-ui/react-select';
9
9
  import * as SwitchPrimitive from '@radix-ui/react-switch';
@@ -12,6 +12,12 @@ import * as ToastPrimitive from '@radix-ui/react-toast';
12
12
  import * as AccordionPrimitive from '@radix-ui/react-accordion';
13
13
  import * as AvatarPrimitive from '@radix-ui/react-avatar';
14
14
  import * as SliderPrimitive from '@radix-ui/react-slider';
15
+ import * as LabelPrimitive from '@radix-ui/react-label';
16
+ import * as CollapsiblePrimitive from '@radix-ui/react-collapsible';
17
+ import * as PopoverPrimitive from '@radix-ui/react-popover';
18
+ import * as DropdownMenuPrimitive from '@radix-ui/react-dropdown-menu';
19
+ import * as AlertDialogPrimitive from '@radix-ui/react-alert-dialog';
20
+ import { Command as Command$1, CommandEmpty as CommandEmpty$1, CommandGroup as CommandGroup$1, CommandInput as CommandInput$1, CommandItem as CommandItem$1, CommandList as CommandList$1, CommandSeparator as CommandSeparator$1 } from 'cmdk';
15
21
 
16
22
  type FillStyle = "hachure" | "solid" | "zigzag" | "cross-hatch" | "dots" | "dashed" | "zigzag-line";
17
23
  type RoughShape = "rectangle" | "ellipse" | "line" | "line-vertical" | "path";
@@ -75,6 +81,14 @@ interface SketchBoxProps extends SketchProps, Omit<HTMLAttributes<HTMLDivElement
75
81
  contentStyle?: CSSProperties;
76
82
  inset?: number;
77
83
  path?: string;
84
+ /**
85
+ * Sketch-in the border on mount. Defaults to the DoodleUIProvider value.
86
+ */
87
+ animate?: boolean;
88
+ /** Override the default 400ms draw-in duration. */
89
+ drawInDuration?: number;
90
+ /** Replay draw-in when this value changes. */
91
+ drawInKey?: unknown;
78
92
  }
79
93
  declare const SketchBox: react.ForwardRefExoticComponent<SketchBoxProps & react.RefAttributes<HTMLDivElement>>;
80
94
 
@@ -106,26 +120,96 @@ declare function useSketchSeed(): SketchSeedContextValue;
106
120
  */
107
121
  declare function useResolvedSeed(seed?: number): number;
108
122
 
123
+ interface DoodleUIContextValue {
124
+ /** Default for components that do not set their own `animate` prop. */
125
+ animate: boolean;
126
+ /** When true, skip the prefers-reduced-motion disable. */
127
+ forceAnimate: boolean;
128
+ }
129
+ interface DoodleUIProviderProps {
130
+ children: ReactNode;
131
+ /**
132
+ * Default animation setting for descendant doodle-ui components.
133
+ * Per-component `animate` still wins when it is set.
134
+ */
135
+ animate?: boolean;
136
+ /**
137
+ * Play animations even when the user prefers reduced motion.
138
+ * Off by default — only set this as an explicit escape hatch.
139
+ */
140
+ forceAnimate?: boolean;
141
+ }
142
+ declare function DoodleUIProvider({ children, animate, forceAnimate, }: DoodleUIProviderProps): react.JSX.Element;
143
+ declare function useDoodleUI(): DoodleUIContextValue;
144
+
145
+ /**
146
+ * Whether the calling component should play sketch animations.
147
+ * Per-component `animate` overrides the provider. Reduced motion
148
+ * disables animation unless the provider set `forceAnimate`.
149
+ */
150
+ declare function useAnimate(animate?: boolean): boolean;
151
+
152
+ /** Default sketch-in duration. Ease-out over ~400ms. */
153
+ declare const DRAW_IN_DURATION_MS = 400;
154
+ /** Alerts often appear dynamically — keep the sketch-in snappy. */
155
+ declare const DRAW_IN_ALERT_MS = 200;
156
+ /** Tooltips are transient — draw in quickly. */
157
+ declare const DRAW_IN_TOOLTIP_MS = 180;
158
+ /** Checkmarks, radio dots, and tab underlines. */
159
+ declare const DRAW_IN_MARK_MS = 240;
160
+ /** Delay between table row rules. */
161
+ declare const TABLE_STAGGER_MS = 40;
162
+ /**
163
+ * Sketch-in the rough.js stroke path on the first paint, and again when
164
+ * `replayKey` changes (e.g. a hover seed swap).
165
+ *
166
+ * `pathRef` may point at an SVG path, an `<svg>`, or any element that
167
+ * contains one — the hook finds the outline path either way.
168
+ */
169
+ declare function useDrawIn(pathRef: RefObject<Element | null>, duration?: number, enabled?: boolean, replayKey?: unknown, delay?: number): void;
170
+
109
171
  type ButtonVariant = "primary" | "secondary" | "outline" | "ghost";
110
172
  type ButtonSize = "sm" | "md" | "lg";
111
173
  interface ButtonProps extends Omit<ButtonHTMLAttributes<HTMLButtonElement>, "color">, SketchProps {
112
174
  variant?: ButtonVariant;
113
175
  size?: ButtonSize;
176
+ /**
177
+ * Play sketch animations (draw-in on mount, seed morph on hover).
178
+ * Defaults to the DoodleUIProvider value (true). Explicit `false`
179
+ * renders a static sketch. `prefers-reduced-motion: reduce` disables
180
+ * animation unless the provider set `forceAnimate`.
181
+ */
182
+ animate?: boolean;
114
183
  }
115
184
  declare const Button: react.ForwardRefExoticComponent<ButtonProps & react.RefAttributes<HTMLButtonElement>>;
116
185
 
117
186
  interface InputProps extends Omit<InputHTMLAttributes<HTMLInputElement>, "color" | "size">, SketchProps {
118
187
  label?: ReactNode;
188
+ /**
189
+ * Draw-in the border on mount and seed-morph on focus.
190
+ * Defaults to the DoodleUIProvider value (true).
191
+ */
192
+ animate?: boolean;
119
193
  }
120
194
  declare const Input: react.ForwardRefExoticComponent<InputProps & react.RefAttributes<HTMLInputElement>>;
121
195
 
122
196
  interface TextareaProps extends Omit<TextareaHTMLAttributes<HTMLTextAreaElement>, "color">, SketchProps {
123
197
  label?: ReactNode;
198
+ /**
199
+ * Draw-in the border on mount and seed-morph on focus.
200
+ * Defaults to the DoodleUIProvider value (true).
201
+ */
202
+ animate?: boolean;
124
203
  }
125
204
  declare const Textarea: react.ForwardRefExoticComponent<TextareaProps & react.RefAttributes<HTMLTextAreaElement>>;
126
205
 
127
206
  interface CheckboxProps extends Omit<CheckboxPrimitive.CheckboxProps, "asChild">, SketchProps {
128
207
  label?: ReactNode;
208
+ /**
209
+ * Draw-in the box on mount and the checkmark when checked.
210
+ * Defaults to the DoodleUIProvider value (true).
211
+ */
212
+ animate?: boolean;
129
213
  }
130
214
  declare const Checkbox: react.ForwardRefExoticComponent<CheckboxProps & react.RefAttributes<HTMLButtonElement>>;
131
215
 
@@ -134,6 +218,11 @@ interface RadioGroupProps extends ComponentPropsWithoutRef<typeof RadioGroupPrim
134
218
  declare const RadioGroup: react.ForwardRefExoticComponent<RadioGroupProps & react.RefAttributes<HTMLDivElement>>;
135
219
  interface RadioProps extends Omit<ComponentPropsWithoutRef<typeof RadioGroupPrimitive.Item>, "asChild">, SketchProps {
136
220
  label?: ReactNode;
221
+ /**
222
+ * Draw-in the ring on mount and scale/draw the dot on select.
223
+ * Defaults to the DoodleUIProvider value (true).
224
+ */
225
+ animate?: boolean;
137
226
  }
138
227
  declare const Radio: react.ForwardRefExoticComponent<RadioProps & react.RefAttributes<HTMLButtonElement>>;
139
228
 
@@ -142,12 +231,20 @@ interface CardProps extends Omit<HTMLAttributes<HTMLDivElement>, "color" | "titl
142
231
  fill?: string;
143
232
  title?: ReactNode;
144
233
  footer?: ReactNode;
234
+ /**
235
+ * Draw-in the border on mount. Defaults to the DoodleUIProvider value (true).
236
+ */
237
+ animate?: boolean;
145
238
  }
146
239
  declare const Card: react.ForwardRefExoticComponent<CardProps & react.RefAttributes<HTMLDivElement>>;
147
240
 
148
241
  type BadgeVariant = "default" | "accent" | "outline";
149
242
  interface BadgeProps extends Omit<HTMLAttributes<HTMLSpanElement>, "color">, SketchProps {
150
243
  variant?: BadgeVariant;
244
+ /**
245
+ * Draw-in the border on mount. Defaults to the DoodleUIProvider value (true).
246
+ */
247
+ animate?: boolean;
151
248
  }
152
249
  declare const Badge: react.ForwardRefExoticComponent<BadgeProps & react.RefAttributes<HTMLSpanElement>>;
153
250
 
@@ -155,6 +252,10 @@ type AlertVariant = "info" | "warning" | "error" | "success";
155
252
  interface AlertProps extends Omit<HTMLAttributes<HTMLDivElement>, "color" | "title">, SketchProps {
156
253
  variant?: AlertVariant;
157
254
  title?: ReactNode;
255
+ /**
256
+ * Draw-in the border on mount (~200ms). Defaults to the DoodleUIProvider value (true).
257
+ */
258
+ animate?: boolean;
158
259
  }
159
260
  declare const Alert: react.ForwardRefExoticComponent<AlertProps & react.RefAttributes<HTMLDivElement>>;
160
261
 
@@ -167,23 +268,38 @@ interface ModalProps extends SketchProps {
167
268
  description?: ReactNode;
168
269
  children?: ReactNode;
169
270
  className?: string;
170
- }
171
- declare function Modal({ open, defaultOpen, onOpenChange, trigger, title, description, children, className, roughness, seed, sketchColor, bowing, fillStyle, strokeWidth, }: ModalProps): react.JSX.Element;
172
- declare const ModalRoot: react.FC<Dialog.DialogProps>;
173
- declare const ModalTrigger: react.ForwardRefExoticComponent<Dialog.DialogTriggerProps & react.RefAttributes<HTMLButtonElement>>;
174
- declare const ModalClose: react.ForwardRefExoticComponent<Dialog.DialogCloseProps & react.RefAttributes<HTMLButtonElement>>;
175
- declare const ModalTitle: react.ForwardRefExoticComponent<Dialog.DialogTitleProps & react.RefAttributes<HTMLHeadingElement>>;
176
- declare const ModalDescription: react.ForwardRefExoticComponent<Dialog.DialogDescriptionProps & react.RefAttributes<HTMLParagraphElement>>;
271
+ /**
272
+ * Backdrop fade, panel enter/exit, and border draw-in on open.
273
+ * Defaults to the DoodleUIProvider value (true).
274
+ */
275
+ animate?: boolean;
276
+ }
277
+ declare function Modal({ open, defaultOpen, onOpenChange, trigger, title, description, children, className, roughness, seed, sketchColor, bowing, fillStyle, strokeWidth, animate, }: ModalProps): react.JSX.Element;
278
+ declare const ModalRoot: react.FC<DialogPrimitive.DialogProps>;
279
+ declare const ModalTrigger: react.ForwardRefExoticComponent<DialogPrimitive.DialogTriggerProps & react.RefAttributes<HTMLButtonElement>>;
280
+ declare const ModalClose: react.ForwardRefExoticComponent<DialogPrimitive.DialogCloseProps & react.RefAttributes<HTMLButtonElement>>;
281
+ declare const ModalTitle: react.ForwardRefExoticComponent<DialogPrimitive.DialogTitleProps & react.RefAttributes<HTMLHeadingElement>>;
282
+ declare const ModalDescription: react.ForwardRefExoticComponent<DialogPrimitive.DialogDescriptionProps & react.RefAttributes<HTMLParagraphElement>>;
177
283
 
178
284
  type DividerOrientation = "horizontal" | "vertical";
179
285
  interface DividerProps extends Omit<HTMLAttributes<HTMLDivElement>, "color">, SketchProps {
180
286
  orientation?: DividerOrientation;
287
+ /**
288
+ * Draw-in so the line extends across its length. Defaults to the
289
+ * DoodleUIProvider value (true).
290
+ */
291
+ animate?: boolean;
181
292
  }
182
293
  declare const Divider: react.ForwardRefExoticComponent<DividerProps & react.RefAttributes<HTMLDivElement>>;
183
294
 
184
295
  interface ProgressProps extends Omit<HTMLAttributes<HTMLDivElement>, "color">, SketchProps {
185
296
  value?: number;
186
297
  max?: number;
298
+ /**
299
+ * Draw-in the track on mount and redraw the fill as value changes.
300
+ * Defaults to the DoodleUIProvider value (true).
301
+ */
302
+ animate?: boolean;
187
303
  }
188
304
  declare const Progress: react.ForwardRefExoticComponent<ProgressProps & react.RefAttributes<HTMLDivElement>>;
189
305
 
@@ -194,8 +310,13 @@ interface TooltipProps extends SketchProps {
194
310
  side?: ComponentPropsWithoutRef<typeof TooltipPrimitive.Content>["side"];
195
311
  delayDuration?: number;
196
312
  className?: string;
313
+ /**
314
+ * Quick draw-in when the bubble shows (~180ms). Defaults to the
315
+ * DoodleUIProvider value (true).
316
+ */
317
+ animate?: boolean;
197
318
  }
198
- declare function Tooltip({ content, children, side, delayDuration, className, roughness, seed, sketchColor, bowing, fillStyle, strokeWidth, }: TooltipProps): react.JSX.Element;
319
+ declare function Tooltip({ content, children, side, delayDuration, className, roughness, seed, sketchColor, bowing, fillStyle, strokeWidth, animate, }: TooltipProps): react.JSX.Element;
199
320
 
200
321
  /**
201
322
  * Offset a resolved sketch seed by a stable hash of `key`.
@@ -214,8 +335,13 @@ interface SelectProps extends Omit<SelectPrimitive.SelectProps, "children">, Ske
214
335
  className?: string;
215
336
  style?: CSSProperties;
216
337
  "aria-label"?: string;
338
+ /**
339
+ * Draw-in the trigger on mount and the popover border on open.
340
+ * Defaults to the DoodleUIProvider value (true).
341
+ */
342
+ animate?: boolean;
217
343
  }
218
- declare function Select({ options, placeholder, className, style, roughness, seed, sketchColor, bowing, fillStyle, strokeWidth, value, defaultValue, onValueChange, "aria-label": ariaLabel, ...rest }: SelectProps): react.JSX.Element;
344
+ declare function Select({ options, placeholder, className, style, roughness, seed, sketchColor, bowing, fillStyle, strokeWidth, value, defaultValue, onValueChange, animate, "aria-label": ariaLabel, ...rest }: SelectProps): react.JSX.Element;
219
345
  interface SelectTriggerProps extends Omit<SelectPrimitive.SelectTriggerProps, "asChild"> {
220
346
  placeholder?: string;
221
347
  }
@@ -236,10 +362,20 @@ declare const SelectSeparator: react.ForwardRefExoticComponent<SelectPrimitive.S
236
362
 
237
363
  interface SwitchProps extends Omit<SwitchPrimitive.SwitchProps, "asChild">, SketchProps {
238
364
  label?: ReactNode;
365
+ /**
366
+ * Slide the thumb and seed-morph the track on toggle.
367
+ * Defaults to the DoodleUIProvider value (true).
368
+ */
369
+ animate?: boolean;
239
370
  }
240
371
  declare const Switch: react.ForwardRefExoticComponent<SwitchProps & react.RefAttributes<HTMLButtonElement>>;
241
372
 
242
373
  interface TabsProps extends Omit<ComponentPropsWithoutRef<typeof TabsPrimitive.Root>, "asChild">, SketchProps {
374
+ /**
375
+ * Draw-in the active underline and slide it on tab change.
376
+ * Defaults to the DoodleUIProvider value (true).
377
+ */
378
+ animate?: boolean;
243
379
  }
244
380
  declare const Tabs: react.ForwardRefExoticComponent<TabsProps & react.RefAttributes<HTMLDivElement>>;
245
381
  interface TabListProps extends Omit<ComponentPropsWithoutRef<typeof TabsPrimitive.List>, "asChild"> {
@@ -256,6 +392,11 @@ declare const TabPanel: react.ForwardRefExoticComponent<TabPanelProps & react.Re
256
392
  interface TableProps extends Omit<TableHTMLAttributes<HTMLTableElement>, "color">, SketchProps {
257
393
  headerUnderline?: boolean;
258
394
  children?: ReactNode;
395
+ /**
396
+ * Draw-in row rules on mount, staggered slightly. Defaults to the
397
+ * DoodleUIProvider value (true).
398
+ */
399
+ animate?: boolean;
259
400
  }
260
401
  declare const Table: react.ForwardRefExoticComponent<TableProps & react.RefAttributes<HTMLTableElement>>;
261
402
  declare const TableHead: react.ForwardRefExoticComponent<HTMLAttributes<HTMLTableSectionElement> & react.RefAttributes<HTMLTableSectionElement>>;
@@ -288,8 +429,13 @@ interface ToastProps extends SketchProps {
288
429
  duration?: number;
289
430
  className?: string;
290
431
  style?: CSSProperties;
432
+ /**
433
+ * Slide-in with a sketchy settle wobble, reversed on exit.
434
+ * Defaults to the DoodleUIProvider value (true).
435
+ */
436
+ animate?: boolean;
291
437
  }
292
- declare function Toast({ open, defaultOpen, onOpenChange, title, children, variant, duration, className, style, roughness, seed, sketchColor, bowing, fillStyle, strokeWidth, }: ToastProps): react.JSX.Element;
438
+ declare function Toast({ open, defaultOpen, onOpenChange, title, children, variant, duration, className, style, roughness, seed, sketchColor, bowing, fillStyle, strokeWidth, animate, }: ToastProps): react.JSX.Element;
293
439
  declare const ToastRoot: react.ForwardRefExoticComponent<ToastPrimitive.ToastProps & react.RefAttributes<HTMLLIElement>>;
294
440
  declare const ToastTitle: react.ForwardRefExoticComponent<ToastPrimitive.ToastTitleProps & react.RefAttributes<HTMLDivElement>>;
295
441
  declare const ToastDescription: react.ForwardRefExoticComponent<ToastPrimitive.ToastDescriptionProps & react.RefAttributes<HTMLDivElement>>;
@@ -380,4 +526,251 @@ interface StepperProps extends Omit<HTMLAttributes<HTMLDivElement>, "color">, Sk
380
526
  }
381
527
  declare const Stepper: react.ForwardRefExoticComponent<StepperProps & react.RefAttributes<HTMLDivElement>>;
382
528
 
383
- export { Accordion, AccordionContent, type AccordionContentProps, AccordionItem, type AccordionItemProps, type AccordionProps, AccordionTrigger, type AccordionTriggerProps, Alert, type AlertProps, type AlertVariant, Avatar, type AvatarProps, type AvatarShape, type AvatarStatus, Badge, type BadgeProps, type BadgeVariant, Breadcrumb, BreadcrumbItem, type BreadcrumbItemProps, type BreadcrumbProps, type BreadcrumbSeparator, Button, type ButtonProps, type ButtonSize, type ButtonVariant, Card, type CardProps, Checkbox, type CheckboxProps, DEFAULT_BOWING, DEFAULT_INK, DEFAULT_ROUGHNESS, DEFAULT_STROKE_WIDTH, Divider, type DividerOrientation, type DividerProps, type FillStyle, Input, type InputProps, Modal, ModalClose, ModalDescription, type ModalProps, ModalRoot, ModalTitle, ModalTrigger, Pagination, type PaginationProps, Progress, type ProgressProps, Radio, RadioGroup, type RadioGroupProps, type RadioProps, type RoughShape, RoughSvg, type RoughSvgProps, SKETCH_COLORS, Select, SelectContent, type SelectContentProps, SelectGroup, SelectItem, type SelectItemProps, SelectLabel, type SelectOption, type SelectProps, SelectRoot, SelectSeparator, SelectTrigger, type SelectTriggerProps, SelectValue, Skeleton, type SkeletonProps, type SkeletonVariant, SketchBox, type SketchBoxProps, type SketchProps, type SketchSeedContextValue, SketchSeedProvider, type SketchSeedProviderProps, Slider, type SliderProps, type SliderThumbShape, Stepper, type StepperOrientation, type StepperProps, type StepperStep, Switch, type SwitchProps, Tab, TabList, type TabListProps, TabPanel, type TabPanelProps, type TabProps, Table, TableBody, TableCell, type TableCellProps, TableHead, TableHeaderCell, type TableHeaderCellProps, type TableProps, TableRow, Tabs, type TabsProps, Textarea, type TextareaProps, Toast, ToastAction, ToastClose, ToastDescription, type ToastPosition, type ToastProps, ToastProvider, type ToastProviderProps, ToastRoot, ToastTitle, type ToastVariant, ToastViewport, Tooltip, type TooltipProps, TooltipProvider, deriveSeed, toRoughOptions, useResolvedSeed, useSketchSeed };
529
+ interface LabelProps extends Omit<LabelPrimitive.LabelProps, "asChild" | "color">, SketchProps {
530
+ children?: ReactNode;
531
+ /** Adds a small hand-drawn required mark after the text. */
532
+ required?: boolean;
533
+ /**
534
+ * Draw-in the required mark on mount.
535
+ * Defaults to the DoodleUIProvider value (true).
536
+ */
537
+ animate?: boolean;
538
+ }
539
+ /**
540
+ * Thin, mostly-typographic wrapper around Radix Label. Ties a caption to a
541
+ * form field via `htmlFor` for accessibility. The only sketch chrome is a
542
+ * small drawn mark next to the text when `required` is set.
543
+ */
544
+ declare const Label: react.ForwardRefExoticComponent<LabelProps & react.RefAttributes<HTMLLabelElement>>;
545
+
546
+ interface CollapsibleProps extends Omit<CollapsiblePrimitive.CollapsibleProps, "asChild">, SketchProps {
547
+ children?: ReactNode;
548
+ }
549
+ declare const Collapsible: react.ForwardRefExoticComponent<CollapsibleProps & react.RefAttributes<HTMLDivElement>>;
550
+ interface CollapsibleTriggerProps extends Omit<ComponentPropsWithoutRef<typeof CollapsiblePrimitive.Trigger>, "asChild"> {
551
+ children?: ReactNode;
552
+ }
553
+ declare const CollapsibleTrigger: react.ForwardRefExoticComponent<CollapsibleTriggerProps & react.RefAttributes<HTMLButtonElement>>;
554
+ interface CollapsibleContentProps extends Omit<ComponentPropsWithoutRef<typeof CollapsiblePrimitive.Content>, "asChild"> {
555
+ }
556
+ declare const CollapsibleContent: react.ForwardRefExoticComponent<CollapsibleContentProps & react.RefAttributes<HTMLDivElement>>;
557
+
558
+ interface PopoverProps extends Omit<PopoverPrimitive.PopoverProps, "children">, SketchProps {
559
+ children?: ReactNode;
560
+ /**
561
+ * Draw-in the panel border when the popover opens.
562
+ * Defaults to the DoodleUIProvider value (true).
563
+ */
564
+ animate?: boolean;
565
+ }
566
+ declare function Popover({ children, roughness, seed, sketchColor, bowing, fillStyle, strokeWidth, animate, ...rest }: PopoverProps): react.JSX.Element;
567
+ declare const PopoverTrigger: react.ForwardRefExoticComponent<PopoverPrimitive.PopoverTriggerProps & react.RefAttributes<HTMLButtonElement>>;
568
+ declare const PopoverAnchor: react.ForwardRefExoticComponent<PopoverPrimitive.PopoverAnchorProps & react.RefAttributes<HTMLDivElement>>;
569
+ declare const PopoverClose: react.ForwardRefExoticComponent<PopoverPrimitive.PopoverCloseProps & react.RefAttributes<HTMLButtonElement>>;
570
+ interface PopoverContentProps extends Omit<PopoverPrimitive.PopoverContentProps, "asChild"> {
571
+ children?: ReactNode;
572
+ }
573
+ declare const PopoverContent: react.ForwardRefExoticComponent<PopoverContentProps & react.RefAttributes<HTMLDivElement>>;
574
+ interface PopoverArrowProps extends ComponentPropsWithoutRef<typeof PopoverPrimitive.Arrow> {
575
+ }
576
+ declare const PopoverArrow: react.ForwardRefExoticComponent<PopoverArrowProps & react.RefAttributes<SVGSVGElement>>;
577
+
578
+ interface DropdownMenuProps extends Omit<DropdownMenuPrimitive.DropdownMenuProps, "children">, SketchProps {
579
+ children?: ReactNode;
580
+ /**
581
+ * Draw-in the panel border when the menu opens.
582
+ * Defaults to the DoodleUIProvider value (true).
583
+ */
584
+ animate?: boolean;
585
+ }
586
+ declare function DropdownMenu({ children, roughness, seed, sketchColor, bowing, fillStyle, strokeWidth, animate, ...rest }: DropdownMenuProps): react.JSX.Element;
587
+ declare const DropdownMenuTrigger: react.ForwardRefExoticComponent<DropdownMenuPrimitive.DropdownMenuTriggerProps & react.RefAttributes<HTMLButtonElement>>;
588
+ declare const DropdownMenuGroup: react.ForwardRefExoticComponent<DropdownMenuPrimitive.DropdownMenuGroupProps & react.RefAttributes<HTMLDivElement>>;
589
+ declare const DropdownMenuRadioGroup: react.ForwardRefExoticComponent<DropdownMenuPrimitive.DropdownMenuRadioGroupProps & react.RefAttributes<HTMLDivElement>>;
590
+ declare const DropdownMenuSub: react.FC<DropdownMenuPrimitive.DropdownMenuSubProps>;
591
+ interface DropdownMenuContentProps extends Omit<DropdownMenuPrimitive.DropdownMenuContentProps, "asChild"> {
592
+ children?: ReactNode;
593
+ }
594
+ declare const DropdownMenuContent: react.ForwardRefExoticComponent<DropdownMenuContentProps & react.RefAttributes<HTMLDivElement>>;
595
+ interface DropdownMenuItemProps extends Omit<DropdownMenuPrimitive.DropdownMenuItemProps, "asChild"> {
596
+ children?: ReactNode;
597
+ inset?: boolean;
598
+ }
599
+ declare const DropdownMenuItem: react.ForwardRefExoticComponent<DropdownMenuItemProps & react.RefAttributes<HTMLDivElement>>;
600
+ interface DropdownMenuCheckboxItemProps extends Omit<DropdownMenuPrimitive.DropdownMenuCheckboxItemProps, "asChild"> {
601
+ children?: ReactNode;
602
+ }
603
+ declare const DropdownMenuCheckboxItem: react.ForwardRefExoticComponent<DropdownMenuCheckboxItemProps & react.RefAttributes<HTMLDivElement>>;
604
+ interface DropdownMenuRadioItemProps extends Omit<DropdownMenuPrimitive.DropdownMenuRadioItemProps, "asChild"> {
605
+ children?: ReactNode;
606
+ }
607
+ declare const DropdownMenuRadioItem: react.ForwardRefExoticComponent<DropdownMenuRadioItemProps & react.RefAttributes<HTMLDivElement>>;
608
+ interface DropdownMenuLabelProps extends Omit<DropdownMenuPrimitive.DropdownMenuLabelProps, "asChild"> {
609
+ children?: ReactNode;
610
+ }
611
+ declare const DropdownMenuLabel: react.ForwardRefExoticComponent<DropdownMenuLabelProps & react.RefAttributes<HTMLDivElement>>;
612
+ interface DropdownMenuSeparatorProps extends Omit<DropdownMenuPrimitive.DropdownMenuSeparatorProps, "asChild"> {
613
+ }
614
+ declare const DropdownMenuSeparator: react.ForwardRefExoticComponent<DropdownMenuSeparatorProps & react.RefAttributes<HTMLDivElement>>;
615
+
616
+ interface DialogProps extends Omit<DialogPrimitive.DialogProps, "children">, SketchProps {
617
+ children?: ReactNode;
618
+ /**
619
+ * Backdrop fade, panel enter/exit, and border draw-in on open.
620
+ * Defaults to the DoodleUIProvider value (true).
621
+ */
622
+ animate?: boolean;
623
+ }
624
+ /**
625
+ * Lighter-weight sibling to `Modal`: a composable, shadcn-style dialog built
626
+ * from `Dialog` / `DialogTrigger` / `DialogContent` / `DialogHeader` /
627
+ * `DialogFooter` / `DialogTitle` / `DialogDescription` / `DialogClose`. Unlike
628
+ * `Modal`, `DialogContent` has no forced width or shadow and no built-in
629
+ * close button — compose your own layout inside it.
630
+ */
631
+ declare function Dialog({ children, open, defaultOpen, onOpenChange, roughness, seed, sketchColor, bowing, fillStyle, strokeWidth, animate, ...rest }: DialogProps): react.JSX.Element;
632
+ declare const DialogTrigger: react.ForwardRefExoticComponent<DialogPrimitive.DialogTriggerProps & react.RefAttributes<HTMLButtonElement>>;
633
+ declare const DialogPortal: react.FC<DialogPrimitive.DialogPortalProps>;
634
+ declare const DialogClose: react.ForwardRefExoticComponent<DialogPrimitive.DialogCloseProps & react.RefAttributes<HTMLButtonElement>>;
635
+ interface DialogOverlayProps extends Omit<DialogPrimitive.DialogOverlayProps, "asChild" | "forceMount"> {
636
+ }
637
+ declare const DialogOverlay: react.ForwardRefExoticComponent<DialogOverlayProps & react.RefAttributes<HTMLDivElement>>;
638
+ interface DialogContentProps extends Omit<DialogPrimitive.DialogContentProps, "asChild" | "forceMount"> {
639
+ children?: ReactNode;
640
+ /** Panel width. Defaults to `min(420px, calc(100vw - 32px))`. */
641
+ contentStyle?: CSSProperties;
642
+ }
643
+ declare const DialogContent: react.ForwardRefExoticComponent<DialogContentProps & react.RefAttributes<HTMLDivElement>>;
644
+ interface DialogHeaderProps {
645
+ children?: ReactNode;
646
+ className?: string;
647
+ style?: CSSProperties;
648
+ }
649
+ declare function DialogHeader({ children, className, style }: DialogHeaderProps): react.JSX.Element;
650
+ interface DialogFooterProps {
651
+ children?: ReactNode;
652
+ className?: string;
653
+ style?: CSSProperties;
654
+ }
655
+ declare function DialogFooter({ children, className, style }: DialogFooterProps): react.JSX.Element;
656
+ interface DialogTitleProps extends Omit<DialogPrimitive.DialogTitleProps, "asChild"> {
657
+ }
658
+ declare const DialogTitle: react.ForwardRefExoticComponent<DialogTitleProps & react.RefAttributes<HTMLHeadingElement>>;
659
+ interface DialogDescriptionProps extends Omit<DialogPrimitive.DialogDescriptionProps, "asChild"> {
660
+ }
661
+ declare const DialogDescription: react.ForwardRefExoticComponent<DialogDescriptionProps & react.RefAttributes<HTMLParagraphElement>>;
662
+
663
+ interface AlertDialogProps extends Omit<AlertDialogPrimitive.AlertDialogProps, "children">, SketchProps {
664
+ children?: ReactNode;
665
+ /**
666
+ * Backdrop fade, panel enter/exit, and border draw-in on open.
667
+ * Defaults to the DoodleUIProvider value (true).
668
+ */
669
+ animate?: boolean;
670
+ }
671
+ /**
672
+ * Confirm / destructive-action variant of `Dialog`. Same composable shape,
673
+ * but Radix's alert dialog primitive requires an explicit action — there is
674
+ * no dismiss-on-outside-click or Escape by default, and `AlertDialogAction`
675
+ * / `AlertDialogCancel` give the confirm button visual emphasis.
676
+ */
677
+ declare function AlertDialog({ children, open, defaultOpen, onOpenChange, roughness, seed, sketchColor, bowing, fillStyle, strokeWidth, animate, ...rest }: AlertDialogProps): react.JSX.Element;
678
+ declare const AlertDialogTrigger: react.ForwardRefExoticComponent<AlertDialogPrimitive.AlertDialogTriggerProps & react.RefAttributes<HTMLButtonElement>>;
679
+ declare const AlertDialogPortal: react.FC<AlertDialogPrimitive.AlertDialogPortalProps>;
680
+ interface AlertDialogOverlayProps extends Omit<AlertDialogPrimitive.AlertDialogOverlayProps, "asChild" | "forceMount"> {
681
+ }
682
+ declare const AlertDialogOverlay: react.ForwardRefExoticComponent<AlertDialogOverlayProps & react.RefAttributes<HTMLDivElement>>;
683
+ interface AlertDialogContentProps extends Omit<AlertDialogPrimitive.AlertDialogContentProps, "asChild" | "forceMount"> {
684
+ children?: ReactNode;
685
+ contentStyle?: CSSProperties;
686
+ }
687
+ declare const AlertDialogContent: react.ForwardRefExoticComponent<AlertDialogContentProps & react.RefAttributes<HTMLDivElement>>;
688
+ interface AlertDialogHeaderProps {
689
+ children?: ReactNode;
690
+ className?: string;
691
+ style?: CSSProperties;
692
+ }
693
+ declare function AlertDialogHeader({ children, className, style, }: AlertDialogHeaderProps): react.JSX.Element;
694
+ interface AlertDialogFooterProps {
695
+ children?: ReactNode;
696
+ className?: string;
697
+ style?: CSSProperties;
698
+ }
699
+ declare function AlertDialogFooter({ children, className, style, }: AlertDialogFooterProps): react.JSX.Element;
700
+ interface AlertDialogTitleProps extends Omit<AlertDialogPrimitive.AlertDialogTitleProps, "asChild"> {
701
+ }
702
+ declare const AlertDialogTitle: react.ForwardRefExoticComponent<AlertDialogTitleProps & react.RefAttributes<HTMLHeadingElement>>;
703
+ interface AlertDialogDescriptionProps extends Omit<AlertDialogPrimitive.AlertDialogDescriptionProps, "asChild"> {
704
+ }
705
+ declare const AlertDialogDescription: react.ForwardRefExoticComponent<AlertDialogDescriptionProps & react.RefAttributes<HTMLParagraphElement>>;
706
+ interface AlertDialogActionProps extends Omit<AlertDialogPrimitive.AlertDialogActionProps, "asChild"> {
707
+ }
708
+ declare const AlertDialogAction: react.ForwardRefExoticComponent<AlertDialogActionProps & react.RefAttributes<HTMLButtonElement>>;
709
+ interface AlertDialogCancelProps extends Omit<AlertDialogPrimitive.AlertDialogCancelProps, "asChild"> {
710
+ }
711
+ declare const AlertDialogCancel: react.ForwardRefExoticComponent<AlertDialogCancelProps & react.RefAttributes<HTMLButtonElement>>;
712
+
713
+ interface CommandProps extends Omit<ComponentPropsWithoutRef<typeof Command$1>, "asChild">, SketchProps {
714
+ children?: ReactNode;
715
+ /**
716
+ * Draw-in the panel border on mount.
717
+ * Defaults to the DoodleUIProvider value (true).
718
+ */
719
+ animate?: boolean;
720
+ }
721
+ /**
722
+ * Command palette / cmd+k style searchable list, built on `cmdk` with a
723
+ * `SketchBox` frame. Compose with `CommandInput`, `CommandList`,
724
+ * `CommandEmpty`, `CommandGroup`, `CommandItem`, `CommandSeparator`.
725
+ */
726
+ declare const Command: react.ForwardRefExoticComponent<CommandProps & react.RefAttributes<HTMLDivElement>>;
727
+ interface CommandInputProps extends Omit<ComponentPropsWithoutRef<typeof CommandInput$1>, "asChild"> {
728
+ }
729
+ declare const CommandInput: react.ForwardRefExoticComponent<CommandInputProps & react.RefAttributes<HTMLInputElement>>;
730
+ interface CommandListProps extends Omit<ComponentPropsWithoutRef<typeof CommandList$1>, "asChild"> {
731
+ }
732
+ declare const CommandList: react.ForwardRefExoticComponent<CommandListProps & react.RefAttributes<HTMLDivElement>>;
733
+ interface CommandEmptyProps extends Omit<ComponentPropsWithoutRef<typeof CommandEmpty$1>, "asChild"> {
734
+ }
735
+ declare const CommandEmpty: react.ForwardRefExoticComponent<CommandEmptyProps & react.RefAttributes<HTMLDivElement>>;
736
+ interface CommandGroupProps extends Omit<ComponentPropsWithoutRef<typeof CommandGroup$1>, "asChild"> {
737
+ }
738
+ declare const CommandGroup: react.ForwardRefExoticComponent<CommandGroupProps & react.RefAttributes<HTMLDivElement>>;
739
+ interface CommandItemProps extends Omit<ComponentPropsWithoutRef<typeof CommandItem$1>, "asChild"> {
740
+ }
741
+ declare const CommandItem: react.ForwardRefExoticComponent<CommandItemProps & react.RefAttributes<HTMLDivElement>>;
742
+ interface CommandSeparatorProps extends Omit<ComponentPropsWithoutRef<typeof CommandSeparator$1>, "asChild"> {
743
+ }
744
+ declare const CommandSeparator: react.ForwardRefExoticComponent<CommandSeparatorProps & react.RefAttributes<HTMLDivElement>>;
745
+ declare function CommandShortcut({ children, className, style, }: {
746
+ children?: ReactNode;
747
+ className?: string;
748
+ style?: React.CSSProperties;
749
+ }): react.JSX.Element;
750
+
751
+ interface ComboboxProps extends SketchProps {
752
+ options: SelectOption[];
753
+ placeholder?: string;
754
+ searchPlaceholder?: string;
755
+ emptyMessage?: ReactNode;
756
+ value?: string;
757
+ defaultValue?: string;
758
+ onValueChange?: (value: string) => void;
759
+ disabled?: boolean;
760
+ className?: string;
761
+ style?: CSSProperties;
762
+ "aria-label"?: string;
763
+ /**
764
+ * Draw-in the trigger on mount and the popover border on open.
765
+ * Defaults to the DoodleUIProvider value (true).
766
+ */
767
+ animate?: boolean;
768
+ }
769
+ /**
770
+ * Searchable select. Composes `Popover` (positioning) + `Command` (cmdk
771
+ * filtering/list) behind a sketchy `Input`-styled trigger button — the same
772
+ * recipe shadcn uses, since Radix has no dedicated Combobox primitive.
773
+ */
774
+ declare function Combobox({ options, placeholder, searchPlaceholder, emptyMessage, value, defaultValue, onValueChange, disabled, className, style, roughness, seed, sketchColor, bowing, fillStyle, strokeWidth, animate, "aria-label": ariaLabel, }: ComboboxProps): react.JSX.Element;
775
+
776
+ export { Accordion, AccordionContent, type AccordionContentProps, AccordionItem, type AccordionItemProps, type AccordionProps, AccordionTrigger, type AccordionTriggerProps, Alert, AlertDialog, AlertDialogAction, type AlertDialogActionProps, AlertDialogCancel, type AlertDialogCancelProps, AlertDialogContent, type AlertDialogContentProps, AlertDialogDescription, type AlertDialogDescriptionProps, AlertDialogFooter, type AlertDialogFooterProps, AlertDialogHeader, type AlertDialogHeaderProps, AlertDialogOverlay, AlertDialogPortal, type AlertDialogProps, AlertDialogTitle, type AlertDialogTitleProps, AlertDialogTrigger, type AlertProps, type AlertVariant, Avatar, type AvatarProps, type AvatarShape, type AvatarStatus, Badge, type BadgeProps, type BadgeVariant, Breadcrumb, BreadcrumbItem, type BreadcrumbItemProps, type BreadcrumbProps, type BreadcrumbSeparator, Button, type ButtonProps, type ButtonSize, type ButtonVariant, Card, type CardProps, Checkbox, type CheckboxProps, Collapsible, CollapsibleContent, type CollapsibleContentProps, type CollapsibleProps, CollapsibleTrigger, type CollapsibleTriggerProps, Combobox, type ComboboxProps, Command, CommandEmpty, type CommandEmptyProps, CommandGroup, type CommandGroupProps, CommandInput, type CommandInputProps, CommandItem, type CommandItemProps, CommandList, type CommandListProps, type CommandProps, CommandSeparator, type CommandSeparatorProps, CommandShortcut, DEFAULT_BOWING, DEFAULT_INK, DEFAULT_ROUGHNESS, DEFAULT_STROKE_WIDTH, DRAW_IN_ALERT_MS, DRAW_IN_DURATION_MS, DRAW_IN_MARK_MS, DRAW_IN_TOOLTIP_MS, Dialog, DialogClose, DialogContent, type DialogContentProps, DialogDescription, type DialogDescriptionProps, DialogFooter, type DialogFooterProps, DialogHeader, type DialogHeaderProps, DialogOverlay, DialogPortal, type DialogProps, DialogTitle, type DialogTitleProps, DialogTrigger, Divider, type DividerOrientation, type DividerProps, type DoodleUIContextValue, DoodleUIProvider, type DoodleUIProviderProps, DropdownMenu, DropdownMenuCheckboxItem, type DropdownMenuCheckboxItemProps, DropdownMenuContent, type DropdownMenuContentProps, DropdownMenuGroup, DropdownMenuItem, type DropdownMenuItemProps, DropdownMenuLabel, type DropdownMenuLabelProps, type DropdownMenuProps, DropdownMenuRadioGroup, DropdownMenuRadioItem, type DropdownMenuRadioItemProps, DropdownMenuSeparator, type DropdownMenuSeparatorProps, DropdownMenuSub, DropdownMenuTrigger, type FillStyle, Input, type InputProps, Label, type LabelProps, Modal, ModalClose, ModalDescription, type ModalProps, ModalRoot, ModalTitle, ModalTrigger, Pagination, type PaginationProps, Popover, PopoverAnchor, PopoverArrow, PopoverClose, PopoverContent, type PopoverContentProps, type PopoverProps, PopoverTrigger, Progress, type ProgressProps, Radio, RadioGroup, type RadioGroupProps, type RadioProps, type RoughShape, RoughSvg, type RoughSvgProps, SKETCH_COLORS, Select, SelectContent, type SelectContentProps, SelectGroup, SelectItem, type SelectItemProps, SelectLabel, type SelectOption, type SelectProps, SelectRoot, SelectSeparator, SelectTrigger, type SelectTriggerProps, SelectValue, Skeleton, type SkeletonProps, type SkeletonVariant, SketchBox, type SketchBoxProps, type SketchProps, type SketchSeedContextValue, SketchSeedProvider, type SketchSeedProviderProps, Slider, type SliderProps, type SliderThumbShape, Stepper, type StepperOrientation, type StepperProps, type StepperStep, Switch, type SwitchProps, TABLE_STAGGER_MS, Tab, TabList, type TabListProps, TabPanel, type TabPanelProps, type TabProps, Table, TableBody, TableCell, type TableCellProps, TableHead, TableHeaderCell, type TableHeaderCellProps, type TableProps, TableRow, Tabs, type TabsProps, Textarea, type TextareaProps, Toast, ToastAction, ToastClose, ToastDescription, type ToastPosition, type ToastProps, ToastProvider, type ToastProviderProps, ToastRoot, ToastTitle, type ToastVariant, ToastViewport, Tooltip, type TooltipProps, TooltipProvider, deriveSeed, toRoughOptions, useAnimate, useDoodleUI, useDrawIn, useResolvedSeed, useSketchSeed };