@clicoh/orion-library 1.1.0 → 1.2.0-beta.10

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 (156) hide show
  1. package/assets/css/base.css +24 -1
  2. package/dist/components/01-atoms/Badge/Badge.d.ts +13 -3
  3. package/dist/components/01-atoms/Badge/Badge.d.ts.map +1 -1
  4. package/dist/components/01-atoms/Badge/Badge.jsx +21 -4
  5. package/dist/components/01-atoms/Badge/Badge.jsx.map +1 -1
  6. package/dist/components/01-atoms/Button/Button.d.ts +7 -1
  7. package/dist/components/01-atoms/Button/Button.d.ts.map +1 -1
  8. package/dist/components/01-atoms/Button/Button.jsx +46 -4
  9. package/dist/components/01-atoms/Button/Button.jsx.map +1 -1
  10. package/dist/components/01-atoms/IconButton/IconButton.d.ts +28 -0
  11. package/dist/components/01-atoms/IconButton/IconButton.d.ts.map +1 -0
  12. package/dist/components/01-atoms/IconButton/IconButton.jsx +32 -0
  13. package/dist/components/01-atoms/IconButton/IconButton.jsx.map +1 -0
  14. package/dist/components/01-atoms/IconButton/index.d.ts +2 -0
  15. package/dist/components/01-atoms/IconButton/index.d.ts.map +1 -0
  16. package/dist/components/01-atoms/IconButton/index.js +2 -0
  17. package/dist/components/01-atoms/IconButton/index.js.map +1 -0
  18. package/dist/components/01-atoms/Input/Input.d.ts +5 -1
  19. package/dist/components/01-atoms/Input/Input.d.ts.map +1 -1
  20. package/dist/components/01-atoms/Input/Input.jsx +12 -6
  21. package/dist/components/01-atoms/Input/Input.jsx.map +1 -1
  22. package/dist/components/01-atoms/Input/utils/border.d.ts +3 -1
  23. package/dist/components/01-atoms/Input/utils/border.d.ts.map +1 -1
  24. package/dist/components/01-atoms/Input/utils/border.js +3 -3
  25. package/dist/components/01-atoms/Input/utils/border.js.map +1 -1
  26. package/dist/components/01-atoms/MultiSelect/MultiSelect.jsx +2 -2
  27. package/dist/components/01-atoms/MultiSelect/MultiSelect.jsx.map +1 -1
  28. package/dist/components/01-atoms/ProgressBar/ProgressBar.d.ts +42 -0
  29. package/dist/components/01-atoms/ProgressBar/ProgressBar.d.ts.map +1 -0
  30. package/dist/components/01-atoms/ProgressBar/ProgressBar.jsx +52 -0
  31. package/dist/components/01-atoms/ProgressBar/ProgressBar.jsx.map +1 -0
  32. package/dist/components/01-atoms/ProgressBar/index.d.ts +2 -0
  33. package/dist/components/01-atoms/ProgressBar/index.d.ts.map +1 -0
  34. package/dist/components/01-atoms/ProgressBar/index.js +2 -0
  35. package/dist/components/01-atoms/ProgressBar/index.js.map +1 -0
  36. package/dist/components/01-atoms/Radio/Radio.d.ts +19 -2
  37. package/dist/components/01-atoms/Radio/Radio.d.ts.map +1 -1
  38. package/dist/components/01-atoms/Radio/Radio.jsx +51 -6
  39. package/dist/components/01-atoms/Radio/Radio.jsx.map +1 -1
  40. package/dist/components/01-atoms/Select/Select.d.ts +3 -1
  41. package/dist/components/01-atoms/Select/Select.d.ts.map +1 -1
  42. package/dist/components/01-atoms/Select/Select.jsx +8 -4
  43. package/dist/components/01-atoms/Select/Select.jsx.map +1 -1
  44. package/dist/components/01-atoms/Skeleton/Skeleton.d.ts +32 -0
  45. package/dist/components/01-atoms/Skeleton/Skeleton.d.ts.map +1 -0
  46. package/dist/components/01-atoms/Skeleton/Skeleton.jsx +34 -0
  47. package/dist/components/01-atoms/Skeleton/Skeleton.jsx.map +1 -0
  48. package/dist/components/01-atoms/Skeleton/index.d.ts +2 -0
  49. package/dist/components/01-atoms/Skeleton/index.d.ts.map +1 -0
  50. package/dist/components/01-atoms/Skeleton/index.js +2 -0
  51. package/dist/components/01-atoms/Skeleton/index.js.map +1 -0
  52. package/dist/components/01-atoms/SmallInput/SmallInput.jsx +1 -1
  53. package/dist/components/01-atoms/SmallInput/SmallInput.jsx.map +1 -1
  54. package/dist/components/01-atoms/Switch/Switch.d.ts +5 -2
  55. package/dist/components/01-atoms/Switch/Switch.d.ts.map +1 -1
  56. package/dist/components/01-atoms/Switch/Switch.jsx +15 -12
  57. package/dist/components/01-atoms/Switch/Switch.jsx.map +1 -1
  58. package/dist/components/01-atoms/Textarea/Textarea.d.ts +38 -0
  59. package/dist/components/01-atoms/Textarea/Textarea.d.ts.map +1 -0
  60. package/dist/components/01-atoms/Textarea/Textarea.jsx +50 -0
  61. package/dist/components/01-atoms/Textarea/Textarea.jsx.map +1 -0
  62. package/dist/components/01-atoms/Textarea/index.d.ts +2 -0
  63. package/dist/components/01-atoms/Textarea/index.d.ts.map +1 -0
  64. package/dist/components/01-atoms/Textarea/index.js +2 -0
  65. package/dist/components/01-atoms/Textarea/index.js.map +1 -0
  66. package/dist/components/01-atoms/Toast/Toast.d.ts.map +1 -1
  67. package/dist/components/01-atoms/Toast/Toast.jsx +3 -1
  68. package/dist/components/01-atoms/Toast/Toast.jsx.map +1 -1
  69. package/dist/components/01-atoms/index.d.ts +4 -0
  70. package/dist/components/01-atoms/index.d.ts.map +1 -1
  71. package/dist/components/01-atoms/index.js +4 -0
  72. package/dist/components/01-atoms/index.js.map +1 -1
  73. package/dist/components/02-molecules/Accordion/Accordion.d.ts +15 -4
  74. package/dist/components/02-molecules/Accordion/Accordion.d.ts.map +1 -1
  75. package/dist/components/02-molecules/Accordion/Accordion.jsx +20 -6
  76. package/dist/components/02-molecules/Accordion/Accordion.jsx.map +1 -1
  77. package/dist/components/02-molecules/Accordion/AccordionContext.d.ts +5 -1
  78. package/dist/components/02-molecules/Accordion/AccordionContext.d.ts.map +1 -1
  79. package/dist/components/02-molecules/Accordion/AccordionContext.jsx +4 -3
  80. package/dist/components/02-molecules/Accordion/AccordionContext.jsx.map +1 -1
  81. package/dist/components/02-molecules/Accordion/AccordionSection.d.ts +2 -1
  82. package/dist/components/02-molecules/Accordion/AccordionSection.d.ts.map +1 -1
  83. package/dist/components/02-molecules/Accordion/AccordionSection.jsx +35 -8
  84. package/dist/components/02-molecules/Accordion/AccordionSection.jsx.map +1 -1
  85. package/dist/components/02-molecules/Accordion/index.d.ts +1 -0
  86. package/dist/components/02-molecules/Accordion/index.d.ts.map +1 -1
  87. package/dist/components/02-molecules/Accordion/index.js.map +1 -1
  88. package/dist/components/02-molecules/Autocomplete/Autocomplete.d.ts +10 -1
  89. package/dist/components/02-molecules/Autocomplete/Autocomplete.d.ts.map +1 -1
  90. package/dist/components/02-molecules/Autocomplete/Autocomplete.jsx +29 -10
  91. package/dist/components/02-molecules/Autocomplete/Autocomplete.jsx.map +1 -1
  92. package/dist/components/02-molecules/DatePicker/DatePicker.d.ts +79 -0
  93. package/dist/components/02-molecules/DatePicker/DatePicker.d.ts.map +1 -0
  94. package/dist/components/02-molecules/DatePicker/DatePicker.jsx +229 -0
  95. package/dist/components/02-molecules/DatePicker/DatePicker.jsx.map +1 -0
  96. package/dist/components/02-molecules/DatePicker/index.d.ts +2 -0
  97. package/dist/components/02-molecules/DatePicker/index.d.ts.map +1 -0
  98. package/dist/components/02-molecules/DatePicker/index.js +2 -0
  99. package/dist/components/02-molecules/DatePicker/index.js.map +1 -0
  100. package/dist/components/02-molecules/Filter/Filter.d.ts +1 -0
  101. package/dist/components/02-molecules/Filter/Filter.d.ts.map +1 -1
  102. package/dist/components/02-molecules/Filter/Filter.jsx +25 -4
  103. package/dist/components/02-molecules/Filter/Filter.jsx.map +1 -1
  104. package/dist/components/02-molecules/Filter/index.d.ts +1 -0
  105. package/dist/components/02-molecules/Filter/index.d.ts.map +1 -1
  106. package/dist/components/02-molecules/Filter/index.js +1 -0
  107. package/dist/components/02-molecules/Filter/index.js.map +1 -1
  108. package/dist/components/02-molecules/Filter/types.d.ts +24 -5
  109. package/dist/components/02-molecules/Filter/types.d.ts.map +1 -1
  110. package/dist/components/02-molecules/Filter/utils/pruneOrphanValues.d.ts +34 -0
  111. package/dist/components/02-molecules/Filter/utils/pruneOrphanValues.d.ts.map +1 -0
  112. package/dist/components/02-molecules/Filter/utils/pruneOrphanValues.js +70 -0
  113. package/dist/components/02-molecules/Filter/utils/pruneOrphanValues.js.map +1 -0
  114. package/dist/components/02-molecules/ImageViewer/ImageViewer.d.ts +55 -5
  115. package/dist/components/02-molecules/ImageViewer/ImageViewer.d.ts.map +1 -1
  116. package/dist/components/02-molecules/ImageViewer/ImageViewer.jsx +118 -27
  117. package/dist/components/02-molecules/ImageViewer/ImageViewer.jsx.map +1 -1
  118. package/dist/components/02-molecules/ImageViewer/ImageViewerImage.d.ts +40 -0
  119. package/dist/components/02-molecules/ImageViewer/ImageViewerImage.d.ts.map +1 -0
  120. package/dist/components/02-molecules/ImageViewer/ImageViewerImage.jsx +108 -0
  121. package/dist/components/02-molecules/ImageViewer/ImageViewerImage.jsx.map +1 -0
  122. package/dist/components/02-molecules/InlineMessage/InlineMessage.d.ts +37 -0
  123. package/dist/components/02-molecules/InlineMessage/InlineMessage.d.ts.map +1 -0
  124. package/dist/components/02-molecules/InlineMessage/InlineMessage.jsx +59 -0
  125. package/dist/components/02-molecules/InlineMessage/InlineMessage.jsx.map +1 -0
  126. package/dist/components/02-molecules/InlineMessage/index.d.ts +2 -0
  127. package/dist/components/02-molecules/InlineMessage/index.d.ts.map +1 -0
  128. package/dist/components/02-molecules/InlineMessage/index.js +2 -0
  129. package/dist/components/02-molecules/InlineMessage/index.js.map +1 -0
  130. package/dist/components/02-molecules/Modal/Modal.d.ts +5 -1
  131. package/dist/components/02-molecules/Modal/Modal.d.ts.map +1 -1
  132. package/dist/components/02-molecules/Modal/Modal.jsx +7 -5
  133. package/dist/components/02-molecules/Modal/Modal.jsx.map +1 -1
  134. package/dist/components/02-molecules/index.d.ts +3 -0
  135. package/dist/components/02-molecules/index.d.ts.map +1 -1
  136. package/dist/components/02-molecules/index.js +3 -0
  137. package/dist/components/02-molecules/index.js.map +1 -1
  138. package/dist/components/03-organisms/MapView/MapView.d.ts +73 -0
  139. package/dist/components/03-organisms/MapView/MapView.d.ts.map +1 -0
  140. package/dist/components/03-organisms/MapView/MapView.jsx +228 -0
  141. package/dist/components/03-organisms/MapView/MapView.jsx.map +1 -0
  142. package/dist/components/03-organisms/MapView/index.d.ts +2 -0
  143. package/dist/components/03-organisms/MapView/index.d.ts.map +1 -0
  144. package/dist/components/03-organisms/MapView/index.js +2 -0
  145. package/dist/components/03-organisms/MapView/index.js.map +1 -0
  146. package/dist/components/03-organisms/index.d.ts +1 -0
  147. package/dist/components/03-organisms/index.d.ts.map +1 -1
  148. package/dist/components/03-organisms/index.js +1 -0
  149. package/dist/components/03-organisms/index.js.map +1 -1
  150. package/dist/components/04-templates/DashboardTemplate/DashboardTemplate.jsx +2 -2
  151. package/dist/components/04-templates/DashboardTemplate/DashboardTemplate.jsx.map +1 -1
  152. package/dist/components/04-templates/SideFilterTemplate/SideFilterTemplate.d.ts.map +1 -1
  153. package/dist/components/04-templates/SideFilterTemplate/SideFilterTemplate.jsx +4 -1
  154. package/dist/components/04-templates/SideFilterTemplate/SideFilterTemplate.jsx.map +1 -1
  155. package/package.json +5 -2
  156. package/tailwind.config.ts +10 -0
@@ -28,16 +28,24 @@ import { debounce } from '../../../utils';
28
28
  * @param {string} props.label - The label text for the input field.
29
29
  * @param {string} [props.helperText] - Helper text displayed below the input.
30
30
  * @param {boolean} [props.isMutedWhenEmpty] - Renders the border and label in gray while the field has no value.
31
+ * @param {boolean} [props.hideLabel] - Keeps the label for assistive technology only and drops the floating label. Use it when a heading outside the field already names it.
32
+ * @param {string} [props.placeholder] - Placeholder shown inside the field. Only rendered together with `hideLabel`.
33
+ * @param {string} [props.toggleButtonLabel] - Accessible name of the button that opens and closes the list.
34
+ * @param {boolean} [props.hideToggleButton] - Hides the dropdown-toggle chevron, for search-as-you-type fields with no closed list to browse.
35
+ * @param {string} [props.noOptionsText='No hay opciones'] - Text shown when the query matches nothing.
31
36
  * @param {string} [props.error] - Error message displayed below the input.
32
37
  * @param {string} [props.value=''] - The controlled value of the input.
33
38
  *
34
39
  * @returns {ReactNode} The rendered Autocomplete component.
35
40
  */
36
- export function Autocomplete({ options, onSelect, onChange, onDebouncedChange, debounceDelay = 200, onHandleKeyDown, disabled, label, helperText, error, value, isMutedWhenEmpty, toggleButtonLabel, noOptionsText = 'No hay opciones', }) {
41
+ export function Autocomplete({ options, onSelect, onChange, onDebouncedChange, debounceDelay = 200, onHandleKeyDown, disabled, label, helperText, error, value, isMutedWhenEmpty, hideLabel, placeholder, toggleButtonLabel, hideToggleButton, noOptionsText = 'No hay opciones', }) {
37
42
  const [query, setQuery] = useState(value ?? '');
38
43
  const [filteredOptions, setFilteredOptions] = useState([]);
39
44
  const [isOpen, setIsOpen] = useState(false);
40
45
  const [activeIndex, setActiveIndex] = useState(-1);
46
+ // True between a keystroke and its debounced remote result: the "no options" row
47
+ // must not flash while the consumer is still fetching.
48
+ const [isSearching, setIsSearching] = useState(false);
41
49
  const listboxId = useId();
42
50
  const containerRef = useRef(null);
43
51
  const justSelectedRef = useRef(false);
@@ -55,9 +63,18 @@ export function Autocomplete({ options, onSelect, onChange, onDebouncedChange, d
55
63
  setFilteredOptions([]);
56
64
  setIsOpen(false);
57
65
  setActiveIndex(-1);
66
+ setIsSearching(false);
58
67
  return;
59
68
  }
60
- const result = await onDebouncedChangeRef.current?.(q);
69
+ let result;
70
+ try {
71
+ result = await onDebouncedChangeRef.current?.(q);
72
+ }
73
+ finally {
74
+ if (latestQueryRef.current === q) {
75
+ setIsSearching(false);
76
+ }
77
+ }
61
78
  if (latestQueryRef.current !== q) {
62
79
  return;
63
80
  }
@@ -84,6 +101,7 @@ export function Autocomplete({ options, onSelect, onChange, onDebouncedChange, d
84
101
  }
85
102
  setFilteredOptions(options.filter((option) => option.label.toLowerCase().includes(newQuery.toLowerCase())));
86
103
  setIsOpen(true);
104
+ setIsSearching(Boolean(onDebouncedChangeRef.current));
87
105
  onChange?.(newQuery);
88
106
  debouncedCallback(newQuery);
89
107
  };
@@ -214,14 +232,15 @@ export function Autocomplete({ options, onSelect, onChange, onDebouncedChange, d
214
232
  'aria-activedescendant': isOpen && activeIndex >= 0
215
233
  ? `${listboxId}-option-${activeIndex}`
216
234
  : undefined,
217
- }} iconR={handleIcon()} helperText={helperText} error={error} isMutedWhenEmpty={isMutedWhenEmpty}/>
218
- {!!isOpen && (<ul id={listboxId} role="listbox" className="dark:bg-black-1 absolute z-40 flex max-h-28 w-full flex-col gap-y-1 overflow-y-auto rounded-md bg-white px-3 py-2 shadow-lg dark:text-white">
219
- {filteredOptions?.length > 0 ? (filteredOptions.map((option, index) => (<li key={option.value} id={`${listboxId}-option-${index}`} role="option" aria-selected={activeIndex === index} className={clsx('hover:bg-gray-5 dark:hover:bg-gray-1 cursor-pointer rounded-sm px-1 py-0.5', activeIndex === index && 'bg-gray-5 dark:bg-gray-1')} onMouseEnter={() => setActiveIndex(index)} onMouseDown={(event) => event.preventDefault()} onClick={() => handleOptionClick(option)}>
220
- {option.label}
221
- </li>))) : hasSearchQuery ? (<li role="option" aria-disabled="true" className="autocomplete-option no-options">
222
- {noOptionsText}
223
- </li>) : null}
224
- </ul>)}
235
+ }} iconR={hideToggleButton ? undefined : handleIcon()} helperText={helperText} error={error} isMutedWhenEmpty={isMutedWhenEmpty} hideLabel={hideLabel} placeholder={placeholder}/>
236
+ {!!isOpen &&
237
+ (filteredOptions.length > 0 || (hasSearchQuery && !isSearching)) && (<ul id={listboxId} role="listbox" className="dark:bg-black-1 absolute z-40 flex max-h-28 w-full flex-col gap-y-1 overflow-y-auto rounded-md bg-white px-3 py-2 shadow-lg dark:text-white">
238
+ {filteredOptions?.length > 0 ? (filteredOptions.map((option, index) => (<li key={option.value} id={`${listboxId}-option-${index}`} role="option" aria-selected={activeIndex === index} className={clsx('hover:bg-gray-5 dark:hover:bg-gray-1 cursor-pointer rounded-sm px-1 py-0.5', activeIndex === index && 'bg-gray-5 dark:bg-gray-1')} onMouseEnter={() => setActiveIndex(index)} onMouseDown={(event) => event.preventDefault()} onClick={() => handleOptionClick(option)}>
239
+ {option.label}
240
+ </li>))) : hasSearchQuery && !isSearching ? (<li role="option" aria-disabled="true" className="autocomplete-option no-options">
241
+ {noOptionsText}
242
+ </li>) : null}
243
+ </ul>)}
225
244
  </div>);
226
245
  }
227
246
  //# sourceMappingURL=Autocomplete.jsx.map
@@ -1 +1 @@
1
- {"version":3,"file":"Autocomplete.jsx","sourceRoot":"","sources":["../../../../src/components/02-molecules/Autocomplete/Autocomplete.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Autocomplete.jsx","sourceRoot":"","sources":["../../../../src/components/02-molecules/Autocomplete/Autocomplete.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,79 @@
1
+ import { type HTMLAttributes, type ReactNode } from 'react';
2
+ export type DatePickerQuickAction = {
3
+ readonly label: string;
4
+ readonly value: string;
5
+ };
6
+ export type DatePickerProps = {
7
+ readonly value?: string;
8
+ readonly onChange?: (iso: string) => void;
9
+ readonly minDate?: string;
10
+ readonly maxDate?: string;
11
+ readonly monthLabels: readonly [
12
+ string,
13
+ string,
14
+ string,
15
+ string,
16
+ string,
17
+ string,
18
+ string,
19
+ string,
20
+ string,
21
+ string,
22
+ string,
23
+ string
24
+ ];
25
+ readonly weekdayLabels: readonly [
26
+ string,
27
+ string,
28
+ string,
29
+ string,
30
+ string,
31
+ string,
32
+ string
33
+ ];
34
+ readonly prevMonthLabel: string;
35
+ readonly nextMonthLabel: string;
36
+ readonly quickActions?: readonly DatePickerQuickAction[];
37
+ readonly label?: string;
38
+ readonly helperText?: string;
39
+ readonly error?: string;
40
+ readonly disabled?: boolean;
41
+ readonly placeholder?: string;
42
+ } & Omit<HTMLAttributes<HTMLDivElement>, 'onChange'>;
43
+ /**
44
+ * DatePicker renders a pill-shaped date field with a calendar popover.
45
+ * All visible labels are provided by the consumer.
46
+ *
47
+ * @component
48
+ * @example
49
+ * <DatePicker
50
+ * value="2026-09-20"
51
+ * onChange={(iso) => console.log(iso)}
52
+ * monthLabels={['January','February','March','April','May','June','July','August','September','October','November','December']}
53
+ * weekdayLabels={['S','M','T','W','T','F','S']}
54
+ * prevMonthLabel="Previous month"
55
+ * nextMonthLabel="Next month"
56
+ * placeholder="Pick a date"
57
+ * quickActions={[{ label: 'Today', value: '2026-09-14' }]}
58
+ * />
59
+ *
60
+ * @param {DatePickerProps} props - The properties of the DatePicker component.
61
+ * @param {string} [props.value] - Controlled ISO date `YYYY-MM-DD`.
62
+ * @param {(iso: string) => void} [props.onChange] - Fired when a date is selected.
63
+ * @param {string} [props.minDate] - Minimum selectable ISO date.
64
+ * @param {string} [props.maxDate] - Maximum selectable ISO date.
65
+ * @param {readonly string[]} props.monthLabels - Twelve month names.
66
+ * @param {readonly string[]} props.weekdayLabels - Seven weekday short labels starting on Sunday.
67
+ * @param {string} props.prevMonthLabel - Accessible label for previous month.
68
+ * @param {string} props.nextMonthLabel - Accessible label for next month.
69
+ * @param {readonly DatePickerQuickAction[]} [props.quickActions] - Shortcut buttons above the calendar.
70
+ * @param {string} [props.label] - Floating label text.
71
+ * @param {string} [props.helperText] - Helper text below the field.
72
+ * @param {string} [props.error] - Error message below the field.
73
+ * @param {boolean} [props.disabled] - Disables the control.
74
+ * @param {string} [props.placeholder] - Placeholder when no value is set.
75
+ *
76
+ * @returns {ReactNode} The rendered DatePicker component.
77
+ */
78
+ export declare function DatePicker({ value, onChange, minDate, maxDate, monthLabels, weekdayLabels, prevMonthLabel, nextMonthLabel, quickActions, label, helperText, error, disabled, placeholder, ...restProps }: DatePickerProps): ReactNode;
79
+ //# sourceMappingURL=DatePicker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DatePicker.d.ts","sourceRoot":"","sources":["../../../../src/components/02-molecules/DatePicker/DatePicker.tsx"],"names":[],"mappings":"AAGA,OAAO,EACL,KAAK,cAAc,EACnB,KAAK,SAAS,EAMf,MAAM,OAAO,CAAC;AAMf,MAAM,MAAM,qBAAqB,GAAG;IAClC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IAC1C,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,WAAW,EAAE,SAAS;QAC7B,MAAM;QACN,MAAM;QACN,MAAM;QACN,MAAM;QACN,MAAM;QACN,MAAM;QACN,MAAM;QACN,MAAM;QACN,MAAM;QACN,MAAM;QACN,MAAM;QACN,MAAM;KACP,CAAC;IACF,QAAQ,CAAC,aAAa,EAAE,SAAS;QAC/B,MAAM;QACN,MAAM;QACN,MAAM;QACN,MAAM;QACN,MAAM;QACN,MAAM;QACN,MAAM;KACP,CAAC;IACF,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,YAAY,CAAC,EAAE,SAAS,qBAAqB,EAAE,CAAC;IACzD,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;CAC/B,GAAG,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,EAAE,UAAU,CAAC,CAAC;AAiFrD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,wBAAgB,UAAU,CAAC,EACzB,KAAK,EACL,QAAQ,EACR,OAAO,EACP,OAAO,EACP,WAAW,EACX,aAAa,EACb,cAAc,EACd,cAAc,EACd,YAAY,EACZ,KAAK,EACL,UAAU,EACV,KAAK,EACL,QAAgB,EAChB,WAAW,EACX,GAAG,SAAS,EACb,EAAE,eAAe,GAAG,SAAS,CA6O7B"}
@@ -0,0 +1,229 @@
1
+ 'use client';
2
+ import clsx from 'clsx';
3
+ import { useEffect, useId, useMemo, useRef, useState, } from 'react';
4
+ import { FiCalendar } from 'react-icons/fi';
5
+ import { MdChevronLeft, MdChevronRight } from 'react-icons/md';
6
+ import { Each, Show } from '../../00-base';
7
+ import { RenderErrorOrHelperText } from '../../01-atoms/Input/utils/RenderErrorOrHelperText';
8
+ function parseIso(iso) {
9
+ if (!iso || !/^\d{4}-\d{2}-\d{2}$/.test(iso))
10
+ return null;
11
+ const [y, m, d] = iso.split('-').map(Number);
12
+ const date = new Date(y, m - 1, d);
13
+ if (date.getFullYear() !== y ||
14
+ date.getMonth() !== m - 1 ||
15
+ date.getDate() !== d) {
16
+ return null;
17
+ }
18
+ return date;
19
+ }
20
+ function toIso(date) {
21
+ const y = date.getFullYear();
22
+ const m = String(date.getMonth() + 1).padStart(2, '0');
23
+ const d = String(date.getDate()).padStart(2, '0');
24
+ return `${y}-${m}-${d}`;
25
+ }
26
+ function startOfDay(date) {
27
+ return new Date(date.getFullYear(), date.getMonth(), date.getDate());
28
+ }
29
+ function isBefore(a, b) {
30
+ return startOfDay(a).getTime() < startOfDay(b).getTime();
31
+ }
32
+ function isAfter(a, b) {
33
+ return startOfDay(a).getTime() > startOfDay(b).getTime();
34
+ }
35
+ function isSameDay(a, b) {
36
+ return (a.getFullYear() === b.getFullYear() &&
37
+ a.getMonth() === b.getMonth() &&
38
+ a.getDate() === b.getDate());
39
+ }
40
+ function buildCalendar(year, month, min, max) {
41
+ const first = new Date(year, month, 1);
42
+ const startOffset = first.getDay();
43
+ const start = new Date(year, month, 1 - startOffset);
44
+ const cells = [];
45
+ for (let i = 0; i < 42; i += 1) {
46
+ const date = new Date(start.getFullYear(), start.getMonth(), start.getDate() + i);
47
+ const disabled = (min != null && isBefore(date, min)) ||
48
+ (max != null && isAfter(date, max));
49
+ cells.push({
50
+ date,
51
+ iso: toIso(date),
52
+ inMonth: date.getMonth() === month,
53
+ disabled,
54
+ });
55
+ }
56
+ return cells;
57
+ }
58
+ /**
59
+ * DatePicker renders a pill-shaped date field with a calendar popover.
60
+ * All visible labels are provided by the consumer.
61
+ *
62
+ * @component
63
+ * @example
64
+ * <DatePicker
65
+ * value="2026-09-20"
66
+ * onChange={(iso) => console.log(iso)}
67
+ * monthLabels={['January','February','March','April','May','June','July','August','September','October','November','December']}
68
+ * weekdayLabels={['S','M','T','W','T','F','S']}
69
+ * prevMonthLabel="Previous month"
70
+ * nextMonthLabel="Next month"
71
+ * placeholder="Pick a date"
72
+ * quickActions={[{ label: 'Today', value: '2026-09-14' }]}
73
+ * />
74
+ *
75
+ * @param {DatePickerProps} props - The properties of the DatePicker component.
76
+ * @param {string} [props.value] - Controlled ISO date `YYYY-MM-DD`.
77
+ * @param {(iso: string) => void} [props.onChange] - Fired when a date is selected.
78
+ * @param {string} [props.minDate] - Minimum selectable ISO date.
79
+ * @param {string} [props.maxDate] - Maximum selectable ISO date.
80
+ * @param {readonly string[]} props.monthLabels - Twelve month names.
81
+ * @param {readonly string[]} props.weekdayLabels - Seven weekday short labels starting on Sunday.
82
+ * @param {string} props.prevMonthLabel - Accessible label for previous month.
83
+ * @param {string} props.nextMonthLabel - Accessible label for next month.
84
+ * @param {readonly DatePickerQuickAction[]} [props.quickActions] - Shortcut buttons above the calendar.
85
+ * @param {string} [props.label] - Floating label text.
86
+ * @param {string} [props.helperText] - Helper text below the field.
87
+ * @param {string} [props.error] - Error message below the field.
88
+ * @param {boolean} [props.disabled] - Disables the control.
89
+ * @param {string} [props.placeholder] - Placeholder when no value is set.
90
+ *
91
+ * @returns {ReactNode} The rendered DatePicker component.
92
+ */
93
+ export function DatePicker({ value, onChange, minDate, maxDate, monthLabels, weekdayLabels, prevMonthLabel, nextMonthLabel, quickActions, label, helperText, error, disabled = false, placeholder, ...restProps }) {
94
+ const generatedId = useId();
95
+ const id = restProps.id ?? generatedId;
96
+ const descriptionId = error || helperText ? `${id}-description` : undefined;
97
+ const panelId = `${id}-panel`;
98
+ const containerRef = useRef(null);
99
+ const [open, setOpen] = useState(false);
100
+ const selected = useMemo(() => parseIso(value), [value]);
101
+ const min = useMemo(() => parseIso(minDate), [minDate]);
102
+ const max = useMemo(() => parseIso(maxDate), [maxDate]);
103
+ const initialView = selected ?? min ?? new Date();
104
+ const [viewYear, setViewYear] = useState(initialView.getFullYear());
105
+ const [viewMonth, setViewMonth] = useState(initialView.getMonth());
106
+ useEffect(() => {
107
+ if (!selected)
108
+ return;
109
+ setViewYear(selected.getFullYear());
110
+ setViewMonth(selected.getMonth());
111
+ }, [selected]);
112
+ useEffect(() => {
113
+ if (!open)
114
+ return;
115
+ const onDown = (event) => {
116
+ if (!containerRef.current?.contains(event.target)) {
117
+ setOpen(false);
118
+ }
119
+ };
120
+ const onKey = (event) => {
121
+ if (event.key === 'Escape')
122
+ setOpen(false);
123
+ };
124
+ document.addEventListener('mousedown', onDown);
125
+ document.addEventListener('keydown', onKey);
126
+ return () => {
127
+ document.removeEventListener('mousedown', onDown);
128
+ document.removeEventListener('keydown', onKey);
129
+ };
130
+ }, [open]);
131
+ const cells = useMemo(() => buildCalendar(viewYear, viewMonth, min, max), [viewYear, viewMonth, min, max]);
132
+ const displayValue = useMemo(() => {
133
+ if (!selected)
134
+ return placeholder ?? '';
135
+ return `${selected.getDate()} ${monthLabels[selected.getMonth()]} ${selected.getFullYear()}`;
136
+ }, [selected, monthLabels, placeholder]);
137
+ const shiftMonth = (delta) => {
138
+ const next = new Date(viewYear, viewMonth + delta, 1);
139
+ setViewYear(next.getFullYear());
140
+ setViewMonth(next.getMonth());
141
+ };
142
+ const pick = (iso) => {
143
+ onChange?.(iso);
144
+ setOpen(false);
145
+ };
146
+ const hasValue = Boolean(selected);
147
+ const borderClass = error
148
+ ? 'border-error'
149
+ : disabled
150
+ ? 'border-gray-3'
151
+ : 'border-black dark:border-white';
152
+ return (<div {...restProps} ref={containerRef} className={clsx('relative w-full max-w-full', restProps.className)}>
153
+ <Show>
154
+ <Show.When isTrue={Boolean(label)}>
155
+ <label htmlFor={id} className={clsx('mb-1.5 block text-xs font-semibold tracking-wide uppercase', disabled ? 'text-gray-3' : 'text-black dark:text-white')}>
156
+ {label}
157
+ </label>
158
+ </Show.When>
159
+ </Show>
160
+
161
+ <button type="button" id={id} disabled={disabled} aria-haspopup="dialog" aria-expanded={open} aria-controls={panelId} aria-invalid={Boolean(error)} aria-describedby={descriptionId} onClick={() => {
162
+ if (!disabled)
163
+ setOpen((prev) => !prev);
164
+ }} className={clsx('flex h-9 w-full items-center justify-between gap-2 rounded-full border bg-transparent px-5 text-left text-sm outline-0 transition-colors dark:bg-black', borderClass, disabled && 'text-gray-3 dark:text-gray-2 cursor-not-allowed', !disabled && !hasValue && 'text-gray-2', !disabled && hasValue && 'text-black dark:text-white')}>
165
+ <span className="min-w-0 flex-1 truncate">{displayValue}</span>
166
+ <FiCalendar className={clsx('shrink-0', disabled
167
+ ? 'text-gray-3 dark:text-gray-2'
168
+ : 'text-gray-1 dark:text-gray-2')} aria-hidden/>
169
+ </button>
170
+
171
+ <Show>
172
+ <Show.When isTrue={open && !disabled}>
173
+ <div id={panelId} role="dialog" className="border-gray-5 dark:border-gray-1 absolute z-50 mt-2 w-full min-w-72 rounded-lg border bg-white p-3 shadow-md dark:bg-black">
174
+ <Show>
175
+ <Show.When isTrue={Boolean(quickActions?.length)}>
176
+ <div className="mb-3 flex flex-wrap gap-2">
177
+ <Each of={[...(quickActions ?? [])]} render={(action) => (<button type="button" key={action.value} onClick={() => pick(action.value)} className={clsx('rounded-full border px-3 py-1 text-xs font-semibold', value === action.value
178
+ ? 'border-lavender bg-lavender-2 text-lavender dark:bg-lavender-dark-1 dark:text-lavender-dark'
179
+ : 'border-gray-5 text-gray-1 dark:border-gray-1 dark:text-gray-2')}>
180
+ {action.label}
181
+ </button>)}/>
182
+ </div>
183
+ </Show.When>
184
+ </Show>
185
+
186
+ <div className="mb-2 flex items-center justify-between gap-2">
187
+ <button type="button" aria-label={prevMonthLabel} onClick={() => shiftMonth(-1)} className="hover:bg-gray-6 dark:hover:bg-gray-dark-1 flex h-8 w-8 items-center justify-center rounded-full text-black dark:text-white">
188
+ <MdChevronLeft className="h-5 w-5" aria-hidden/>
189
+ </button>
190
+ <p className="text-sm font-semibold text-black dark:text-white">
191
+ {monthLabels[viewMonth]} {viewYear}
192
+ </p>
193
+ <button type="button" aria-label={nextMonthLabel} onClick={() => shiftMonth(1)} className="hover:bg-gray-6 dark:hover:bg-gray-dark-1 flex h-8 w-8 items-center justify-center rounded-full text-black dark:text-white">
194
+ <MdChevronRight className="h-5 w-5" aria-hidden/>
195
+ </button>
196
+ </div>
197
+
198
+ <div className="mb-1 grid grid-cols-7 gap-1">
199
+ <Each of={[...weekdayLabels]} render={(day, index) => (<span key={`${index}-${day}`} className="text-gray-2 text-center text-[11px] font-semibold">
200
+ {day}
201
+ </span>)}/>
202
+ </div>
203
+
204
+ <div className="grid grid-cols-7 gap-1">
205
+ <Each of={cells} render={(cell) => {
206
+ const isSelected = selected
207
+ ? isSameDay(cell.date, selected)
208
+ : false;
209
+ return (<button type="button" key={cell.iso} disabled={cell.disabled} onClick={() => pick(cell.iso)} className={clsx('flex h-8 w-full items-center justify-center rounded-full text-xs font-medium', cell.disabled &&
210
+ 'text-gray-3 dark:text-gray-2 cursor-not-allowed', !cell.disabled &&
211
+ !isSelected &&
212
+ cell.inMonth &&
213
+ 'hover:bg-lavender-2 dark:hover:bg-lavender-dark-1 text-black dark:text-white', !cell.disabled &&
214
+ !isSelected &&
215
+ !cell.inMonth &&
216
+ 'text-gray-3 dark:text-gray-2', isSelected &&
217
+ 'bg-lavender dark:bg-lavender-dark font-semibold text-white')}>
218
+ {cell.date.getDate()}
219
+ </button>);
220
+ }}/>
221
+ </div>
222
+ </div>
223
+ </Show.When>
224
+ </Show>
225
+
226
+ <RenderErrorOrHelperText id={descriptionId} error={error} helperText={helperText} disabled={disabled}/>
227
+ </div>);
228
+ }
229
+ //# sourceMappingURL=DatePicker.jsx.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DatePicker.jsx","sourceRoot":"","sources":["../../../../src/components/02-molecules/DatePicker/DatePicker.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export * from './DatePicker';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/02-molecules/DatePicker/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from './DatePicker';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/components/02-molecules/DatePicker/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC"}
@@ -58,6 +58,7 @@ type TFilterProps = {
58
58
  * @param {string} [props.inputs.config.placeholder] - Placeholder text for the input field.
59
59
  * @param {string} [props.inputs.config.helperText] - Helper text rendered below the input field.
60
60
  * @param {string} [props.inputs.config.chipLabel] - Overrides the text of the applied filter chip.
61
+ * @param {boolean} [props.inputs.config.disabled] - Renders a select or multiselect read-only, keeping its value.
61
62
  * @param {boolean} [props.showAppliedFilters] - Renders the applied filter chips inside the panel. Defaults to true.
62
63
  * @returns {ReactNode} The rendered Filter component.
63
64
  */
@@ -1 +1 @@
1
- {"version":3,"file":"Filter.d.ts","sourceRoot":"","sources":["../../../../src/components/02-molecules/Filter/Filter.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAkB,KAAK,SAAS,EAAuB,MAAM,OAAO,CAAC;AAe5E,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAE5D,KAAK,YAAY,GAAG;IAClB,eAAe,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,KAAK,IAAI,CAAC;IAChE,kBAAkB,EAAE,MAAM,CAAC;IAC3B,iBAAiB,CAAC,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,MAAM,CAAC;IACpD,sFAAsF;IACtF,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,WAAW,EAAE;QACX,IAAI,EAAE,MAAM,CAAC;QACb,QAAQ,EAAE,MAAM,IAAI,CAAC;KACtB,CAAC;IACF,YAAY,EAAE;QACZ,IAAI,EAAE,MAAM,CAAC;QACb,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,KAAK,IAAI,CAAC;KACzD,CAAC;IACF,MAAM,EAAE,aAAa,CAAC;CACvB,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4CG;AACH,wBAAgB,MAAM,CAAC,EACrB,kBAAkB,EAClB,YAAY,EACZ,WAAW,EACX,MAAM,EACN,eAAe,EACf,iBAAiB,EACjB,kBAAyB,GAC1B,EAAE,YAAY,GAAG,SAAS,CAoY1B"}
1
+ {"version":3,"file":"Filter.d.ts","sourceRoot":"","sources":["../../../../src/components/02-molecules/Filter/Filter.tsx"],"names":[],"mappings":"AAGA,OAAO,EAEL,KAAK,SAAS,EAIf,MAAM,OAAO,CAAC;AAef,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAG5D,KAAK,YAAY,GAAG;IAClB,eAAe,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,KAAK,IAAI,CAAC;IAChE,kBAAkB,EAAE,MAAM,CAAC;IAC3B,iBAAiB,CAAC,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,MAAM,CAAC;IACpD,sFAAsF;IACtF,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,WAAW,EAAE;QACX,IAAI,EAAE,MAAM,CAAC;QACb,QAAQ,EAAE,MAAM,IAAI,CAAC;KACtB,CAAC;IACF,YAAY,EAAE;QACZ,IAAI,EAAE,MAAM,CAAC;QACb,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,KAAK,IAAI,CAAC;KACzD,CAAC;IACF,MAAM,EAAE,aAAa,CAAC;CACvB,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6CG;AACH,wBAAgB,MAAM,CAAC,EACrB,kBAAkB,EAClB,YAAY,EACZ,WAAW,EACX,MAAM,EACN,eAAe,EACf,iBAAiB,EACjB,kBAAyB,GAC1B,EAAE,YAAY,GAAG,SAAS,CAoa1B"}
@@ -1,10 +1,11 @@
1
1
  'use client';
2
2
  import clsx from 'clsx';
3
- import { useEffect, useState } from 'react';
3
+ import { useEffect, useMemo, useState, } from 'react';
4
4
  import { Each, Show } from '../../00-base';
5
5
  import { Button, Checkbox, Input, MultiSelect, Paragraph, Radio, Select, Switch, } from '../../01-atoms';
6
6
  import { Autocomplete } from '../Autocomplete';
7
7
  import { FilterChips } from '../FilterChips';
8
+ import { pruneOrphanValues } from './utils/pruneOrphanValues';
8
9
  /**
9
10
  * Filter component for managing a set of filters with various input types.
10
11
  *
@@ -47,6 +48,7 @@ import { FilterChips } from '../FilterChips';
47
48
  * @param {string} [props.inputs.config.placeholder] - Placeholder text for the input field.
48
49
  * @param {string} [props.inputs.config.helperText] - Helper text rendered below the input field.
49
50
  * @param {string} [props.inputs.config.chipLabel] - Overrides the text of the applied filter chip.
51
+ * @param {boolean} [props.inputs.config.disabled] - Renders a select or multiselect read-only, keeping its value.
50
52
  * @param {boolean} [props.showAppliedFilters] - Renders the applied filter chips inside the panel. Defaults to true.
51
53
  * @returns {ReactNode} The rendered Filter component.
52
54
  */
@@ -86,6 +88,13 @@ export function Filter({ filtersEnabledText, submitButton, resetButton, inputs,
86
88
  return previousValue;
87
89
  }, {}));
88
90
  const [autocompleteOptions, setAutocompleteOptions] = useState({});
91
+ const optionsFingerprint = useMemo(() => JSON.stringify(inputArr.map(([name, { config }]) => [
92
+ name,
93
+ config.map(({ type, options }) => ({ type, options })),
94
+ ])), [inputs]);
95
+ useEffect(() => {
96
+ setFilters((prev) => pruneOrphanValues(inputs, prev).values);
97
+ }, [optionsFingerprint]);
89
98
  const handlerChange = (name, value) => {
90
99
  setFilters((prevValues) => {
91
100
  if (!value || (Array.isArray(value) && !value.length)) {
@@ -166,19 +175,31 @@ export function Filter({ filtersEnabledText, submitButton, resetButton, inputs,
166
175
  </Show>
167
176
  <div className={clsx('grid gap-4 dark:text-white', columns === 2 ? 'grid-cols-2' : 'grid-cols-1')}>
168
177
  <Each of={config} render={(inputConfig, index) => {
169
- const { type, label, options, minDate, maxDate, placeholder, helperText, onDebouncedChange, debounceDelay, toggleButtonLabel, noOptionsText, } = inputConfig;
178
+ const { type, label, options, minDate, maxDate, placeholder, helperText, onDebouncedChange, debounceDelay, toggleButtonLabel, hideToggleButton, noOptionsText, } = inputConfig;
170
179
  const onAutocompleteSelect = type === 'autocomplete' &&
171
180
  'onSelect' in inputConfig
172
181
  ? inputConfig.onSelect
173
182
  : undefined;
183
+ const onSelectChange = type === 'select' && 'onChange' in inputConfig
184
+ ? inputConfig.onChange
185
+ : undefined;
186
+ const isDisabled = 'disabled' in inputConfig
187
+ ? Boolean(inputConfig.disabled)
188
+ : false;
174
189
  const filterKey = config.length > 1 ? `${name}__${index}` : name;
175
190
  return (<Show key={label}>
176
191
  <Show.When isTrue={type === 'select'}>
177
192
  <Select label={label} select={{
178
193
  name: filterKey,
194
+ disabled: isDisabled,
179
195
  value: filters[filterKey] || '',
180
196
  onChange: (event) => {
181
197
  handlerChange(filterKey, event.target.value);
198
+ onSelectChange?.(event.target.value, {
199
+ filterKey,
200
+ setFilter: handlerChange,
201
+ filters,
202
+ });
182
203
  },
183
204
  }} options={options} placeholder={placeholder} helperText={helperText} isMutedWhenEmpty/>
184
205
  </Show.When>
@@ -217,7 +238,7 @@ export function Filter({ filtersEnabledText, submitButton, resetButton, inputs,
217
238
  }}/>
218
239
  </Show.When>
219
240
  <Show.When isTrue={type === 'multiselect'}>
220
- <MultiSelect label={label} options={options} value={filters[filterKey]} onChange={(selectedOptions) => handlerChange(filterKey, selectedOptions)} helperText={helperText} isMutedWhenEmpty/>
241
+ <MultiSelect label={label} options={options} value={filters[filterKey]} onChange={(selectedOptions) => handlerChange(filterKey, selectedOptions)} helperText={helperText} disabled={isDisabled} isMutedWhenEmpty/>
221
242
  </Show.When>
222
243
  <Show.When isTrue={type === 'autocomplete'}>
223
244
  {(() => {
@@ -246,7 +267,7 @@ export function Filter({ filtersEnabledText, submitButton, resetButton, inputs,
246
267
  }
247
268
  return result;
248
269
  }
249
- : undefined} debounceDelay={debounceDelay} toggleButtonLabel={toggleButtonLabel} noOptionsText={noOptionsText} helperText={helperText} isMutedWhenEmpty/>);
270
+ : undefined} debounceDelay={debounceDelay} toggleButtonLabel={toggleButtonLabel} hideToggleButton={hideToggleButton} noOptionsText={noOptionsText} helperText={helperText} isMutedWhenEmpty/>);
250
271
  })()}
251
272
  </Show.When>
252
273
  <Show.Else>