@fayz-ai/ui 0.8.2 → 0.8.4

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 (63) hide show
  1. package/dist/{chunk-XAOGMWLC.cjs → chunk-7ZQQZD4Q.cjs} +354 -80
  2. package/dist/chunk-7ZQQZD4Q.cjs.map +1 -0
  3. package/dist/{chunk-IEYCOJTY.cjs → chunk-B3BTZDTA.cjs} +10 -42
  4. package/dist/chunk-B3BTZDTA.cjs.map +1 -0
  5. package/dist/{chunk-O5F4LLSL.js → chunk-DYMBFHD7.js} +8 -7
  6. package/dist/chunk-DYMBFHD7.js.map +1 -0
  7. package/dist/{chunk-FY7OZNKU.js → chunk-G6OKZ7WL.js} +35 -8
  8. package/dist/chunk-G6OKZ7WL.js.map +1 -0
  9. package/dist/{chunk-W5O2X277.js → chunk-M34ACV5E.js} +27 -4
  10. package/dist/chunk-M34ACV5E.js.map +1 -0
  11. package/dist/{chunk-NWPMNPGR.cjs → chunk-MUGRP5DD.cjs} +57 -34
  12. package/dist/chunk-MUGRP5DD.cjs.map +1 -0
  13. package/dist/{chunk-ODY3GZ3Y.cjs → chunk-NZV47HWO.cjs} +36 -7
  14. package/dist/chunk-NZV47HWO.cjs.map +1 -0
  15. package/dist/{chunk-J3IUFUNR.js → chunk-R4LPSXTT.js} +8 -38
  16. package/dist/chunk-R4LPSXTT.js.map +1 -0
  17. package/dist/{chunk-TDGSY5W6.cjs → chunk-R4SQ2GVD.cjs} +8 -7
  18. package/dist/chunk-R4SQ2GVD.cjs.map +1 -0
  19. package/dist/{chunk-MZZMZYSE.js → chunk-VVQ45ZDZ.js} +357 -83
  20. package/dist/chunk-VVQ45ZDZ.js.map +1 -0
  21. package/dist/dashboard/OnboardingWidget.d.ts.map +1 -1
  22. package/dist/dashboard/index.cjs +26 -26
  23. package/dist/dashboard/index.js +2 -2
  24. package/dist/index.cjs +137 -137
  25. package/dist/index.js +5 -5
  26. package/dist/layout/AppShell.d.ts +41 -1
  27. package/dist/layout/AppShell.d.ts.map +1 -1
  28. package/dist/layout/ModulePage.d.ts +9 -6
  29. package/dist/layout/ModulePage.d.ts.map +1 -1
  30. package/dist/layout/Sidebar.d.ts +24 -1
  31. package/dist/layout/Sidebar.d.ts.map +1 -1
  32. package/dist/layout/Topbar.d.ts +13 -1
  33. package/dist/layout/Topbar.d.ts.map +1 -1
  34. package/dist/layout/index.cjs +19 -19
  35. package/dist/layout/index.js +1 -1
  36. package/dist/primitives/data-table.d.ts.map +1 -1
  37. package/dist/primitives/index.cjs +83 -83
  38. package/dist/primitives/index.js +2 -2
  39. package/dist/primitives/search-select.d.ts +3 -1
  40. package/dist/primitives/search-select.d.ts.map +1 -1
  41. package/dist/theme/index.cjs +8 -8
  42. package/dist/theme/index.d.ts.map +1 -1
  43. package/dist/theme/index.js +1 -1
  44. package/package.json +3 -3
  45. package/src/dashboard/OnboardingWidget.tsx +41 -1
  46. package/src/layout/AppShell.tsx +255 -7
  47. package/src/layout/ModulePage.tsx +32 -3
  48. package/src/layout/Sidebar.tsx +198 -61
  49. package/src/layout/Topbar.tsx +51 -4
  50. package/src/primitives/data-table.tsx +10 -1
  51. package/src/primitives/search-select.tsx +12 -4
  52. package/src/styles.css +34 -0
  53. package/src/theme/index.ts +9 -6
  54. package/dist/chunk-FY7OZNKU.js.map +0 -1
  55. package/dist/chunk-IEYCOJTY.cjs.map +0 -1
  56. package/dist/chunk-J3IUFUNR.js.map +0 -1
  57. package/dist/chunk-MZZMZYSE.js.map +0 -1
  58. package/dist/chunk-NWPMNPGR.cjs.map +0 -1
  59. package/dist/chunk-O5F4LLSL.js.map +0 -1
  60. package/dist/chunk-ODY3GZ3Y.cjs.map +0 -1
  61. package/dist/chunk-TDGSY5W6.cjs.map +0 -1
  62. package/dist/chunk-W5O2X277.js.map +0 -1
  63. package/dist/chunk-XAOGMWLC.cjs.map +0 -1
@@ -1,219 +1,211 @@
1
1
  'use strict';
2
2
 
3
- var chunkIEYCOJTY_cjs = require('../chunk-IEYCOJTY.cjs');
3
+ var chunkB3BTZDTA_cjs = require('../chunk-B3BTZDTA.cjs');
4
4
  var chunkOW73RZOU_cjs = require('../chunk-OW73RZOU.cjs');
5
- var chunkODY3GZ3Y_cjs = require('../chunk-ODY3GZ3Y.cjs');
5
+ var chunkNZV47HWO_cjs = require('../chunk-NZV47HWO.cjs');
6
6
  var chunkH6OULCHF_cjs = require('../chunk-H6OULCHF.cjs');
7
7
 
8
8
 
9
9
 
10
10
  Object.defineProperty(exports, "Badge", {
11
11
  enumerable: true,
12
- get: function () { return chunkIEYCOJTY_cjs.Badge; }
12
+ get: function () { return chunkB3BTZDTA_cjs.Badge; }
13
13
  });
14
14
  Object.defineProperty(exports, "Breadcrumb", {
15
15
  enumerable: true,
16
- get: function () { return chunkIEYCOJTY_cjs.Breadcrumb; }
16
+ get: function () { return chunkB3BTZDTA_cjs.Breadcrumb; }
17
17
  });
18
18
  Object.defineProperty(exports, "Checkbox", {
19
19
  enumerable: true,
20
- get: function () { return chunkIEYCOJTY_cjs.Checkbox; }
20
+ get: function () { return chunkB3BTZDTA_cjs.Checkbox; }
21
21
  });
22
22
  Object.defineProperty(exports, "ConfirmDialog", {
23
23
  enumerable: true,
24
- get: function () { return chunkIEYCOJTY_cjs.ConfirmDialog; }
24
+ get: function () { return chunkB3BTZDTA_cjs.ConfirmDialog; }
25
25
  });
26
26
  Object.defineProperty(exports, "CurrencyInput", {
27
27
  enumerable: true,
28
- get: function () { return chunkIEYCOJTY_cjs.CurrencyInput; }
28
+ get: function () { return chunkB3BTZDTA_cjs.CurrencyInput; }
29
29
  });
30
30
  Object.defineProperty(exports, "DatePicker", {
31
31
  enumerable: true,
32
- get: function () { return chunkIEYCOJTY_cjs.DatePicker; }
32
+ get: function () { return chunkB3BTZDTA_cjs.DatePicker; }
33
33
  });
34
34
  Object.defineProperty(exports, "Input", {
35
35
  enumerable: true,
36
- get: function () { return chunkIEYCOJTY_cjs.Input; }
36
+ get: function () { return chunkB3BTZDTA_cjs.Input; }
37
37
  });
38
38
  Object.defineProperty(exports, "ListView", {
39
39
  enumerable: true,
40
- get: function () { return chunkIEYCOJTY_cjs.ListView; }
40
+ get: function () { return chunkB3BTZDTA_cjs.ListView; }
41
41
  });
42
42
  Object.defineProperty(exports, "Markdown", {
43
43
  enumerable: true,
44
- get: function () { return chunkIEYCOJTY_cjs.Markdown; }
44
+ get: function () { return chunkB3BTZDTA_cjs.Markdown; }
45
45
  });
46
46
  Object.defineProperty(exports, "MarkdownEditor", {
47
47
  enumerable: true,
48
- get: function () { return chunkIEYCOJTY_cjs.MarkdownEditor; }
48
+ get: function () { return chunkB3BTZDTA_cjs.MarkdownEditor; }
49
49
  });
50
50
  Object.defineProperty(exports, "Modal", {
51
51
  enumerable: true,
52
- get: function () { return chunkIEYCOJTY_cjs.Modal; }
52
+ get: function () { return chunkB3BTZDTA_cjs.Modal; }
53
53
  });
54
54
  Object.defineProperty(exports, "ModalBody", {
55
55
  enumerable: true,
56
- get: function () { return chunkIEYCOJTY_cjs.ModalBody; }
56
+ get: function () { return chunkB3BTZDTA_cjs.ModalBody; }
57
57
  });
58
58
  Object.defineProperty(exports, "ModalClose", {
59
59
  enumerable: true,
60
- get: function () { return chunkIEYCOJTY_cjs.ModalClose; }
60
+ get: function () { return chunkB3BTZDTA_cjs.ModalClose; }
61
61
  });
62
62
  Object.defineProperty(exports, "ModalContent", {
63
63
  enumerable: true,
64
- get: function () { return chunkIEYCOJTY_cjs.ModalContent; }
64
+ get: function () { return chunkB3BTZDTA_cjs.ModalContent; }
65
65
  });
66
66
  Object.defineProperty(exports, "ModalDescription", {
67
67
  enumerable: true,
68
- get: function () { return chunkIEYCOJTY_cjs.ModalDescription; }
68
+ get: function () { return chunkB3BTZDTA_cjs.ModalDescription; }
69
69
  });
70
70
  Object.defineProperty(exports, "ModalFooter", {
71
71
  enumerable: true,
72
- get: function () { return chunkIEYCOJTY_cjs.ModalFooter; }
72
+ get: function () { return chunkB3BTZDTA_cjs.ModalFooter; }
73
73
  });
74
74
  Object.defineProperty(exports, "ModalHeader", {
75
75
  enumerable: true,
76
- get: function () { return chunkIEYCOJTY_cjs.ModalHeader; }
76
+ get: function () { return chunkB3BTZDTA_cjs.ModalHeader; }
77
77
  });
78
78
  Object.defineProperty(exports, "ModalOverlay", {
79
79
  enumerable: true,
80
- get: function () { return chunkIEYCOJTY_cjs.ModalOverlay; }
80
+ get: function () { return chunkB3BTZDTA_cjs.ModalOverlay; }
81
81
  });
82
82
  Object.defineProperty(exports, "ModalPortal", {
83
83
  enumerable: true,
84
- get: function () { return chunkIEYCOJTY_cjs.ModalPortal; }
84
+ get: function () { return chunkB3BTZDTA_cjs.ModalPortal; }
85
85
  });
86
86
  Object.defineProperty(exports, "ModalTitle", {
87
87
  enumerable: true,
88
- get: function () { return chunkIEYCOJTY_cjs.ModalTitle; }
88
+ get: function () { return chunkB3BTZDTA_cjs.ModalTitle; }
89
89
  });
90
90
  Object.defineProperty(exports, "ModalTrigger", {
91
91
  enumerable: true,
92
- get: function () { return chunkIEYCOJTY_cjs.ModalTrigger; }
92
+ get: function () { return chunkB3BTZDTA_cjs.ModalTrigger; }
93
93
  });
94
94
  Object.defineProperty(exports, "Popover", {
95
95
  enumerable: true,
96
- get: function () { return chunkIEYCOJTY_cjs.Popover; }
96
+ get: function () { return chunkB3BTZDTA_cjs.Popover; }
97
97
  });
98
98
  Object.defineProperty(exports, "PopoverContent", {
99
99
  enumerable: true,
100
- get: function () { return chunkIEYCOJTY_cjs.PopoverContent; }
100
+ get: function () { return chunkB3BTZDTA_cjs.PopoverContent; }
101
101
  });
102
102
  Object.defineProperty(exports, "PopoverTrigger", {
103
103
  enumerable: true,
104
- get: function () { return chunkIEYCOJTY_cjs.PopoverTrigger; }
104
+ get: function () { return chunkB3BTZDTA_cjs.PopoverTrigger; }
105
105
  });
106
106
  Object.defineProperty(exports, "SearchCombobox", {
107
107
  enumerable: true,
108
- get: function () { return chunkIEYCOJTY_cjs.SearchCombobox; }
108
+ get: function () { return chunkB3BTZDTA_cjs.SearchCombobox; }
109
109
  });
110
110
  Object.defineProperty(exports, "SearchSelect", {
111
111
  enumerable: true,
112
- get: function () { return chunkIEYCOJTY_cjs.SearchSelect; }
112
+ get: function () { return chunkB3BTZDTA_cjs.SearchSelect; }
113
113
  });
114
114
  Object.defineProperty(exports, "Select", {
115
115
  enumerable: true,
116
- get: function () { return chunkIEYCOJTY_cjs.Select; }
116
+ get: function () { return chunkB3BTZDTA_cjs.Select; }
117
117
  });
118
118
  Object.defineProperty(exports, "SelectContent", {
119
119
  enumerable: true,
120
- get: function () { return chunkIEYCOJTY_cjs.SelectContent; }
120
+ get: function () { return chunkB3BTZDTA_cjs.SelectContent; }
121
121
  });
122
122
  Object.defineProperty(exports, "SelectGroup", {
123
123
  enumerable: true,
124
- get: function () { return chunkIEYCOJTY_cjs.SelectGroup; }
124
+ get: function () { return chunkB3BTZDTA_cjs.SelectGroup; }
125
125
  });
126
126
  Object.defineProperty(exports, "SelectItem", {
127
127
  enumerable: true,
128
- get: function () { return chunkIEYCOJTY_cjs.SelectItem; }
128
+ get: function () { return chunkB3BTZDTA_cjs.SelectItem; }
129
129
  });
130
130
  Object.defineProperty(exports, "SelectLabel", {
131
131
  enumerable: true,
132
- get: function () { return chunkIEYCOJTY_cjs.SelectLabel; }
132
+ get: function () { return chunkB3BTZDTA_cjs.SelectLabel; }
133
133
  });
134
134
  Object.defineProperty(exports, "SelectScrollDownButton", {
135
135
  enumerable: true,
136
- get: function () { return chunkIEYCOJTY_cjs.SelectScrollDownButton; }
136
+ get: function () { return chunkB3BTZDTA_cjs.SelectScrollDownButton; }
137
137
  });
138
138
  Object.defineProperty(exports, "SelectScrollUpButton", {
139
139
  enumerable: true,
140
- get: function () { return chunkIEYCOJTY_cjs.SelectScrollUpButton; }
140
+ get: function () { return chunkB3BTZDTA_cjs.SelectScrollUpButton; }
141
141
  });
142
142
  Object.defineProperty(exports, "SelectSeparator", {
143
143
  enumerable: true,
144
- get: function () { return chunkIEYCOJTY_cjs.SelectSeparator; }
144
+ get: function () { return chunkB3BTZDTA_cjs.SelectSeparator; }
145
145
  });
146
146
  Object.defineProperty(exports, "SelectTrigger", {
147
147
  enumerable: true,
148
- get: function () { return chunkIEYCOJTY_cjs.SelectTrigger; }
148
+ get: function () { return chunkB3BTZDTA_cjs.SelectTrigger; }
149
149
  });
150
150
  Object.defineProperty(exports, "SelectValue", {
151
151
  enumerable: true,
152
- get: function () { return chunkIEYCOJTY_cjs.SelectValue; }
152
+ get: function () { return chunkB3BTZDTA_cjs.SelectValue; }
153
153
  });
154
154
  Object.defineProperty(exports, "Separator", {
155
155
  enumerable: true,
156
- get: function () { return chunkIEYCOJTY_cjs.Separator; }
157
- });
158
- Object.defineProperty(exports, "Skeleton", {
159
- enumerable: true,
160
- get: function () { return chunkIEYCOJTY_cjs.Skeleton; }
161
- });
162
- Object.defineProperty(exports, "TableSkeleton", {
163
- enumerable: true,
164
- get: function () { return chunkIEYCOJTY_cjs.TableSkeleton; }
156
+ get: function () { return chunkB3BTZDTA_cjs.Separator; }
165
157
  });
166
158
  Object.defineProperty(exports, "Tabs", {
167
159
  enumerable: true,
168
- get: function () { return chunkIEYCOJTY_cjs.Tabs; }
160
+ get: function () { return chunkB3BTZDTA_cjs.Tabs; }
169
161
  });
170
162
  Object.defineProperty(exports, "TabsContent", {
171
163
  enumerable: true,
172
- get: function () { return chunkIEYCOJTY_cjs.TabsContent; }
164
+ get: function () { return chunkB3BTZDTA_cjs.TabsContent; }
173
165
  });
174
166
  Object.defineProperty(exports, "TabsList", {
175
167
  enumerable: true,
176
- get: function () { return chunkIEYCOJTY_cjs.TabsList; }
168
+ get: function () { return chunkB3BTZDTA_cjs.TabsList; }
177
169
  });
178
170
  Object.defineProperty(exports, "TabsTrigger", {
179
171
  enumerable: true,
180
- get: function () { return chunkIEYCOJTY_cjs.TabsTrigger; }
172
+ get: function () { return chunkB3BTZDTA_cjs.TabsTrigger; }
181
173
  });
182
174
  Object.defineProperty(exports, "TimePicker", {
183
175
  enumerable: true,
184
- get: function () { return chunkIEYCOJTY_cjs.TimePicker; }
176
+ get: function () { return chunkB3BTZDTA_cjs.TimePicker; }
185
177
  });
186
178
  Object.defineProperty(exports, "ToastProvider", {
187
179
  enumerable: true,
188
- get: function () { return chunkIEYCOJTY_cjs.ToastProvider; }
180
+ get: function () { return chunkB3BTZDTA_cjs.ToastProvider; }
189
181
  });
190
182
  Object.defineProperty(exports, "Tooltip", {
191
183
  enumerable: true,
192
- get: function () { return chunkIEYCOJTY_cjs.Tooltip; }
184
+ get: function () { return chunkB3BTZDTA_cjs.Tooltip; }
193
185
  });
194
186
  Object.defineProperty(exports, "TooltipContent", {
195
187
  enumerable: true,
196
- get: function () { return chunkIEYCOJTY_cjs.TooltipContent; }
188
+ get: function () { return chunkB3BTZDTA_cjs.TooltipContent; }
197
189
  });
198
190
  Object.defineProperty(exports, "TooltipProvider", {
199
191
  enumerable: true,
200
- get: function () { return chunkIEYCOJTY_cjs.TooltipProvider; }
192
+ get: function () { return chunkB3BTZDTA_cjs.TooltipProvider; }
201
193
  });
202
194
  Object.defineProperty(exports, "TooltipTrigger", {
203
195
  enumerable: true,
204
- get: function () { return chunkIEYCOJTY_cjs.TooltipTrigger; }
196
+ get: function () { return chunkB3BTZDTA_cjs.TooltipTrigger; }
205
197
  });
206
198
  Object.defineProperty(exports, "badgeVariants", {
207
199
  enumerable: true,
208
- get: function () { return chunkIEYCOJTY_cjs.badgeVariants; }
200
+ get: function () { return chunkB3BTZDTA_cjs.badgeVariants; }
209
201
  });
210
202
  Object.defineProperty(exports, "renderMarkdown", {
211
203
  enumerable: true,
212
- get: function () { return chunkIEYCOJTY_cjs.renderMarkdown; }
204
+ get: function () { return chunkB3BTZDTA_cjs.renderMarkdown; }
213
205
  });
214
206
  Object.defineProperty(exports, "toast", {
215
207
  enumerable: true,
216
- get: function () { return chunkIEYCOJTY_cjs.toast; }
208
+ get: function () { return chunkB3BTZDTA_cjs.toast; }
217
209
  });
218
210
  Object.defineProperty(exports, "Sheet", {
219
211
  enumerable: true,
@@ -261,95 +253,103 @@ Object.defineProperty(exports, "SheetTrigger", {
261
253
  });
262
254
  Object.defineProperty(exports, "Card", {
263
255
  enumerable: true,
264
- get: function () { return chunkODY3GZ3Y_cjs.Card; }
256
+ get: function () { return chunkNZV47HWO_cjs.Card; }
265
257
  });
266
258
  Object.defineProperty(exports, "CardContent", {
267
259
  enumerable: true,
268
- get: function () { return chunkODY3GZ3Y_cjs.CardContent; }
260
+ get: function () { return chunkNZV47HWO_cjs.CardContent; }
269
261
  });
270
262
  Object.defineProperty(exports, "CardDescription", {
271
263
  enumerable: true,
272
- get: function () { return chunkODY3GZ3Y_cjs.CardDescription; }
264
+ get: function () { return chunkNZV47HWO_cjs.CardDescription; }
273
265
  });
274
266
  Object.defineProperty(exports, "CardFooter", {
275
267
  enumerable: true,
276
- get: function () { return chunkODY3GZ3Y_cjs.CardFooter; }
268
+ get: function () { return chunkNZV47HWO_cjs.CardFooter; }
277
269
  });
278
270
  Object.defineProperty(exports, "CardHeader", {
279
271
  enumerable: true,
280
- get: function () { return chunkODY3GZ3Y_cjs.CardHeader; }
272
+ get: function () { return chunkNZV47HWO_cjs.CardHeader; }
281
273
  });
282
274
  Object.defineProperty(exports, "CardTitle", {
283
275
  enumerable: true,
284
- get: function () { return chunkODY3GZ3Y_cjs.CardTitle; }
276
+ get: function () { return chunkNZV47HWO_cjs.CardTitle; }
285
277
  });
286
278
  Object.defineProperty(exports, "DataTable", {
287
279
  enumerable: true,
288
- get: function () { return chunkODY3GZ3Y_cjs.DataTable; }
280
+ get: function () { return chunkNZV47HWO_cjs.DataTable; }
289
281
  });
290
282
  Object.defineProperty(exports, "Dropdown", {
291
283
  enumerable: true,
292
- get: function () { return chunkODY3GZ3Y_cjs.Dropdown; }
284
+ get: function () { return chunkNZV47HWO_cjs.Dropdown; }
293
285
  });
294
286
  Object.defineProperty(exports, "DropdownCheckboxItem", {
295
287
  enumerable: true,
296
- get: function () { return chunkODY3GZ3Y_cjs.DropdownCheckboxItem; }
288
+ get: function () { return chunkNZV47HWO_cjs.DropdownCheckboxItem; }
297
289
  });
298
290
  Object.defineProperty(exports, "DropdownContent", {
299
291
  enumerable: true,
300
- get: function () { return chunkODY3GZ3Y_cjs.DropdownContent; }
292
+ get: function () { return chunkNZV47HWO_cjs.DropdownContent; }
301
293
  });
302
294
  Object.defineProperty(exports, "DropdownGroup", {
303
295
  enumerable: true,
304
- get: function () { return chunkODY3GZ3Y_cjs.DropdownGroup; }
296
+ get: function () { return chunkNZV47HWO_cjs.DropdownGroup; }
305
297
  });
306
298
  Object.defineProperty(exports, "DropdownItem", {
307
299
  enumerable: true,
308
- get: function () { return chunkODY3GZ3Y_cjs.DropdownItem; }
300
+ get: function () { return chunkNZV47HWO_cjs.DropdownItem; }
309
301
  });
310
302
  Object.defineProperty(exports, "DropdownLabel", {
311
303
  enumerable: true,
312
- get: function () { return chunkODY3GZ3Y_cjs.DropdownLabel; }
304
+ get: function () { return chunkNZV47HWO_cjs.DropdownLabel; }
313
305
  });
314
306
  Object.defineProperty(exports, "DropdownPortal", {
315
307
  enumerable: true,
316
- get: function () { return chunkODY3GZ3Y_cjs.DropdownPortal; }
308
+ get: function () { return chunkNZV47HWO_cjs.DropdownPortal; }
317
309
  });
318
310
  Object.defineProperty(exports, "DropdownRadioGroup", {
319
311
  enumerable: true,
320
- get: function () { return chunkODY3GZ3Y_cjs.DropdownRadioGroup; }
312
+ get: function () { return chunkNZV47HWO_cjs.DropdownRadioGroup; }
321
313
  });
322
314
  Object.defineProperty(exports, "DropdownRadioItem", {
323
315
  enumerable: true,
324
- get: function () { return chunkODY3GZ3Y_cjs.DropdownRadioItem; }
316
+ get: function () { return chunkNZV47HWO_cjs.DropdownRadioItem; }
325
317
  });
326
318
  Object.defineProperty(exports, "DropdownSeparator", {
327
319
  enumerable: true,
328
- get: function () { return chunkODY3GZ3Y_cjs.DropdownSeparator; }
320
+ get: function () { return chunkNZV47HWO_cjs.DropdownSeparator; }
329
321
  });
330
322
  Object.defineProperty(exports, "DropdownShortcut", {
331
323
  enumerable: true,
332
- get: function () { return chunkODY3GZ3Y_cjs.DropdownShortcut; }
324
+ get: function () { return chunkNZV47HWO_cjs.DropdownShortcut; }
333
325
  });
334
326
  Object.defineProperty(exports, "DropdownSub", {
335
327
  enumerable: true,
336
- get: function () { return chunkODY3GZ3Y_cjs.DropdownSub; }
328
+ get: function () { return chunkNZV47HWO_cjs.DropdownSub; }
337
329
  });
338
330
  Object.defineProperty(exports, "DropdownSubContent", {
339
331
  enumerable: true,
340
- get: function () { return chunkODY3GZ3Y_cjs.DropdownSubContent; }
332
+ get: function () { return chunkNZV47HWO_cjs.DropdownSubContent; }
341
333
  });
342
334
  Object.defineProperty(exports, "DropdownSubTrigger", {
343
335
  enumerable: true,
344
- get: function () { return chunkODY3GZ3Y_cjs.DropdownSubTrigger; }
336
+ get: function () { return chunkNZV47HWO_cjs.DropdownSubTrigger; }
345
337
  });
346
338
  Object.defineProperty(exports, "DropdownTrigger", {
347
339
  enumerable: true,
348
- get: function () { return chunkODY3GZ3Y_cjs.DropdownTrigger; }
340
+ get: function () { return chunkNZV47HWO_cjs.DropdownTrigger; }
349
341
  });
350
342
  Object.defineProperty(exports, "SegmentedControl", {
351
343
  enumerable: true,
352
- get: function () { return chunkODY3GZ3Y_cjs.SegmentedControl; }
344
+ get: function () { return chunkNZV47HWO_cjs.SegmentedControl; }
345
+ });
346
+ Object.defineProperty(exports, "Skeleton", {
347
+ enumerable: true,
348
+ get: function () { return chunkNZV47HWO_cjs.Skeleton; }
349
+ });
350
+ Object.defineProperty(exports, "TableSkeleton", {
351
+ enumerable: true,
352
+ get: function () { return chunkNZV47HWO_cjs.TableSkeleton; }
353
353
  });
354
354
  Object.defineProperty(exports, "Button", {
355
355
  enumerable: true,
@@ -1,6 +1,6 @@
1
- export { Badge, Breadcrumb, Checkbox, ConfirmDialog, CurrencyInput, DatePicker, Input, ListView, Markdown, MarkdownEditor, Modal, ModalBody, ModalClose, ModalContent, ModalDescription, ModalFooter, ModalHeader, ModalOverlay, ModalPortal, ModalTitle, ModalTrigger, Popover, PopoverContent, PopoverTrigger, SearchCombobox, SearchSelect, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, Separator, Skeleton, TableSkeleton, Tabs, TabsContent, TabsList, TabsTrigger, TimePicker, ToastProvider, Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, badgeVariants, renderMarkdown, toast } from '../chunk-J3IUFUNR.js';
1
+ export { Badge, Breadcrumb, Checkbox, ConfirmDialog, CurrencyInput, DatePicker, Input, ListView, Markdown, MarkdownEditor, Modal, ModalBody, ModalClose, ModalContent, ModalDescription, ModalFooter, ModalHeader, ModalOverlay, ModalPortal, ModalTitle, ModalTrigger, Popover, PopoverContent, PopoverTrigger, SearchCombobox, SearchSelect, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, Separator, Tabs, TabsContent, TabsList, TabsTrigger, TimePicker, ToastProvider, Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, badgeVariants, renderMarkdown, toast } from '../chunk-R4LPSXTT.js';
2
2
  export { Sheet, SheetBody, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetOverlay, SheetPortal, SheetTitle, SheetTrigger } from '../chunk-75EFDLST.js';
3
- export { Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, DataTable, Dropdown, DropdownCheckboxItem, DropdownContent, DropdownGroup, DropdownItem, DropdownLabel, DropdownPortal, DropdownRadioGroup, DropdownRadioItem, DropdownSeparator, DropdownShortcut, DropdownSub, DropdownSubContent, DropdownSubTrigger, DropdownTrigger, SegmentedControl } from '../chunk-FY7OZNKU.js';
3
+ export { Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, DataTable, Dropdown, DropdownCheckboxItem, DropdownContent, DropdownGroup, DropdownItem, DropdownLabel, DropdownPortal, DropdownRadioGroup, DropdownRadioItem, DropdownSeparator, DropdownShortcut, DropdownSub, DropdownSubContent, DropdownSubTrigger, DropdownTrigger, SegmentedControl, Skeleton, TableSkeleton } from '../chunk-G6OKZ7WL.js';
4
4
  export { Button, buttonVariants } from '../chunk-YRVE4FOD.js';
5
5
  //# sourceMappingURL=index.js.map
6
6
  //# sourceMappingURL=index.js.map
@@ -35,7 +35,9 @@ export interface SearchSelectProps {
35
35
  onCreate?: (query: string) => void | Promise<void>;
36
36
  /** Custom render for each option */
37
37
  renderOption?: (option: SearchSelectOption) => React.ReactNode;
38
- /** Load initial results when dropdown opens (calls onSearch('')) */
38
+ /** Load initial results when dropdown opens (calls onSearch('')). Default
39
+ * true — clicking lists options before any typing; pass false to require
40
+ * a query first (e.g. very large datasets with no cheap top-N). */
39
41
  loadOnOpen?: boolean;
40
42
  /** Additional className for the container */
41
43
  className?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"search-select.d.ts","sourceRoot":"","sources":["../../src/primitives/search-select.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAQ9B,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IACtB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,IAAI,CAAC,EAAE,GAAG,CAAA;CACX;AAED,MAAM,WAAW,iBAAiB;IAChC,mCAAmC;IACnC,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,oEAAoE;IACpE,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,0CAA0C;IAC1C,QAAQ,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,kBAAkB,GAAG,IAAI,KAAK,IAAI,CAAA;IACjE,oEAAoE;IACpE,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,kBAAkB,EAAE,CAAC,GAAG,kBAAkB,EAAE,CAAA;IACjF,uBAAuB;IACvB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,4BAA4B;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,+BAA+B;IAC/B,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,0CAA0C;IAC1C,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,uDAAuD;IACvD,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,+CAA+C;IAC/C,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,+CAA+C;IAC/C,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,sGAAsG;IACtG,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAClD,oCAAoC;IACpC,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,kBAAkB,KAAK,KAAK,CAAC,SAAS,CAAA;IAC9D,oEAAoE;IACpE,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,6CAA6C;IAC7C,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,qBAAqB;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB;AAMD,wBAAgB,YAAY,CAAC,EAC3B,KAAK,EACL,YAAY,EACZ,QAAQ,EACR,QAAQ,EACR,WAAyB,EACzB,KAAK,EACL,QAAQ,EACR,QAAc,EACd,QAAY,EACZ,WAAW,EACX,WAAmB,EACnB,QAAQ,EACR,YAAY,EACZ,UAAU,EACV,SAAS,EACT,QAAQ,GACT,EAAE,iBAAiB,qBAuOnB"}
1
+ {"version":3,"file":"search-select.d.ts","sourceRoot":"","sources":["../../src/primitives/search-select.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAQ9B,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IACtB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,IAAI,CAAC,EAAE,GAAG,CAAA;CACX;AAED,MAAM,WAAW,iBAAiB;IAChC,mCAAmC;IACnC,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,oEAAoE;IACpE,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,0CAA0C;IAC1C,QAAQ,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,kBAAkB,GAAG,IAAI,KAAK,IAAI,CAAA;IACjE,oEAAoE;IACpE,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,kBAAkB,EAAE,CAAC,GAAG,kBAAkB,EAAE,CAAA;IACjF,uBAAuB;IACvB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,4BAA4B;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,+BAA+B;IAC/B,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,0CAA0C;IAC1C,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,uDAAuD;IACvD,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,+CAA+C;IAC/C,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,+CAA+C;IAC/C,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,sGAAsG;IACtG,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAClD,oCAAoC;IACpC,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,kBAAkB,KAAK,KAAK,CAAC,SAAS,CAAA;IAC9D;;wEAEoE;IACpE,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,6CAA6C;IAC7C,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,qBAAqB;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB;AAMD,wBAAgB,YAAY,CAAC,EAC3B,KAAK,EACL,YAAY,EACZ,QAAQ,EACR,QAAQ,EACR,WAAyB,EACzB,KAAK,EACL,QAAQ,EACR,QAAc,EACd,QAAY,EACZ,WAAW,EACX,WAAmB,EACnB,QAAQ,EACR,YAAY,EACZ,UAAiB,EACjB,SAAS,EACT,QAAQ,GACT,EAAE,iBAAiB,qBA6OnB"}
@@ -1,37 +1,37 @@
1
1
  'use strict';
2
2
 
3
- var chunkTDGSY5W6_cjs = require('../chunk-TDGSY5W6.cjs');
3
+ var chunkR4SQ2GVD_cjs = require('../chunk-R4SQ2GVD.cjs');
4
4
  var chunk2P7T6QQK_cjs = require('../chunk-2P7T6QQK.cjs');
5
5
 
6
6
 
7
7
 
8
8
  Object.defineProperty(exports, "ThemeProvider", {
9
9
  enumerable: true,
10
- get: function () { return chunkTDGSY5W6_cjs.ThemeProvider; }
10
+ get: function () { return chunkR4SQ2GVD_cjs.ThemeProvider; }
11
11
  });
12
12
  Object.defineProperty(exports, "createFayzTheme", {
13
13
  enumerable: true,
14
- get: function () { return chunkTDGSY5W6_cjs.createFayzTheme; }
14
+ get: function () { return chunkR4SQ2GVD_cjs.createFayzTheme; }
15
15
  });
16
16
  Object.defineProperty(exports, "createTheme", {
17
17
  enumerable: true,
18
- get: function () { return chunkTDGSY5W6_cjs.createTheme; }
18
+ get: function () { return chunkR4SQ2GVD_cjs.createTheme; }
19
19
  });
20
20
  Object.defineProperty(exports, "darkTheme", {
21
21
  enumerable: true,
22
- get: function () { return chunkTDGSY5W6_cjs.darkTheme; }
22
+ get: function () { return chunkR4SQ2GVD_cjs.darkTheme; }
23
23
  });
24
24
  Object.defineProperty(exports, "fayzThemePresets", {
25
25
  enumerable: true,
26
- get: function () { return chunkTDGSY5W6_cjs.fayzThemePresets; }
26
+ get: function () { return chunkR4SQ2GVD_cjs.fayzThemePresets; }
27
27
  });
28
28
  Object.defineProperty(exports, "lightTheme", {
29
29
  enumerable: true,
30
- get: function () { return chunkTDGSY5W6_cjs.lightTheme; }
30
+ get: function () { return chunkR4SQ2GVD_cjs.lightTheme; }
31
31
  });
32
32
  Object.defineProperty(exports, "useTheme", {
33
33
  enumerable: true,
34
- get: function () { return chunkTDGSY5W6_cjs.useTheme; }
34
+ get: function () { return chunkR4SQ2GVD_cjs.useTheme; }
35
35
  });
36
36
  Object.defineProperty(exports, "fayzUiPreset", {
37
37
  enumerable: true,
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/theme/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,EAAiB,KAAK,kBAAkB,EAAE,KAAK,WAAW,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAA;AAMvH,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;IACzB,gDAAgD;IAChD,SAAS,CAAC,EAAE,kBAAkB,GAAG,IAAI,CAAA;IACrC,yCAAyC;IACzC,WAAW,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,QAAQ,CAAA;CAC1C;AAED,wBAAgB,aAAa,CAAC,EAAE,QAAQ,EAAE,SAAS,EAAE,WAAW,EAAE,EAAE,kBAAkB,GAgBjE,KAAK,CAAC,YAAY,CACtC;AAMD,wBAAgB,QAAQ;;;;;;;EAevB;AAMD,wBAAgB,WAAW,CAAC,SAAS,EAAE,kBAAkB,GAAG,WAAW,CAwBtE;AAGD,YAAY,EAAE,kBAAkB,EAAE,WAAW,EAAE,CAAA;AAC/C,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,CAAA;AAChC,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AACvC,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAA;AAC7D,YAAY,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/theme/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,EAAiB,KAAK,kBAAkB,EAAE,KAAK,WAAW,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAA;AAMvH,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;IACzB,gDAAgD;IAChD,SAAS,CAAC,EAAE,kBAAkB,GAAG,IAAI,CAAA;IACrC,yCAAyC;IACzC,WAAW,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,QAAQ,CAAA;CAC1C;AAED,wBAAgB,aAAa,CAAC,EAAE,QAAQ,EAAE,SAAS,EAAE,WAAW,EAAE,EAAE,kBAAkB,GAgBjE,KAAK,CAAC,YAAY,CACtC;AAMD,wBAAgB,QAAQ;;;;;;;EAevB;AAMD,wBAAgB,WAAW,CAAC,SAAS,EAAE,kBAAkB,GAAG,WAAW,CA2BtE;AAGD,YAAY,EAAE,kBAAkB,EAAE,WAAW,EAAE,CAAA;AAC/C,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,CAAA;AAChC,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AACvC,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAA;AAC7D,YAAY,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAA"}
@@ -1,4 +1,4 @@
1
- export { ThemeProvider, createFayzTheme, createTheme, darkTheme, fayzThemePresets, lightTheme, useTheme } from '../chunk-O5F4LLSL.js';
1
+ export { ThemeProvider, createFayzTheme, createTheme, darkTheme, fayzThemePresets, lightTheme, useTheme } from '../chunk-DYMBFHD7.js';
2
2
  export { fayzUiPreset } from '../chunk-IWBXYV4U.js';
3
3
  //# sourceMappingURL=index.js.map
4
4
  //# sourceMappingURL=index.js.map
package/package.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "fayz": {
4
4
  "status": "beta"
5
5
  },
6
- "version": "0.8.2",
6
+ "version": "0.8.4",
7
7
  "description": "Fayz SDK UI — Radix + Tailwind component library with CRUD engine and layout shells",
8
8
  "type": "module",
9
9
  "main": "./dist/index.cjs",
@@ -84,8 +84,8 @@
84
84
  "sonner": "^1.5.0",
85
85
  "tailwind-merge": "^2.4.0",
86
86
  "zustand": "^4.5.0",
87
- "@fayz-ai/core": "^0.8.1",
88
- "@fayz-ai/auth": "^0.8.1"
87
+ "@fayz-ai/auth": "^0.8.4",
88
+ "@fayz-ai/core": "^0.8.4"
89
89
  },
90
90
  "devDependencies": {
91
91
  "@types/react": "^18.3.0",
@@ -3,6 +3,7 @@ import { Check, Circle } from 'lucide-react'
3
3
  import { cn } from '../utils/cn'
4
4
  import { Card, CardContent, CardHeader, CardTitle, CardDescription } from '../primitives/card'
5
5
  import { Button } from '../primitives/button'
6
+ import { Skeleton } from '../primitives/skeleton'
6
7
  import { renderIcon } from './icon'
7
8
  import type { IconRef } from './types'
8
9
 
@@ -30,6 +31,33 @@ export interface OnboardingWidgetProps {
30
31
  className?: string
31
32
  }
32
33
 
34
+ /** Placeholder mirroring the widget's layout while the async checks resolve. */
35
+ function OnboardingSkeleton({ rows, className }: { rows: number; className?: string }) {
36
+ return (
37
+ <Card className={className} aria-busy="true">
38
+ <CardHeader>
39
+ <Skeleton className="h-5 w-40" />
40
+ <Skeleton className="mt-1.5 h-3.5 w-64 max-w-full" />
41
+ <div className="mt-2 flex items-center gap-3">
42
+ <Skeleton className="h-1.5 flex-1 rounded-full" />
43
+ <Skeleton className="h-3 w-8" />
44
+ </div>
45
+ </CardHeader>
46
+ <CardContent className="space-y-1 pt-0">
47
+ {Array.from({ length: Math.max(rows, 1) }).map((_, i) => (
48
+ <div key={i} className="flex items-center gap-3 px-2 py-2.5">
49
+ <Skeleton className="h-7 w-7 shrink-0 rounded-full" />
50
+ <div className="min-w-0 flex-1 space-y-1.5">
51
+ <Skeleton className="h-3.5 w-1/2" />
52
+ <Skeleton className="h-3 w-3/4" />
53
+ </div>
54
+ </div>
55
+ ))}
56
+ </CardContent>
57
+ </Card>
58
+ )
59
+ }
60
+
33
61
  /** Getting-started checklist ("first steps to set up") with progress. */
34
62
  export function OnboardingWidget({
35
63
  title = 'Getting started', subtitle, steps, onNavigate, hideWhenComplete = true, className,
@@ -37,6 +65,10 @@ export function OnboardingWidget({
37
65
  const [completed, setCompleted] = React.useState<Record<string, boolean>>(() =>
38
66
  Object.fromEntries(steps.map((s) => [s.id, Boolean(s.done)])),
39
67
  )
68
+ // Async checks start unresolved: don't paint until they settle, or an
69
+ // already-onboarded tenant flashes the checklist for the query round-trip
70
+ // before allDone hides it (mount → visible 0/N → resolve → null).
71
+ const [resolved, setResolved] = React.useState(() => steps.every((s) => s.done != null || !s.check))
40
72
 
41
73
  React.useEffect(() => {
42
74
  let cancelled = false
@@ -44,12 +76,20 @@ export function OnboardingWidget({
44
76
  if (s.done != null) return [s.id, s.done] as const
45
77
  if (!s.check) return [s.id, false] as const
46
78
  try { return [s.id, await s.check()] as const } catch { return [s.id, false] as const }
47
- })).then((entries) => { if (!cancelled) setCompleted(Object.fromEntries(entries)) })
79
+ })).then((entries) => {
80
+ if (cancelled) return
81
+ setCompleted(Object.fromEntries(entries))
82
+ setResolved(true)
83
+ })
48
84
  return () => { cancelled = true }
49
85
  }, [steps])
50
86
 
51
87
  const doneCount = steps.filter((s) => completed[s.id]).length
52
88
  const allDone = doneCount === steps.length
89
+ // Hold the card's real shape while the checks settle. Painting the resolved
90
+ // checklist here would flash 0/N at an already-onboarded tenant, and painting
91
+ // nothing collapsed the row and shifted the dashboard on resolve.
92
+ if (!resolved) return <OnboardingSkeleton rows={steps.length} className={className} />
53
93
  if (allDone && hideWhenComplete) return null
54
94
 
55
95
  const runAction = (action: OnboardingStepInput['action']) => {