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

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 (80) hide show
  1. package/Accordion/Accordion.d.ts +1 -1
  2. package/Accordion/Accordion.d.ts.map +1 -1
  3. package/Accordion/Accordion.js +46 -24
  4. package/Accordion/Accordion.js.map +1 -1
  5. package/Badge/badgeVariants.d.ts +1 -1
  6. package/Button/Button.d.ts +6 -6
  7. package/Button/Button.d.ts.map +1 -1
  8. package/Button/Button.js +44 -42
  9. package/Button/Button.js.map +1 -1
  10. package/Button/Button.stories.js +45 -53
  11. package/Button/Button.stories.js.map +1 -1
  12. package/Button/Button.types.d.ts +24 -1
  13. package/Button/Button.types.d.ts.map +1 -1
  14. package/Button/ButtonCounterBadge.d.ts +7 -0
  15. package/Button/ButtonCounterBadge.d.ts.map +1 -0
  16. package/Button/ButtonCounterBadge.js +20 -0
  17. package/Button/ButtonCounterBadge.js.map +1 -0
  18. package/Button/buttonVariants.d.ts +11 -20
  19. package/Button/buttonVariants.d.ts.map +1 -1
  20. package/Button/buttonVariants.js +76 -12
  21. package/Button/buttonVariants.js.map +1 -1
  22. package/Button/index.js +6 -5
  23. package/ButtonIcon/ButtonIcon.d.ts +30 -19
  24. package/ButtonIcon/ButtonIcon.d.ts.map +1 -1
  25. package/ButtonIcon/ButtonIcon.js +70 -46
  26. package/ButtonIcon/ButtonIcon.js.map +1 -1
  27. package/ButtonIcon/ButtonIcon.stories.js +121 -78
  28. package/ButtonIcon/ButtonIcon.stories.js.map +1 -1
  29. package/ButtonIcon/ButtonIcon.types.d.ts +2 -1
  30. package/ButtonIcon/ButtonIcon.types.d.ts.map +1 -1
  31. package/ButtonIcon/buttonIconVariants.d.ts +1 -1
  32. package/ButtonIcon/buttonIconVariants.d.ts.map +1 -1
  33. package/ButtonIcon/buttonIconVariants.js +7 -6
  34. package/ButtonIcon/buttonIconVariants.js.map +1 -1
  35. package/CHANGELOG.md +370 -0
  36. package/Combobox/Combobox.d.ts.map +1 -1
  37. package/Combobox/Combobox.js +25 -26
  38. package/Combobox/Combobox.js.map +1 -1
  39. package/Combobox/Combobox.stories.js +192 -0
  40. package/Combobox/Combobox.stories.js.map +1 -0
  41. package/Combobox/ComboboxOptions.d.ts.map +1 -1
  42. package/Combobox/ComboboxOptions.js +42 -42
  43. package/Combobox/ComboboxOptions.js.map +1 -1
  44. package/Dialog/Dialog.js +6 -6
  45. package/Dialog/Dialog.js.map +1 -1
  46. package/Form/Form.d.ts.map +1 -1
  47. package/Form/Form.js.map +1 -1
  48. package/Input/Input.js +3 -3
  49. package/Input/Input.js.map +1 -1
  50. package/Input/inputVariants.d.ts.map +1 -1
  51. package/Input/inputVariants.js +5 -4
  52. package/Input/inputVariants.js.map +1 -1
  53. package/LoadedIcon/LoadedIcon.d.ts.map +1 -1
  54. package/LoadedIcon/LoadedIcon.js +3 -1
  55. package/LoadedIcon/LoadedIcon.js.map +1 -1
  56. package/Resizable/Resizable.d.ts +5 -20
  57. package/Resizable/Resizable.d.ts.map +1 -1
  58. package/Resizable/Resizable.js +48 -31
  59. package/Resizable/Resizable.js.map +1 -1
  60. package/Resizable/Resizable.stories.js +140 -0
  61. package/Resizable/Resizable.stories.js.map +1 -0
  62. package/Search/Search.js +12 -12
  63. package/Search/Search.js.map +1 -1
  64. package/Search/Search.stories.js +17 -0
  65. package/Search/Search.stories.js.map +1 -0
  66. package/Textarea/Textarea.js +6 -6
  67. package/Textarea/Textarea.js.map +1 -1
  68. package/Textarea/Textarea.stories.js +12 -0
  69. package/Textarea/Textarea.stories.js.map +1 -0
  70. package/Textarea/useAutosizeTextArea.d.ts +1 -1
  71. package/Textarea/useAutosizeTextArea.d.ts.map +1 -1
  72. package/Textarea/useAutosizeTextArea.js.map +1 -1
  73. package/Tooltip/Tooltip.d.ts.map +1 -1
  74. package/Tooltip/Tooltip.js.map +1 -1
  75. package/index.js +326 -325
  76. package/package.json +7 -4
  77. package/Button/Button.s.d.ts +0 -83
  78. package/Button/Button.s.d.ts.map +0 -1
  79. package/Button/Button.s.js +0 -163
  80. package/Button/Button.s.js.map +0 -1
package/CHANGELOG.md CHANGED
@@ -1,3 +1,373 @@
1
+ ## 0.1.99-beta.31 (2026-01-12)
2
+
3
+ ### 🧱 Updated Dependencies
4
+
5
+ - Updated @oneplatformdev/utils to 0.1.99-beta.31
6
+ - Updated @oneplatformdev/hooks to 0.1.99-beta.31
7
+ - Updated @oneplatformdev/tokens to 0.1.99-beta.31
8
+
9
+ ## 0.1.99-beta.30 (2026-01-12)
10
+
11
+ ### 🚀 Features
12
+
13
+ - **Accordion:** update icon and enhance transition effects for button variants ([4dd7eb8](https://github.com/oneplatformdev/core-web/commit/4dd7eb8))
14
+ - **App:** add routing for button and button-icon pages, enhance navigation ([ad89b21](https://github.com/oneplatformdev/core-web/commit/ad89b21))
15
+ - **Button:** enhance button component with new variants, adornments, and improved props ([0d373b8](https://github.com/oneplatformdev/core-web/commit/0d373b8))
16
+ - enhance FormSelect with onChangePrepare and updated onChange signature ([3b4402b](https://github.com/oneplatformdev/core-web/commit/3b4402b))
17
+
18
+ ### 🩹 Fixes
19
+
20
+ - **Accordion:** restore children rendering in AccordionPrimitive.Trigger ([a53f8f4](https://github.com/oneplatformdev/core-web/commit/a53f8f4))
21
+ - **FormSelect:** ensure default value is an empty string when undefined ([056631f](https://github.com/oneplatformdev/core-web/commit/056631f))
22
+ - update icon size for large button variant ([1e7c0a7](https://github.com/oneplatformdev/core-web/commit/1e7c0a7))
23
+ - add min-width to large button variant ([e34bc71](https://github.com/oneplatformdev/core-web/commit/e34bc71))
24
+ - handle undefined value in FormSelect component ([9c7ae4a](https://github.com/oneplatformdev/core-web/commit/9c7ae4a))
25
+ - minor alert dialog content ([#41](https://github.com/oneplatformdev/core-web/pull/41))
26
+ - update Dialog component title font size for better readability and add .env to .gitignore ([9646134](https://github.com/oneplatformdev/core-web/commit/9646134))
27
+ - adjust Dialog component styling for better alignment and update container size in CSS ([afaa5af](https://github.com/oneplatformdev/core-web/commit/afaa5af))
28
+ - update XIcon styling in Dialog component for improved visibility ([164338b](https://github.com/oneplatformdev/core-web/commit/164338b))
29
+ - update dialog primitive close ([5e7c577](https://github.com/oneplatformdev/core-web/commit/5e7c577))
30
+ - update dialog primitive close ([560b5ba](https://github.com/oneplatformdev/core-web/commit/560b5ba))
31
+ - update dialog primitive close ([f63b143](https://github.com/oneplatformdev/core-web/commit/f63b143))
32
+
33
+ ### 🧱 Updated Dependencies
34
+
35
+ - Updated @oneplatformdev/utils to 0.1.99-beta.30
36
+ - Updated @oneplatformdev/hooks to 0.1.99-beta.30
37
+ - Updated @oneplatformdev/tokens to 0.1.99-beta.30
38
+
39
+ ### ❤️ Thank You
40
+
41
+ - Bohdan Radchenko @BohdanRadchenko
42
+ - BohdanRadchenko
43
+
44
+ ## 0.1.99-beta.27 (2026-01-08)
45
+
46
+ ### 🧱 Updated Dependencies
47
+
48
+ - Updated @oneplatformdev/utils to 0.1.99-beta.27
49
+ - Updated @oneplatformdev/hooks to 0.1.99-beta.27
50
+ - Updated @oneplatformdev/tokens to 0.1.99-beta.27
51
+
52
+ ## 0.1.99-beta.26 (2026-01-08)
53
+
54
+ ### 🧱 Updated Dependencies
55
+
56
+ - Updated @oneplatformdev/utils to 0.1.99-beta.26
57
+ - Updated @oneplatformdev/hooks to 0.1.99-beta.26
58
+ - Updated @oneplatformdev/tokens to 0.1.99-beta.26
59
+
60
+ ## 0.1.99-beta.25 (2026-01-08)
61
+
62
+ ### 🧱 Updated Dependencies
63
+
64
+ - Updated @oneplatformdev/utils to 0.1.99-beta.25
65
+ - Updated @oneplatformdev/hooks to 0.1.99-beta.25
66
+ - Updated @oneplatformdev/tokens to 0.1.99-beta.25
67
+
68
+ ## 0.1.99-beta.24 (2026-01-08)
69
+
70
+ ### 🧱 Updated Dependencies
71
+
72
+ - Updated @oneplatformdev/utils to 0.1.99-beta.24
73
+ - Updated @oneplatformdev/hooks to 0.1.99-beta.24
74
+ - Updated @oneplatformdev/tokens to 0.1.99-beta.24
75
+
76
+ ## 0.1.99-beta.23 (2026-01-07)
77
+
78
+ ### 🩹 Fixes
79
+
80
+ - **Input:** adjust padding for start adornment and update inputVariants styles ([570718f](https://github.com/oneplatformdev/core-web/commit/570718f))
81
+
82
+ ### 🧱 Updated Dependencies
83
+
84
+ - Updated @oneplatformdev/utils to 0.1.99-beta.23
85
+ - Updated @oneplatformdev/hooks to 0.1.99-beta.23
86
+ - Updated @oneplatformdev/tokens to 0.1.99-beta.23
87
+
88
+ ### ❤️ Thank You
89
+
90
+ - Bohdan Radchenko
91
+
92
+ ## 0.1.99-beta.22 (2026-01-07)
93
+
94
+ ### 🩹 Fixes
95
+
96
+ - **Resizable:** update button icon styles and refactor ResizableHandle component props ([cd56236](https://github.com/oneplatformdev/core-web/commit/cd56236))
97
+
98
+ ### 🧱 Updated Dependencies
99
+
100
+ - Updated @oneplatformdev/utils to 0.1.99-beta.22
101
+ - Updated @oneplatformdev/hooks to 0.1.99-beta.22
102
+ - Updated @oneplatformdev/tokens to 0.1.99-beta.22
103
+
104
+ ### ❤️ Thank You
105
+
106
+ - Bohdan Radchenko
107
+
108
+ ## 0.1.99-beta.21 (2026-01-07)
109
+
110
+ ### 🧱 Updated Dependencies
111
+
112
+ - Updated @oneplatformdev/utils to 0.1.99-beta.21
113
+ - Updated @oneplatformdev/hooks to 0.1.99-beta.21
114
+ - Updated @oneplatformdev/tokens to 0.1.99-beta.21
115
+
116
+ ## 0.1.99-beta.20 (2026-01-07)
117
+
118
+ ### 🩹 Fixes
119
+
120
+ - **Resizable:** downgrade react-resizable-panels to version 3.0.6 and update component references ([443daf0](https://github.com/oneplatformdev/core-web/commit/443daf0))
121
+
122
+ ### 🧱 Updated Dependencies
123
+
124
+ - Updated @oneplatformdev/utils to 0.1.99-beta.20
125
+ - Updated @oneplatformdev/hooks to 0.1.99-beta.20
126
+ - Updated @oneplatformdev/tokens to 0.1.99-beta.20
127
+
128
+ ### ❤️ Thank You
129
+
130
+ - Bohdan Radchenko
131
+
132
+ ## 0.1.99-beta.19 (2026-01-07)
133
+
134
+ ### 🚀 Features
135
+
136
+ - **Resizable:** add Storybook stories for ResizablePanelGroup and ResizablePanel components ([dc5a4b8](https://github.com/oneplatformdev/core-web/commit/dc5a4b8))
137
+
138
+ ### 🧱 Updated Dependencies
139
+
140
+ - Updated @oneplatformdev/utils to 0.1.99-beta.19
141
+ - Updated @oneplatformdev/hooks to 0.1.99-beta.19
142
+ - Updated @oneplatformdev/tokens to 0.1.99-beta.19
143
+
144
+ ### ❤️ Thank You
145
+
146
+ - Bohdan Radchenko
147
+
148
+ ## 0.1.99-beta.18 (2026-01-07)
149
+
150
+ ### 🚀 Features
151
+
152
+ - **Resizable:** replace PanelGroup and PanelResizeHandle with Group and Separator components ([4a246a8](https://github.com/oneplatformdev/core-web/commit/4a246a8))
153
+
154
+ ### 🧱 Updated Dependencies
155
+
156
+ - Updated @oneplatformdev/utils to 0.1.99-beta.18
157
+ - Updated @oneplatformdev/hooks to 0.1.99-beta.18
158
+ - Updated @oneplatformdev/tokens to 0.1.99-beta.18
159
+
160
+ ### ❤️ Thank You
161
+
162
+ - Bohdan Radchenko
163
+
164
+ ## 0.1.99-beta.17 (2026-01-07)
165
+
166
+ ### 🚀 Features
167
+
168
+ - **Resizable:** upgrade react-resizable-panels to v4.3.0 and refactor components for improved readability ([0110d5f](https://github.com/oneplatformdev/core-web/commit/0110d5f))
169
+
170
+ ### 🧱 Updated Dependencies
171
+
172
+ - Updated @oneplatformdev/utils to 0.1.99-beta.17
173
+ - Updated @oneplatformdev/hooks to 0.1.99-beta.17
174
+ - Updated @oneplatformdev/tokens to 0.1.99-beta.17
175
+
176
+ ### ❤️ Thank You
177
+
178
+ - Bohdan Radchenko
179
+
180
+ ## 0.1.99-beta.16 (2026-01-07)
181
+
182
+ ### 🚀 Features
183
+
184
+ - **ButtonVariants:** update button styles for improved layout and spacing ([b7d259e](https://github.com/oneplatformdev/core-web/commit/b7d259e))
185
+
186
+ ### 🧱 Updated Dependencies
187
+
188
+ - Updated @oneplatformdev/utils to 0.1.99-beta.16
189
+ - Updated @oneplatformdev/hooks to 0.1.99-beta.16
190
+ - Updated @oneplatformdev/tokens to 0.1.99-beta.16
191
+
192
+ ### ❤️ Thank You
193
+
194
+ - Bohdan Radchenko
195
+
196
+ ## 0.1.99-beta.15 (2026-01-02)
197
+
198
+ ### 🚀 Features
199
+
200
+ - **ButtonCounterBadge:** improve badge styling and clean up class names ([47c8a63](https://github.com/oneplatformdev/core-web/commit/47c8a63))
201
+
202
+ ### 🧱 Updated Dependencies
203
+
204
+ - Updated @oneplatformdev/utils to 0.1.99-beta.15
205
+ - Updated @oneplatformdev/hooks to 0.1.99-beta.15
206
+ - Updated @oneplatformdev/tokens to 0.1.99-beta.15
207
+
208
+ ### ❤️ Thank You
209
+
210
+ - Bohdan Radchenko
211
+
212
+ ## 0.1.99-beta.14 (2026-01-02)
213
+
214
+ ### 🧱 Updated Dependencies
215
+
216
+ - Updated @oneplatformdev/utils to 0.1.99-beta.14
217
+ - Updated @oneplatformdev/hooks to 0.1.99-beta.14
218
+ - Updated @oneplatformdev/tokens to 0.1.99-beta.14
219
+
220
+ ## 0.1.99-beta.13 (2026-01-02)
221
+
222
+ ### 🚀 Features
223
+
224
+ - **ButtonCounterBadge:** improve badge styling and clean up class names ([36a7614](https://github.com/oneplatformdev/core-web/commit/36a7614))
225
+
226
+ ### 🧱 Updated Dependencies
227
+
228
+ - Updated @oneplatformdev/utils to 0.1.99-beta.13
229
+ - Updated @oneplatformdev/hooks to 0.1.99-beta.13
230
+ - Updated @oneplatformdev/tokens to 0.1.99-beta.13
231
+
232
+ ### ❤️ Thank You
233
+
234
+ - Bohdan Radchenko
235
+
236
+ ## 0.1.99-beta.12 (2026-01-02)
237
+
238
+ ### 🚀 Features
239
+
240
+ - **ButtonIcon:** set default variant and color for story args ([60b62d7](https://github.com/oneplatformdev/core-web/commit/60b62d7))
241
+
242
+ ### 🧱 Updated Dependencies
243
+
244
+ - Updated @oneplatformdev/utils to 0.1.99-beta.12
245
+ - Updated @oneplatformdev/hooks to 0.1.99-beta.12
246
+ - Updated @oneplatformdev/tokens to 0.1.99-beta.12
247
+
248
+ ### ❤️ Thank You
249
+
250
+ - Bohdan Radchenko
251
+
252
+ ## 0.1.99-beta.11 (2026-01-02)
253
+
254
+ ### 🚀 Features
255
+
256
+ - **Button:** add counter badge support and update variant types for consistency ([cb6b0da](https://github.com/oneplatformdev/core-web/commit/cb6b0da))
257
+ - **ButtonIcon:** add screen reader text for improved accessibility ([465e76f](https://github.com/oneplatformdev/core-web/commit/465e76f))
258
+
259
+ ### 🩹 Fixes
260
+
261
+ - **ButtonIcon:** adjust padding for large size variant ([21042cd](https://github.com/oneplatformdev/core-web/commit/21042cd))
262
+
263
+ ### 🧱 Updated Dependencies
264
+
265
+ - Updated @oneplatformdev/utils to 0.1.99-beta.11
266
+ - Updated @oneplatformdev/hooks to 0.1.99-beta.11
267
+ - Updated @oneplatformdev/tokens to 0.1.99-beta.11
268
+
269
+ ### ❤️ Thank You
270
+
271
+ - Bohdan Radchenko
272
+
273
+ ## 0.1.99-beta.10 (2025-12-30)
274
+
275
+ ### 🚀 Features
276
+
277
+ - **Button:** add screen reader text rendering for accessibility ([e168003](https://github.com/oneplatformdev/core-web/commit/e168003))
278
+
279
+ ### 🧱 Updated Dependencies
280
+
281
+ - Updated @oneplatformdev/utils to 0.1.99-beta.10
282
+ - Updated @oneplatformdev/hooks to 0.1.99-beta.10
283
+ - Updated @oneplatformdev/tokens to 0.1.99-beta.10
284
+
285
+ ### ❤️ Thank You
286
+
287
+ - Bohdan Radchenko
288
+
289
+ ## 0.1.99-beta.9 (2025-12-30)
290
+
291
+ ### 🩹 Fixes
292
+
293
+ - **Button:** update documentation links for Button and ButtonIcon components ([cfa993f](https://github.com/oneplatformdev/core-web/commit/cfa993f))
294
+
295
+ ### 🧱 Updated Dependencies
296
+
297
+ - Updated @oneplatformdev/utils to 0.1.99-beta.9
298
+ - Updated @oneplatformdev/hooks to 0.1.99-beta.9
299
+ - Updated @oneplatformdev/tokens to 0.1.99-beta.9
300
+
301
+ ### ❤️ Thank You
302
+
303
+ - Bohdan Radchenko
304
+
305
+ ## 0.1.99-beta.8 (2025-12-30)
306
+
307
+ ### 🚀 Features
308
+
309
+ - **Textarea:** update styles and add new story for Textarea component ([9bafda1](https://github.com/oneplatformdev/core-web/commit/9bafda1))
310
+ - **Button:** add screen reader text options for improved accessibility ([9b93d9d](https://github.com/oneplatformdev/core-web/commit/9b93d9d))
311
+
312
+ ### 🧱 Updated Dependencies
313
+
314
+ - Updated @oneplatformdev/utils to 0.1.99-beta.8
315
+ - Updated @oneplatformdev/hooks to 0.1.99-beta.8
316
+ - Updated @oneplatformdev/tokens to 0.1.99-beta.8
317
+
318
+ ### ❤️ Thank You
319
+
320
+ - Bohdan Radchenko
321
+
322
+ ## 0.1.99-beta.7 (2025-12-29)
323
+
324
+ ### 🚀 Features
325
+
326
+ - **Button:** add screen reader support for accessibility ([ec7de8e](https://github.com/oneplatformdev/core-web/commit/ec7de8e))
327
+
328
+ ### 🧱 Updated Dependencies
329
+
330
+ - Updated @oneplatformdev/utils to 0.1.99-beta.7
331
+ - Updated @oneplatformdev/hooks to 0.1.99-beta.7
332
+ - Updated @oneplatformdev/tokens to 0.1.99-beta.7
333
+
334
+ ### ❤️ Thank You
335
+
336
+ - Bohdan Radchenko
337
+
338
+ ## 0.1.99-beta.6 (2025-12-29)
339
+
340
+ ### 🚀 Features
341
+
342
+ - **ButtonIcon:** introduce icon-only variant with enhanced props and storybook support ([d643217](https://github.com/oneplatformdev/core-web/commit/d643217))
343
+ - **Button:** add storybook integration with loading and tooltip support ([72ae45e](https://github.com/oneplatformdev/core-web/commit/72ae45e))
344
+
345
+ ### 🧱 Updated Dependencies
346
+
347
+ - Updated @oneplatformdev/utils to 0.1.99-beta.6
348
+ - Updated @oneplatformdev/hooks to 0.1.99-beta.6
349
+ - Updated @oneplatformdev/tokens to 0.1.99-beta.6
350
+
351
+ ### ❤️ Thank You
352
+
353
+ - Bohdan Radchenko
354
+
355
+ ## 0.1.99-beta.5 (2025-12-29)
356
+
357
+ ### 🧱 Updated Dependencies
358
+
359
+ - Updated @oneplatformdev/utils to 0.1.99-beta.5
360
+ - Updated @oneplatformdev/hooks to 0.1.99-beta.5
361
+ - Updated @oneplatformdev/tokens to 0.1.99-beta.5
362
+
363
+ ## 0.1.99-beta.4 (2025-12-29)
364
+
365
+ ### 🧱 Updated Dependencies
366
+
367
+ - Updated @oneplatformdev/utils to 0.1.99-beta.4
368
+ - Updated @oneplatformdev/hooks to 0.1.99-beta.4
369
+ - Updated @oneplatformdev/tokens to 0.1.99-beta.4
370
+
1
371
  ## 0.1.99-beta.3 (2025-12-29)
2
372
 
3
373
  ### 🚀 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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"}