@flanksource/clicky-ui 0.2.4 → 0.2.5

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 (177) hide show
  1. package/dist/components/Combobox.cjs +291 -0
  2. package/dist/components/Combobox.cjs.map +1 -0
  3. package/dist/components/Combobox.d.ts +59 -0
  4. package/dist/components/Combobox.d.ts.map +1 -0
  5. package/dist/components/Combobox.js +291 -0
  6. package/dist/components/Combobox.js.map +1 -0
  7. package/dist/components/FilterBar.cjs +153 -124
  8. package/dist/components/FilterBar.cjs.map +1 -1
  9. package/dist/components/FilterBar.d.ts +25 -1
  10. package/dist/components/FilterBar.d.ts.map +1 -1
  11. package/dist/components/FilterBar.js +153 -124
  12. package/dist/components/FilterBar.js.map +1 -1
  13. package/dist/components/FormatOptionsDropdown.cjs +62 -0
  14. package/dist/components/FormatOptionsDropdown.cjs.map +1 -0
  15. package/dist/components/FormatOptionsDropdown.d.ts +37 -0
  16. package/dist/components/FormatOptionsDropdown.d.ts.map +1 -0
  17. package/dist/components/FormatOptionsDropdown.js +62 -0
  18. package/dist/components/FormatOptionsDropdown.js.map +1 -0
  19. package/dist/components/SplitButton.cjs +87 -0
  20. package/dist/components/SplitButton.cjs.map +1 -0
  21. package/dist/components/SplitButton.d.ts +32 -0
  22. package/dist/components/SplitButton.d.ts.map +1 -0
  23. package/dist/components/SplitButton.js +87 -0
  24. package/dist/components/SplitButton.js.map +1 -0
  25. package/dist/components/icon-menu-picker.cjs +1 -1
  26. package/dist/components/icon-menu-picker.cjs.map +1 -1
  27. package/dist/components/icon-menu-picker.js +1 -1
  28. package/dist/components/icon-menu-picker.js.map +1 -1
  29. package/dist/components.cjs +7 -0
  30. package/dist/components.cjs.map +1 -1
  31. package/dist/components.d.ts +3 -0
  32. package/dist/components.d.ts.map +1 -1
  33. package/dist/components.js +7 -0
  34. package/dist/components.js.map +1 -1
  35. package/dist/data/Badge.d.ts +1 -1
  36. package/dist/data/ProgressBar.cjs +4 -2
  37. package/dist/data/ProgressBar.cjs.map +1 -1
  38. package/dist/data/ProgressBar.d.ts +1 -1
  39. package/dist/data/ProgressBar.d.ts.map +1 -1
  40. package/dist/data/ProgressBar.js +4 -2
  41. package/dist/data/ProgressBar.js.map +1 -1
  42. package/dist/data/TaskManager.cjs +162 -0
  43. package/dist/data/TaskManager.cjs.map +1 -0
  44. package/dist/data/TaskManager.d.ts +21 -0
  45. package/dist/data/TaskManager.d.ts.map +1 -0
  46. package/dist/data/TaskManager.js +162 -0
  47. package/dist/data/TaskManager.js.map +1 -0
  48. package/dist/data/TaskProgress.cjs +125 -0
  49. package/dist/data/TaskProgress.cjs.map +1 -0
  50. package/dist/data/TaskProgress.d.ts +20 -0
  51. package/dist/data/TaskProgress.d.ts.map +1 -0
  52. package/dist/data/TaskProgress.js +125 -0
  53. package/dist/data/TaskProgress.js.map +1 -0
  54. package/dist/data/TaskSnapshot.cjs +23 -0
  55. package/dist/data/TaskSnapshot.cjs.map +1 -0
  56. package/dist/data/TaskSnapshot.d.ts +49 -0
  57. package/dist/data/TaskSnapshot.d.ts.map +1 -0
  58. package/dist/data/TaskSnapshot.js +23 -0
  59. package/dist/data/TaskSnapshot.js.map +1 -0
  60. package/dist/data/TimeseriesPanel.axes.cjs +39 -0
  61. package/dist/data/TimeseriesPanel.axes.cjs.map +1 -0
  62. package/dist/data/TimeseriesPanel.axes.d.ts +28 -0
  63. package/dist/data/TimeseriesPanel.axes.d.ts.map +1 -0
  64. package/dist/data/TimeseriesPanel.axes.js +39 -0
  65. package/dist/data/TimeseriesPanel.axes.js.map +1 -0
  66. package/dist/data/TimeseriesPanel.cjs +324 -0
  67. package/dist/data/TimeseriesPanel.cjs.map +1 -0
  68. package/dist/data/TimeseriesPanel.d.ts +141 -0
  69. package/dist/data/TimeseriesPanel.d.ts.map +1 -0
  70. package/dist/data/TimeseriesPanel.js +324 -0
  71. package/dist/data/TimeseriesPanel.js.map +1 -0
  72. package/dist/data/Tree.cjs.map +1 -1
  73. package/dist/data/Tree.d.ts.map +1 -1
  74. package/dist/data/Tree.js.map +1 -1
  75. package/dist/data/TreeNode.cjs +44 -7
  76. package/dist/data/TreeNode.cjs.map +1 -1
  77. package/dist/data/TreeNode.d.ts +19 -1
  78. package/dist/data/TreeNode.d.ts.map +1 -1
  79. package/dist/data/TreeNode.js +44 -7
  80. package/dist/data/TreeNode.js.map +1 -1
  81. package/dist/data/diagnostics/DiagnosticsDetailPanel.cjs +66 -44
  82. package/dist/data/diagnostics/DiagnosticsDetailPanel.cjs.map +1 -1
  83. package/dist/data/diagnostics/DiagnosticsDetailPanel.d.ts +21 -1
  84. package/dist/data/diagnostics/DiagnosticsDetailPanel.d.ts.map +1 -1
  85. package/dist/data/diagnostics/DiagnosticsDetailPanel.js +65 -43
  86. package/dist/data/diagnostics/DiagnosticsDetailPanel.js.map +1 -1
  87. package/dist/data/diagnostics/DiagnosticsTree.cjs +2 -1
  88. package/dist/data/diagnostics/DiagnosticsTree.cjs.map +1 -1
  89. package/dist/data/diagnostics/DiagnosticsTree.js +2 -1
  90. package/dist/data/diagnostics/DiagnosticsTree.js.map +1 -1
  91. package/dist/data/diagnostics/FrameSourceWindow.cjs +37 -0
  92. package/dist/data/diagnostics/FrameSourceWindow.cjs.map +1 -0
  93. package/dist/data/diagnostics/FrameSourceWindow.d.ts +15 -0
  94. package/dist/data/diagnostics/FrameSourceWindow.d.ts.map +1 -0
  95. package/dist/data/diagnostics/FrameSourceWindow.js +37 -0
  96. package/dist/data/diagnostics/FrameSourceWindow.js.map +1 -0
  97. package/dist/data/diagnostics/JvmStackTrace.cjs +25 -12
  98. package/dist/data/diagnostics/JvmStackTrace.cjs.map +1 -1
  99. package/dist/data/diagnostics/JvmStackTrace.d.ts +8 -1
  100. package/dist/data/diagnostics/JvmStackTrace.d.ts.map +1 -1
  101. package/dist/data/diagnostics/JvmStackTrace.js +26 -13
  102. package/dist/data/diagnostics/JvmStackTrace.js.map +1 -1
  103. package/dist/data/diagnostics/ThreadCard.cjs +9 -2
  104. package/dist/data/diagnostics/ThreadCard.cjs.map +1 -1
  105. package/dist/data/diagnostics/ThreadCard.d.ts +3 -1
  106. package/dist/data/diagnostics/ThreadCard.d.ts.map +1 -1
  107. package/dist/data/diagnostics/ThreadCard.js +9 -2
  108. package/dist/data/diagnostics/ThreadCard.js.map +1 -1
  109. package/dist/data/diagnostics/jvm-stacktrace.cjs +10 -1
  110. package/dist/data/diagnostics/jvm-stacktrace.cjs.map +1 -1
  111. package/dist/data/diagnostics/jvm-stacktrace.d.ts.map +1 -1
  112. package/dist/data/diagnostics/jvm-stacktrace.js +10 -1
  113. package/dist/data/diagnostics/jvm-stacktrace.js.map +1 -1
  114. package/dist/data/diagnostics/utils.cjs +0 -12
  115. package/dist/data/diagnostics/utils.cjs.map +1 -1
  116. package/dist/data/diagnostics/utils.d.ts +1 -1
  117. package/dist/data/diagnostics/utils.d.ts.map +1 -1
  118. package/dist/data/diagnostics/utils.js +0 -12
  119. package/dist/data/diagnostics/utils.js.map +1 -1
  120. package/dist/data/task-status.cjs +108 -0
  121. package/dist/data/task-status.cjs.map +1 -0
  122. package/dist/data/task-status.d.ts +21 -0
  123. package/dist/data/task-status.d.ts.map +1 -0
  124. package/dist/data/task-status.js +108 -0
  125. package/dist/data/task-status.js.map +1 -0
  126. package/dist/data.cjs +21 -0
  127. package/dist/data.cjs.map +1 -1
  128. package/dist/data.d.ts +7 -1
  129. package/dist/data.d.ts.map +1 -1
  130. package/dist/data.js +21 -0
  131. package/dist/data.js.map +1 -1
  132. package/dist/hooks/use-task-run.cjs +137 -0
  133. package/dist/hooks/use-task-run.cjs.map +1 -0
  134. package/dist/hooks/use-task-run.d.ts +35 -0
  135. package/dist/hooks/use-task-run.d.ts.map +1 -0
  136. package/dist/hooks/use-task-run.js +137 -0
  137. package/dist/hooks/use-task-run.js.map +1 -0
  138. package/dist/hooks.cjs +3 -0
  139. package/dist/hooks.cjs.map +1 -1
  140. package/dist/hooks.d.ts +1 -0
  141. package/dist/hooks.d.ts.map +1 -1
  142. package/dist/hooks.js +3 -0
  143. package/dist/hooks.js.map +1 -1
  144. package/dist/index.cjs +37 -0
  145. package/dist/index.cjs.map +1 -1
  146. package/dist/index.js +37 -0
  147. package/dist/index.js.map +1 -1
  148. package/dist/lib/color.cjs +33 -0
  149. package/dist/lib/color.cjs.map +1 -0
  150. package/dist/lib/color.d.ts +10 -0
  151. package/dist/lib/color.d.ts.map +1 -0
  152. package/dist/lib/color.js +33 -0
  153. package/dist/lib/color.js.map +1 -0
  154. package/dist/lib/format.cjs +77 -0
  155. package/dist/lib/format.cjs.map +1 -0
  156. package/dist/lib/format.d.ts +30 -0
  157. package/dist/lib/format.d.ts.map +1 -0
  158. package/dist/lib/format.js +77 -0
  159. package/dist/lib/format.js.map +1 -0
  160. package/dist/overlay/DropdownMenu.cjs +18 -2
  161. package/dist/overlay/DropdownMenu.cjs.map +1 -1
  162. package/dist/overlay/DropdownMenu.d.ts +3 -1
  163. package/dist/overlay/DropdownMenu.d.ts.map +1 -1
  164. package/dist/overlay/DropdownMenu.js +18 -2
  165. package/dist/overlay/DropdownMenu.js.map +1 -1
  166. package/dist/rpc/types.cjs.map +1 -1
  167. package/dist/rpc/types.d.ts +4 -0
  168. package/dist/rpc/types.d.ts.map +1 -1
  169. package/dist/rpc/types.js.map +1 -1
  170. package/dist/styles.css +1 -1
  171. package/dist/utils.cjs +6 -0
  172. package/dist/utils.cjs.map +1 -1
  173. package/dist/utils.d.ts +1 -0
  174. package/dist/utils.d.ts.map +1 -1
  175. package/dist/utils.js +6 -0
  176. package/dist/utils.js.map +1 -1
  177. package/package.json +4 -1
@@ -74,6 +74,15 @@ export type FilterBarLookupMultiFilter = {
74
74
  options: FilterBarLookupOption[];
75
75
  onChange: (value: string[]) => void;
76
76
  placeholder?: string;
77
+ /**
78
+ * Optional async search invoked (debounced) as the user types; the consumer
79
+ * fetches matching options and feeds them back via `options`. When set, the
80
+ * typeahead is server-driven (results replace the list); when absent it
81
+ * filters the static `options` client-side.
82
+ */
83
+ onSearch?: (query: string) => void;
84
+ /** Shows a loading indicator while a search is in flight. */
85
+ loading?: boolean;
77
86
  disabled?: boolean;
78
87
  className?: string;
79
88
  };
@@ -86,9 +95,24 @@ export type FilterBarMultiFilter = {
86
95
  description?: string;
87
96
  /** Map of option value to include/exclude state. */
88
97
  value: Record<string, FilterBarMultiFilterMode>;
89
- /** Available chip options. */
98
+ /** Available chip options. When `truncated`, this is only the head set. */
90
99
  options: MultiSelectOption[];
91
100
  onChange: (value: Record<string, FilterBarMultiFilterMode>) => void;
101
+ /**
102
+ * True when more options exist than are in `options` (the option set was
103
+ * capped server-side). Renders an "… and N more" hint and, with `onSearch`,
104
+ * lets the user search the full set.
105
+ */
106
+ truncated?: boolean;
107
+ /** True distinct count behind a truncated option set; drives the "N more" label. */
108
+ total?: number;
109
+ /**
110
+ * Optional async fetch invoked (debounced) as the user types in the option
111
+ * search box. Returns the options matching the query, which are merged into
112
+ * the displayed list so values beyond the head become selectable. When
113
+ * absent, the search box filters the static `options` client-side only.
114
+ */
115
+ onSearch?: (query: string) => Promise<MultiSelectOption[]> | void;
92
116
  disabled?: boolean;
93
117
  className?: string;
94
118
  };
@@ -1 +1 @@
1
- {"version":3,"file":"FilterBar.d.ts","sourceRoot":"","sources":["../../src/components/FilterBar.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"FilterBar.d.ts","sourceRoot":"","sources":["../../src/components/FilterBar.tsx"],"names":[],"mappings":"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"}
@@ -4,6 +4,7 @@ import { FilterPill } from "../data/FilterPill.js";
4
4
  import { Icon } from "../data/Icon.js";
5
5
  import { cn } from "../lib/utils.js";
6
6
  import { Button } from "./button.js";
7
+ import { Combobox } from "./Combobox.js";
7
8
  import { DateTimePicker } from "./DateTimePicker.js";
8
9
  import { MultiSelect } from "./MultiSelect.js";
9
10
  import { RangeSlider } from "./RangeSlider.js";
@@ -447,6 +448,13 @@ function FilterBarKeyValueControl({ filter }) {
447
448
  function filterInputId(filter) {
448
449
  return `filterbar-overflow-${filter.key}`;
449
450
  }
451
+ function lookupOptionsToCombobox(options) {
452
+ return options.map((option) => ({
453
+ value: option.value,
454
+ label: option.label ?? option.value,
455
+ ...option.disabled !== void 0 ? { disabled: option.disabled } : {}
456
+ }));
457
+ }
450
458
  function valueInputClassName(disabled) {
451
459
  return cn(
452
460
  "h-8 w-full rounded-md border border-input bg-background px-2 text-sm text-foreground outline-none placeholder:text-muted-foreground focus-visible:ring-2 focus-visible:ring-ring",
@@ -471,7 +479,6 @@ function TextFilterValueControl({ filter }) {
471
479
  }
472
480
  function LookupFilterValueControl({ filter }) {
473
481
  const [draft, setDraft] = useDebouncedTextDraft(filter.value, filter.onChange);
474
- const listId = `${filter.key}-overflow-lookup-options`;
475
482
  if (filter.inputType === "date") {
476
483
  return /* @__PURE__ */ jsx(
477
484
  DateTimePicker,
@@ -481,56 +488,55 @@ function LookupFilterValueControl({ filter }) {
481
488
  className: "w-full",
482
489
  inputClassName: valueInputClassName(filter.disabled),
483
490
  buttonClassName: "right-1",
484
- placeholder: filter.placeholder ?? "Filter...",
491
+ placeholder: filter.placeholder,
485
492
  value: draft,
486
- list: listId,
487
493
  disabled: filter.disabled,
488
494
  onChange: setDraft
489
495
  }
490
496
  );
491
497
  }
492
- return /* @__PURE__ */ jsxs(Fragment, { children: [
493
- /* @__PURE__ */ jsx(
498
+ if (filter.inputType === "number") {
499
+ return /* @__PURE__ */ jsx(
494
500
  "input",
495
501
  {
496
502
  id: filterInputId(filter),
497
- type: filter.inputType === "number" ? "number" : "text",
503
+ type: "number",
498
504
  "aria-label": filter.label,
499
505
  className: valueInputClassName(filter.disabled),
500
- placeholder: filter.placeholder ?? "Filter...",
506
+ placeholder: filter.placeholder,
501
507
  value: draft,
502
- list: listId,
503
508
  disabled: filter.disabled,
504
509
  onChange: (event) => setDraft(event.target.value)
505
510
  }
506
- ),
507
- /* @__PURE__ */ jsx("datalist", { id: listId, children: filter.options.map((option) => /* @__PURE__ */ jsx(
508
- "option",
509
- {
510
- value: option.value,
511
- label: option.label ?? option.value,
512
- disabled: option.disabled
513
- },
514
- option.value
515
- )) })
516
- ] });
511
+ );
512
+ }
513
+ return /* @__PURE__ */ jsx(
514
+ Combobox,
515
+ {
516
+ id: filterInputId(filter),
517
+ options: lookupOptionsToCombobox(filter.options),
518
+ value: filter.value,
519
+ onChange: filter.onChange,
520
+ allowCustomValue: false,
521
+ className: "w-full",
522
+ ...filter.placeholder !== void 0 ? { placeholder: filter.placeholder } : {},
523
+ ...filter.disabled !== void 0 ? { disabled: filter.disabled } : {}
524
+ }
525
+ );
517
526
  }
518
527
  function LookupMultiFilterValueControl({ filter }) {
519
528
  return /* @__PURE__ */ jsx(
520
- MultiSelect,
529
+ Combobox,
521
530
  {
522
- options: filter.options.map((option) => ({
523
- value: option.value,
524
- label: option.label ?? option.value,
525
- ...option.disabled !== void 0 ? { disabled: option.disabled } : {},
526
- ...option.title !== void 0 ? { title: option.title } : {}
527
- })),
531
+ multiple: true,
532
+ id: filterInputId(filter),
533
+ options: lookupOptionsToCombobox(filter.options),
528
534
  value: filter.value,
529
535
  onChange: filter.onChange,
530
- placeholder: filter.placeholder ?? `Any ${filter.label.toLowerCase()}`,
531
- ...filter.disabled !== void 0 ? { disabled: filter.disabled } : {},
532
- triggerClassName: "h-8 w-full rounded-md border border-input bg-background px-2 text-sm shadow-none",
533
- menuClassName: "left-auto right-0"
536
+ allowCustomValue: false,
537
+ className: "w-full",
538
+ ...filter.placeholder !== void 0 ? { placeholder: filter.placeholder } : {},
539
+ ...filter.disabled !== void 0 ? { disabled: filter.disabled } : {}
534
540
  }
535
541
  );
536
542
  }
@@ -729,57 +735,63 @@ function TextFilterField({ filter, grow }) {
729
735
  }
730
736
  );
731
737
  }
738
+ function lookupFieldWidthClass(grow) {
739
+ return grow ? "min-w-[12rem] max-w-[18rem] flex-1" : "min-w-[11rem] max-w-[15rem] shrink-0";
740
+ }
732
741
  function LookupFilterField({ filter, grow }) {
733
742
  const [draft, setDraft] = useDebouncedTextDraft(filter.value, filter.onChange);
734
- const listId = `${filter.key}-lookup-options`;
735
- return /* @__PURE__ */ jsxs(
736
- "label",
737
- {
738
- title: filter.description,
739
- className: cn(
740
- "flex h-8 items-center gap-2 rounded-md border border-input bg-muted/30 pl-2 pr-2 text-xs",
741
- grow ? "min-w-[12rem] max-w-[18rem] flex-1" : "min-w-[11rem] max-w-[15rem] shrink-0",
742
- filter.disabled && "opacity-60",
743
- filter.className
744
- ),
745
- children: [
746
- /* @__PURE__ */ jsx("span", { className: "whitespace-nowrap font-medium uppercase tracking-wide text-muted-foreground", children: filter.label }),
747
- filter.inputType === "date" ? /* @__PURE__ */ jsx(
748
- DateTimePicker,
749
- {
750
- "aria-label": filter.label,
751
- className: "w-full",
752
- inputClassName: "w-full min-w-0 border-0 bg-transparent px-0 pr-6 text-sm text-foreground shadow-none focus-visible:ring-0",
753
- buttonClassName: "right-0",
754
- placeholder: filter.placeholder ?? "Filter…",
755
- value: draft,
756
- list: listId,
757
- disabled: filter.disabled,
758
- onChange: setDraft
759
- }
760
- ) : /* @__PURE__ */ jsx(
761
- "input",
762
- {
763
- type: filter.inputType === "number" ? "number" : "text",
764
- "aria-label": filter.label,
765
- className: "w-full min-w-0 bg-transparent text-sm text-foreground outline-none placeholder:text-muted-foreground disabled:cursor-not-allowed",
766
- placeholder: filter.placeholder ?? "Filter…",
767
- value: draft,
768
- list: listId,
769
- disabled: filter.disabled,
770
- onChange: (event) => setDraft(event.target.value)
771
- }
743
+ if (filter.inputType === "date" || filter.inputType === "number") {
744
+ return /* @__PURE__ */ jsxs(
745
+ "label",
746
+ {
747
+ title: filter.description,
748
+ className: cn(
749
+ "flex h-8 items-center gap-2 rounded-md border border-input bg-muted/30 pl-2 pr-2 text-xs",
750
+ lookupFieldWidthClass(grow),
751
+ filter.disabled && "opacity-60",
752
+ filter.className
772
753
  ),
773
- /* @__PURE__ */ jsx("datalist", { id: listId, children: filter.options.map((option) => /* @__PURE__ */ jsx(
774
- "option",
775
- {
776
- value: option.value,
777
- label: option.label ?? option.value,
778
- disabled: option.disabled
779
- },
780
- option.value
781
- )) })
782
- ]
754
+ children: [
755
+ /* @__PURE__ */ jsx("span", { className: "whitespace-nowrap font-medium uppercase tracking-wide text-muted-foreground", children: filter.label }),
756
+ filter.inputType === "date" ? /* @__PURE__ */ jsx(
757
+ DateTimePicker,
758
+ {
759
+ "aria-label": filter.label,
760
+ className: "w-full",
761
+ inputClassName: "w-full min-w-0 border-0 bg-transparent px-0 pr-6 text-sm text-foreground shadow-none focus-visible:ring-0",
762
+ buttonClassName: "right-0",
763
+ placeholder: filter.placeholder,
764
+ value: draft,
765
+ disabled: filter.disabled,
766
+ onChange: setDraft
767
+ }
768
+ ) : /* @__PURE__ */ jsx(
769
+ "input",
770
+ {
771
+ type: "number",
772
+ "aria-label": filter.label,
773
+ className: "w-full min-w-0 bg-transparent text-sm text-foreground outline-none placeholder:text-muted-foreground disabled:cursor-not-allowed",
774
+ placeholder: filter.placeholder,
775
+ value: draft,
776
+ disabled: filter.disabled,
777
+ onChange: (event) => setDraft(event.target.value)
778
+ }
779
+ )
780
+ ]
781
+ }
782
+ );
783
+ }
784
+ return /* @__PURE__ */ jsx(
785
+ Combobox,
786
+ {
787
+ label: filter.label,
788
+ options: lookupOptionsToCombobox(filter.options),
789
+ value: filter.value,
790
+ onChange: filter.onChange,
791
+ allowCustomValue: false,
792
+ className: cn(lookupFieldWidthClass(grow), filter.className),
793
+ ...filter.placeholder !== void 0 ? { placeholder: filter.placeholder } : {},
794
+ ...filter.disabled !== void 0 ? { disabled: filter.disabled } : {}
783
795
  }
784
796
  );
785
797
  }
@@ -787,46 +799,20 @@ function LookupMultiFilterField({
787
799
  filter,
788
800
  grow
789
801
  }) {
790
- const [draft, setDraft] = useDebouncedTextDraft(
791
- filter.value.join(", "),
792
- (next) => filter.onChange(parseLookupMultiValue(next))
793
- );
794
- const listId = `${filter.key}-lookup-options`;
795
- return /* @__PURE__ */ jsxs(
796
- "label",
802
+ return /* @__PURE__ */ jsx(
803
+ Combobox,
797
804
  {
798
- title: filter.description,
799
- className: cn(
800
- "flex h-8 items-center gap-2 rounded-md border border-input bg-muted/30 pl-2 pr-2 text-xs",
801
- grow ? "min-w-[12rem] max-w-[18rem] flex-1" : "min-w-[11rem] max-w-[15rem] shrink-0",
802
- filter.disabled && "opacity-60",
803
- filter.className
804
- ),
805
- children: [
806
- /* @__PURE__ */ jsx("span", { className: "whitespace-nowrap font-medium uppercase tracking-wide text-muted-foreground", children: filter.label }),
807
- /* @__PURE__ */ jsx(
808
- "input",
809
- {
810
- type: "text",
811
- "aria-label": filter.label,
812
- className: "w-full min-w-0 bg-transparent text-sm text-foreground outline-none placeholder:text-muted-foreground disabled:cursor-not-allowed",
813
- placeholder: filter.placeholder ?? "value-1, value-2",
814
- value: draft,
815
- list: listId,
816
- disabled: filter.disabled,
817
- onChange: (event) => setDraft(event.target.value)
818
- }
819
- ),
820
- /* @__PURE__ */ jsx("datalist", { id: listId, children: filter.options.map((option) => /* @__PURE__ */ jsx(
821
- "option",
822
- {
823
- value: option.value,
824
- label: option.label ?? option.value,
825
- disabled: option.disabled
826
- },
827
- option.value
828
- )) })
829
- ]
805
+ multiple: true,
806
+ label: filter.label,
807
+ options: lookupOptionsToCombobox(filter.options),
808
+ value: filter.value,
809
+ onChange: filter.onChange,
810
+ allowCustomValue: false,
811
+ className: cn(lookupFieldWidthClass(grow), filter.className),
812
+ ...filter.placeholder !== void 0 ? { placeholder: filter.placeholder } : {},
813
+ ...filter.onSearch !== void 0 ? { onSearch: filter.onSearch } : {},
814
+ ...filter.loading !== void 0 ? { loading: filter.loading } : {},
815
+ ...filter.disabled !== void 0 ? { disabled: filter.disabled } : {}
830
816
  }
831
817
  );
832
818
  }
@@ -1072,17 +1058,45 @@ function MultiFilterField({ filter, grow }) {
1072
1058
  const triggerRef = useRef(null);
1073
1059
  const [open, setOpen] = useState(false);
1074
1060
  const [optionQuery, setOptionQuery] = useState("");
1061
+ const [searchOptions, setSearchOptions] = useState([]);
1075
1062
  const [draft, setDraft] = useDebouncedMultiDraft(filter.value, filter.onChange);
1076
1063
  useDismissablePopup(open, rootRef, triggerRef, () => setOpen(false));
1064
+ const onSearch = filter.onSearch;
1065
+ useEffect(() => {
1066
+ if (!onSearch) return;
1067
+ const query = optionQuery.trim();
1068
+ if (!query) {
1069
+ setSearchOptions([]);
1070
+ return;
1071
+ }
1072
+ let cancelled = false;
1073
+ const handle = setTimeout(() => {
1074
+ Promise.resolve(onSearch(query)).then((opts) => {
1075
+ if (!cancelled && Array.isArray(opts)) setSearchOptions(opts);
1076
+ }).catch(() => {
1077
+ if (!cancelled) setSearchOptions([]);
1078
+ });
1079
+ }, 250);
1080
+ return () => {
1081
+ cancelled = true;
1082
+ clearTimeout(handle);
1083
+ };
1084
+ }, [onSearch, optionQuery]);
1077
1085
  const summary = summarizeMultiFilter(filter.label, draft);
1078
- const showOptionFilter = filter.options.length > 7;
1086
+ const showOptionFilter = filter.truncated || Boolean(onSearch) || filter.options.length > 7;
1079
1087
  const visibleOptions = useMemo(() => {
1080
- const query = optionQuery.trim().toLowerCase();
1088
+ const query = optionQuery.trim();
1081
1089
  if (!query) return filter.options;
1090
+ if (onSearch) {
1091
+ const selectedHead = filter.options.filter((o) => draft[o.value] !== void 0);
1092
+ return mergeMultiSelectOptions(selectedHead, searchOptions);
1093
+ }
1094
+ const lowered = query.toLowerCase();
1082
1095
  return filter.options.filter(
1083
- (option) => multiSelectOptionText(option).toLowerCase().includes(query)
1096
+ (option) => multiSelectOptionText(option).toLowerCase().includes(lowered)
1084
1097
  );
1085
- }, [filter.options, optionQuery]);
1098
+ }, [filter.options, searchOptions, optionQuery, onSearch, draft]);
1099
+ const moreCount = filter.truncated && filter.total ? Math.max(filter.total - filter.options.length, 0) : 0;
1086
1100
  return /* @__PURE__ */ jsxs(
1087
1101
  "div",
1088
1102
  {
@@ -1180,12 +1194,30 @@ function MultiFilterField({ filter, grow }) {
1180
1194
  );
1181
1195
  }),
1182
1196
  visibleOptions.length === 0 && /* @__PURE__ */ jsx("div", { className: "px-2 py-3 text-sm text-muted-foreground", children: "No options found" })
1197
+ ] }),
1198
+ moreCount > 0 && !optionQuery.trim() && /* @__PURE__ */ jsxs("div", { className: "mt-2 px-1.5 text-[11px] text-muted-foreground", children: [
1199
+ "… and ",
1200
+ moreCount.toLocaleString(),
1201
+ " more",
1202
+ onSearch ? " — type to search all" : ""
1183
1203
  ] })
1184
1204
  ] })
1185
1205
  ]
1186
1206
  }
1187
1207
  );
1188
1208
  }
1209
+ function mergeMultiSelectOptions(head, extra) {
1210
+ if (extra.length === 0) return head;
1211
+ const seen = new Set(head.map((o) => o.value));
1212
+ const merged = [...head];
1213
+ for (const option of extra) {
1214
+ if (!seen.has(option.value)) {
1215
+ seen.add(option.value);
1216
+ merged.push(option);
1217
+ }
1218
+ }
1219
+ return merged;
1220
+ }
1189
1221
  function MultiFilterPanel({
1190
1222
  filter,
1191
1223
  chrome = "full"
@@ -1779,9 +1811,6 @@ function summarizeMultiFilter(label, value) {
1779
1811
  ].filter(Boolean);
1780
1812
  return `${label} ${counts.join(" ")}`;
1781
1813
  }
1782
- function parseLookupMultiValue(value) {
1783
- return value.split(",").map((item) => item.trim()).filter(Boolean);
1784
- }
1785
1814
  function useDebouncedMultiDraft(value, onChange) {
1786
1815
  const { autoSubmit } = useContext(FilterBarContext);
1787
1816
  const [draft, setDraft] = useState(value);