doodleui-react 0.4.0 → 0.6.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.js CHANGED
@@ -20,6 +20,17 @@ import * as PopoverPrimitive from '@radix-ui/react-popover';
20
20
  import * as DropdownMenuPrimitive from '@radix-ui/react-dropdown-menu';
21
21
  import * as AlertDialogPrimitive from '@radix-ui/react-alert-dialog';
22
22
  import { Command as Command$1, CommandInput as CommandInput$1, CommandList as CommandList$1, CommandEmpty as CommandEmpty$1, CommandGroup as CommandGroup$1, CommandItem as CommandItem$1, CommandSeparator as CommandSeparator$1 } from 'cmdk';
23
+ import * as TogglePrimitive from '@radix-ui/react-toggle';
24
+ import * as ToggleGroupPrimitive from '@radix-ui/react-toggle-group';
25
+ import { OTPInput, OTPInputContext } from 'input-otp';
26
+ import * as ScrollAreaPrimitive from '@radix-ui/react-scroll-area';
27
+ import * as ResizablePrimitive from 'react-resizable-panels';
28
+ import * as HoverCardPrimitive from '@radix-ui/react-hover-card';
29
+ import * as ContextMenuPrimitive from '@radix-ui/react-context-menu';
30
+ import * as NavigationMenuPrimitive from '@radix-ui/react-navigation-menu';
31
+ import * as MenubarPrimitive from '@radix-ui/react-menubar';
32
+ import * as AspectRatioPrimitive from '@radix-ui/react-aspect-ratio';
33
+ import useEmblaCarousel from 'embla-carousel-react';
23
34
 
24
35
  // src/types.ts
25
36
  function toRoughOptions(props) {
@@ -5175,7 +5186,3335 @@ function Combobox({
5175
5186
  ) })
5176
5187
  ] });
5177
5188
  }
5189
+ var Kbd = forwardRef(function Kbd2({
5190
+ children,
5191
+ className,
5192
+ style,
5193
+ roughness,
5194
+ seed,
5195
+ sketchColor,
5196
+ bowing,
5197
+ fillStyle,
5198
+ strokeWidth,
5199
+ animate,
5200
+ ...rest
5201
+ }, ref) {
5202
+ const ink = sketchColor ?? SKETCH_COLORS.ink;
5203
+ return /* @__PURE__ */ jsx(
5204
+ SketchBox,
5205
+ {
5206
+ className: cn(className),
5207
+ style: {
5208
+ display: "inline-flex",
5209
+ verticalAlign: "middle",
5210
+ ...style
5211
+ },
5212
+ contentStyle: {
5213
+ padding: "2px 7px",
5214
+ fontSize: 11,
5215
+ fontFamily: doodleUiFontFamily,
5216
+ lineHeight: 1.35,
5217
+ letterSpacing: "0.04em"
5218
+ },
5219
+ fill: SKETCH_COLORS.secondaryFill,
5220
+ fillStyle: fillStyle ?? "hachure",
5221
+ roughness,
5222
+ seed,
5223
+ sketchColor: ink,
5224
+ bowing,
5225
+ strokeWidth: strokeWidth ?? 1.3,
5226
+ animate,
5227
+ ...rest,
5228
+ children: /* @__PURE__ */ jsx(
5229
+ "kbd",
5230
+ {
5231
+ ref,
5232
+ style: {
5233
+ border: "none",
5234
+ background: "transparent",
5235
+ padding: 0,
5236
+ font: "inherit",
5237
+ color: "inherit"
5238
+ },
5239
+ children
5240
+ }
5241
+ )
5242
+ }
5243
+ );
5244
+ });
5245
+ var SPINNER_ARC = "M 12 3 A 9 9 0 1 1 11.5 3";
5246
+ var SIZE_PX = {
5247
+ sm: 18,
5248
+ md: 24,
5249
+ lg: 32
5250
+ };
5251
+ var Spinner = forwardRef(
5252
+ function Spinner2({
5253
+ className,
5254
+ style,
5255
+ size = "md",
5256
+ roughness,
5257
+ seed,
5258
+ sketchColor,
5259
+ bowing,
5260
+ fillStyle,
5261
+ strokeWidth,
5262
+ animate,
5263
+ ...rest
5264
+ }, ref) {
5265
+ const px = SIZE_PX[size];
5266
+ const resolvedSeed = useResolvedSeed(seed);
5267
+ const ink = sketchColor ?? SKETCH_COLORS.ink;
5268
+ const shouldSpin = useAnimate(animate);
5269
+ const boxStyle = {
5270
+ position: "relative",
5271
+ width: px,
5272
+ height: px,
5273
+ flexShrink: 0,
5274
+ display: "inline-block",
5275
+ ...style
5276
+ };
5277
+ const arc = /* @__PURE__ */ jsx(
5278
+ RoughSvg,
5279
+ {
5280
+ shape: "path",
5281
+ path: SPINNER_ARC,
5282
+ width: px,
5283
+ height: px,
5284
+ roughness: roughness ?? 1.6,
5285
+ seed: resolvedSeed,
5286
+ sketchColor: ink,
5287
+ bowing: bowing ?? 1.2,
5288
+ fillStyle,
5289
+ strokeWidth: strokeWidth ?? 2,
5290
+ inset: 2
5291
+ }
5292
+ );
5293
+ return /* @__PURE__ */ jsx(
5294
+ "div",
5295
+ {
5296
+ ref,
5297
+ role: "status",
5298
+ "aria-label": "Loading",
5299
+ className: cn(className),
5300
+ style: boxStyle,
5301
+ ...rest,
5302
+ children: shouldSpin ? /* @__PURE__ */ jsx(
5303
+ motion.div,
5304
+ {
5305
+ style: { position: "absolute", inset: 0 },
5306
+ animate: { rotate: 360 },
5307
+ transition: {
5308
+ duration: 0.9,
5309
+ ease: "linear",
5310
+ repeat: Infinity
5311
+ },
5312
+ children: arc
5313
+ }
5314
+ ) : arc
5315
+ }
5316
+ );
5317
+ }
5318
+ );
5319
+ var SIZE_STYLES2 = {
5320
+ sm: { fontSize: 13, padding: "4px 10px", minHeight: 30 },
5321
+ md: { fontSize: 15, padding: "7px 14px", minHeight: 38 },
5322
+ lg: { fontSize: 17, padding: "10px 18px", minHeight: 46 }
5323
+ };
5324
+ var Toggle = forwardRef(
5325
+ function Toggle2({
5326
+ className,
5327
+ style,
5328
+ size = "md",
5329
+ roughness,
5330
+ seed,
5331
+ sketchColor,
5332
+ bowing,
5333
+ fillStyle,
5334
+ strokeWidth,
5335
+ pressed,
5336
+ defaultPressed,
5337
+ onPressedChange,
5338
+ disabled,
5339
+ animate,
5340
+ children,
5341
+ ...rest
5342
+ }, ref) {
5343
+ const rootRef = useRef(null);
5344
+ const [uncontrolled, setUncontrolled] = useState(defaultPressed === true);
5345
+ const isPressed = pressed ?? uncontrolled;
5346
+ const ink = sketchColor ?? SKETCH_COLORS.ink;
5347
+ const resolvedSeed = useResolvedSeed(seed);
5348
+ const shouldAnimate = useAnimate(animate);
5349
+ const pressSeed = deriveSeed(resolvedSeed, isPressed ? "on" : "off");
5350
+ const sketchSeed = shouldAnimate ? pressSeed : resolvedSeed;
5351
+ useDrawIn(rootRef, DRAW_IN_DURATION_MS, shouldAnimate, sketchSeed);
5352
+ return /* @__PURE__ */ jsxs(
5353
+ TogglePrimitive.Root,
5354
+ {
5355
+ ref: (node) => {
5356
+ rootRef.current = node;
5357
+ assignRef(ref, node);
5358
+ },
5359
+ pressed,
5360
+ defaultPressed,
5361
+ onPressedChange: (next) => {
5362
+ setUncontrolled(next);
5363
+ onPressedChange?.(next);
5364
+ },
5365
+ disabled,
5366
+ className: cn(className),
5367
+ style: {
5368
+ position: "relative",
5369
+ display: "inline-flex",
5370
+ alignItems: "center",
5371
+ justifyContent: "center",
5372
+ border: "none",
5373
+ background: "transparent",
5374
+ cursor: disabled ? "not-allowed" : "pointer",
5375
+ color: ink,
5376
+ fontFamily: doodleUiFontFamily,
5377
+ fontWeight: doodleUiFontWeight(600),
5378
+ opacity: disabled ? 0.45 : 1,
5379
+ outline: "none",
5380
+ ...SIZE_STYLES2[size],
5381
+ ...style
5382
+ },
5383
+ ...rest,
5384
+ children: [
5385
+ /* @__PURE__ */ jsx(
5386
+ RoughSvg,
5387
+ {
5388
+ shape: "rectangle",
5389
+ roughness,
5390
+ seed: sketchSeed,
5391
+ sketchColor: isPressed ? SKETCH_COLORS.accent : ink,
5392
+ bowing,
5393
+ fillStyle: fillStyle ?? "hachure",
5394
+ fill: isPressed ? SKETCH_COLORS.accentFill : void 0,
5395
+ strokeWidth: strokeWidth ?? 1.6
5396
+ }
5397
+ ),
5398
+ /* @__PURE__ */ jsx("span", { style: { position: "relative", zIndex: 1 }, children })
5399
+ ]
5400
+ }
5401
+ );
5402
+ }
5403
+ );
5404
+ var ToggleGroupSketchContext = createContext(null);
5405
+ function useToggleGroupSketch() {
5406
+ const ctx = useContext(ToggleGroupSketchContext);
5407
+ if (!ctx) {
5408
+ throw new Error("ToggleGroupItem must be used inside <ToggleGroup>.");
5409
+ }
5410
+ return ctx;
5411
+ }
5412
+ function ToggleGroup(props) {
5413
+ const {
5414
+ children,
5415
+ roughness,
5416
+ seed,
5417
+ sketchColor,
5418
+ bowing,
5419
+ fillStyle,
5420
+ strokeWidth,
5421
+ size = "md",
5422
+ animate,
5423
+ type = "single",
5424
+ ...rest
5425
+ } = props;
5426
+ const resolvedSeed = useResolvedSeed(seed);
5427
+ const ink = sketchColor ?? SKETCH_COLORS.ink;
5428
+ const rootStyle = { display: "inline-flex", gap: 6, flexWrap: "wrap" };
5429
+ return /* @__PURE__ */ jsx(
5430
+ ToggleGroupSketchContext.Provider,
5431
+ {
5432
+ value: {
5433
+ roughness,
5434
+ seed: resolvedSeed,
5435
+ sketchColor,
5436
+ bowing,
5437
+ fillStyle,
5438
+ strokeWidth,
5439
+ resolvedSeed,
5440
+ ink,
5441
+ animate,
5442
+ size
5443
+ },
5444
+ children: type === "multiple" ? /* @__PURE__ */ jsx(
5445
+ ToggleGroupPrimitive.Root,
5446
+ {
5447
+ type: "multiple",
5448
+ style: rootStyle,
5449
+ ...rest,
5450
+ children
5451
+ }
5452
+ ) : /* @__PURE__ */ jsx(
5453
+ ToggleGroupPrimitive.Root,
5454
+ {
5455
+ type: "single",
5456
+ style: rootStyle,
5457
+ ...rest,
5458
+ children
5459
+ }
5460
+ )
5461
+ }
5462
+ );
5463
+ }
5464
+ var ITEM_SIZE = {
5465
+ sm: { fontSize: 13, padding: "4px 10px", minHeight: 30 },
5466
+ md: { fontSize: 15, padding: "7px 14px", minHeight: 38 },
5467
+ lg: { fontSize: 17, padding: "10px 18px", minHeight: 46 }
5468
+ };
5469
+ var ToggleGroupItem = forwardRef(function ToggleGroupItem2({ className, style, children, value, disabled, ...rest }, ref) {
5470
+ const sketch = useToggleGroupSketch();
5471
+ const rootRef = useRef(null);
5472
+ const [pressed, setPressed] = useState(false);
5473
+ const shouldAnimate = useAnimate(sketch.animate);
5474
+ const pressSeed = deriveSeed(
5475
+ sketch.resolvedSeed,
5476
+ `${value}-${pressed ? "on" : "off"}`
5477
+ );
5478
+ const sketchSeed = shouldAnimate ? pressSeed : sketch.resolvedSeed;
5479
+ useLayoutEffect(() => {
5480
+ const el = rootRef.current;
5481
+ if (!el) return;
5482
+ const sync = () => setPressed(el.getAttribute("data-state") === "on");
5483
+ sync();
5484
+ const obs = new MutationObserver(sync);
5485
+ obs.observe(el, { attributes: true, attributeFilter: ["data-state"] });
5486
+ return () => obs.disconnect();
5487
+ }, [value]);
5488
+ useDrawIn(rootRef, DRAW_IN_DURATION_MS, shouldAnimate, sketchSeed);
5489
+ return /* @__PURE__ */ jsxs(
5490
+ ToggleGroupPrimitive.Item,
5491
+ {
5492
+ ref: (node) => {
5493
+ rootRef.current = node;
5494
+ assignRef(ref, node);
5495
+ },
5496
+ value,
5497
+ disabled,
5498
+ className: cn(className),
5499
+ style: {
5500
+ position: "relative",
5501
+ display: "inline-flex",
5502
+ alignItems: "center",
5503
+ justifyContent: "center",
5504
+ border: "none",
5505
+ background: "transparent",
5506
+ cursor: disabled ? "not-allowed" : "pointer",
5507
+ color: sketch.ink,
5508
+ fontFamily: doodleUiFontFamily,
5509
+ fontWeight: doodleUiFontWeight(600),
5510
+ opacity: disabled ? 0.45 : 1,
5511
+ outline: "none",
5512
+ ...ITEM_SIZE[sketch.size],
5513
+ ...style
5514
+ },
5515
+ ...rest,
5516
+ children: [
5517
+ /* @__PURE__ */ jsx(
5518
+ RoughSvg,
5519
+ {
5520
+ shape: "rectangle",
5521
+ roughness: sketch.roughness,
5522
+ seed: sketchSeed,
5523
+ sketchColor: pressed ? SKETCH_COLORS.accent : sketch.ink,
5524
+ bowing: sketch.bowing,
5525
+ fillStyle: sketch.fillStyle ?? "hachure",
5526
+ fill: pressed ? SKETCH_COLORS.accentFill : void 0,
5527
+ strokeWidth: sketch.strokeWidth ?? 1.6
5528
+ }
5529
+ ),
5530
+ /* @__PURE__ */ jsx("span", { style: { position: "relative", zIndex: 1 }, children })
5531
+ ]
5532
+ }
5533
+ );
5534
+ });
5535
+ var InputGroupSketchContext = createContext(null);
5536
+ function useInputGroupSketch() {
5537
+ const ctx = useContext(InputGroupSketchContext);
5538
+ if (!ctx) {
5539
+ throw new Error("InputGroup parts must be used inside <InputGroup>.");
5540
+ }
5541
+ return ctx;
5542
+ }
5543
+ function InputGroup({
5544
+ children,
5545
+ className,
5546
+ style,
5547
+ roughness,
5548
+ seed,
5549
+ sketchColor,
5550
+ bowing,
5551
+ fillStyle,
5552
+ strokeWidth,
5553
+ animate,
5554
+ onFocus,
5555
+ onBlur,
5556
+ ...rest
5557
+ }) {
5558
+ const resolvedSeed = useResolvedSeed(seed);
5559
+ const ink = sketchColor ?? SKETCH_COLORS.ink;
5560
+ const [focused, setFocused] = useState(false);
5561
+ const shouldAnimate = useAnimate(animate);
5562
+ const focusSeed = deriveSeed(resolvedSeed, "focus");
5563
+ const sketchSeed = shouldAnimate && focused ? focusSeed : resolvedSeed;
5564
+ return /* @__PURE__ */ jsx(
5565
+ InputGroupSketchContext.Provider,
5566
+ {
5567
+ value: {
5568
+ roughness,
5569
+ seed: resolvedSeed,
5570
+ sketchColor,
5571
+ bowing,
5572
+ fillStyle,
5573
+ strokeWidth,
5574
+ resolvedSeed,
5575
+ ink,
5576
+ animate,
5577
+ focused,
5578
+ setFocused
5579
+ },
5580
+ children: /* @__PURE__ */ jsx(
5581
+ "div",
5582
+ {
5583
+ className: cn(className),
5584
+ style: { position: "relative", width: "100%", ...style },
5585
+ onFocus: (event) => {
5586
+ setFocused(true);
5587
+ onFocus?.(event);
5588
+ },
5589
+ onBlur: (event) => {
5590
+ if (!event.currentTarget.contains(event.relatedTarget)) {
5591
+ setFocused(false);
5592
+ }
5593
+ onBlur?.(event);
5594
+ },
5595
+ ...rest,
5596
+ children: /* @__PURE__ */ jsx(
5597
+ SketchBox,
5598
+ {
5599
+ roughness,
5600
+ seed: sketchSeed,
5601
+ sketchColor: focused ? SKETCH_COLORS.accent : ink,
5602
+ bowing,
5603
+ fillStyle,
5604
+ strokeWidth: focused && !shouldAnimate ? (strokeWidth ?? 1.75) + 0.35 : strokeWidth,
5605
+ animate,
5606
+ drawInKey: sketchSeed,
5607
+ contentStyle: {
5608
+ display: "flex",
5609
+ alignItems: "stretch",
5610
+ minHeight: 38
5611
+ },
5612
+ children
5613
+ }
5614
+ )
5615
+ }
5616
+ )
5617
+ }
5618
+ );
5619
+ }
5620
+ var InputGroupAddon = forwardRef(
5621
+ function InputGroupAddon2({ className, style, align = "inline-start", children, ...rest }, ref) {
5622
+ const sketch = useInputGroupSketch();
5623
+ return /* @__PURE__ */ jsx(
5624
+ "span",
5625
+ {
5626
+ ref,
5627
+ className: cn(className),
5628
+ style: {
5629
+ display: "inline-flex",
5630
+ alignItems: "center",
5631
+ padding: align === "inline-start" ? "0 0 0 10px" : "0 10px 0 0",
5632
+ fontFamily: doodleUiFontFamily,
5633
+ fontSize: 14,
5634
+ color: sketch.ink,
5635
+ flexShrink: 0,
5636
+ ...style
5637
+ },
5638
+ ...rest,
5639
+ children
5640
+ }
5641
+ );
5642
+ }
5643
+ );
5644
+ var InputGroupInput = forwardRef(function InputGroupInput2({ className, style, ...rest }, ref) {
5645
+ const sketch = useInputGroupSketch();
5646
+ return /* @__PURE__ */ jsx(
5647
+ "input",
5648
+ {
5649
+ ref,
5650
+ className: cn(className),
5651
+ style: {
5652
+ flex: 1,
5653
+ minWidth: 0,
5654
+ border: "none",
5655
+ outline: "none",
5656
+ background: "transparent",
5657
+ color: sketch.ink,
5658
+ fontFamily: doodleUiFontFamily,
5659
+ fontSize: 15,
5660
+ padding: "8px 10px",
5661
+ ...style
5662
+ },
5663
+ ...rest
5664
+ }
5665
+ );
5666
+ });
5667
+ var InputGroupButton = forwardRef(function InputGroupButton2({ className, style, children, ...rest }, ref) {
5668
+ return /* @__PURE__ */ jsx(
5669
+ "span",
5670
+ {
5671
+ ref,
5672
+ className: cn(className),
5673
+ style: {
5674
+ display: "inline-flex",
5675
+ alignItems: "center",
5676
+ padding: "0 6px 0 0",
5677
+ ...style
5678
+ },
5679
+ ...rest,
5680
+ children
5681
+ }
5682
+ );
5683
+ });
5684
+ var InputOTPSketchContext = createContext(
5685
+ null
5686
+ );
5687
+ function useInputOTPSketch() {
5688
+ const ctx = useContext(InputOTPSketchContext);
5689
+ if (!ctx) {
5690
+ throw new Error("InputOTP parts must be used inside <InputOTP>.");
5691
+ }
5692
+ return ctx;
5693
+ }
5694
+ var InputOTP = forwardRef(
5695
+ function InputOTP2({
5696
+ className,
5697
+ containerClassName,
5698
+ roughness,
5699
+ seed,
5700
+ sketchColor,
5701
+ bowing,
5702
+ fillStyle,
5703
+ strokeWidth,
5704
+ animate,
5705
+ children,
5706
+ ...rest
5707
+ }, ref) {
5708
+ const resolvedSeed = useResolvedSeed(seed);
5709
+ const ink = sketchColor ?? SKETCH_COLORS.ink;
5710
+ return /* @__PURE__ */ jsx(
5711
+ InputOTPSketchContext.Provider,
5712
+ {
5713
+ value: {
5714
+ roughness,
5715
+ seed: resolvedSeed,
5716
+ sketchColor,
5717
+ bowing,
5718
+ fillStyle,
5719
+ strokeWidth,
5720
+ resolvedSeed,
5721
+ ink,
5722
+ animate
5723
+ },
5724
+ children: /* @__PURE__ */ jsx(
5725
+ OTPInput,
5726
+ {
5727
+ ref,
5728
+ containerClassName: cn(className, containerClassName),
5729
+ ...rest,
5730
+ children
5731
+ }
5732
+ )
5733
+ }
5734
+ );
5735
+ }
5736
+ );
5737
+ var InputOTPGroup = forwardRef(
5738
+ function InputOTPGroup2({ className, style, children, ...rest }, ref) {
5739
+ return /* @__PURE__ */ jsx(
5740
+ "div",
5741
+ {
5742
+ ref,
5743
+ className: cn(className),
5744
+ style: { display: "flex", alignItems: "center", gap: 8, ...style },
5745
+ ...rest,
5746
+ children
5747
+ }
5748
+ );
5749
+ }
5750
+ );
5751
+ var InputOTPSlot = forwardRef(
5752
+ function InputOTPSlot2({ index, className, style, ...rest }, ref) {
5753
+ const inputContext = useContext(OTPInputContext);
5754
+ const sketch = useInputOTPSketch();
5755
+ const slotRef = useRef(null);
5756
+ const shouldAnimate = useAnimate(sketch.animate);
5757
+ const { char, isActive, hasFakeCaret } = inputContext?.slots[index] ?? {
5758
+ char: null,
5759
+ isActive: false,
5760
+ hasFakeCaret: false
5761
+ };
5762
+ const slotSeed = deriveSeed(
5763
+ sketch.resolvedSeed,
5764
+ `slot-${index}-${isActive ? "active" : "idle"}`
5765
+ );
5766
+ useDrawIn(slotRef, DRAW_IN_DURATION_MS, shouldAnimate, slotSeed);
5767
+ if (!inputContext) {
5768
+ throw new Error("InputOTPSlot must be used inside <InputOTP>.");
5769
+ }
5770
+ return /* @__PURE__ */ jsxs(
5771
+ "div",
5772
+ {
5773
+ ref: (node) => {
5774
+ slotRef.current = node;
5775
+ assignRef(ref, node);
5776
+ },
5777
+ className: cn(className),
5778
+ style: {
5779
+ position: "relative",
5780
+ width: 40,
5781
+ height: 44,
5782
+ display: "flex",
5783
+ alignItems: "center",
5784
+ justifyContent: "center",
5785
+ fontFamily: doodleUiFontFamily,
5786
+ fontSize: 18,
5787
+ color: sketch.ink,
5788
+ ...style
5789
+ },
5790
+ ...rest,
5791
+ children: [
5792
+ /* @__PURE__ */ jsx(
5793
+ RoughSvg,
5794
+ {
5795
+ shape: "rectangle",
5796
+ roughness: sketch.roughness,
5797
+ seed: slotSeed,
5798
+ sketchColor: isActive ? SKETCH_COLORS.accent : sketch.ink,
5799
+ bowing: sketch.bowing,
5800
+ fillStyle: sketch.fillStyle,
5801
+ strokeWidth: isActive ? (sketch.strokeWidth ?? 1.75) + 0.15 : sketch.strokeWidth
5802
+ }
5803
+ ),
5804
+ /* @__PURE__ */ jsxs("span", { style: { position: "relative", zIndex: 1 }, children: [
5805
+ char,
5806
+ hasFakeCaret ? /* @__PURE__ */ jsx(
5807
+ motion.span,
5808
+ {
5809
+ "aria-hidden": true,
5810
+ style: {
5811
+ display: "inline-block",
5812
+ width: 2,
5813
+ height: "0.85em",
5814
+ marginLeft: 2,
5815
+ background: sketch.ink,
5816
+ verticalAlign: "middle"
5817
+ },
5818
+ animate: shouldAnimate ? { opacity: [1, 0, 1] } : { opacity: 1 },
5819
+ transition: shouldAnimate ? { duration: 1, repeat: Infinity, ease: "linear" } : void 0
5820
+ }
5821
+ ) : null
5822
+ ] })
5823
+ ]
5824
+ }
5825
+ );
5826
+ }
5827
+ );
5828
+ var InputOTPSeparator = forwardRef(function InputOTPSeparator2({ children = "\u2013", className, style, ...rest }, ref) {
5829
+ const sketch = useInputOTPSketch();
5830
+ return /* @__PURE__ */ jsx(
5831
+ "span",
5832
+ {
5833
+ ref,
5834
+ role: "separator",
5835
+ className: cn(className),
5836
+ style: {
5837
+ fontFamily: doodleUiFontFamily,
5838
+ color: sketch.ink,
5839
+ opacity: 0.5,
5840
+ userSelect: "none",
5841
+ ...style
5842
+ },
5843
+ ...rest,
5844
+ children
5845
+ }
5846
+ );
5847
+ });
5848
+ var ScrollAreaSketchContext = createContext(null);
5849
+ function useScrollAreaSketch() {
5850
+ const ctx = useContext(ScrollAreaSketchContext);
5851
+ if (!ctx) {
5852
+ throw new Error("ScrollArea parts must be used inside <ScrollArea>.");
5853
+ }
5854
+ return ctx;
5855
+ }
5856
+ var ScrollArea = forwardRef(function ScrollArea2({
5857
+ className,
5858
+ style,
5859
+ children,
5860
+ roughness,
5861
+ seed,
5862
+ sketchColor,
5863
+ bowing,
5864
+ fillStyle,
5865
+ strokeWidth,
5866
+ animate,
5867
+ ...rest
5868
+ }, ref) {
5869
+ const resolvedSeed = useResolvedSeed(seed);
5870
+ const ink = sketchColor ?? SKETCH_COLORS.ink;
5871
+ return /* @__PURE__ */ jsx(
5872
+ ScrollAreaSketchContext.Provider,
5873
+ {
5874
+ value: {
5875
+ roughness,
5876
+ seed: resolvedSeed,
5877
+ sketchColor,
5878
+ bowing,
5879
+ fillStyle,
5880
+ strokeWidth,
5881
+ resolvedSeed,
5882
+ ink,
5883
+ animate
5884
+ },
5885
+ children: /* @__PURE__ */ jsx(
5886
+ ScrollAreaPrimitive.Root,
5887
+ {
5888
+ ref,
5889
+ className: cn(className),
5890
+ style: { position: "relative", overflow: "hidden", ...style },
5891
+ ...rest,
5892
+ children: /* @__PURE__ */ jsx(
5893
+ SketchBox,
5894
+ {
5895
+ roughness,
5896
+ seed: resolvedSeed,
5897
+ sketchColor: ink,
5898
+ bowing,
5899
+ fillStyle: fillStyle ?? "solid",
5900
+ fill: "#f7f6f2",
5901
+ strokeWidth: strokeWidth ?? 1.5,
5902
+ animate,
5903
+ contentStyle: { padding: 0, height: "100%" },
5904
+ style: { height: "100%" },
5905
+ children
5906
+ }
5907
+ )
5908
+ }
5909
+ )
5910
+ }
5911
+ );
5912
+ });
5913
+ var ScrollAreaViewport = forwardRef(function ScrollAreaViewport2({ className, style, children, ...rest }, ref) {
5914
+ return /* @__PURE__ */ jsx(
5915
+ ScrollAreaPrimitive.Viewport,
5916
+ {
5917
+ ref,
5918
+ className: cn(className),
5919
+ style: {
5920
+ width: "100%",
5921
+ height: "100%",
5922
+ borderRadius: 0,
5923
+ ...style
5924
+ },
5925
+ ...rest,
5926
+ children
5927
+ }
5928
+ );
5929
+ });
5930
+ var ScrollBar = forwardRef(
5931
+ function ScrollBar2({ className, style, orientation = "vertical", ...rest }, ref) {
5932
+ const sketch = useScrollAreaSketch();
5933
+ return /* @__PURE__ */ jsx(
5934
+ ScrollAreaPrimitive.ScrollAreaScrollbar,
5935
+ {
5936
+ ref,
5937
+ orientation,
5938
+ className: cn(className),
5939
+ style: {
5940
+ display: "flex",
5941
+ touchAction: "none",
5942
+ userSelect: "none",
5943
+ padding: 2,
5944
+ ...orientation === "vertical" ? { width: 12, flexDirection: "column" } : { height: 12, flexDirection: "row" },
5945
+ ...style
5946
+ },
5947
+ ...rest,
5948
+ children: /* @__PURE__ */ jsx(ScrollAreaPrimitive.ScrollAreaThumb, { asChild: true, children: /* @__PURE__ */ jsx("div", { style: { position: "relative", flex: 1 }, children: /* @__PURE__ */ jsx(
5949
+ RoughSvg,
5950
+ {
5951
+ shape: orientation === "vertical" ? "line-vertical" : "line",
5952
+ roughness: (sketch.roughness ?? 1.5) + 0.3,
5953
+ seed: sketch.resolvedSeed,
5954
+ sketchColor: sketch.ink,
5955
+ bowing: sketch.bowing,
5956
+ strokeWidth: sketch.strokeWidth ?? 2.2,
5957
+ inset: 1
5958
+ }
5959
+ ) }) })
5960
+ }
5961
+ );
5962
+ }
5963
+ );
5964
+ var ScrollAreaCorner = ScrollAreaPrimitive.Corner;
5965
+ function ResizablePanelGroup({
5966
+ className,
5967
+ style,
5968
+ ...rest
5969
+ }) {
5970
+ return /* @__PURE__ */ jsx(
5971
+ ResizablePrimitive.PanelGroup,
5972
+ {
5973
+ className: cn(className),
5974
+ style: { display: "flex", width: "100%", height: "100%", ...style },
5975
+ ...rest
5976
+ }
5977
+ );
5978
+ }
5979
+ var ResizablePanel = ResizablePrimitive.Panel;
5980
+ function ResizableHandle({
5981
+ className,
5982
+ style,
5983
+ withHandle = true,
5984
+ roughness,
5985
+ seed,
5986
+ sketchColor,
5987
+ bowing,
5988
+ strokeWidth,
5989
+ ...rest
5990
+ }) {
5991
+ const resolvedSeed = useResolvedSeed(seed);
5992
+ const ink = sketchColor ?? SKETCH_COLORS.ink;
5993
+ const handleSeed = deriveSeed(resolvedSeed, "handle");
5994
+ const base = {
5995
+ position: "relative",
5996
+ flexShrink: 0,
5997
+ display: "flex",
5998
+ alignItems: "center",
5999
+ justifyContent: "center",
6000
+ background: "transparent",
6001
+ touchAction: "none",
6002
+ ...style
6003
+ };
6004
+ return /* @__PURE__ */ jsx(
6005
+ ResizablePrimitive.PanelResizeHandle,
6006
+ {
6007
+ className: cn(className),
6008
+ style: base,
6009
+ ...rest,
6010
+ children: withHandle ? /* @__PURE__ */ jsxs(
6011
+ "div",
6012
+ {
6013
+ style: {
6014
+ position: "relative",
6015
+ width: 14,
6016
+ height: 28,
6017
+ zIndex: 1
6018
+ },
6019
+ children: [
6020
+ /* @__PURE__ */ jsx(
6021
+ RoughSvg,
6022
+ {
6023
+ shape: "line-vertical",
6024
+ roughness: roughness ?? 1.8,
6025
+ seed: handleSeed,
6026
+ sketchColor: ink,
6027
+ bowing: bowing ?? 1.5,
6028
+ strokeWidth: strokeWidth ?? 2.4,
6029
+ width: 14,
6030
+ height: 28,
6031
+ inset: 2
6032
+ }
6033
+ ),
6034
+ /* @__PURE__ */ jsx(
6035
+ RoughSvg,
6036
+ {
6037
+ shape: "ellipse",
6038
+ roughness: (roughness ?? 1.5) + 0.2,
6039
+ seed: deriveSeed(handleSeed, "dot-a"),
6040
+ sketchColor: ink,
6041
+ width: 14,
6042
+ height: 28,
6043
+ strokeWidth: 1.2,
6044
+ inset: 5,
6045
+ style: { opacity: 0.55 }
6046
+ }
6047
+ )
6048
+ ]
6049
+ }
6050
+ ) : null
6051
+ }
6052
+ );
6053
+ }
6054
+ var HoverCardSketchContext = createContext(
6055
+ null
6056
+ );
6057
+ function useHoverCardSketch() {
6058
+ const ctx = useContext(HoverCardSketchContext);
6059
+ if (!ctx) {
6060
+ throw new Error("HoverCard parts must be used inside <HoverCard>.");
6061
+ }
6062
+ return ctx;
6063
+ }
6064
+ function HoverCard({
6065
+ children,
6066
+ roughness,
6067
+ seed,
6068
+ sketchColor,
6069
+ bowing,
6070
+ fillStyle,
6071
+ strokeWidth,
6072
+ animate,
6073
+ ...rest
6074
+ }) {
6075
+ const resolvedSeed = useResolvedSeed(seed);
6076
+ const ink = sketchColor ?? SKETCH_COLORS.ink;
6077
+ return /* @__PURE__ */ jsx(
6078
+ HoverCardSketchContext.Provider,
6079
+ {
6080
+ value: {
6081
+ roughness,
6082
+ seed: resolvedSeed,
6083
+ sketchColor,
6084
+ bowing,
6085
+ fillStyle,
6086
+ strokeWidth,
6087
+ resolvedSeed,
6088
+ ink,
6089
+ animate
6090
+ },
6091
+ children: /* @__PURE__ */ jsx(HoverCardPrimitive.Root, { ...rest, children })
6092
+ }
6093
+ );
6094
+ }
6095
+ var HoverCardTrigger = HoverCardPrimitive.Trigger;
6096
+ var HoverCardContent = forwardRef(function HoverCardContent2({ className, style, children, sideOffset = 6, align = "center", ...rest }, ref) {
6097
+ const sketch = useHoverCardSketch();
6098
+ return /* @__PURE__ */ jsx(HoverCardPrimitive.Portal, { children: /* @__PURE__ */ jsx(
6099
+ HoverCardPrimitive.Content,
6100
+ {
6101
+ ref,
6102
+ sideOffset,
6103
+ align,
6104
+ className: cn(className),
6105
+ style: { zIndex: 75, outline: "none", ...style },
6106
+ ...rest,
6107
+ children: /* @__PURE__ */ jsx(
6108
+ SketchBox,
6109
+ {
6110
+ roughness: sketch.roughness,
6111
+ seed: sketch.resolvedSeed,
6112
+ sketchColor: sketch.ink,
6113
+ bowing: sketch.bowing,
6114
+ fillStyle: sketch.fillStyle ?? "solid",
6115
+ fill: "#f7f6f2",
6116
+ strokeWidth: sketch.strokeWidth ?? 1.5,
6117
+ shadow: true,
6118
+ animate: sketch.animate,
6119
+ contentStyle: { padding: 14, maxWidth: 320, fontSize: 14 },
6120
+ children
6121
+ }
6122
+ )
6123
+ }
6124
+ ) });
6125
+ });
6126
+ var HoverCardArrow = HoverCardPrimitive.Arrow;
6127
+ var ContextMenuSketchContext = createContext(null);
6128
+ function useContextMenuSketch() {
6129
+ const ctx = useContext(ContextMenuSketchContext);
6130
+ if (!ctx) {
6131
+ throw new Error(
6132
+ "ContextMenu parts must be used inside <ContextMenu>."
6133
+ );
6134
+ }
6135
+ return ctx;
6136
+ }
6137
+ function ContextMenu({
6138
+ children,
6139
+ roughness,
6140
+ seed,
6141
+ sketchColor,
6142
+ bowing,
6143
+ fillStyle,
6144
+ strokeWidth,
6145
+ animate,
6146
+ ...rest
6147
+ }) {
6148
+ const resolvedSeed = useResolvedSeed(seed);
6149
+ const ink = sketchColor ?? SKETCH_COLORS.ink;
6150
+ return /* @__PURE__ */ jsx(
6151
+ ContextMenuSketchContext.Provider,
6152
+ {
6153
+ value: {
6154
+ roughness,
6155
+ seed: resolvedSeed,
6156
+ sketchColor,
6157
+ bowing,
6158
+ fillStyle,
6159
+ strokeWidth,
6160
+ resolvedSeed,
6161
+ ink,
6162
+ animate
6163
+ },
6164
+ children: /* @__PURE__ */ jsx(ContextMenuPrimitive.Root, { ...rest, children })
6165
+ }
6166
+ );
6167
+ }
6168
+ var ContextMenuTrigger = ContextMenuPrimitive.Trigger;
6169
+ var ContextMenuGroup = ContextMenuPrimitive.Group;
6170
+ var ContextMenuRadioGroup = ContextMenuPrimitive.RadioGroup;
6171
+ var ContextMenuSub = ContextMenuPrimitive.Sub;
6172
+ var ContextMenuContent = forwardRef(function ContextMenuContent2({ className, style, children, ...rest }, ref) {
6173
+ const sketch = useContextMenuSketch();
6174
+ return /* @__PURE__ */ jsx(ContextMenuPrimitive.Portal, { children: /* @__PURE__ */ jsx(
6175
+ ContextMenuPrimitive.Content,
6176
+ {
6177
+ ref,
6178
+ className: cn(className),
6179
+ style: { zIndex: 80, outline: "none", minWidth: 180, ...style },
6180
+ ...rest,
6181
+ children: /* @__PURE__ */ jsx(
6182
+ SketchBox,
6183
+ {
6184
+ roughness: sketch.roughness,
6185
+ seed: sketch.resolvedSeed,
6186
+ sketchColor: sketch.ink,
6187
+ bowing: sketch.bowing,
6188
+ fillStyle: sketch.fillStyle ?? "solid",
6189
+ fill: "#f7f6f2",
6190
+ strokeWidth: sketch.strokeWidth ?? 1.5,
6191
+ shadow: true,
6192
+ animate: sketch.animate,
6193
+ contentStyle: { padding: "6px 4px" },
6194
+ children
6195
+ }
6196
+ )
6197
+ }
6198
+ ) });
6199
+ });
6200
+ function useMark2(highlighted) {
6201
+ const sketch = useContextMenuSketch();
6202
+ return { sketch, mark: highlighted };
6203
+ }
6204
+ var ContextMenuItem = forwardRef(function ContextMenuItem2({ className, style, children, inset, ...rest }, ref) {
6205
+ const [highlighted, setHighlighted] = useState(false);
6206
+ const { sketch, mark } = useMark2(highlighted);
6207
+ return /* @__PURE__ */ jsxs(
6208
+ ContextMenuPrimitive.Item,
6209
+ {
6210
+ ref,
6211
+ className: cn(className),
6212
+ onPointerMove: () => setHighlighted(true),
6213
+ onPointerLeave: () => setHighlighted(false),
6214
+ onFocus: () => setHighlighted(true),
6215
+ onBlur: () => setHighlighted(false),
6216
+ style: {
6217
+ position: "relative",
6218
+ display: "flex",
6219
+ alignItems: "center",
6220
+ gap: 8,
6221
+ padding: inset ? "7px 12px 7px 26px" : "7px 12px",
6222
+ fontFamily: doodleUiFontFamily,
6223
+ fontSize: 14,
6224
+ color: sketch.ink,
6225
+ outline: "none",
6226
+ cursor: "pointer",
6227
+ userSelect: "none",
6228
+ ...style
6229
+ },
6230
+ ...rest,
6231
+ children: [
6232
+ mark ? /* @__PURE__ */ jsx(
6233
+ RoughSvg,
6234
+ {
6235
+ shape: "line",
6236
+ roughness: (sketch.roughness ?? 1.5) + 0.4,
6237
+ seed: sketch.resolvedSeed,
6238
+ sketchColor: sketch.ink,
6239
+ bowing: sketch.bowing ?? 1.6,
6240
+ strokeWidth: 1.3,
6241
+ inset: 4,
6242
+ style: { opacity: 0.4 }
6243
+ }
6244
+ ) : null,
6245
+ /* @__PURE__ */ jsx("span", { style: { position: "relative", zIndex: 1 }, children })
6246
+ ]
6247
+ }
6248
+ );
6249
+ });
6250
+ var CHECK_PATH3 = "M 2 6 L 5 9 L 10 3";
6251
+ var ContextMenuCheckboxItem = forwardRef(function ContextMenuCheckboxItem2({ className, style, children, checked, ...rest }, ref) {
6252
+ const [highlighted, setHighlighted] = useState(false);
6253
+ const { sketch, mark } = useMark2(highlighted);
6254
+ return /* @__PURE__ */ jsxs(
6255
+ ContextMenuPrimitive.CheckboxItem,
6256
+ {
6257
+ ref,
6258
+ checked,
6259
+ className: cn(className),
6260
+ onPointerMove: () => setHighlighted(true),
6261
+ onPointerLeave: () => setHighlighted(false),
6262
+ style: {
6263
+ position: "relative",
6264
+ display: "flex",
6265
+ alignItems: "center",
6266
+ gap: 8,
6267
+ padding: "7px 12px 7px 26px",
6268
+ fontFamily: doodleUiFontFamily,
6269
+ fontSize: 14,
6270
+ color: sketch.ink,
6271
+ outline: "none",
6272
+ cursor: "pointer",
6273
+ userSelect: "none",
6274
+ ...style
6275
+ },
6276
+ ...rest,
6277
+ children: [
6278
+ mark ? /* @__PURE__ */ jsx(
6279
+ RoughSvg,
6280
+ {
6281
+ shape: "line",
6282
+ roughness: (sketch.roughness ?? 1.5) + 0.4,
6283
+ seed: sketch.resolvedSeed,
6284
+ sketchColor: sketch.ink,
6285
+ bowing: sketch.bowing ?? 1.6,
6286
+ strokeWidth: 1.3,
6287
+ inset: 4,
6288
+ style: { opacity: 0.4 }
6289
+ }
6290
+ ) : null,
6291
+ /* @__PURE__ */ jsx(
6292
+ "span",
6293
+ {
6294
+ style: {
6295
+ position: "relative",
6296
+ width: 12,
6297
+ height: 12,
6298
+ flexShrink: 0,
6299
+ marginLeft: -18
6300
+ },
6301
+ children: /* @__PURE__ */ jsx(ContextMenuPrimitive.ItemIndicator, { children: /* @__PURE__ */ jsx(
6302
+ RoughSvg,
6303
+ {
6304
+ shape: "path",
6305
+ path: CHECK_PATH3,
6306
+ roughness: (sketch.roughness ?? 1.5) * 0.7,
6307
+ seed: deriveSeed(sketch.resolvedSeed, "checkbox-mark"),
6308
+ sketchColor: SKETCH_COLORS.accent,
6309
+ bowing: sketch.bowing,
6310
+ strokeWidth: 1.6,
6311
+ inset: 0
6312
+ }
6313
+ ) })
6314
+ }
6315
+ ),
6316
+ /* @__PURE__ */ jsx("span", { style: { position: "relative", zIndex: 1 }, children })
6317
+ ]
6318
+ }
6319
+ );
6320
+ });
6321
+ var ContextMenuRadioItem = forwardRef(function ContextMenuRadioItem2({ className, style, children, ...rest }, ref) {
6322
+ const [highlighted, setHighlighted] = useState(false);
6323
+ const { sketch, mark } = useMark2(highlighted);
6324
+ return /* @__PURE__ */ jsxs(
6325
+ ContextMenuPrimitive.RadioItem,
6326
+ {
6327
+ ref,
6328
+ className: cn(className),
6329
+ onPointerMove: () => setHighlighted(true),
6330
+ onPointerLeave: () => setHighlighted(false),
6331
+ style: {
6332
+ position: "relative",
6333
+ display: "flex",
6334
+ alignItems: "center",
6335
+ gap: 8,
6336
+ padding: "7px 12px 7px 26px",
6337
+ fontFamily: doodleUiFontFamily,
6338
+ fontSize: 14,
6339
+ color: sketch.ink,
6340
+ outline: "none",
6341
+ cursor: "pointer",
6342
+ userSelect: "none",
6343
+ ...style
6344
+ },
6345
+ ...rest,
6346
+ children: [
6347
+ mark ? /* @__PURE__ */ jsx(
6348
+ RoughSvg,
6349
+ {
6350
+ shape: "line",
6351
+ roughness: (sketch.roughness ?? 1.5) + 0.4,
6352
+ seed: sketch.resolvedSeed,
6353
+ sketchColor: sketch.ink,
6354
+ bowing: sketch.bowing ?? 1.6,
6355
+ strokeWidth: 1.3,
6356
+ inset: 4,
6357
+ style: { opacity: 0.4 }
6358
+ }
6359
+ ) : null,
6360
+ /* @__PURE__ */ jsx(
6361
+ "span",
6362
+ {
6363
+ style: {
6364
+ position: "relative",
6365
+ width: 8,
6366
+ height: 8,
6367
+ flexShrink: 0,
6368
+ marginLeft: -18
6369
+ },
6370
+ children: /* @__PURE__ */ jsx(ContextMenuPrimitive.ItemIndicator, { children: /* @__PURE__ */ jsx(
6371
+ RoughSvg,
6372
+ {
6373
+ shape: "ellipse",
6374
+ roughness: (sketch.roughness ?? 1.5) * 0.8,
6375
+ seed: deriveSeed(sketch.resolvedSeed, "radio-mark"),
6376
+ sketchColor: SKETCH_COLORS.accent,
6377
+ bowing: sketch.bowing,
6378
+ fillStyle: "solid",
6379
+ fill: SKETCH_COLORS.accent,
6380
+ strokeWidth: 1.2,
6381
+ inset: 0
6382
+ }
6383
+ ) })
6384
+ }
6385
+ ),
6386
+ /* @__PURE__ */ jsx("span", { style: { position: "relative", zIndex: 1 }, children })
6387
+ ]
6388
+ }
6389
+ );
6390
+ });
6391
+ var ContextMenuLabel = forwardRef(function ContextMenuLabel2({ className, style, children, ...rest }, ref) {
6392
+ const sketch = useContextMenuSketch();
6393
+ return /* @__PURE__ */ jsx(
6394
+ ContextMenuPrimitive.Label,
6395
+ {
6396
+ ref,
6397
+ className: cn(className),
6398
+ style: {
6399
+ padding: "6px 12px",
6400
+ fontFamily: doodleUiFontFamily,
6401
+ fontSize: 12,
6402
+ fontWeight: 700,
6403
+ color: sketch.ink,
6404
+ opacity: 0.6,
6405
+ textTransform: "uppercase",
6406
+ letterSpacing: 0.4,
6407
+ ...style
6408
+ },
6409
+ ...rest,
6410
+ children
6411
+ }
6412
+ );
6413
+ });
6414
+ var ContextMenuSeparator = forwardRef(function ContextMenuSeparator2({ className, style, ...rest }, ref) {
6415
+ const sketch = useContextMenuSketch();
6416
+ return /* @__PURE__ */ jsx(
6417
+ ContextMenuPrimitive.Separator,
6418
+ {
6419
+ ref,
6420
+ className: cn(className),
6421
+ style: { position: "relative", height: 10, margin: "2px 0", ...style },
6422
+ ...rest,
6423
+ children: /* @__PURE__ */ jsx(
6424
+ RoughSvg,
6425
+ {
6426
+ shape: "line",
6427
+ roughness: (sketch.roughness ?? 1.5) + 0.2,
6428
+ seed: deriveSeed(sketch.resolvedSeed, "separator"),
6429
+ sketchColor: sketch.ink,
6430
+ bowing: sketch.bowing ?? 1.8,
6431
+ strokeWidth: 1.2,
6432
+ inset: 6,
6433
+ style: { opacity: 0.5 }
6434
+ }
6435
+ )
6436
+ }
6437
+ );
6438
+ });
6439
+ var NavigationMenuSketchContext = createContext(null);
6440
+ function useNavigationMenuSketch() {
6441
+ const ctx = useContext(NavigationMenuSketchContext);
6442
+ if (!ctx) {
6443
+ throw new Error("NavigationMenu parts must be used inside <NavigationMenu>.");
6444
+ }
6445
+ return ctx;
6446
+ }
6447
+ function NavigationMenu({
6448
+ children,
6449
+ roughness,
6450
+ seed,
6451
+ sketchColor,
6452
+ bowing,
6453
+ fillStyle,
6454
+ strokeWidth,
6455
+ animate,
6456
+ ...rest
6457
+ }) {
6458
+ const resolvedSeed = useResolvedSeed(seed);
6459
+ const ink = sketchColor ?? SKETCH_COLORS.ink;
6460
+ return /* @__PURE__ */ jsx(
6461
+ NavigationMenuSketchContext.Provider,
6462
+ {
6463
+ value: {
6464
+ roughness,
6465
+ seed: resolvedSeed,
6466
+ sketchColor,
6467
+ bowing,
6468
+ fillStyle,
6469
+ strokeWidth,
6470
+ resolvedSeed,
6471
+ ink,
6472
+ animate
6473
+ },
6474
+ children: /* @__PURE__ */ jsxs(NavigationMenuPrimitive.Root, { ...rest, children: [
6475
+ children,
6476
+ /* @__PURE__ */ jsx(NavigationMenuViewport, {})
6477
+ ] })
6478
+ }
6479
+ );
6480
+ }
6481
+ var NavigationMenuList = forwardRef(function NavigationMenuList2({ className, style, ...rest }, ref) {
6482
+ return /* @__PURE__ */ jsx(
6483
+ NavigationMenuPrimitive.List,
6484
+ {
6485
+ ref,
6486
+ className: cn(className),
6487
+ style: {
6488
+ display: "flex",
6489
+ alignItems: "center",
6490
+ gap: 4,
6491
+ listStyle: "none",
6492
+ margin: 0,
6493
+ padding: 0,
6494
+ ...style
6495
+ },
6496
+ ...rest
6497
+ }
6498
+ );
6499
+ });
6500
+ var NavigationMenuItem = NavigationMenuPrimitive.Item;
6501
+ var NavigationMenuTrigger = forwardRef(function NavigationMenuTrigger2({ className, style, children, ...rest }, ref) {
6502
+ const sketch = useNavigationMenuSketch();
6503
+ return /* @__PURE__ */ jsx(
6504
+ NavigationMenuPrimitive.Trigger,
6505
+ {
6506
+ ref,
6507
+ className: cn(className),
6508
+ style: {
6509
+ position: "relative",
6510
+ border: "none",
6511
+ background: "transparent",
6512
+ fontFamily: doodleUiFontFamily,
6513
+ fontWeight: doodleUiFontWeight(600),
6514
+ fontSize: 14,
6515
+ color: sketch.ink,
6516
+ padding: "8px 12px",
6517
+ cursor: "pointer",
6518
+ outline: "none",
6519
+ ...style
6520
+ },
6521
+ ...rest,
6522
+ children
6523
+ }
6524
+ );
6525
+ });
6526
+ var NavigationMenuContent = forwardRef(function NavigationMenuContent2({ className, style, children, ...rest }, ref) {
6527
+ const sketch = useNavigationMenuSketch();
6528
+ return /* @__PURE__ */ jsx(
6529
+ NavigationMenuPrimitive.Content,
6530
+ {
6531
+ ref,
6532
+ className: cn(className),
6533
+ style: { outline: "none", ...style },
6534
+ ...rest,
6535
+ children: /* @__PURE__ */ jsx(
6536
+ SketchBox,
6537
+ {
6538
+ roughness: sketch.roughness,
6539
+ seed: sketch.resolvedSeed,
6540
+ sketchColor: sketch.ink,
6541
+ bowing: sketch.bowing,
6542
+ fillStyle: sketch.fillStyle ?? "solid",
6543
+ fill: "#f7f6f2",
6544
+ strokeWidth: sketch.strokeWidth ?? 1.5,
6545
+ shadow: true,
6546
+ animate: sketch.animate,
6547
+ contentStyle: { padding: 12, minWidth: 200 },
6548
+ children
6549
+ }
6550
+ )
6551
+ }
6552
+ );
6553
+ });
6554
+ var NavigationMenuLink = NavigationMenuPrimitive.Link;
6555
+ var NavigationMenuViewport = forwardRef(function NavigationMenuViewport2({ className, style, ...rest }, ref) {
6556
+ return /* @__PURE__ */ jsx("div", { style: { position: "absolute", top: "100%", left: 0, perspective: 2e3 }, children: /* @__PURE__ */ jsx(
6557
+ NavigationMenuPrimitive.Viewport,
6558
+ {
6559
+ ref,
6560
+ className: cn(className),
6561
+ style: {
6562
+ position: "relative",
6563
+ marginTop: 6,
6564
+ overflow: "hidden",
6565
+ ...style
6566
+ },
6567
+ ...rest
6568
+ }
6569
+ ) });
6570
+ });
6571
+ var NavigationMenuIndicator = forwardRef(function NavigationMenuIndicator2({ className, style, ...rest }, ref) {
6572
+ const sketch = useNavigationMenuSketch();
6573
+ return /* @__PURE__ */ jsx(
6574
+ NavigationMenuPrimitive.Indicator,
6575
+ {
6576
+ ref,
6577
+ className: cn(className),
6578
+ style: { position: "relative", height: 6, ...style },
6579
+ ...rest,
6580
+ children: /* @__PURE__ */ jsx(
6581
+ RoughSvg,
6582
+ {
6583
+ shape: "line",
6584
+ roughness: (sketch.roughness ?? 1.5) + 0.2,
6585
+ seed: deriveSeed(sketch.resolvedSeed, "nav-indicator"),
6586
+ sketchColor: sketch.ink,
6587
+ strokeWidth: 2,
6588
+ inset: 2
6589
+ }
6590
+ )
6591
+ }
6592
+ );
6593
+ });
6594
+ var NavigationMenuItemLink = forwardRef(function NavigationMenuItemLink2({ className, style, active, children, ...rest }, ref) {
6595
+ const sketch = useNavigationMenuSketch();
6596
+ const [hovered, setHovered] = useState(false);
6597
+ const showMark = active || hovered;
6598
+ return /* @__PURE__ */ jsxs(
6599
+ NavigationMenuPrimitive.Link,
6600
+ {
6601
+ ref,
6602
+ className: cn(className),
6603
+ onPointerEnter: () => setHovered(true),
6604
+ onPointerLeave: () => setHovered(false),
6605
+ style: {
6606
+ position: "relative",
6607
+ display: "inline-flex",
6608
+ padding: "8px 12px",
6609
+ fontFamily: doodleUiFontFamily,
6610
+ fontSize: 14,
6611
+ color: sketch.ink,
6612
+ textDecoration: "none",
6613
+ outline: "none",
6614
+ ...style
6615
+ },
6616
+ ...rest,
6617
+ children: [
6618
+ showMark ? /* @__PURE__ */ jsx(
6619
+ RoughSvg,
6620
+ {
6621
+ shape: "line",
6622
+ roughness: (sketch.roughness ?? 1.5) + 0.3,
6623
+ seed: deriveSeed(sketch.resolvedSeed, "nav-link"),
6624
+ sketchColor: sketch.ink,
6625
+ strokeWidth: 1.4,
6626
+ inset: 4,
6627
+ style: { opacity: 0.35 }
6628
+ }
6629
+ ) : null,
6630
+ /* @__PURE__ */ jsx("span", { style: { position: "relative", zIndex: 1 }, children })
6631
+ ]
6632
+ }
6633
+ );
6634
+ });
6635
+ var MenubarSketchContext = createContext(
6636
+ null
6637
+ );
6638
+ function useMenubarSketch() {
6639
+ const ctx = useContext(MenubarSketchContext);
6640
+ if (!ctx) {
6641
+ throw new Error("Menubar parts must be used inside <Menubar>.");
6642
+ }
6643
+ return ctx;
6644
+ }
6645
+ function Menubar({
6646
+ children,
6647
+ className,
6648
+ style,
6649
+ roughness,
6650
+ seed,
6651
+ sketchColor,
6652
+ bowing,
6653
+ fillStyle,
6654
+ strokeWidth,
6655
+ animate,
6656
+ ...rest
6657
+ }) {
6658
+ const resolvedSeed = useResolvedSeed(seed);
6659
+ const ink = sketchColor ?? SKETCH_COLORS.ink;
6660
+ return /* @__PURE__ */ jsx(
6661
+ MenubarSketchContext.Provider,
6662
+ {
6663
+ value: {
6664
+ roughness,
6665
+ seed: resolvedSeed,
6666
+ sketchColor,
6667
+ bowing,
6668
+ fillStyle,
6669
+ strokeWidth,
6670
+ resolvedSeed,
6671
+ ink,
6672
+ animate
6673
+ },
6674
+ children: /* @__PURE__ */ jsx(
6675
+ MenubarPrimitive.Root,
6676
+ {
6677
+ className: cn(className),
6678
+ style: {
6679
+ display: "inline-flex",
6680
+ alignItems: "center",
6681
+ gap: 4,
6682
+ padding: 4,
6683
+ ...style
6684
+ },
6685
+ ...rest,
6686
+ children
6687
+ }
6688
+ )
6689
+ }
6690
+ );
6691
+ }
6692
+ var MenubarMenu = MenubarPrimitive.Menu;
6693
+ var MenubarTrigger = forwardRef(function MenubarTrigger2({ className, style, children, ...rest }, ref) {
6694
+ const sketch = useMenubarSketch();
6695
+ return /* @__PURE__ */ jsx(
6696
+ MenubarPrimitive.Trigger,
6697
+ {
6698
+ ref,
6699
+ className: cn(className),
6700
+ style: {
6701
+ border: "none",
6702
+ background: "transparent",
6703
+ fontFamily: doodleUiFontFamily,
6704
+ fontSize: 14,
6705
+ padding: "6px 10px",
6706
+ cursor: "pointer",
6707
+ color: sketch.ink,
6708
+ outline: "none",
6709
+ ...style
6710
+ },
6711
+ ...rest,
6712
+ children
6713
+ }
6714
+ );
6715
+ });
6716
+ var MenubarContent = forwardRef(function MenubarContent2({ className, style, children, align = "start", sideOffset = 6, ...rest }, ref) {
6717
+ const sketch = useMenubarSketch();
6718
+ return /* @__PURE__ */ jsx(MenubarPrimitive.Portal, { children: /* @__PURE__ */ jsx(
6719
+ MenubarPrimitive.Content,
6720
+ {
6721
+ ref,
6722
+ align,
6723
+ sideOffset,
6724
+ className: cn(className),
6725
+ style: { zIndex: 80, outline: "none", minWidth: 180, ...style },
6726
+ ...rest,
6727
+ children: /* @__PURE__ */ jsx(
6728
+ SketchBox,
6729
+ {
6730
+ roughness: sketch.roughness,
6731
+ seed: sketch.resolvedSeed,
6732
+ sketchColor: sketch.ink,
6733
+ bowing: sketch.bowing,
6734
+ fillStyle: sketch.fillStyle ?? "solid",
6735
+ fill: "#f7f6f2",
6736
+ strokeWidth: sketch.strokeWidth ?? 1.5,
6737
+ shadow: true,
6738
+ animate: sketch.animate,
6739
+ contentStyle: { padding: "6px 4px" },
6740
+ children
6741
+ }
6742
+ )
6743
+ }
6744
+ ) });
6745
+ });
6746
+ function useMark3(highlighted) {
6747
+ const sketch = useMenubarSketch();
6748
+ return { sketch, mark: highlighted };
6749
+ }
6750
+ var MenubarItem = forwardRef(function MenubarItem2({ className, style, children, ...rest }, ref) {
6751
+ const [highlighted, setHighlighted] = useState(false);
6752
+ const { sketch, mark } = useMark3(highlighted);
6753
+ return /* @__PURE__ */ jsxs(
6754
+ MenubarPrimitive.Item,
6755
+ {
6756
+ ref,
6757
+ className: cn(className),
6758
+ onPointerMove: () => setHighlighted(true),
6759
+ onPointerLeave: () => setHighlighted(false),
6760
+ style: {
6761
+ position: "relative",
6762
+ display: "flex",
6763
+ alignItems: "center",
6764
+ gap: 8,
6765
+ padding: "7px 12px",
6766
+ fontFamily: doodleUiFontFamily,
6767
+ fontSize: 14,
6768
+ color: sketch.ink,
6769
+ outline: "none",
6770
+ cursor: "pointer",
6771
+ userSelect: "none",
6772
+ ...style
6773
+ },
6774
+ ...rest,
6775
+ children: [
6776
+ mark ? /* @__PURE__ */ jsx(
6777
+ RoughSvg,
6778
+ {
6779
+ shape: "line",
6780
+ roughness: (sketch.roughness ?? 1.5) + 0.4,
6781
+ seed: sketch.resolvedSeed,
6782
+ sketchColor: sketch.ink,
6783
+ bowing: sketch.bowing ?? 1.6,
6784
+ strokeWidth: 1.3,
6785
+ inset: 4,
6786
+ style: { opacity: 0.4 }
6787
+ }
6788
+ ) : null,
6789
+ /* @__PURE__ */ jsx("span", { style: { position: "relative", zIndex: 1 }, children })
6790
+ ]
6791
+ }
6792
+ );
6793
+ });
6794
+ var MenubarSeparator = forwardRef(function MenubarSeparator2({ className, style, ...rest }, ref) {
6795
+ const sketch = useMenubarSketch();
6796
+ return /* @__PURE__ */ jsx(
6797
+ MenubarPrimitive.Separator,
6798
+ {
6799
+ ref,
6800
+ className: cn(className),
6801
+ style: { position: "relative", height: 10, margin: "2px 0", ...style },
6802
+ ...rest,
6803
+ children: /* @__PURE__ */ jsx(
6804
+ RoughSvg,
6805
+ {
6806
+ shape: "line",
6807
+ roughness: (sketch.roughness ?? 1.5) + 0.2,
6808
+ seed: deriveSeed(sketch.resolvedSeed, "separator"),
6809
+ sketchColor: sketch.ink,
6810
+ bowing: sketch.bowing ?? 1.8,
6811
+ strokeWidth: 1.2,
6812
+ inset: 6,
6813
+ style: { opacity: 0.5 }
6814
+ }
6815
+ )
6816
+ }
6817
+ );
6818
+ });
6819
+ var MenubarLabel = forwardRef(function MenubarLabel2({ className, style, children, ...rest }, ref) {
6820
+ const sketch = useMenubarSketch();
6821
+ return /* @__PURE__ */ jsx(
6822
+ MenubarPrimitive.Label,
6823
+ {
6824
+ ref,
6825
+ className: cn(className),
6826
+ style: {
6827
+ padding: "6px 12px",
6828
+ fontFamily: doodleUiFontFamily,
6829
+ fontSize: 12,
6830
+ fontWeight: 700,
6831
+ color: sketch.ink,
6832
+ opacity: 0.6,
6833
+ ...style
6834
+ },
6835
+ ...rest,
6836
+ children
6837
+ }
6838
+ );
6839
+ });
6840
+ var MenubarShortcut = forwardRef(function MenubarShortcut2({ className, style, children, ...rest }, ref) {
6841
+ return /* @__PURE__ */ jsx(
6842
+ "span",
6843
+ {
6844
+ ref,
6845
+ className: cn(className),
6846
+ style: {
6847
+ marginLeft: "auto",
6848
+ fontSize: 12,
6849
+ opacity: 0.55,
6850
+ letterSpacing: 0.04,
6851
+ ...style
6852
+ },
6853
+ ...rest,
6854
+ children
6855
+ }
6856
+ );
6857
+ });
6858
+ var MenubarSub = MenubarPrimitive.Sub;
6859
+ var MenubarSubTrigger = MenubarPrimitive.SubTrigger;
6860
+ var MenubarSubContent = MenubarPrimitive.SubContent;
6861
+ var MenubarCheckboxItem = MenubarPrimitive.CheckboxItem;
6862
+ var MenubarRadioGroup = MenubarPrimitive.RadioGroup;
6863
+ var MenubarRadioItem = MenubarPrimitive.RadioItem;
6864
+ var SlidingPanelSketchContext = createContext(null);
6865
+ function useSlidingPanelSketch() {
6866
+ const ctx = useContext(SlidingPanelSketchContext);
6867
+ if (!ctx) {
6868
+ throw new Error("Sliding panel parts must be used inside the panel root.");
6869
+ }
6870
+ return ctx;
6871
+ }
6872
+ function SlidingPanelRoot({
6873
+ children,
6874
+ open,
6875
+ defaultOpen,
6876
+ onOpenChange,
6877
+ side = "right",
6878
+ roughness,
6879
+ seed,
6880
+ sketchColor,
6881
+ bowing,
6882
+ fillStyle,
6883
+ strokeWidth,
6884
+ animate,
6885
+ ...rest
6886
+ }) {
6887
+ const resolvedSeed = useResolvedSeed(seed);
6888
+ const ink = sketchColor ?? SKETCH_COLORS.ink;
6889
+ const [uncontrolled, setUncontrolled] = useState(defaultOpen === true);
6890
+ const isOpen = open ?? uncontrolled;
6891
+ return /* @__PURE__ */ jsx(
6892
+ SlidingPanelSketchContext.Provider,
6893
+ {
6894
+ value: {
6895
+ roughness,
6896
+ seed: resolvedSeed,
6897
+ sketchColor,
6898
+ bowing,
6899
+ fillStyle,
6900
+ strokeWidth,
6901
+ resolvedSeed,
6902
+ ink,
6903
+ animate,
6904
+ open: isOpen,
6905
+ side
6906
+ },
6907
+ children: /* @__PURE__ */ jsx(
6908
+ Dialog.Root,
6909
+ {
6910
+ open: isOpen,
6911
+ onOpenChange: (next) => {
6912
+ setUncontrolled(next);
6913
+ onOpenChange?.(next);
6914
+ },
6915
+ ...rest,
6916
+ children
6917
+ }
6918
+ )
6919
+ }
6920
+ );
6921
+ }
6922
+ var SlidingPanelTrigger = Dialog.Trigger;
6923
+ var SlidingPanelClose = Dialog.Close;
6924
+ function slideVariants(side, shouldAnimate) {
6925
+ if (!shouldAnimate) {
6926
+ return { hidden: {}, visible: {} };
6927
+ }
6928
+ const offset = 420;
6929
+ const hidden = side === "left" ? { x: -offset } : side === "right" ? { x: offset } : side === "top" ? { y: -offset } : { y: offset };
6930
+ return {
6931
+ hidden: { ...hidden, opacity: 0.85 },
6932
+ visible: { x: 0, y: 0, opacity: 1 }
6933
+ };
6934
+ }
6935
+ function panelPosition(side) {
6936
+ switch (side) {
6937
+ case "left":
6938
+ return {
6939
+ top: 0,
6940
+ bottom: 0,
6941
+ left: 0,
6942
+ width: "min(420px, 100vw)"
6943
+ };
6944
+ case "right":
6945
+ return {
6946
+ top: 0,
6947
+ bottom: 0,
6948
+ right: 0,
6949
+ width: "min(420px, 100vw)"
6950
+ };
6951
+ case "top":
6952
+ return {
6953
+ top: 0,
6954
+ left: 0,
6955
+ right: 0,
6956
+ height: "min(420px, 90vh)"
6957
+ };
6958
+ default:
6959
+ return {
6960
+ bottom: 0,
6961
+ left: 0,
6962
+ right: 0,
6963
+ height: "min(420px, 90vh)"
6964
+ };
6965
+ }
6966
+ }
6967
+ var SlidingPanelOverlay = forwardRef(function SlidingPanelOverlay2({ style, ...rest }, ref) {
6968
+ const sketch = useSlidingPanelSketch();
6969
+ const shouldAnimate = useAnimate(sketch.animate);
6970
+ return /* @__PURE__ */ jsx(Dialog.Overlay, { ref, asChild: true, forceMount: true, ...rest, children: /* @__PURE__ */ jsx(
6971
+ motion.div,
6972
+ {
6973
+ initial: shouldAnimate ? { opacity: 0 } : false,
6974
+ animate: { opacity: 1 },
6975
+ exit: shouldAnimate ? { opacity: 0 } : void 0,
6976
+ transition: shouldAnimate ? { duration: 0.22, ease: "easeOut" } : { duration: 0 },
6977
+ style: {
6978
+ position: "fixed",
6979
+ inset: 0,
6980
+ background: "rgba(31, 29, 26, 0.38)",
6981
+ zIndex: 70,
6982
+ ...style
6983
+ }
6984
+ }
6985
+ ) });
6986
+ });
6987
+ var SlidingPanelContent = forwardRef(function SlidingPanelContent2({ className, style, contentStyle, children, chrome, ...rest }, ref) {
6988
+ const sketch = useSlidingPanelSketch();
6989
+ const shouldAnimate = useAnimate(sketch.animate);
6990
+ const variants = slideVariants(sketch.side, shouldAnimate);
6991
+ return /* @__PURE__ */ jsx(AnimatePresence, { children: sketch.open ? /* @__PURE__ */ jsxs(Dialog.Portal, { forceMount: true, children: [
6992
+ /* @__PURE__ */ jsx(SlidingPanelOverlay, {}),
6993
+ /* @__PURE__ */ jsx(Dialog.Content, { ref, asChild: true, forceMount: true, ...rest, children: /* @__PURE__ */ jsx(
6994
+ motion.div,
6995
+ {
6996
+ className: cn(className),
6997
+ initial: shouldAnimate ? "hidden" : false,
6998
+ animate: "visible",
6999
+ exit: shouldAnimate ? "hidden" : void 0,
7000
+ variants,
7001
+ transition: shouldAnimate ? { duration: 0.28, ease: "easeOut" } : { duration: 0 },
7002
+ style: {
7003
+ position: "fixed",
7004
+ zIndex: 80,
7005
+ outline: "none",
7006
+ pointerEvents: "auto",
7007
+ ...panelPosition(sketch.side),
7008
+ ...style
7009
+ },
7010
+ children: /* @__PURE__ */ jsxs(
7011
+ SketchBox,
7012
+ {
7013
+ roughness: sketch.roughness,
7014
+ seed: sketch.resolvedSeed,
7015
+ sketchColor: sketch.ink,
7016
+ bowing: sketch.bowing,
7017
+ fillStyle: sketch.fillStyle ?? "solid",
7018
+ fill: "#f7f6f2",
7019
+ strokeWidth: sketch.strokeWidth ?? 2,
7020
+ animate: sketch.animate,
7021
+ contentStyle: {
7022
+ padding: 20,
7023
+ height: "100%",
7024
+ boxSizing: "border-box",
7025
+ display: "flex",
7026
+ flexDirection: "column",
7027
+ ...contentStyle
7028
+ },
7029
+ style: { height: "100%" },
7030
+ children: [
7031
+ chrome,
7032
+ children
7033
+ ]
7034
+ }
7035
+ )
7036
+ }
7037
+ ) })
7038
+ ] }) : null });
7039
+ });
7040
+ function SlidingPanelHeader({
7041
+ children,
7042
+ className,
7043
+ style
7044
+ }) {
7045
+ return /* @__PURE__ */ jsx(
7046
+ "div",
7047
+ {
7048
+ className: cn(className),
7049
+ style: {
7050
+ display: "flex",
7051
+ flexDirection: "column",
7052
+ gap: 6,
7053
+ marginBottom: 12,
7054
+ ...style
7055
+ },
7056
+ children
7057
+ }
7058
+ );
7059
+ }
7060
+ function SlidingPanelFooter({
7061
+ children,
7062
+ className,
7063
+ style
7064
+ }) {
7065
+ return /* @__PURE__ */ jsx(
7066
+ "div",
7067
+ {
7068
+ className: cn(className),
7069
+ style: {
7070
+ display: "flex",
7071
+ gap: 8,
7072
+ marginTop: "auto",
7073
+ paddingTop: 12,
7074
+ ...style
7075
+ },
7076
+ children
7077
+ }
7078
+ );
7079
+ }
7080
+ var SlidingPanelTitle = forwardRef(function SlidingPanelTitle2({ className, style, ...rest }, ref) {
7081
+ const sketch = useSlidingPanelSketch();
7082
+ return /* @__PURE__ */ jsx(
7083
+ Dialog.Title,
7084
+ {
7085
+ ref,
7086
+ className: cn(className),
7087
+ style: {
7088
+ margin: 0,
7089
+ fontFamily: doodleUiFontFamily,
7090
+ fontWeight: doodleUiFontWeight(700),
7091
+ fontSize: 20,
7092
+ color: sketch.ink,
7093
+ ...style
7094
+ },
7095
+ ...rest
7096
+ }
7097
+ );
7098
+ });
7099
+ var SlidingPanelDescription = forwardRef(function SlidingPanelDescription2({ className, style, ...rest }, ref) {
7100
+ const sketch = useSlidingPanelSketch();
7101
+ return /* @__PURE__ */ jsx(
7102
+ Dialog.Description,
7103
+ {
7104
+ ref,
7105
+ className: cn(className),
7106
+ style: {
7107
+ margin: 0,
7108
+ fontFamily: doodleUiFontFamily,
7109
+ fontSize: 14,
7110
+ color: sketch.ink,
7111
+ opacity: 0.75,
7112
+ ...style
7113
+ },
7114
+ ...rest
7115
+ }
7116
+ );
7117
+ });
7118
+ function Sheet({ side = "right", ...rest }) {
7119
+ return /* @__PURE__ */ jsx(SlidingPanelRoot, { side, ...rest });
7120
+ }
7121
+ var SheetTrigger = SlidingPanelTrigger;
7122
+ var SheetClose = SlidingPanelClose;
7123
+ var SheetContent = forwardRef(
7124
+ function SheetContent2(props, ref) {
7125
+ return /* @__PURE__ */ jsx(SlidingPanelContent, { ref, ...props });
7126
+ }
7127
+ );
7128
+ var SheetHeader = SlidingPanelHeader;
7129
+ var SheetFooter = SlidingPanelFooter;
7130
+ var SheetTitle = SlidingPanelTitle;
7131
+ var SheetDescription = SlidingPanelDescription;
7132
+ function Drawer(props) {
7133
+ return /* @__PURE__ */ jsx(SlidingPanelRoot, { side: "bottom", ...props });
7134
+ }
7135
+ var DrawerTrigger = SlidingPanelTrigger;
7136
+ var DrawerClose = SlidingPanelClose;
7137
+ var DrawerHandle = forwardRef(
7138
+ function DrawerHandle2({ className }, ref) {
7139
+ const sketch = useSlidingPanelSketch();
7140
+ return /* @__PURE__ */ jsx(
7141
+ "div",
7142
+ {
7143
+ ref,
7144
+ className,
7145
+ style: {
7146
+ position: "relative",
7147
+ width: 48,
7148
+ height: 10,
7149
+ margin: "0 auto 12px"
7150
+ },
7151
+ "aria-hidden": true,
7152
+ children: /* @__PURE__ */ jsx(
7153
+ RoughSvg,
7154
+ {
7155
+ shape: "line",
7156
+ roughness: (sketch.roughness ?? 1.5) + 0.3,
7157
+ seed: deriveSeed(sketch.resolvedSeed, "drawer-handle"),
7158
+ sketchColor: sketch.sketchColor ?? SKETCH_COLORS.ink,
7159
+ bowing: sketch.bowing ?? 1.6,
7160
+ strokeWidth: 2.4,
7161
+ width: 48,
7162
+ height: 10,
7163
+ inset: 2
7164
+ }
7165
+ )
7166
+ }
7167
+ );
7168
+ }
7169
+ );
7170
+ var DrawerContent = forwardRef(
7171
+ function DrawerContent2({ children, ...rest }, ref) {
7172
+ return /* @__PURE__ */ jsx(
7173
+ SlidingPanelContent,
7174
+ {
7175
+ ref,
7176
+ chrome: /* @__PURE__ */ jsx(DrawerHandle, {}),
7177
+ contentStyle: { paddingTop: 8 },
7178
+ ...rest,
7179
+ children
7180
+ }
7181
+ );
7182
+ }
7183
+ );
7184
+ var DrawerHeader = SlidingPanelHeader;
7185
+ var DrawerFooter = SlidingPanelFooter;
7186
+ var DrawerTitle = SlidingPanelTitle;
7187
+ var DrawerDescription = SlidingPanelDescription;
7188
+ function AspectRatio({
7189
+ ratio = 16 / 9,
7190
+ bordered = false,
7191
+ className,
7192
+ style,
7193
+ children,
7194
+ roughness,
7195
+ seed,
7196
+ sketchColor,
7197
+ bowing,
7198
+ fillStyle,
7199
+ strokeWidth,
7200
+ animate
7201
+ }) {
7202
+ const inner = /* @__PURE__ */ jsx(
7203
+ AspectRatioPrimitive.Root,
7204
+ {
7205
+ ratio,
7206
+ className: cn(className),
7207
+ style: {
7208
+ width: "100%",
7209
+ overflow: "hidden",
7210
+ ...style
7211
+ },
7212
+ children: /* @__PURE__ */ jsx("div", { style: { width: "100%", height: "100%" }, children })
7213
+ }
7214
+ );
7215
+ if (!bordered) {
7216
+ return inner;
7217
+ }
7218
+ return /* @__PURE__ */ jsx(
7219
+ SketchBox,
7220
+ {
7221
+ className: cn(className),
7222
+ style: { width: "100%", ...style },
7223
+ contentStyle: { padding: 0, width: "100%" },
7224
+ fill: SKETCH_COLORS.paper,
7225
+ fillStyle: fillStyle ?? "hachure",
7226
+ roughness,
7227
+ seed,
7228
+ sketchColor,
7229
+ bowing,
7230
+ strokeWidth,
7231
+ animate,
7232
+ children: /* @__PURE__ */ jsx(AspectRatioPrimitive.Root, { ratio, style: { width: "100%" }, children: /* @__PURE__ */ jsx("div", { style: { width: "100%", height: "100%" }, children }) })
7233
+ }
7234
+ );
7235
+ }
7236
+ var CHEVRON_PATH6 = "M 4 6 L 10 12 L 16 6";
7237
+ var NativeSelect = forwardRef(
7238
+ function NativeSelect2({
7239
+ className,
7240
+ style,
7241
+ options,
7242
+ children,
7243
+ roughness,
7244
+ seed,
7245
+ sketchColor,
7246
+ bowing,
7247
+ fillStyle,
7248
+ strokeWidth,
7249
+ animate,
7250
+ disabled,
7251
+ ...rest
7252
+ }, ref) {
7253
+ const fieldRef = useRef(null);
7254
+ const shouldAnimate = useAnimate(animate);
7255
+ const resolvedSeed = useResolvedSeed(seed);
7256
+ const ink = sketchColor ?? SKETCH_COLORS.ink;
7257
+ useDrawIn(fieldRef, DRAW_IN_DURATION_MS, shouldAnimate);
7258
+ return /* @__PURE__ */ jsx(
7259
+ "span",
7260
+ {
7261
+ className: cn(className),
7262
+ style: {
7263
+ position: "relative",
7264
+ display: "block",
7265
+ width: "100%",
7266
+ opacity: disabled ? 0.6 : 1,
7267
+ ...style
7268
+ },
7269
+ children: /* @__PURE__ */ jsxs("span", { ref: fieldRef, style: { position: "relative", display: "block" }, children: [
7270
+ /* @__PURE__ */ jsx(
7271
+ RoughSvg,
7272
+ {
7273
+ shape: "rectangle",
7274
+ roughness,
7275
+ seed: resolvedSeed,
7276
+ sketchColor: ink,
7277
+ bowing,
7278
+ fillStyle,
7279
+ fill: SKETCH_COLORS.paper,
7280
+ strokeWidth
7281
+ }
7282
+ ),
7283
+ /* @__PURE__ */ jsx(
7284
+ "select",
7285
+ {
7286
+ ref,
7287
+ disabled,
7288
+ style: {
7289
+ position: "relative",
7290
+ zIndex: 1,
7291
+ width: "100%",
7292
+ border: "none",
7293
+ background: "transparent",
7294
+ padding: "10px 36px 10px 12px",
7295
+ fontFamily: doodleUiFontFamily,
7296
+ fontSize: 14,
7297
+ fontWeight: doodleUiFontWeight(500),
7298
+ color: ink,
7299
+ cursor: disabled ? "not-allowed" : "pointer",
7300
+ appearance: "none",
7301
+ WebkitAppearance: "none",
7302
+ MozAppearance: "none",
7303
+ outline: "none"
7304
+ },
7305
+ ...rest,
7306
+ children: options ? options.map((opt) => /* @__PURE__ */ jsx(
7307
+ "option",
7308
+ {
7309
+ value: opt.value,
7310
+ disabled: opt.disabled,
7311
+ children: opt.label
7312
+ },
7313
+ opt.value
7314
+ )) : children
7315
+ }
7316
+ ),
7317
+ /* @__PURE__ */ jsx(
7318
+ "span",
7319
+ {
7320
+ "aria-hidden": true,
7321
+ style: {
7322
+ position: "absolute",
7323
+ right: 10,
7324
+ top: "50%",
7325
+ transform: "translateY(-50%)",
7326
+ width: 20,
7327
+ height: 14,
7328
+ pointerEvents: "none",
7329
+ zIndex: 2
7330
+ },
7331
+ children: /* @__PURE__ */ jsx(
7332
+ RoughSvg,
7333
+ {
7334
+ shape: "path",
7335
+ path: CHEVRON_PATH6,
7336
+ roughness: (roughness ?? 1.5) * 0.85,
7337
+ seed: resolvedSeed,
7338
+ sketchColor: ink,
7339
+ bowing,
7340
+ strokeWidth: strokeWidth ?? 1.5
7341
+ }
7342
+ )
7343
+ }
7344
+ )
7345
+ ] })
7346
+ }
7347
+ );
7348
+ }
7349
+ );
7350
+ var EmptyContext = createContext(null);
7351
+ function useEmptyInk() {
7352
+ const ctx = useContext(EmptyContext);
7353
+ return ctx?.ink ?? SKETCH_COLORS.ink;
7354
+ }
7355
+ var emptyContentStyle = {
7356
+ display: "flex",
7357
+ flexDirection: "column",
7358
+ alignItems: "center",
7359
+ justifyContent: "center",
7360
+ textAlign: "center",
7361
+ gap: 12,
7362
+ padding: "32px 24px",
7363
+ minHeight: 160,
7364
+ width: "100%"
7365
+ };
7366
+ var Empty = forwardRef(function Empty2({
7367
+ className,
7368
+ style,
7369
+ children,
7370
+ bordered = true,
7371
+ roughness,
7372
+ seed,
7373
+ sketchColor,
7374
+ bowing,
7375
+ fillStyle,
7376
+ strokeWidth,
7377
+ animate,
7378
+ ...rest
7379
+ }, ref) {
7380
+ const ink = sketchColor ?? SKETCH_COLORS.ink;
7381
+ const inner = /* @__PURE__ */ jsx(EmptyContext.Provider, { value: { ink }, children: /* @__PURE__ */ jsx(
7382
+ "div",
7383
+ {
7384
+ ref: bordered ? void 0 : ref,
7385
+ className: cn(className),
7386
+ style: { ...emptyContentStyle, ...style },
7387
+ ...bordered ? {} : rest,
7388
+ children
7389
+ }
7390
+ ) });
7391
+ if (!bordered) {
7392
+ return inner;
7393
+ }
7394
+ return /* @__PURE__ */ jsx(
7395
+ SketchBox,
7396
+ {
7397
+ ref,
7398
+ className: cn(className),
7399
+ style: { width: "100%", ...style },
7400
+ contentStyle: emptyContentStyle,
7401
+ fill: SKETCH_COLORS.secondaryFill,
7402
+ fillStyle: fillStyle ?? "hachure",
7403
+ roughness,
7404
+ seed,
7405
+ sketchColor,
7406
+ bowing,
7407
+ strokeWidth,
7408
+ animate,
7409
+ ...rest,
7410
+ children: /* @__PURE__ */ jsx(EmptyContext.Provider, { value: { ink }, children })
7411
+ }
7412
+ );
7413
+ });
7414
+ function EmptyMedia({
7415
+ className,
7416
+ style,
7417
+ children
7418
+ }) {
7419
+ return /* @__PURE__ */ jsx(
7420
+ "div",
7421
+ {
7422
+ className: cn(className),
7423
+ style: {
7424
+ display: "flex",
7425
+ alignItems: "center",
7426
+ justifyContent: "center",
7427
+ marginBottom: 4,
7428
+ ...style
7429
+ },
7430
+ children
7431
+ }
7432
+ );
7433
+ }
7434
+ function EmptyTitle({
7435
+ className,
7436
+ style,
7437
+ children
7438
+ }) {
7439
+ const ink = useEmptyInk();
7440
+ return /* @__PURE__ */ jsx(
7441
+ "h3",
7442
+ {
7443
+ className: cn(className),
7444
+ style: {
7445
+ margin: 0,
7446
+ fontFamily: doodleUiFontFamily,
7447
+ fontSize: 18,
7448
+ fontWeight: doodleUiFontWeight(700),
7449
+ color: ink,
7450
+ ...style
7451
+ },
7452
+ children
7453
+ }
7454
+ );
7455
+ }
7456
+ function EmptyDescription({
7457
+ className,
7458
+ style,
7459
+ children
7460
+ }) {
7461
+ const ink = useEmptyInk();
7462
+ return /* @__PURE__ */ jsx(
7463
+ "p",
7464
+ {
7465
+ className: cn(className),
7466
+ style: {
7467
+ margin: 0,
7468
+ maxWidth: 360,
7469
+ fontFamily: doodleUiFontFamily,
7470
+ fontSize: 14,
7471
+ lineHeight: 1.5,
7472
+ color: ink,
7473
+ opacity: 0.85,
7474
+ ...style
7475
+ },
7476
+ children
7477
+ }
7478
+ );
7479
+ }
7480
+ function EmptyAction({
7481
+ className,
7482
+ style,
7483
+ children
7484
+ }) {
7485
+ return /* @__PURE__ */ jsx(
7486
+ "div",
7487
+ {
7488
+ className: cn(className),
7489
+ style: {
7490
+ display: "flex",
7491
+ flexWrap: "wrap",
7492
+ gap: 8,
7493
+ justifyContent: "center",
7494
+ marginTop: 8,
7495
+ ...style
7496
+ },
7497
+ children
7498
+ }
7499
+ );
7500
+ }
7501
+ var FieldContext = createContext(null);
7502
+ function useField() {
7503
+ const ctx = useContext(FieldContext);
7504
+ if (!ctx) {
7505
+ throw new Error("Field parts must be used inside <Field>.");
7506
+ }
7507
+ return ctx;
7508
+ }
7509
+ function Field({
7510
+ className,
7511
+ style,
7512
+ children,
7513
+ invalid = false,
7514
+ error,
7515
+ ...rest
7516
+ }) {
7517
+ const id = useId();
7518
+ const descriptionId = `${id}-description`;
7519
+ const errorId = `${id}-error`;
7520
+ const value = useMemo(
7521
+ () => ({
7522
+ id,
7523
+ descriptionId,
7524
+ errorId,
7525
+ invalid: invalid || Boolean(error),
7526
+ error
7527
+ }),
7528
+ [id, descriptionId, errorId, invalid, error]
7529
+ );
7530
+ return /* @__PURE__ */ jsx(FieldContext.Provider, { value, children: /* @__PURE__ */ jsx(
7531
+ "div",
7532
+ {
7533
+ className: cn(className),
7534
+ style: {
7535
+ display: "flex",
7536
+ flexDirection: "column",
7537
+ gap: 6,
7538
+ width: "100%",
7539
+ ...style
7540
+ },
7541
+ ...rest,
7542
+ children
7543
+ }
7544
+ ) });
7545
+ }
7546
+ function FieldLabel({ className, style, ...rest }) {
7547
+ const { id } = useField();
7548
+ return /* @__PURE__ */ jsx(Label2, { htmlFor: id, className, style, ...rest });
7549
+ }
7550
+ function FieldDescription({
7551
+ className,
7552
+ style,
7553
+ children,
7554
+ ...rest
7555
+ }) {
7556
+ const { descriptionId } = useField();
7557
+ return /* @__PURE__ */ jsx(
7558
+ "p",
7559
+ {
7560
+ id: descriptionId,
7561
+ className: cn(className),
7562
+ style: {
7563
+ margin: 0,
7564
+ fontFamily: doodleUiFontFamily,
7565
+ fontSize: 12,
7566
+ lineHeight: 1.45,
7567
+ color: SKETCH_COLORS.ink,
7568
+ opacity: 0.75,
7569
+ ...style
7570
+ },
7571
+ ...rest,
7572
+ children
7573
+ }
7574
+ );
7575
+ }
7576
+ function FieldError({
7577
+ className,
7578
+ style,
7579
+ children,
7580
+ ...rest
7581
+ }) {
7582
+ const { error, errorId } = useField();
7583
+ const message = children ?? error;
7584
+ if (!message) return null;
7585
+ return /* @__PURE__ */ jsx(
7586
+ "p",
7587
+ {
7588
+ id: errorId,
7589
+ role: "alert",
7590
+ className: cn(className),
7591
+ style: {
7592
+ margin: 0,
7593
+ fontFamily: doodleUiFontFamily,
7594
+ fontSize: 12,
7595
+ lineHeight: 1.45,
7596
+ color: SKETCH_COLORS.error,
7597
+ ...style
7598
+ },
7599
+ ...rest,
7600
+ children: message
7601
+ }
7602
+ );
7603
+ }
7604
+ function FieldControl({ children }) {
7605
+ const { id, descriptionId, errorId, invalid } = useField();
7606
+ const child = Children.only(children);
7607
+ if (!isValidElement(child)) {
7608
+ throw new Error("FieldControl expects a single React element child.");
7609
+ }
7610
+ const describedBy = [descriptionId, invalid ? errorId : null].filter(Boolean).join(" ");
7611
+ const props = child.props;
7612
+ return cloneElement(child, {
7613
+ id: props.id ?? id,
7614
+ "aria-describedby": props["aria-describedby"] ?? (describedBy.length > 0 ? describedBy : void 0),
7615
+ "aria-invalid": invalid ? true : props["aria-invalid"]
7616
+ });
7617
+ }
7618
+ var HEADING_SIZES = {
7619
+ 1: 32,
7620
+ 2: 26,
7621
+ 3: 22,
7622
+ 4: 18,
7623
+ 5: 16,
7624
+ 6: 14
7625
+ };
7626
+ var Heading = forwardRef(
7627
+ function Heading2({
7628
+ level = 2,
7629
+ accent = "none",
7630
+ className,
7631
+ style,
7632
+ children,
7633
+ roughness,
7634
+ seed,
7635
+ sketchColor,
7636
+ bowing,
7637
+ strokeWidth,
7638
+ animate,
7639
+ ...rest
7640
+ }, ref) {
7641
+ const Tag = `h${level}`;
7642
+ const ink = sketchColor ?? SKETCH_COLORS.ink;
7643
+ const resolvedSeed = useResolvedSeed(seed);
7644
+ const shouldAnimate = useAnimate(animate);
7645
+ const accentRef = useRef(null);
7646
+ useDrawIn(accentRef, DRAW_IN_MARK_MS, shouldAnimate && accent !== "none");
7647
+ const fontSize = HEADING_SIZES[level];
7648
+ return /* @__PURE__ */ jsxs(
7649
+ Tag,
7650
+ {
7651
+ ref,
7652
+ className: cn(className),
7653
+ style: {
7654
+ position: "relative",
7655
+ margin: 0,
7656
+ fontFamily: doodleUiFontFamily,
7657
+ fontSize,
7658
+ fontWeight: doodleUiFontWeight(700),
7659
+ color: ink,
7660
+ lineHeight: 1.2,
7661
+ ...style
7662
+ },
7663
+ ...rest,
7664
+ children: [
7665
+ accent === "highlight" ? /* @__PURE__ */ jsxs("span", { style: { position: "relative", display: "inline" }, children: [
7666
+ /* @__PURE__ */ jsx(
7667
+ "span",
7668
+ {
7669
+ ref: accentRef,
7670
+ "aria-hidden": true,
7671
+ style: {
7672
+ position: "absolute",
7673
+ left: -4,
7674
+ right: -4,
7675
+ bottom: 2,
7676
+ height: "0.45em",
7677
+ zIndex: 0
7678
+ },
7679
+ children: /* @__PURE__ */ jsx(
7680
+ RoughSvg,
7681
+ {
7682
+ shape: "rectangle",
7683
+ roughness,
7684
+ seed: resolvedSeed,
7685
+ sketchColor: SKETCH_COLORS.accent,
7686
+ fill: SKETCH_COLORS.accentFill,
7687
+ fillStyle: "solid",
7688
+ bowing,
7689
+ strokeWidth: strokeWidth ?? 1.2
7690
+ }
7691
+ )
7692
+ }
7693
+ ),
7694
+ /* @__PURE__ */ jsx("span", { style: { position: "relative", zIndex: 1 }, children })
7695
+ ] }) : children,
7696
+ accent === "underline" ? /* @__PURE__ */ jsx(
7697
+ "span",
7698
+ {
7699
+ ref: accentRef,
7700
+ "aria-hidden": true,
7701
+ style: {
7702
+ display: "block",
7703
+ position: "relative",
7704
+ height: 6,
7705
+ marginTop: 4,
7706
+ maxWidth: "100%"
7707
+ },
7708
+ children: /* @__PURE__ */ jsx(
7709
+ RoughSvg,
7710
+ {
7711
+ shape: "path",
7712
+ path: "M 2 4 Q 40 1 80 5 T 160 3",
7713
+ roughness,
7714
+ seed: resolvedSeed,
7715
+ sketchColor: ink,
7716
+ bowing,
7717
+ strokeWidth: strokeWidth ?? 1.5
7718
+ }
7719
+ )
7720
+ }
7721
+ ) : null
7722
+ ]
7723
+ }
7724
+ );
7725
+ }
7726
+ );
7727
+ var Text = forwardRef(function Text2({ variant = "body", className, style, children, ...rest }, ref) {
7728
+ const sizes = { body: 14, lead: 17, muted: 13 };
7729
+ const opacity = variant === "muted" ? 0.75 : 1;
7730
+ return /* @__PURE__ */ jsx(
7731
+ "p",
7732
+ {
7733
+ ref,
7734
+ className: cn(className),
7735
+ style: {
7736
+ margin: 0,
7737
+ fontFamily: doodleUiFontFamily,
7738
+ fontSize: sizes[variant],
7739
+ fontWeight: doodleUiFontWeight(variant === "lead" ? 500 : 400),
7740
+ lineHeight: 1.55,
7741
+ color: SKETCH_COLORS.ink,
7742
+ opacity,
7743
+ ...style
7744
+ },
7745
+ ...rest,
7746
+ children
7747
+ }
7748
+ );
7749
+ });
7750
+ var Paragraph = Text;
7751
+ var Blockquote = forwardRef(
7752
+ function Blockquote2({
7753
+ className,
7754
+ style,
7755
+ children,
7756
+ roughness,
7757
+ seed,
7758
+ sketchColor,
7759
+ bowing,
7760
+ strokeWidth,
7761
+ animate,
7762
+ ...rest
7763
+ }, ref) {
7764
+ const ink = sketchColor ?? SKETCH_COLORS.ink;
7765
+ const resolvedSeed = useResolvedSeed(seed);
7766
+ const shouldAnimate = useAnimate(animate);
7767
+ const ruleRef = useRef(null);
7768
+ useDrawIn(ruleRef, DRAW_IN_MARK_MS, shouldAnimate);
7769
+ return /* @__PURE__ */ jsxs(
7770
+ "blockquote",
7771
+ {
7772
+ ref,
7773
+ className: cn(className),
7774
+ style: {
7775
+ display: "flex",
7776
+ gap: 12,
7777
+ margin: 0,
7778
+ padding: "8px 0 8px 4px",
7779
+ fontFamily: doodleUiFontFamily,
7780
+ fontSize: 15,
7781
+ fontStyle: "italic",
7782
+ lineHeight: 1.5,
7783
+ color: ink,
7784
+ ...style
7785
+ },
7786
+ ...rest,
7787
+ children: [
7788
+ /* @__PURE__ */ jsx(
7789
+ "span",
7790
+ {
7791
+ ref: ruleRef,
7792
+ "aria-hidden": true,
7793
+ style: { position: "relative", width: 6, flexShrink: 0, minHeight: 40 },
7794
+ children: /* @__PURE__ */ jsx(
7795
+ RoughSvg,
7796
+ {
7797
+ shape: "line-vertical",
7798
+ roughness,
7799
+ seed: resolvedSeed,
7800
+ sketchColor: ink,
7801
+ bowing,
7802
+ strokeWidth: strokeWidth ?? 2
7803
+ }
7804
+ )
7805
+ }
7806
+ ),
7807
+ /* @__PURE__ */ jsx("span", { children })
7808
+ ]
7809
+ }
7810
+ );
7811
+ }
7812
+ );
7813
+ var InlineCode = forwardRef(
7814
+ function InlineCode2({
7815
+ className,
7816
+ style,
7817
+ children,
7818
+ roughness,
7819
+ seed,
7820
+ sketchColor,
7821
+ bowing,
7822
+ fillStyle,
7823
+ strokeWidth,
7824
+ animate,
7825
+ ...rest
7826
+ }, ref) {
7827
+ const ink = sketchColor ?? SKETCH_COLORS.ink;
7828
+ return /* @__PURE__ */ jsx(
7829
+ SketchBox,
7830
+ {
7831
+ className: cn(className),
7832
+ style: { display: "inline-flex", verticalAlign: "baseline", ...style },
7833
+ contentStyle: {
7834
+ padding: "1px 6px",
7835
+ fontSize: "0.9em",
7836
+ fontFamily: "ui-monospace, monospace"
7837
+ },
7838
+ fill: SKETCH_COLORS.paper,
7839
+ fillStyle: fillStyle ?? "hachure",
7840
+ roughness,
7841
+ seed,
7842
+ sketchColor: ink,
7843
+ bowing,
7844
+ strokeWidth: strokeWidth ?? 1.2,
7845
+ animate,
7846
+ ...rest,
7847
+ children: /* @__PURE__ */ jsx(
7848
+ "code",
7849
+ {
7850
+ ref,
7851
+ style: {
7852
+ border: "none",
7853
+ background: "transparent",
7854
+ padding: 0,
7855
+ font: "inherit",
7856
+ color: ink
7857
+ },
7858
+ children
7859
+ }
7860
+ )
7861
+ }
7862
+ );
7863
+ }
7864
+ );
7865
+ var Highlight = forwardRef(
7866
+ function Highlight2({
7867
+ className,
7868
+ style,
7869
+ children,
7870
+ roughness,
7871
+ seed,
7872
+ sketchColor,
7873
+ bowing,
7874
+ strokeWidth,
7875
+ animate,
7876
+ ...rest
7877
+ }, ref) {
7878
+ const resolvedSeed = useResolvedSeed(seed);
7879
+ const shouldAnimate = useAnimate(animate);
7880
+ const markRef = useRef(null);
7881
+ useDrawIn(markRef, DRAW_IN_MARK_MS, shouldAnimate);
7882
+ return /* @__PURE__ */ jsxs(
7883
+ "span",
7884
+ {
7885
+ ref,
7886
+ className: cn(className),
7887
+ style: { position: "relative", display: "inline", ...style },
7888
+ ...rest,
7889
+ children: [
7890
+ /* @__PURE__ */ jsx(
7891
+ "span",
7892
+ {
7893
+ ref: markRef,
7894
+ "aria-hidden": true,
7895
+ style: {
7896
+ position: "absolute",
7897
+ left: -2,
7898
+ right: -2,
7899
+ bottom: 0,
7900
+ top: "35%",
7901
+ zIndex: 0
7902
+ },
7903
+ children: /* @__PURE__ */ jsx(
7904
+ RoughSvg,
7905
+ {
7906
+ shape: "rectangle",
7907
+ roughness,
7908
+ seed: resolvedSeed,
7909
+ sketchColor: sketchColor ?? SKETCH_COLORS.accent,
7910
+ fill: SKETCH_COLORS.accentFill,
7911
+ fillStyle: "solid",
7912
+ bowing,
7913
+ strokeWidth: strokeWidth ?? 1
7914
+ }
7915
+ )
7916
+ }
7917
+ ),
7918
+ /* @__PURE__ */ jsx("span", { style: { position: "relative", zIndex: 1 }, children })
7919
+ ]
7920
+ }
7921
+ );
7922
+ }
7923
+ );
7924
+ var SIDEBAR_WIDTH = 240;
7925
+ var SIDEBAR_WIDTH_COLLAPSED = 56;
7926
+ var SidebarContext = createContext(null);
7927
+ function useSidebar() {
7928
+ const ctx = useContext(SidebarContext);
7929
+ if (!ctx) {
7930
+ throw new Error("Sidebar parts must be used inside <SidebarProvider>.");
7931
+ }
7932
+ return ctx;
7933
+ }
7934
+ function SidebarProvider({
7935
+ defaultOpen = true,
7936
+ open: openProp,
7937
+ onOpenChange,
7938
+ defaultCollapsed = false,
7939
+ children,
7940
+ roughness,
7941
+ seed,
7942
+ sketchColor,
7943
+ bowing,
7944
+ strokeWidth
7945
+ }) {
7946
+ const [uncontrolledOpen, setUncontrolledOpen] = useState(defaultOpen);
7947
+ const [collapsed, setCollapsed] = useState(defaultCollapsed);
7948
+ const open = openProp ?? uncontrolledOpen;
7949
+ const setOpen = useCallback(
7950
+ (next) => {
7951
+ onOpenChange?.(next);
7952
+ if (openProp === void 0) {
7953
+ setUncontrolledOpen(next);
7954
+ }
7955
+ },
7956
+ [onOpenChange, openProp]
7957
+ );
7958
+ const toggleCollapsed = useCallback(() => {
7959
+ setCollapsed((c) => !c);
7960
+ }, []);
7961
+ const ink = sketchColor ?? SKETCH_COLORS.ink;
7962
+ const value = useMemo(
7963
+ () => ({
7964
+ open,
7965
+ setOpen,
7966
+ collapsed,
7967
+ toggleCollapsed,
7968
+ ink,
7969
+ sketch: { roughness, seed, sketchColor, bowing, strokeWidth }
7970
+ }),
7971
+ [
7972
+ open,
7973
+ setOpen,
7974
+ collapsed,
7975
+ toggleCollapsed,
7976
+ ink,
7977
+ roughness,
7978
+ seed,
7979
+ sketchColor,
7980
+ bowing,
7981
+ strokeWidth
7982
+ ]
7983
+ );
7984
+ return /* @__PURE__ */ jsx(SidebarContext.Provider, { value, children });
7985
+ }
7986
+ var Sidebar = forwardRef(function Sidebar2({ className, style, children, side = "left", ...rest }, ref) {
7987
+ const { open, collapsed, sketch } = useSidebar();
7988
+ const resolvedSeed = useResolvedSeed(sketch.seed);
7989
+ const width = collapsed ? SIDEBAR_WIDTH_COLLAPSED : SIDEBAR_WIDTH;
7990
+ if (!open) {
7991
+ return null;
7992
+ }
7993
+ return /* @__PURE__ */ jsxs(
7994
+ "aside",
7995
+ {
7996
+ ref,
7997
+ className: cn(className),
7998
+ style: {
7999
+ position: "relative",
8000
+ flexShrink: 0,
8001
+ width,
8002
+ minHeight: 200,
8003
+ transition: "width 200ms ease",
8004
+ display: "flex",
8005
+ flexDirection: "column",
8006
+ background: SKETCH_COLORS.paper,
8007
+ ...style
8008
+ },
8009
+ "data-side": side,
8010
+ ...rest,
8011
+ children: [
8012
+ children,
8013
+ /* @__PURE__ */ jsx(
8014
+ "span",
8015
+ {
8016
+ "aria-hidden": true,
8017
+ style: {
8018
+ position: "absolute",
8019
+ top: 0,
8020
+ bottom: 0,
8021
+ width: 4,
8022
+ ...side === "left" ? { right: 0 } : { left: 0 },
8023
+ pointerEvents: "none"
8024
+ },
8025
+ children: /* @__PURE__ */ jsx(
8026
+ RoughSvg,
8027
+ {
8028
+ shape: "line-vertical",
8029
+ roughness: sketch.roughness,
8030
+ seed: resolvedSeed,
8031
+ sketchColor: sketch.sketchColor ?? SKETCH_COLORS.ink,
8032
+ bowing: sketch.bowing,
8033
+ strokeWidth: sketch.strokeWidth ?? 1.5
8034
+ }
8035
+ )
8036
+ }
8037
+ )
8038
+ ]
8039
+ }
8040
+ );
8041
+ });
8042
+ function SidebarHeader({
8043
+ className,
8044
+ style,
8045
+ children,
8046
+ ...rest
8047
+ }) {
8048
+ const { collapsed } = useSidebar();
8049
+ return /* @__PURE__ */ jsx(
8050
+ "div",
8051
+ {
8052
+ className: cn(className),
8053
+ style: {
8054
+ padding: collapsed ? "12px 8px" : "16px 14px",
8055
+ borderBottom: `1px solid ${SKETCH_COLORS.ink}22`,
8056
+ ...style
8057
+ },
8058
+ ...rest,
8059
+ children
8060
+ }
8061
+ );
8062
+ }
8063
+ function SidebarContent({
8064
+ className,
8065
+ style,
8066
+ children,
8067
+ ...rest
8068
+ }) {
8069
+ return /* @__PURE__ */ jsx(
8070
+ "div",
8071
+ {
8072
+ className: cn(className),
8073
+ style: {
8074
+ flex: 1,
8075
+ overflow: "auto",
8076
+ padding: "8px 6px",
8077
+ ...style
8078
+ },
8079
+ ...rest,
8080
+ children
8081
+ }
8082
+ );
8083
+ }
8084
+ function SidebarFooter({
8085
+ className,
8086
+ style,
8087
+ children,
8088
+ ...rest
8089
+ }) {
8090
+ return /* @__PURE__ */ jsx(
8091
+ "div",
8092
+ {
8093
+ className: cn(className),
8094
+ style: {
8095
+ padding: "12px 10px",
8096
+ borderTop: `1px solid ${SKETCH_COLORS.ink}22`,
8097
+ ...style
8098
+ },
8099
+ ...rest,
8100
+ children
8101
+ }
8102
+ );
8103
+ }
8104
+ function SidebarGroup({
8105
+ className,
8106
+ style,
8107
+ children,
8108
+ title,
8109
+ ...rest
8110
+ }) {
8111
+ const { collapsed, ink } = useSidebar();
8112
+ return /* @__PURE__ */ jsxs(
8113
+ "div",
8114
+ {
8115
+ className: cn(className),
8116
+ style: { marginBottom: 12, ...style },
8117
+ ...rest,
8118
+ children: [
8119
+ title && !collapsed ? /* @__PURE__ */ jsx(
8120
+ "div",
8121
+ {
8122
+ style: {
8123
+ padding: "4px 10px 8px",
8124
+ fontSize: 11,
8125
+ fontWeight: doodleUiFontWeight(600),
8126
+ fontFamily: doodleUiFontFamily,
8127
+ color: ink,
8128
+ opacity: 0.65,
8129
+ textTransform: "uppercase",
8130
+ letterSpacing: "0.06em"
8131
+ },
8132
+ children: title
8133
+ }
8134
+ ) : null,
8135
+ children
8136
+ ]
8137
+ }
8138
+ );
8139
+ }
8140
+ var SidebarItem = forwardRef(
8141
+ function SidebarItem2({ className, style, children, active, ...rest }, ref) {
8142
+ const { collapsed, ink, sketch } = useSidebar();
8143
+ return /* @__PURE__ */ jsx(
8144
+ Button,
8145
+ {
8146
+ ref,
8147
+ type: "button",
8148
+ variant: active ? "secondary" : "ghost",
8149
+ className: cn(className),
8150
+ style: {
8151
+ width: "100%",
8152
+ justifyContent: collapsed ? "center" : "flex-start",
8153
+ marginBottom: 4,
8154
+ ...style
8155
+ },
8156
+ roughness: sketch.roughness,
8157
+ seed: sketch.seed,
8158
+ sketchColor: ink,
8159
+ bowing: sketch.bowing,
8160
+ strokeWidth: sketch.strokeWidth,
8161
+ ...rest,
8162
+ children
8163
+ }
8164
+ );
8165
+ }
8166
+ );
8167
+ function SidebarTrigger({
8168
+ className,
8169
+ style,
8170
+ children,
8171
+ ...rest
8172
+ }) {
8173
+ const { toggleCollapsed, sketch, ink } = useSidebar();
8174
+ return /* @__PURE__ */ jsx(
8175
+ Button,
8176
+ {
8177
+ type: "button",
8178
+ variant: "outline",
8179
+ size: "sm",
8180
+ className: cn(className),
8181
+ style,
8182
+ onClick: toggleCollapsed,
8183
+ roughness: sketch.roughness,
8184
+ seed: sketch.seed,
8185
+ sketchColor: ink,
8186
+ bowing: sketch.bowing,
8187
+ strokeWidth: sketch.strokeWidth,
8188
+ ...rest,
8189
+ children: children ?? "Toggle"
8190
+ }
8191
+ );
8192
+ }
8193
+ function SidebarLayout({
8194
+ className,
8195
+ style,
8196
+ children,
8197
+ ...rest
8198
+ }) {
8199
+ return /* @__PURE__ */ jsx(
8200
+ "div",
8201
+ {
8202
+ className: cn(className),
8203
+ style: {
8204
+ display: "flex",
8205
+ width: "100%",
8206
+ minHeight: 280,
8207
+ alignItems: "stretch",
8208
+ ...style
8209
+ },
8210
+ ...rest,
8211
+ children
8212
+ }
8213
+ );
8214
+ }
8215
+ function SidebarInset({
8216
+ className,
8217
+ style,
8218
+ children,
8219
+ ...rest
8220
+ }) {
8221
+ return /* @__PURE__ */ jsx(
8222
+ "div",
8223
+ {
8224
+ className: cn(className),
8225
+ style: {
8226
+ flex: 1,
8227
+ padding: 16,
8228
+ minWidth: 0,
8229
+ ...style
8230
+ },
8231
+ ...rest,
8232
+ children
8233
+ }
8234
+ );
8235
+ }
8236
+ var CarouselContext = createContext(null);
8237
+ function useCarousel() {
8238
+ const ctx = useContext(CarouselContext);
8239
+ if (!ctx) {
8240
+ throw new Error("Carousel parts must be used inside <Carousel>.");
8241
+ }
8242
+ return ctx;
8243
+ }
8244
+ function Carousel({
8245
+ opts,
8246
+ plugins,
8247
+ orientation = "horizontal",
8248
+ bordered = false,
8249
+ className,
8250
+ style,
8251
+ children,
8252
+ setApi,
8253
+ roughness,
8254
+ seed,
8255
+ sketchColor,
8256
+ bowing,
8257
+ strokeWidth,
8258
+ fillStyle,
8259
+ animate
8260
+ }) {
8261
+ const [emblaRef, api] = useEmblaCarousel(
8262
+ {
8263
+ ...opts,
8264
+ axis: orientation === "horizontal" ? "x" : "y"
8265
+ },
8266
+ plugins
8267
+ );
8268
+ const [canScrollPrev, setCanScrollPrev] = useState(false);
8269
+ const [canScrollNext, setCanScrollNext] = useState(false);
8270
+ const scrollPrev = useCallback(() => api?.scrollPrev(), [api]);
8271
+ const scrollNext = useCallback(() => api?.scrollNext(), [api]);
8272
+ const onSelect = useCallback(() => {
8273
+ if (!api) return;
8274
+ setCanScrollPrev(api.canScrollPrev());
8275
+ setCanScrollNext(api.canScrollNext());
8276
+ }, [api]);
8277
+ useEffect(() => {
8278
+ if (!api) return;
8279
+ setApi?.(api);
8280
+ onSelect();
8281
+ api.on("reInit", onSelect);
8282
+ api.on("select", onSelect);
8283
+ return () => {
8284
+ api.off("reInit", onSelect);
8285
+ api.off("select", onSelect);
8286
+ };
8287
+ }, [api, onSelect, setApi]);
8288
+ const handleKeyDown = useCallback(
8289
+ (event) => {
8290
+ if (orientation === "horizontal") {
8291
+ if (event.key === "ArrowLeft") {
8292
+ event.preventDefault();
8293
+ scrollPrev();
8294
+ } else if (event.key === "ArrowRight") {
8295
+ event.preventDefault();
8296
+ scrollNext();
8297
+ }
8298
+ } else if (event.key === "ArrowUp") {
8299
+ event.preventDefault();
8300
+ scrollPrev();
8301
+ } else if (event.key === "ArrowDown") {
8302
+ event.preventDefault();
8303
+ scrollNext();
8304
+ }
8305
+ },
8306
+ [orientation, scrollPrev, scrollNext]
8307
+ );
8308
+ const value = {
8309
+ emblaRef,
8310
+ api,
8311
+ scrollPrev,
8312
+ scrollNext,
8313
+ canScrollPrev,
8314
+ canScrollNext,
8315
+ orientation,
8316
+ sketch: {
8317
+ roughness,
8318
+ seed,
8319
+ sketchColor,
8320
+ bowing,
8321
+ strokeWidth,
8322
+ fillStyle,
8323
+ animate
8324
+ },
8325
+ bordered
8326
+ };
8327
+ return /* @__PURE__ */ jsx(CarouselContext.Provider, { value, children: /* @__PURE__ */ jsx(
8328
+ "div",
8329
+ {
8330
+ className: cn(className),
8331
+ role: "region",
8332
+ "aria-roledescription": "carousel",
8333
+ tabIndex: 0,
8334
+ onKeyDown: handleKeyDown,
8335
+ style: {
8336
+ position: "relative",
8337
+ width: "100%",
8338
+ ...style
8339
+ },
8340
+ children
8341
+ }
8342
+ ) });
8343
+ }
8344
+ var CarouselContent = forwardRef(
8345
+ function CarouselContent2({ className, style, children, ...rest }, ref) {
8346
+ const { emblaRef, orientation, bordered, sketch } = useCarousel();
8347
+ const viewport = /* @__PURE__ */ jsx("div", { ref: emblaRef, style: { overflow: "hidden" }, children: /* @__PURE__ */ jsx(
8348
+ "div",
8349
+ {
8350
+ ref,
8351
+ className: cn(className),
8352
+ style: {
8353
+ display: "flex",
8354
+ flexDirection: orientation === "vertical" ? "column" : "row",
8355
+ marginLeft: orientation === "horizontal" ? -16 : 0,
8356
+ marginTop: orientation === "vertical" ? -16 : 0,
8357
+ ...style
8358
+ },
8359
+ ...rest,
8360
+ children
8361
+ }
8362
+ ) });
8363
+ if (!bordered) {
8364
+ return viewport;
8365
+ }
8366
+ return /* @__PURE__ */ jsx(
8367
+ SketchBox,
8368
+ {
8369
+ fill: SKETCH_COLORS.paper,
8370
+ fillStyle: sketch.fillStyle ?? "hachure",
8371
+ roughness: sketch.roughness,
8372
+ seed: sketch.seed,
8373
+ sketchColor: sketch.sketchColor,
8374
+ bowing: sketch.bowing,
8375
+ strokeWidth: sketch.strokeWidth,
8376
+ animate: sketch.animate,
8377
+ contentStyle: { padding: 8 },
8378
+ children: viewport
8379
+ }
8380
+ );
8381
+ }
8382
+ );
8383
+ var CarouselItem = forwardRef(
8384
+ function CarouselItem2({ className, style, children, ...rest }, ref) {
8385
+ const { orientation } = useCarousel();
8386
+ const gap = 16;
8387
+ return /* @__PURE__ */ jsx(
8388
+ "div",
8389
+ {
8390
+ ref,
8391
+ className: cn(className),
8392
+ role: "group",
8393
+ "aria-roledescription": "slide",
8394
+ style: {
8395
+ flex: "0 0 100%",
8396
+ minWidth: 0,
8397
+ paddingLeft: orientation === "horizontal" ? gap : 0,
8398
+ paddingTop: orientation === "vertical" ? gap : 0,
8399
+ ...style
8400
+ },
8401
+ ...rest,
8402
+ children
8403
+ }
8404
+ );
8405
+ }
8406
+ );
8407
+ var ARROW_PATH_PREV = "M 14 4 L 6 12 L 14 20";
8408
+ var ARROW_PATH_NEXT = "M 6 4 L 14 12 L 6 20";
8409
+ var ARROW_SIZE = 40;
8410
+ var CarouselArrow = forwardRef(function CarouselArrow2({ className, style, direction, ...rest }, ref) {
8411
+ const {
8412
+ scrollPrev,
8413
+ scrollNext,
8414
+ canScrollPrev,
8415
+ canScrollNext,
8416
+ sketch,
8417
+ orientation
8418
+ } = useCarousel();
8419
+ const resolvedSeed = useResolvedSeed(sketch.seed);
8420
+ const ink = sketch.sketchColor ?? SKETCH_COLORS.ink;
8421
+ const isPrev = direction === "prev";
8422
+ const disabled = isPrev ? !canScrollPrev : !canScrollNext;
8423
+ const shouldAnimate = useAnimate(sketch.animate);
8424
+ const rootRef = useRef(null);
8425
+ const sketchSeed = deriveSeed(resolvedSeed, direction);
8426
+ useDrawIn(rootRef, DRAW_IN_DURATION_MS, shouldAnimate, sketchSeed);
8427
+ const horizontal = orientation === "horizontal";
8428
+ return /* @__PURE__ */ jsxs(
8429
+ "button",
8430
+ {
8431
+ ref: (node) => {
8432
+ rootRef.current = node;
8433
+ assignRef(ref, node);
8434
+ },
8435
+ type: "button",
8436
+ disabled,
8437
+ className: cn(className),
8438
+ style: {
8439
+ position: "absolute",
8440
+ zIndex: 2,
8441
+ width: ARROW_SIZE,
8442
+ height: ARROW_SIZE,
8443
+ padding: 0,
8444
+ border: "none",
8445
+ background: "transparent",
8446
+ cursor: disabled ? "not-allowed" : "pointer",
8447
+ opacity: disabled ? 0.5 : 1,
8448
+ ...horizontal ? {
8449
+ top: "50%",
8450
+ transform: "translateY(-50%)",
8451
+ left: isPrev ? -52 : void 0,
8452
+ right: isPrev ? void 0 : -52
8453
+ } : {
8454
+ left: "50%",
8455
+ transform: "translateX(-50%) rotate(90deg)",
8456
+ top: isPrev ? -52 : void 0,
8457
+ bottom: isPrev ? void 0 : -52
8458
+ },
8459
+ ...style
8460
+ },
8461
+ onClick: isPrev ? scrollPrev : scrollNext,
8462
+ "aria-label": isPrev ? "Previous slide" : "Next slide",
8463
+ ...rest,
8464
+ children: [
8465
+ /* @__PURE__ */ jsx(
8466
+ RoughSvg,
8467
+ {
8468
+ shape: "ellipse",
8469
+ roughness: sketch.roughness,
8470
+ seed: sketchSeed,
8471
+ sketchColor: ink,
8472
+ bowing: sketch.bowing,
8473
+ fill: SKETCH_COLORS.paper,
8474
+ fillStyle: "solid",
8475
+ strokeWidth: sketch.strokeWidth ?? 1.5,
8476
+ inset: 1.5
8477
+ }
8478
+ ),
8479
+ /* @__PURE__ */ jsx(
8480
+ "span",
8481
+ {
8482
+ style: {
8483
+ position: "relative",
8484
+ zIndex: 1,
8485
+ width: 18,
8486
+ height: 22,
8487
+ display: "block",
8488
+ margin: "0 auto"
8489
+ },
8490
+ children: /* @__PURE__ */ jsx(
8491
+ RoughSvg,
8492
+ {
8493
+ shape: "path",
8494
+ path: isPrev ? ARROW_PATH_PREV : ARROW_PATH_NEXT,
8495
+ roughness: sketch.roughness,
8496
+ seed: deriveSeed(resolvedSeed, `${direction}-arrow`),
8497
+ sketchColor: ink,
8498
+ strokeWidth: sketch.strokeWidth ?? 1.6
8499
+ }
8500
+ )
8501
+ }
8502
+ )
8503
+ ]
8504
+ }
8505
+ );
8506
+ });
8507
+ var CarouselPrevious = forwardRef(
8508
+ function CarouselPrevious2(props, ref) {
8509
+ return /* @__PURE__ */ jsx(CarouselArrow, { ref, direction: "prev", ...props });
8510
+ }
8511
+ );
8512
+ var CarouselNext = forwardRef(
8513
+ function CarouselNext2(props, ref) {
8514
+ return /* @__PURE__ */ jsx(CarouselArrow, { ref, direction: "next", ...props });
8515
+ }
8516
+ );
5178
8517
 
5179
- export { Accordion, AccordionContent, AccordionItem, AccordionTrigger, Alert, AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogOverlay, AlertDialogPortal, AlertDialogTitle, AlertDialogTrigger, Avatar, Badge, Breadcrumb, BreadcrumbItem, Button, Card, Checkbox, Collapsible, CollapsibleContent, CollapsibleTrigger, Combobox, Command, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList, CommandSeparator, 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, Dialog2 as Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, Divider, DoodleUIProvider, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuSub, DropdownMenuTrigger, Input, Label2 as Label, Modal, ModalClose, ModalDescription, ModalRoot, ModalTitle, ModalTrigger, Pagination, Popover, PopoverAnchor, PopoverArrow, PopoverClose, PopoverContent, PopoverTrigger, Progress, Radio, RadioGroup, RoughSvg, SKETCH_COLORS, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectRoot, SelectSeparator, SelectTrigger, SelectValue, Skeleton, SketchBox, SketchSeedProvider, Slider, Stepper, Switch, TABLE_STAGGER_MS, Tab, TabList, TabPanel, Table, TableBody, TableCell, TableHead, TableHeaderCell, TableRow, Tabs, Textarea, Toast, ToastAction, ToastClose, ToastDescription, ToastProvider, ToastRoot, ToastTitle, ToastViewport, Tooltip, TooltipProvider, deriveSeed, toRoughOptions, useAnimate, useDoodleUI, useDrawIn, useResolvedSeed, useSketchSeed };
8518
+ export { Accordion, AccordionContent, AccordionItem, AccordionTrigger, Alert, AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogOverlay, AlertDialogPortal, AlertDialogTitle, AlertDialogTrigger, AspectRatio, Avatar, Badge, Blockquote, Breadcrumb, BreadcrumbItem, Button, Card, Carousel, CarouselContent, CarouselItem, CarouselNext, CarouselPrevious, Checkbox, Collapsible, CollapsibleContent, CollapsibleTrigger, Combobox, Command, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList, CommandSeparator, CommandShortcut, ContextMenu, ContextMenuCheckboxItem, ContextMenuContent, ContextMenuGroup, ContextMenuItem, ContextMenuLabel, ContextMenuRadioGroup, ContextMenuRadioItem, ContextMenuSeparator, ContextMenuSub, ContextMenuTrigger, 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, Dialog2 as Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, Divider, DoodleUIProvider, Drawer, DrawerClose, DrawerContent, DrawerDescription, DrawerFooter, DrawerHandle, DrawerHeader, DrawerTitle, DrawerTrigger, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuSub, DropdownMenuTrigger, Empty, EmptyAction, EmptyDescription, EmptyMedia, EmptyTitle, Field, FieldControl, FieldDescription, FieldError, FieldLabel, Heading, Highlight, HoverCard, HoverCardArrow, HoverCardContent, HoverCardTrigger, InlineCode, Input, InputGroup, InputGroupAddon, InputGroupButton, InputGroupInput, InputOTP, InputOTPGroup, InputOTPSeparator, InputOTPSlot, Kbd, Label2 as Label, Menubar, MenubarCheckboxItem, MenubarContent, MenubarItem, MenubarLabel, MenubarMenu, MenubarRadioGroup, MenubarRadioItem, MenubarSeparator, MenubarShortcut, MenubarSub, MenubarSubContent, MenubarSubTrigger, MenubarTrigger, Modal, ModalClose, ModalDescription, ModalRoot, ModalTitle, ModalTrigger, NativeSelect, NavigationMenu, NavigationMenuContent, NavigationMenuIndicator, NavigationMenuItem, NavigationMenuItemLink, NavigationMenuLink, NavigationMenuList, NavigationMenuTrigger, NavigationMenuViewport, Pagination, Paragraph, Popover, PopoverAnchor, PopoverArrow, PopoverClose, PopoverContent, PopoverTrigger, Progress, Radio, RadioGroup, ResizableHandle, ResizablePanel, ResizablePanelGroup, RoughSvg, SKETCH_COLORS, ScrollArea, ScrollAreaCorner, ScrollAreaViewport, ScrollBar, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectRoot, SelectSeparator, SelectTrigger, SelectValue, Sheet, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetTitle, SheetTrigger, Sidebar, SidebarContent, SidebarFooter, SidebarGroup, SidebarHeader, SidebarInset, SidebarItem, SidebarLayout, SidebarProvider, SidebarTrigger, Skeleton, SketchBox, SketchSeedProvider, Slider, Spinner, Stepper, Switch, TABLE_STAGGER_MS, Tab, TabList, TabPanel, Table, TableBody, TableCell, TableHead, TableHeaderCell, TableRow, Tabs, Text, Textarea, Toast, ToastAction, ToastClose, ToastDescription, ToastProvider, ToastRoot, ToastTitle, ToastViewport, Toggle, ToggleGroup, ToggleGroupItem, Tooltip, TooltipProvider, deriveSeed, toRoughOptions, useAnimate, useCarousel, useDoodleUI, useDrawIn, useResolvedSeed, useSidebar, useSketchSeed };
5180
8519
  //# sourceMappingURL=index.js.map
5181
8520
  //# sourceMappingURL=index.js.map