@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.
- package/README.md +865 -103
- package/dist/index.cjs.js +1 -1
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.esm.js +1 -1
- package/dist/index.esm.js.map +1 -1
- package/dist/types/components/Autocomplete/Autocomplete.d.ts +173 -0
- package/dist/types/components/Autocomplete/index.d.ts +2 -0
- package/dist/types/components/DatePicker/Calendar.d.ts +15 -0
- package/dist/types/components/DatePicker/DatePicker.d.ts +99 -0
- package/dist/types/components/DatePicker/DateRangePicker.d.ts +114 -0
- package/dist/types/components/DatePicker/index.d.ts +6 -0
- package/dist/types/components/FormControl/FormControl.d.ts +77 -0
- package/dist/types/components/FormControl/index.d.ts +3 -0
- package/dist/types/components/Image/Image.d.ts +14 -0
- package/dist/types/components/Image/index.d.ts +2 -0
- package/dist/types/components/Link/Link.d.ts +5 -0
- package/dist/types/components/Navbar/Navbar.d.ts +236 -0
- package/dist/types/components/Navbar/index.d.ts +2 -0
- package/dist/types/components/RichTextEditor/RichTextEditor.d.ts +153 -0
- package/dist/types/components/RichTextEditor/index.d.ts +2 -0
- package/dist/types/components/Text/Text.d.ts +9 -3
- package/dist/types/components/Textarea/Textarea.d.ts +81 -0
- package/dist/types/components/Textarea/index.d.ts +3 -0
- package/dist/types/components/Widget/IntelligentGrid.d.ts +15 -0
- package/dist/types/components/Widget/Widget.d.ts +9 -0
- package/dist/types/components/Widget/index.d.ts +16 -0
- package/dist/types/components/Widget/renderers/CarouselWidget.d.ts +40 -0
- package/dist/types/components/Widget/renderers/ContentBlockWidget.d.ts +56 -0
- package/dist/types/components/Widget/renderers/ContentBlockWidget.stories.d.ts +24 -0
- package/dist/types/components/Widget/renderers/GridCarouselWidget.d.ts +35 -0
- package/dist/types/components/Widget/renderers/HeaderWidget.d.ts +18 -0
- package/dist/types/components/Widget/renderers/ImageWidget.d.ts +69 -0
- package/dist/types/components/Widget/renderers/ImageWidget.stories.d.ts +11 -0
- package/dist/types/components/Widget/renderers/InfoWidget.d.ts +18 -0
- package/dist/types/components/Widget/renderers/ListWidget.d.ts +18 -0
- package/dist/types/components/Widget/renderers/MetricWidget.d.ts +18 -0
- package/dist/types/components/Widget/renderers/NavbarWidget.d.ts +16 -0
- package/dist/types/components/Widget/renderers/OrderWidget.d.ts +8 -0
- package/dist/types/components/Widget/renderers/ProductWidget.d.ts +8 -0
- package/dist/types/components/Widget/renderers/TestimonialWidget.d.ts +14 -0
- package/dist/types/components/Widget/renderers/TextWidget.d.ts +18 -0
- package/dist/types/components/Widget/types.d.ts +629 -0
- package/dist/types/icons/IconComponents.d.ts +4 -0
- package/dist/types/index.d.ts +19 -5
- package/dist/types/stories/components/Autocomplete.stories.d.ts +20 -0
- package/dist/types/stories/components/CarouselWidget.stories.d.ts +11 -0
- package/dist/types/stories/components/ContentBlockWidget.stories.d.ts +24 -0
- package/dist/types/stories/components/DatePicker.stories.d.ts +69 -0
- package/dist/types/stories/components/FormControl.stories.d.ts +57 -0
- package/dist/types/stories/components/GridCarouselWidget.stories.d.ts +17 -0
- package/dist/types/stories/components/HeaderWidget.stories.d.ts +10 -0
- package/dist/types/stories/components/InfoWidget.stories.d.ts +24 -0
- package/dist/types/stories/components/ListWidget.stories.d.ts +10 -0
- package/dist/types/stories/components/MetricWidget.stories.d.ts +12 -0
- package/dist/types/stories/components/OrderWidget.stories.d.ts +12 -0
- package/dist/types/stories/components/ProductWidget.stories.d.ts +13 -0
- package/dist/types/stories/components/RichTextEditor.stories.d.ts +22 -0
- package/dist/types/stories/components/TestimonialWidget.stories.d.ts +47 -0
- package/dist/types/stories/components/TextWidget.stories.d.ts +10 -0
- package/dist/types/stories/components/Textarea.stories.d.ts +21 -0
- package/dist/types/stories/components/Toast.stories.d.ts +56 -13
- package/dist/types/stories/components/Widget.stories.d.ts +10 -0
- package/dist/types/stories/widgets/DashboardCard.stories.d.ts +58 -0
- package/dist/types/stories/widgets/InfoCard.stories.d.ts +1 -4
- package/dist/types/stories/widgets/InfoListCard.stories.d.ts +3 -15
- package/dist/types/stories/widgets/InfoText.stories.d.ts +1 -19
- package/dist/types/stories/widgets/MetricCard.stories.d.ts +27 -0
- package/dist/types/stories/widgets/OrderCard.stories.d.ts +3 -9
- package/dist/types/stories/widgets/OrderConfirmation.stories.d.ts +1 -24
- package/dist/types/stories/widgets/OrderDetails.stories.d.ts +3 -7
- package/dist/types/stories/widgets/ProductCard.stories.d.ts +1 -15
- package/dist/types/theme/ThemeProvider.d.ts +14 -0
- package/dist/types/utils/parseClass.d.ts +2 -0
- package/dist/types/widgets/DashboardCard/DashboardCard.d.ts +275 -0
- package/dist/types/widgets/DashboardCard/index.d.ts +2 -0
- package/dist/types/widgets/MetricCard/MetricCard.d.ts +106 -0
- package/dist/types/widgets/MetricCard/index.d.ts +2 -0
- package/dist/types/widgets/Navbar/Navbar.d.ts +308 -0
- package/dist/types/widgets/Navbar/Navbar.stories.d.ts +23 -0
- package/dist/types/widgets/Navbar/index.d.ts +2 -0
- package/dist/types/widgets/OrderCard/OrderCard.d.ts +1 -0
- 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;
|