@oneplatformdev/ui 0.1.99-beta.3 → 0.1.99-beta.30

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 (79) hide show
  1. package/Accordion/Accordion.d.ts.map +1 -1
  2. package/Accordion/Accordion.js +31 -25
  3. package/Accordion/Accordion.js.map +1 -1
  4. package/Badge/badgeVariants.d.ts +1 -1
  5. package/Button/Button.d.ts +6 -6
  6. package/Button/Button.d.ts.map +1 -1
  7. package/Button/Button.js +44 -42
  8. package/Button/Button.js.map +1 -1
  9. package/Button/Button.stories.js +45 -53
  10. package/Button/Button.stories.js.map +1 -1
  11. package/Button/Button.types.d.ts +24 -1
  12. package/Button/Button.types.d.ts.map +1 -1
  13. package/Button/ButtonCounterBadge.d.ts +7 -0
  14. package/Button/ButtonCounterBadge.d.ts.map +1 -0
  15. package/Button/ButtonCounterBadge.js +20 -0
  16. package/Button/ButtonCounterBadge.js.map +1 -0
  17. package/Button/buttonVariants.d.ts +11 -20
  18. package/Button/buttonVariants.d.ts.map +1 -1
  19. package/Button/buttonVariants.js +76 -12
  20. package/Button/buttonVariants.js.map +1 -1
  21. package/Button/index.js +6 -5
  22. package/ButtonIcon/ButtonIcon.d.ts +30 -19
  23. package/ButtonIcon/ButtonIcon.d.ts.map +1 -1
  24. package/ButtonIcon/ButtonIcon.js +70 -46
  25. package/ButtonIcon/ButtonIcon.js.map +1 -1
  26. package/ButtonIcon/ButtonIcon.stories.js +121 -78
  27. package/ButtonIcon/ButtonIcon.stories.js.map +1 -1
  28. package/ButtonIcon/ButtonIcon.types.d.ts +2 -1
  29. package/ButtonIcon/ButtonIcon.types.d.ts.map +1 -1
  30. package/ButtonIcon/buttonIconVariants.d.ts +1 -1
  31. package/ButtonIcon/buttonIconVariants.d.ts.map +1 -1
  32. package/ButtonIcon/buttonIconVariants.js +7 -6
  33. package/ButtonIcon/buttonIconVariants.js.map +1 -1
  34. package/CHANGELOG.md +362 -0
  35. package/Combobox/Combobox.d.ts.map +1 -1
  36. package/Combobox/Combobox.js +25 -26
  37. package/Combobox/Combobox.js.map +1 -1
  38. package/Combobox/Combobox.stories.js +192 -0
  39. package/Combobox/Combobox.stories.js.map +1 -0
  40. package/Combobox/ComboboxOptions.d.ts.map +1 -1
  41. package/Combobox/ComboboxOptions.js +42 -42
  42. package/Combobox/ComboboxOptions.js.map +1 -1
  43. package/Dialog/Dialog.js +6 -6
  44. package/Dialog/Dialog.js.map +1 -1
  45. package/Form/Form.d.ts.map +1 -1
  46. package/Form/Form.js.map +1 -1
  47. package/Input/Input.js +3 -3
  48. package/Input/Input.js.map +1 -1
  49. package/Input/inputVariants.d.ts.map +1 -1
  50. package/Input/inputVariants.js +5 -4
  51. package/Input/inputVariants.js.map +1 -1
  52. package/LoadedIcon/LoadedIcon.d.ts.map +1 -1
  53. package/LoadedIcon/LoadedIcon.js +3 -1
  54. package/LoadedIcon/LoadedIcon.js.map +1 -1
  55. package/Resizable/Resizable.d.ts +5 -20
  56. package/Resizable/Resizable.d.ts.map +1 -1
  57. package/Resizable/Resizable.js +48 -31
  58. package/Resizable/Resizable.js.map +1 -1
  59. package/Resizable/Resizable.stories.js +140 -0
  60. package/Resizable/Resizable.stories.js.map +1 -0
  61. package/Search/Search.js +12 -12
  62. package/Search/Search.js.map +1 -1
  63. package/Search/Search.stories.js +17 -0
  64. package/Search/Search.stories.js.map +1 -0
  65. package/Textarea/Textarea.js +6 -6
  66. package/Textarea/Textarea.js.map +1 -1
  67. package/Textarea/Textarea.stories.js +12 -0
  68. package/Textarea/Textarea.stories.js.map +1 -0
  69. package/Textarea/useAutosizeTextArea.d.ts +1 -1
  70. package/Textarea/useAutosizeTextArea.d.ts.map +1 -1
  71. package/Textarea/useAutosizeTextArea.js.map +1 -1
  72. package/Tooltip/Tooltip.d.ts.map +1 -1
  73. package/Tooltip/Tooltip.js.map +1 -1
  74. package/index.js +326 -325
  75. package/package.json +7 -4
  76. package/Button/Button.s.d.ts +0 -83
  77. package/Button/Button.s.d.ts.map +0 -1
  78. package/Button/Button.s.js +0 -163
  79. package/Button/Button.s.js.map +0 -1
package/CHANGELOG.md CHANGED
@@ -1,3 +1,365 @@
1
+ ## 0.1.99-beta.30 (2026-01-12)
2
+
3
+ ### 🚀 Features
4
+
5
+ - **Accordion:** update icon and enhance transition effects for button variants ([4dd7eb8](https://github.com/oneplatformdev/core-web/commit/4dd7eb8))
6
+ - **App:** add routing for button and button-icon pages, enhance navigation ([ad89b21](https://github.com/oneplatformdev/core-web/commit/ad89b21))
7
+ - **Button:** enhance button component with new variants, adornments, and improved props ([0d373b8](https://github.com/oneplatformdev/core-web/commit/0d373b8))
8
+ - enhance FormSelect with onChangePrepare and updated onChange signature ([3b4402b](https://github.com/oneplatformdev/core-web/commit/3b4402b))
9
+
10
+ ### 🩹 Fixes
11
+
12
+ - **Accordion:** restore children rendering in AccordionPrimitive.Trigger ([a53f8f4](https://github.com/oneplatformdev/core-web/commit/a53f8f4))
13
+ - **FormSelect:** ensure default value is an empty string when undefined ([056631f](https://github.com/oneplatformdev/core-web/commit/056631f))
14
+ - update icon size for large button variant ([1e7c0a7](https://github.com/oneplatformdev/core-web/commit/1e7c0a7))
15
+ - add min-width to large button variant ([e34bc71](https://github.com/oneplatformdev/core-web/commit/e34bc71))
16
+ - handle undefined value in FormSelect component ([9c7ae4a](https://github.com/oneplatformdev/core-web/commit/9c7ae4a))
17
+ - minor alert dialog content ([#41](https://github.com/oneplatformdev/core-web/pull/41))
18
+ - update Dialog component title font size for better readability and add .env to .gitignore ([9646134](https://github.com/oneplatformdev/core-web/commit/9646134))
19
+ - adjust Dialog component styling for better alignment and update container size in CSS ([afaa5af](https://github.com/oneplatformdev/core-web/commit/afaa5af))
20
+ - update XIcon styling in Dialog component for improved visibility ([164338b](https://github.com/oneplatformdev/core-web/commit/164338b))
21
+ - update dialog primitive close ([5e7c577](https://github.com/oneplatformdev/core-web/commit/5e7c577))
22
+ - update dialog primitive close ([560b5ba](https://github.com/oneplatformdev/core-web/commit/560b5ba))
23
+ - update dialog primitive close ([f63b143](https://github.com/oneplatformdev/core-web/commit/f63b143))
24
+
25
+ ### 🧱 Updated Dependencies
26
+
27
+ - Updated @oneplatformdev/utils to 0.1.99-beta.30
28
+ - Updated @oneplatformdev/hooks to 0.1.99-beta.30
29
+ - Updated @oneplatformdev/tokens to 0.1.99-beta.30
30
+
31
+ ### ❤️ Thank You
32
+
33
+ - Bohdan Radchenko @BohdanRadchenko
34
+ - BohdanRadchenko
35
+
36
+ ## 0.1.99-beta.27 (2026-01-08)
37
+
38
+ ### 🧱 Updated Dependencies
39
+
40
+ - Updated @oneplatformdev/utils to 0.1.99-beta.27
41
+ - Updated @oneplatformdev/hooks to 0.1.99-beta.27
42
+ - Updated @oneplatformdev/tokens to 0.1.99-beta.27
43
+
44
+ ## 0.1.99-beta.26 (2026-01-08)
45
+
46
+ ### 🧱 Updated Dependencies
47
+
48
+ - Updated @oneplatformdev/utils to 0.1.99-beta.26
49
+ - Updated @oneplatformdev/hooks to 0.1.99-beta.26
50
+ - Updated @oneplatformdev/tokens to 0.1.99-beta.26
51
+
52
+ ## 0.1.99-beta.25 (2026-01-08)
53
+
54
+ ### 🧱 Updated Dependencies
55
+
56
+ - Updated @oneplatformdev/utils to 0.1.99-beta.25
57
+ - Updated @oneplatformdev/hooks to 0.1.99-beta.25
58
+ - Updated @oneplatformdev/tokens to 0.1.99-beta.25
59
+
60
+ ## 0.1.99-beta.24 (2026-01-08)
61
+
62
+ ### 🧱 Updated Dependencies
63
+
64
+ - Updated @oneplatformdev/utils to 0.1.99-beta.24
65
+ - Updated @oneplatformdev/hooks to 0.1.99-beta.24
66
+ - Updated @oneplatformdev/tokens to 0.1.99-beta.24
67
+
68
+ ## 0.1.99-beta.23 (2026-01-07)
69
+
70
+ ### 🩹 Fixes
71
+
72
+ - **Input:** adjust padding for start adornment and update inputVariants styles ([570718f](https://github.com/oneplatformdev/core-web/commit/570718f))
73
+
74
+ ### 🧱 Updated Dependencies
75
+
76
+ - Updated @oneplatformdev/utils to 0.1.99-beta.23
77
+ - Updated @oneplatformdev/hooks to 0.1.99-beta.23
78
+ - Updated @oneplatformdev/tokens to 0.1.99-beta.23
79
+
80
+ ### ❤️ Thank You
81
+
82
+ - Bohdan Radchenko
83
+
84
+ ## 0.1.99-beta.22 (2026-01-07)
85
+
86
+ ### 🩹 Fixes
87
+
88
+ - **Resizable:** update button icon styles and refactor ResizableHandle component props ([cd56236](https://github.com/oneplatformdev/core-web/commit/cd56236))
89
+
90
+ ### 🧱 Updated Dependencies
91
+
92
+ - Updated @oneplatformdev/utils to 0.1.99-beta.22
93
+ - Updated @oneplatformdev/hooks to 0.1.99-beta.22
94
+ - Updated @oneplatformdev/tokens to 0.1.99-beta.22
95
+
96
+ ### ❤️ Thank You
97
+
98
+ - Bohdan Radchenko
99
+
100
+ ## 0.1.99-beta.21 (2026-01-07)
101
+
102
+ ### 🧱 Updated Dependencies
103
+
104
+ - Updated @oneplatformdev/utils to 0.1.99-beta.21
105
+ - Updated @oneplatformdev/hooks to 0.1.99-beta.21
106
+ - Updated @oneplatformdev/tokens to 0.1.99-beta.21
107
+
108
+ ## 0.1.99-beta.20 (2026-01-07)
109
+
110
+ ### 🩹 Fixes
111
+
112
+ - **Resizable:** downgrade react-resizable-panels to version 3.0.6 and update component references ([443daf0](https://github.com/oneplatformdev/core-web/commit/443daf0))
113
+
114
+ ### 🧱 Updated Dependencies
115
+
116
+ - Updated @oneplatformdev/utils to 0.1.99-beta.20
117
+ - Updated @oneplatformdev/hooks to 0.1.99-beta.20
118
+ - Updated @oneplatformdev/tokens to 0.1.99-beta.20
119
+
120
+ ### ❤️ Thank You
121
+
122
+ - Bohdan Radchenko
123
+
124
+ ## 0.1.99-beta.19 (2026-01-07)
125
+
126
+ ### 🚀 Features
127
+
128
+ - **Resizable:** add Storybook stories for ResizablePanelGroup and ResizablePanel components ([dc5a4b8](https://github.com/oneplatformdev/core-web/commit/dc5a4b8))
129
+
130
+ ### 🧱 Updated Dependencies
131
+
132
+ - Updated @oneplatformdev/utils to 0.1.99-beta.19
133
+ - Updated @oneplatformdev/hooks to 0.1.99-beta.19
134
+ - Updated @oneplatformdev/tokens to 0.1.99-beta.19
135
+
136
+ ### ❤️ Thank You
137
+
138
+ - Bohdan Radchenko
139
+
140
+ ## 0.1.99-beta.18 (2026-01-07)
141
+
142
+ ### 🚀 Features
143
+
144
+ - **Resizable:** replace PanelGroup and PanelResizeHandle with Group and Separator components ([4a246a8](https://github.com/oneplatformdev/core-web/commit/4a246a8))
145
+
146
+ ### 🧱 Updated Dependencies
147
+
148
+ - Updated @oneplatformdev/utils to 0.1.99-beta.18
149
+ - Updated @oneplatformdev/hooks to 0.1.99-beta.18
150
+ - Updated @oneplatformdev/tokens to 0.1.99-beta.18
151
+
152
+ ### ❤️ Thank You
153
+
154
+ - Bohdan Radchenko
155
+
156
+ ## 0.1.99-beta.17 (2026-01-07)
157
+
158
+ ### 🚀 Features
159
+
160
+ - **Resizable:** upgrade react-resizable-panels to v4.3.0 and refactor components for improved readability ([0110d5f](https://github.com/oneplatformdev/core-web/commit/0110d5f))
161
+
162
+ ### 🧱 Updated Dependencies
163
+
164
+ - Updated @oneplatformdev/utils to 0.1.99-beta.17
165
+ - Updated @oneplatformdev/hooks to 0.1.99-beta.17
166
+ - Updated @oneplatformdev/tokens to 0.1.99-beta.17
167
+
168
+ ### ❤️ Thank You
169
+
170
+ - Bohdan Radchenko
171
+
172
+ ## 0.1.99-beta.16 (2026-01-07)
173
+
174
+ ### 🚀 Features
175
+
176
+ - **ButtonVariants:** update button styles for improved layout and spacing ([b7d259e](https://github.com/oneplatformdev/core-web/commit/b7d259e))
177
+
178
+ ### 🧱 Updated Dependencies
179
+
180
+ - Updated @oneplatformdev/utils to 0.1.99-beta.16
181
+ - Updated @oneplatformdev/hooks to 0.1.99-beta.16
182
+ - Updated @oneplatformdev/tokens to 0.1.99-beta.16
183
+
184
+ ### ❤️ Thank You
185
+
186
+ - Bohdan Radchenko
187
+
188
+ ## 0.1.99-beta.15 (2026-01-02)
189
+
190
+ ### 🚀 Features
191
+
192
+ - **ButtonCounterBadge:** improve badge styling and clean up class names ([47c8a63](https://github.com/oneplatformdev/core-web/commit/47c8a63))
193
+
194
+ ### 🧱 Updated Dependencies
195
+
196
+ - Updated @oneplatformdev/utils to 0.1.99-beta.15
197
+ - Updated @oneplatformdev/hooks to 0.1.99-beta.15
198
+ - Updated @oneplatformdev/tokens to 0.1.99-beta.15
199
+
200
+ ### ❤️ Thank You
201
+
202
+ - Bohdan Radchenko
203
+
204
+ ## 0.1.99-beta.14 (2026-01-02)
205
+
206
+ ### 🧱 Updated Dependencies
207
+
208
+ - Updated @oneplatformdev/utils to 0.1.99-beta.14
209
+ - Updated @oneplatformdev/hooks to 0.1.99-beta.14
210
+ - Updated @oneplatformdev/tokens to 0.1.99-beta.14
211
+
212
+ ## 0.1.99-beta.13 (2026-01-02)
213
+
214
+ ### 🚀 Features
215
+
216
+ - **ButtonCounterBadge:** improve badge styling and clean up class names ([36a7614](https://github.com/oneplatformdev/core-web/commit/36a7614))
217
+
218
+ ### 🧱 Updated Dependencies
219
+
220
+ - Updated @oneplatformdev/utils to 0.1.99-beta.13
221
+ - Updated @oneplatformdev/hooks to 0.1.99-beta.13
222
+ - Updated @oneplatformdev/tokens to 0.1.99-beta.13
223
+
224
+ ### ❤️ Thank You
225
+
226
+ - Bohdan Radchenko
227
+
228
+ ## 0.1.99-beta.12 (2026-01-02)
229
+
230
+ ### 🚀 Features
231
+
232
+ - **ButtonIcon:** set default variant and color for story args ([60b62d7](https://github.com/oneplatformdev/core-web/commit/60b62d7))
233
+
234
+ ### 🧱 Updated Dependencies
235
+
236
+ - Updated @oneplatformdev/utils to 0.1.99-beta.12
237
+ - Updated @oneplatformdev/hooks to 0.1.99-beta.12
238
+ - Updated @oneplatformdev/tokens to 0.1.99-beta.12
239
+
240
+ ### ❤️ Thank You
241
+
242
+ - Bohdan Radchenko
243
+
244
+ ## 0.1.99-beta.11 (2026-01-02)
245
+
246
+ ### 🚀 Features
247
+
248
+ - **Button:** add counter badge support and update variant types for consistency ([cb6b0da](https://github.com/oneplatformdev/core-web/commit/cb6b0da))
249
+ - **ButtonIcon:** add screen reader text for improved accessibility ([465e76f](https://github.com/oneplatformdev/core-web/commit/465e76f))
250
+
251
+ ### 🩹 Fixes
252
+
253
+ - **ButtonIcon:** adjust padding for large size variant ([21042cd](https://github.com/oneplatformdev/core-web/commit/21042cd))
254
+
255
+ ### 🧱 Updated Dependencies
256
+
257
+ - Updated @oneplatformdev/utils to 0.1.99-beta.11
258
+ - Updated @oneplatformdev/hooks to 0.1.99-beta.11
259
+ - Updated @oneplatformdev/tokens to 0.1.99-beta.11
260
+
261
+ ### ❤️ Thank You
262
+
263
+ - Bohdan Radchenko
264
+
265
+ ## 0.1.99-beta.10 (2025-12-30)
266
+
267
+ ### 🚀 Features
268
+
269
+ - **Button:** add screen reader text rendering for accessibility ([e168003](https://github.com/oneplatformdev/core-web/commit/e168003))
270
+
271
+ ### 🧱 Updated Dependencies
272
+
273
+ - Updated @oneplatformdev/utils to 0.1.99-beta.10
274
+ - Updated @oneplatformdev/hooks to 0.1.99-beta.10
275
+ - Updated @oneplatformdev/tokens to 0.1.99-beta.10
276
+
277
+ ### ❤️ Thank You
278
+
279
+ - Bohdan Radchenko
280
+
281
+ ## 0.1.99-beta.9 (2025-12-30)
282
+
283
+ ### 🩹 Fixes
284
+
285
+ - **Button:** update documentation links for Button and ButtonIcon components ([cfa993f](https://github.com/oneplatformdev/core-web/commit/cfa993f))
286
+
287
+ ### 🧱 Updated Dependencies
288
+
289
+ - Updated @oneplatformdev/utils to 0.1.99-beta.9
290
+ - Updated @oneplatformdev/hooks to 0.1.99-beta.9
291
+ - Updated @oneplatformdev/tokens to 0.1.99-beta.9
292
+
293
+ ### ❤️ Thank You
294
+
295
+ - Bohdan Radchenko
296
+
297
+ ## 0.1.99-beta.8 (2025-12-30)
298
+
299
+ ### 🚀 Features
300
+
301
+ - **Textarea:** update styles and add new story for Textarea component ([9bafda1](https://github.com/oneplatformdev/core-web/commit/9bafda1))
302
+ - **Button:** add screen reader text options for improved accessibility ([9b93d9d](https://github.com/oneplatformdev/core-web/commit/9b93d9d))
303
+
304
+ ### 🧱 Updated Dependencies
305
+
306
+ - Updated @oneplatformdev/utils to 0.1.99-beta.8
307
+ - Updated @oneplatformdev/hooks to 0.1.99-beta.8
308
+ - Updated @oneplatformdev/tokens to 0.1.99-beta.8
309
+
310
+ ### ❤️ Thank You
311
+
312
+ - Bohdan Radchenko
313
+
314
+ ## 0.1.99-beta.7 (2025-12-29)
315
+
316
+ ### 🚀 Features
317
+
318
+ - **Button:** add screen reader support for accessibility ([ec7de8e](https://github.com/oneplatformdev/core-web/commit/ec7de8e))
319
+
320
+ ### 🧱 Updated Dependencies
321
+
322
+ - Updated @oneplatformdev/utils to 0.1.99-beta.7
323
+ - Updated @oneplatformdev/hooks to 0.1.99-beta.7
324
+ - Updated @oneplatformdev/tokens to 0.1.99-beta.7
325
+
326
+ ### ❤️ Thank You
327
+
328
+ - Bohdan Radchenko
329
+
330
+ ## 0.1.99-beta.6 (2025-12-29)
331
+
332
+ ### 🚀 Features
333
+
334
+ - **ButtonIcon:** introduce icon-only variant with enhanced props and storybook support ([d643217](https://github.com/oneplatformdev/core-web/commit/d643217))
335
+ - **Button:** add storybook integration with loading and tooltip support ([72ae45e](https://github.com/oneplatformdev/core-web/commit/72ae45e))
336
+
337
+ ### 🧱 Updated Dependencies
338
+
339
+ - Updated @oneplatformdev/utils to 0.1.99-beta.6
340
+ - Updated @oneplatformdev/hooks to 0.1.99-beta.6
341
+ - Updated @oneplatformdev/tokens to 0.1.99-beta.6
342
+
343
+ ### ❤️ Thank You
344
+
345
+ - Bohdan Radchenko
346
+
347
+ ## 0.1.99-beta.5 (2025-12-29)
348
+
349
+ ### 🧱 Updated Dependencies
350
+
351
+ - Updated @oneplatformdev/utils to 0.1.99-beta.5
352
+ - Updated @oneplatformdev/hooks to 0.1.99-beta.5
353
+ - Updated @oneplatformdev/tokens to 0.1.99-beta.5
354
+
355
+ ## 0.1.99-beta.4 (2025-12-29)
356
+
357
+ ### 🧱 Updated Dependencies
358
+
359
+ - Updated @oneplatformdev/utils to 0.1.99-beta.4
360
+ - Updated @oneplatformdev/hooks to 0.1.99-beta.4
361
+ - Updated @oneplatformdev/tokens to 0.1.99-beta.4
362
+
1
363
  ## 0.1.99-beta.3 (2025-12-29)
2
364
 
3
365
  ### 🚀 Features
@@ -1 +1 @@
1
- {"version":3,"file":"Combobox.d.ts","sourceRoot":"","sources":["../../src/Combobox/Combobox.tsx"],"names":[],"mappings":"AAuBA,OAAO,EAGL,aAAa,EACd,MAAM,kBAAkB,CAAC;AAqB1B,eAAO,MAAM,QAAQ,0GA+PpB,CAAC"}
1
+ {"version":3,"file":"Combobox.d.ts","sourceRoot":"","sources":["../../src/Combobox/Combobox.tsx"],"names":[],"mappings":"AAuBA,OAAO,EAGL,aAAa,EACd,MAAM,kBAAkB,CAAC;AAqB1B,eAAO,MAAM,QAAQ,0GA8PpB,CAAC"}
@@ -9,19 +9,19 @@ import { Command as de, CommandInput as pe, CommandList as me, CommandGroup as f
9
9
  import { cn as R } from "@oneplatformdev/utils";
10
10
  import { useDebounceCallback as he } from "@oneplatformdev/hooks";
11
11
  import { X as ge, ChevronsUpDown as be } from "lucide-react";
12
- import { ComboboxOptions as ve } from "./ComboboxOptions.js";
13
- const ye = (S) => {
12
+ import { ComboboxOptions as ye } from "./ComboboxOptions.js";
13
+ const ve = (S) => {
14
14
  const { value: m, flattenOptions: n = [], selectedOption: L } = S;
15
15
  if (!m) return "No value for render label";
16
- const y = [n.find((f) => String(f.value).toLowerCase() === String(m).toLowerCase()), L].filter(Boolean).map((f) => f.label).find(Boolean);
17
- return y || m;
16
+ const v = [n.find((f) => String(f.value).toLowerCase() === String(m).toLowerCase()), L].filter(Boolean).map((f) => f.label).find(Boolean);
17
+ return v || m;
18
18
  }, Ee = oe(
19
19
  (S, m) => {
20
20
  const {
21
21
  value: n,
22
22
  onChange: L,
23
23
  placeholder: T,
24
- disabled: y,
24
+ disabled: v,
25
25
  searchLabel: f = "Type to search...",
26
26
  fetchOptions: _,
27
27
  options: N,
@@ -30,12 +30,12 @@ const ye = (S) => {
30
30
  commandInputAction: I,
31
31
  listHeadAction: w,
32
32
  onMount: k
33
- } = S, [F, z] = s(!1), [l, B] = s(!1), [a, P] = s(""), [u, D] = s(), [o, c] = s(!1), [r, J] = s([]), [K, Q] = s([]), h = p((t) => {
33
+ } = S, [F, G] = s(!1), [l, B] = s(!1), [a, P] = s(""), [u, D] = s(), [o, c] = s(!1), [r, J] = s([]), [K, Q] = s([]), h = p((t) => {
34
34
  const b = (E) => {
35
35
  const i = [], H = (x) => {
36
36
  if (x)
37
- for (const v of x)
38
- i.push(v), v.items && v.items.length && H(v.items);
37
+ for (const y of x)
38
+ i.push(y), y.items && y.items.length && H(y.items);
39
39
  };
40
40
  H(E), Q((x) => {
41
41
  if (!i.find((O) => !!n && String(O.value) === String(n))) {
@@ -54,8 +54,8 @@ const ye = (S) => {
54
54
  N?.length && h(N);
55
55
  }, [N]);
56
56
  const Y = async () => {
57
- l || (G(), P(""));
58
- }, G = p(async (t) => {
57
+ l || (U(), P(""));
58
+ }, U = p(async (t) => {
59
59
  c(!0);
60
60
  try {
61
61
  const b = await _(t);
@@ -65,16 +65,16 @@ const ye = (S) => {
65
65
  } finally {
66
66
  c(!1);
67
67
  }
68
- }, [h]), Z = he(G, 1e3, {
68
+ }, [h]), Z = he(U, 1e3, {
69
69
  leading: !1,
70
70
  trailing: !0
71
71
  }), $ = p((t) => {
72
72
  c(!0), P(t), Z(t);
73
- }, []), U = p((t) => {
73
+ }, []), W = p((t) => {
74
74
  L(t.value), D(t), c(!1);
75
75
  }, []), ee = p(() => {
76
- U({ value: "", label: "" }), D(void 0), c(!1);
77
- }, []), W = M(() => !!a && !r.length && !o, [o, r.length, a]), q = M(() => !r.length && !o, [o, r.length, a]), g = M(() => ({
76
+ W({ value: "", label: "" }), D(void 0), c(!1);
77
+ }, []), q = M(() => !!a && !r.length && !o, [o, r.length, a]), z = M(() => !r.length && !o, [o, r.length, a]), g = M(() => ({
78
78
  options: r,
79
79
  setOptions: h,
80
80
  selectedOption: u,
@@ -85,15 +85,15 @@ const ye = (S) => {
85
85
  setOpen: B,
86
86
  loading: o,
87
87
  setLoading: c,
88
- isEmptyList: q,
89
- isSearchedEmptyList: W
90
- }), [o, l, r, a, u, q, W, h]), te = p(async () => {
88
+ isEmptyList: z,
89
+ isSearchedEmptyList: q
90
+ }), [o, l, r, a, u, z, q, h]), te = p(async () => {
91
91
  if (k) {
92
- z(!0);
92
+ G(!0);
93
93
  try {
94
94
  await k(g);
95
95
  } finally {
96
- z(!1);
96
+ G(!1);
97
97
  }
98
98
  }
99
99
  }, [k, g]);
@@ -110,19 +110,18 @@ const ye = (S) => {
110
110
  /* @__PURE__ */ e(se, { asChild: !0, className: "border-input", children: /* @__PURE__ */ e(
111
111
  ce,
112
112
  {
113
- variant: "outline",
113
+ color: "secondary",
114
114
  role: "combobox",
115
- size: "lg",
116
115
  "aria-expanded": l,
117
116
  className: R(
118
- "relative w-full justify-between font-normal text-sm bg-transparent relative p-3",
117
+ "relative w-full justify-between font-normal text-sm bg-transparent",
119
118
  "border border-border",
120
119
  l && "border-2 outline-hidden ring-1 ring-ring",
121
120
  "focus-visible:outline-hidden focus-visible:ring-1 focus-visible:ring-ring"
122
121
  ),
123
- disabled: y || F,
122
+ disabled: v || F,
124
123
  children: F ? /* @__PURE__ */ e(V, { fullWidth: !0 }) : /* @__PURE__ */ d(j, { children: [
125
- /* @__PURE__ */ e("span", { className: "truncate max-w-[calc(100%-1.5rem)] overflow-hidden whitespace-nowrap", children: n ? ye({ value: n, flattenOptions: K, selectedOption: u }) : /* @__PURE__ */ e("span", { className: "text-gray-400", children: T }) }),
124
+ /* @__PURE__ */ e("span", { className: "truncate max-w-[calc(100%-1.5rem)] overflow-hidden whitespace-nowrap", children: n ? ve({ value: n, flattenOptions: K, selectedOption: u }) : /* @__PURE__ */ e("span", { className: "text-gray-400", children: T }) }),
126
125
  n ? /* @__PURE__ */ e(
127
126
  "div",
128
127
  {
@@ -177,11 +176,11 @@ const ye = (S) => {
177
176
  "combobox-list-head-action"
178
177
  ),
179
178
  /* @__PURE__ */ e(
180
- ve,
179
+ ye,
181
180
  {
182
181
  value: n,
183
182
  options: r,
184
- onChangeOption: U,
183
+ onChangeOption: W,
185
184
  setOpen: B
186
185
  }
187
186
  )
@@ -1 +1 @@
1
- {"version":3,"file":"Combobox.js","sources":["../../src/Combobox/Combobox.tsx"],"sourcesContent":["import {\n Dispatch,\n forwardRef, SetStateAction,\n useCallback,\n useEffect,\n useLayoutEffect,\n useMemo,\n useState,\n} from 'react';\nimport { LoadingMask } from '../LoadingMask';\nimport { Popover, PopoverContent, PopoverTrigger } from '../Popover';\nimport { Button } from '../Button';\nimport {\n Command,\n CommandEmpty,\n CommandGroup,\n CommandInput,\n CommandItem,\n CommandList,\n} from '../Command';\nimport { cn } from '@oneplatformdev/utils';\nimport { useDebounceCallback } from '@oneplatformdev/hooks';\nimport { ChevronsUpDown, X } from 'lucide-react';\nimport {\n ComboboxCallbackStateParams,\n ComboboxOption,\n ComboboxProps,\n} from './Combobox.types';\nimport { ComboboxOptions } from './ComboboxOptions'; // TODO: refactor next component | nlt code\n\n\nconst getSelectRenderLabel = (params: {\n value: ComboboxProps['value'];\n flattenOptions: ComboboxOption[];\n selectedOption?: ComboboxOption;\n}): string => {\n const { value, flattenOptions = [], selectedOption } = params;\n if(!value) return 'No value for render label';\n const flattenedOption = flattenOptions.find(o => String(o.value).toLowerCase() === String(value).toLowerCase());\n const label = [flattenedOption, selectedOption]\n .filter(Boolean)\n .map(o => o!.label)\n .find(Boolean);\n if(!label) return value;\n return label;\n}\n\n// TODO: refactor next component | nlt code\nexport const Combobox = forwardRef<HTMLDivElement, ComboboxProps>(\n (props, ref) => {\n const {\n value,\n onChange,\n placeholder,\n disabled,\n searchLabel = 'Type to search...',\n fetchOptions,\n options: itemOptions,\n emptyLabel = 'No options',\n emptyAction,\n commandInputAction,\n listHeadAction,\n onMount,\n } = props;\n const [initialLoading, setInitialLoading] = useState(false);\n const [open, setOpen] = useState(false);\n const [searchTerm, setSearchTerm] = useState('');\n const [selectedOption, setSelectedOption] = useState<ComboboxOption>();\n const [loading, setLoading] = useState(false);\n\n const [options, setOptionsDispatch] = useState<ComboboxOption[]>([]);\n const [flattenOptions, setFlattenOptions] = useState<ComboboxOption[]>([]);\n const setOptions: Dispatch<SetStateAction<ComboboxOption[]>> = useCallback((stater) => {\n const flatten = (next: ComboboxOption[]) => {\n const res: ComboboxOption[] = [];\n const walk = (nodes?: ComboboxOption[]) => {\n if (!nodes) return;\n for (const node of nodes) {\n res.push(node);\n if (node.items && node.items.length) walk(node.items);\n }\n };\n walk(next);\n setFlattenOptions((prev) => {\n const isIncludedInRes = res.find(o => !!value && String(o.value) === String(value));\n\n if(!isIncludedInRes) {\n const current = selectedOption || prev.find(o => !!value && String(o.value) === String(value))\n if(current) return [current, ...res];\n }\n\n return res;\n });\n }\n setOptionsDispatch((prev) => {\n const next: ComboboxOption[] = typeof stater === 'function' ? stater(prev) : stater;\n flatten(next);\n return next;\n });\n }, [selectedOption, value])\n\n useEffect(() => {\n itemOptions?.length && setOptions(itemOptions);\n }, [itemOptions]);\n\n const handlePopoverOpen = async () => {\n if (!open) {\n void getData();\n setSearchTerm('');\n }\n };\n\n const getData = useCallback(async (search?: string) => {\n setLoading(true);\n try {\n const fetchedOptions = await fetchOptions(search);\n setOptions(fetchedOptions);\n } catch (error) {\n console.error('Unexpected error while get option:', error);\n } finally {\n setLoading(false);\n }\n }, [setOptions]);\n\n const debouncedGetData = useDebounceCallback(getData, 1000, {\n leading: false,\n trailing: true,\n });\n\n const handleSearchChange = useCallback((value: string) => {\n setLoading(true);\n setSearchTerm(value);\n debouncedGetData(value);\n }, []);\n\n const onChangeOption = useCallback((option: ComboboxOption) => {\n onChange(option.value);\n setSelectedOption(option);\n setLoading(false);\n }, []);\n\n const handleClearSelection = useCallback(() => {\n onChangeOption({ value: '', label: '' });\n setSelectedOption(undefined);\n setLoading(false);\n }, []);\n\n const isSearchedEmptyList = useMemo(() => {\n return Boolean(searchTerm) && !options.length && !loading;\n }, [loading, options.length, searchTerm])\n\n const isEmptyList = useMemo(() => {\n return !options.length && !loading;\n }, [loading, options.length, searchTerm])\n\n const comboboxCallbackStateParams =\n useMemo((): ComboboxCallbackStateParams => {\n return {\n options,\n setOptions,\n selectedOption,\n setSelectedOption,\n search: searchTerm || '',\n setSearch: setSearchTerm,\n open,\n setOpen,\n loading,\n setLoading,\n isEmptyList,\n isSearchedEmptyList,\n };\n }, [loading, open, options, searchTerm, selectedOption, isEmptyList, isSearchedEmptyList, setOptions]);\n\n const runOnMount = useCallback(async () => {\n if (!onMount) return;\n setInitialLoading(true);\n try {\n await onMount(comboboxCallbackStateParams);\n } finally {\n setInitialLoading(false);\n }\n }, [onMount, comboboxCallbackStateParams]);\n\n useLayoutEffect(() => {\n runOnMount();\n }, []);\n\n return (\n <div className=\"w-full\" ref={ref}>\n <Popover\n open={open}\n onOpenChange={(newOpen) => {\n setOpen(newOpen);\n if (newOpen) handlePopoverOpen();\n }}\n >\n <PopoverTrigger asChild className=\"border-input\">\n <Button\n variant=\"outline\"\n role=\"combobox\"\n size=\"lg\"\n aria-expanded={open}\n className={cn(\n 'relative w-full justify-between font-normal text-sm bg-transparent relative p-3',\n 'border border-border',\n open && 'border-2 outline-hidden ring-1 ring-ring',\n 'focus-visible:outline-hidden focus-visible:ring-1 focus-visible:ring-ring'\n )}\n disabled={disabled || initialLoading}\n >\n {initialLoading ? (\n <LoadingMask fullWidth />\n ) : (\n <>\n <span className=\"truncate max-w-[calc(100%-1.5rem)] overflow-hidden whitespace-nowrap\">\n {value\n ? getSelectRenderLabel({ value, flattenOptions, selectedOption })\n : <span className=\"text-gray-400\">{placeholder}</span>\n }\n </span>\n {value ? (\n <div\n className={cn(\n 'absolute top-0 right-1',\n 'flex items-center justify-center',\n 'w-9 aspect-square [&_svg]:size-5',\n 'opacity-50 cursor-pointer hover:opacity-100'\n )}\n onClick={(e) => {\n e.stopPropagation();\n handleClearSelection();\n }}\n >\n <X />\n </div>\n ) : (\n <ChevronsUpDown className=\"opacity-50 w-4 h-4\" />\n )}\n </>\n )}\n </Button>\n </PopoverTrigger>\n <PopoverContent\n className=\"w-(--radix-popper-anchor-width) max-w-none p-0\"\n align=\"start\"\n >\n <Command shouldFilter={false}>\n <CommandInput\n placeholder={searchLabel}\n value={searchTerm}\n onValueChange={handleSearchChange}\n />\n {typeof commandInputAction === 'function'\n ? commandInputAction(comboboxCallbackStateParams)\n : commandInputAction}\n <CommandList>\n <CommandGroup\n className={cn(!options.length && 'p-0 shadow-none')}\n >\n {loading && <LoadingMask fullWidth />}\n {!loading && Boolean(searchTerm) && (\n <>\n {emptyAction ? (\n <CommandEmpty className=\"flex flex-col gap-3 py-5 px-3 items-center\">\n <span>{emptyLabel}</span>\n {typeof emptyAction === 'function'\n ? emptyAction(comboboxCallbackStateParams)\n : emptyAction}\n </CommandEmpty>\n ) : (\n <CommandEmpty>{emptyLabel}</CommandEmpty>\n )}\n </>\n )}\n {!loading && (\n <>\n {Boolean(options.length) && listHeadAction && (\n <CommandItem\n key='combobox-list-head-action'\n asChild\n className='w-full'\n >\n {typeof listHeadAction === 'function'\n ? listHeadAction(comboboxCallbackStateParams)\n : listHeadAction}\n </CommandItem>\n )}\n <ComboboxOptions\n value={value}\n options={options}\n onChangeOption={onChangeOption}\n setOpen={setOpen}\n />\n </>\n )}\n </CommandGroup>\n </CommandList>\n </Command>\n </PopoverContent>\n </Popover>\n </div>\n );\n }\n);\n"],"names":["getSelectRenderLabel","params","value","flattenOptions","selectedOption","label","o","Combobox","forwardRef","props","ref","onChange","placeholder","disabled","searchLabel","fetchOptions","itemOptions","emptyLabel","emptyAction","commandInputAction","listHeadAction","onMount","initialLoading","setInitialLoading","useState","open","setOpen","searchTerm","setSearchTerm","setSelectedOption","loading","setLoading","options","setOptionsDispatch","setFlattenOptions","setOptions","useCallback","stater","flatten","next","res","walk","nodes","node","prev","current","useEffect","handlePopoverOpen","getData","search","fetchedOptions","error","debouncedGetData","useDebounceCallback","handleSearchChange","onChangeOption","option","handleClearSelection","isSearchedEmptyList","useMemo","isEmptyList","comboboxCallbackStateParams","runOnMount","useLayoutEffect","jsx","jsxs","Popover","newOpen","PopoverTrigger","Button","cn","LoadingMask","Fragment","e","X","ChevronsUpDown","PopoverContent","Command","CommandInput","CommandList","CommandGroup","CommandEmpty","CommandItem","ComboboxOptions"],"mappings":"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"}
1
+ {"version":3,"file":"Combobox.js","sources":["../../src/Combobox/Combobox.tsx"],"sourcesContent":["import {\n Dispatch,\n forwardRef, SetStateAction,\n useCallback,\n useEffect,\n useLayoutEffect,\n useMemo,\n useState,\n} from 'react';\nimport { LoadingMask } from '../LoadingMask';\nimport { Popover, PopoverContent, PopoverTrigger } from '../Popover';\nimport { Button } from '../Button';\nimport {\n Command,\n CommandEmpty,\n CommandGroup,\n CommandInput,\n CommandItem,\n CommandList,\n} from '../Command';\nimport { cn } from '@oneplatformdev/utils';\nimport { useDebounceCallback } from '@oneplatformdev/hooks';\nimport { ChevronsUpDown, X } from 'lucide-react';\nimport {\n ComboboxCallbackStateParams,\n ComboboxOption,\n ComboboxProps,\n} from './Combobox.types';\nimport { ComboboxOptions } from './ComboboxOptions'; // TODO: refactor next component | nlt code\n\n\nconst getSelectRenderLabel = (params: {\n value: ComboboxProps['value'];\n flattenOptions: ComboboxOption[];\n selectedOption?: ComboboxOption;\n}): string => {\n const { value, flattenOptions = [], selectedOption } = params;\n if(!value) return 'No value for render label';\n const flattenedOption = flattenOptions.find(o => String(o.value).toLowerCase() === String(value).toLowerCase());\n const label = [flattenedOption, selectedOption]\n .filter(Boolean)\n .map(o => o!.label)\n .find(Boolean);\n if(!label) return value;\n return label;\n}\n\n// TODO: refactor next component | nlt code\nexport const Combobox = forwardRef<HTMLDivElement, ComboboxProps>(\n (props, ref) => {\n const {\n value,\n onChange,\n placeholder,\n disabled,\n searchLabel = 'Type to search...',\n fetchOptions,\n options: itemOptions,\n emptyLabel = 'No options',\n emptyAction,\n commandInputAction,\n listHeadAction,\n onMount,\n } = props;\n const [initialLoading, setInitialLoading] = useState(false);\n const [open, setOpen] = useState(false);\n const [searchTerm, setSearchTerm] = useState('');\n const [selectedOption, setSelectedOption] = useState<ComboboxOption>();\n const [loading, setLoading] = useState(false);\n\n const [options, setOptionsDispatch] = useState<ComboboxOption[]>([]);\n const [flattenOptions, setFlattenOptions] = useState<ComboboxOption[]>([]);\n const setOptions: Dispatch<SetStateAction<ComboboxOption[]>> = useCallback((stater) => {\n const flatten = (next: ComboboxOption[]) => {\n const res: ComboboxOption[] = [];\n const walk = (nodes?: ComboboxOption[]) => {\n if (!nodes) return;\n for (const node of nodes) {\n res.push(node);\n if (node.items && node.items.length) walk(node.items);\n }\n };\n walk(next);\n setFlattenOptions((prev) => {\n const isIncludedInRes = res.find(o => !!value && String(o.value) === String(value));\n\n if(!isIncludedInRes) {\n const current = selectedOption || prev.find(o => !!value && String(o.value) === String(value))\n if(current) return [current, ...res];\n }\n\n return res;\n });\n }\n setOptionsDispatch((prev) => {\n const next: ComboboxOption[] = typeof stater === 'function' ? stater(prev) : stater;\n flatten(next);\n return next;\n });\n }, [selectedOption, value])\n\n useEffect(() => {\n itemOptions?.length && setOptions(itemOptions);\n }, [itemOptions]);\n\n const handlePopoverOpen = async () => {\n if (!open) {\n void getData();\n setSearchTerm('');\n }\n };\n\n const getData = useCallback(async (search?: string) => {\n setLoading(true);\n try {\n const fetchedOptions = await fetchOptions(search);\n setOptions(fetchedOptions);\n } catch (error) {\n console.error('Unexpected error while get option:', error);\n } finally {\n setLoading(false);\n }\n }, [setOptions]);\n\n const debouncedGetData = useDebounceCallback(getData, 1000, {\n leading: false,\n trailing: true,\n });\n\n const handleSearchChange = useCallback((value: string) => {\n setLoading(true);\n setSearchTerm(value);\n debouncedGetData(value);\n }, []);\n\n const onChangeOption = useCallback((option: ComboboxOption) => {\n onChange(option.value);\n setSelectedOption(option);\n setLoading(false);\n }, []);\n\n const handleClearSelection = useCallback(() => {\n onChangeOption({ value: '', label: '' });\n setSelectedOption(undefined);\n setLoading(false);\n }, []);\n\n const isSearchedEmptyList = useMemo(() => {\n return Boolean(searchTerm) && !options.length && !loading;\n }, [loading, options.length, searchTerm])\n\n const isEmptyList = useMemo(() => {\n return !options.length && !loading;\n }, [loading, options.length, searchTerm])\n\n const comboboxCallbackStateParams =\n useMemo((): ComboboxCallbackStateParams => {\n return {\n options,\n setOptions,\n selectedOption,\n setSelectedOption,\n search: searchTerm || '',\n setSearch: setSearchTerm,\n open,\n setOpen,\n loading,\n setLoading,\n isEmptyList,\n isSearchedEmptyList,\n };\n }, [loading, open, options, searchTerm, selectedOption, isEmptyList, isSearchedEmptyList, setOptions]);\n\n const runOnMount = useCallback(async () => {\n if (!onMount) return;\n setInitialLoading(true);\n try {\n await onMount(comboboxCallbackStateParams);\n } finally {\n setInitialLoading(false);\n }\n }, [onMount, comboboxCallbackStateParams]);\n\n useLayoutEffect(() => {\n runOnMount();\n }, []);\n\n return (\n <div className=\"w-full\" ref={ref}>\n <Popover\n open={open}\n onOpenChange={(newOpen) => {\n setOpen(newOpen);\n if (newOpen) handlePopoverOpen();\n }}\n >\n <PopoverTrigger asChild className=\"border-input\">\n <Button\n color='secondary'\n role=\"combobox\"\n aria-expanded={open}\n className={cn(\n 'relative w-full justify-between font-normal text-sm bg-transparent',\n 'border border-border',\n open && 'border-2 outline-hidden ring-1 ring-ring',\n 'focus-visible:outline-hidden focus-visible:ring-1 focus-visible:ring-ring'\n )}\n disabled={disabled || initialLoading}\n >\n {initialLoading ? (\n <LoadingMask fullWidth />\n ) : (\n <>\n <span className=\"truncate max-w-[calc(100%-1.5rem)] overflow-hidden whitespace-nowrap\">\n {value\n ? getSelectRenderLabel({ value, flattenOptions, selectedOption })\n : <span className=\"text-gray-400\">{placeholder}</span>\n }\n </span>\n {value ? (\n <div\n className={cn(\n 'absolute top-0 right-1',\n 'flex items-center justify-center',\n 'w-9 aspect-square [&_svg]:size-5',\n 'opacity-50 cursor-pointer hover:opacity-100'\n )}\n onClick={(e) => {\n e.stopPropagation();\n handleClearSelection();\n }}\n >\n <X />\n </div>\n ) : (\n <ChevronsUpDown className=\"opacity-50 w-4 h-4\" />\n )}\n </>\n )}\n </Button>\n </PopoverTrigger>\n <PopoverContent\n className=\"w-(--radix-popper-anchor-width) max-w-none p-0\"\n align=\"start\"\n >\n <Command shouldFilter={false}>\n <CommandInput\n placeholder={searchLabel}\n value={searchTerm}\n onValueChange={handleSearchChange}\n />\n {typeof commandInputAction === 'function'\n ? commandInputAction(comboboxCallbackStateParams)\n : commandInputAction}\n <CommandList>\n <CommandGroup\n className={cn(!options.length && 'p-0 shadow-none')}\n >\n {loading && <LoadingMask fullWidth />}\n {!loading && Boolean(searchTerm) && (\n <>\n {emptyAction ? (\n <CommandEmpty className=\"flex flex-col gap-3 py-5 px-3 items-center\">\n <span>{emptyLabel}</span>\n {typeof emptyAction === 'function'\n ? emptyAction(comboboxCallbackStateParams)\n : emptyAction}\n </CommandEmpty>\n ) : (\n <CommandEmpty>{emptyLabel}</CommandEmpty>\n )}\n </>\n )}\n {!loading && (\n <>\n {Boolean(options.length) && listHeadAction && (\n <CommandItem\n key='combobox-list-head-action'\n asChild\n className='w-full'\n >\n {typeof listHeadAction === 'function'\n ? listHeadAction(comboboxCallbackStateParams)\n : listHeadAction}\n </CommandItem>\n )}\n <ComboboxOptions\n value={value}\n options={options}\n onChangeOption={onChangeOption}\n setOpen={setOpen}\n />\n </>\n )}\n </CommandGroup>\n </CommandList>\n </Command>\n </PopoverContent>\n </Popover>\n </div>\n );\n }\n);\n"],"names":["getSelectRenderLabel","params","value","flattenOptions","selectedOption","label","o","Combobox","forwardRef","props","ref","onChange","placeholder","disabled","searchLabel","fetchOptions","itemOptions","emptyLabel","emptyAction","commandInputAction","listHeadAction","onMount","initialLoading","setInitialLoading","useState","open","setOpen","searchTerm","setSearchTerm","setSelectedOption","loading","setLoading","options","setOptionsDispatch","setFlattenOptions","setOptions","useCallback","stater","flatten","next","res","walk","nodes","node","prev","current","useEffect","handlePopoverOpen","getData","search","fetchedOptions","error","debouncedGetData","useDebounceCallback","handleSearchChange","onChangeOption","option","handleClearSelection","isSearchedEmptyList","useMemo","isEmptyList","comboboxCallbackStateParams","runOnMount","useLayoutEffect","jsx","jsxs","Popover","newOpen","PopoverTrigger","Button","cn","LoadingMask","Fragment","e","X","ChevronsUpDown","PopoverContent","Command","CommandInput","CommandList","CommandGroup","CommandEmpty","CommandItem","ComboboxOptions"],"mappings":"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"}