@vtx-ui/react 0.0.1-beta.12 → 0.0.1-beta.14

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 (82) hide show
  1. package/README.md +865 -103
  2. package/dist/index.cjs.js +1 -1
  3. package/dist/index.cjs.js.map +1 -1
  4. package/dist/index.esm.js +1 -1
  5. package/dist/index.esm.js.map +1 -1
  6. package/dist/types/components/Autocomplete/Autocomplete.d.ts +173 -0
  7. package/dist/types/components/Autocomplete/index.d.ts +2 -0
  8. package/dist/types/components/DatePicker/Calendar.d.ts +15 -0
  9. package/dist/types/components/DatePicker/DatePicker.d.ts +99 -0
  10. package/dist/types/components/DatePicker/DateRangePicker.d.ts +114 -0
  11. package/dist/types/components/DatePicker/index.d.ts +6 -0
  12. package/dist/types/components/FormControl/FormControl.d.ts +77 -0
  13. package/dist/types/components/FormControl/index.d.ts +3 -0
  14. package/dist/types/components/Image/Image.d.ts +14 -0
  15. package/dist/types/components/Image/index.d.ts +2 -0
  16. package/dist/types/components/Link/Link.d.ts +5 -0
  17. package/dist/types/components/Navbar/Navbar.d.ts +236 -0
  18. package/dist/types/components/Navbar/index.d.ts +2 -0
  19. package/dist/types/components/RichTextEditor/RichTextEditor.d.ts +153 -0
  20. package/dist/types/components/RichTextEditor/index.d.ts +2 -0
  21. package/dist/types/components/Text/Text.d.ts +9 -3
  22. package/dist/types/components/Textarea/Textarea.d.ts +81 -0
  23. package/dist/types/components/Textarea/index.d.ts +3 -0
  24. package/dist/types/components/Widget/IntelligentGrid.d.ts +15 -0
  25. package/dist/types/components/Widget/Widget.d.ts +9 -0
  26. package/dist/types/components/Widget/index.d.ts +16 -0
  27. package/dist/types/components/Widget/renderers/CarouselWidget.d.ts +40 -0
  28. package/dist/types/components/Widget/renderers/ContentBlockWidget.d.ts +56 -0
  29. package/dist/types/components/Widget/renderers/ContentBlockWidget.stories.d.ts +24 -0
  30. package/dist/types/components/Widget/renderers/GridCarouselWidget.d.ts +35 -0
  31. package/dist/types/components/Widget/renderers/HeaderWidget.d.ts +18 -0
  32. package/dist/types/components/Widget/renderers/ImageWidget.d.ts +69 -0
  33. package/dist/types/components/Widget/renderers/ImageWidget.stories.d.ts +11 -0
  34. package/dist/types/components/Widget/renderers/InfoWidget.d.ts +18 -0
  35. package/dist/types/components/Widget/renderers/ListWidget.d.ts +18 -0
  36. package/dist/types/components/Widget/renderers/MetricWidget.d.ts +18 -0
  37. package/dist/types/components/Widget/renderers/NavbarWidget.d.ts +16 -0
  38. package/dist/types/components/Widget/renderers/OrderWidget.d.ts +8 -0
  39. package/dist/types/components/Widget/renderers/ProductWidget.d.ts +8 -0
  40. package/dist/types/components/Widget/renderers/TestimonialWidget.d.ts +14 -0
  41. package/dist/types/components/Widget/renderers/TextWidget.d.ts +18 -0
  42. package/dist/types/components/Widget/types.d.ts +629 -0
  43. package/dist/types/icons/IconComponents.d.ts +4 -0
  44. package/dist/types/index.d.ts +19 -5
  45. package/dist/types/stories/components/Autocomplete.stories.d.ts +20 -0
  46. package/dist/types/stories/components/CarouselWidget.stories.d.ts +11 -0
  47. package/dist/types/stories/components/ContentBlockWidget.stories.d.ts +24 -0
  48. package/dist/types/stories/components/DatePicker.stories.d.ts +69 -0
  49. package/dist/types/stories/components/FormControl.stories.d.ts +57 -0
  50. package/dist/types/stories/components/GridCarouselWidget.stories.d.ts +17 -0
  51. package/dist/types/stories/components/HeaderWidget.stories.d.ts +10 -0
  52. package/dist/types/stories/components/InfoWidget.stories.d.ts +24 -0
  53. package/dist/types/stories/components/ListWidget.stories.d.ts +10 -0
  54. package/dist/types/stories/components/MetricWidget.stories.d.ts +12 -0
  55. package/dist/types/stories/components/OrderWidget.stories.d.ts +12 -0
  56. package/dist/types/stories/components/ProductWidget.stories.d.ts +13 -0
  57. package/dist/types/stories/components/RichTextEditor.stories.d.ts +22 -0
  58. package/dist/types/stories/components/TestimonialWidget.stories.d.ts +47 -0
  59. package/dist/types/stories/components/TextWidget.stories.d.ts +10 -0
  60. package/dist/types/stories/components/Textarea.stories.d.ts +21 -0
  61. package/dist/types/stories/components/Toast.stories.d.ts +56 -13
  62. package/dist/types/stories/components/Widget.stories.d.ts +10 -0
  63. package/dist/types/stories/widgets/DashboardCard.stories.d.ts +58 -0
  64. package/dist/types/stories/widgets/InfoCard.stories.d.ts +1 -4
  65. package/dist/types/stories/widgets/InfoListCard.stories.d.ts +3 -15
  66. package/dist/types/stories/widgets/InfoText.stories.d.ts +1 -19
  67. package/dist/types/stories/widgets/MetricCard.stories.d.ts +27 -0
  68. package/dist/types/stories/widgets/OrderCard.stories.d.ts +3 -9
  69. package/dist/types/stories/widgets/OrderConfirmation.stories.d.ts +1 -24
  70. package/dist/types/stories/widgets/OrderDetails.stories.d.ts +3 -7
  71. package/dist/types/stories/widgets/ProductCard.stories.d.ts +1 -15
  72. package/dist/types/theme/ThemeProvider.d.ts +14 -0
  73. package/dist/types/utils/parseClass.d.ts +2 -0
  74. package/dist/types/widgets/DashboardCard/DashboardCard.d.ts +275 -0
  75. package/dist/types/widgets/DashboardCard/index.d.ts +2 -0
  76. package/dist/types/widgets/MetricCard/MetricCard.d.ts +106 -0
  77. package/dist/types/widgets/MetricCard/index.d.ts +2 -0
  78. package/dist/types/widgets/Navbar/Navbar.d.ts +308 -0
  79. package/dist/types/widgets/Navbar/Navbar.stories.d.ts +23 -0
  80. package/dist/types/widgets/Navbar/index.d.ts +2 -0
  81. package/dist/types/widgets/OrderCard/OrderCard.d.ts +1 -0
  82. package/package.json +2 -1
@@ -0,0 +1,629 @@
1
+ import React from 'react';
2
+ export type WidgetType = 'metric' | 'info' | 'product' | 'order' | 'list' | 'text' | 'header' | 'carousel' | 'image' | 'testimonial' | 'gridCarousel' | 'navbar' | 'contentBlock';
3
+ /**
4
+ * WidgetTheme - all available theme options
5
+ */
6
+ export type WidgetTheme = 'minimal' | 'modern' | 'professional' | 'compact' | 'detailed' | 'card' | 'inline' | 'hero' | 'base' | 'two-row' | 'centered' | 'editorial' | 'ecommerce' | 'creative' | 'luxury';
7
+ export type GridConfig = {
8
+ mobile?: number;
9
+ tablet?: number;
10
+ desktop?: number;
11
+ auto?: boolean;
12
+ spacing?: 'none' | 'sm' | 'md' | 'lg';
13
+ align?: 'start' | 'center' | 'end' | 'stretch';
14
+ };
15
+ export type WidgetVariant = 'primary' | 'secondary' | 'success' | 'danger' | 'error' | 'warning' | 'info' | 'neutral';
16
+ /**
17
+ * Base Widget Data - Contains actual content/information to display
18
+ */
19
+ export interface BaseWidgetData {
20
+ id?: string;
21
+ title?: React.ReactNode;
22
+ subtitle?: React.ReactNode;
23
+ description?: React.ReactNode;
24
+ icon?: React.ReactNode;
25
+ image?: string;
26
+ badge?: {
27
+ text: React.ReactNode;
28
+ variant?: WidgetVariant;
29
+ };
30
+ action?: {
31
+ label: React.ReactNode;
32
+ onClick?: () => void;
33
+ href?: string;
34
+ variant?: 'primary' | 'secondary' | 'success' | 'danger' | 'warning' | 'ghost' | 'outline';
35
+ };
36
+ metadata?: Record<string, React.ReactNode>;
37
+ }
38
+ /**
39
+ * Base Widget Settings - Contains configuration options and appearance settings
40
+ */
41
+ export interface BaseWidgetSettings {
42
+ theme?: WidgetTheme;
43
+ variant?: WidgetVariant;
44
+ size?: 'sm' | 'md' | 'lg';
45
+ className?: string;
46
+ style?: React.CSSProperties;
47
+ showDividers?: boolean;
48
+ showIcon?: boolean;
49
+ showBadge?: boolean;
50
+ showActions?: boolean;
51
+ }
52
+ /**
53
+ * Metric Widget Data - The actual metric values and content
54
+ */
55
+ export interface MetricWidgetData extends BaseWidgetData {
56
+ value: React.ReactNode;
57
+ label?: React.ReactNode;
58
+ trend?: {
59
+ direction: 'up' | 'down' | 'stable';
60
+ value: number;
61
+ label?: string;
62
+ };
63
+ target?: {
64
+ value: React.ReactNode;
65
+ label?: React.ReactNode;
66
+ };
67
+ progress?: number;
68
+ }
69
+ /**
70
+ * Metric Widget Settings - Display and behavior options
71
+ */
72
+ export interface MetricWidgetSettings extends BaseWidgetSettings {
73
+ showTrend?: boolean;
74
+ showTarget?: boolean;
75
+ showProgress?: boolean;
76
+ progressType?: 'bar' | 'circular' | 'none';
77
+ animateValue?: boolean;
78
+ }
79
+ /**
80
+ * Info Widget Data - Information content to display
81
+ */
82
+ export interface InfoWidgetData extends BaseWidgetData {
83
+ text: React.ReactNode;
84
+ subText?: React.ReactNode;
85
+ }
86
+ /**
87
+ * Info Widget Settings - Display options
88
+ */
89
+ export interface InfoWidgetSettings extends BaseWidgetSettings {
90
+ iconVariant?: WidgetVariant;
91
+ layout?: 'horizontal' | 'vertical';
92
+ alignment?: 'left' | 'center' | 'right';
93
+ }
94
+ /**
95
+ * Product Widget Data - Product information
96
+ */
97
+ export interface ProductWidgetData extends BaseWidgetData {
98
+ name: string;
99
+ price: number | string;
100
+ originalPrice?: number | string;
101
+ category?: string;
102
+ rating?: number;
103
+ reviews?: number;
104
+ inStock?: boolean;
105
+ tags?: string[];
106
+ }
107
+ /**
108
+ * Product Widget Settings - Display and layout options
109
+ */
110
+ export interface ProductWidgetSettings extends BaseWidgetSettings {
111
+ showRating?: boolean;
112
+ showCategory?: boolean;
113
+ showTags?: boolean;
114
+ imagePosition?: 'top' | 'left' | 'right';
115
+ cardStyle?: 'elevated' | 'outlined' | 'flat';
116
+ }
117
+ /**
118
+ * Order Widget Data - Order information
119
+ */
120
+ export interface OrderWidgetData extends BaseWidgetData {
121
+ id: string;
122
+ total: number | string;
123
+ status: string;
124
+ date?: string | Date;
125
+ customer?: {
126
+ name?: string;
127
+ email?: string;
128
+ phone?: string;
129
+ };
130
+ items?: Array<{
131
+ name: string;
132
+ quantity?: number;
133
+ price?: number | string;
134
+ image?: string;
135
+ }>;
136
+ shippingAddress?: {
137
+ street: string;
138
+ city: string;
139
+ state: string;
140
+ zipCode: string;
141
+ country?: string;
142
+ };
143
+ subtotal?: number | string;
144
+ tax?: number | string;
145
+ shipping?: number | string;
146
+ discount?: number | string;
147
+ currency?: string;
148
+ trackingNumber?: string;
149
+ actions?: Array<{
150
+ label: React.ReactNode;
151
+ onClick?: () => void;
152
+ href?: string;
153
+ variant?: 'primary' | 'secondary' | 'ghost' | 'outlined';
154
+ }>;
155
+ }
156
+ /**
157
+ * Order Widget Settings - Display configuration
158
+ */
159
+ export interface OrderWidgetSettings extends BaseWidgetSettings {
160
+ showCustomer?: boolean;
161
+ showItems?: boolean;
162
+ showAddress?: boolean;
163
+ showBreakdown?: boolean;
164
+ compact?: boolean;
165
+ }
166
+ /**
167
+ * List Widget Data - List content
168
+ */
169
+ export interface ListWidgetData extends BaseWidgetData {
170
+ items: Array<{
171
+ id?: string;
172
+ title: React.ReactNode;
173
+ subtitle?: React.ReactNode;
174
+ description?: React.ReactNode;
175
+ avatar?: string | {
176
+ src: string;
177
+ alt?: string;
178
+ variant?: 'circular' | 'square' | 'rounded';
179
+ };
180
+ badge?: {
181
+ text: React.ReactNode;
182
+ variant?: WidgetVariant;
183
+ };
184
+ metadata?: Record<string, React.ReactNode>;
185
+ actions?: Array<{
186
+ label: React.ReactNode;
187
+ onClick?: () => void;
188
+ href?: string;
189
+ variant?: 'primary' | 'secondary' | 'ghost' | 'outlined';
190
+ }>;
191
+ }>;
192
+ }
193
+ /**
194
+ * List Widget Settings - Display and layout configuration
195
+ */
196
+ export interface ListWidgetSettings extends BaseWidgetSettings {
197
+ showDividers?: boolean;
198
+ maxItems?: number;
199
+ itemsPerPage?: number;
200
+ showPagination?: boolean;
201
+ layout?: 'default' | 'compact' | 'comfortable';
202
+ }
203
+ /**
204
+ * Text Widget Data - Text content
205
+ */
206
+ export interface TextWidgetData extends BaseWidgetData {
207
+ content?: React.ReactNode;
208
+ caption?: React.ReactNode;
209
+ actions?: Array<{
210
+ label: React.ReactNode;
211
+ onClick?: () => void;
212
+ href?: string;
213
+ variant?: WidgetVariant;
214
+ type?: 'button' | 'link';
215
+ }>;
216
+ }
217
+ /**
218
+ * Text Widget Settings - Typography and styling options
219
+ */
220
+ export interface TextWidgetSettings extends Omit<BaseWidgetSettings, 'variant'> {
221
+ variant?: 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6' | 'body';
222
+ alignment?: 'left' | 'center' | 'right';
223
+ titleColor?: string;
224
+ contentColor?: string;
225
+ captionColor?: string;
226
+ backgroundColor?: string;
227
+ }
228
+ /**
229
+ * Header Widget Data - Header content
230
+ */
231
+ export interface HeaderWidgetData extends BaseWidgetData {
232
+ breadcrumbs?: Array<{
233
+ label: React.ReactNode;
234
+ href?: string;
235
+ onClick?: () => void;
236
+ }>;
237
+ avatar?: string | {
238
+ src: string;
239
+ alt?: string;
240
+ variant?: 'circular' | 'square' | 'rounded';
241
+ };
242
+ badges?: Array<{
243
+ text: React.ReactNode;
244
+ variant?: WidgetVariant;
245
+ }>;
246
+ actions?: Array<{
247
+ label: React.ReactNode;
248
+ onClick?: () => void;
249
+ href?: string;
250
+ variant?: WidgetVariant;
251
+ type?: 'button' | 'link';
252
+ }>;
253
+ }
254
+ /**
255
+ * Header Widget Settings - Layout and styling options
256
+ */
257
+ export interface HeaderWidgetSettings extends BaseWidgetSettings {
258
+ showBreadcrumbs?: boolean;
259
+ showAvatar?: boolean;
260
+ layout?: 'default' | 'centered' | 'split';
261
+ sticky?: boolean;
262
+ backgroundColor?: string;
263
+ }
264
+ /**
265
+ * Carousel Widget Data - Slide content
266
+ */
267
+ export interface CarouselWidgetData extends BaseWidgetData {
268
+ slides: Array<{
269
+ id: string;
270
+ image: {
271
+ src: string;
272
+ alt: string;
273
+ width?: number;
274
+ height?: number;
275
+ priority?: boolean;
276
+ };
277
+ caption?: {
278
+ heading?: string;
279
+ subheading?: string;
280
+ description?: string;
281
+ buttonText?: string;
282
+ buttonUrl?: string;
283
+ position?: 'left' | 'center' | 'right';
284
+ };
285
+ seo?: {
286
+ structuredData?: Record<string, any>;
287
+ };
288
+ }>;
289
+ }
290
+ /**
291
+ * Carousel Widget Settings - Carousel behavior and appearance
292
+ */
293
+ export interface CarouselWidgetSettings extends BaseWidgetSettings {
294
+ swiperConfig?: {
295
+ navigation?: {
296
+ enabled: boolean;
297
+ prevEl?: string;
298
+ nextEl?: string;
299
+ };
300
+ pagination?: {
301
+ enabled: boolean;
302
+ clickable?: boolean;
303
+ type?: 'bullets' | 'fraction' | 'progressbar';
304
+ };
305
+ autoplay?: {
306
+ enabled: boolean;
307
+ delay?: number;
308
+ disableOnInteraction?: boolean;
309
+ pauseOnMouseEnter?: boolean;
310
+ };
311
+ loop?: boolean;
312
+ effect?: 'slide' | 'fade' | 'cube' | 'flip' | 'coverflow';
313
+ speed?: number;
314
+ };
315
+ overlayTheme?: 'dark' | 'light';
316
+ height?: string;
317
+ minHeight?: string;
318
+ maxHeight?: string;
319
+ showOverlay?: boolean;
320
+ loadingPlaceholder?: boolean;
321
+ hideNavigationOnMobile?: boolean;
322
+ buttonSize?: 'sm' | 'md' | 'lg';
323
+ buttonVariant?: 'primary' | 'secondary' | 'outline' | 'ghost' | 'danger' | 'success' | 'warning';
324
+ }
325
+ import type { ButtonProps } from '../Button/Button';
326
+ /**
327
+ * Image Widget Data - Image content
328
+ */
329
+ export interface ImageWidgetData extends BaseWidgetData {
330
+ src: string;
331
+ alt: string;
332
+ heading?: string;
333
+ subHeading?: string;
334
+ description?: string;
335
+ ctaLabel?: string;
336
+ ctaUrl?: string;
337
+ onCtaClick?: () => void;
338
+ }
339
+ /**
340
+ * Image Widget Settings - Display options
341
+ */
342
+ export interface ImageWidgetSettings extends BaseWidgetSettings {
343
+ overlayTheme?: 'dark' | 'light';
344
+ ctaVariant?: ButtonProps['variant'];
345
+ aspectRatio?: string;
346
+ objectFit?: 'cover' | 'contain' | 'fill' | 'none';
347
+ }
348
+ /**
349
+ * Testimonial Widget Data - Testimonial content
350
+ */
351
+ export interface TestimonialWidgetData extends BaseWidgetData {
352
+ testimonials: Array<{
353
+ id?: string;
354
+ content: React.ReactNode;
355
+ author: {
356
+ name: string;
357
+ role?: string;
358
+ company?: string;
359
+ avatar?: string;
360
+ };
361
+ rating?: number;
362
+ date?: string;
363
+ }>;
364
+ showNavigation?: boolean;
365
+ showDots?: boolean;
366
+ }
367
+ /**
368
+ * Testimonial Widget Settings - Display configuration
369
+ */
370
+ export interface TestimonialWidgetSettings extends BaseWidgetSettings {
371
+ showNavigation?: boolean;
372
+ showDots?: boolean;
373
+ autoplay?: boolean;
374
+ autoplayDelay?: number;
375
+ slidesPerView?: number;
376
+ }
377
+ /**
378
+ * Navbar Widget Data - Navigation content
379
+ */
380
+ export interface NavbarWidgetData extends BaseWidgetData {
381
+ logo?: React.ReactNode;
382
+ navItems?: Array<{
383
+ id: string;
384
+ label: React.ReactNode;
385
+ href?: string;
386
+ icon?: React.ReactNode;
387
+ children?: Array<{
388
+ id: string;
389
+ label: React.ReactNode;
390
+ href?: string;
391
+ badge?: React.ReactNode;
392
+ onClick?: () => void;
393
+ active?: boolean;
394
+ disabled?: boolean;
395
+ description?: React.ReactNode;
396
+ icon?: React.ReactNode;
397
+ }>;
398
+ onClick?: () => void;
399
+ active?: boolean;
400
+ disabled?: boolean;
401
+ badge?: React.ReactNode;
402
+ megaMenu?: boolean;
403
+ megaMenuColumns?: Array<{
404
+ title?: React.ReactNode;
405
+ items: Array<{
406
+ id: string;
407
+ label: React.ReactNode;
408
+ description?: React.ReactNode;
409
+ href?: string;
410
+ icon?: React.ReactNode;
411
+ badge?: React.ReactNode;
412
+ onClick?: () => void;
413
+ active?: boolean;
414
+ }>;
415
+ }>;
416
+ }>;
417
+ actions?: React.ReactNode;
418
+ topBar?: {
419
+ content?: React.ReactNode;
420
+ leftContent?: React.ReactNode;
421
+ rightContent?: React.ReactNode;
422
+ variant?: 'subtle' | 'bold' | 'accent' | 'dark' | 'gradient';
423
+ dismissible?: boolean;
424
+ onDismiss?: () => void;
425
+ };
426
+ }
427
+ /**
428
+ * Navbar Widget Settings - Layout and behavior options
429
+ */
430
+ export interface NavbarWidgetSettings extends BaseWidgetSettings {
431
+ searchEnabled?: boolean;
432
+ searchPlaceholder?: string;
433
+ onSearch?: (query: string) => void;
434
+ onLogoClick?: () => void;
435
+ elevated?: boolean;
436
+ sticky?: boolean;
437
+ fullWidth?: boolean;
438
+ layout?: 'single-row' | 'two-row' | 'centered';
439
+ twoRowBottomStyle?: 'default' | 'divider' | 'dark-bottom' | 'gradient-bottom' | 'elevated-bottom';
440
+ scrollBehavior?: 'transparent-to-solid';
441
+ scrollThreshold?: number;
442
+ onScrollStateChange?: (scrolled: boolean) => void;
443
+ responsive?: boolean;
444
+ mobileOnly?: boolean;
445
+ }
446
+ /**
447
+ * Grid Carousel Widget Data - Carousel items
448
+ */
449
+ export interface GridCarouselWidgetData {
450
+ items: React.ReactNode[];
451
+ }
452
+ /**
453
+ * Grid Carousel Widget Settings - Carousel configuration
454
+ */
455
+ export interface GridCarouselWidgetSettings {
456
+ itemsPerView?: {
457
+ mobile?: number;
458
+ tablet?: number;
459
+ desktop?: number;
460
+ };
461
+ gap?: number | string;
462
+ autoplay?: boolean;
463
+ autoplayDelay?: number;
464
+ showNavigation?: boolean;
465
+ showPagination?: boolean;
466
+ scrollBehavior?: 'page' | 'item';
467
+ borderRadius?: boolean;
468
+ className?: string;
469
+ style?: React.CSSProperties;
470
+ }
471
+ export interface ContentBlockWidgetData extends Omit<BaseWidgetData, 'metadata'> {
472
+ media?: {
473
+ type?: 'image' | 'avatar' | 'icon' | 'video' | 'gallery' | 'logo' | 'illustration';
474
+ src?: string;
475
+ alt?: string;
476
+ items?: Array<{
477
+ src: string;
478
+ alt: string;
479
+ caption?: React.ReactNode;
480
+ }>;
481
+ icon?: React.ReactNode;
482
+ iconSize?: 'sm' | 'md' | 'lg' | 'xl';
483
+ videoUrl?: string;
484
+ poster?: string;
485
+ aspectRatio?: '1:1' | '4:3' | '16:9' | '3:2' | '21:9' | 'auto';
486
+ objectFit?: 'cover' | 'contain' | 'fill' | 'none' | 'scale-down';
487
+ rounded?: boolean | 'sm' | 'md' | 'lg' | 'xl' | 'full';
488
+ shadow?: boolean | 'sm' | 'md' | 'lg' | 'xl';
489
+ border?: boolean | 'sm' | 'md' | 'lg';
490
+ zoom?: boolean;
491
+ };
492
+ content?: {
493
+ eyebrow?: React.ReactNode;
494
+ heading?: React.ReactNode;
495
+ subheading?: React.ReactNode;
496
+ body?: React.ReactNode;
497
+ caption?: React.ReactNode;
498
+ footnote?: React.ReactNode;
499
+ eyebrowVariant?: 'overline' | 'caption' | 'body2';
500
+ headingVariant?: 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6';
501
+ subheadingVariant?: 'h3' | 'h4' | 'h5' | 'h6' | 'subtitle1' | 'subtitle2';
502
+ bodyVariant?: 'body1' | 'body2';
503
+ list?: Array<{
504
+ text: React.ReactNode;
505
+ icon?: React.ReactNode;
506
+ checked?: boolean;
507
+ }>;
508
+ listType?: 'bullet' | 'number' | 'check' | 'icon' | 'none';
509
+ };
510
+ product?: {
511
+ price?: number | string;
512
+ comparePrice?: number | string;
513
+ currency?: string;
514
+ sku?: string;
515
+ stock?: number | 'in-stock' | 'out-of-stock' | 'limited';
516
+ rating?: number;
517
+ reviewCount?: number;
518
+ discount?: string;
519
+ };
520
+ tags?: Array<{
521
+ text: string;
522
+ variant?: WidgetVariant;
523
+ icon?: React.ReactNode;
524
+ href?: string;
525
+ }>;
526
+ stats?: Array<{
527
+ value: React.ReactNode;
528
+ label: React.ReactNode;
529
+ icon?: React.ReactNode;
530
+ variant?: WidgetVariant;
531
+ }>;
532
+ author?: {
533
+ name: string;
534
+ role?: string;
535
+ company?: string;
536
+ avatar?: string;
537
+ social?: Array<{
538
+ platform: string;
539
+ url: string;
540
+ icon?: React.ReactNode;
541
+ }>;
542
+ };
543
+ metadata?: Array<{
544
+ label: string;
545
+ value: React.ReactNode;
546
+ icon?: React.ReactNode;
547
+ }>;
548
+ actions?: Array<{
549
+ label: React.ReactNode;
550
+ onClick?: () => void;
551
+ href?: string;
552
+ variant?: WidgetVariant | 'outline' | 'ghost';
553
+ type?: 'button' | 'link' | 'icon';
554
+ icon?: React.ReactNode;
555
+ iconPosition?: 'left' | 'right';
556
+ size?: 'sm' | 'md' | 'lg';
557
+ fullWidth?: boolean;
558
+ }>;
559
+ colors?: {
560
+ eyebrow?: string;
561
+ heading?: string;
562
+ subheading?: string;
563
+ body?: string;
564
+ caption?: string;
565
+ background?: string;
566
+ accent?: string;
567
+ };
568
+ quote?: {
569
+ text: React.ReactNode;
570
+ author?: string;
571
+ };
572
+ timeline?: {
573
+ date?: string;
574
+ icon?: React.ReactNode;
575
+ };
576
+ }
577
+ /**
578
+ * Grid Widget Data - Collection of widgets
579
+ */
580
+ export interface GridWidgetData {
581
+ widgets: WidgetConfig[];
582
+ }
583
+ /**
584
+ * Grid Widget Settings - Grid layout configuration
585
+ */
586
+ export interface GridWidgetSettings {
587
+ gap?: 'none' | 'sm' | 'md' | 'lg';
588
+ grid?: GridConfig;
589
+ }
590
+ export type WidgetData = MetricWidgetData | InfoWidgetData | ProductWidgetData | OrderWidgetData | ListWidgetData | TextWidgetData | HeaderWidgetData | CarouselWidgetData | ImageWidgetData | TestimonialWidgetData | GridCarouselWidgetData | NavbarWidgetData | ContentBlockWidgetData | GridWidgetData;
591
+ export type WidgetSettings = MetricWidgetSettings | InfoWidgetSettings | ProductWidgetSettings | OrderWidgetSettings | ListWidgetSettings | TextWidgetSettings | HeaderWidgetSettings | CarouselWidgetSettings | ImageWidgetSettings | TestimonialWidgetSettings | GridCarouselWidgetSettings | NavbarWidgetSettings | GridWidgetSettings | BaseWidgetSettings;
592
+ /**
593
+ * Widget Configuration - Combines type, data, and settings
594
+ *
595
+ * @example
596
+ * // Metric widget with data and settings separated
597
+ * const metricWidget: WidgetConfig = {
598
+ * type: 'metric',
599
+ * data: {
600
+ * value: '$12,345',
601
+ * label: 'Total Revenue',
602
+ * trend: { direction: 'up', value: 12.5 }
603
+ * },
604
+ * settings: {
605
+ * theme: 'modern',
606
+ * variant: 'success',
607
+ * size: 'lg',
608
+ * showTrend: true,
609
+ * animateValue: true
610
+ * }
611
+ * };
612
+ */
613
+ export interface WidgetConfig {
614
+ type: WidgetType | 'grid';
615
+ data: WidgetData;
616
+ settings?: WidgetSettings;
617
+ /** @deprecated Use settings.theme */
618
+ theme?: WidgetTheme;
619
+ /** @deprecated Use settings.variant */
620
+ variant?: WidgetVariant;
621
+ /** @deprecated Use settings.size */
622
+ size?: 'sm' | 'md' | 'lg';
623
+ /** @deprecated Use settings.className */
624
+ className?: string;
625
+ /** @deprecated Use settings.style */
626
+ style?: React.CSSProperties;
627
+ /** @deprecated Use settings */
628
+ grid?: GridConfig;
629
+ }
@@ -5,6 +5,7 @@ export declare const CheckIcon: import("react-icons/lib").IconType;
5
5
  export declare const CloseSmallIcon: (props: {
6
6
  size?: number;
7
7
  }) => import("react/jsx-runtime").JSX.Element;
8
+ export declare const CalendarIcon: import("react-icons/lib").IconType;
8
9
  export declare const ChevronDownIcon: import("react-icons/lib").IconType;
9
10
  export declare const PlusIcon: import("react-icons/lib").IconType;
10
11
  export declare const MinusIcon: import("react-icons/lib").IconType;
@@ -53,3 +54,6 @@ export declare const ArrowDownIcon: import("react-icons/lib").IconType;
53
54
  export declare const FilterIcon: import("react-icons/lib").IconType;
54
55
  export declare const ChevronsLeftIcon: import("react-icons/lib").IconType;
55
56
  export declare const ChevronsRightIcon: import("react-icons/lib").IconType;
57
+ export declare const BuildingIcon: import("react-icons/lib").IconType;
58
+ export declare const DollarSignIcon: import("react-icons/lib").IconType;
59
+ export declare const ActivityIcon: import("react-icons/lib").IconType;