@neuronection/assistant-ui 0.1.0 → 0.3.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 (131) hide show
  1. package/CHANGELOG.md +40 -0
  2. package/README.md +40 -9
  3. package/dist/badge.js +1 -1
  4. package/dist/button.js +1 -1
  5. package/dist/check-indicator.d.ts +12 -0
  6. package/dist/check-indicator.js +3 -0
  7. package/dist/check-indicator.js.map +1 -0
  8. package/dist/chip-input.d.ts +14 -0
  9. package/dist/chip-input.js +3 -0
  10. package/dist/chip-input.js.map +1 -0
  11. package/dist/chip-list.d.ts +15 -0
  12. package/dist/chip-list.js +3 -0
  13. package/dist/chip-list.js.map +1 -0
  14. package/dist/chunk-2KO2YIZN.js +357 -0
  15. package/dist/chunk-2KO2YIZN.js.map +1 -0
  16. package/dist/chunk-3522NABN.js +452 -0
  17. package/dist/chunk-3522NABN.js.map +1 -0
  18. package/dist/chunk-4SW3ESVI.js +111 -0
  19. package/dist/chunk-4SW3ESVI.js.map +1 -0
  20. package/dist/chunk-5AVBKEDQ.js +74 -0
  21. package/dist/chunk-5AVBKEDQ.js.map +1 -0
  22. package/dist/chunk-5X3RYDPC.js +54 -0
  23. package/dist/chunk-5X3RYDPC.js.map +1 -0
  24. package/dist/chunk-BJOY3XL7.js +27 -0
  25. package/dist/chunk-BJOY3XL7.js.map +1 -0
  26. package/dist/chunk-BPTGPF3L.js +3 -0
  27. package/dist/chunk-BPTGPF3L.js.map +1 -0
  28. package/dist/chunk-DV3MXDLN.js +46 -0
  29. package/dist/chunk-DV3MXDLN.js.map +1 -0
  30. package/dist/chunk-ESUTPQDO.js +21 -0
  31. package/dist/chunk-ESUTPQDO.js.map +1 -0
  32. package/dist/{chunk-TLTKWLMN.js → chunk-GA3XIDVX.js} +3 -3
  33. package/dist/{chunk-TLTKWLMN.js.map → chunk-GA3XIDVX.js.map} +1 -1
  34. package/dist/chunk-GPIN2ITX.js +63 -0
  35. package/dist/chunk-GPIN2ITX.js.map +1 -0
  36. package/dist/{chunk-56VRWCLJ.js → chunk-GTXGTQ6F.js} +2 -2
  37. package/dist/{chunk-56VRWCLJ.js.map → chunk-GTXGTQ6F.js.map} +1 -1
  38. package/dist/chunk-H5U4KNXF.js +63 -0
  39. package/dist/chunk-H5U4KNXF.js.map +1 -0
  40. package/dist/chunk-HSUCCANX.js +44 -0
  41. package/dist/chunk-HSUCCANX.js.map +1 -0
  42. package/dist/chunk-KXLMTAZ5.js +109 -0
  43. package/dist/chunk-KXLMTAZ5.js.map +1 -0
  44. package/dist/chunk-LEDQQBVV.js +184 -0
  45. package/dist/chunk-LEDQQBVV.js.map +1 -0
  46. package/dist/chunk-MXOBOS4Y.js +60 -0
  47. package/dist/chunk-MXOBOS4Y.js.map +1 -0
  48. package/dist/chunk-N5KQRHXU.js +107 -0
  49. package/dist/chunk-N5KQRHXU.js.map +1 -0
  50. package/dist/chunk-OAR74ML4.js +3 -0
  51. package/dist/chunk-OAR74ML4.js.map +1 -0
  52. package/dist/chunk-OUHUVACM.js +45 -0
  53. package/dist/chunk-OUHUVACM.js.map +1 -0
  54. package/dist/chunk-PPH3G7AL.js +3 -0
  55. package/dist/chunk-PPH3G7AL.js.map +1 -0
  56. package/dist/chunk-RU3DEF2O.js +186 -0
  57. package/dist/chunk-RU3DEF2O.js.map +1 -0
  58. package/dist/{chunk-NQQNTK6L.js → chunk-SKTLC2XY.js} +2 -2
  59. package/dist/{chunk-NQQNTK6L.js.map → chunk-SKTLC2XY.js.map} +1 -1
  60. package/dist/chunk-TPLQL62V.js +124 -0
  61. package/dist/chunk-TPLQL62V.js.map +1 -0
  62. package/dist/chunk-UIUALJNR.js +110 -0
  63. package/dist/chunk-UIUALJNR.js.map +1 -0
  64. package/dist/chunk-WZSAUESL.js +58 -0
  65. package/dist/chunk-WZSAUESL.js.map +1 -0
  66. package/dist/chunk-XE4TFW63.js +34 -0
  67. package/dist/chunk-XE4TFW63.js.map +1 -0
  68. package/dist/chunk-XLD2BPTT.js +82 -0
  69. package/dist/chunk-XLD2BPTT.js.map +1 -0
  70. package/dist/combobox.d.ts +54 -0
  71. package/dist/combobox.js +3 -0
  72. package/dist/combobox.js.map +1 -0
  73. package/dist/confirmation-modal.js +1 -1
  74. package/dist/context-menu.d.ts +22 -0
  75. package/dist/context-menu.js +3 -0
  76. package/dist/context-menu.js.map +1 -0
  77. package/dist/date-picker.d.ts +26 -0
  78. package/dist/date-picker.js +3 -0
  79. package/dist/date-picker.js.map +1 -0
  80. package/dist/error-banner.d.ts +10 -0
  81. package/dist/error-banner.js +3 -0
  82. package/dist/error-banner.js.map +1 -0
  83. package/dist/expandable-search.d.ts +16 -0
  84. package/dist/expandable-search.js +3 -0
  85. package/dist/expandable-search.js.map +1 -0
  86. package/dist/field-label.d.ts +13 -0
  87. package/dist/field-label.js +3 -0
  88. package/dist/field-label.js.map +1 -0
  89. package/dist/form-modal.d.ts +23 -0
  90. package/dist/form-modal.js +3 -0
  91. package/dist/form-modal.js.map +1 -0
  92. package/dist/index.d.ts +23 -0
  93. package/dist/index.js +30 -8
  94. package/dist/info-button.d.ts +13 -0
  95. package/dist/info-button.js +3 -0
  96. package/dist/info-button.js.map +1 -0
  97. package/dist/marquee.d.ts +39 -0
  98. package/dist/marquee.js +3 -0
  99. package/dist/marquee.js.map +1 -0
  100. package/dist/menu.d.ts +38 -0
  101. package/dist/menu.js +3 -0
  102. package/dist/menu.js.map +1 -0
  103. package/dist/popover-button.d.ts +23 -0
  104. package/dist/popover-button.js +3 -0
  105. package/dist/popover-button.js.map +1 -0
  106. package/dist/range-bar.d.ts +15 -0
  107. package/dist/range-bar.js +3 -0
  108. package/dist/range-bar.js.map +1 -0
  109. package/dist/scale-slider.d.ts +18 -0
  110. package/dist/scale-slider.js +3 -0
  111. package/dist/scale-slider.js.map +1 -0
  112. package/dist/search-input.d.ts +15 -0
  113. package/dist/search-input.js +3 -0
  114. package/dist/search-input.js.map +1 -0
  115. package/dist/selection-bar.d.ts +13 -0
  116. package/dist/selection-bar.js +3 -0
  117. package/dist/selection-bar.js.map +1 -0
  118. package/dist/styles.css +1 -1
  119. package/dist/table.d.ts +10 -0
  120. package/dist/table.js +3 -0
  121. package/dist/table.js.map +1 -0
  122. package/dist/undo-notice.d.ts +14 -0
  123. package/dist/undo-notice.js +3 -0
  124. package/dist/undo-notice.js.map +1 -0
  125. package/dist/view-toggle.d.ts +13 -0
  126. package/dist/view-toggle.js +3 -0
  127. package/dist/view-toggle.js.map +1 -0
  128. package/dist/wizard.d.ts +57 -0
  129. package/dist/wizard.js +3 -0
  130. package/dist/wizard.js.map +1 -0
  131. package/package.json +97 -4
@@ -0,0 +1,82 @@
1
+ import { cn } from './chunk-BLJWR4ZV.js';
2
+ import * as React from 'react';
3
+ import { X, ChevronRight } from 'lucide-react';
4
+ import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
5
+
6
+ var chipTints = {
7
+ primary: "bg-[color-mix(in_srgb,var(--as-primary)_12%,transparent)] text-[var(--as-primary)]",
8
+ success: "bg-[color-mix(in_srgb,var(--as-success)_14%,transparent)] text-[var(--as-success)]",
9
+ warning: "bg-[color-mix(in_srgb,var(--as-warning)_18%,transparent)] text-[color-mix(in_srgb,var(--as-warning)_72%,var(--as-fg))]",
10
+ danger: "bg-[color-mix(in_srgb,var(--as-danger)_12%,transparent)] text-[var(--as-danger)]"
11
+ };
12
+ var ChipList = React.forwardRef(
13
+ function ChipList2({
14
+ items,
15
+ onRemove,
16
+ onItemClick,
17
+ variant = "neutral",
18
+ emptyText,
19
+ showChevron = false,
20
+ removeLabel = "Remove",
21
+ className,
22
+ ...props
23
+ }, ref) {
24
+ const cleaned = items.filter((item) => Boolean(item));
25
+ if (cleaned.length === 0) {
26
+ if (!emptyText) return null;
27
+ return /* @__PURE__ */ jsx("p", { className: cn("text-sm text-[var(--as-muted-fg)]", className), children: emptyText });
28
+ }
29
+ return /* @__PURE__ */ jsx(
30
+ "div",
31
+ {
32
+ ref,
33
+ "data-as": "chip-list",
34
+ className: cn("flex flex-wrap gap-1.5", className),
35
+ ...props,
36
+ children: cleaned.map((item, index) => {
37
+ const tint = variant === "neutral" ? "bg-[var(--as-secondary)] text-[var(--as-secondary-fg)]" : chipTints[variant];
38
+ const content = /* @__PURE__ */ jsxs(Fragment, { children: [
39
+ item,
40
+ onItemClick && showChevron ? /* @__PURE__ */ jsx(ChevronRight, { className: "size-3 opacity-60", "aria-hidden": true }) : null
41
+ ] });
42
+ return /* @__PURE__ */ jsxs(
43
+ "span",
44
+ {
45
+ className: cn(
46
+ "inline-flex items-center gap-1 rounded-[calc(var(--as-radius-sm)-2px)] py-0.5 pl-2.5 pr-1.5 text-xs font-medium",
47
+ onItemClick && "cursor-pointer transition-[filter] hover:brightness-95 focus-visible:outline-2 focus-visible:outline-offset-1 focus-visible:outline-[var(--as-focus-ring)]",
48
+ tint
49
+ ),
50
+ children: [
51
+ onItemClick ? /* @__PURE__ */ jsx(
52
+ "button",
53
+ {
54
+ type: "button",
55
+ onClick: () => onItemClick(item, index),
56
+ className: "cursor-pointer bg-transparent p-0 text-inherit outline-none",
57
+ children: content
58
+ }
59
+ ) : content,
60
+ onRemove ? /* @__PURE__ */ jsx(
61
+ "button",
62
+ {
63
+ type: "button",
64
+ "aria-label": `${removeLabel} ${item}`,
65
+ onClick: () => onRemove(item),
66
+ className: "cursor-pointer opacity-70 transition-colors hover:text-[var(--as-danger)] hover:opacity-100 focus-visible:outline-2 focus-visible:outline-offset-1 focus-visible:outline-[var(--as-focus-ring)]",
67
+ children: /* @__PURE__ */ jsx(X, { className: "size-3", "aria-hidden": true })
68
+ }
69
+ ) : null
70
+ ]
71
+ },
72
+ `${item}-${index}`
73
+ );
74
+ })
75
+ }
76
+ );
77
+ }
78
+ );
79
+
80
+ export { ChipList };
81
+ //# sourceMappingURL=chunk-XLD2BPTT.js.map
82
+ //# sourceMappingURL=chunk-XLD2BPTT.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/chip-list/ChipList.tsx"],"names":["ChipList"],"mappings":";;;;;AAgBA,IAAM,SAAA,GAA6D;AAAA,EACjE,OAAA,EAAS,oFAAA;AAAA,EACT,OAAA,EACE,oFAAA;AAAA,EACF,OAAA,EACE,wHAAA;AAAA,EACF,MAAA,EAAQ;AACV,CAAA;AAEO,IAAM,QAAA,GAAiB,KAAA,CAAA,UAAA;AAAA,EAC5B,SAASA,SAAAA,CACP;AAAA,IACE,KAAA;AAAA,IACA,QAAA;AAAA,IACA,WAAA;AAAA,IACA,OAAA,GAAU,SAAA;AAAA,IACV,SAAA;AAAA,IACA,WAAA,GAAc,KAAA;AAAA,IACd,WAAA,GAAc,QAAA;AAAA,IACd,SAAA;AAAA,IACA,GAAG;AAAA,KAEL,GAAA,EACA;AACA,IAAA,MAAM,UAAU,KAAA,CAAM,MAAA,CAAO,CAAC,IAAA,KAAyB,OAAA,CAAQ,IAAI,CAAC,CAAA;AAEpE,IAAA,IAAI,OAAA,CAAQ,WAAW,CAAA,EAAG;AACxB,MAAA,IAAI,CAAC,WAAW,OAAO,IAAA;AACvB,MAAA,2BACG,GAAA,EAAA,EAAE,SAAA,EAAW,GAAG,mCAAA,EAAqC,SAAS,GAC5D,QAAA,EAAA,SAAA,EACH,CAAA;AAAA,IAEJ;AAEA,IAAA,uBACE,GAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,GAAA;AAAA,QACA,SAAA,EAAQ,WAAA;AAAA,QACR,SAAA,EAAW,EAAA,CAAG,wBAAA,EAA0B,SAAS,CAAA;AAAA,QAChD,GAAG,KAAA;AAAA,QAEH,QAAA,EAAA,OAAA,CAAQ,GAAA,CAAI,CAAC,IAAA,EAAM,KAAA,KAAU;AAC5B,UAAA,MAAM,IAAA,GACJ,OAAA,KAAY,SAAA,GACR,wDAAA,GACA,UAAU,OAAO,CAAA;AACvB,UAAA,MAAM,0BACJ,IAAA,CAAA,QAAA,EAAA,EACG,QAAA,EAAA;AAAA,YAAA,IAAA;AAAA,YACA,WAAA,IAAe,8BACd,GAAA,CAAC,YAAA,EAAA,EAAa,WAAU,mBAAA,EAAoB,aAAA,EAAW,MAAC,CAAA,GACtD;AAAA,WAAA,EACN,CAAA;AAEF,UAAA,uBACE,IAAA;AAAA,YAAC,MAAA;AAAA,YAAA;AAAA,cAEC,SAAA,EAAW,EAAA;AAAA,gBACT,iHAAA;AAAA,gBACA,WAAA,IACE,4JAAA;AAAA,gBACF;AAAA,eACF;AAAA,cAEC,QAAA,EAAA;AAAA,gBAAA,WAAA,mBACC,GAAA;AAAA,kBAAC,QAAA;AAAA,kBAAA;AAAA,oBACC,IAAA,EAAK,QAAA;AAAA,oBACL,OAAA,EAAS,MAAM,WAAA,CAAY,IAAA,EAAM,KAAK,CAAA;AAAA,oBACtC,SAAA,EAAU,6DAAA;AAAA,oBAET,QAAA,EAAA;AAAA;AAAA,iBACH,GAEA,OAAA;AAAA,gBAED,QAAA,mBACC,GAAA;AAAA,kBAAC,QAAA;AAAA,kBAAA;AAAA,oBACC,IAAA,EAAK,QAAA;AAAA,oBACL,YAAA,EAAY,CAAA,EAAG,WAAW,CAAA,CAAA,EAAI,IAAI,CAAA,CAAA;AAAA,oBAClC,OAAA,EAAS,MAAM,QAAA,CAAS,IAAI,CAAA;AAAA,oBAC5B,SAAA,EAAU,iMAAA;AAAA,oBAEV,QAAA,kBAAA,GAAA,CAAC,CAAA,EAAA,EAAE,SAAA,EAAU,QAAA,EAAS,eAAW,IAAA,EAAC;AAAA;AAAA,iBACpC,GACE;AAAA;AAAA,aAAA;AAAA,YA5BC,CAAA,EAAG,IAAI,CAAA,CAAA,EAAI,KAAK,CAAA;AAAA,WA6BvB;AAAA,QAEJ,CAAC;AAAA;AAAA,KACH;AAAA,EAEJ;AACF","file":"chunk-XLD2BPTT.js","sourcesContent":["import * as React from 'react'\nimport { ChevronRight, X } from 'lucide-react'\nimport { cn } from '../../lib/utils'\n\nexport type ChipVariant = 'neutral' | 'primary' | 'success' | 'warning' | 'danger'\n\nexport interface ChipListProps extends React.ComponentProps<'div'> {\n items: ReadonlyArray<string | null | undefined>\n onRemove?: (item: string) => void\n onItemClick?: (value: string, index: number) => void\n variant?: ChipVariant\n emptyText?: string\n showChevron?: boolean\n removeLabel?: string\n}\n\nconst chipTints: Record<Exclude<ChipVariant, 'neutral'>, string> = {\n primary: 'bg-[color-mix(in_srgb,var(--as-primary)_12%,transparent)] text-[var(--as-primary)]',\n success:\n 'bg-[color-mix(in_srgb,var(--as-success)_14%,transparent)] text-[var(--as-success)]',\n warning:\n 'bg-[color-mix(in_srgb,var(--as-warning)_18%,transparent)] text-[color-mix(in_srgb,var(--as-warning)_72%,var(--as-fg))]',\n danger: 'bg-[color-mix(in_srgb,var(--as-danger)_12%,transparent)] text-[var(--as-danger)]',\n}\n\nexport const ChipList = React.forwardRef<HTMLDivElement, ChipListProps>(\n function ChipList(\n {\n items,\n onRemove,\n onItemClick,\n variant = 'neutral',\n emptyText,\n showChevron = false,\n removeLabel = 'Remove',\n className,\n ...props\n },\n ref,\n ) {\n const cleaned = items.filter((item): item is string => Boolean(item))\n\n if (cleaned.length === 0) {\n if (!emptyText) return null\n return (\n <p className={cn('text-sm text-[var(--as-muted-fg)]', className)}>\n {emptyText}\n </p>\n )\n }\n\n return (\n <div\n ref={ref}\n data-as=\"chip-list\"\n className={cn('flex flex-wrap gap-1.5', className)}\n {...props}\n >\n {cleaned.map((item, index) => {\n const tint =\n variant === 'neutral'\n ? 'bg-[var(--as-secondary)] text-[var(--as-secondary-fg)]'\n : chipTints[variant]\n const content = (\n <>\n {item}\n {onItemClick && showChevron ? (\n <ChevronRight className=\"size-3 opacity-60\" aria-hidden />\n ) : null}\n </>\n )\n return (\n <span\n key={`${item}-${index}`}\n className={cn(\n 'inline-flex items-center gap-1 rounded-[calc(var(--as-radius-sm)-2px)] py-0.5 pl-2.5 pr-1.5 text-xs font-medium',\n onItemClick &&\n 'cursor-pointer transition-[filter] hover:brightness-95 focus-visible:outline-2 focus-visible:outline-offset-1 focus-visible:outline-[var(--as-focus-ring)]',\n tint,\n )}\n >\n {onItemClick ? (\n <button\n type=\"button\"\n onClick={() => onItemClick(item, index)}\n className=\"cursor-pointer bg-transparent p-0 text-inherit outline-none\"\n >\n {content}\n </button>\n ) : (\n content\n )}\n {onRemove ? (\n <button\n type=\"button\"\n aria-label={`${removeLabel} ${item}`}\n onClick={() => onRemove(item)}\n className=\"cursor-pointer opacity-70 transition-colors hover:text-[var(--as-danger)] hover:opacity-100 focus-visible:outline-2 focus-visible:outline-offset-1 focus-visible:outline-[var(--as-focus-ring)]\"\n >\n <X className=\"size-3\" aria-hidden />\n </button>\n ) : null}\n </span>\n )\n })}\n </div>\n )\n },\n)\n"]}
@@ -0,0 +1,54 @@
1
+ import * as React from 'react';
2
+
3
+ interface ComboboxOption {
4
+ value: string;
5
+ label: string;
6
+ description?: string;
7
+ group?: string;
8
+ disabled?: boolean;
9
+ }
10
+ interface ComboboxProps {
11
+ options: ComboboxOption[];
12
+ value?: string;
13
+ onChange: (value: string) => void;
14
+ placeholder?: string;
15
+ searchPlaceholder?: string;
16
+ searchLabel?: string;
17
+ emptyLabel?: string;
18
+ loadingLabel?: string;
19
+ loading?: boolean;
20
+ disabled?: boolean;
21
+ clearable?: boolean;
22
+ clearLabel?: string;
23
+ onSearchChange?: (term: string) => void;
24
+ onOpenChange?: (open: boolean) => void;
25
+ label?: string;
26
+ error?: string;
27
+ id?: string;
28
+ className?: string;
29
+ panelClassName?: string;
30
+ }
31
+ declare const Combobox: React.ForwardRefExoticComponent<ComboboxProps & React.RefAttributes<HTMLButtonElement>>;
32
+ interface ComboboxMultiProps {
33
+ options: ComboboxOption[];
34
+ value: string[];
35
+ onChange: (value: string[]) => void;
36
+ placeholder?: string;
37
+ searchPlaceholder?: string;
38
+ searchLabel?: string;
39
+ emptyLabel?: string;
40
+ loadingLabel?: string;
41
+ loading?: boolean;
42
+ disabled?: boolean;
43
+ maxTriggerLabels?: number;
44
+ onSearchChange?: (term: string) => void;
45
+ onOpenChange?: (open: boolean) => void;
46
+ label?: string;
47
+ error?: string;
48
+ id?: string;
49
+ className?: string;
50
+ panelClassName?: string;
51
+ }
52
+ declare const ComboboxMulti: React.ForwardRefExoticComponent<ComboboxMultiProps & React.RefAttributes<HTMLButtonElement>>;
53
+
54
+ export { Combobox, ComboboxMulti, type ComboboxMultiProps, type ComboboxOption, type ComboboxProps };
@@ -0,0 +1,3 @@
1
+ export { Combobox, ComboboxMulti } from './chunk-3522NABN.js';
2
+ //# sourceMappingURL=combobox.js.map
3
+ //# sourceMappingURL=combobox.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"combobox.js"}
@@ -1,3 +1,3 @@
1
- export { ConfirmationModal } from './chunk-TLTKWLMN.js';
1
+ export { ConfirmationModal } from './chunk-GA3XIDVX.js';
2
2
  //# sourceMappingURL=confirmation-modal.js.map
3
3
  //# sourceMappingURL=confirmation-modal.js.map
@@ -0,0 +1,22 @@
1
+ import * as React from 'react';
2
+ import { LucideIcon } from 'lucide-react';
3
+
4
+ interface ContextMenuItem {
5
+ key: string;
6
+ label: string;
7
+ icon?: LucideIcon;
8
+ onSelect?: () => void;
9
+ danger?: boolean;
10
+ disabled?: boolean;
11
+ hint?: string;
12
+ }
13
+ interface ContextMenuProps {
14
+ x: number;
15
+ y: number;
16
+ items: ContextMenuItem[];
17
+ onClose: () => void;
18
+ className?: string;
19
+ }
20
+ declare function ContextMenu({ x, y, items, onClose, className }: ContextMenuProps): React.JSX.Element;
21
+
22
+ export { ContextMenu, type ContextMenuItem, type ContextMenuProps };
@@ -0,0 +1,3 @@
1
+ export { ContextMenu } from './chunk-WZSAUESL.js';
2
+ //# sourceMappingURL=context-menu.js.map
3
+ //# sourceMappingURL=context-menu.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"context-menu.js"}
@@ -0,0 +1,26 @@
1
+ import * as React from 'react';
2
+
3
+ interface DatePickerProps {
4
+ value: string | null | undefined;
5
+ onChange: (value: string) => void;
6
+ onClear?: () => void;
7
+ allowClear?: boolean;
8
+ clearLabel?: string;
9
+ placeholder?: string;
10
+ displayFormat?: string;
11
+ minDate?: Date;
12
+ maxDate?: Date;
13
+ weekStartsOn?: 0 | 1;
14
+ disabled?: boolean;
15
+ required?: boolean;
16
+ id?: string;
17
+ name?: string;
18
+ label?: string;
19
+ prevLabel?: string;
20
+ nextLabel?: string;
21
+ className?: string;
22
+ panelClassName?: string;
23
+ }
24
+ declare const DatePicker: React.ForwardRefExoticComponent<DatePickerProps & React.RefAttributes<HTMLDivElement>>;
25
+
26
+ export { DatePicker, type DatePickerProps };
@@ -0,0 +1,3 @@
1
+ export { DatePicker } from './chunk-2KO2YIZN.js';
2
+ //# sourceMappingURL=date-picker.js.map
3
+ //# sourceMappingURL=date-picker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"date-picker.js"}
@@ -0,0 +1,10 @@
1
+ import * as React from 'react';
2
+
3
+ interface ErrorBannerProps {
4
+ message: string | null | undefined;
5
+ action?: React.ReactNode;
6
+ className?: string;
7
+ }
8
+ declare function ErrorBanner({ message, action, className }: ErrorBannerProps): React.JSX.Element | null;
9
+
10
+ export { ErrorBanner, type ErrorBannerProps };
@@ -0,0 +1,3 @@
1
+ export { ErrorBanner } from './chunk-BJOY3XL7.js';
2
+ //# sourceMappingURL=error-banner.js.map
3
+ //# sourceMappingURL=error-banner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"error-banner.js"}
@@ -0,0 +1,16 @@
1
+ import * as React from 'react';
2
+
3
+ interface ExpandableSearchProps {
4
+ value: string;
5
+ onChange: (value: string) => void;
6
+ onSubmit?: (value: string) => void;
7
+ onClear?: () => void;
8
+ placeholder: string;
9
+ ariaLabel: string;
10
+ clearLabel?: string;
11
+ expandLabel?: string;
12
+ className?: string;
13
+ }
14
+ declare const ExpandableSearch: React.ForwardRefExoticComponent<ExpandableSearchProps & React.RefAttributes<HTMLInputElement>>;
15
+
16
+ export { ExpandableSearch, type ExpandableSearchProps };
@@ -0,0 +1,3 @@
1
+ export { ExpandableSearch } from './chunk-4SW3ESVI.js';
2
+ //# sourceMappingURL=expandable-search.js.map
3
+ //# sourceMappingURL=expandable-search.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"expandable-search.js"}
@@ -0,0 +1,13 @@
1
+ import * as React from 'react';
2
+
3
+ interface FieldLabelProps {
4
+ children: React.ReactNode;
5
+ info: React.ReactNode;
6
+ infoTitle?: React.ReactNode;
7
+ label?: string;
8
+ showOnHover?: boolean;
9
+ className?: string;
10
+ }
11
+ declare function FieldLabel({ children, info, infoTitle, label, showOnHover, className, }: FieldLabelProps): React.JSX.Element;
12
+
13
+ export { FieldLabel, type FieldLabelProps };
@@ -0,0 +1,3 @@
1
+ export { FieldLabel } from './chunk-ESUTPQDO.js';
2
+ //# sourceMappingURL=field-label.js.map
3
+ //# sourceMappingURL=field-label.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"field-label.js"}
@@ -0,0 +1,23 @@
1
+ import * as React from 'react';
2
+ import { LucideIcon } from 'lucide-react';
3
+
4
+ interface FormModalProps {
5
+ open: boolean;
6
+ onOpenChange: (open: boolean) => void;
7
+ title: React.ReactNode;
8
+ description?: React.ReactNode;
9
+ icon?: LucideIcon;
10
+ children: React.ReactNode;
11
+ onSubmit?: () => void;
12
+ submitting?: boolean;
13
+ submitDisabled?: boolean;
14
+ submitLabel?: string;
15
+ cancelLabel?: string;
16
+ closeLabel?: string;
17
+ size?: 'sm' | 'md' | 'lg' | 'xl';
18
+ contentClassName?: string;
19
+ footer?: React.ReactNode;
20
+ }
21
+ declare function FormModal({ open, onOpenChange, title, description, icon: Icon, children, onSubmit, submitting, submitDisabled, submitLabel, cancelLabel, closeLabel, size, contentClassName, footer, }: FormModalProps): React.JSX.Element;
22
+
23
+ export { FormModal, type FormModalProps };
@@ -0,0 +1,3 @@
1
+ export { FormModal } from './chunk-GPIN2ITX.js';
2
+ //# sourceMappingURL=form-modal.js.map
3
+ //# sourceMappingURL=form-modal.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"form-modal.js"}
package/dist/index.d.ts CHANGED
@@ -6,17 +6,40 @@ export { ThemeScope, ThemeScopeProps } from './theme-scope.js';
6
6
  export { Badge, BadgeProps, badgeVariants } from './badge.js';
7
7
  export { Button, ButtonProps, buttonVariants } from './button.js';
8
8
  export { Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle } from './card.js';
9
+ export { CheckIndicator, CheckIndicatorProps } from './check-indicator.js';
10
+ export { ChipInput, ChipInputProps } from './chip-input.js';
11
+ export { ChipList, ChipListProps, ChipVariant } from './chip-list.js';
12
+ export { Combobox, ComboboxMulti, ComboboxMultiProps, ComboboxOption, ComboboxProps } from './combobox.js';
9
13
  export { ConfirmationModal, ConfirmationModalProps } from './confirmation-modal.js';
14
+ export { ContextMenu, ContextMenuItem, ContextMenuProps } from './context-menu.js';
15
+ export { DatePicker, DatePickerProps } from './date-picker.js';
10
16
  export { EmptyState, EmptyStateProps } from './empty-state.js';
17
+ export { ErrorBanner, ErrorBannerProps } from './error-banner.js';
18
+ export { ExpandableSearch, ExpandableSearchProps } from './expandable-search.js';
19
+ export { FieldLabel, FieldLabelProps } from './field-label.js';
20
+ export { FormModal, FormModalProps } from './form-modal.js';
21
+ export { InfoButton, InfoButtonProps } from './info-button.js';
11
22
  export { Input, InputProps } from './input.js';
23
+ export { MarqueeBand, MarqueePhase, MarqueeSelection, MarqueeSurface, MarqueeSurfaceProps, Rect, UseMarqueeOptions, hitTestIds, marqueeRect, rectsIntersect, useMarquee } from './marquee.js';
24
+ export { ActionMenu, ActionMenuItem, ActionMenuProps, Menu, MenuContent, MenuGroup, MenuItem, MenuItemProps, MenuLabel, MenuSeparator, MenuTrigger } from './menu.js';
12
25
  export { Modal, ModalClose, ModalContent, ModalContentProps, ModalDescription, ModalFooter, ModalHeader, ModalTitle, ModalTrigger, modalContentVariants } from './modal.js';
13
26
  export { Popover, PopoverAnchor, PopoverClose, PopoverContent, PopoverTrigger } from './popover.js';
27
+ export { PopoverButton, PopoverButtonProps } from './popover-button.js';
28
+ export { RangeBar, RangeBarProps } from './range-bar.js';
29
+ export { ScaleSlider, ScaleSliderProps, scaleColorForValue } from './scale-slider.js';
30
+ export { SearchInput, SearchInputProps } from './search-input.js';
31
+ export { SelectionBar, SelectionBarProps } from './selection-bar.js';
14
32
  export { Spinner, SpinnerProps } from './spinner.js';
33
+ export { Table, TableProps } from './table.js';
15
34
  export { InfoTooltip, InfoTooltipProps, Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from './tooltip.js';
35
+ export { UndoNotice, UndoNoticeProps } from './undo-notice.js';
36
+ export { ViewToggle, ViewToggleProps, ViewToggleView } from './view-toggle.js';
37
+ export { Stepper, StepperProps, StepperStep, Wizard, WizardContext, WizardProps, WizardStep } from './wizard.js';
16
38
  import 'react';
17
39
  import 'class-variance-authority/types';
18
40
  import 'class-variance-authority';
19
41
  import 'lucide-react';
42
+ import '@radix-ui/react-dropdown-menu';
20
43
  import '@radix-ui/react-dialog';
21
44
  import '@radix-ui/react-popover';
22
45
  import '@radix-ui/react-tooltip';
package/dist/index.js CHANGED
@@ -1,16 +1,38 @@
1
+ export { InfoTooltip, Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from './chunk-TJGX27YO.js';
2
+ export { UndoNotice } from './chunk-OUHUVACM.js';
3
+ export { ViewToggle } from './chunk-MXOBOS4Y.js';
4
+ export { Stepper, Wizard } from './chunk-LEDQQBVV.js';
1
5
  export { Portal } from './chunk-7YLR4AGA.js';
6
+ export { RangeBar } from './chunk-5AVBKEDQ.js';
7
+ export { ScaleSlider, scaleColorForValue } from './chunk-UIUALJNR.js';
8
+ export { SearchInput } from './chunk-H5U4KNXF.js';
9
+ export { SelectionBar } from './chunk-HSUCCANX.js';
10
+ export { Table } from './chunk-5X3RYDPC.js';
2
11
  export { ThemeScope } from './chunk-TGU3PKNM.js';
3
- export { InfoTooltip, Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from './chunk-TJGX27YO.js';
12
+ export { FormModal } from './chunk-GPIN2ITX.js';
13
+ export { Input } from './chunk-COPPAHR5.js';
14
+ export { MarqueeBand, MarqueeSurface, hitTestIds, marqueeRect, rectsIntersect, useMarquee } from './chunk-RU3DEF2O.js';
15
+ export { Combobox, ComboboxMulti } from './chunk-3522NABN.js';
16
+ export { ConfirmationModal } from './chunk-GA3XIDVX.js';
17
+ export { Modal, ModalClose, ModalContent, ModalDescription, ModalFooter, ModalHeader, ModalTitle, ModalTrigger, modalContentVariants } from './chunk-RHBQ3GZE.js';
18
+ export { ContextMenu } from './chunk-WZSAUESL.js';
19
+ export { ActionMenu, Menu, MenuContent, MenuGroup, MenuItem, MenuLabel, MenuSeparator, MenuTrigger } from './chunk-KXLMTAZ5.js';
20
+ export { DatePicker } from './chunk-2KO2YIZN.js';
4
21
  export { Popover, PopoverAnchor, PopoverClose, PopoverContent, PopoverTrigger } from './chunk-CI56SSO2.js';
22
+ export { EmptyState } from './chunk-KDJLYKR6.js';
23
+ export { ErrorBanner } from './chunk-BJOY3XL7.js';
24
+ export { ExpandableSearch } from './chunk-4SW3ESVI.js';
25
+ export { FieldLabel } from './chunk-ESUTPQDO.js';
26
+ export { InfoButton } from './chunk-DV3MXDLN.js';
27
+ export { PopoverButton } from './chunk-N5KQRHXU.js';
5
28
  export { rawTokens, semanticTokens } from './chunk-3HFL3JGP.js';
6
- export { Badge, badgeVariants } from './chunk-NQQNTK6L.js';
7
- export { Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle } from './chunk-HSWSYEFQ.js';
8
- export { ConfirmationModal } from './chunk-TLTKWLMN.js';
9
- export { Modal, ModalClose, ModalContent, ModalDescription, ModalFooter, ModalHeader, ModalTitle, ModalTrigger, modalContentVariants } from './chunk-RHBQ3GZE.js';
10
- export { Button, buttonVariants } from './chunk-56VRWCLJ.js';
29
+ export { Badge, badgeVariants } from './chunk-SKTLC2XY.js';
30
+ export { Button, buttonVariants } from './chunk-GTXGTQ6F.js';
11
31
  export { Spinner } from './chunk-INTST5VG.js';
12
- export { EmptyState } from './chunk-KDJLYKR6.js';
13
- export { Input } from './chunk-COPPAHR5.js';
32
+ export { Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle } from './chunk-HSWSYEFQ.js';
33
+ export { CheckIndicator } from './chunk-XE4TFW63.js';
34
+ export { ChipInput } from './chunk-TPLQL62V.js';
35
+ export { ChipList } from './chunk-XLD2BPTT.js';
14
36
  export { cn } from './chunk-BLJWR4ZV.js';
15
37
  //# sourceMappingURL=index.js.map
16
38
  //# sourceMappingURL=index.js.map
@@ -0,0 +1,13 @@
1
+ import * as React from 'react';
2
+
3
+ interface InfoButtonProps {
4
+ children: React.ReactNode;
5
+ title?: React.ReactNode;
6
+ label?: string;
7
+ showOnHover?: boolean;
8
+ openOnHover?: boolean;
9
+ className?: string;
10
+ }
11
+ declare function InfoButton({ children, title, label, showOnHover, openOnHover, className, }: InfoButtonProps): React.JSX.Element;
12
+
13
+ export { InfoButton, type InfoButtonProps };
@@ -0,0 +1,3 @@
1
+ export { InfoButton } from './chunk-DV3MXDLN.js';
2
+ //# sourceMappingURL=info-button.js.map
3
+ //# sourceMappingURL=info-button.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"info-button.js"}
@@ -0,0 +1,39 @@
1
+ import * as React from 'react';
2
+
3
+ interface Rect {
4
+ left: number;
5
+ top: number;
6
+ right: number;
7
+ bottom: number;
8
+ }
9
+ declare function rectsIntersect(a: Rect, b: Rect): boolean;
10
+ declare function marqueeRect(startX: number, startY: number, currentX: number, currentY: number): Rect;
11
+ declare function hitTestIds(container: HTMLElement, marquee: Rect): string[];
12
+ type MarqueePhase = 'start' | 'drag' | 'end';
13
+ interface UseMarqueeOptions {
14
+ enabled: boolean;
15
+ containerRef: {
16
+ current: HTMLElement | null;
17
+ };
18
+ getBaseSelection: () => Set<string>;
19
+ onSelect: (ids: string[], phase: MarqueePhase) => void;
20
+ }
21
+ declare function useMarquee({ enabled, containerRef, getBaseSelection, onSelect, }: UseMarqueeOptions): {
22
+ band: Rect | null;
23
+ };
24
+ declare function MarqueeBand({ band }: {
25
+ band: Rect | null;
26
+ }): React.JSX.Element | null;
27
+ interface MarqueeSelection {
28
+ selected: Set<string>;
29
+ set: (ids: string[]) => void;
30
+ clear: () => void;
31
+ }
32
+ interface MarqueeSurfaceProps extends React.ComponentProps<'div'> {
33
+ children: React.ReactNode;
34
+ selection: MarqueeSelection;
35
+ clearBlocked?: () => boolean;
36
+ }
37
+ declare const MarqueeSurface: React.ForwardRefExoticComponent<Omit<MarqueeSurfaceProps, "ref"> & React.RefAttributes<HTMLDivElement>>;
38
+
39
+ export { MarqueeBand, type MarqueePhase, type MarqueeSelection, MarqueeSurface, type MarqueeSurfaceProps, type Rect, type UseMarqueeOptions, hitTestIds, marqueeRect, rectsIntersect, useMarquee };
@@ -0,0 +1,3 @@
1
+ export { MarqueeBand, MarqueeSurface, hitTestIds, marqueeRect, rectsIntersect, useMarquee } from './chunk-RU3DEF2O.js';
2
+ //# sourceMappingURL=marquee.js.map
3
+ //# sourceMappingURL=marquee.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"marquee.js"}
package/dist/menu.d.ts ADDED
@@ -0,0 +1,38 @@
1
+ import * as React from 'react';
2
+ import * as DropdownMenuPrimitive from '@radix-ui/react-dropdown-menu';
3
+ import { LucideIcon } from 'lucide-react';
4
+
5
+ declare const Menu: React.FC<DropdownMenuPrimitive.DropdownMenuProps>;
6
+ declare const MenuTrigger: React.ForwardRefExoticComponent<DropdownMenuPrimitive.DropdownMenuTriggerProps & React.RefAttributes<HTMLButtonElement>>;
7
+ declare const MenuGroup: React.ForwardRefExoticComponent<DropdownMenuPrimitive.DropdownMenuGroupProps & React.RefAttributes<HTMLDivElement>>;
8
+ declare const MenuContent: React.ForwardRefExoticComponent<Omit<DropdownMenuPrimitive.DropdownMenuContentProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
9
+ interface MenuItemProps extends React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Item> {
10
+ icon?: LucideIcon;
11
+ danger?: boolean;
12
+ pending?: boolean;
13
+ }
14
+ declare const MenuItem: React.ForwardRefExoticComponent<MenuItemProps & React.RefAttributes<HTMLDivElement>>;
15
+ declare const MenuSeparator: React.ForwardRefExoticComponent<Omit<DropdownMenuPrimitive.DropdownMenuSeparatorProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
16
+ declare const MenuLabel: React.ForwardRefExoticComponent<Omit<DropdownMenuPrimitive.DropdownMenuLabelProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
17
+ interface ActionMenuItem {
18
+ key: string;
19
+ label: string;
20
+ icon?: LucideIcon;
21
+ danger?: boolean;
22
+ disabled?: boolean;
23
+ pending?: boolean;
24
+ onSelect: () => void;
25
+ }
26
+ interface ActionMenuProps {
27
+ label: string;
28
+ trigger: React.ReactNode;
29
+ items: ActionMenuItem[];
30
+ align?: 'start' | 'center' | 'end';
31
+ side?: 'top' | 'right' | 'bottom' | 'left';
32
+ triggerClassName?: string;
33
+ panelClassName?: string;
34
+ disabled?: boolean;
35
+ }
36
+ declare function ActionMenu({ label, trigger, items, align, side, triggerClassName, panelClassName, disabled, }: ActionMenuProps): React.JSX.Element;
37
+
38
+ export { ActionMenu, type ActionMenuItem, type ActionMenuProps, Menu, MenuContent, MenuGroup, MenuItem, type MenuItemProps, MenuLabel, MenuSeparator, MenuTrigger };
package/dist/menu.js ADDED
@@ -0,0 +1,3 @@
1
+ export { ActionMenu, Menu, MenuContent, MenuGroup, MenuItem, MenuLabel, MenuSeparator, MenuTrigger } from './chunk-KXLMTAZ5.js';
2
+ //# sourceMappingURL=menu.js.map
3
+ //# sourceMappingURL=menu.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"menu.js"}
@@ -0,0 +1,23 @@
1
+ import * as React from 'react';
2
+
3
+ interface PopoverButtonProps {
4
+ trigger: React.ReactNode;
5
+ children: React.ReactNode | (() => React.ReactNode);
6
+ label: string;
7
+ align?: 'start' | 'center' | 'end';
8
+ side?: 'top' | 'right' | 'bottom' | 'left';
9
+ sideOffset?: number;
10
+ panelClassName?: string;
11
+ triggerClassName?: string;
12
+ openOnHover?: boolean;
13
+ focusOnOpen?: boolean;
14
+ preserveFocus?: boolean;
15
+ closeSignal?: number;
16
+ open?: boolean;
17
+ defaultOpen?: boolean;
18
+ onOpenChange?: (open: boolean) => void;
19
+ disabled?: boolean;
20
+ }
21
+ declare function PopoverButton({ trigger, children, label, align, side, sideOffset, panelClassName, triggerClassName, openOnHover, focusOnOpen, preserveFocus, closeSignal, open: openProp, defaultOpen, onOpenChange, disabled, }: PopoverButtonProps): React.JSX.Element;
22
+
23
+ export { PopoverButton, type PopoverButtonProps };
@@ -0,0 +1,3 @@
1
+ export { PopoverButton } from './chunk-N5KQRHXU.js';
2
+ //# sourceMappingURL=popover-button.js.map
3
+ //# sourceMappingURL=popover-button.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"popover-button.js"}
@@ -0,0 +1,15 @@
1
+ import * as React from 'react';
2
+
3
+ interface RangeBarProps extends React.ComponentProps<'div'> {
4
+ low: number;
5
+ high: number;
6
+ min?: number;
7
+ max?: number;
8
+ value?: number | null;
9
+ unit?: string;
10
+ label?: string;
11
+ valueLabel?: string;
12
+ }
13
+ declare const RangeBar: React.ForwardRefExoticComponent<Omit<RangeBarProps, "ref"> & React.RefAttributes<HTMLDivElement>>;
14
+
15
+ export { RangeBar, type RangeBarProps };
@@ -0,0 +1,3 @@
1
+ export { RangeBar } from './chunk-5AVBKEDQ.js';
2
+ //# sourceMappingURL=range-bar.js.map
3
+ //# sourceMappingURL=range-bar.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"range-bar.js"}
@@ -0,0 +1,18 @@
1
+ import * as React from 'react';
2
+
3
+ interface ScaleSliderProps extends Omit<React.ComponentProps<'div'>, 'onChange'> {
4
+ value: number | '' | null | undefined;
5
+ onChange: (value: number | '') => void;
6
+ min: number;
7
+ max: number;
8
+ step?: number;
9
+ lowLabel?: string;
10
+ highLabel?: string;
11
+ showInput?: boolean;
12
+ disabled?: boolean;
13
+ ariaLabel?: string;
14
+ }
15
+ declare function scaleColorForValue(min: number, max: number, value: number | '' | null | undefined): string;
16
+ declare const ScaleSlider: React.ForwardRefExoticComponent<Omit<ScaleSliderProps, "ref"> & React.RefAttributes<HTMLDivElement>>;
17
+
18
+ export { ScaleSlider, type ScaleSliderProps, scaleColorForValue };
@@ -0,0 +1,3 @@
1
+ export { ScaleSlider, scaleColorForValue } from './chunk-UIUALJNR.js';
2
+ //# sourceMappingURL=scale-slider.js.map
3
+ //# sourceMappingURL=scale-slider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"scale-slider.js"}