@vllnt/ui 0.1.11 → 0.2.0-canary.4abf494

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 (100) hide show
  1. package/CHANGELOG.md +104 -0
  2. package/README.md +106 -1
  3. package/dist/components/activity-heatmap/activity-heatmap.js +168 -0
  4. package/dist/components/activity-heatmap/index.js +6 -0
  5. package/dist/components/activity-log/activity-log.js +256 -0
  6. package/dist/components/activity-log/index.js +6 -0
  7. package/dist/components/ai-chat-input/ai-chat-input.js +107 -0
  8. package/dist/components/ai-chat-input/index.js +4 -0
  9. package/dist/components/ai-message-bubble/ai-message-bubble.js +119 -0
  10. package/dist/components/ai-message-bubble/index.js +6 -0
  11. package/dist/components/ai-source-citation/ai-source-citation.js +39 -0
  12. package/dist/components/ai-source-citation/index.js +6 -0
  13. package/dist/components/ai-streaming-text/ai-streaming-text.js +41 -0
  14. package/dist/components/ai-streaming-text/index.js +6 -0
  15. package/dist/components/ai-tool-call-display/ai-tool-call-display.js +93 -0
  16. package/dist/components/ai-tool-call-display/index.js +6 -0
  17. package/dist/components/animated-text/animated-text.js +328 -0
  18. package/dist/components/animated-text/index.js +4 -0
  19. package/dist/components/annotation/annotation.js +49 -0
  20. package/dist/components/annotation/index.js +8 -0
  21. package/dist/components/avatar-group/avatar-group.js +82 -0
  22. package/dist/components/avatar-group/index.js +10 -0
  23. package/dist/components/border-beam/border-beam.js +51 -0
  24. package/dist/components/border-beam/index.js +4 -0
  25. package/dist/components/candlestick-chart/candlestick-chart.js +215 -0
  26. package/dist/components/candlestick-chart/index.js +6 -0
  27. package/dist/components/combobox/combobox.js +130 -0
  28. package/dist/components/combobox/index.js +4 -0
  29. package/dist/components/countdown-timer/countdown-timer.js +184 -0
  30. package/dist/components/countdown-timer/index.js +4 -0
  31. package/dist/components/credit-badge/credit-badge.js +59 -0
  32. package/dist/components/credit-badge/index.js +6 -0
  33. package/dist/components/data-list/data-list.js +99 -0
  34. package/dist/components/data-list/index.js +16 -0
  35. package/dist/components/data-table/data-table.js +242 -0
  36. package/dist/components/data-table/index.js +6 -0
  37. package/dist/components/date-picker/date-picker.js +74 -0
  38. package/dist/components/date-picker/index.js +4 -0
  39. package/dist/components/file-upload/file-upload.js +227 -0
  40. package/dist/components/file-upload/index.js +4 -0
  41. package/dist/components/flashcard/flashcard.js +66 -0
  42. package/dist/components/flashcard/index.js +4 -0
  43. package/dist/components/index.js +172 -1
  44. package/dist/components/live-feed/index.js +4 -0
  45. package/dist/components/live-feed/live-feed.js +168 -0
  46. package/dist/components/market-treemap/index.js +6 -0
  47. package/dist/components/market-treemap/market-treemap.js +100 -0
  48. package/dist/components/marquee/index.js +4 -0
  49. package/dist/components/marquee/marquee.js +98 -0
  50. package/dist/components/metric-gauge/index.js +6 -0
  51. package/dist/components/metric-gauge/metric-gauge.js +213 -0
  52. package/dist/components/model-selector/model-selector.js +11 -2
  53. package/dist/components/number-input/index.js +4 -0
  54. package/dist/components/number-input/number-input.js +167 -0
  55. package/dist/components/number-ticker/index.js +4 -0
  56. package/dist/components/number-ticker/number-ticker.js +63 -0
  57. package/dist/components/order-book/index.js +6 -0
  58. package/dist/components/order-book/order-book.js +128 -0
  59. package/dist/components/password-input/index.js +4 -0
  60. package/dist/components/password-input/password-input.js +45 -0
  61. package/dist/components/plan-badge/index.js +6 -0
  62. package/dist/components/plan-badge/plan-badge.js +67 -0
  63. package/dist/components/rating/index.js +4 -0
  64. package/dist/components/rating/rating.js +121 -0
  65. package/dist/components/role-badge/index.js +6 -0
  66. package/dist/components/role-badge/role-badge.js +50 -0
  67. package/dist/components/scope-selector/index.js +6 -0
  68. package/dist/components/scope-selector/scope-selector.js +336 -0
  69. package/dist/components/severity-badge/index.js +8 -0
  70. package/dist/components/severity-badge/severity-badge.js +163 -0
  71. package/dist/components/sparkline-grid/index.js +6 -0
  72. package/dist/components/sparkline-grid/sparkline-grid.js +92 -0
  73. package/dist/components/spinner/index.js +5 -1
  74. package/dist/components/spinner/unicode-spinner.js +708 -0
  75. package/dist/components/stat-card/index.js +5 -0
  76. package/dist/components/stat-card/stat-card.js +102 -0
  77. package/dist/components/status-board/index.js +6 -0
  78. package/dist/components/status-board/status-board.js +138 -0
  79. package/dist/components/status-indicator/index.js +10 -0
  80. package/dist/components/status-indicator/status-indicator.js +175 -0
  81. package/dist/components/stepper/index.js +4 -0
  82. package/dist/components/stepper/stepper.js +117 -0
  83. package/dist/components/subscription-card/index.js +6 -0
  84. package/dist/components/subscription-card/subscription-card.js +161 -0
  85. package/dist/components/ticker-tape/index.js +6 -0
  86. package/dist/components/ticker-tape/ticker-tape.js +106 -0
  87. package/dist/components/tour/index.js +4 -0
  88. package/dist/components/tour/tour.js +157 -0
  89. package/dist/components/usage-breakdown/index.js +6 -0
  90. package/dist/components/usage-breakdown/usage-breakdown.js +140 -0
  91. package/dist/components/wallet-card/index.js +4 -0
  92. package/dist/components/wallet-card/wallet-card.js +115 -0
  93. package/dist/components/watchlist/index.js +6 -0
  94. package/dist/components/watchlist/watchlist.js +110 -0
  95. package/dist/components/world-clock-bar/index.js +6 -0
  96. package/dist/components/world-clock-bar/world-clock-bar.js +101 -0
  97. package/dist/index.d.ts +1173 -7
  98. package/dist/test-setup.js +19 -0
  99. package/package.json +27 -6
  100. package/styles.css +55 -0
@@ -0,0 +1,708 @@
1
+ import { jsx, jsxs } from "react/jsx-runtime";
2
+ import * as React from "react";
3
+ import { cn } from "../../lib/utils";
4
+ const UNICODE_SPINNER_PRESETS = {
5
+ arc: {
6
+ frames: ["\u25DC", "\u25E0", "\u25DD", "\u25DE", "\u25E1", "\u25DF"],
7
+ interval: 100
8
+ },
9
+ arrow: {
10
+ frames: ["\u2190", "\u2196", "\u2191", "\u2197", "\u2192", "\u2198", "\u2193", "\u2199"],
11
+ interval: 100
12
+ },
13
+ balloon: {
14
+ frames: [".", "o", "O", "o", "."],
15
+ interval: 120
16
+ },
17
+ bounce: {
18
+ frames: ["\u2801", "\u2802", "\u2804", "\u2840", "\u2804", "\u2802"],
19
+ interval: 120
20
+ },
21
+ braille: {
22
+ frames: ["\u280B", "\u2819", "\u2839", "\u2838", "\u283C", "\u2834", "\u2826", "\u2827", "\u2807", "\u280F"],
23
+ interval: 80
24
+ },
25
+ braillewave: {
26
+ frames: ["\u2801\u2802\u2804\u2840", "\u2802\u2804\u2840\u2880", "\u2804\u2840\u2880\u2820", "\u2840\u2880\u2820\u2810", "\u2880\u2820\u2810\u2808", "\u2820\u2810\u2808\u2801", "\u2810\u2808\u2801\u2802", "\u2808\u2801\u2802\u2804"],
27
+ interval: 100
28
+ },
29
+ breathe: {
30
+ frames: [
31
+ "\u2800",
32
+ "\u2802",
33
+ "\u280C",
34
+ "\u2851",
35
+ "\u2895",
36
+ "\u289D",
37
+ "\u28EB",
38
+ "\u28DF",
39
+ "\u28FF",
40
+ "\u28DF",
41
+ "\u28EB",
42
+ "\u289D",
43
+ "\u2895",
44
+ "\u2851",
45
+ "\u280C",
46
+ "\u2802",
47
+ "\u2800"
48
+ ],
49
+ interval: 100
50
+ },
51
+ cascade: {
52
+ frames: [
53
+ "\u2800\u2800\u2800\u2800",
54
+ "\u2800\u2800\u2800\u2800",
55
+ "\u2801\u2800\u2800\u2800",
56
+ "\u280B\u2800\u2800\u2800",
57
+ "\u281E\u2801\u2800\u2800",
58
+ "\u2874\u280B\u2800\u2800",
59
+ "\u28E0\u281E\u2801\u2800",
60
+ "\u2880\u2874\u280B\u2800",
61
+ "\u2800\u28E0\u281E\u2801",
62
+ "\u2800\u2880\u2874\u280B",
63
+ "\u2800\u2800\u28E0\u281E",
64
+ "\u2800\u2800\u2880\u2874",
65
+ "\u2800\u2800\u2800\u28E0",
66
+ "\u2800\u2800\u2800\u2880"
67
+ ],
68
+ interval: 60
69
+ },
70
+ checkerboard: {
71
+ frames: ["\u2895\u2895\u2895", "\u286A\u286A\u286A", "\u288A\u2814\u2861", "\u2861\u288A\u2814"],
72
+ interval: 250
73
+ },
74
+ "circle-halves": {
75
+ frames: ["\u25D0", "\u25D3", "\u25D1", "\u25D2"],
76
+ interval: 50
77
+ },
78
+ "circle-quarters": {
79
+ frames: ["\u25F4", "\u25F7", "\u25F6", "\u25F5"],
80
+ interval: 120
81
+ },
82
+ clock: {
83
+ frames: [
84
+ "\u{1F55B}",
85
+ "\u{1F550}",
86
+ "\u{1F551}",
87
+ "\u{1F552}",
88
+ "\u{1F553}",
89
+ "\u{1F554}",
90
+ "\u{1F555}",
91
+ "\u{1F556}",
92
+ "\u{1F557}",
93
+ "\u{1F558}",
94
+ "\u{1F559}",
95
+ "\u{1F55A}"
96
+ ],
97
+ interval: 100
98
+ },
99
+ columns: {
100
+ frames: [
101
+ "\u2840\u2800\u2800",
102
+ "\u2844\u2800\u2800",
103
+ "\u2846\u2800\u2800",
104
+ "\u2847\u2800\u2800",
105
+ "\u28C7\u2800\u2800",
106
+ "\u28E7\u2800\u2800",
107
+ "\u28F7\u2800\u2800",
108
+ "\u28FF\u2800\u2800",
109
+ "\u28FF\u2840\u2800",
110
+ "\u28FF\u2844\u2800",
111
+ "\u28FF\u2846\u2800",
112
+ "\u28FF\u2847\u2800",
113
+ "\u28FF\u28C7\u2800",
114
+ "\u28FF\u28E7\u2800",
115
+ "\u28FF\u28F7\u2800",
116
+ "\u28FF\u28FF\u2800",
117
+ "\u28FF\u28FF\u2840",
118
+ "\u28FF\u28FF\u2844",
119
+ "\u28FF\u28FF\u2846",
120
+ "\u28FF\u28FF\u2847",
121
+ "\u28FF\u28FF\u28C7",
122
+ "\u28FF\u28FF\u28E7",
123
+ "\u28FF\u28FF\u28F7",
124
+ "\u28FF\u28FF\u28FF",
125
+ "\u28FF\u28FF\u28FF",
126
+ "\u2800\u2800\u2800"
127
+ ],
128
+ interval: 60
129
+ },
130
+ diagswipe: {
131
+ frames: [
132
+ "\u2801\u2800",
133
+ "\u280B\u2800",
134
+ "\u281F\u2801",
135
+ "\u287F\u280B",
136
+ "\u28FF\u281F",
137
+ "\u28FF\u287F",
138
+ "\u28FF\u28FF",
139
+ "\u28FF\u28FF",
140
+ "\u28FE\u28FF",
141
+ "\u28F4\u28FF",
142
+ "\u28E0\u28FE",
143
+ "\u2880\u28F4",
144
+ "\u2800\u28E0",
145
+ "\u2800\u2880",
146
+ "\u2800\u2800",
147
+ "\u2800\u2800"
148
+ ],
149
+ interval: 60
150
+ },
151
+ dna: {
152
+ frames: [
153
+ "\u280B\u2809\u2819\u281A",
154
+ "\u2809\u2819\u281A\u2812",
155
+ "\u2819\u281A\u2812\u2802",
156
+ "\u281A\u2812\u2802\u2802",
157
+ "\u2812\u2802\u2802\u2812",
158
+ "\u2802\u2802\u2812\u2832",
159
+ "\u2802\u2812\u2832\u2834",
160
+ "\u2812\u2832\u2834\u2824",
161
+ "\u2832\u2834\u2824\u2804",
162
+ "\u2834\u2824\u2804\u280B",
163
+ "\u2824\u2804\u280B\u2809",
164
+ "\u2804\u280B\u2809\u2819"
165
+ ],
166
+ interval: 80
167
+ },
168
+ dots: {
169
+ frames: ["\u280B", "\u2819", "\u2839", "\u2838", "\u283C", "\u2834", "\u2826", "\u2827", "\u2807", "\u280F"],
170
+ interval: 80
171
+ },
172
+ dots2: {
173
+ frames: ["\u28FE", "\u28FD", "\u28FB", "\u28BF", "\u287F", "\u28DF", "\u28EF", "\u28F7"],
174
+ interval: 80
175
+ },
176
+ dots3: {
177
+ frames: ["\u280B", "\u2819", "\u281A", "\u281E", "\u2816", "\u2826", "\u2834", "\u2832", "\u2833", "\u2813"],
178
+ interval: 80
179
+ },
180
+ dots4: {
181
+ frames: [
182
+ "\u2804",
183
+ "\u2806",
184
+ "\u2807",
185
+ "\u280B",
186
+ "\u2819",
187
+ "\u2838",
188
+ "\u2830",
189
+ "\u2820",
190
+ "\u2830",
191
+ "\u2838",
192
+ "\u2819",
193
+ "\u280B",
194
+ "\u2807",
195
+ "\u2806"
196
+ ],
197
+ interval: 80
198
+ },
199
+ dots5: {
200
+ frames: [
201
+ "\u280B",
202
+ "\u2819",
203
+ "\u281A",
204
+ "\u2812",
205
+ "\u2802",
206
+ "\u2802",
207
+ "\u2812",
208
+ "\u2832",
209
+ "\u2834",
210
+ "\u2826",
211
+ "\u2816",
212
+ "\u2812",
213
+ "\u2810",
214
+ "\u2810",
215
+ "\u2812",
216
+ "\u2813",
217
+ "\u280B"
218
+ ],
219
+ interval: 80
220
+ },
221
+ dots6: {
222
+ frames: [
223
+ "\u2801",
224
+ "\u2809",
225
+ "\u2819",
226
+ "\u281A",
227
+ "\u2812",
228
+ "\u2802",
229
+ "\u2802",
230
+ "\u2812",
231
+ "\u2832",
232
+ "\u2834",
233
+ "\u2824",
234
+ "\u2804",
235
+ "\u2804",
236
+ "\u2824",
237
+ "\u2834",
238
+ "\u2832",
239
+ "\u2812",
240
+ "\u2802",
241
+ "\u2802",
242
+ "\u2812",
243
+ "\u281A",
244
+ "\u2819",
245
+ "\u2809",
246
+ "\u2801"
247
+ ],
248
+ interval: 80
249
+ },
250
+ dots7: {
251
+ frames: [
252
+ "\u2808",
253
+ "\u2809",
254
+ "\u280B",
255
+ "\u2813",
256
+ "\u2812",
257
+ "\u2810",
258
+ "\u2810",
259
+ "\u2812",
260
+ "\u2816",
261
+ "\u2826",
262
+ "\u2824",
263
+ "\u2820",
264
+ "\u2820",
265
+ "\u2824",
266
+ "\u2826",
267
+ "\u2816",
268
+ "\u2812",
269
+ "\u2810",
270
+ "\u2810",
271
+ "\u2812",
272
+ "\u2813",
273
+ "\u280B",
274
+ "\u2809",
275
+ "\u2808"
276
+ ],
277
+ interval: 80
278
+ },
279
+ dots8: {
280
+ frames: [
281
+ "\u2801",
282
+ "\u2801",
283
+ "\u2809",
284
+ "\u2819",
285
+ "\u281A",
286
+ "\u2812",
287
+ "\u2802",
288
+ "\u2802",
289
+ "\u2812",
290
+ "\u2832",
291
+ "\u2834",
292
+ "\u2824",
293
+ "\u2804",
294
+ "\u2804",
295
+ "\u2824",
296
+ "\u2820",
297
+ "\u2820",
298
+ "\u2824",
299
+ "\u2826",
300
+ "\u2816",
301
+ "\u2812",
302
+ "\u2810",
303
+ "\u2810",
304
+ "\u2812",
305
+ "\u2813",
306
+ "\u280B",
307
+ "\u2809",
308
+ "\u2808",
309
+ "\u2808"
310
+ ],
311
+ interval: 80
312
+ },
313
+ dots9: {
314
+ frames: ["\u28B9", "\u28BA", "\u28BC", "\u28F8", "\u28C7", "\u2867", "\u2857", "\u284F"],
315
+ interval: 80
316
+ },
317
+ dots10: {
318
+ frames: ["\u2884", "\u2882", "\u2881", "\u2841", "\u2848", "\u2850", "\u2860"],
319
+ interval: 80
320
+ },
321
+ dots11: {
322
+ frames: ["\u2801", "\u2802", "\u2804", "\u2840", "\u2880", "\u2820", "\u2810", "\u2808"],
323
+ interval: 100
324
+ },
325
+ dots12: {
326
+ frames: [
327
+ "\u2880\u2800",
328
+ "\u2840\u2800",
329
+ "\u2804\u2800",
330
+ "\u2882\u2800",
331
+ "\u2842\u2800",
332
+ "\u2805\u2800",
333
+ "\u2883\u2800",
334
+ "\u2843\u2800",
335
+ "\u280D\u2800",
336
+ "\u288B\u2800",
337
+ "\u284B\u2800",
338
+ "\u280D\u2801",
339
+ "\u288B\u2801",
340
+ "\u284B\u2801",
341
+ "\u280D\u2809",
342
+ "\u280B\u2809",
343
+ "\u280B\u2809",
344
+ "\u2809\u2819",
345
+ "\u2809\u2819",
346
+ "\u2809\u2829",
347
+ "\u2808\u2899",
348
+ "\u2808\u2859",
349
+ "\u2888\u2829",
350
+ "\u2840\u2899",
351
+ "\u2804\u2859",
352
+ "\u2882\u2829",
353
+ "\u2842\u2898",
354
+ "\u2805\u2858",
355
+ "\u2883\u2828",
356
+ "\u2843\u2890",
357
+ "\u280D\u2850",
358
+ "\u288B\u2820",
359
+ "\u284B\u2880",
360
+ "\u280D\u2841",
361
+ "\u288B\u2801",
362
+ "\u284B\u2801",
363
+ "\u280D\u2809",
364
+ "\u280B\u2809",
365
+ "\u280B\u2809",
366
+ "\u2809\u2819",
367
+ "\u2809\u2819",
368
+ "\u2809\u2829",
369
+ "\u2808\u2899",
370
+ "\u2808\u2859",
371
+ "\u2808\u2829",
372
+ "\u2800\u2899",
373
+ "\u2800\u2859",
374
+ "\u2800\u2829",
375
+ "\u2800\u2898",
376
+ "\u2800\u2858",
377
+ "\u2800\u2828",
378
+ "\u2800\u2890",
379
+ "\u2800\u2850",
380
+ "\u2800\u2820",
381
+ "\u2800\u2880",
382
+ "\u2800\u2840"
383
+ ],
384
+ interval: 80
385
+ },
386
+ dots13: {
387
+ frames: ["\u28FC", "\u28F9", "\u28BB", "\u283F", "\u285F", "\u28CF", "\u28E7", "\u28F6"],
388
+ interval: 80
389
+ },
390
+ dots14: {
391
+ frames: [
392
+ "\u2809\u2809",
393
+ "\u2808\u2819",
394
+ "\u2800\u2839",
395
+ "\u2800\u28B8",
396
+ "\u2800\u28F0",
397
+ "\u2880\u28E0",
398
+ "\u28C0\u28C0",
399
+ "\u28C4\u2840",
400
+ "\u28C6\u2800",
401
+ "\u2847\u2800",
402
+ "\u280F\u2800",
403
+ "\u280B\u2801"
404
+ ],
405
+ interval: 80
406
+ },
407
+ "dots-circle": {
408
+ frames: ["\u288E\u2800", "\u280E\u2801", "\u280A\u2811", "\u2808\u2831", "\u2800\u2871", "\u2880\u2870", "\u2884\u2860", "\u2886\u2840"],
409
+ interval: 80
410
+ },
411
+ "double-arrow": {
412
+ frames: ["\u21D0", "\u21D6", "\u21D1", "\u21D7", "\u21D2", "\u21D8", "\u21D3", "\u21D9"],
413
+ interval: 100
414
+ },
415
+ dqpb: {
416
+ frames: ["d", "q", "p", "b"],
417
+ interval: 100
418
+ },
419
+ earth: {
420
+ frames: ["\u{1F30D}", "\u{1F30E}", "\u{1F30F}"],
421
+ interval: 180
422
+ },
423
+ fillsweep: {
424
+ frames: ["\u28C0\u28C0", "\u28E4\u28E4", "\u28F6\u28F6", "\u28FF\u28FF", "\u28FF\u28FF", "\u28FF\u28FF", "\u28F6\u28F6", "\u28E4\u28E4", "\u28C0\u28C0", "\u2800\u2800", "\u2800\u2800"],
425
+ interval: 100
426
+ },
427
+ "grow-horizontal": {
428
+ frames: ["\u258F", "\u258E", "\u258D", "\u258C", "\u258B", "\u258A", "\u2589", "\u258A", "\u258B", "\u258C", "\u258D", "\u258E"],
429
+ interval: 120
430
+ },
431
+ "grow-vertical": {
432
+ frames: ["\u2581", "\u2583", "\u2584", "\u2585", "\u2586", "\u2587", "\u2586", "\u2585", "\u2584", "\u2583"],
433
+ interval: 120
434
+ },
435
+ hearts: {
436
+ frames: ["\u{1FA77}", "\u{1F9E1}", "\u{1F49B}", "\u{1F49A}", "\u{1F499}", "\u{1FA75}", "\u{1F49C}", "\u{1F90E}", "\u{1F5A4}", "\u{1FA76}", "\u{1F90D}"],
437
+ interval: 120
438
+ },
439
+ helix: {
440
+ frames: [
441
+ "\u288C\u28C9\u288E\u28C9",
442
+ "\u28C9\u2871\u28C9\u2871",
443
+ "\u28C9\u288E\u28C9\u288E",
444
+ "\u2871\u28C9\u2871\u28C9",
445
+ "\u288E\u28C9\u288E\u28C9",
446
+ "\u28C9\u2871\u28C9\u2871",
447
+ "\u28C9\u288E\u28C9\u288E",
448
+ "\u2871\u28C9\u2871\u28C9",
449
+ "\u288E\u28C9\u288E\u28C9",
450
+ "\u28C9\u2871\u28C9\u2871",
451
+ "\u28C9\u288E\u28C9\u288E",
452
+ "\u2871\u28C9\u2871\u28C9",
453
+ "\u288E\u28C9\u288E\u28C9",
454
+ "\u28C9\u2871\u28C9\u2871",
455
+ "\u28C9\u288E\u28C9\u288E",
456
+ "\u2871\u28C9\u2871\u28C9"
457
+ ],
458
+ interval: 80
459
+ },
460
+ moon: {
461
+ frames: ["\u{1F311}", "\u{1F312}", "\u{1F313}", "\u{1F314}", "\u{1F315}", "\u{1F316}", "\u{1F317}", "\u{1F318}"],
462
+ interval: 80
463
+ },
464
+ noise: {
465
+ frames: ["\u2593", "\u2592", "\u2591", " ", "\u2591", "\u2592"],
466
+ interval: 100
467
+ },
468
+ orbit: {
469
+ frames: ["\u2803", "\u2809", "\u2818", "\u2830", "\u28A0", "\u28C0", "\u2844", "\u2806"],
470
+ interval: 100
471
+ },
472
+ point: {
473
+ frames: ["\xB7\xB7\xB7", "\u2022\xB7\xB7", "\xB7\u2022\xB7", "\xB7\xB7\u2022", "\xB7\xB7\xB7"],
474
+ interval: 200
475
+ },
476
+ pulse: {
477
+ frames: ["\u2800\u2836\u2800", "\u2830\u28FF\u2806", "\u28BE\u28C9\u2877", "\u28CF\u2800\u28F9", "\u2841\u2800\u2888"],
478
+ interval: 180
479
+ },
480
+ rain: {
481
+ frames: [
482
+ "\u2881\u2802\u2814\u2808",
483
+ "\u2802\u280C\u2860\u2810",
484
+ "\u2804\u2850\u2880\u2821",
485
+ "\u2848\u2820\u2800\u2882",
486
+ "\u2810\u2880\u2801\u2804",
487
+ "\u2820\u2801\u280A\u2840",
488
+ "\u2881\u2802\u2814\u2808",
489
+ "\u2802\u280C\u2860\u2810",
490
+ "\u2804\u2850\u2880\u2821",
491
+ "\u2848\u2820\u2800\u2882",
492
+ "\u2810\u2880\u2801\u2804",
493
+ "\u2820\u2801\u280A\u2840"
494
+ ],
495
+ interval: 100
496
+ },
497
+ "rolling-line": {
498
+ frames: ["/", "-", "\\", "|", "\\", "-"],
499
+ interval: 80
500
+ },
501
+ sand: {
502
+ frames: [
503
+ "\u2801",
504
+ "\u2802",
505
+ "\u2804",
506
+ "\u2840",
507
+ "\u2848",
508
+ "\u2850",
509
+ "\u2860",
510
+ "\u28C0",
511
+ "\u28C1",
512
+ "\u28C2",
513
+ "\u28C4",
514
+ "\u28CC",
515
+ "\u28D4",
516
+ "\u28E4",
517
+ "\u28E5",
518
+ "\u28E6",
519
+ "\u28EE",
520
+ "\u28F6",
521
+ "\u28F7",
522
+ "\u28FF",
523
+ "\u287F",
524
+ "\u283F",
525
+ "\u289F",
526
+ "\u281F",
527
+ "\u285B",
528
+ "\u281B",
529
+ "\u282B",
530
+ "\u288B",
531
+ "\u280B",
532
+ "\u280D",
533
+ "\u2849",
534
+ "\u2809",
535
+ "\u2811",
536
+ "\u2821",
537
+ "\u2881"
538
+ ],
539
+ interval: 80
540
+ },
541
+ scan: {
542
+ frames: [
543
+ "\u2800\u2800\u2800\u2800",
544
+ "\u2847\u2800\u2800\u2800",
545
+ "\u28FF\u2800\u2800\u2800",
546
+ "\u28B8\u2847\u2800\u2800",
547
+ "\u2800\u28FF\u2800\u2800",
548
+ "\u2800\u28B8\u2847\u2800",
549
+ "\u2800\u2800\u28FF\u2800",
550
+ "\u2800\u2800\u28B8\u2847",
551
+ "\u2800\u2800\u2800\u28FF",
552
+ "\u2800\u2800\u2800\u28B8"
553
+ ],
554
+ interval: 70
555
+ },
556
+ scanline: {
557
+ frames: ["\u2809\u2809\u2809", "\u2813\u2813\u2813", "\u2826\u2826\u2826", "\u28C4\u28C4\u28C4", "\u2826\u2826\u2826", "\u2813\u2813\u2813"],
558
+ interval: 120
559
+ },
560
+ "simple-dots": {
561
+ frames: [". ", ".. ", "...", " "],
562
+ interval: 400
563
+ },
564
+ "simple-dots-scrolling": {
565
+ frames: [". ", ".. ", "...", " ..", " .", " "],
566
+ interval: 200
567
+ },
568
+ snake: {
569
+ frames: [
570
+ "\u28C1\u2840",
571
+ "\u28C9\u2800",
572
+ "\u2849\u2801",
573
+ "\u2809\u2809",
574
+ "\u2808\u2819",
575
+ "\u2800\u281B",
576
+ "\u2810\u281A",
577
+ "\u2812\u2812",
578
+ "\u2816\u2802",
579
+ "\u2836\u2800",
580
+ "\u2826\u2804",
581
+ "\u2824\u2824",
582
+ "\u2820\u28A4",
583
+ "\u2800\u28E4",
584
+ "\u2880\u28E0",
585
+ "\u28C0\u28C0"
586
+ ],
587
+ interval: 80
588
+ },
589
+ sparkle: {
590
+ frames: ["\u2861\u280A\u2894\u2821", "\u280A\u2870\u2861\u2858", "\u2894\u2885\u2808\u28A2", "\u2841\u2882\u2806\u284D", "\u2894\u2828\u2891\u2890", "\u2828\u2851\u2860\u280A"],
591
+ interval: 150
592
+ },
593
+ speaker: {
594
+ frames: ["\u{1F508}", "\u{1F509}", "\u{1F50A}", "\u{1F509}"],
595
+ interval: 160
596
+ },
597
+ "square-corners": {
598
+ frames: ["\u25F0", "\u25F3", "\u25F2", "\u25F1"],
599
+ interval: 180
600
+ },
601
+ toggle: {
602
+ frames: ["\u22B6", "\u22B7"],
603
+ interval: 250
604
+ },
605
+ triangle: {
606
+ frames: ["\u25E2", "\u25E3", "\u25E4", "\u25E5"],
607
+ interval: 50
608
+ },
609
+ wave: {
610
+ frames: ["\u2801\u2802\u2804\u2840", "\u2802\u2804\u2840\u2880", "\u2804\u2840\u2880\u2820", "\u2840\u2880\u2820\u2810", "\u2880\u2820\u2810\u2808", "\u2820\u2810\u2808\u2801", "\u2810\u2808\u2801\u2802", "\u2808\u2801\u2802\u2804"],
611
+ interval: 100
612
+ },
613
+ waverows: {
614
+ frames: [
615
+ "\u2816\u2809\u2809\u2811",
616
+ "\u2860\u2816\u2809\u2809",
617
+ "\u28E0\u2860\u2816\u2809",
618
+ "\u28C4\u28E0\u2860\u2816",
619
+ "\u2822\u28C4\u28E0\u2860",
620
+ "\u2819\u2822\u28C4\u28E0",
621
+ "\u2809\u2819\u2822\u28C4",
622
+ "\u280A\u2809\u2819\u2822",
623
+ "\u281C\u280A\u2809\u2819",
624
+ "\u2864\u281C\u280A\u2809",
625
+ "\u28C0\u2864\u281C\u280A",
626
+ "\u28A4\u28C0\u2864\u281C",
627
+ "\u2823\u28A4\u28C0\u2864",
628
+ "\u2811\u2823\u28A4\u28C0",
629
+ "\u2809\u2811\u2823\u28A4",
630
+ "\u280B\u2809\u2811\u2823"
631
+ ],
632
+ interval: 90
633
+ },
634
+ weather: {
635
+ frames: ["\u2600\uFE0F", "\u{1F324}", "\u26C5\uFE0F", "\u{1F325}", "\u2601\uFE0F", "\u{1F327}", "\u{1F328}", "\u26C8"],
636
+ interval: 100
637
+ }
638
+ };
639
+ const UNICODE_SPINNER_ANIMATIONS = Object.keys(
640
+ UNICODE_SPINNER_PRESETS
641
+ );
642
+ const UNICODE_SPINNER_SIZE_CLASSES = {
643
+ lg: "text-2xl",
644
+ md: "text-lg",
645
+ sm: "text-sm"
646
+ };
647
+ const UnicodeSpinner = React.forwardRef(
648
+ ({
649
+ animation = "braille",
650
+ className,
651
+ interval,
652
+ label,
653
+ paused = false,
654
+ size = "md",
655
+ ...props
656
+ }, ref) => {
657
+ const preset = UNICODE_SPINNER_PRESETS[animation];
658
+ const resolvedInterval = interval ?? preset.interval;
659
+ const [frameIndex, setFrameIndex] = React.useState(0);
660
+ React.useEffect(() => {
661
+ setFrameIndex(0);
662
+ }, [animation]);
663
+ React.useEffect(() => {
664
+ if (paused) {
665
+ return;
666
+ }
667
+ const timer = window.setInterval(() => {
668
+ setFrameIndex((current) => (current + 1) % preset.frames.length);
669
+ }, resolvedInterval);
670
+ return () => {
671
+ window.clearInterval(timer);
672
+ };
673
+ }, [paused, preset.frames.length, resolvedInterval]);
674
+ const frame = preset.frames[frameIndex] ?? preset.frames[0] ?? "\u280B";
675
+ const accessibleLabel = label ? `Loading ${label}` : "Loading";
676
+ return /* @__PURE__ */ jsxs(
677
+ "span",
678
+ {
679
+ className: cn(
680
+ "inline-flex items-center gap-2 font-mono leading-none text-foreground",
681
+ UNICODE_SPINNER_SIZE_CLASSES[size],
682
+ className
683
+ ),
684
+ ref,
685
+ role: "status",
686
+ ...props,
687
+ children: [
688
+ /* @__PURE__ */ jsx(
689
+ "span",
690
+ {
691
+ "aria-hidden": "true",
692
+ className: "inline-block min-w-[1em] whitespace-pre",
693
+ children: frame
694
+ }
695
+ ),
696
+ label ? /* @__PURE__ */ jsx("span", { className: "text-sm font-medium text-foreground", children: label }) : null,
697
+ /* @__PURE__ */ jsx("span", { className: "sr-only", children: accessibleLabel })
698
+ ]
699
+ }
700
+ );
701
+ }
702
+ );
703
+ UnicodeSpinner.displayName = "UnicodeSpinner";
704
+ export {
705
+ UNICODE_SPINNER_ANIMATIONS,
706
+ UNICODE_SPINNER_PRESETS,
707
+ UnicodeSpinner
708
+ };
@@ -0,0 +1,5 @@
1
+ import { StatCard, statCardVariants } from "./stat-card";
2
+ export {
3
+ StatCard,
4
+ statCardVariants
5
+ };