@zimyo/ui 1.1.4 → 1.1.6

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.
@@ -0,0 +1,763 @@
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 };