@osdk/react-components 0.2.0-beta.28 → 0.2.0-beta.29

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 (160) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/build/browser/action-form/FormFieldApi.js.map +1 -1
  3. package/build/browser/action-form/fields/FormFieldRenderer.js +8 -0
  4. package/build/browser/action-form/fields/FormFieldRenderer.js.map +1 -1
  5. package/build/browser/action-form/fields/NumberInputField.js +130 -0
  6. package/build/browser/action-form/fields/NumberInputField.js.map +1 -0
  7. package/build/browser/action-form/fields/NumberInputField.module.css +96 -0
  8. package/build/browser/action-form/fields/NumberInputField.module.css.js +9 -0
  9. package/build/browser/base-components/checkbox/Checkbox.module.css +9 -1
  10. package/build/browser/base-components/combobox/Combobox.js +14 -1
  11. package/build/browser/base-components/combobox/Combobox.js.map +1 -1
  12. package/build/browser/base-components/combobox/Combobox.module.css +16 -6
  13. package/build/browser/base-components/combobox/Combobox.module.css.js +1 -0
  14. package/build/browser/base-components/searchable-menu/SearchableMenu.js +86 -0
  15. package/build/browser/base-components/searchable-menu/SearchableMenu.js.map +1 -0
  16. package/build/browser/base-components/searchable-menu/SearchableMenu.module.css +80 -0
  17. package/build/browser/base-components/searchable-menu/SearchableMenu.module.css.js +10 -0
  18. package/build/browser/filter-list/FilterList.js +3 -1
  19. package/build/browser/filter-list/FilterList.js.map +1 -1
  20. package/build/browser/filter-list/FilterListItemApi.js.map +1 -1
  21. package/build/browser/filter-list/base/AddFilterPopover.js +10 -21
  22. package/build/browser/filter-list/base/AddFilterPopover.js.map +1 -1
  23. package/build/browser/filter-list/base/AddFilterPopover.module.css +6 -40
  24. package/build/browser/filter-list/base/AddFilterPopover.module.css.js +1 -4
  25. package/build/browser/filter-list/base/BaseFilterList.js +4 -2
  26. package/build/browser/filter-list/base/BaseFilterList.js.map +1 -1
  27. package/build/browser/filter-list/base/ExcludeDropdown.module.css +7 -5
  28. package/build/browser/filter-list/base/FilterIcons.js +3 -3
  29. package/build/browser/filter-list/base/FilterIcons.js.map +1 -1
  30. package/build/browser/filter-list/base/FilterInputExcludeRow.js +14 -2
  31. package/build/browser/filter-list/base/FilterInputExcludeRow.js.map +1 -1
  32. package/build/browser/filter-list/base/FilterList.module.css +20 -4
  33. package/build/browser/filter-list/base/FilterList.module.css.js +1 -0
  34. package/build/browser/filter-list/base/FilterListHeader.js +1 -1
  35. package/build/browser/filter-list/base/FilterListHeader.js.map +1 -1
  36. package/build/browser/filter-list/base/FilterListHeader.module.css +8 -3
  37. package/build/browser/filter-list/base/FilterListItem.module.css +15 -9
  38. package/build/browser/filter-list/base/FilterListItem.module.css.js +2 -1
  39. package/build/browser/filter-list/base/inputs/ListogramInput.js +1 -1
  40. package/build/browser/filter-list/base/inputs/ListogramInput.js.map +1 -1
  41. package/build/browser/filter-list/base/inputs/ListogramInput.module.css +23 -0
  42. package/build/browser/filter-list/base/inputs/ListogramInput.module.css.js +1 -0
  43. package/build/browser/filter-list/base/inputs/MultiSelectInput.js +26 -43
  44. package/build/browser/filter-list/base/inputs/MultiSelectInput.js.map +1 -1
  45. package/build/browser/filter-list/base/inputs/MultiSelectInput.module.css +7 -8
  46. package/build/browser/filter-list/base/inputs/MultiSelectInput.module.css.js +1 -2
  47. package/build/browser/filter-list/base/inputs/RangeInput.module.css +7 -1
  48. package/build/browser/filter-list/base/inputs/SingleSelectInput.js +21 -30
  49. package/build/browser/filter-list/base/inputs/SingleSelectInput.js.map +1 -1
  50. package/build/browser/filter-list/base/inputs/SingleSelectInput.module.css +13 -23
  51. package/build/browser/filter-list/base/inputs/SingleSelectInput.module.css.js +3 -1
  52. package/build/browser/filter-list/hooks/useFilterListState.js +9 -1
  53. package/build/browser/filter-list/hooks/useFilterListState.js.map +1 -1
  54. package/build/browser/filter-list/inputs/ContainsTextFilterInput.js +1 -1
  55. package/build/browser/filter-list/inputs/ContainsTextFilterInput.js.map +1 -1
  56. package/build/browser/filter-list/inputs/ListogramFilterInput.js +9 -1
  57. package/build/browser/filter-list/inputs/ListogramFilterInput.js.map +1 -1
  58. package/build/browser/filter-list/inputs/MultiSelectFilterInput.js +9 -1
  59. package/build/browser/filter-list/inputs/MultiSelectFilterInput.js.map +1 -1
  60. package/build/browser/filter-list/inputs/PropertyFilterInput.js +1 -1
  61. package/build/browser/filter-list/inputs/PropertyFilterInput.js.map +1 -1
  62. package/build/browser/filter-list/inputs/SingleSelectFilterInput.js +9 -1
  63. package/build/browser/filter-list/inputs/SingleSelectFilterInput.js.map +1 -1
  64. package/build/browser/filter-list/inputs/TextTagsFilterInput.js +9 -1
  65. package/build/browser/filter-list/inputs/TextTagsFilterInput.js.map +1 -1
  66. package/build/browser/object-table/ColumnConfigDialog.module.css +1 -2
  67. package/build/browser/object-table/MultiColumnSortDialog.js +22 -59
  68. package/build/browser/object-table/MultiColumnSortDialog.js.map +1 -1
  69. package/build/browser/object-table/MultiColumnSortDialog.module.css +0 -64
  70. package/build/browser/object-table/MultiColumnSortDialog.module.css.js +0 -5
  71. package/build/browser/styles.css +314 -166
  72. package/build/cjs/public/experimental.cjs +501 -329
  73. package/build/cjs/public/experimental.cjs.map +1 -1
  74. package/build/cjs/public/experimental.css +378 -283
  75. package/build/cjs/public/experimental.css.map +1 -1
  76. package/build/cjs/public/experimental.d.cts +25 -12
  77. package/build/esm/action-form/FormFieldApi.js.map +1 -1
  78. package/build/esm/action-form/fields/FormFieldRenderer.js +8 -0
  79. package/build/esm/action-form/fields/FormFieldRenderer.js.map +1 -1
  80. package/build/esm/action-form/fields/NumberInputField.js +130 -0
  81. package/build/esm/action-form/fields/NumberInputField.js.map +1 -0
  82. package/build/esm/action-form/fields/NumberInputField.module.css +96 -0
  83. package/build/esm/base-components/checkbox/Checkbox.module.css +9 -1
  84. package/build/esm/base-components/combobox/Combobox.js +14 -1
  85. package/build/esm/base-components/combobox/Combobox.js.map +1 -1
  86. package/build/esm/base-components/combobox/Combobox.module.css +16 -6
  87. package/build/esm/base-components/searchable-menu/SearchableMenu.js +86 -0
  88. package/build/esm/base-components/searchable-menu/SearchableMenu.js.map +1 -0
  89. package/build/esm/base-components/searchable-menu/SearchableMenu.module.css +80 -0
  90. package/build/esm/filter-list/FilterList.js +3 -1
  91. package/build/esm/filter-list/FilterList.js.map +1 -1
  92. package/build/esm/filter-list/FilterListItemApi.js.map +1 -1
  93. package/build/esm/filter-list/base/AddFilterPopover.js +10 -21
  94. package/build/esm/filter-list/base/AddFilterPopover.js.map +1 -1
  95. package/build/esm/filter-list/base/AddFilterPopover.module.css +6 -40
  96. package/build/esm/filter-list/base/BaseFilterList.js +4 -2
  97. package/build/esm/filter-list/base/BaseFilterList.js.map +1 -1
  98. package/build/esm/filter-list/base/ExcludeDropdown.module.css +7 -5
  99. package/build/esm/filter-list/base/FilterIcons.js +3 -3
  100. package/build/esm/filter-list/base/FilterIcons.js.map +1 -1
  101. package/build/esm/filter-list/base/FilterInputExcludeRow.js +14 -2
  102. package/build/esm/filter-list/base/FilterInputExcludeRow.js.map +1 -1
  103. package/build/esm/filter-list/base/FilterList.module.css +20 -4
  104. package/build/esm/filter-list/base/FilterListHeader.js +1 -1
  105. package/build/esm/filter-list/base/FilterListHeader.js.map +1 -1
  106. package/build/esm/filter-list/base/FilterListHeader.module.css +8 -3
  107. package/build/esm/filter-list/base/FilterListItem.module.css +15 -9
  108. package/build/esm/filter-list/base/inputs/ListogramInput.js +1 -1
  109. package/build/esm/filter-list/base/inputs/ListogramInput.js.map +1 -1
  110. package/build/esm/filter-list/base/inputs/ListogramInput.module.css +23 -0
  111. package/build/esm/filter-list/base/inputs/MultiSelectInput.js +26 -43
  112. package/build/esm/filter-list/base/inputs/MultiSelectInput.js.map +1 -1
  113. package/build/esm/filter-list/base/inputs/MultiSelectInput.module.css +7 -8
  114. package/build/esm/filter-list/base/inputs/RangeInput.module.css +7 -1
  115. package/build/esm/filter-list/base/inputs/SingleSelectInput.js +21 -30
  116. package/build/esm/filter-list/base/inputs/SingleSelectInput.js.map +1 -1
  117. package/build/esm/filter-list/base/inputs/SingleSelectInput.module.css +13 -23
  118. package/build/esm/filter-list/hooks/useFilterListState.js +9 -1
  119. package/build/esm/filter-list/hooks/useFilterListState.js.map +1 -1
  120. package/build/esm/filter-list/inputs/ContainsTextFilterInput.js +1 -1
  121. package/build/esm/filter-list/inputs/ContainsTextFilterInput.js.map +1 -1
  122. package/build/esm/filter-list/inputs/ListogramFilterInput.js +9 -1
  123. package/build/esm/filter-list/inputs/ListogramFilterInput.js.map +1 -1
  124. package/build/esm/filter-list/inputs/MultiSelectFilterInput.js +9 -1
  125. package/build/esm/filter-list/inputs/MultiSelectFilterInput.js.map +1 -1
  126. package/build/esm/filter-list/inputs/PropertyFilterInput.js +1 -1
  127. package/build/esm/filter-list/inputs/PropertyFilterInput.js.map +1 -1
  128. package/build/esm/filter-list/inputs/SingleSelectFilterInput.js +9 -1
  129. package/build/esm/filter-list/inputs/SingleSelectFilterInput.js.map +1 -1
  130. package/build/esm/filter-list/inputs/TextTagsFilterInput.js +9 -1
  131. package/build/esm/filter-list/inputs/TextTagsFilterInput.js.map +1 -1
  132. package/build/esm/object-table/ColumnConfigDialog.module.css +1 -2
  133. package/build/esm/object-table/MultiColumnSortDialog.js +22 -59
  134. package/build/esm/object-table/MultiColumnSortDialog.js.map +1 -1
  135. package/build/esm/object-table/MultiColumnSortDialog.module.css +0 -64
  136. package/build/types/action-form/FormFieldApi.d.ts +22 -4
  137. package/build/types/action-form/FormFieldApi.d.ts.map +1 -1
  138. package/build/types/action-form/fields/FormFieldRenderer.d.ts.map +1 -1
  139. package/build/types/action-form/fields/NumberInputField.d.ts +3 -0
  140. package/build/types/action-form/fields/NumberInputField.d.ts.map +1 -0
  141. package/build/types/base-components/combobox/Combobox.d.ts +6 -1
  142. package/build/types/base-components/combobox/Combobox.d.ts.map +1 -1
  143. package/build/types/base-components/searchable-menu/SearchableMenu.d.ts +18 -0
  144. package/build/types/base-components/searchable-menu/SearchableMenu.d.ts.map +1 -0
  145. package/build/types/filter-list/FilterListItemApi.d.ts +4 -0
  146. package/build/types/filter-list/FilterListItemApi.d.ts.map +1 -1
  147. package/build/types/filter-list/base/AddFilterPopover.d.ts.map +1 -1
  148. package/build/types/filter-list/base/FilterInputExcludeRow.d.ts +2 -1
  149. package/build/types/filter-list/base/FilterInputExcludeRow.d.ts.map +1 -1
  150. package/build/types/filter-list/base/inputs/MultiSelectInput.d.ts +1 -3
  151. package/build/types/filter-list/base/inputs/MultiSelectInput.d.ts.map +1 -1
  152. package/build/types/filter-list/base/inputs/SingleSelectInput.d.ts.map +1 -1
  153. package/build/types/filter-list/hooks/useFilterListState.d.ts +1 -0
  154. package/build/types/filter-list/hooks/useFilterListState.d.ts.map +1 -1
  155. package/build/types/filter-list/inputs/ListogramFilterInput.d.ts.map +1 -1
  156. package/build/types/filter-list/inputs/MultiSelectFilterInput.d.ts.map +1 -1
  157. package/build/types/filter-list/inputs/SingleSelectFilterInput.d.ts.map +1 -1
  158. package/build/types/filter-list/inputs/TextTagsFilterInput.d.ts.map +1 -1
  159. package/build/types/object-table/MultiColumnSortDialog.d.ts.map +1 -1
  160. package/package.json +5 -5
@@ -4,7 +4,7 @@ var chunkMRRRZN44_cjs = require('../chunk-MRRRZN44.cjs');
4
4
  var chunkUZ2E5NRX_cjs = require('../chunk-UZ2E5NRX.cjs');
5
5
  var chunkHMQTYQEX_cjs = require('../chunk-HMQTYQEX.cjs');
6
6
  var button = require('@base-ui/react/button');
7
- var classnames13 = require('classnames');
7
+ var classnames14 = require('classnames');
8
8
  var React76 = require('react');
9
9
  var icons = require('@blueprintjs/icons');
10
10
  var core = require('@dnd-kit/core');
@@ -17,7 +17,6 @@ var _switch = require('@base-ui/react/switch');
17
17
  var experimental = require('@osdk/react/experimental');
18
18
  var checkbox = require('@base-ui/react/checkbox');
19
19
  var combobox = require('@base-ui/react/combobox');
20
- var select = require('@base-ui/react/select');
21
20
  var react = require('@osdk/react');
22
21
  var reactTable = require('@tanstack/react-table');
23
22
  var unstableDoNotUse = require('@osdk/react/unstable-do-not-use');
@@ -31,12 +30,13 @@ var pdfjsDist = require('pdfjs-dist');
31
30
  var pdf_viewer_mjs = require('pdfjs-dist/web/pdf_viewer.mjs');
32
31
  var reactHookForm = require('react-hook-form');
33
32
  var popover = require('@base-ui/react/popover');
33
+ var select = require('@base-ui/react/select');
34
34
  var radio = require('@base-ui/react/radio');
35
35
  var radioGroup = require('@base-ui/react/radio-group');
36
36
 
37
37
  function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
38
38
 
39
- var classnames13__default = /*#__PURE__*/_interopDefault(classnames13);
39
+ var classnames14__default = /*#__PURE__*/_interopDefault(classnames14);
40
40
  var React76__default = /*#__PURE__*/_interopDefault(React76);
41
41
 
42
42
  function RemoveIcon() {
@@ -70,8 +70,8 @@ function ExpandIcon() {
70
70
  });
71
71
  }
72
72
  function ResetIcon() {
73
- return /* @__PURE__ */ React76__default.default.createElement(icons.Undo, {
74
- size: 14
73
+ return /* @__PURE__ */ React76__default.default.createElement(icons.Reset, {
74
+ size: 12
75
75
  });
76
76
  }
77
77
  function CheckIcon() {
@@ -356,7 +356,7 @@ function FilterListItemInner({
356
356
  const searchQuery = searchState.type === "open" ? searchState.query : "";
357
357
  const searchQueryForInput = searchState.type === "open" ? searchState.query : void 0;
358
358
  return /* @__PURE__ */ React76__default.default.createElement("div", {
359
- className: classnames13__default.default(FilterListItem_default.filterItem, className),
359
+ className: classnames14__default.default(FilterListItem_default.filterItem, className),
360
360
  style,
361
361
  "data-has-selection": hasActiveSelection(filterState) || void 0
362
362
  }, /* @__PURE__ */ React76__default.default.createElement("div", {
@@ -436,7 +436,7 @@ function SortableFilterListItemInner({
436
436
  return /* @__PURE__ */ React76__default.default.createElement("div", {
437
437
  ref: setNodeRef,
438
438
  style,
439
- className: classnames13__default.default(isDragging && FilterListItem_default.dragging)
439
+ className: classnames14__default.default(isDragging && FilterListItem_default.dragging)
440
440
  }, /* @__PURE__ */ React76__default.default.createElement(FilterListItem, {
441
441
  definition,
442
442
  filterKey,
@@ -579,14 +579,14 @@ function FilterListContent({
579
579
  }), [announcements]);
580
580
  if (!renderDefinitions || renderDefinitions.length === 0) {
581
581
  return /* @__PURE__ */ React76__default.default.createElement("div", {
582
- className: classnames13__default.default(FilterListContent_default.content, className),
582
+ className: classnames14__default.default(FilterListContent_default.content, className),
583
583
  style,
584
584
  "data-empty": "true"
585
585
  });
586
586
  }
587
587
  if (enableSorting) {
588
588
  return /* @__PURE__ */ React76__default.default.createElement("div", {
589
- className: classnames13__default.default(FilterListContent_default.content, className),
589
+ className: classnames14__default.default(FilterListContent_default.content, className),
590
590
  style
591
591
  }, /* @__PURE__ */ React76__default.default.createElement(core.DndContext, {
592
592
  sensors,
@@ -630,7 +630,7 @@ function FilterListContent({
630
630
  }))));
631
631
  }
632
632
  return /* @__PURE__ */ React76__default.default.createElement("div", {
633
- className: classnames13__default.default(FilterListContent_default.content, className),
633
+ className: classnames14__default.default(FilterListContent_default.content, className),
634
634
  style
635
635
  }, renderDefinitions.map((definition) => {
636
636
  const filterKey = getFilterKey2(definition);
@@ -683,7 +683,7 @@ function FilterListHeaderInner({
683
683
  className: FilterListHeader_default.resetButton,
684
684
  onClick: onReset,
685
685
  disabled: activeFilterCount === 0 && !hasVisibilityChanges
686
- }, /* @__PURE__ */ React76__default.default.createElement(ResetIcon, null), " Reset"), showCollapseButton && /* @__PURE__ */ React76__default.default.createElement(button.Button, {
686
+ }, /* @__PURE__ */ React76__default.default.createElement(ResetIcon, null), " Reset filters"), showCollapseButton && /* @__PURE__ */ React76__default.default.createElement(button.Button, {
687
687
  className: FilterListHeader_default.collapseButton,
688
688
  onClick: handleCollapseClick,
689
689
  "aria-expanded": !collapsed,
@@ -723,7 +723,7 @@ function BaseFilterList(props) {
723
723
  }, [onCollapsedChange]);
724
724
  const isCollapsed = collapsed && onCollapsedChange != null;
725
725
  return /* @__PURE__ */ React76__default.default.createElement("div", {
726
- className: classnames13__default.default(FilterList_default.filterList, className)
726
+ className: classnames14__default.default(FilterList_default.filterList, className)
727
727
  }, isCollapsed && /* @__PURE__ */ React76__default.default.createElement("div", {
728
728
  className: FilterList_default.filterListCollapsed,
729
729
  "data-collapsed": "true"
@@ -734,7 +734,7 @@ function BaseFilterList(props) {
734
734
  }, /* @__PURE__ */ React76__default.default.createElement(ExpandIcon, null)), /* @__PURE__ */ React76__default.default.createElement("span", {
735
735
  className: FilterList_default.collapsedLabel
736
736
  }, title ?? "Filters")), /* @__PURE__ */ React76__default.default.createElement("div", {
737
- className: classnames13__default.default(FilterList_default.expandedContent, isCollapsed && FilterList_default.hiddenContent),
737
+ className: classnames14__default.default(FilterList_default.expandedContent, isCollapsed && FilterList_default.hiddenContent),
738
738
  "data-active-count": activeFilterCount
739
739
  }, showHeader && /* @__PURE__ */ React76__default.default.createElement(FilterListHeader, {
740
740
  title,
@@ -746,7 +746,9 @@ function BaseFilterList(props) {
746
746
  showActiveFilterCount,
747
747
  activeFilterCount,
748
748
  hasVisibilityChanges
749
- }), /* @__PURE__ */ React76__default.default.createElement(FilterListContent, {
749
+ }), /* @__PURE__ */ React76__default.default.createElement("div", {
750
+ className: FilterList_default.scrollableContent
751
+ }, /* @__PURE__ */ React76__default.default.createElement(FilterListContent, {
750
752
  filterDefinitions,
751
753
  filterStates,
752
754
  onFilterStateChanged,
@@ -755,7 +757,7 @@ function BaseFilterList(props) {
755
757
  getFilterKey: getFilterKey2,
756
758
  getFilterLabel: getFilterLabel2,
757
759
  enableSorting
758
- }), showAddButton && /* @__PURE__ */ React76__default.default.createElement("div", {
760
+ })), showAddButton && /* @__PURE__ */ React76__default.default.createElement("div", {
759
761
  className: FilterList_default.addButtonContainer
760
762
  }, renderAddFilterButton ? renderAddFilterButton() : /* @__PURE__ */ React76__default.default.createElement(button.Button, {
761
763
  type: "button",
@@ -764,6 +766,102 @@ function BaseFilterList(props) {
764
766
  }, "+ Add filter"))));
765
767
  }
766
768
 
769
+ // src/base-components/search-bar/SearchBar.module.css
770
+ var SearchBar_default = {};
771
+
772
+ // src/base-components/search-bar/SearchBar.tsx
773
+ function SearchBar({
774
+ value,
775
+ onChange,
776
+ placeholder = "Search",
777
+ "aria-label": ariaLabel,
778
+ className,
779
+ onKeyDown
780
+ }) {
781
+ return /* @__PURE__ */ React76__default.default.createElement("div", {
782
+ className: classnames14__default.default(SearchBar_default.searchBar, className)
783
+ }, /* @__PURE__ */ React76__default.default.createElement(icons.Search, {
784
+ className: SearchBar_default.searchIcon
785
+ }), /* @__PURE__ */ React76__default.default.createElement(input.Input, {
786
+ type: "text",
787
+ placeholder,
788
+ "aria-label": ariaLabel ?? placeholder,
789
+ value,
790
+ onChange,
791
+ className: SearchBar_default.searchInput,
792
+ onKeyDown
793
+ }));
794
+ }
795
+
796
+ // src/base-components/searchable-menu/SearchableMenu.module.css
797
+ var SearchableMenu_default = {};
798
+
799
+ // src/base-components/searchable-menu/SearchableMenu.tsx
800
+ function SearchableMenuInner({
801
+ items,
802
+ onItemSelected,
803
+ trigger,
804
+ triggerClassName,
805
+ disabled,
806
+ searchPlaceholder = "Search",
807
+ emptyMessage = "No matching items",
808
+ className
809
+ }) {
810
+ const [searchQuery, setSearchQuery] = React76.useState("");
811
+ const filteredItems = React76.useMemo(() => {
812
+ const query = searchQuery.toLowerCase().trim();
813
+ if (!query) return items;
814
+ return items.filter((item) => item.label.toLowerCase().includes(query));
815
+ }, [items, searchQuery]);
816
+ const handleSearchChange = React76.useCallback((event) => {
817
+ setSearchQuery(event.target.value);
818
+ }, []);
819
+ const handleMenuOpenChange = React76.useCallback((open) => {
820
+ if (open) {
821
+ setSearchQuery("");
822
+ }
823
+ }, []);
824
+ const handleKeyDown = React76.useCallback((event) => {
825
+ event.stopPropagation();
826
+ }, []);
827
+ return /* @__PURE__ */ React76__default.default.createElement(menu.Menu.Root, {
828
+ onOpenChange: handleMenuOpenChange
829
+ }, /* @__PURE__ */ React76__default.default.createElement(menu.Menu.Trigger, {
830
+ className: triggerClassName,
831
+ disabled
832
+ }, trigger), /* @__PURE__ */ React76__default.default.createElement(menu.Menu.Portal, null, /* @__PURE__ */ React76__default.default.createElement(menu.Menu.Positioner, {
833
+ className: classnames14__default.default(SearchableMenu_default.positioner, className),
834
+ sideOffset: 4
835
+ }, /* @__PURE__ */ React76__default.default.createElement(menu.Menu.Popup, {
836
+ className: SearchableMenu_default.popup
837
+ }, /* @__PURE__ */ React76__default.default.createElement(SearchBar, {
838
+ value: searchQuery,
839
+ onChange: handleSearchChange,
840
+ placeholder: searchPlaceholder,
841
+ "aria-label": searchPlaceholder,
842
+ className: SearchableMenu_default.searchContainer,
843
+ onKeyDown: handleKeyDown
844
+ }), filteredItems.map((item) => /* @__PURE__ */ React76__default.default.createElement(SearchableMenuItemRow, {
845
+ key: item.key,
846
+ item,
847
+ onItemSelected
848
+ })), filteredItems.length === 0 && /* @__PURE__ */ React76__default.default.createElement("div", {
849
+ className: SearchableMenu_default.emptyState
850
+ }, emptyMessage)))));
851
+ }
852
+ var SearchableMenu = /* @__PURE__ */ React76.memo(SearchableMenuInner);
853
+ function SearchableMenuItemRowInner({
854
+ item,
855
+ onItemSelected
856
+ }) {
857
+ const handleClick = React76.useCallback(() => onItemSelected(item.key), [onItemSelected, item.key]);
858
+ return /* @__PURE__ */ React76__default.default.createElement(menu.Menu.Item, {
859
+ className: SearchableMenu_default.menuItem,
860
+ onClick: handleClick
861
+ }, item.label);
862
+ }
863
+ var SearchableMenuItemRow = /* @__PURE__ */ React76.memo(SearchableMenuItemRowInner);
864
+
767
865
  // src/filter-list/base/AddFilterPopover.module.css
768
866
  var AddFilterPopover_default = {};
769
867
 
@@ -773,25 +871,14 @@ function AddFilterPopoverInner({
773
871
  onShowFilter,
774
872
  renderTrigger
775
873
  }) {
776
- const handleItemClick = React76.useCallback((event) => {
777
- const key = event.currentTarget.dataset.key;
778
- if (key != null) {
779
- onShowFilter(key);
780
- }
781
- }, [onShowFilter]);
782
- return /* @__PURE__ */ React76__default.default.createElement(menu.Menu.Root, null, /* @__PURE__ */ React76__default.default.createElement(menu.Menu.Trigger, {
783
- className: renderTrigger == null ? AddFilterPopover_default.trigger : void 0
784
- }, renderTrigger != null ? renderTrigger() : "+ Add filter"), /* @__PURE__ */ React76__default.default.createElement(menu.Menu.Portal, null, /* @__PURE__ */ React76__default.default.createElement(menu.Menu.Positioner, {
785
- className: AddFilterPopover_default.positioner,
786
- sideOffset: 4
787
- }, /* @__PURE__ */ React76__default.default.createElement(menu.Menu.Popup, {
788
- className: AddFilterPopover_default.popup
789
- }, hiddenDefinitions.map((item) => /* @__PURE__ */ React76__default.default.createElement(menu.Menu.Item, {
790
- key: item.key,
791
- className: AddFilterPopover_default.menuItem,
792
- "data-key": item.key,
793
- onClick: handleItemClick
794
- }, item.label))))));
874
+ return /* @__PURE__ */ React76__default.default.createElement(SearchableMenu, {
875
+ items: hiddenDefinitions,
876
+ onItemSelected: onShowFilter,
877
+ trigger: renderTrigger != null ? renderTrigger() : "+ Add filter",
878
+ triggerClassName: renderTrigger == null ? AddFilterPopover_default.trigger : void 0,
879
+ searchPlaceholder: "Search filters",
880
+ emptyMessage: "No matching filters"
881
+ });
795
882
  }
796
883
  var AddFilterPopover = /* @__PURE__ */ React76.memo(AddFilterPopoverInner);
797
884
 
@@ -834,7 +921,7 @@ function ContainsTextInputInner({
834
921
  onChangeRef.current(void 0);
835
922
  }, [debouncedOnChange]);
836
923
  return /* @__PURE__ */ React76__default.default.createElement("div", {
837
- className: classnames13__default.default(ContainsTextInput_default.textInput, className),
924
+ className: classnames14__default.default(ContainsTextInput_default.textInput, className),
838
925
  style,
839
926
  "data-has-value": !!localValue
840
927
  }, /* @__PURE__ */ React76__default.default.createElement("div", {
@@ -876,9 +963,9 @@ function Switch({
876
963
  ...rest
877
964
  }) {
878
965
  return /* @__PURE__ */ React76__default.default.createElement(_switch.Switch.Root, _extends2({
879
- className: classnames13__default.default(Switch_default.osdkSwitchRoot, className)
966
+ className: classnames14__default.default(Switch_default.osdkSwitchRoot, className)
880
967
  }, rest), /* @__PURE__ */ React76__default.default.createElement(_switch.Switch.Thumb, _extends2({}, thumbProps, {
881
- className: classnames13__default.default(Switch_default.osdkSwitchThumb, thumbProps?.className)
968
+ className: classnames14__default.default(Switch_default.osdkSwitchThumb, thumbProps?.className)
882
969
  })));
883
970
  }
884
971
 
@@ -893,7 +980,7 @@ function ToggleInputInner({
893
980
  className,
894
981
  style
895
982
  }) {
896
- const rootClassName = classnames13__default.default(ToggleInput_default.toggleInput, className);
983
+ const rootClassName = classnames14__default.default(ToggleInput_default.toggleInput, className);
897
984
  return /* @__PURE__ */ React76__default.default.createElement("div", {
898
985
  className: rootClassName,
899
986
  style,
@@ -1084,7 +1171,7 @@ function RangeInputInner({
1084
1171
  debouncedMaxChange(newValue);
1085
1172
  }, [debouncedMaxChange]);
1086
1173
  return /* @__PURE__ */ React76__default.default.createElement("div", {
1087
- className: classnames13__default.default(RangeInput_default.rangeInput, className),
1174
+ className: classnames14__default.default(RangeInput_default.rangeInput, className),
1088
1175
  style,
1089
1176
  "data-loading": isLoading
1090
1177
  }, showHistogram && buckets.length === 0 && !isLoading && /* @__PURE__ */ React76__default.default.createElement("div", {
@@ -1187,11 +1274,11 @@ function Checkbox({
1187
1274
  ...rest
1188
1275
  }) {
1189
1276
  return /* @__PURE__ */ React76__default.default.createElement(checkbox.Checkbox.Root, _extends5({
1190
- className: classnames13__default.default(Checkbox_default.osdkCheckboxRoot, className),
1277
+ className: classnames14__default.default(Checkbox_default.osdkCheckboxRoot, className),
1191
1278
  indeterminate,
1192
1279
  "data-excluding": isExcluding || void 0
1193
1280
  }, rest), /* @__PURE__ */ React76__default.default.createElement(checkbox.Checkbox.Indicator, _extends5({}, indicatorProps, {
1194
- className: classnames13__default.default(Checkbox_default.osdkCheckboxIndicator, indicatorProps?.className)
1281
+ className: classnames14__default.default(Checkbox_default.osdkCheckboxIndicator, indicatorProps?.className)
1195
1282
  }), indeterminate ? /* @__PURE__ */ React76__default.default.createElement(icons.Minus, {
1196
1283
  size: 16
1197
1284
  }) : isExcluding ? /* @__PURE__ */ React76__default.default.createElement(icons.Cross, {
@@ -1216,7 +1303,7 @@ function SkeletonBar({
1216
1303
  }) {
1217
1304
  return /* @__PURE__ */ React76__default.default.createElement("div", {
1218
1305
  "aria-hidden": "true",
1219
- className: classnames13__default.default(SkeletonBar_default.skeletonBar, className),
1306
+ className: classnames14__default.default(SkeletonBar_default.skeletonBar, className),
1220
1307
  style: {
1221
1308
  width,
1222
1309
  height,
@@ -1298,7 +1385,7 @@ function ListogramInputInner({
1298
1385
  }, [sortedValues, maxVisibleItems, isExpanded]);
1299
1386
  const hasMore = maxVisibleItems != null && sortedValues.length > maxVisibleItems;
1300
1387
  return /* @__PURE__ */ React76__default.default.createElement("div", {
1301
- className: classnames13__default.default(ListogramInput_default.listogram, className),
1388
+ className: classnames14__default.default(ListogramInput_default.listogram, className),
1302
1389
  style,
1303
1390
  "data-loading": isLoading && filteredValues.length > 0
1304
1391
  }, error && /* @__PURE__ */ React76__default.default.createElement("div", {
@@ -1343,7 +1430,7 @@ function ListogramInputInner({
1343
1430
  })));
1344
1431
  }), hasMore && !isExpanded && /* @__PURE__ */ React76__default.default.createElement(button.Button, {
1345
1432
  type: "button",
1346
- className: ListogramInput_default.row,
1433
+ className: ListogramInput_default.viewAllButton,
1347
1434
  onClick: () => setIsExpanded(true)
1348
1435
  }, "View all (", sortedValues.length, ")")));
1349
1436
  }
@@ -1384,7 +1471,7 @@ function MultiDateInputInner({
1384
1471
  }
1385
1472
  }, [addDate]);
1386
1473
  return /* @__PURE__ */ React76__default.default.createElement("div", {
1387
- className: classnames13__default.default(MultiDateInput_default.multiDate, className),
1474
+ className: classnames14__default.default(MultiDateInput_default.multiDate, className),
1388
1475
  style
1389
1476
  }, selectedDates.length > 0 && /* @__PURE__ */ React76__default.default.createElement("div", {
1390
1477
  className: shared_default.tagContainer
@@ -1430,7 +1517,7 @@ function ComboboxSearchInput({
1430
1517
  ...rest
1431
1518
  }) {
1432
1519
  return /* @__PURE__ */ React76__default.default.createElement("div", {
1433
- className: classnames13__default.default(Combobox_default.osdkComboboxInputWrapper, className)
1520
+ className: classnames14__default.default(Combobox_default.osdkComboboxInputWrapper, className)
1434
1521
  }, /* @__PURE__ */ React76__default.default.createElement(icons.Search, {
1435
1522
  className: Combobox_default.osdkComboboxSearchIcon
1436
1523
  }), /* @__PURE__ */ React76__default.default.createElement(combobox.Combobox.Input, _extends6({
@@ -1442,7 +1529,7 @@ function ComboboxInput({
1442
1529
  ...rest
1443
1530
  }) {
1444
1531
  return /* @__PURE__ */ React76__default.default.createElement(combobox.Combobox.Input, _extends6({
1445
- className: classnames13__default.default(Combobox_default.osdkComboboxInput, className)
1532
+ className: classnames14__default.default(Combobox_default.osdkComboboxInput, className)
1446
1533
  }, rest));
1447
1534
  }
1448
1535
  function ComboboxPositioner({
@@ -1451,7 +1538,7 @@ function ComboboxPositioner({
1451
1538
  ...rest
1452
1539
  }) {
1453
1540
  return /* @__PURE__ */ React76__default.default.createElement(combobox.Combobox.Positioner, _extends6({
1454
- className: classnames13__default.default(Combobox_default.osdkComboboxPositioner, className),
1541
+ className: classnames14__default.default(Combobox_default.osdkComboboxPositioner, className),
1455
1542
  sideOffset: 4
1456
1543
  }, rest), children);
1457
1544
  }
@@ -1461,7 +1548,7 @@ function ComboboxPopup({
1461
1548
  ...rest
1462
1549
  }) {
1463
1550
  return /* @__PURE__ */ React76__default.default.createElement(combobox.Combobox.Popup, _extends6({
1464
- className: classnames13__default.default(Combobox_default.osdkComboboxPopup, className)
1551
+ className: classnames14__default.default(Combobox_default.osdkComboboxPopup, className)
1465
1552
  }, rest), children);
1466
1553
  }
1467
1554
  function ComboboxItem({
@@ -1470,7 +1557,7 @@ function ComboboxItem({
1470
1557
  ...rest
1471
1558
  }) {
1472
1559
  return /* @__PURE__ */ React76__default.default.createElement(combobox.Combobox.Item, _extends6({
1473
- className: classnames13__default.default(Combobox_default.osdkComboboxItem, className)
1560
+ className: classnames14__default.default(Combobox_default.osdkComboboxItem, className)
1474
1561
  }, rest), children);
1475
1562
  }
1476
1563
  function ComboboxChips({
@@ -1479,7 +1566,7 @@ function ComboboxChips({
1479
1566
  }) {
1480
1567
  return /* @__PURE__ */ React76__default.default.createElement(combobox.Combobox.Chips, {
1481
1568
  render: (props) => /* @__PURE__ */ React76__default.default.createElement("div", _extends6({}, props, {
1482
- className: classnames13__default.default(Combobox_default.osdkComboboxInputWrapper, className)
1569
+ className: classnames14__default.default(Combobox_default.osdkComboboxInputWrapper, className)
1483
1570
  }), props.children)
1484
1571
  }, children);
1485
1572
  }
@@ -1489,7 +1576,7 @@ function ComboboxChip({
1489
1576
  ...rest
1490
1577
  }) {
1491
1578
  return /* @__PURE__ */ React76__default.default.createElement(combobox.Combobox.Chip, _extends6({
1492
- className: classnames13__default.default(Combobox_default.osdkComboboxChip, className)
1579
+ className: classnames14__default.default(Combobox_default.osdkComboboxChip, className)
1493
1580
  }, rest), children);
1494
1581
  }
1495
1582
  function ComboboxChipRemove({
@@ -1497,7 +1584,7 @@ function ComboboxChipRemove({
1497
1584
  ...rest
1498
1585
  }) {
1499
1586
  return /* @__PURE__ */ React76__default.default.createElement(combobox.Combobox.ChipRemove, _extends6({
1500
- className: classnames13__default.default(Combobox_default.osdkComboboxChipRemove, className),
1587
+ className: classnames14__default.default(Combobox_default.osdkComboboxChipRemove, className),
1501
1588
  "aria-label": "Remove"
1502
1589
  }, rest), /* @__PURE__ */ React76__default.default.createElement(icons.Cross, null));
1503
1590
  }
@@ -1506,7 +1593,7 @@ function ComboboxClear({
1506
1593
  ...rest
1507
1594
  }) {
1508
1595
  return /* @__PURE__ */ React76__default.default.createElement(combobox.Combobox.Clear, _extends6({
1509
- className: classnames13__default.default(Combobox_default.osdkComboboxClear, className),
1596
+ className: classnames14__default.default(Combobox_default.osdkComboboxClear, className),
1510
1597
  "aria-label": "Clear all"
1511
1598
  }, rest), /* @__PURE__ */ React76__default.default.createElement(icons.Cross, null));
1512
1599
  }
@@ -1515,7 +1602,7 @@ function ComboboxEmpty({
1515
1602
  className
1516
1603
  }) {
1517
1604
  return /* @__PURE__ */ React76__default.default.createElement(combobox.Combobox.Empty, {
1518
- className: classnames13__default.default(Combobox_default.osdkComboboxEmpty, className)
1605
+ className: classnames14__default.default(Combobox_default.osdkComboboxEmpty, className)
1519
1606
  }, children);
1520
1607
  }
1521
1608
  function ComboboxList({
@@ -1524,9 +1611,21 @@ function ComboboxList({
1524
1611
  ...rest
1525
1612
  }) {
1526
1613
  return /* @__PURE__ */ React76__default.default.createElement(combobox.Combobox.List, _extends6({
1527
- className: classnames13__default.default(Combobox_default.osdkComboboxList, className)
1614
+ className: classnames14__default.default(Combobox_default.osdkComboboxList, className)
1528
1615
  }, rest), children);
1529
1616
  }
1617
+ function ComboboxItemIndicator({
1618
+ className,
1619
+ children,
1620
+ ...rest
1621
+ }) {
1622
+ return /* @__PURE__ */ React76__default.default.createElement(combobox.Combobox.ItemIndicator, _extends6({
1623
+ className: classnames14__default.default(Combobox_default.osdkComboboxItemIndicator, className),
1624
+ keepMounted: true
1625
+ }, rest), children ?? /* @__PURE__ */ React76__default.default.createElement(icons.Tick, {
1626
+ size: 16
1627
+ }));
1628
+ }
1530
1629
  var Combobox = {
1531
1630
  Root: combobox.Combobox.Root,
1532
1631
  SearchInput: ComboboxSearchInput,
@@ -1536,6 +1635,7 @@ var Combobox = {
1536
1635
  Popup: ComboboxPopup,
1537
1636
  List: ComboboxList,
1538
1637
  Item: ComboboxItem,
1638
+ ItemIndicator: ComboboxItemIndicator,
1539
1639
  Chips: ComboboxChips,
1540
1640
  Chip: ComboboxChip,
1541
1641
  ChipRemove: ComboboxChipRemove,
@@ -1557,23 +1657,35 @@ function MultiSelectInputInner({
1557
1657
  className,
1558
1658
  style,
1559
1659
  placeholder = "Select values...",
1560
- maxDisplayedTags = 3,
1561
- showClearAll = true,
1562
1660
  ariaLabel = "Search values"
1563
1661
  }) {
1564
1662
  const handleValueChange = React76.useCallback((newValues) => {
1565
1663
  onChange(newValues ?? []);
1566
1664
  }, [onChange]);
1567
- const removeValue = React76.useCallback((value) => {
1568
- onChange(selectedValues.filter((v) => v !== value));
1569
- }, [selectedValues, onChange]);
1570
- const clearAll = React76.useCallback(() => {
1571
- onChange([]);
1572
- }, [onChange]);
1573
- const displayedTags = selectedValues.slice(0, maxDisplayedTags);
1574
- const remainingCount = selectedValues.length - maxDisplayedTags;
1665
+ const items = React76.useMemo(() => values.map(({
1666
+ value
1667
+ }) => value), [values]);
1668
+ const countByValue = React76.useMemo(() => new Map(values.map(({
1669
+ value,
1670
+ count
1671
+ }) => [value, count])), [values]);
1672
+ const renderItem = React76.useCallback((value) => /* @__PURE__ */ React76__default.default.createElement(Combobox.Item, {
1673
+ key: value,
1674
+ value
1675
+ }, /* @__PURE__ */ React76__default.default.createElement(Combobox.ItemIndicator, null), /* @__PURE__ */ React76__default.default.createElement("span", {
1676
+ className: MultiSelectInput_default.itemLabel
1677
+ }, value), /* @__PURE__ */ React76__default.default.createElement("span", {
1678
+ className: MultiSelectInput_default.itemCount
1679
+ }, "(", (countByValue.get(value) ?? 0).toLocaleString(), ")")), [countByValue]);
1680
+ const renderChips = React76.useCallback((selectedItems) => /* @__PURE__ */ React76__default.default.createElement(React76__default.default.Fragment, null, selectedItems.map((value) => /* @__PURE__ */ React76__default.default.createElement(Combobox.Chip, {
1681
+ key: value,
1682
+ "aria-label": value
1683
+ }, value, /* @__PURE__ */ React76__default.default.createElement(Combobox.ChipRemove, null))), /* @__PURE__ */ React76__default.default.createElement(Combobox.Input, {
1684
+ placeholder: selectedItems.length > 0 ? "" : placeholder,
1685
+ "aria-label": ariaLabel
1686
+ })), [placeholder, ariaLabel]);
1575
1687
  return /* @__PURE__ */ React76__default.default.createElement("div", {
1576
- className: classnames13__default.default(MultiSelectInput_default.multiSelect, className),
1688
+ className: classnames14__default.default(MultiSelectInput_default.multiSelect, className),
1577
1689
  style,
1578
1690
  "data-loading": isLoading
1579
1691
  }, error && /* @__PURE__ */ React76__default.default.createElement("div", {
@@ -1583,39 +1695,11 @@ function MultiSelectInputInner({
1583
1695
  }, isLoading ? "Loading options..." : "No options available"), (values.length > 0 || isLoading) && /* @__PURE__ */ React76__default.default.createElement(Combobox.Root, {
1584
1696
  multiple: true,
1585
1697
  value: selectedValues,
1586
- onValueChange: handleValueChange
1698
+ onValueChange: handleValueChange,
1699
+ items
1587
1700
  }, isLoading && /* @__PURE__ */ React76__default.default.createElement("div", {
1588
1701
  className: shared_default.loadingMessage
1589
- }, "Updating..."), selectedValues.length > 0 && /* @__PURE__ */ React76__default.default.createElement("div", {
1590
- className: shared_default.tagContainer
1591
- }, displayedTags.map((value) => /* @__PURE__ */ React76__default.default.createElement("span", {
1592
- key: value,
1593
- className: shared_default.tag
1594
- }, value, /* @__PURE__ */ React76__default.default.createElement(button.Button, {
1595
- type: "button",
1596
- className: shared_default.tagRemove,
1597
- onClick: () => removeValue(value),
1598
- "aria-label": `Remove ${value}`
1599
- }, "\xD7"))), remainingCount > 0 && /* @__PURE__ */ React76__default.default.createElement("span", {
1600
- className: shared_default.tag
1601
- }, "+", remainingCount, " more")), /* @__PURE__ */ React76__default.default.createElement("div", {
1602
- className: MultiSelectInput_default.inputRow
1603
- }, /* @__PURE__ */ React76__default.default.createElement(Combobox.SearchInput, {
1604
- placeholder: selectedValues.length > 0 ? `${selectedValues.length} selected` : placeholder,
1605
- "aria-label": ariaLabel
1606
- }), showClearAll && selectedValues.length > 0 && /* @__PURE__ */ React76__default.default.createElement(Combobox.Clear, {
1607
- className: MultiSelectInput_default.clearButton,
1608
- onClick: clearAll,
1609
- "aria-label": "Clear all selections"
1610
- })), /* @__PURE__ */ React76__default.default.createElement(Combobox.Portal, null, /* @__PURE__ */ React76__default.default.createElement(Combobox.Positioner, null, /* @__PURE__ */ React76__default.default.createElement(Combobox.Popup, null, values.length === 0 ? /* @__PURE__ */ React76__default.default.createElement(Combobox.Empty, null, "No options available") : values.map(({
1611
- value,
1612
- count
1613
- }) => /* @__PURE__ */ React76__default.default.createElement(Combobox.Item, {
1614
- key: value,
1615
- value
1616
- }, /* @__PURE__ */ React76__default.default.createElement("span", null, value), /* @__PURE__ */ React76__default.default.createElement("span", {
1617
- className: MultiSelectInput_default.itemCount
1618
- }, "(", count.toLocaleString(), ")"))))))));
1702
+ }, "Updating..."), /* @__PURE__ */ React76__default.default.createElement(Combobox.Chips, null, /* @__PURE__ */ React76__default.default.createElement(Combobox.Value, null, renderChips)), /* @__PURE__ */ React76__default.default.createElement(Combobox.Portal, null, /* @__PURE__ */ React76__default.default.createElement(Combobox.Positioner, null, /* @__PURE__ */ React76__default.default.createElement(Combobox.Popup, null, /* @__PURE__ */ React76__default.default.createElement(Combobox.Empty, null, "No matching options"), /* @__PURE__ */ React76__default.default.createElement(Combobox.List, null, renderItem))))));
1619
1703
  }
1620
1704
  var MultiSelectInput = /* @__PURE__ */ React76.memo(MultiSelectInputInner);
1621
1705
 
@@ -1638,7 +1722,7 @@ function NullValueWrapperInner({
1638
1722
  onIncludeNullChange(!includeNull);
1639
1723
  }, [includeNull, onIncludeNullChange]);
1640
1724
  return /* @__PURE__ */ React76__default.default.createElement("div", {
1641
- className: classnames13__default.default(NullValueWrapper_default.nullWrapper, className),
1725
+ className: classnames14__default.default(NullValueWrapper_default.nullWrapper, className),
1642
1726
  style
1643
1727
  }, children, /* @__PURE__ */ React76__default.default.createElement("div", {
1644
1728
  className: NullValueWrapper_default.nullValueRow,
@@ -1718,7 +1802,7 @@ function SingleDateInputInner({
1718
1802
  onChange(void 0);
1719
1803
  }, [onChange]);
1720
1804
  return /* @__PURE__ */ React76__default.default.createElement("div", {
1721
- className: classnames13__default.default(SingleDateInput_default.singleDate, className),
1805
+ className: classnames14__default.default(SingleDateInput_default.singleDate, className),
1722
1806
  style
1723
1807
  }, /* @__PURE__ */ React76__default.default.createElement("div", {
1724
1808
  className: SingleDateInput_default.dateContainer
@@ -1739,80 +1823,6 @@ function SingleDateInputInner({
1739
1823
  }
1740
1824
  var SingleDateInput = /* @__PURE__ */ React76.memo(SingleDateInputInner);
1741
1825
 
1742
- // src/base-components/select/Select.module.css
1743
- var Select_default = {};
1744
-
1745
- // src/base-components/select/Select.tsx
1746
- function _extends8() {
1747
- return _extends8 = Object.assign ? Object.assign.bind() : function(n) {
1748
- for (var e = 1; e < arguments.length; e++) {
1749
- var t = arguments[e];
1750
- for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]);
1751
- }
1752
- return n;
1753
- }, _extends8.apply(null, arguments);
1754
- }
1755
- function SelectRoot({
1756
- children,
1757
- ...rest
1758
- }) {
1759
- return /* @__PURE__ */ React76__default.default.createElement(select.Select.Root, rest, children);
1760
- }
1761
- function SelectTrigger({
1762
- className,
1763
- placeholder,
1764
- children,
1765
- ...rest
1766
- }) {
1767
- return /* @__PURE__ */ React76__default.default.createElement(select.Select.Trigger, _extends8({
1768
- className: classnames13__default.default(Select_default.osdkSelectTrigger, className)
1769
- }, rest), children ?? /* @__PURE__ */ React76__default.default.createElement(React76__default.default.Fragment, null, /* @__PURE__ */ React76__default.default.createElement("div", {
1770
- className: Select_default.osdkSelectValueContainer
1771
- }, /* @__PURE__ */ React76__default.default.createElement(select.Select.Value, {
1772
- className: Select_default.osdkSelectValue
1773
- }), placeholder != null && /* @__PURE__ */ React76__default.default.createElement("span", {
1774
- className: Select_default.osdkSelectPlaceholder
1775
- }, placeholder)), /* @__PURE__ */ React76__default.default.createElement(select.Select.Icon, {
1776
- className: Select_default.osdkSelectIcon
1777
- }, /* @__PURE__ */ React76__default.default.createElement(icons.CaretDown, null))));
1778
- }
1779
- function SelectPositioner({
1780
- className,
1781
- children,
1782
- ...rest
1783
- }) {
1784
- return /* @__PURE__ */ React76__default.default.createElement(select.Select.Positioner, _extends8({
1785
- className: classnames13__default.default(Select_default.osdkSelectPositioner, className),
1786
- sideOffset: 4
1787
- }, rest), children);
1788
- }
1789
- function SelectPopup({
1790
- className,
1791
- children,
1792
- ...rest
1793
- }) {
1794
- return /* @__PURE__ */ React76__default.default.createElement(select.Select.Popup, _extends8({
1795
- className: classnames13__default.default(Select_default.osdkSelectPopup, className)
1796
- }, rest), children);
1797
- }
1798
- function SelectItem({
1799
- className,
1800
- children,
1801
- ...rest
1802
- }) {
1803
- return /* @__PURE__ */ React76__default.default.createElement(select.Select.Item, _extends8({
1804
- className: classnames13__default.default(Select_default.osdkSelectItem, className)
1805
- }, rest), /* @__PURE__ */ React76__default.default.createElement(select.Select.ItemText, null, children));
1806
- }
1807
- var Select = {
1808
- Root: SelectRoot,
1809
- Trigger: SelectTrigger,
1810
- Portal: select.Select.Portal,
1811
- Positioner: SelectPositioner,
1812
- Popup: SelectPopup,
1813
- Item: SelectItem
1814
- };
1815
-
1816
1826
  // src/filter-list/base/inputs/SingleSelectInput.module.css
1817
1827
  var SingleSelectInput_default = {};
1818
1828
 
@@ -1833,21 +1843,23 @@ function SingleSelectInputInner({
1833
1843
  const handleValueChange = React76.useCallback((value) => {
1834
1844
  onChange(value ?? void 0);
1835
1845
  }, [onChange]);
1836
- const handleClear = React76.useCallback(() => {
1837
- onChange(void 0);
1838
- }, [onChange]);
1839
- const items = React76.useMemo(() => {
1840
- const result = {};
1841
- for (const {
1842
- value,
1843
- count
1844
- } of values) {
1845
- result[value] = showCounts ? `${value} (${count.toLocaleString()})` : value;
1846
- }
1847
- return result;
1848
- }, [values, showCounts]);
1846
+ const items = React76.useMemo(() => values.map(({
1847
+ value
1848
+ }) => value), [values]);
1849
+ const countByValue = React76.useMemo(() => new Map(values.map(({
1850
+ value,
1851
+ count
1852
+ }) => [value, count])), [values]);
1853
+ const renderItem = React76.useCallback((value) => /* @__PURE__ */ React76__default.default.createElement(Combobox.Item, {
1854
+ key: value,
1855
+ value
1856
+ }, /* @__PURE__ */ React76__default.default.createElement(Combobox.ItemIndicator, null), /* @__PURE__ */ React76__default.default.createElement("span", {
1857
+ className: SingleSelectInput_default.itemLabel
1858
+ }, value), showCounts && /* @__PURE__ */ React76__default.default.createElement("span", {
1859
+ className: SingleSelectInput_default.itemCount
1860
+ }, "(", (countByValue.get(value) ?? 0).toLocaleString(), ")")), [countByValue, showCounts]);
1849
1861
  return /* @__PURE__ */ React76__default.default.createElement("div", {
1850
- className: classnames13__default.default(SingleSelectInput_default.singleSelect, className),
1862
+ className: classnames14__default.default(SingleSelectInput_default.singleSelect, className),
1851
1863
  style,
1852
1864
  "data-loading": isLoading
1853
1865
  }, isLoading && /* @__PURE__ */ React76__default.default.createElement("div", {
@@ -1858,25 +1870,16 @@ function SingleSelectInputInner({
1858
1870
  className: shared_default.emptyMessage
1859
1871
  }, "No options available"), (values.length > 0 || isLoading) && /* @__PURE__ */ React76__default.default.createElement("div", {
1860
1872
  className: SingleSelectInput_default.selectContainer
1861
- }, /* @__PURE__ */ React76__default.default.createElement(Select.Root, {
1873
+ }, /* @__PURE__ */ React76__default.default.createElement(Combobox.Root, {
1862
1874
  value: selectedValue ?? null,
1863
1875
  onValueChange: handleValueChange,
1864
1876
  items
1865
- }, /* @__PURE__ */ React76__default.default.createElement(Select.Trigger, {
1877
+ }, /* @__PURE__ */ React76__default.default.createElement(Combobox.SearchInput, {
1866
1878
  placeholder,
1867
1879
  "aria-label": ariaLabel
1868
- }), /* @__PURE__ */ React76__default.default.createElement(Select.Portal, null, /* @__PURE__ */ React76__default.default.createElement(Select.Positioner, null, /* @__PURE__ */ React76__default.default.createElement(Select.Popup, null, values.map(({
1869
- value,
1870
- count
1871
- }) => /* @__PURE__ */ React76__default.default.createElement(Select.Item, {
1872
- key: value,
1873
- value
1874
- }, showCounts ? `${value} (${count.toLocaleString()})` : value)))))), showClearButton && selectedValue !== void 0 && /* @__PURE__ */ React76__default.default.createElement(button.Button, {
1875
- type: "button",
1876
- className: SingleSelectInput_default.clearButton,
1877
- onClick: handleClear,
1878
- "aria-label": "Clear selection"
1879
- }, /* @__PURE__ */ React76__default.default.createElement(icons.Cross, null))));
1880
+ }), showClearButton && selectedValue !== void 0 && /* @__PURE__ */ React76__default.default.createElement(Combobox.Clear, {
1881
+ className: SingleSelectInput_default.clearButton
1882
+ }), /* @__PURE__ */ React76__default.default.createElement(Combobox.Portal, null, /* @__PURE__ */ React76__default.default.createElement(Combobox.Positioner, null, /* @__PURE__ */ React76__default.default.createElement(Combobox.Popup, null, /* @__PURE__ */ React76__default.default.createElement(Combobox.Empty, null, "No matching options"), /* @__PURE__ */ React76__default.default.createElement(Combobox.List, null, renderItem)))))));
1880
1883
  }
1881
1884
  var SingleSelectInput = /* @__PURE__ */ React76.memo(SingleSelectInputInner);
1882
1885
 
@@ -1960,7 +1963,7 @@ function TextTagsInputInner({
1960
1963
  }
1961
1964
  }, [tags, onChange]);
1962
1965
  return /* @__PURE__ */ React76__default.default.createElement("div", {
1963
- className: classnames13__default.default(TextTagsInput_default.textTags, className),
1966
+ className: classnames14__default.default(TextTagsInput_default.textTags, className),
1964
1967
  style,
1965
1968
  "data-loading": isLoading
1966
1969
  }, error && /* @__PURE__ */ React76__default.default.createElement("div", {
@@ -2021,7 +2024,7 @@ function TimelineInputInner({
2021
2024
  const startInputMax = React76.useMemo(() => endDate ?? maxDate, [endDate, maxDate]);
2022
2025
  const endInputMin = React76.useMemo(() => startDate ?? minDate, [startDate, minDate]);
2023
2026
  return /* @__PURE__ */ React76__default.default.createElement("div", {
2024
- className: classnames13__default.default(TimelineInput_default.timeline, className)
2027
+ className: classnames14__default.default(TimelineInput_default.timeline, className)
2025
2028
  }, /* @__PURE__ */ React76__default.default.createElement("div", {
2026
2029
  className: TimelineInput_default.labels
2027
2030
  }, /* @__PURE__ */ React76__default.default.createElement("span", null, formatDateForDisplay(startDate, "\u2014")), /* @__PURE__ */ React76__default.default.createElement("span", null, "to"), /* @__PURE__ */ React76__default.default.createElement("span", null, formatDateForDisplay(endDate, "\u2014")), (startDate || endDate) && /* @__PURE__ */ React76__default.default.createElement(button.Button, {
@@ -2387,7 +2390,7 @@ function LinkedPropertyInputInner({
2387
2390
  }
2388
2391
  })();
2389
2392
  return /* @__PURE__ */ React76__default.default.createElement("div", {
2390
- className: classnames13__default.default(LinkedPropertyInput_default.linkedProperty, className),
2393
+ className: classnames14__default.default(LinkedPropertyInput_default.linkedProperty, className),
2391
2394
  style
2392
2395
  }, content);
2393
2396
  }
@@ -2659,11 +2662,18 @@ function ExcludeDropdownInner({
2659
2662
  var ExcludeDropdown = /* @__PURE__ */ React76.memo(ExcludeDropdownInner);
2660
2663
 
2661
2664
  // src/filter-list/base/FilterInputExcludeRow.tsx
2665
+ function getSelectedCount(filterState) {
2666
+ if (!filterState) return 0;
2667
+ if (filterState.type === "EXACT_MATCH") return filterState.values.length;
2668
+ if (filterState.type === "SELECT") return filterState.selectedValues.length;
2669
+ return 0;
2670
+ }
2662
2671
  function FilterInputExcludeRowInner({
2663
2672
  excludeRowOpen,
2664
2673
  filterState,
2665
2674
  onFilterStateChanged,
2666
2675
  totalValueCount,
2676
+ onClearAll,
2667
2677
  children
2668
2678
  }) {
2669
2679
  const handleToggleExclude = React76.useCallback(() => {
@@ -2676,12 +2686,13 @@ function FilterInputExcludeRowInner({
2676
2686
  }, [filterState, onFilterStateChanged]);
2677
2687
  const isExcluding = filterState?.isExcluding ?? false;
2678
2688
  const isOpen = excludeRowOpen ?? false;
2689
+ const selectedCount = React76.useMemo(() => getSelectedCount(filterState), [filterState]);
2679
2690
  if (!supportsExcluding(filterState)) {
2680
2691
  return /* @__PURE__ */ React76__default.default.createElement(React76__default.default.Fragment, null, children);
2681
2692
  }
2682
2693
  return /* @__PURE__ */ React76__default.default.createElement(React76__default.default.Fragment, null, /* @__PURE__ */ React76__default.default.createElement("div", {
2683
2694
  "data-exclude-row": true,
2684
- className: classnames13__default.default(FilterListItem_default.excludeRow, {
2695
+ className: classnames14__default.default(FilterListItem_default.excludeRow, {
2685
2696
  [FilterListItem_default.excludeRowVisible]: isOpen
2686
2697
  })
2687
2698
  }, /* @__PURE__ */ React76__default.default.createElement(ExcludeDropdown, {
@@ -2690,7 +2701,10 @@ function FilterInputExcludeRowInner({
2690
2701
  }), totalValueCount != null && totalValueCount > 0 && /* @__PURE__ */ React76__default.default.createElement("span", {
2691
2702
  className: FilterListItem_default.excludeCountLabel,
2692
2703
  title: "Approximate count of unique values"
2693
- }, totalValueCount.toLocaleString(), " values")), children);
2704
+ }, selectedCount.toLocaleString(), " of", " ", totalValueCount.toLocaleString(), " values"), onClearAll && selectedCount > 0 && /* @__PURE__ */ React76__default.default.createElement(button.Button, {
2705
+ className: FilterListItem_default.clearAllButton,
2706
+ onClick: onClearAll
2707
+ }, "Clear all")), children);
2694
2708
  }
2695
2709
  var FilterInputExcludeRow = /* @__PURE__ */ React76.memo(FilterInputExcludeRowInner);
2696
2710
  function ContainsTextFilterInputInner({
@@ -2708,7 +2722,7 @@ function ContainsTextFilterInputInner({
2708
2722
  return /* @__PURE__ */ React76__default.default.createElement(ContainsTextInput, {
2709
2723
  value,
2710
2724
  onChange: handleChange,
2711
- placeholder: `Search ${propertyKey}...`
2725
+ placeholder: "Search..."
2712
2726
  });
2713
2727
  }
2714
2728
  var ContainsTextFilterInput = /* @__PURE__ */ React76.memo(ContainsTextFilterInputInner);
@@ -2815,6 +2829,13 @@ function ListogramFilterInputInner({
2815
2829
  }) {
2816
2830
  const selectedValues = React76.useMemo(() => filterState?.type === "EXACT_MATCH" ? coerceToStringArray(filterState.values) : [], [filterState]);
2817
2831
  const isExcluding = filterState?.isExcluding ?? false;
2832
+ const handleClearAll = React76.useCallback(() => {
2833
+ onFilterStateChanged({
2834
+ type: "EXACT_MATCH",
2835
+ values: [],
2836
+ isExcluding
2837
+ });
2838
+ }, [onFilterStateChanged, isExcluding]);
2818
2839
  const handleChange = React76.useCallback((values) => {
2819
2840
  onFilterStateChanged({
2820
2841
  type: "EXACT_MATCH",
@@ -2837,7 +2858,8 @@ function ListogramFilterInputInner({
2837
2858
  excludeRowOpen,
2838
2859
  filterState,
2839
2860
  onFilterStateChanged,
2840
- totalValueCount: data.length
2861
+ totalValueCount: data.length,
2862
+ onClearAll: handleClearAll
2841
2863
  }, /* @__PURE__ */ React76__default.default.createElement(ListogramInput, {
2842
2864
  values: data,
2843
2865
  maxCount,
@@ -2883,6 +2905,13 @@ function MultiSelectFilterInputInner({
2883
2905
  }) {
2884
2906
  const selectedValues = React76.useMemo(() => filterState?.type === "SELECT" ? coerceToStringArray(filterState.selectedValues) : [], [filterState]);
2885
2907
  const isExcluding = filterState?.isExcluding ?? false;
2908
+ const handleClearAll = React76.useCallback(() => {
2909
+ onFilterStateChanged({
2910
+ type: "SELECT",
2911
+ selectedValues: [],
2912
+ isExcluding
2913
+ });
2914
+ }, [onFilterStateChanged, isExcluding]);
2886
2915
  const handleChange = React76.useCallback((selectedValues2) => {
2887
2916
  onFilterStateChanged({
2888
2917
  type: "SELECT",
@@ -2902,7 +2931,8 @@ function MultiSelectFilterInputInner({
2902
2931
  excludeRowOpen,
2903
2932
  filterState,
2904
2933
  onFilterStateChanged,
2905
- totalValueCount: data.length
2934
+ totalValueCount: data.length,
2935
+ onClearAll: handleClearAll
2906
2936
  }, /* @__PURE__ */ React76__default.default.createElement(MultiSelectInput, {
2907
2937
  values: data,
2908
2938
  isLoading,
@@ -3031,6 +3061,13 @@ function SingleSelectFilterInputInner({
3031
3061
  }) {
3032
3062
  const selectedValue = React76.useMemo(() => filterState?.type === "SELECT" ? coerceToString(filterState.selectedValues[0]) : void 0, [filterState]);
3033
3063
  const isExcluding = filterState?.isExcluding ?? false;
3064
+ const handleClearAll = React76.useCallback(() => {
3065
+ onFilterStateChanged({
3066
+ type: "SELECT",
3067
+ selectedValues: [],
3068
+ isExcluding
3069
+ });
3070
+ }, [onFilterStateChanged, isExcluding]);
3034
3071
  const handleChange = React76.useCallback((value) => {
3035
3072
  onFilterStateChanged({
3036
3073
  type: "SELECT",
@@ -3050,7 +3087,8 @@ function SingleSelectFilterInputInner({
3050
3087
  excludeRowOpen,
3051
3088
  filterState,
3052
3089
  onFilterStateChanged,
3053
- totalValueCount: data.length
3090
+ totalValueCount: data.length,
3091
+ onClearAll: handleClearAll
3054
3092
  }, /* @__PURE__ */ React76__default.default.createElement(SingleSelectInput, {
3055
3093
  values: data,
3056
3094
  isLoading,
@@ -3072,6 +3110,13 @@ function TextTagsFilterInputInner({
3072
3110
  }) {
3073
3111
  const tags = React76.useMemo(() => filterState?.type === "EXACT_MATCH" ? coerceToStringArray(filterState.values) : [], [filterState]);
3074
3112
  const isExcluding = filterState?.isExcluding ?? false;
3113
+ const handleClearAll = React76.useCallback(() => {
3114
+ onFilterStateChanged({
3115
+ type: "EXACT_MATCH",
3116
+ values: [],
3117
+ isExcluding
3118
+ });
3119
+ }, [onFilterStateChanged, isExcluding]);
3075
3120
  const handleChange = React76.useCallback((values) => {
3076
3121
  onFilterStateChanged({
3077
3122
  type: "EXACT_MATCH",
@@ -3091,7 +3136,8 @@ function TextTagsFilterInputInner({
3091
3136
  excludeRowOpen,
3092
3137
  filterState,
3093
3138
  onFilterStateChanged,
3094
- totalValueCount: data.length
3139
+ totalValueCount: data.length,
3140
+ onClearAll: handleClearAll
3095
3141
  }, /* @__PURE__ */ React76__default.default.createElement(TextTagsInput, {
3096
3142
  suggestions: data,
3097
3143
  isLoading,
@@ -3232,7 +3278,7 @@ function PropertyFilterInputInner({
3232
3278
  whereClause,
3233
3279
  colorMap: definition.colorMap,
3234
3280
  displayMode: definition.listogramConfig?.displayMode,
3235
- maxVisibleItems: definition.listogramConfig?.maxVisibleItems,
3281
+ maxVisibleItems: definition.listogramConfig?.maxVisibleItems ?? 5,
3236
3282
  searchQuery,
3237
3283
  excludeRowOpen
3238
3284
  });
@@ -3808,6 +3854,13 @@ function useFilterListState(props) {
3808
3854
  onFilterStateChanged?.(definition, state);
3809
3855
  }
3810
3856
  }, [filterDefinitions, propertyTypes, onFilterClauseChanged, onFilterStateChanged]);
3857
+ const clearFilterState = React76.useCallback((filterKey) => {
3858
+ const clearedStates = new Map(filterStates);
3859
+ clearedStates.delete(filterKey);
3860
+ setFilterStates(clearedStates);
3861
+ const newWhereClause = buildWhereClause(filterDefinitions, clearedStates, propertyTypes);
3862
+ onFilterClauseChanged?.(newWhereClause);
3863
+ }, [filterStates, filterDefinitions, propertyTypes, onFilterClauseChanged]);
3811
3864
  const whereClause = React76.useMemo(() => buildWhereClause(filterDefinitions, filterStates, propertyTypes), [filterDefinitions, filterStates, propertyTypes]);
3812
3865
  const perFilterWhereClauses = React76.useMemo(() => {
3813
3866
  const map = /* @__PURE__ */ new Map();
@@ -3838,11 +3891,12 @@ function useFilterListState(props) {
3838
3891
  return React76.useMemo(() => ({
3839
3892
  filterStates,
3840
3893
  setFilterState,
3894
+ clearFilterState,
3841
3895
  whereClause,
3842
3896
  perFilterWhereClauses,
3843
3897
  activeFilterCount,
3844
3898
  reset
3845
- }), [filterStates, setFilterState, whereClause, perFilterWhereClauses, activeFilterCount, reset]);
3899
+ }), [filterStates, setFilterState, clearFilterState, whereClause, perFilterWhereClauses, activeFilterCount, reset]);
3846
3900
  }
3847
3901
  function useFilterVisibility(filterDefinitions, getFilterKey2, getIsVisible) {
3848
3902
  const [visibilityOverrides, setVisibilityOverrides] = React76.useState(() => /* @__PURE__ */ new Map());
@@ -3944,6 +3998,7 @@ function FilterList(props) {
3944
3998
  const {
3945
3999
  filterStates,
3946
4000
  setFilterState,
4001
+ clearFilterState,
3947
4002
  perFilterWhereClauses,
3948
4003
  activeFilterCount,
3949
4004
  reset
@@ -3971,11 +4026,12 @@ function FilterList(props) {
3971
4026
  }, [filterDefinitions]);
3972
4027
  const effectiveVisibleDefinitions = uncontrolledAddFilterMode ? managedVisibleDefinitions : simpleVisibleDefinitions;
3973
4028
  const handleFilterRemoved = React76.useCallback((filterKey) => {
4029
+ clearFilterState(filterKey);
3974
4030
  if (uncontrolledAddFilterMode) {
3975
4031
  hideFilter(filterKey);
3976
4032
  }
3977
4033
  onFilterRemoved?.(filterKey);
3978
- }, [uncontrolledAddFilterMode, hideFilter, onFilterRemoved]);
4034
+ }, [clearFilterState, uncontrolledAddFilterMode, hideFilter, onFilterRemoved]);
3979
4035
  const handleFilterShown = React76.useCallback((filterKey) => {
3980
4036
  showFilter(filterKey);
3981
4037
  onFilterAdded?.(filterKey, filterDefinitions ?? []);
@@ -4074,7 +4130,7 @@ var TableCell_default = {};
4074
4130
  // src/object-table/LoadingCell.tsx
4075
4131
  function LoadingCellContent() {
4076
4132
  return /* @__PURE__ */ React76__default.default.createElement(SkeletonBar, {
4077
- className: classnames13__default.default(LoadingCell_default.osdkLoadingCell, LoadingCell_default.osdkCellSkeleton)
4133
+ className: classnames14__default.default(LoadingCell_default.osdkLoadingCell, LoadingCell_default.osdkCellSkeleton)
4078
4134
  });
4079
4135
  }
4080
4136
  function LoadingCell({
@@ -4223,7 +4279,7 @@ function EditableCellInner({
4223
4279
  return /* @__PURE__ */ React76__default.default.createElement(chunkMRRRZN44_cjs.Tooltip.Provider, null, /* @__PURE__ */ React76__default.default.createElement(chunkMRRRZN44_cjs.Tooltip.Root, {
4224
4280
  disabled: !hasValidationError
4225
4281
  }, /* @__PURE__ */ React76__default.default.createElement(chunkMRRRZN44_cjs.Tooltip.Trigger, null, /* @__PURE__ */ React76__default.default.createElement("div", {
4226
- className: classnames13__default.default(EditableCell_default.osdkEditableCell, {
4282
+ className: classnames14__default.default(EditableCell_default.osdkEditableCell, {
4227
4283
  [EditableCell_default.error]: hasValidationError,
4228
4284
  [EditableCell_default.osdkEditedInput]: isEdited
4229
4285
  })
@@ -5102,14 +5158,14 @@ var TableBody_default = {};
5102
5158
  var DraggableList_default = {};
5103
5159
 
5104
5160
  // src/base-components/draggable-list/DraggableList.tsx
5105
- function _extends9() {
5106
- return _extends9 = Object.assign ? Object.assign.bind() : function(n) {
5161
+ function _extends8() {
5162
+ return _extends8 = Object.assign ? Object.assign.bind() : function(n) {
5107
5163
  for (var e = 1; e < arguments.length; e++) {
5108
5164
  var t = arguments[e];
5109
5165
  for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]);
5110
5166
  }
5111
5167
  return n;
5112
- }, _extends9.apply(null, arguments);
5168
+ }, _extends8.apply(null, arguments);
5113
5169
  }
5114
5170
  function DraggableListItem({
5115
5171
  item,
@@ -5140,7 +5196,7 @@ function DraggableListItem({
5140
5196
  style,
5141
5197
  className: DraggableList_default.draggableItem,
5142
5198
  "data-dragging": isDragging
5143
- }, /* @__PURE__ */ React76__default.default.createElement("div", _extends9({
5199
+ }, /* @__PURE__ */ React76__default.default.createElement("div", _extends8({
5144
5200
  className: DraggableList_default.dragHandle,
5145
5201
  "aria-label": `Reorder ${item.label}`
5146
5202
  }, attributes, listeners), /* @__PURE__ */ React76__default.default.createElement(icons.DragHandleVertical, {
@@ -5188,7 +5244,7 @@ function DraggableList({
5188
5244
  const DndContext2 = core.DndContext;
5189
5245
  return /* @__PURE__ */ React76__default.default.createElement("div", {
5190
5246
  ref: containerRef,
5191
- className: classnames13__default.default(DraggableList_default.draggableListContainer, className)
5247
+ className: classnames14__default.default(DraggableList_default.draggableListContainer, className)
5192
5248
  }, /* @__PURE__ */ React76__default.default.createElement(DndContext2, {
5193
5249
  sensors,
5194
5250
  collisionDetection: core.closestCenter,
@@ -5232,33 +5288,6 @@ var useKeyboardEvents = (containerRef) => {
5232
5288
  }, [containerRef]);
5233
5289
  };
5234
5290
 
5235
- // src/base-components/search-bar/SearchBar.module.css
5236
- var SearchBar_default = {};
5237
-
5238
- // src/base-components/search-bar/SearchBar.tsx
5239
- function SearchBar({
5240
- value,
5241
- onChange,
5242
- placeholder = "Search",
5243
- "aria-label": ariaLabel,
5244
- className,
5245
- onKeyDown
5246
- }) {
5247
- return /* @__PURE__ */ React76__default.default.createElement("div", {
5248
- className: classnames13__default.default(SearchBar_default.searchBar, className)
5249
- }, /* @__PURE__ */ React76__default.default.createElement(icons.Search, {
5250
- className: SearchBar_default.searchIcon
5251
- }), /* @__PURE__ */ React76__default.default.createElement(input.Input, {
5252
- type: "text",
5253
- placeholder,
5254
- "aria-label": ariaLabel ?? placeholder,
5255
- value,
5256
- onChange,
5257
- className: SearchBar_default.searchInput,
5258
- onKeyDown
5259
- }));
5260
- }
5261
-
5262
5291
  // src/object-table/ColumnConfigDialog.module.css
5263
5292
  var ColumnConfigDialog_default = {};
5264
5293
 
@@ -5426,7 +5455,7 @@ function AvailableColumnsList({
5426
5455
  return /* @__PURE__ */ React76__default.default.createElement("div", {
5427
5456
  className: ColumnConfigDialog_default.availableColumnsContainer
5428
5457
  }, /* @__PURE__ */ React76__default.default.createElement("div", {
5429
- className: classnames13__default.default(ColumnConfigDialog_default.sectionHeader, ColumnConfigDialog_default.sectionTitle)
5458
+ className: classnames14__default.default(ColumnConfigDialog_default.sectionHeader, ColumnConfigDialog_default.sectionTitle)
5430
5459
  }, "Add or Remove Columns"), /* @__PURE__ */ React76__default.default.createElement(SearchBar, {
5431
5460
  value: searchQuery,
5432
5461
  onChange: onSearchChange,
@@ -5513,7 +5542,6 @@ function MultiColumnSortDialog({
5513
5542
  columnOptions
5514
5543
  }) {
5515
5544
  const [selectedSortColumns, setSelectedSortColumns] = React76.useState([]);
5516
- const [menuSearchQuery, setMenuSearchQuery] = React76.useState("");
5517
5545
  React76.useEffect(() => {
5518
5546
  if (isOpen) {
5519
5547
  const selectedColumns = [];
@@ -5556,21 +5584,16 @@ function MultiColumnSortDialog({
5556
5584
  onClose();
5557
5585
  }, [selectedSortColumns, onApply, onClose]);
5558
5586
  const availableColumns = React76.useMemo(() => columnOptions.filter((col) => col.canSort && !selectedSortColumns.some((selected) => selected.id === col.id)), [columnOptions, selectedSortColumns]);
5559
- const filteredAvailableColumns = React76.useMemo(() => {
5560
- const query = menuSearchQuery.toLowerCase().trim();
5561
- if (!query) {
5562
- return availableColumns;
5563
- }
5564
- return availableColumns.filter((col) => col.name.toLowerCase().includes(query));
5565
- }, [availableColumns, menuSearchQuery]);
5566
- const handleMenuSearchChange = React76.useCallback((event) => {
5567
- setMenuSearchQuery(event.target.value);
5568
- }, []);
5569
- const handleMenuOpenChange = React76.useCallback((open) => {
5570
- if (open) {
5571
- setMenuSearchQuery("");
5572
- }
5573
- }, []);
5587
+ const searchableMenuItems = React76.useMemo(() => availableColumns.map((col) => ({
5588
+ key: col.id,
5589
+ label: col.name
5590
+ })), [availableColumns]);
5591
+ const handleMenuItemSelected = React76.useCallback((key) => {
5592
+ const column = availableColumns.find((col) => col.id === key);
5593
+ if (column) {
5594
+ handleAddColumn(column);
5595
+ }
5596
+ }, [availableColumns, handleAddColumn]);
5574
5597
  const sortableItems = React76.useMemo(() => {
5575
5598
  return selectedSortColumns.map((item) => ({
5576
5599
  id: item.id,
@@ -5578,7 +5601,7 @@ function MultiColumnSortDialog({
5578
5601
  content: /* @__PURE__ */ React76__default.default.createElement("div", {
5579
5602
  className: MultiColumnSortDialog_default.sortColumnItem
5580
5603
  }, /* @__PURE__ */ React76__default.default.createElement("span", {
5581
- className: classnames13__default.default(MultiColumnSortDialog_default.sortColumnName, MultiColumnSortDialog_default.truncate)
5604
+ className: classnames14__default.default(MultiColumnSortDialog_default.sortColumnName, MultiColumnSortDialog_default.truncate)
5582
5605
  }, item.name), /* @__PURE__ */ React76__default.default.createElement(button.Button, {
5583
5606
  className: MultiColumnSortDialog_default.sortDirectionButton,
5584
5607
  onClick: () => handleToggleSortDirection(item.id),
@@ -5596,9 +5619,6 @@ function MultiColumnSortDialog({
5596
5619
  variant: "primary",
5597
5620
  onClick: handleApply
5598
5621
  }, "Apply")), [handleApply, onClose]);
5599
- const handleKeyDown = React76.useCallback((event) => {
5600
- event.stopPropagation();
5601
- }, []);
5602
5622
  return /* @__PURE__ */ React76__default.default.createElement(chunkMRRRZN44_cjs.Dialog, {
5603
5623
  isOpen,
5604
5624
  onOpenChange: onClose,
@@ -5611,49 +5631,23 @@ function MultiColumnSortDialog({
5611
5631
  onReorder: handleReorderSortColumns,
5612
5632
  onRemove: handleRemoveSortColumn,
5613
5633
  className: MultiColumnSortDialog_default.sortableList
5614
- }), /* @__PURE__ */ React76__default.default.createElement(menu.Menu.Root, {
5615
- onOpenChange: handleMenuOpenChange
5616
- }, /* @__PURE__ */ React76__default.default.createElement(menu.Menu.Trigger, {
5617
- className: MultiColumnSortDialog_default.addColumnButton,
5634
+ }), /* @__PURE__ */ React76__default.default.createElement(SearchableMenu, {
5635
+ items: searchableMenuItems,
5636
+ onItemSelected: handleMenuItemSelected,
5637
+ trigger: /* @__PURE__ */ React76__default.default.createElement(React76__default.default.Fragment, null, /* @__PURE__ */ React76__default.default.createElement(icons.Add, {
5638
+ className: MultiColumnSortDialog_default.addIcon
5639
+ }), /* @__PURE__ */ React76__default.default.createElement("span", {
5640
+ className: MultiColumnSortDialog_default.addColumnText
5641
+ }, "Add Column to Sort"), /* @__PURE__ */ React76__default.default.createElement(icons.CaretDown, null)),
5642
+ triggerClassName: MultiColumnSortDialog_default.addColumnButton,
5618
5643
  disabled: availableColumns.length === 0,
5619
- "aria-label": "Add column to sort"
5620
- }, /* @__PURE__ */ React76__default.default.createElement(icons.Add, {
5621
- className: MultiColumnSortDialog_default.addIcon
5622
- }), /* @__PURE__ */ React76__default.default.createElement("span", {
5623
- className: MultiColumnSortDialog_default.addColumnText
5624
- }, "Add Column to Sort"), /* @__PURE__ */ React76__default.default.createElement(icons.CaretDown, null)), /* @__PURE__ */ React76__default.default.createElement(menu.Menu.Portal, null, /* @__PURE__ */ React76__default.default.createElement(menu.Menu.Positioner, {
5625
- className: MultiColumnSortDialog_default.menuPositioner,
5626
- sideOffset: 4
5627
- }, /* @__PURE__ */ React76__default.default.createElement(menu.Menu.Popup, {
5628
- className: MultiColumnSortDialog_default.dropdownMenu
5629
- }, /* @__PURE__ */ React76__default.default.createElement(SearchBar, {
5630
- value: menuSearchQuery,
5631
- onChange: handleMenuSearchChange,
5632
- placeholder: "Search columns",
5633
- "aria-label": "Search columns to sort",
5634
- className: MultiColumnSortDialog_default.menuSearchContainer,
5635
- onKeyDown: handleKeyDown
5636
- }), filteredAvailableColumns.map((column) => /* @__PURE__ */ React76__default.default.createElement(AvailableColumnMenuItem, {
5637
- key: column.id,
5638
- column,
5639
- onAddColumn: handleAddColumn
5640
- })), filteredAvailableColumns.length === 0 && /* @__PURE__ */ React76__default.default.createElement("div", {
5641
- className: MultiColumnSortDialog_default.menuEmptyState
5642
- }, "No matching columns")))))));
5644
+ searchPlaceholder: "Search columns",
5645
+ emptyMessage: "No matching columns"
5646
+ })));
5643
5647
  }
5644
5648
  var DialogTitle2 = /* @__PURE__ */ React76__default.default.createElement("div", {
5645
5649
  className: MultiColumnSortDialog_default.title
5646
5650
  }, /* @__PURE__ */ React76__default.default.createElement(icons.Cog, null), "Sort on Multiple Columns");
5647
- function AvailableColumnMenuItem({
5648
- column,
5649
- onAddColumn
5650
- }) {
5651
- const onClick = React76.useCallback(() => onAddColumn(column), [onAddColumn, column]);
5652
- return /* @__PURE__ */ React76__default.default.createElement(menu.Menu.Item, {
5653
- className: classnames13__default.default(MultiColumnSortDialog_default.dropdownItem, MultiColumnSortDialog_default.truncate),
5654
- onClick
5655
- }, column.name);
5656
- }
5657
5651
 
5658
5652
  // src/object-table/TableHeader.module.css
5659
5653
  var TableHeader_default = {};
@@ -5682,7 +5676,7 @@ function HeaderMenuItem({
5682
5676
  }) {
5683
5677
  return /* @__PURE__ */ React76__default.default.createElement(menu.Menu.Item, {
5684
5678
  closeOnClick: true,
5685
- className: classnames13__default.default(TableHeaderWithPopover_default.osdkCenterContainer, TableHeaderWithPopover_default.osdkContentGap, TableHeaderWithPopover_default.osdkHeaderMenuItem, active && TableHeaderWithPopover_default.osdkHeaderActiveMenuItem),
5679
+ className: classnames14__default.default(TableHeaderWithPopover_default.osdkCenterContainer, TableHeaderWithPopover_default.osdkContentGap, TableHeaderWithPopover_default.osdkHeaderMenuItem, active && TableHeaderWithPopover_default.osdkHeaderActiveMenuItem),
5686
5680
  onClick
5687
5681
  }, /* @__PURE__ */ React76__default.default.createElement(Icon, {
5688
5682
  className: TableHeaderWithPopover_default.osdkHeaderIcon
@@ -5770,16 +5764,16 @@ function TableHeaderWithPopover({
5770
5764
  open: isOpen,
5771
5765
  onOpenChange: setIsOpen
5772
5766
  }, /* @__PURE__ */ React76__default.default.createElement("div", {
5773
- className: classnames13__default.default(TableHeaderWithPopover_default.osdkCenterContainer, TableHeaderWithPopover_default.osdkContentGap, TableHeaderWithPopover_default.osdkHeaderContainer),
5767
+ className: classnames14__default.default(TableHeaderWithPopover_default.osdkCenterContainer, TableHeaderWithPopover_default.osdkContentGap, TableHeaderWithPopover_default.osdkHeaderContainer),
5774
5768
  onContextMenu: handleInteraction
5775
5769
  }, /* @__PURE__ */ React76__default.default.createElement("div", {
5776
- className: classnames13__default.default(TableHeaderWithPopover_default.osdkCenterContainer, TableHeaderWithPopover_default.osdkContentGap, TableHeaderWithPopover_default.osdkHeaderContentLeft)
5770
+ className: classnames14__default.default(TableHeaderWithPopover_default.osdkCenterContainer, TableHeaderWithPopover_default.osdkContentGap, TableHeaderWithPopover_default.osdkHeaderContentLeft)
5777
5771
  }, isColumnPinned && /* @__PURE__ */ React76__default.default.createElement(icons.Pin, {
5778
5772
  className: TableHeaderWithPopover_default.osdkHeaderIcon
5779
5773
  }), /* @__PURE__ */ React76__default.default.createElement(TableHeaderContent, {
5780
5774
  header
5781
5775
  })), /* @__PURE__ */ React76__default.default.createElement("div", {
5782
- className: classnames13__default.default(TableHeaderWithPopover_default.osdkCenterContainer, TableHeaderWithPopover_default.osdkContentGap, TableHeaderWithPopover_default.osdkHeaderContentRight)
5776
+ className: classnames14__default.default(TableHeaderWithPopover_default.osdkCenterContainer, TableHeaderWithPopover_default.osdkContentGap, TableHeaderWithPopover_default.osdkHeaderContentRight)
5783
5777
  }, isSorted && /* @__PURE__ */ React76__default.default.createElement("div", {
5784
5778
  className: TableHeaderWithPopover_default.osdkCenterContainer
5785
5779
  }, isSorted === "asc" ? /* @__PURE__ */ React76__default.default.createElement(icons.SortAlphabetical, {
@@ -5790,7 +5784,7 @@ function TableHeaderWithPopover({
5790
5784
  className: TableHeaderWithPopover_default.sortIndex
5791
5785
  }, sortIndex + 1)), hasAnyMenuItems && /* @__PURE__ */ React76__default.default.createElement(menu.Menu.Trigger, {
5792
5786
  "aria-label": `Open header menu for column with id=${header.column.id}`,
5793
- className: classnames13__default.default(TableHeaderWithPopover_default.osdkCenterContainer, TableHeaderWithPopover_default.osdkHeaderPopoverTrigger)
5787
+ className: classnames14__default.default(TableHeaderWithPopover_default.osdkCenterContainer, TableHeaderWithPopover_default.osdkHeaderPopoverTrigger)
5794
5788
  }, /* @__PURE__ */ React76__default.default.createElement(icons.ChevronDown, {
5795
5789
  className: TableHeaderWithPopover_default.osdkHeaderIcon
5796
5790
  }))), /* @__PURE__ */ React76__default.default.createElement(menu.Menu.Portal, {
@@ -5935,7 +5929,7 @@ function TableHeader({
5935
5929
  return /* @__PURE__ */ React76__default.default.createElement("th", {
5936
5930
  key: header.id,
5937
5931
  "data-pinned": header.column.getIsPinned(),
5938
- className: classnames13__default.default(TableHeader_default.osdkTableHeaderCell, {
5932
+ className: classnames14__default.default(TableHeader_default.osdkTableHeaderCell, {
5939
5933
  [TableHeader_default.osdkTableSelectionHeaderCell]: isSelectColumn
5940
5934
  }),
5941
5935
  style: columnStyles
@@ -6029,7 +6023,7 @@ function LoadingStateTable({
6029
6023
  width
6030
6024
  }
6031
6025
  }, /* @__PURE__ */ React76__default.default.createElement(SkeletonBar, {
6032
- className: classnames13__default.default(TableHeader_default.osdkLoadingHeaderCell, LoadingCell_default.osdkCellSkeleton)
6026
+ className: classnames14__default.default(TableHeader_default.osdkLoadingHeaderCell, LoadingCell_default.osdkCellSkeleton)
6033
6027
  }));
6034
6028
  }))), /* @__PURE__ */ React76__default.default.createElement("tbody", {
6035
6029
  className: TableBody_default.osdkTableBody,
@@ -6376,7 +6370,7 @@ function BaseTable({
6376
6370
  };
6377
6371
  }, []);
6378
6372
  return /* @__PURE__ */ React76__default.default.createElement("div", {
6379
- className: classnames13__default.default(Table_default.osdkTableWrapper, className)
6373
+ className: classnames14__default.default(Table_default.osdkTableWrapper, className)
6380
6374
  }, /* @__PURE__ */ React76__default.default.createElement("div", {
6381
6375
  ref: tableContainerRef,
6382
6376
  className: Table_default.osdkTableContainer,
@@ -6608,7 +6602,7 @@ function AnnotationItem({
6608
6602
  handleClick,
6609
6603
  handleKeyDown
6610
6604
  } = useAnnotationHandlers(annotation, onClick);
6611
- const className = classnames13__default.default(PdfViewerAnnotationLayer_default.annotation, PdfViewerAnnotationLayer_default[annotation.type]);
6605
+ const className = classnames14__default.default(PdfViewerAnnotationLayer_default.annotation, PdfViewerAnnotationLayer_default[annotation.type]);
6612
6606
  const multiRects = annotation.rects;
6613
6607
  const hasMultipleRects = multiRects != null && multiRects.length > 1;
6614
6608
  const style = React76.useMemo(() => computeRectStyle(annotation.rect, pageHeight, scale, annotation.color), [annotation, pageHeight, scale]);
@@ -6783,7 +6777,7 @@ function PdfViewerOutlineItem({
6783
6777
  onClick(item.pageNumber);
6784
6778
  }
6785
6779
  }, [onClick, item.pageNumber]);
6786
- const itemClassName = classnames13__default.default(PdfViewerOutlineSidebar_default.outlineItem, isActive && PdfViewerOutlineSidebar_default.outlineItemActive, item.bold && PdfViewerOutlineSidebar_default.outlineItemBold, item.italic && PdfViewerOutlineSidebar_default.outlineItemItalic);
6780
+ const itemClassName = classnames14__default.default(PdfViewerOutlineSidebar_default.outlineItem, isActive && PdfViewerOutlineSidebar_default.outlineItemActive, item.bold && PdfViewerOutlineSidebar_default.outlineItemBold, item.italic && PdfViewerOutlineSidebar_default.outlineItemItalic);
6787
6781
  const paddingLeft = INDENT_PER_DEPTH * item.depth + 12;
6788
6782
  return /* @__PURE__ */ React76__default.default.createElement("div", {
6789
6783
  className: itemClassName,
@@ -6965,7 +6959,7 @@ function PdfViewerThumbnail({
6965
6959
  onClick();
6966
6960
  }
6967
6961
  }, [onClick]);
6968
- const containerClassName = classnames13__default.default(PdfViewerThumbnail_default.thumbnailContainer, isActive && PdfViewerThumbnail_default.active);
6962
+ const containerClassName = classnames14__default.default(PdfViewerThumbnail_default.thumbnailContainer, isActive && PdfViewerThumbnail_default.active);
6969
6963
  return /* @__PURE__ */ React76__default.default.createElement("div", {
6970
6964
  className: containerClassName,
6971
6965
  onClick,
@@ -7198,7 +7192,7 @@ function PdfViewerToolbar({
7198
7192
  }))), enableHighlight && /* @__PURE__ */ React76__default.default.createElement(React76__default.default.Fragment, null, /* @__PURE__ */ React76__default.default.createElement("div", {
7199
7193
  className: PdfViewerToolbar_default.separator
7200
7194
  }), /* @__PURE__ */ React76__default.default.createElement(button.Button, {
7201
- className: classnames13__default.default(PdfViewerToolbar_default.toolbarButton, highlightModeActive && PdfViewerToolbar_default.toolbarButtonActive),
7195
+ className: classnames14__default.default(PdfViewerToolbar_default.toolbarButton, highlightModeActive && PdfViewerToolbar_default.toolbarButtonActive),
7202
7196
  onClick: onHighlightToggle,
7203
7197
  "aria-label": highlightModeActive ? "Disable highlight mode" : "Enable highlight mode",
7204
7198
  title: highlightModeActive ? "Disable highlight mode" : "Enable highlight mode",
@@ -8376,7 +8370,7 @@ var BasePdfViewer = /* @__PURE__ */ React76.forwardRef(function BasePdfViewer2({
8376
8370
  onFormChange
8377
8371
  });
8378
8372
  const annotationsByPage = usePdfAnnotationsByPage(annotations);
8379
- const rootClassName = classnames13__default.default(PdfViewer_default.pdfViewer, className);
8373
+ const rootClassName = classnames14__default.default(PdfViewer_default.pdfViewer, className);
8380
8374
  if (viewer.loading) {
8381
8375
  return /* @__PURE__ */ React76__default.default.createElement("div", {
8382
8376
  className: rootClassName
@@ -8513,7 +8507,7 @@ function PdfViewerContent({
8513
8507
  React76.useEffect(function clearInitialMount() {
8514
8508
  isInitialMountRef.current = false;
8515
8509
  }, []);
8516
- const rootClassName = classnames13__default.default(PdfViewer_default.pdfViewer, className);
8510
+ const rootClassName = classnames14__default.default(PdfViewer_default.pdfViewer, className);
8517
8511
  if (viewer.loading) {
8518
8512
  return /* @__PURE__ */ React76__default.default.createElement("div", {
8519
8513
  className: rootClassName
@@ -8633,14 +8627,14 @@ function usePdfViewerInstance(options) {
8633
8627
  outlineIcons
8634
8628
  }), [viewer, highlightEnabled, highlightModeActive, toggleHighlightMode, hasFormFields, submitFormData, annotations, annotationsByPage, onAnnotationClick, enableDownload, enableFormSave, outlineIcons]);
8635
8629
  }
8636
- function _extends10() {
8637
- return _extends10 = Object.assign ? Object.assign.bind() : function(n) {
8630
+ function _extends9() {
8631
+ return _extends9 = Object.assign ? Object.assign.bind() : function(n) {
8638
8632
  for (var e = 1; e < arguments.length; e++) {
8639
8633
  var t = arguments[e];
8640
8634
  for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]);
8641
8635
  }
8642
8636
  return n;
8643
- }, _extends10.apply(null, arguments);
8637
+ }, _extends9.apply(null, arguments);
8644
8638
  }
8645
8639
  async function fetchMediaContents(media) {
8646
8640
  const result = await media.fetchContents();
@@ -8674,7 +8668,7 @@ function PdfViewer({
8674
8668
  cancelled = true;
8675
8669
  };
8676
8670
  }, [media]);
8677
- const rootClassName = classnames13__default.default(PdfViewer_default.pdfViewer, className);
8671
+ const rootClassName = classnames14__default.default(PdfViewer_default.pdfViewer, className);
8678
8672
  if (loading) {
8679
8673
  return /* @__PURE__ */ React76__default.default.createElement("div", {
8680
8674
  className: rootClassName
@@ -8700,7 +8694,7 @@ function PdfViewer({
8700
8694
  className: PdfViewer_default.loadingContainer
8701
8695
  }, "No document"));
8702
8696
  }
8703
- return /* @__PURE__ */ React76__default.default.createElement(BasePdfViewer, _extends10({
8697
+ return /* @__PURE__ */ React76__default.default.createElement(BasePdfViewer, _extends9({
8704
8698
  src,
8705
8699
  className
8706
8700
  }, pdfViewerProps));
@@ -8814,7 +8808,7 @@ function DatetimePickerField({
8814
8808
  onOpenChange: setIsOpen
8815
8809
  }, /* @__PURE__ */ React76__default.default.createElement(popover.Popover.Trigger, {
8816
8810
  id,
8817
- className: classnames13__default.default(DatetimePickerField_default.triggerButton, !hasValue && DatetimePickerField_default.triggerButtonPlaceholder),
8811
+ className: classnames14__default.default(DatetimePickerField_default.triggerButton, !hasValue && DatetimePickerField_default.triggerButtonPlaceholder),
8818
8812
  "aria-label": hasValue ? void 0 : "Select date"
8819
8813
  }, displayText), /* @__PURE__ */ React76__default.default.createElement(popover.Popover.Portal, null, /* @__PURE__ */ React76__default.default.createElement(popover.Popover.Positioner, {
8820
8814
  sideOffset: 4
@@ -8828,6 +8822,82 @@ function DatetimePickerField({
8828
8822
  footer
8829
8823
  })))));
8830
8824
  }
8825
+
8826
+ // src/base-components/select/Select.module.css
8827
+ var Select_default = {};
8828
+
8829
+ // src/base-components/select/Select.tsx
8830
+ function _extends10() {
8831
+ return _extends10 = Object.assign ? Object.assign.bind() : function(n) {
8832
+ for (var e = 1; e < arguments.length; e++) {
8833
+ var t = arguments[e];
8834
+ for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]);
8835
+ }
8836
+ return n;
8837
+ }, _extends10.apply(null, arguments);
8838
+ }
8839
+ function SelectRoot({
8840
+ children,
8841
+ ...rest
8842
+ }) {
8843
+ return /* @__PURE__ */ React76__default.default.createElement(select.Select.Root, rest, children);
8844
+ }
8845
+ function SelectTrigger({
8846
+ className,
8847
+ placeholder,
8848
+ children,
8849
+ ...rest
8850
+ }) {
8851
+ return /* @__PURE__ */ React76__default.default.createElement(select.Select.Trigger, _extends10({
8852
+ className: classnames14__default.default(Select_default.osdkSelectTrigger, className)
8853
+ }, rest), children ?? /* @__PURE__ */ React76__default.default.createElement(React76__default.default.Fragment, null, /* @__PURE__ */ React76__default.default.createElement("div", {
8854
+ className: Select_default.osdkSelectValueContainer
8855
+ }, /* @__PURE__ */ React76__default.default.createElement(select.Select.Value, {
8856
+ className: Select_default.osdkSelectValue
8857
+ }), placeholder != null && /* @__PURE__ */ React76__default.default.createElement("span", {
8858
+ className: Select_default.osdkSelectPlaceholder
8859
+ }, placeholder)), /* @__PURE__ */ React76__default.default.createElement(select.Select.Icon, {
8860
+ className: Select_default.osdkSelectIcon
8861
+ }, /* @__PURE__ */ React76__default.default.createElement(icons.CaretDown, null))));
8862
+ }
8863
+ function SelectPositioner({
8864
+ className,
8865
+ children,
8866
+ ...rest
8867
+ }) {
8868
+ return /* @__PURE__ */ React76__default.default.createElement(select.Select.Positioner, _extends10({
8869
+ className: classnames14__default.default(Select_default.osdkSelectPositioner, className),
8870
+ sideOffset: 4
8871
+ }, rest), children);
8872
+ }
8873
+ function SelectPopup({
8874
+ className,
8875
+ children,
8876
+ ...rest
8877
+ }) {
8878
+ return /* @__PURE__ */ React76__default.default.createElement(select.Select.Popup, _extends10({
8879
+ className: classnames14__default.default(Select_default.osdkSelectPopup, className)
8880
+ }, rest), children);
8881
+ }
8882
+ function SelectItem({
8883
+ className,
8884
+ children,
8885
+ ...rest
8886
+ }) {
8887
+ return /* @__PURE__ */ React76__default.default.createElement(select.Select.Item, _extends10({
8888
+ className: classnames14__default.default(Select_default.osdkSelectItem, className)
8889
+ }, rest), /* @__PURE__ */ React76__default.default.createElement(select.Select.ItemText, null, children));
8890
+ }
8891
+ var Select = {
8892
+ Root: SelectRoot,
8893
+ Trigger: SelectTrigger,
8894
+ Portal: select.Select.Portal,
8895
+ Positioner: SelectPositioner,
8896
+ Popup: SelectPopup,
8897
+ Item: SelectItem
8898
+ };
8899
+
8900
+ // src/action-form/fields/DropdownField.tsx
8831
8901
  function _extends11() {
8832
8902
  return _extends11 = Object.assign ? Object.assign.bind() : function(n) {
8833
8903
  for (var e = 1; e < arguments.length; e++) {
@@ -8920,6 +8990,102 @@ function defaultItemToStringLabel(item) {
8920
8990
  return String(item);
8921
8991
  }
8922
8992
 
8993
+ // src/action-form/fields/NumberInputField.module.css
8994
+ var NumberInputField_default = {};
8995
+
8996
+ // src/action-form/fields/NumberInputField.tsx
8997
+ var VALID_NUMERIC_REGEX = /^[+-.]?(\d+\.?\d*|\d*\.?\d+)?([eE][+-]?\d*)?$/;
8998
+ var DEFAULT_STEP = 1;
8999
+ var CHEVRON_SIZE = 12;
9000
+ function NumberInputField({
9001
+ id,
9002
+ value,
9003
+ onChange,
9004
+ placeholder,
9005
+ min: _min,
9006
+ max: _max,
9007
+ step
9008
+ }) {
9009
+ const [displayValue, setDisplayValue] = React76.useState(() => formatNumberForDisplay(value));
9010
+ const prevValueRef = React76.useRef(value);
9011
+ if (prevValueRef.current !== value) {
9012
+ prevValueRef.current = value;
9013
+ const currentParsed = parseNumericValue(displayValue);
9014
+ if (value !== currentParsed) {
9015
+ setDisplayValue(formatNumberForDisplay(value));
9016
+ }
9017
+ }
9018
+ const handleValueChange = React76.useCallback((newValue) => {
9019
+ if (!isValidInput(newValue)) {
9020
+ return;
9021
+ }
9022
+ setDisplayValue(newValue);
9023
+ onChange?.(parseNumericValue(newValue));
9024
+ }, [onChange]);
9025
+ const applyStep = React76.useCallback((direction) => {
9026
+ const current = parseNumericValue(displayValue) ?? 0;
9027
+ const delta = direction * (step ?? DEFAULT_STEP);
9028
+ const next = current + delta;
9029
+ const formatted = formatNumberForDisplay(next);
9030
+ setDisplayValue(formatted);
9031
+ onChange?.(next);
9032
+ }, [displayValue, onChange, step]);
9033
+ const handleKeyDown = React76.useCallback((e) => {
9034
+ if (e.key !== "ArrowUp" && e.key !== "ArrowDown") {
9035
+ return;
9036
+ }
9037
+ e.preventDefault();
9038
+ applyStep(e.key === "ArrowUp" ? 1 : -1);
9039
+ }, [applyStep]);
9040
+ const handleStepUp = React76.useCallback(() => {
9041
+ applyStep(1);
9042
+ }, [applyStep]);
9043
+ const handleStepDown = React76.useCallback(() => {
9044
+ applyStep(-1);
9045
+ }, [applyStep]);
9046
+ return /* @__PURE__ */ React76__default.default.createElement("div", {
9047
+ className: NumberInputField_default.osdkNumberInputWrapper
9048
+ }, /* @__PURE__ */ React76__default.default.createElement(input.Input, {
9049
+ id,
9050
+ className: NumberInputField_default.osdkNumberInputField,
9051
+ type: "text",
9052
+ inputMode: "decimal",
9053
+ value: displayValue,
9054
+ onValueChange: handleValueChange,
9055
+ onKeyDown: handleKeyDown,
9056
+ placeholder
9057
+ }), /* @__PURE__ */ React76__default.default.createElement("div", {
9058
+ className: NumberInputField_default.osdkNumberInputStepper
9059
+ }, /* @__PURE__ */ React76__default.default.createElement(button.Button, {
9060
+ className: NumberInputField_default.osdkNumberInputStepButton,
9061
+ "aria-label": "Increment",
9062
+ tabIndex: -1,
9063
+ onClick: handleStepUp
9064
+ }, /* @__PURE__ */ React76__default.default.createElement(icons.ChevronUp, {
9065
+ size: CHEVRON_SIZE
9066
+ })), /* @__PURE__ */ React76__default.default.createElement(button.Button, {
9067
+ className: NumberInputField_default.osdkNumberInputStepButton,
9068
+ "aria-label": "Decrement",
9069
+ tabIndex: -1,
9070
+ onClick: handleStepDown
9071
+ }, /* @__PURE__ */ React76__default.default.createElement(icons.ChevronDown, {
9072
+ size: CHEVRON_SIZE
9073
+ }))));
9074
+ }
9075
+ function isValidInput(text) {
9076
+ return VALID_NUMERIC_REGEX.test(text);
9077
+ }
9078
+ function parseNumericValue(text) {
9079
+ if (text === "") {
9080
+ return null;
9081
+ }
9082
+ const parsed = Number(text);
9083
+ return Number.isNaN(parsed) ? null : parsed;
9084
+ }
9085
+ function formatNumberForDisplay(value) {
9086
+ return value != null ? String(value) : "";
9087
+ }
9088
+
8923
9089
  // src/action-form/fields/RadioButtonsField.module.css
8924
9090
  var RadioButtonsField_default = {};
8925
9091
 
@@ -9093,6 +9259,12 @@ function renderFieldComponent(fieldDefinition, value, onChange) {
9093
9259
  onChange
9094
9260
  }, fieldDefinition.fieldComponentProps));
9095
9261
  case "NUMBER_INPUT":
9262
+ return /* @__PURE__ */ React76__default.default.createElement(NumberInputField, _extends13({
9263
+ id: fieldDefinition.fieldKey,
9264
+ value: typeof value === "number" ? value : null,
9265
+ onChange,
9266
+ placeholder: fieldDefinition.placeholder
9267
+ }, fieldDefinition.fieldComponentProps));
9096
9268
  case "FILE_PICKER":
9097
9269
  case "OBJECT_SET":
9098
9270
  return /* @__PURE__ */ React76__default.default.createElement("div", null, "Unsupported field type: ", fieldDefinition.fieldComponent);
@@ -9171,7 +9343,7 @@ var BaseForm = /* @__PURE__ */ React76.memo(function BaseFormFn({
9171
9343
  onSubmit(controlledFormState ?? rhfValues);
9172
9344
  }, [onSubmit, controlledFormState]);
9173
9345
  return /* @__PURE__ */ React76__default.default.createElement("form", {
9174
- className: classnames13__default.default(BaseForm_default.osdkForm, className),
9346
+ className: classnames14__default.default(BaseForm_default.osdkForm, className),
9175
9347
  onSubmit: rhfHandleSubmit(onFormSubmit)
9176
9348
  }, formTitle != null && /* @__PURE__ */ React76__default.default.createElement(FormHeader, {
9177
9349
  title: formTitle