@haklex/rich-editor-ui 0.56.0 → 0.58.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.
Files changed (61) hide show
  1. package/dist/components/action-button/index.d.ts +4 -2
  2. package/dist/components/action-button/index.d.ts.map +1 -1
  3. package/dist/components/action-button/styles.css.d.ts +26 -25
  4. package/dist/components/action-button/styles.css.d.ts.map +1 -1
  5. package/dist/components/alert/index.d.ts +3 -2
  6. package/dist/components/alert/index.d.ts.map +1 -1
  7. package/dist/components/alert/styles.css.d.ts +46 -6
  8. package/dist/components/alert/styles.css.d.ts.map +1 -1
  9. package/dist/components/animated-tabs/styles.css.d.ts.map +1 -1
  10. package/dist/components/auto-resize-textarea/styles.css.d.ts.map +1 -1
  11. package/dist/components/badge/index.d.ts +2 -1
  12. package/dist/components/badge/index.d.ts.map +1 -1
  13. package/dist/components/badge/styles.css.d.ts +16 -11
  14. package/dist/components/badge/styles.css.d.ts.map +1 -1
  15. package/dist/components/checkbox/index.d.ts +3 -1
  16. package/dist/components/checkbox/index.d.ts.map +1 -1
  17. package/dist/components/checkbox/styles.css.d.ts +3 -6
  18. package/dist/components/checkbox/styles.css.d.ts.map +1 -1
  19. package/dist/components/code-block/CodeBlockCard.d.ts.map +1 -1
  20. package/dist/components/code-block/styles.css.d.ts.map +1 -1
  21. package/dist/components/collapsible/index.d.ts.map +1 -1
  22. package/dist/components/collapsible/styles.css.d.ts +1 -0
  23. package/dist/components/collapsible/styles.css.d.ts.map +1 -1
  24. package/dist/components/color-picker/picker-view.d.ts.map +1 -1
  25. package/dist/components/color-picker/styles.css.d.ts +0 -2
  26. package/dist/components/color-picker/styles.css.d.ts.map +1 -1
  27. package/dist/components/combobox/styles.css.d.ts +1 -0
  28. package/dist/components/combobox/styles.css.d.ts.map +1 -1
  29. package/dist/components/dialog/styles.css.d.ts.map +1 -1
  30. package/dist/components/dropdown-menu/index.d.ts +4 -1
  31. package/dist/components/dropdown-menu/index.d.ts.map +1 -1
  32. package/dist/components/dropdown-menu/styles.css.d.ts +2 -0
  33. package/dist/components/dropdown-menu/styles.css.d.ts.map +1 -1
  34. package/dist/components/kbd/index.d.ts +15 -0
  35. package/dist/components/kbd/index.d.ts.map +1 -0
  36. package/dist/components/kbd/keys.d.ts +14 -0
  37. package/dist/components/kbd/keys.d.ts.map +1 -0
  38. package/dist/components/kbd/styles.css.d.ts +8 -0
  39. package/dist/components/kbd/styles.css.d.ts.map +1 -0
  40. package/dist/components/popover/styles.css.d.ts.map +1 -1
  41. package/dist/components/scroll-area/styles.css.d.ts.map +1 -1
  42. package/dist/components/segmented-control/styles.css.d.ts +10 -6
  43. package/dist/components/segmented-control/styles.css.d.ts.map +1 -1
  44. package/dist/components/select/styles.css.d.ts.map +1 -1
  45. package/dist/components/spinner/index.d.ts +1 -1
  46. package/dist/components/spinner/index.d.ts.map +1 -1
  47. package/dist/components/spinner/styles.css.d.ts +9 -2
  48. package/dist/components/spinner/styles.css.d.ts.map +1 -1
  49. package/dist/components/status-dot/styles.css.d.ts +4 -4
  50. package/dist/components/status-dot/styles.css.d.ts.map +1 -1
  51. package/dist/components/tooltip/index.d.ts +2 -1
  52. package/dist/components/tooltip/index.d.ts.map +1 -1
  53. package/dist/components/tooltip/styles.css.d.ts +1 -0
  54. package/dist/components/tooltip/styles.css.d.ts.map +1 -1
  55. package/dist/index.d.ts +2 -0
  56. package/dist/index.d.ts.map +1 -1
  57. package/dist/index.mjs +367 -156
  58. package/dist/rich-editor-ui.css +1 -1
  59. package/dist/styles/menu.css.d.ts +3 -0
  60. package/dist/styles/menu.css.d.ts.map +1 -1
  61. package/package.json +2 -2
package/dist/index.mjs CHANGED
@@ -1,5 +1,5 @@
1
1
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
2
- import { AlertCircle, AlertTriangle, ArrowLeft, Check, ChevronDown, ChevronRight, ChevronUp, Copy, Info, Pipette, Plus, X } from "lucide-react";
2
+ import { AlertCircle, AlertTriangle, ArrowDown, ArrowLeft, ArrowRight, ArrowUp, Check, CheckCircle2, ChevronDown, ChevronRight, ChevronUp, Copy, CornerDownLeft, Delete, Info, Pipette, Plus, X } from "lucide-react";
3
3
  import { createContext, createElement, forwardRef, use, useCallback, useEffect, useImperativeHandle, useLayoutEffect, useMemo, useRef, useState, useSyncExternalStore } from "react";
4
4
  import { Collapsible as Collapsible$1 } from "@base-ui/react/collapsible";
5
5
  import { Popover as Popover$1 } from "@base-ui/react/popover";
@@ -161,11 +161,15 @@ var actionButton$1 = createRuntimeFn({
161
161
  icon: true,
162
162
  size: "lg"
163
163
  }, "_73ej2ij"],
164
+ [{
165
+ icon: true,
166
+ variant: "ghost"
167
+ }, "_73ej2ik"],
164
168
  [{
165
169
  rounded: true,
166
170
  icon: true
167
- }, "_73ej2ik"],
168
- [{ danger: true }, "_73ej2il"]
171
+ }, "_73ej2il"],
172
+ [{ danger: true }, "_73ej2im"]
169
173
  ]
170
174
  });
171
175
  //#endregion
@@ -205,37 +209,46 @@ function getActionButtonClassName(options) {
205
209
  //#endregion
206
210
  //#region src/components/alert/styles.css.ts
207
211
  var alert = createRuntimeFn({
208
- defaultClassName: "_15r7gwx0",
212
+ defaultClassName: "_15r7gwx5",
209
213
  variantClassNames: { variant: {
210
- info: "_15r7gwx1",
211
- warning: "_15r7gwx2",
212
- error: "_15r7gwx3"
214
+ info: "_15r7gwx6",
215
+ success: "_15r7gwx7",
216
+ warning: "_15r7gwx8",
217
+ error: "_15r7gwx9",
218
+ neutral: "_15r7gwxa"
213
219
  } },
214
220
  defaultVariants: { variant: "info" },
215
221
  compoundVariants: []
216
222
  });
217
- var alertContent = "_15r7gwx4";
218
- var alertIcon = "_15r7gwx5";
223
+ var alertContent = "_15r7gwxb";
224
+ var alertIcon = "_15r7gwxd";
219
225
  //#endregion
220
226
  //#region src/components/alert/index.tsx
221
- var icons = {
227
+ var icons$1 = {
222
228
  info: Info,
229
+ success: CheckCircle2,
223
230
  warning: AlertTriangle,
224
- error: AlertCircle
231
+ error: AlertCircle,
232
+ neutral: Info
225
233
  };
226
- function Alert({ variant, children, action, className }) {
227
- const IconComponent = icons[variant];
234
+ function Alert({ variant, title, children, action, className }) {
235
+ const IconComponent = icons$1[variant];
228
236
  return /* @__PURE__ */ jsxs("div", {
229
237
  className: `${alert({ variant })}${className ? ` ${className}` : ""}`,
238
+ "data-variant": variant,
230
239
  role: "alert",
231
240
  children: [
232
241
  /* @__PURE__ */ jsx(IconComponent, { className: alertIcon }),
233
- /* @__PURE__ */ jsx("div", {
242
+ /* @__PURE__ */ jsxs("div", {
234
243
  className: alertContent,
235
- children
244
+ children: [title && /* @__PURE__ */ jsx("div", {
245
+ className: "_15r7gwxc",
246
+ "data-slot": "alert-title",
247
+ children: title
248
+ }), /* @__PURE__ */ jsx("div", { children })]
236
249
  }),
237
250
  action && /* @__PURE__ */ jsx("div", {
238
- className: "_15r7gwx6",
251
+ className: "_15r7gwxe",
239
252
  children: action
240
253
  })
241
254
  ]
@@ -385,87 +398,84 @@ var badge = createRuntimeFn({
385
398
  });
386
399
  //#endregion
387
400
  //#region src/components/badge/index.tsx
388
- function Badge({ variant, size, children, className }) {
389
- return /* @__PURE__ */ jsx("span", {
401
+ function Badge({ variant, size, dot, children, className }) {
402
+ return /* @__PURE__ */ jsxs("span", {
390
403
  className: `${badge({
391
404
  variant,
392
405
  size
393
406
  })}${className ? ` ${className}` : ""}`,
394
- children
407
+ children: [dot && /* @__PURE__ */ jsx("span", {
408
+ "aria-hidden": true,
409
+ className: "_1vt0sm18",
410
+ "data-slot": "badge-dot"
411
+ }), children]
395
412
  });
396
413
  }
397
414
  //#endregion
398
415
  //#region src/components/checkbox/styles.css.ts
399
- var root = "_10muorc2";
400
- var box = "_10muorc4";
401
- var boxUnchecked = "_10muorc5";
402
- var boxChecked = "_10muorc6";
403
- var checkmark = "_10muorc8";
404
- var checkmarkVisible = "_10muorc9";
405
- var checkmarkHidden = "_10muorca";
406
- var ripple = "_10muorcb";
416
+ var root = "_10muorc0";
417
+ var box = "_10muorc2";
418
+ var boxUnchecked = "_10muorc3";
419
+ var boxChecked = "_10muorc4";
420
+ var mark = "_10muorc5";
421
+ var markVisible = "_10muorc6";
422
+ var markHidden = "_10muorc7";
407
423
  //#endregion
408
424
  //#region src/components/checkbox/index.tsx
409
425
  function cx(...args) {
410
426
  return args.filter(Boolean).join(" ");
411
427
  }
412
- function AnimatedCheckbox({ label, description, checked: controlledChecked, defaultChecked = false, onChange, disabled = false, className }) {
428
+ function AnimatedCheckbox({ label, description, checked: controlledChecked, defaultChecked = false, indeterminate = false, onChange, disabled = false, className }) {
413
429
  const [internalChecked, setInternalChecked] = useState(defaultChecked);
414
- const [bouncing, setBouncing] = useState(false);
415
430
  const isControlled = controlledChecked !== void 0;
416
431
  const isChecked = isControlled ? controlledChecked : internalChecked;
417
- const isFirstRender = useRef(true);
418
- const rippleKey = useRef(0);
419
- useEffect(() => {
420
- if (isFirstRender.current) {
421
- isFirstRender.current = false;
422
- return;
423
- }
424
- setBouncing(true);
425
- rippleKey.current += 1;
426
- const timer = setTimeout(() => setBouncing(false), 400);
427
- return () => clearTimeout(timer);
428
- }, [isChecked]);
432
+ const filled = indeterminate || isChecked;
429
433
  const handleToggle = () => {
430
434
  if (disabled) return;
431
- const next = !isChecked;
435
+ const next = indeterminate ? true : !isChecked;
432
436
  if (!isControlled) setInternalChecked(next);
433
437
  onChange?.(next);
434
438
  };
435
439
  return /* @__PURE__ */ jsxs("button", {
436
- "aria-checked": isChecked,
440
+ "aria-checked": indeterminate ? "mixed" : isChecked,
437
441
  "aria-disabled": disabled,
438
- className: cx(root, disabled && "_10muorc3", className),
442
+ className: cx(root, disabled && "_10muorc1", className),
439
443
  role: "checkbox",
440
444
  type: "button",
441
445
  onClick: handleToggle,
442
446
  children: [/* @__PURE__ */ jsxs("span", {
443
- className: cx(box, isChecked ? boxChecked : boxUnchecked, bouncing && "_10muorc7"),
447
+ className: cx(box, filled ? boxChecked : boxUnchecked),
444
448
  children: [/* @__PURE__ */ jsx("svg", {
445
- className: cx(checkmark, isChecked ? checkmarkVisible : checkmarkHidden),
449
+ "aria-hidden": true,
450
+ className: cx(mark, isChecked && !indeterminate ? markVisible : markHidden),
446
451
  fill: "none",
447
- viewBox: "0 0 12 10",
452
+ viewBox: "0 0 12 12",
448
453
  children: /* @__PURE__ */ jsx("path", {
449
- d: "M1 5.5L4 8.5L11 1.5",
454
+ d: "M2.5 6.25L5 8.75L9.5 3.5",
450
455
  stroke: "currentColor",
451
456
  strokeLinecap: "round",
452
457
  strokeLinejoin: "round",
453
- strokeWidth: "2",
454
- style: {
455
- color: "#fff",
456
- strokeDasharray: 20,
457
- strokeDashoffset: isChecked ? 0 : 20,
458
- transition: isChecked ? "stroke-dashoffset 0.4s ease-out 0.1s" : "stroke-dashoffset 0.2s ease-in"
459
- }
458
+ strokeWidth: "1.75"
460
459
  })
461
- }), /* @__PURE__ */ jsx("span", { className: cx(ripple, bouncing && "_10muorcc") }, rippleKey.current)]
460
+ }), /* @__PURE__ */ jsx("svg", {
461
+ "aria-hidden": true,
462
+ className: cx(mark, indeterminate ? markVisible : markHidden),
463
+ fill: "none",
464
+ viewBox: "0 0 12 12",
465
+ children: /* @__PURE__ */ jsx("path", {
466
+ d: "M3 6H9",
467
+ stroke: "currentColor",
468
+ strokeLinecap: "round",
469
+ strokeWidth: "1.75"
470
+ })
471
+ })]
462
472
  }), (label || description) && /* @__PURE__ */ jsxs("span", {
463
- className: "_10muorcd",
473
+ className: "_10muorc8",
464
474
  children: [label && /* @__PURE__ */ jsx("span", {
465
- className: cx("_10muorce", disabled && "_10muorcf"),
475
+ className: cx("_10muorc9", disabled && "_10muorca"),
466
476
  children: label
467
477
  }), description && /* @__PURE__ */ jsx("span", {
468
- className: "_10muorcg",
478
+ className: "_10muorcb",
469
479
  children: description
470
480
  })]
471
481
  })]
@@ -603,6 +613,7 @@ function CodeBlockCard({ children, chrome = "bar", className, code, collapsible
603
613
  }), showCopyButton && /* @__PURE__ */ jsxs("button", {
604
614
  "aria-label": copied ? "Copied" : "Copy code",
605
615
  className: "_1gq8hf94",
616
+ "data-copied": copied || void 0,
606
617
  type: "button",
607
618
  onClick: handleCopy,
608
619
  children: [copied ? CheckIcon$1 : CopyIcon, /* @__PURE__ */ jsx("span", { children: copied ? "Copied" : "Copy" })]
@@ -1107,6 +1118,7 @@ function CodeBlock({ chrome, className, collapsible = true, code, language, show
1107
1118
  //#region src/components/collapsible/styles.css.ts
1108
1119
  var trigger$1 = "_1hdi6a90";
1109
1120
  var panel$2 = "_1hdi6a92";
1121
+ var panelContent = "_1hdi6a93";
1110
1122
  //#endregion
1111
1123
  //#region src/components/collapsible/index.tsx
1112
1124
  function Collapsible(props) {
@@ -1116,6 +1128,7 @@ function CollapsibleTrigger({ children, className, hideChevron, ...props }) {
1116
1128
  return /* @__PURE__ */ jsxs(Collapsible$1.Trigger, {
1117
1129
  ...props,
1118
1130
  className: `${trigger$1}${className ? ` ${className}` : ""}`,
1131
+ "data-no-chevron": hideChevron || void 0,
1119
1132
  children: [!hideChevron && /* @__PURE__ */ jsx(ChevronRight, { className: "_1hdi6a91" }), children]
1120
1133
  });
1121
1134
  }
@@ -1123,7 +1136,10 @@ function CollapsiblePanel({ children, className, ...props }) {
1123
1136
  return /* @__PURE__ */ jsx(Collapsible$1.Panel, {
1124
1137
  ...props,
1125
1138
  className: `${panel$2}${className ? ` ${className}` : ""}`,
1126
- children
1139
+ children: /* @__PURE__ */ jsx("div", {
1140
+ className: panelContent,
1141
+ children
1142
+ })
1127
1143
  });
1128
1144
  }
1129
1145
  //#endregion
@@ -1143,10 +1159,10 @@ function getStrictContext(name) {
1143
1159
  }
1144
1160
  //#endregion
1145
1161
  //#region src/components/popover/styles.css.ts
1146
- var popup$5 = "f2q44l2";
1147
- var arrow = "f2q44l3";
1148
- var title$1 = "f2q44l4";
1149
- var description$1 = "f2q44l5";
1162
+ var popup$5 = "f2q44l0";
1163
+ var arrow = "f2q44l1";
1164
+ var title$1 = "f2q44l2";
1165
+ var description$1 = "f2q44l3";
1150
1166
  //#endregion
1151
1167
  //#region src/components/popover/index.tsx
1152
1168
  var [PopoverProvider, usePopover] = getStrictContext("PopoverContext");
@@ -1327,36 +1343,35 @@ function huePreviewHex(h) {
1327
1343
  }
1328
1344
  //#endregion
1329
1345
  //#region src/components/color-picker/styles.css.ts
1330
- var trigger = "_17r50hf1";
1331
- var triggerLabel = "_17r50hf2";
1332
- var triggerLetter = "_17r50hf3";
1333
- var triggerBar = "_17r50hf4";
1334
- var triggerChevron = "_17r50hf5";
1335
- var panel$1 = "_17r50hf6";
1336
- var grid = "_17r50hf7";
1337
- var swatch = "_17r50hf8";
1338
- var swatchDot = "_17r50hf9";
1339
- var addSwatchDot = "_17r50hfb";
1340
- var addSwatchIcon = "_17r50hfc";
1341
- var pickerView = "_17r50hfd";
1342
- var backButton = "_17r50hfe";
1343
- var backIcon = "_17r50hff";
1344
- var satSquare = "_17r50hfg";
1345
- var satOverlayX = "_17r50hfh";
1346
- var satOverlayY = "_17r50hfi";
1347
- var satThumb = "_17r50hfj";
1348
- var hueTrack = "_17r50hfk";
1349
- var alphaTrack = "_17r50hfl";
1350
- var alphaGradient = "_17r50hfm";
1351
- var sliderThumb = "_17r50hfn";
1352
- var hexRow = "_17r50hfo";
1353
- var hexInput = "_17r50hfp";
1354
- var hexInputInvalid = "_17r50hfq";
1355
- var previewPair = "_17r50hft";
1356
- var previewCell = "_17r50hfu";
1357
- var actionRow = "_17r50hfv";
1358
- var actionButton = "_17r50hfw";
1359
- var actionButtonPrimary = "_17r50hfx";
1346
+ var trigger = "_17r50hf0";
1347
+ var triggerLabel = "_17r50hf1";
1348
+ var triggerLetter = "_17r50hf2";
1349
+ var triggerBar = "_17r50hf3";
1350
+ var triggerChevron = "_17r50hf4";
1351
+ var panel$1 = "_17r50hf5";
1352
+ var grid = "_17r50hf6";
1353
+ var swatch = "_17r50hf7";
1354
+ var swatchDot = "_17r50hf8";
1355
+ var addSwatchDot = "_17r50hf9";
1356
+ var addSwatchIcon = "_17r50hfa";
1357
+ var pickerView = "_17r50hfb";
1358
+ var backButton = "_17r50hfc";
1359
+ var backIcon = "_17r50hfd";
1360
+ var satSquare = "_17r50hfe";
1361
+ var satOverlayX = "_17r50hff";
1362
+ var satOverlayY = "_17r50hfg";
1363
+ var satThumb = "_17r50hfh";
1364
+ var hueTrack = "_17r50hfi";
1365
+ var alphaTrack = "_17r50hfj";
1366
+ var alphaGradient = "_17r50hfk";
1367
+ var sliderThumb = "_17r50hfl";
1368
+ var hexRow = "_17r50hfm";
1369
+ var hexInput = "_17r50hfn";
1370
+ var hexInputInvalid = "_17r50hfo";
1371
+ var previewPair = "_17r50hfr";
1372
+ var previewCell = "_17r50hfs";
1373
+ var actionRow = "_17r50hft";
1374
+ var actionButton = "_17r50hfu";
1360
1375
  //#endregion
1361
1376
  //#region src/components/color-picker/picker-view.tsx
1362
1377
  var FALLBACK = {
@@ -1540,11 +1555,11 @@ function PickerView({ initialColor, onApply, onCancel, onBack }) {
1540
1555
  }),
1541
1556
  hasEyeDropper && /* @__PURE__ */ jsx("button", {
1542
1557
  "aria-label": "Pick color from screen",
1543
- className: "_17r50hfr",
1558
+ className: "_17r50hfp",
1544
1559
  type: "button",
1545
1560
  onClick: openEyeDropper,
1546
1561
  onMouseDown: (e) => e.preventDefault(),
1547
- children: /* @__PURE__ */ jsx(Pipette, { className: "_17r50hfs" })
1562
+ children: /* @__PURE__ */ jsx(Pipette, { className: "_17r50hfq" })
1548
1563
  }),
1549
1564
  /* @__PURE__ */ jsxs("div", {
1550
1565
  "aria-hidden": true,
@@ -1561,15 +1576,17 @@ function PickerView({ initialColor, onApply, onCancel, onBack }) {
1561
1576
  }),
1562
1577
  /* @__PURE__ */ jsxs("div", {
1563
1578
  className: actionRow,
1564
- children: [/* @__PURE__ */ jsx("button", {
1579
+ children: [/* @__PURE__ */ jsx(ActionButton, {
1565
1580
  className: actionButton,
1566
- type: "button",
1581
+ size: "md",
1582
+ variant: "outline",
1567
1583
  onClick: onCancel,
1568
1584
  onMouseDown: (e) => e.preventDefault(),
1569
1585
  children: "Cancel"
1570
- }), /* @__PURE__ */ jsx("button", {
1571
- className: `${actionButton} ${actionButtonPrimary}`,
1572
- type: "button",
1586
+ }), /* @__PURE__ */ jsx(ActionButton, {
1587
+ className: actionButton,
1588
+ size: "md",
1589
+ variant: "solid",
1573
1590
  onClick: handleApply,
1574
1591
  onMouseDown: (e) => e.preventDefault(),
1575
1592
  children: "Apply"
@@ -1669,16 +1686,17 @@ function ColorPicker({ currentColor, onSelect, className }) {
1669
1686
  sideOffset: 6,
1670
1687
  children: view === "preset" ? /* @__PURE__ */ jsxs("div", {
1671
1688
  className: grid,
1672
- children: [TEXT_COLORS.map((color) => /* @__PURE__ */ jsxs("button", {
1689
+ children: [TEXT_COLORS.map((color) => /* @__PURE__ */ jsx("button", {
1673
1690
  "aria-label": color.name,
1691
+ "aria-pressed": currentColor === color.value,
1674
1692
  className: swatch,
1675
1693
  type: "button",
1676
1694
  onClick: () => handlePreset(color.value),
1677
1695
  onMouseDown: (e) => e.preventDefault(),
1678
- children: [/* @__PURE__ */ jsx("span", {
1696
+ children: /* @__PURE__ */ jsx("span", {
1679
1697
  className: swatchDot,
1680
1698
  style: { backgroundColor: color.value === "inherit" ? "currentColor" : color.value }
1681
- }), currentColor === color.value && /* @__PURE__ */ jsx(Check, { className: "_17r50hfa" })]
1699
+ })
1682
1700
  }, color.value)), /* @__PURE__ */ jsx("button", {
1683
1701
  "aria-label": "Custom color",
1684
1702
  className: swatch,
@@ -1699,11 +1717,9 @@ function ColorPicker({ currentColor, onSelect, className }) {
1699
1717
  })]
1700
1718
  });
1701
1719
  }
1702
- //#endregion
1703
- //#region src/components/combobox/styles.css.ts
1704
- var popup$4 = "_2buwsh0";
1705
- var item$3 = "_2buwsh1";
1706
- var empty = "_2buwsh2";
1720
+ var popup$4 = "_2buwsh1";
1721
+ var item$3 = "_2buwsh2";
1722
+ var empty = "_2buwsh3";
1707
1723
  //#endregion
1708
1724
  //#region src/components/combobox/index.tsx
1709
1725
  function Combobox(props) {
@@ -1717,7 +1733,7 @@ function ComboboxTrigger({ className, ...props }) {
1717
1733
  }
1718
1734
  function ComboboxInput({ className, ...props }) {
1719
1735
  return /* @__PURE__ */ jsx(Combobox$1.Input, {
1720
- className,
1736
+ className: className ?? "_2buwsh0",
1721
1737
  ...props
1722
1738
  });
1723
1739
  }
@@ -1765,18 +1781,18 @@ function ComboboxGroupLabel(props) {
1765
1781
  }
1766
1782
  //#endregion
1767
1783
  //#region src/components/dialog/styles.css.ts
1768
- var backdrop = "vwlngv4";
1769
- var popup$3 = "vwlngv5";
1770
- var header = "vwlngv7";
1771
- var headerContent = "vwlngv8";
1772
- var footer = "vwlngva";
1773
- var title = "vwlngvb";
1774
- var description = "vwlngvc";
1775
- var sheetBackdrop = "vwlngvf";
1776
- var sheetContainer = "vwlngvg";
1777
- var sheetDragHandle = "vwlngvh";
1778
- var sheetDragPill = "vwlngvi";
1779
- var sheetContent = "vwlngvj";
1784
+ var backdrop = "vwlngv0";
1785
+ var popup$3 = "vwlngv1";
1786
+ var header = "vwlngv3";
1787
+ var headerContent = "vwlngv4";
1788
+ var footer = "vwlngv5";
1789
+ var title = "vwlngv6";
1790
+ var description = "vwlngv7";
1791
+ var sheetBackdrop = "vwlngva";
1792
+ var sheetContainer = "vwlngvb";
1793
+ var sheetDragHandle = "vwlngvc";
1794
+ var sheetDragPill = "vwlngvd";
1795
+ var sheetContent = "vwlngve";
1780
1796
  //#endregion
1781
1797
  //#region src/components/dialog/index.tsx
1782
1798
  function Dialog(props) {
@@ -1802,7 +1818,7 @@ function DialogPopup({ showCloseButton = true, className, children, ...props })
1802
1818
  className: `${popup$3}${className ? ` ${className}` : ""}`,
1803
1819
  ...props,
1804
1820
  children: [children, showCloseButton && /* @__PURE__ */ jsx(Dialog$1.Close, {
1805
- className: "vwlngv6",
1821
+ className: "vwlngv2",
1806
1822
  children: /* @__PURE__ */ jsx(X, {})
1807
1823
  })]
1808
1824
  })] });
@@ -1846,7 +1862,7 @@ var listeners = /* @__PURE__ */ new Set();
1846
1862
  function emit() {
1847
1863
  for (const fn of listeners) fn();
1848
1864
  }
1849
- function subscribe(fn) {
1865
+ function subscribe$1(fn) {
1850
1866
  listeners.add(fn);
1851
1867
  return () => {
1852
1868
  listeners.delete(fn);
@@ -1969,7 +1985,7 @@ var SheetStackEntry = ({ item, index }) => {
1969
1985
  }, [dismiss]);
1970
1986
  const zIndex = 50 + index;
1971
1987
  const sheetHeight = sheetRef.current?.offsetHeight || 1;
1972
- const backdropOpacity = isDragging ? Math.max(0, 1 - translateY / sheetHeight) * .5 : .5;
1988
+ const backdropOpacity = isDragging ? Math.max(0, 1 - translateY / sheetHeight) : 1;
1973
1989
  return /* @__PURE__ */ jsx(PortalThemeProvider$1, {
1974
1990
  className: portalClassName ?? "",
1975
1991
  theme,
@@ -2000,12 +2016,12 @@ var SheetStackEntry = ({ item, index }) => {
2000
2016
  children: /* @__PURE__ */ jsx("div", { className: sheetDragPill })
2001
2017
  }),
2002
2018
  (title$3 || description$4) && /* @__PURE__ */ jsxs("div", {
2003
- className: "vwlngvk",
2019
+ className: "vwlngvf",
2004
2020
  children: [title$3 && /* @__PURE__ */ jsx("div", {
2005
- className: "vwlngvb",
2021
+ className: "vwlngv6",
2006
2022
  children: title$3
2007
2023
  }), description$4 && /* @__PURE__ */ jsx("div", {
2008
- className: "vwlngvc",
2024
+ className: "vwlngv7",
2009
2025
  children: description$4
2010
2026
  })]
2011
2027
  }),
@@ -2064,18 +2080,18 @@ var DialogStackEntry = ({ item, index }) => {
2064
2080
  "data-theme": theme,
2065
2081
  style: { zIndex: zIndex + 1 },
2066
2082
  children: [(title$2 || description$3 || showCloseButton) && /* @__PURE__ */ jsxs("div", {
2067
- className: "vwlngv7",
2083
+ className: "vwlngv3",
2068
2084
  children: [(title$2 || description$3) && /* @__PURE__ */ jsxs("div", {
2069
- className: "vwlngv8",
2085
+ className: "vwlngv4",
2070
2086
  children: [title$2 && /* @__PURE__ */ jsx(Dialog$1.Title, {
2071
- className: "vwlngvb",
2087
+ className: "vwlngv6",
2072
2088
  children: title$2
2073
2089
  }), description$3 && /* @__PURE__ */ jsx(Dialog$1.Description, {
2074
- className: "vwlngvc",
2090
+ className: "vwlngv7",
2075
2091
  children: description$3
2076
2092
  })]
2077
2093
  }), showCloseButton && /* @__PURE__ */ jsx(Dialog$1.Close, {
2078
- className: "vwlngv9",
2094
+ className: "vwlngv2",
2079
2095
  children: /* @__PURE__ */ jsx(CloseIcon, {})
2080
2096
  })]
2081
2097
  }), createElement(content, { dismiss })]
@@ -2084,7 +2100,7 @@ var DialogStackEntry = ({ item, index }) => {
2084
2100
  });
2085
2101
  };
2086
2102
  var DialogStackProvider = ({ children }) => {
2087
- const stack = useSyncExternalStore(subscribe, getSnapshot, getSnapshot);
2103
+ const stack = useSyncExternalStore(subscribe$1, getSnapshot, getSnapshot);
2088
2104
  const isMobile = useIsMobile();
2089
2105
  return /* @__PURE__ */ jsxs(Fragment, { children: [children, stack.map((item, index) => shouldUseSheet(item.sheet, isMobile) ? /* @__PURE__ */ jsx(SheetStackEntry, {
2090
2106
  index,
@@ -2095,6 +2111,184 @@ var DialogStackProvider = ({ children }) => {
2095
2111
  }, item.id))] });
2096
2112
  };
2097
2113
  //#endregion
2114
+ //#region src/components/kbd/keys.ts
2115
+ var aliases = {
2116
+ "ctrl": "mod",
2117
+ "control": "mod",
2118
+ "cmd": "mod",
2119
+ "command": "mod",
2120
+ "meta": "mod",
2121
+ "mod": "mod",
2122
+ "option": "alt",
2123
+ "opt": "alt",
2124
+ "alt": "alt",
2125
+ "shift": "shift",
2126
+ "return": "enter",
2127
+ "enter": "enter",
2128
+ "esc": "escape",
2129
+ "escape": "escape",
2130
+ "backspace": "backspace",
2131
+ "del": "delete",
2132
+ "delete": "delete",
2133
+ "arrowup": "up",
2134
+ "up": "up",
2135
+ "arrowdown": "down",
2136
+ "down": "down",
2137
+ "arrowleft": "left",
2138
+ "left": "left",
2139
+ "arrowright": "right",
2140
+ "right": "right",
2141
+ "⌘": "mod",
2142
+ "⌃": "mod",
2143
+ "⇧": "shift",
2144
+ "⌥": "alt",
2145
+ "↵": "enter",
2146
+ "⏎": "enter",
2147
+ "⌫": "backspace",
2148
+ "⌦": "delete",
2149
+ "↑": "up",
2150
+ "↓": "down",
2151
+ "←": "left",
2152
+ "→": "right"
2153
+ };
2154
+ var glyphs = /[←↑→↓↵⇧⌃⌘⌥⌦⌫⏎]/g;
2155
+ function normalize(token) {
2156
+ const lower = token.trim().toLowerCase();
2157
+ return aliases[lower] ?? lower;
2158
+ }
2159
+ function parseShortcut(shortcut) {
2160
+ return (shortcut.includes("+") ? shortcut.split("+") : shortcut.replaceAll(glyphs, (g) => `+${g}+`).split("+")).filter((p) => p.trim() !== "").map(normalize);
2161
+ }
2162
+ var macModifiers = {
2163
+ mod: {
2164
+ label: "⌘",
2165
+ name: "Command"
2166
+ },
2167
+ shift: {
2168
+ label: "⇧",
2169
+ name: "Shift"
2170
+ },
2171
+ alt: {
2172
+ label: "⌥",
2173
+ name: "Option"
2174
+ }
2175
+ };
2176
+ var otherModifiers = {
2177
+ mod: {
2178
+ label: "Ctrl",
2179
+ name: "Control"
2180
+ },
2181
+ shift: {
2182
+ label: "Shift",
2183
+ name: "Shift"
2184
+ },
2185
+ alt: {
2186
+ label: "Alt",
2187
+ name: "Alt"
2188
+ }
2189
+ };
2190
+ var iconKeys = {
2191
+ enter: "Enter",
2192
+ backspace: "Backspace",
2193
+ delete: "Delete",
2194
+ up: "Up",
2195
+ down: "Down",
2196
+ left: "Left",
2197
+ right: "Right"
2198
+ };
2199
+ var namedKeys = {
2200
+ escape: {
2201
+ label: "Esc",
2202
+ name: "Escape"
2203
+ },
2204
+ tab: {
2205
+ label: "Tab",
2206
+ name: "Tab"
2207
+ },
2208
+ space: {
2209
+ label: "Space",
2210
+ name: "Space"
2211
+ }
2212
+ };
2213
+ function keyDisplay(key, platform) {
2214
+ const modifiers = platform === "mac" ? macModifiers : otherModifiers;
2215
+ if (modifiers[key]) return modifiers[key];
2216
+ if (key in iconKeys) return {
2217
+ icon: key,
2218
+ name: iconKeys[key]
2219
+ };
2220
+ if (namedKeys[key]) return namedKeys[key];
2221
+ const label = key.length === 1 ? key.toUpperCase() : key[0].toUpperCase() + key.slice(1);
2222
+ return {
2223
+ label,
2224
+ name: label
2225
+ };
2226
+ }
2227
+ function detectPlatform(nav) {
2228
+ if (!nav) return "other";
2229
+ const source = `${nav.platform ?? ""} ${nav.userAgent ?? ""}`;
2230
+ return /mac|iphone|ipad|ipod/i.test(source) ? "mac" : "other";
2231
+ }
2232
+ //#endregion
2233
+ //#region src/components/kbd/styles.css.ts
2234
+ var group$1 = "lhlko40";
2235
+ var cap = "lhlko41";
2236
+ var size = {
2237
+ sm: "lhlko42",
2238
+ md: "lhlko43"
2239
+ };
2240
+ var tone = {
2241
+ "default": "lhlko44",
2242
+ muted: "lhlko45",
2243
+ inverted: "lhlko46"
2244
+ };
2245
+ var icon = "lhlko47";
2246
+ var mirrored = "lhlko48";
2247
+ var visuallyHidden = "lhlko49";
2248
+ //#endregion
2249
+ //#region src/components/kbd/index.tsx
2250
+ var icons = {
2251
+ enter: CornerDownLeft,
2252
+ backspace: Delete,
2253
+ delete: Delete,
2254
+ up: ArrowUp,
2255
+ down: ArrowDown,
2256
+ left: ArrowLeft,
2257
+ right: ArrowRight
2258
+ };
2259
+ var subscribe = () => () => {};
2260
+ var clientPlatform = () => detectPlatform(typeof navigator === "undefined" ? void 0 : navigator);
2261
+ var serverPlatform = () => "other";
2262
+ function useKbdPlatform() {
2263
+ return useSyncExternalStore(subscribe, clientPlatform, serverPlatform);
2264
+ }
2265
+ function Kbd({ className, keys, platform, size: size$1 = "md", tone: tone$1 = "default" }) {
2266
+ const detected = useKbdPlatform();
2267
+ const resolved = platform ?? detected;
2268
+ const displays = (typeof keys === "string" ? parseShortcut(keys) : keys).map((key) => keyDisplay(key, resolved));
2269
+ const iconSize = size$1 === "sm" ? 11 : 12;
2270
+ const capClass = `${cap} ${size[size$1]} ${tone[tone$1]}`;
2271
+ return /* @__PURE__ */ jsxs("kbd", {
2272
+ className: `${group$1}${className ? ` ${className}` : ""}`,
2273
+ children: [/* @__PURE__ */ jsx("span", {
2274
+ className: visuallyHidden,
2275
+ "data-slot": "kbd-label",
2276
+ children: displays.map((d) => d.name).join(" ")
2277
+ }), displays.map((d, i) => {
2278
+ const Icon = d.icon ? icons[d.icon] : void 0;
2279
+ return /* @__PURE__ */ jsx("kbd", {
2280
+ "aria-hidden": "true",
2281
+ className: capClass,
2282
+ children: Icon ? /* @__PURE__ */ jsx(Icon, {
2283
+ className: d.icon === "delete" ? `${icon} ${mirrored}` : icon,
2284
+ size: iconSize,
2285
+ strokeWidth: 2
2286
+ }) : d.label
2287
+ }, `${d.name}-${i}`);
2288
+ })]
2289
+ });
2290
+ }
2291
+ //#endregion
2098
2292
  //#region src/components/dropdown-menu/styles.css.ts
2099
2293
  var popup$2 = "oih0op0";
2100
2294
  var positioner$2 = "oih0op1";
@@ -2104,7 +2298,7 @@ var label = "_1sxaacb3";
2104
2298
  var checkboxItem = "oih0op3";
2105
2299
  var radioItem = "oih0op3";
2106
2300
  var checkboxIndicator = "oih0op4";
2107
- var radioIndicator = "oih0op5";
2301
+ var radioIndicator = "oih0op4";
2108
2302
  //#endregion
2109
2303
  //#region src/components/dropdown-menu/index.tsx
2110
2304
  function DropdownMenu(props) {
@@ -2153,11 +2347,22 @@ function DropdownMenuLabel({ className, ...props }) {
2153
2347
  ...props
2154
2348
  });
2155
2349
  }
2156
- function DropdownMenuItem({ className, ...props }) {
2157
- return /* @__PURE__ */ jsx(Menu.Item, {
2158
- className: `${item$2}${className ? ` ${className}` : ""}`,
2350
+ function DropdownMenuItem({ className, children, shortcut, variant = "default", ...props }) {
2351
+ const classes = [
2352
+ item$2,
2353
+ variant === "destructive" && "_1sxaacb0",
2354
+ className
2355
+ ].filter(Boolean).join(" ");
2356
+ return /* @__PURE__ */ jsxs(Menu.Item, {
2357
+ className: classes,
2159
2358
  "data-slot": "dropdown-menu-item",
2160
- ...props
2359
+ ...props,
2360
+ children: [children, shortcut && /* @__PURE__ */ jsx(Kbd, {
2361
+ className: "_1sxaacb1",
2362
+ keys: shortcut,
2363
+ size: "sm",
2364
+ tone: "muted"
2365
+ })]
2161
2366
  });
2162
2367
  }
2163
2368
  function DropdownMenuSeparator({ className, ...props }) {
@@ -2569,16 +2774,16 @@ function SegmentedControl({ items, value, onChange, size = "sm", fullWidth = fal
2569
2774
  }
2570
2775
  //#endregion
2571
2776
  //#region src/components/select/styles.css.ts
2572
- var triggerButton = "p74a622";
2573
- var triggerIcon = "p74a623";
2574
- var positioner$1 = "p74a624";
2575
- var popup$1 = "p74a625";
2576
- var group = "p74a626";
2577
- var item = "p74a627";
2578
- var itemIndicator = "p74a628";
2579
- var groupLabel = "p74a629";
2580
- var separator = "p74a62a";
2581
- var scrollButton = "p74a62b";
2777
+ var triggerButton = "p74a620";
2778
+ var triggerIcon = "p74a621";
2779
+ var positioner$1 = "p74a622";
2780
+ var popup$1 = "p74a623";
2781
+ var group = "p74a624";
2782
+ var item = "p74a625";
2783
+ var itemIndicator = "p74a626";
2784
+ var groupLabel = "_1sxaacb3";
2785
+ var separator = "_1sxaacb2";
2786
+ var scrollButton = "p74a627";
2582
2787
  //#endregion
2583
2788
  //#region src/components/select/index.tsx
2584
2789
  function Select(props) {
@@ -2652,7 +2857,8 @@ var spinner = createRuntimeFn({
2652
2857
  defaultClassName: "_131cfek1",
2653
2858
  variantClassNames: { size: {
2654
2859
  sm: "_131cfek2",
2655
- md: "_131cfek3"
2860
+ md: "_131cfek3",
2861
+ lg: "_131cfek4"
2656
2862
  } },
2657
2863
  defaultVariants: { size: "sm" },
2658
2864
  compoundVariants: []
@@ -2727,8 +2933,8 @@ function StatusDot({ status, pulse: showPulse, size, className }) {
2727
2933
  }
2728
2934
  //#endregion
2729
2935
  //#region src/components/tooltip/styles.css.ts
2730
- var positioner = "_1cspf2m2";
2731
- var popup = "_1cspf2m3";
2936
+ var positioner = "_1cspf2m0";
2937
+ var popup = "_1cspf2m1";
2732
2938
  //#endregion
2733
2939
  //#region src/components/tooltip/index.tsx
2734
2940
  function TooltipProvider(props) {
@@ -2749,11 +2955,16 @@ function TooltipPortal({ children, ...props }) {
2749
2955
  function TooltipPositioner(props) {
2750
2956
  return /* @__PURE__ */ jsx(Tooltip.Positioner, { ...props });
2751
2957
  }
2752
- function TooltipPopup({ className, children, ...props }) {
2753
- return /* @__PURE__ */ jsx(Tooltip.Popup, {
2958
+ function TooltipPopup({ className, children, shortcut: shortcut$2, ...props }) {
2959
+ return /* @__PURE__ */ jsxs(Tooltip.Popup, {
2754
2960
  className: `${popup}${className ? ` ${className}` : ""}`,
2755
2961
  ...props,
2756
- children
2962
+ children: [children, shortcut$2 && /* @__PURE__ */ jsx(Kbd, {
2963
+ className: "_1cspf2m2",
2964
+ keys: shortcut$2,
2965
+ size: "sm",
2966
+ tone: "inverted"
2967
+ })]
2757
2968
  });
2758
2969
  }
2759
2970
  function TooltipContent({ side = "top", sideOffset = 6, align = "center", className, children, ...popupProps }) {
@@ -2795,4 +3006,4 @@ function ViewportGate({ children, fallback, threshold = .5 }) {
2795
3006
  });
2796
3007
  }
2797
3008
  //#endregion
2798
- export { ActionBar, ActionButton, Alert, AnimatedCheckbox, AnimatedTabs, AutoResizeTextArea, Badge, CodeBlock, Collapsible, CollapsiblePanel, CollapsibleTrigger, ColorPicker, Combobox, ComboboxContent, ComboboxEmpty, ComboboxGroup, ComboboxGroupLabel, ComboboxInput, ComboboxItem, ComboboxItemIndicator, ComboboxList, ComboboxTrigger, Dialog, DialogBackdrop, DialogClose, DialogDescription, DialogFooter, DialogHeader, DialogPopup, DialogPortal, DialogStackProvider, DialogTitle, DialogTrigger, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuTrigger, Popover, PopoverArrow, PopoverClose, PopoverDescription, PopoverPanel, PopoverPopup, PopoverPortal, PopoverPositioner, PopoverTitle, PopoverTrigger, PortalThemeProvider, PortalThemeWrapper, QuoteAttributionPlugin, ScrollArea, SegmentedControl, Select, SelectContent, SelectGroup, SelectGroupLabel, SelectItem, SelectSeparator, SelectTrigger, SelectValue, Spinner, StatusDot, TooltipContent, TooltipPopup, TooltipPortal, TooltipPositioner, TooltipProvider, TooltipRoot, TooltipTrigger, ViewportGate, codeLanguages, createTooltipHandle, dismissAllDialogs, dismissDialog, dismissTopDialog, getActionButtonClassName, highlightCode, presentDialog, streamdownCodePlugin, usePopover, usePortalTheme };
3009
+ export { ActionBar, ActionButton, Alert, AnimatedCheckbox, AnimatedTabs, AutoResizeTextArea, Badge, CodeBlock, Collapsible, CollapsiblePanel, CollapsibleTrigger, ColorPicker, Combobox, ComboboxContent, ComboboxEmpty, ComboboxGroup, ComboboxGroupLabel, ComboboxInput, ComboboxItem, ComboboxItemIndicator, ComboboxList, ComboboxTrigger, Dialog, DialogBackdrop, DialogClose, DialogDescription, DialogFooter, DialogHeader, DialogPopup, DialogPortal, DialogStackProvider, DialogTitle, DialogTrigger, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuTrigger, Kbd, Popover, PopoverArrow, PopoverClose, PopoverDescription, PopoverPanel, PopoverPopup, PopoverPortal, PopoverPositioner, PopoverTitle, PopoverTrigger, PortalThemeProvider, PortalThemeWrapper, QuoteAttributionPlugin, ScrollArea, SegmentedControl, Select, SelectContent, SelectGroup, SelectGroupLabel, SelectItem, SelectSeparator, SelectTrigger, SelectValue, Spinner, StatusDot, TooltipContent, TooltipPopup, TooltipPortal, TooltipPositioner, TooltipProvider, TooltipRoot, TooltipTrigger, ViewportGate, codeLanguages, createTooltipHandle, detectPlatform, dismissAllDialogs, dismissDialog, dismissTopDialog, getActionButtonClassName, highlightCode, keyDisplay, parseShortcut, presentDialog, streamdownCodePlugin, useKbdPlatform, usePopover, usePortalTheme };