@zimyo/ui 1.1.7 → 1.1.8

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/dist/index.esm.js DELETED
@@ -1,763 +0,0 @@
1
- import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
2
- import React, { forwardRef, createElement } from 'react';
3
- import { useTheme, Button as Button$1, CircularProgress, Card, CardHeader as CardHeader$1, Typography, CardActions as CardActions$1, Box, Skeleton, FormControl, Select as Select$1, OutlinedInput, IconButton, MenuItem, ListItemText, FormHelperText, Chip, Accordion as Accordion$1, AccordionSummary, AccordionDetails, FormControlLabel, Switch as Switch$1, TextField, InputAdornment, FormLabel, RadioGroup as RadioGroup$1, Radio, GlobalStyles, CssBaseline } from '@mui/material';
4
- import MuiCardContent from '@mui/material/CardContent';
5
- import CardMedia from '@mui/material/CardMedia';
6
- import { createTheme, ThemeProvider } from '@mui/material/styles';
7
-
8
- const Button = React.forwardRef(({ children, loading = false, loadingText, loaderSize = 18, loaderPosition = 'start', variant = 'contained', color = 'primary', size = 'medium', sx = {}, disabled, startIcon, endIcon, ...props }, ref) => {
9
- useTheme();
10
- const showStartSpinner = loading && loaderPosition === 'start';
11
- const showEndSpinner = loading && loaderPosition === 'end';
12
- const showCenterSpinner = loading && loaderPosition === 'center';
13
- return (jsx(Button$1, { ref: ref, variant: variant, color: color, size: size, disabled: disabled || loading, startIcon: showStartSpinner ? (jsx(CircularProgress, { size: loaderSize, color: "inherit" })) : (startIcon), endIcon: showEndSpinner ? (jsx(CircularProgress, { size: loaderSize, color: "inherit" })) : (endIcon), sx: {
14
- // borderRadius: theme.radius.sm,
15
- fontWeight: 500,
16
- textTransform: 'none',
17
- letterSpacing: '0.5px',
18
- px: size === 'small' ? 1.5 : size === 'large' ? 3 : 2,
19
- py: size === 'small' ? 0.5 : size === 'large' ? 1.5 : 1,
20
- position: 'relative',
21
- ...sx,
22
- }, ...props, children: showCenterSpinner ? (jsx(CircularProgress, { size: loaderSize, color: "inherit" })) : loading && loadingText ? (loadingText) : (children) }));
23
- });
24
- Button.displayName = 'Button';
25
-
26
- const CardRoot = ({ children, sx = {}, elevation = 1, variant = 'elevated', ...props }) => {
27
- const theme = useTheme();
28
- return (jsx(Card, { elevation: variant === 'elevated' ? elevation : 0, variant: variant === 'outlined' ? 'outlined' : 'elevation', sx: {
29
- borderRadius: theme.radius?.sm || 8,
30
- border: variant === 'bordered' ? `1px solid ${theme.palette.divider}` : 'none',
31
- overflow: 'hidden',
32
- backgroundColor: theme.palette.background.paper,
33
- ...sx,
34
- }, ...props, children: children }));
35
- };
36
-
37
- const CardHeader = ({ title, subtitle, action, }) => (jsx(CardHeader$1, { title: typeof title === 'string' ? (jsx(Typography, { variant: "h6", fontWeight: 600, children: title })) : (title), subheader: typeof subtitle === 'string' ? (jsx(Typography, { variant: "body2", color: "text.secondary", children: subtitle })) : (subtitle), action: action }));
38
-
39
- const CardContent = ({ children, sx }) => (jsx(MuiCardContent, { sx: sx, children: children }));
40
-
41
- const CardActions = ({ children, sx }) => (jsx(CardActions$1, { sx: sx, children: children }));
42
-
43
- const CardImage = ({ src, height = 160, alt = 'card image' }) => (jsx(CardMedia, { component: "img", height: height, image: src, alt: alt }));
44
-
45
- const CardSkeleton = ({ lines = 3 }) => (jsxs(Box, { p: 2, children: [jsx(Skeleton, { variant: "rectangular", height: 140 }), [...Array(lines)].map((_, i) => (jsx(Skeleton, { variant: "text", height: 20, sx: { mt: 1 } }, i)))] }));
46
-
47
- Object.assign(CardRoot, {
48
- Header: CardHeader,
49
- Content: CardContent,
50
- Body: CardContent, // alias
51
- Actions: CardActions,
52
- Image: CardImage,
53
- Skeleton: CardSkeleton,
54
- });
55
-
56
- /**
57
- * @license lucide-react v0.525.0 - ISC
58
- *
59
- * This source code is licensed under the ISC license.
60
- * See the LICENSE file in the root directory of this source tree.
61
- */
62
-
63
- const toKebabCase = (string) => string.replace(/([a-z0-9])([A-Z])/g, "$1-$2").toLowerCase();
64
- const toCamelCase = (string) => string.replace(
65
- /^([A-Z])|[\s-_]+(\w)/g,
66
- (match, p1, p2) => p2 ? p2.toUpperCase() : p1.toLowerCase()
67
- );
68
- const toPascalCase = (string) => {
69
- const camelCase = toCamelCase(string);
70
- return camelCase.charAt(0).toUpperCase() + camelCase.slice(1);
71
- };
72
- const mergeClasses = (...classes) => classes.filter((className, index, array) => {
73
- return Boolean(className) && className.trim() !== "" && array.indexOf(className) === index;
74
- }).join(" ").trim();
75
- const hasA11yProp = (props) => {
76
- for (const prop in props) {
77
- if (prop.startsWith("aria-") || prop === "role" || prop === "title") {
78
- return true;
79
- }
80
- }
81
- };
82
-
83
- /**
84
- * @license lucide-react v0.525.0 - ISC
85
- *
86
- * This source code is licensed under the ISC license.
87
- * See the LICENSE file in the root directory of this source tree.
88
- */
89
-
90
- var defaultAttributes = {
91
- xmlns: "http://www.w3.org/2000/svg",
92
- width: 24,
93
- height: 24,
94
- viewBox: "0 0 24 24",
95
- fill: "none",
96
- stroke: "currentColor",
97
- strokeWidth: 2,
98
- strokeLinecap: "round",
99
- strokeLinejoin: "round"
100
- };
101
-
102
- /**
103
- * @license lucide-react v0.525.0 - ISC
104
- *
105
- * This source code is licensed under the ISC license.
106
- * See the LICENSE file in the root directory of this source tree.
107
- */
108
-
109
-
110
- const Icon = forwardRef(
111
- ({
112
- color = "currentColor",
113
- size = 24,
114
- strokeWidth = 2,
115
- absoluteStrokeWidth,
116
- className = "",
117
- children,
118
- iconNode,
119
- ...rest
120
- }, ref) => createElement(
121
- "svg",
122
- {
123
- ref,
124
- ...defaultAttributes,
125
- width: size,
126
- height: size,
127
- stroke: color,
128
- strokeWidth: absoluteStrokeWidth ? Number(strokeWidth) * 24 / Number(size) : strokeWidth,
129
- className: mergeClasses("lucide", className),
130
- ...!children && !hasA11yProp(rest) && { "aria-hidden": "true" },
131
- ...rest
132
- },
133
- [
134
- ...iconNode.map(([tag, attrs]) => createElement(tag, attrs)),
135
- ...Array.isArray(children) ? children : [children]
136
- ]
137
- )
138
- );
139
-
140
- /**
141
- * @license lucide-react v0.525.0 - ISC
142
- *
143
- * This source code is licensed under the ISC license.
144
- * See the LICENSE file in the root directory of this source tree.
145
- */
146
-
147
-
148
- const createLucideIcon = (iconName, iconNode) => {
149
- const Component = forwardRef(
150
- ({ className, ...props }, ref) => createElement(Icon, {
151
- ref,
152
- iconNode,
153
- className: mergeClasses(
154
- `lucide-${toKebabCase(toPascalCase(iconName))}`,
155
- `lucide-${iconName}`,
156
- className
157
- ),
158
- ...props
159
- })
160
- );
161
- Component.displayName = toPascalCase(iconName);
162
- return Component;
163
- };
164
-
165
- /**
166
- * @license lucide-react v0.525.0 - ISC
167
- *
168
- * This source code is licensed under the ISC license.
169
- * See the LICENSE file in the root directory of this source tree.
170
- */
171
-
172
-
173
- const __iconNode$1 = [["path", { d: "m6 9 6 6 6-6", key: "qrunsl" }]];
174
- const ChevronDown = createLucideIcon("chevron-down", __iconNode$1);
175
-
176
- /**
177
- * @license lucide-react v0.525.0 - ISC
178
- *
179
- * This source code is licensed under the ISC license.
180
- * See the LICENSE file in the root directory of this source tree.
181
- */
182
-
183
-
184
- const __iconNode = [
185
- ["path", { d: "M18 6 6 18", key: "1bl5f8" }],
186
- ["path", { d: "m6 6 12 12", key: "d8bk6v" }]
187
- ];
188
- const X = createLucideIcon("x", __iconNode);
189
-
190
- const Select = React.forwardRef(({ label = '', options = [], value, onChange, error = false, helperText = '', required = false, placeholder = 'Select...', isMulti = false, disabled = false, ...rest }, ref) => {
191
- useTheme();
192
- const handleRemoveChip = (chipValue) => (e) => {
193
- e.stopPropagation();
194
- const newValue = value.filter((v) => v !== chipValue);
195
- onChange?.({
196
- target: {
197
- name: rest.name,
198
- value: newValue,
199
- },
200
- });
201
- };
202
- const renderValue = (selected) => {
203
- if (isMulti && Array.isArray(selected)) {
204
- return (jsx(Box, { sx: { display: 'flex', flexWrap: 'wrap', gap: 0.5 }, children: selected.map((val) => {
205
- const label = options.find((o) => o.value === val)?.label || val;
206
- return jsx(Box, { onMouseDown: (e) => e.stopPropagation(), children: jsx(Chip, { onDelete: handleRemoveChip(val), label: label, sx: { borderRadius: '12px' } }) }, val);
207
- }) }));
208
- }
209
- return options.find((o) => o.value === selected)?.label || placeholder;
210
- };
211
- const handleClearSelection = (e) => {
212
- e.stopPropagation();
213
- const emptyValue = isMulti ? [] : '';
214
- onChange?.({
215
- target: {
216
- name: rest.name,
217
- value: emptyValue,
218
- },
219
- });
220
- };
221
- return (jsxs(FormControl, { fullWidth: true, error: error, disabled: disabled, sx: {
222
- '& .MuiOutlinedInput-root': {
223
- borderRadius: '8px',
224
- minHeight: '44px',
225
- // backgroundColor: theme.palette.background.paper,
226
- fontSize: '14px'
227
- },
228
- '& .MuiSelect-select': {
229
- fontSize: '14px',
230
- padding: '10px 14px',
231
- },
232
- '& .MuiSelect-placeholder': {
233
- fontSize: '14px',
234
- },
235
- '& .MuiMenuItem-root': {
236
- fontSize: '14px',
237
- },
238
- '& .MuiChip-label': {
239
- fontSize: '14px',
240
- },
241
- }, children: [jsx(Select$1, { displayEmpty: true,
242
- // labelId={labelId}
243
- multiple: isMulti, value: value || (isMulti ? [] : ''), onChange: onChange, input: jsx(OutlinedInput, { label: label }), renderValue: renderValue, ref: ref, IconComponent: ChevronDown, endAdornment: value && !isMulti && ((isMulti && value.length > 0) || (!isMulti && value !== '')) ? (jsx(IconButton, { sx: { marginRight: '1rem' }, size: "small", onClick: handleClearSelection, children: jsx(X, { fontSize: "small" }) })) : null, variant: "outlined", ...rest, children: options && options.map((option) => (jsx(MenuItem, { value: option.value, children: isMulti ? (jsx(Fragment, { children: jsx(ListItemText, { primary: option.label }) })) : (option.label || placeholder) }, option.value))) }), helperText && jsx(FormHelperText, { children: helperText })] }));
244
- });
245
-
246
- const AccordionContext = React.createContext({});
247
- // Main Accordion Container Component
248
- const Accordion = React.forwardRef(({ type = 'single', collapsible = false, value: controlledValue, defaultValue, onValueChange, children, sx = {}, ...props }, ref) => {
249
- const theme = useTheme();
250
- // Internal state management
251
- const [internalValue, setInternalValue] = React.useState(() => {
252
- if (controlledValue !== undefined)
253
- return controlledValue;
254
- if (defaultValue !== undefined)
255
- return defaultValue;
256
- return type === 'multiple' ? [] : '';
257
- });
258
- const value = controlledValue !== undefined ? controlledValue : internalValue;
259
- const handleValueChange = React.useCallback((newValue) => {
260
- if (controlledValue === undefined) {
261
- setInternalValue(newValue);
262
- }
263
- onValueChange?.(newValue);
264
- }, [controlledValue, onValueChange]);
265
- const contextValue = React.useMemo(() => ({
266
- type,
267
- collapsible,
268
- value,
269
- defaultValue,
270
- onValueChange: handleValueChange,
271
- }), [type, collapsible, value, defaultValue, handleValueChange]);
272
- return (jsx(AccordionContext.Provider, { value: contextValue, children: jsx("div", { ref: ref, style: {
273
- display: 'flex',
274
- flexDirection: 'column',
275
- gap: theme.spacing(1),
276
- }, ...props, children: children }) }));
277
- });
278
- // AccordionItem Component
279
- const AccordionItem = React.forwardRef(({ value: itemValue, children, sx = {}, ...props }, ref) => {
280
- const theme = useTheme();
281
- const context = React.useContext(AccordionContext);
282
- const isExpanded = React.useMemo(() => {
283
- if (context.type === 'multiple') {
284
- return Array.isArray(context.value) && context.value.includes(itemValue);
285
- }
286
- return context.value === itemValue;
287
- }, [context.value, context.type, itemValue]);
288
- const handleChange = React.useCallback(() => {
289
- if (!context.onValueChange)
290
- return;
291
- if (context.type === 'multiple') {
292
- const currentValue = Array.isArray(context.value) ? context.value : [];
293
- const newValue = isExpanded
294
- ? currentValue.filter(v => v !== itemValue)
295
- : [...currentValue, itemValue];
296
- context.onValueChange(newValue);
297
- }
298
- else {
299
- const newValue = isExpanded && context.collapsible ? '' : itemValue;
300
- context.onValueChange(newValue);
301
- }
302
- }, [context, itemValue, isExpanded]);
303
- return (jsx(Accordion$1, { ref: ref, expanded: isExpanded, onChange: handleChange, variant: "outlined", sx: {
304
- borderRadius: theme.radius?.sm || theme.shape.borderRadius,
305
- '&:before': {
306
- display: 'none',
307
- },
308
- '&.Mui-expanded': {
309
- margin: 0,
310
- },
311
- border: `1px solid ${theme.palette.divider}`,
312
- ...sx,
313
- }, ...props, children: children }));
314
- });
315
- // AccordionTrigger Component
316
- const AccordionTrigger = React.forwardRef(({ children, sx = {}, expandIcon, ...props }, ref) => {
317
- const theme = useTheme();
318
- const defaultExpandIcon = expandIcon !== undefined ? expandIcon : jsx(ChevronDown, {});
319
- return (jsx(AccordionSummary, { ref: ref, expandIcon: defaultExpandIcon, sx: {
320
- borderRadius: theme.radius?.sm || theme.shape.borderRadius,
321
- minHeight: 56,
322
- fontWeight: 500,
323
- '&.Mui-expanded': {
324
- minHeight: 56,
325
- borderBottomLeftRadius: 0,
326
- borderBottomRightRadius: 0,
327
- borderBottom: `1px solid ${theme.palette.divider}`,
328
- },
329
- '& .MuiAccordionSummary-content': {
330
- margin: '12px 0',
331
- '&.Mui-expanded': {
332
- margin: '12px 0',
333
- },
334
- },
335
- '& .MuiAccordionSummary-expandIconWrapper': {
336
- transition: theme.transitions.create('transform', {
337
- duration: theme.transitions.duration.shortest,
338
- }),
339
- '&.Mui-expanded': {
340
- transform: 'rotate(180deg)',
341
- },
342
- },
343
- '&:hover': {
344
- backgroundColor: theme.palette.action.hover,
345
- },
346
- ...sx,
347
- }, ...props, children: children }));
348
- });
349
- // AccordionContent Component
350
- const AccordionContent = React.forwardRef(({ children, sx = {}, ...props }, ref) => {
351
- const theme = useTheme();
352
- return (jsx(AccordionDetails, { ref: ref, sx: {
353
- padding: theme.spacing(2),
354
- borderBottomLeftRadius: theme.radius?.sm || theme.shape.borderRadius,
355
- borderBottomRightRadius: theme.radius?.sm || theme.shape.borderRadius,
356
- ...sx,
357
- }, ...props, children: children }));
358
- });
359
-
360
- const Switch = React.forwardRef(({ label = '', helperText = '', error = false, onChange, checked, required = false, disabled = false, ...rest }, ref) => {
361
- return (jsxs(FormControl, { error: error, disabled: disabled, component: "fieldset", children: [jsx(FormControlLabel, { control: jsx(Switch$1, { inputRef: ref, checked: checked, onChange: (e, checked) => onChange?.(e, checked), disabled: disabled, required: required == 1 || required === true ? true : false, ...rest }), label: label }), helperText && jsx(FormHelperText, { children: helperText })] }));
362
- });
363
-
364
- const TextInput = React.forwardRef(({ label = '', placeholder, IS_MANDATORY = false,
365
- // multiline = false,
366
- startIcon, endIcon, error = false, helperText, type = 'text', variant = 'outlined', ...rest }, ref) => {
367
- return (jsx(TextField, { fullWidth: true, inputRef: ref, type: type,
368
- // multiline={multiline}
369
- label: label, placeholder: placeholder, required: (IS_MANDATORY == 1 || IS_MANDATORY == true) ? true : false, error: error, InputLabelProps: !label ? { shrink: false } : undefined, sx: {
370
- '& .MuiInputLabel-outlined': {
371
- top: '-4px',
372
- fontSize: '13px',
373
- fontWeight: 500,
374
- },
375
- '& .MuiOutlinedInput-root': {
376
- minHeight: '44px',
377
- borderRadius: '10px',
378
- },
379
- '& input': {
380
- padding: '10.5px 14px',
381
- },
382
- '& input::placeholder': {
383
- fontSize: '13px',
384
- opacity: 0.5,
385
- },
386
- }, helperText: helperText, InputProps: {
387
- startAdornment: startIcon ? (jsx(InputAdornment, { position: "start", children: startIcon })) : undefined,
388
- endAdornment: endIcon ? (jsx(InputAdornment, { position: "end", children: endIcon })) : undefined,
389
- }, variant: variant, ...rest }));
390
- });
391
-
392
- const RadioGroup = React.forwardRef(({ label, options = [], value, defaultValue, onChange, name, disabled = false, required = false, error = false, helperText, row = false, size = 'medium', color = 'primary', sx = {}, radioSx = {}, labelSx = {}, ...props }, ref) => {
393
- const theme = useTheme();
394
- const [internalValue, setInternalValue] = React.useState(value || defaultValue || '');
395
- // Sync with external value prop
396
- React.useEffect(() => {
397
- if (value !== undefined) {
398
- setInternalValue(value);
399
- }
400
- }, [value]);
401
- const handleChange = (event) => {
402
- const newValue = event.target.value;
403
- if (value === undefined) {
404
- setInternalValue(newValue);
405
- }
406
- onChange?.(newValue);
407
- };
408
- const currentValue = value !== undefined ? value : internalValue;
409
- return (jsxs(FormControl, { ref: ref, component: "fieldset", variant: "standard", disabled: disabled, required: required, error: error, sx: {
410
- borderRadius: '8px',
411
- ...sx,
412
- }, ...props, children: [label && (jsxs(FormLabel, { component: "legend", sx: {
413
- fontWeight: 500,
414
- fontSize: size === 'small' ? '0.875rem' : '1rem',
415
- color: disabled
416
- ? theme.palette.text.disabled
417
- : error
418
- ? theme.palette.error.main
419
- : theme.palette.text.primary,
420
- '&.Mui-focused': {
421
- color: error
422
- ? theme.palette.error.main
423
- : `${theme.palette[color].main}`,
424
- },
425
- mb: 1,
426
- ...labelSx,
427
- }, children: [label, required && (jsx(Typography, { component: "span", sx: {
428
- color: theme.palette.error.main,
429
- ml: 0.5,
430
- fontSize: 'inherit',
431
- }, children: "*" }))] })), jsx(RadioGroup$1, { name: name, value: currentValue, onChange: handleChange, row: row, sx: {
432
- gap: size === 'small' ? 1 : 1.5,
433
- '& .MuiFormControlLabel-root': {
434
- marginLeft: 0,
435
- marginRight: row ? 2 : 0,
436
- },
437
- }, children: options.map((option) => (jsx(Box, { children: jsx(FormControlLabel, { value: option.value, disabled: disabled || option.disabled, control: jsx(Radio, { size: size, color: color, sx: {
438
- '&.Mui-checked': {
439
- color: error
440
- ? theme.palette.error.main
441
- : `${theme.palette[color].main}`,
442
- },
443
- alignSelf: option.description ? 'flex-start' : 'center',
444
- mt: option.description ? 0.25 : 0,
445
- ...radioSx,
446
- } }), label: jsxs(Box, { sx: { display: 'flex', flexDirection: 'column' }, children: [jsx(Typography, { variant: size === 'small' ? 'body2' : 'body1', sx: {
447
- fontWeight: 400,
448
- color: disabled || option.disabled
449
- ? theme.palette.text.disabled
450
- : theme.palette.text.primary,
451
- lineHeight: 1.5,
452
- }, children: option.label }), option.description && (jsx(Typography, { variant: "caption", sx: {
453
- color: disabled || option.disabled
454
- ? theme.palette.text.disabled
455
- : theme.palette.text.secondary,
456
- mt: 0.25,
457
- lineHeight: 1.4,
458
- }, children: option.description }))] }), sx: {
459
- alignItems: option.description ? 'flex-start' : 'center',
460
- margin: 0,
461
- display: 'flex',
462
- '& .MuiFormControlLabel-label': {
463
- ml: 1,
464
- flex: 1,
465
- },
466
- '& .MuiButtonBase-root': {
467
- p: size === 'small' ? 0.5 : 1,
468
- },
469
- } }) }, option.value))) }), helperText && (jsx(FormHelperText, { sx: {
470
- mt: 1,
471
- fontSize: size === 'small' ? '0.75rem' : '0.875rem',
472
- color: error
473
- ? theme.palette.error.main
474
- : theme.palette.text.secondary,
475
- }, children: helperText }))] }));
476
- });
477
-
478
- const Heading = ({ level = 1, ...props }) => {
479
- const variant = `h${level}`;
480
- return (jsx(Typography, { variant: variant, component: props.component || `h${level}`, fontWeight: 600, gutterBottom: true, ...props }));
481
- };
482
-
483
- const Text = ({ size = 'md', ...props }) => {
484
- const variantMap = {
485
- sm: 'body2',
486
- md: 'body1',
487
- lg: 'subtitle1',
488
- };
489
- return (jsx(Typography, { variant: variantMap[size], component: props.component || 'p', ...props }));
490
- };
491
-
492
- const Lead = (props) => {
493
- return (jsx(Typography, { variant: "subtitle1", component: props.component || 'p', fontWeight: 400, color: "text.secondary", ...props }));
494
- };
495
-
496
- const Muted = (props) => {
497
- return (jsx(Typography, { variant: "body2", component: props.component || 'span', color: "text.disabled", ...props }));
498
- };
499
-
500
- const Strong = (props) => {
501
- return (jsx(Typography, { component: props.component || 'strong', fontWeight: 500, display: "inline", ...props }));
502
- };
503
-
504
- const Caption = (props) => {
505
- return (jsx(Typography, { variant: "caption", color: "text.secondary", component: props.component || 'span', ...props }));
506
- };
507
-
508
- const Blockquote = (props) => {
509
- return (jsx(Typography, { component: "blockquote", sx: {
510
- borderLeft: '4px solid',
511
- borderColor: 'divider',
512
- pl: 2,
513
- color: 'text.secondary',
514
- fontStyle: 'italic',
515
- }, ...props }));
516
- };
517
-
518
- const Code = ({ children, sx }) => {
519
- return (jsx(Box, { component: "code", sx: {
520
- fontFamily: 'monospace',
521
- backgroundColor: 'grey.100',
522
- color: 'primary.main',
523
- px: 0.5,
524
- py: 0.25,
525
- borderRadius: 1,
526
- fontSize: '0.875rem',
527
- ...sx,
528
- }, children: children }));
529
- };
530
-
531
- const designTokens = {
532
- colors: {
533
- primary: {
534
- 50: '#e3f2fd',
535
- 100: '#bbdefb',
536
- 500: '#2196f3',
537
- 900: '#0d47a1',
538
- },
539
- secondary: {
540
- 50: '#fce4ec',
541
- 100: '#f8bbd9',
542
- 500: '#e91e63',
543
- 900: '#880e4f',
544
- },
545
- neutral: {
546
- 50: '#fafafa',
547
- 100: '#f5f5f5',
548
- 200: '#eeeeee',
549
- 500: '#9e9e9e',
550
- 900: '#212121',
551
- },
552
- },
553
- spacing: {
554
- xs: '4px',
555
- sm: '8px',
556
- md: '16px',
557
- lg: '24px',
558
- xl: '32px',
559
- },
560
- radius: {
561
- xs: "2px",
562
- sm: '4px',
563
- md: '8px',
564
- lg: '12px',
565
- xl: '16px',
566
- full: '9999px',
567
- },
568
- typography: {
569
- fontFamily: `'Inter', system-ui, sans-serif`,
570
- fontSize: {
571
- xs: '0.75rem',
572
- sm: '0.875rem',
573
- md: '1rem',
574
- lg: '1.25rem',
575
- xl: '1.5rem',
576
- },
577
- },
578
- };
579
-
580
- const createCustomTheme = (config = {}) => {
581
- const { primaryColor = designTokens.colors.primary[500], secondaryColor = designTokens.colors.secondary[500], } = config;
582
- return createTheme({
583
- palette: {
584
- primary: {
585
- main: primaryColor,
586
- },
587
- secondary: {
588
- main: secondaryColor,
589
- },
590
- divider: '#e5e5e5'
591
- },
592
- typography: {
593
- fontFamily: designTokens.typography.fontFamily,
594
- fontSize: 14,
595
- h1: {
596
- fontSize: '3rem', // 48px
597
- fontWeight: 700,
598
- lineHeight: 1.2,
599
- },
600
- h2: {
601
- fontSize: '2.25rem', // 36px
602
- fontWeight: 600,
603
- lineHeight: 1.25,
604
- },
605
- h3: {
606
- fontSize: '1.875rem', // 30px
607
- fontWeight: 600,
608
- lineHeight: 1.3,
609
- },
610
- h4: {
611
- fontSize: '1.5rem', // 24px
612
- fontWeight: 500,
613
- lineHeight: 1.35,
614
- },
615
- h5: {
616
- fontSize: '1.25rem', // 20px
617
- fontWeight: 500,
618
- lineHeight: 1.4,
619
- },
620
- h6: {
621
- fontSize: '1rem', // 16px
622
- fontWeight: 500,
623
- lineHeight: 1.5,
624
- },
625
- body1: {
626
- fontSize: '1rem', // 16px
627
- lineHeight: '1.625rem', // 26px
628
- },
629
- body2: {
630
- fontSize: '0.875rem', // 14px
631
- lineHeight: '1.5rem', // 24px
632
- },
633
- caption: {
634
- fontSize: '0.875rem',
635
- lineHeight: '1.25rem', // 20px
636
- },
637
- button: {
638
- fontSize: '0.875rem',
639
- lineHeight: '1.5rem',
640
- textTransform: 'none',
641
- },
642
- subtitle1: {
643
- fontSize: '1rem', // 16px
644
- lineHeight: '1.5rem', // 24px
645
- // fontWeight: 500
646
- },
647
- },
648
- spacing: 8,
649
- shape: {
650
- borderRadius: 8,
651
- },
652
- radius: designTokens.radius,
653
- components: {
654
- MuiButton: {
655
- styleOverrides: {
656
- root: {
657
- textTransform: 'none',
658
- borderRadius: designTokens.radius.md,
659
- // fontWeight: 600,
660
- letterSpacing: '0.5px',
661
- padding: '6px 12px',
662
- },
663
- sizeSmall: {
664
- padding: '4px 12px',
665
- // fontSize: '0.875rem',
666
- },
667
- sizeLarge: {
668
- padding: '12px 24px',
669
- // fontSize: '1rem',
670
- },
671
- },
672
- defaultProps: {
673
- disableElevation: true
674
- }
675
- },
676
- MuiCard: {
677
- styleOverrides: {
678
- root: {
679
- borderRadius: '12px',
680
- boxShadow: '0 2px 8px rgba(0, 0, 0, 0.1)',
681
- },
682
- },
683
- },
684
- MuiTextField: {
685
- styleOverrides: {
686
- root: {
687
- '& .MuiOutlinedInput-root': {
688
- borderRadius: '8px',
689
- },
690
- },
691
- },
692
- },
693
- },
694
- });
695
- };
696
- // Default theme
697
- const theme = createCustomTheme();
698
-
699
- function styleInject(css, ref) {
700
- if ( ref === void 0 ) ref = {};
701
- var insertAt = ref.insertAt;
702
-
703
- if (!css || typeof document === 'undefined') { return; }
704
-
705
- var head = document.head || document.getElementsByTagName('head')[0];
706
- var style = document.createElement('style');
707
- style.type = 'text/css';
708
-
709
- if (insertAt === 'top') {
710
- if (head.firstChild) {
711
- head.insertBefore(style, head.firstChild);
712
- } else {
713
- head.appendChild(style);
714
- }
715
- } else {
716
- head.appendChild(style);
717
- }
718
-
719
- if (style.styleSheet) {
720
- style.styleSheet.cssText = css;
721
- } else {
722
- style.appendChild(document.createTextNode(css));
723
- }
724
- }
725
-
726
- var css_248z$4 = "/* inter-cyrillic-ext-300-normal */\n@font-face {\n font-family: 'Inter';\n font-style: normal;\n font-display: swap;\n font-weight: 300;\n src: url(./files/inter-cyrillic-ext-300-normal.woff2) format('woff2'), url(./files/inter-cyrillic-ext-300-normal.woff) format('woff');\n unicode-range: U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F;\n}\n\n/* inter-cyrillic-300-normal */\n@font-face {\n font-family: 'Inter';\n font-style: normal;\n font-display: swap;\n font-weight: 300;\n src: url(./files/inter-cyrillic-300-normal.woff2) format('woff2'), url(./files/inter-cyrillic-300-normal.woff) format('woff');\n unicode-range: U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116;\n}\n\n/* inter-greek-ext-300-normal */\n@font-face {\n font-family: 'Inter';\n font-style: normal;\n font-display: swap;\n font-weight: 300;\n src: url(./files/inter-greek-ext-300-normal.woff2) format('woff2'), url(./files/inter-greek-ext-300-normal.woff) format('woff');\n unicode-range: U+1F00-1FFF;\n}\n\n/* inter-greek-300-normal */\n@font-face {\n font-family: 'Inter';\n font-style: normal;\n font-display: swap;\n font-weight: 300;\n src: url(./files/inter-greek-300-normal.woff2) format('woff2'), url(./files/inter-greek-300-normal.woff) format('woff');\n unicode-range: U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF;\n}\n\n/* inter-vietnamese-300-normal */\n@font-face {\n font-family: 'Inter';\n font-style: normal;\n font-display: swap;\n font-weight: 300;\n src: url(./files/inter-vietnamese-300-normal.woff2) format('woff2'), url(./files/inter-vietnamese-300-normal.woff) format('woff');\n unicode-range: U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB;\n}\n\n/* inter-latin-ext-300-normal */\n@font-face {\n font-family: 'Inter';\n font-style: normal;\n font-display: swap;\n font-weight: 300;\n src: url(./files/inter-latin-ext-300-normal.woff2) format('woff2'), url(./files/inter-latin-ext-300-normal.woff) format('woff');\n unicode-range: U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;\n}\n\n/* inter-latin-300-normal */\n@font-face {\n font-family: 'Inter';\n font-style: normal;\n font-display: swap;\n font-weight: 300;\n src: url(./files/inter-latin-300-normal.woff2) format('woff2'), url(./files/inter-latin-300-normal.woff) format('woff');\n unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;\n}";
727
- styleInject(css_248z$4);
728
-
729
- var css_248z$3 = "/* inter-cyrillic-ext-400-normal */\n@font-face {\n font-family: 'Inter';\n font-style: normal;\n font-display: swap;\n font-weight: 400;\n src: url(./files/inter-cyrillic-ext-400-normal.woff2) format('woff2'), url(./files/inter-cyrillic-ext-400-normal.woff) format('woff');\n unicode-range: U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F;\n}\n\n/* inter-cyrillic-400-normal */\n@font-face {\n font-family: 'Inter';\n font-style: normal;\n font-display: swap;\n font-weight: 400;\n src: url(./files/inter-cyrillic-400-normal.woff2) format('woff2'), url(./files/inter-cyrillic-400-normal.woff) format('woff');\n unicode-range: U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116;\n}\n\n/* inter-greek-ext-400-normal */\n@font-face {\n font-family: 'Inter';\n font-style: normal;\n font-display: swap;\n font-weight: 400;\n src: url(./files/inter-greek-ext-400-normal.woff2) format('woff2'), url(./files/inter-greek-ext-400-normal.woff) format('woff');\n unicode-range: U+1F00-1FFF;\n}\n\n/* inter-greek-400-normal */\n@font-face {\n font-family: 'Inter';\n font-style: normal;\n font-display: swap;\n font-weight: 400;\n src: url(./files/inter-greek-400-normal.woff2) format('woff2'), url(./files/inter-greek-400-normal.woff) format('woff');\n unicode-range: U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF;\n}\n\n/* inter-vietnamese-400-normal */\n@font-face {\n font-family: 'Inter';\n font-style: normal;\n font-display: swap;\n font-weight: 400;\n src: url(./files/inter-vietnamese-400-normal.woff2) format('woff2'), url(./files/inter-vietnamese-400-normal.woff) format('woff');\n unicode-range: U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB;\n}\n\n/* inter-latin-ext-400-normal */\n@font-face {\n font-family: 'Inter';\n font-style: normal;\n font-display: swap;\n font-weight: 400;\n src: url(./files/inter-latin-ext-400-normal.woff2) format('woff2'), url(./files/inter-latin-ext-400-normal.woff) format('woff');\n unicode-range: U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;\n}\n\n/* inter-latin-400-normal */\n@font-face {\n font-family: 'Inter';\n font-style: normal;\n font-display: swap;\n font-weight: 400;\n src: url(./files/inter-latin-400-normal.woff2) format('woff2'), url(./files/inter-latin-400-normal.woff) format('woff');\n unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;\n}";
730
- styleInject(css_248z$3);
731
-
732
- var css_248z$2 = "/* inter-cyrillic-ext-500-normal */\n@font-face {\n font-family: 'Inter';\n font-style: normal;\n font-display: swap;\n font-weight: 500;\n src: url(./files/inter-cyrillic-ext-500-normal.woff2) format('woff2'), url(./files/inter-cyrillic-ext-500-normal.woff) format('woff');\n unicode-range: U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F;\n}\n\n/* inter-cyrillic-500-normal */\n@font-face {\n font-family: 'Inter';\n font-style: normal;\n font-display: swap;\n font-weight: 500;\n src: url(./files/inter-cyrillic-500-normal.woff2) format('woff2'), url(./files/inter-cyrillic-500-normal.woff) format('woff');\n unicode-range: U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116;\n}\n\n/* inter-greek-ext-500-normal */\n@font-face {\n font-family: 'Inter';\n font-style: normal;\n font-display: swap;\n font-weight: 500;\n src: url(./files/inter-greek-ext-500-normal.woff2) format('woff2'), url(./files/inter-greek-ext-500-normal.woff) format('woff');\n unicode-range: U+1F00-1FFF;\n}\n\n/* inter-greek-500-normal */\n@font-face {\n font-family: 'Inter';\n font-style: normal;\n font-display: swap;\n font-weight: 500;\n src: url(./files/inter-greek-500-normal.woff2) format('woff2'), url(./files/inter-greek-500-normal.woff) format('woff');\n unicode-range: U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF;\n}\n\n/* inter-vietnamese-500-normal */\n@font-face {\n font-family: 'Inter';\n font-style: normal;\n font-display: swap;\n font-weight: 500;\n src: url(./files/inter-vietnamese-500-normal.woff2) format('woff2'), url(./files/inter-vietnamese-500-normal.woff) format('woff');\n unicode-range: U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB;\n}\n\n/* inter-latin-ext-500-normal */\n@font-face {\n font-family: 'Inter';\n font-style: normal;\n font-display: swap;\n font-weight: 500;\n src: url(./files/inter-latin-ext-500-normal.woff2) format('woff2'), url(./files/inter-latin-ext-500-normal.woff) format('woff');\n unicode-range: U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;\n}\n\n/* inter-latin-500-normal */\n@font-face {\n font-family: 'Inter';\n font-style: normal;\n font-display: swap;\n font-weight: 500;\n src: url(./files/inter-latin-500-normal.woff2) format('woff2'), url(./files/inter-latin-500-normal.woff) format('woff');\n unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;\n}";
733
- styleInject(css_248z$2);
734
-
735
- var css_248z$1 = "/* inter-cyrillic-ext-600-normal */\n@font-face {\n font-family: 'Inter';\n font-style: normal;\n font-display: swap;\n font-weight: 600;\n src: url(./files/inter-cyrillic-ext-600-normal.woff2) format('woff2'), url(./files/inter-cyrillic-ext-600-normal.woff) format('woff');\n unicode-range: U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F;\n}\n\n/* inter-cyrillic-600-normal */\n@font-face {\n font-family: 'Inter';\n font-style: normal;\n font-display: swap;\n font-weight: 600;\n src: url(./files/inter-cyrillic-600-normal.woff2) format('woff2'), url(./files/inter-cyrillic-600-normal.woff) format('woff');\n unicode-range: U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116;\n}\n\n/* inter-greek-ext-600-normal */\n@font-face {\n font-family: 'Inter';\n font-style: normal;\n font-display: swap;\n font-weight: 600;\n src: url(./files/inter-greek-ext-600-normal.woff2) format('woff2'), url(./files/inter-greek-ext-600-normal.woff) format('woff');\n unicode-range: U+1F00-1FFF;\n}\n\n/* inter-greek-600-normal */\n@font-face {\n font-family: 'Inter';\n font-style: normal;\n font-display: swap;\n font-weight: 600;\n src: url(./files/inter-greek-600-normal.woff2) format('woff2'), url(./files/inter-greek-600-normal.woff) format('woff');\n unicode-range: U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF;\n}\n\n/* inter-vietnamese-600-normal */\n@font-face {\n font-family: 'Inter';\n font-style: normal;\n font-display: swap;\n font-weight: 600;\n src: url(./files/inter-vietnamese-600-normal.woff2) format('woff2'), url(./files/inter-vietnamese-600-normal.woff) format('woff');\n unicode-range: U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB;\n}\n\n/* inter-latin-ext-600-normal */\n@font-face {\n font-family: 'Inter';\n font-style: normal;\n font-display: swap;\n font-weight: 600;\n src: url(./files/inter-latin-ext-600-normal.woff2) format('woff2'), url(./files/inter-latin-ext-600-normal.woff) format('woff');\n unicode-range: U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;\n}\n\n/* inter-latin-600-normal */\n@font-face {\n font-family: 'Inter';\n font-style: normal;\n font-display: swap;\n font-weight: 600;\n src: url(./files/inter-latin-600-normal.woff2) format('woff2'), url(./files/inter-latin-600-normal.woff) format('woff');\n unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;\n}";
736
- styleInject(css_248z$1);
737
-
738
- var css_248z = "/* inter-cyrillic-ext-700-normal */\n@font-face {\n font-family: 'Inter';\n font-style: normal;\n font-display: swap;\n font-weight: 700;\n src: url(./files/inter-cyrillic-ext-700-normal.woff2) format('woff2'), url(./files/inter-cyrillic-ext-700-normal.woff) format('woff');\n unicode-range: U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F;\n}\n\n/* inter-cyrillic-700-normal */\n@font-face {\n font-family: 'Inter';\n font-style: normal;\n font-display: swap;\n font-weight: 700;\n src: url(./files/inter-cyrillic-700-normal.woff2) format('woff2'), url(./files/inter-cyrillic-700-normal.woff) format('woff');\n unicode-range: U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116;\n}\n\n/* inter-greek-ext-700-normal */\n@font-face {\n font-family: 'Inter';\n font-style: normal;\n font-display: swap;\n font-weight: 700;\n src: url(./files/inter-greek-ext-700-normal.woff2) format('woff2'), url(./files/inter-greek-ext-700-normal.woff) format('woff');\n unicode-range: U+1F00-1FFF;\n}\n\n/* inter-greek-700-normal */\n@font-face {\n font-family: 'Inter';\n font-style: normal;\n font-display: swap;\n font-weight: 700;\n src: url(./files/inter-greek-700-normal.woff2) format('woff2'), url(./files/inter-greek-700-normal.woff) format('woff');\n unicode-range: U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF;\n}\n\n/* inter-vietnamese-700-normal */\n@font-face {\n font-family: 'Inter';\n font-style: normal;\n font-display: swap;\n font-weight: 700;\n src: url(./files/inter-vietnamese-700-normal.woff2) format('woff2'), url(./files/inter-vietnamese-700-normal.woff) format('woff');\n unicode-range: U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB;\n}\n\n/* inter-latin-ext-700-normal */\n@font-face {\n font-family: 'Inter';\n font-style: normal;\n font-display: swap;\n font-weight: 700;\n src: url(./files/inter-latin-ext-700-normal.woff2) format('woff2'), url(./files/inter-latin-ext-700-normal.woff) format('woff');\n unicode-range: U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;\n}\n\n/* inter-latin-700-normal */\n@font-face {\n font-family: 'Inter';\n font-style: normal;\n font-display: swap;\n font-weight: 700;\n src: url(./files/inter-latin-700-normal.woff2) format('woff2'), url(./files/inter-latin-700-normal.woff) format('woff');\n unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;\n}";
739
- styleInject(css_248z);
740
-
741
- const Fonts = () => (jsx(GlobalStyles, { styles: {
742
- body: {
743
- WebkitFontSmoothing: 'antialiased',
744
- MozOsxFontSmoothing: 'grayscale',
745
- },
746
- html: {
747
- fontFamily: "'Inter', system-ui, sans-serif",
748
- },
749
- } }));
750
-
751
- const UILibraryThemeProvider = ({ children, primaryColor, secondaryColor, enableCssBaseline = true, }) => {
752
- const themeConfig = {};
753
- if (primaryColor) {
754
- themeConfig.primaryColor = primaryColor;
755
- }
756
- if (secondaryColor) {
757
- themeConfig.secondaryColor = secondaryColor;
758
- }
759
- const theme = createCustomTheme(themeConfig);
760
- return (jsxs(ThemeProvider, { theme: theme, children: [enableCssBaseline && jsx(CssBaseline, {}), jsx(Fonts, {}), children] }));
761
- };
762
-
763
- export { Accordion, AccordionContent, AccordionItem, AccordionTrigger, Blockquote, Button, Caption, Code, Heading, Lead, Muted, RadioGroup, Select, Strong, Switch, Text, TextInput, UILibraryThemeProvider, createCustomTheme, designTokens, theme };