shared-design-system 1.11.0 → 1.13.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (81) hide show
  1. package/dist/src/components/Alert.d.ts +2 -1
  2. package/dist/src/components/Alert.js +80 -38
  3. package/dist/src/components/Alert.js.map +1 -1
  4. package/dist/src/components/Avatar.d.ts +11 -1
  5. package/dist/src/components/Avatar.js +96 -31
  6. package/dist/src/components/Avatar.js.map +1 -1
  7. package/dist/src/components/Badge.d.ts +5 -2
  8. package/dist/src/components/Badge.js +94 -30
  9. package/dist/src/components/Badge.js.map +1 -1
  10. package/dist/src/components/Breadcrumbs.d.ts +4 -1
  11. package/dist/src/components/Breadcrumbs.js +56 -27
  12. package/dist/src/components/Breadcrumbs.js.map +1 -1
  13. package/dist/src/components/Button.d.ts +4 -2
  14. package/dist/src/components/Button.js +99 -95
  15. package/dist/src/components/Button.js.map +1 -1
  16. package/dist/src/components/Card.d.ts +6 -1
  17. package/dist/src/components/Card.js +109 -21
  18. package/dist/src/components/Card.js.map +1 -1
  19. package/dist/src/components/ConfirmModal.d.ts +5 -2
  20. package/dist/src/components/ConfirmModal.js +99 -47
  21. package/dist/src/components/ConfirmModal.js.map +1 -1
  22. package/dist/src/components/DatePicker.js +55 -8
  23. package/dist/src/components/DatePicker.js.map +1 -1
  24. package/dist/src/components/Divider.d.ts +5 -1
  25. package/dist/src/components/Divider.js +53 -18
  26. package/dist/src/components/Divider.js.map +1 -1
  27. package/dist/src/components/InputComponents.d.ts +2 -4
  28. package/dist/src/components/InputComponents.js +89 -132
  29. package/dist/src/components/InputComponents.js.map +1 -1
  30. package/dist/src/components/ListComponents.d.ts +7 -4
  31. package/dist/src/components/ListComponents.js +70 -35
  32. package/dist/src/components/ListComponents.js.map +1 -1
  33. package/dist/src/components/LoadingSpinner.d.ts +9 -2
  34. package/dist/src/components/LoadingSpinner.js +59 -17
  35. package/dist/src/components/LoadingSpinner.js.map +1 -1
  36. package/dist/src/components/MultiSelect.d.ts +14 -0
  37. package/dist/src/components/MultiSelect.js +142 -0
  38. package/dist/src/components/MultiSelect.js.map +1 -0
  39. package/dist/src/components/Progress.d.ts +5 -1
  40. package/dist/src/components/Progress.js +58 -26
  41. package/dist/src/components/Progress.js.map +1 -1
  42. package/dist/src/components/Radio.d.ts +4 -0
  43. package/dist/src/components/Radio.js +50 -24
  44. package/dist/src/components/Radio.js.map +1 -1
  45. package/dist/src/components/ReadOnlyField.d.ts +6 -1
  46. package/dist/src/components/ReadOnlyField.js +78 -18
  47. package/dist/src/components/ReadOnlyField.js.map +1 -1
  48. package/dist/src/components/Select.d.ts +19 -0
  49. package/dist/src/components/Select.js +110 -0
  50. package/dist/src/components/Select.js.map +1 -0
  51. package/dist/src/components/Skeleton.d.ts +3 -1
  52. package/dist/src/components/Skeleton.js +52 -22
  53. package/dist/src/components/Skeleton.js.map +1 -1
  54. package/dist/src/components/Stack.d.ts +4 -0
  55. package/dist/src/components/Stack.js +32 -18
  56. package/dist/src/components/Stack.js.map +1 -1
  57. package/dist/src/components/Steps.d.ts +3 -1
  58. package/dist/src/components/Steps.js +93 -68
  59. package/dist/src/components/Steps.js.map +1 -1
  60. package/dist/src/components/Switch.d.ts +6 -2
  61. package/dist/src/components/Switch.js +45 -22
  62. package/dist/src/components/Switch.js.map +1 -1
  63. package/dist/src/components/Table.d.ts +9 -1
  64. package/dist/src/components/Table.js +102 -37
  65. package/dist/src/components/Table.js.map +1 -1
  66. package/dist/src/components/Tabs.d.ts +9 -5
  67. package/dist/src/components/Tabs.js +88 -88
  68. package/dist/src/components/Tabs.js.map +1 -1
  69. package/dist/src/components/Tag.d.ts +5 -2
  70. package/dist/src/components/Tag.js +106 -28
  71. package/dist/src/components/Tag.js.map +1 -1
  72. package/dist/src/components/Tooltip.d.ts +3 -0
  73. package/dist/src/components/Tooltip.js +89 -38
  74. package/dist/src/components/Tooltip.js.map +1 -1
  75. package/dist/src/components/Typography.d.ts +15 -2
  76. package/dist/src/components/Typography.js +108 -53
  77. package/dist/src/components/Typography.js.map +1 -1
  78. package/dist/src/index.d.ts +12 -8
  79. package/dist/src/index.js +6 -4
  80. package/dist/src/index.js.map +1 -1
  81. package/package.json +1 -1
@@ -1,21 +1,63 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { tokens } from '../tokens';
3
- export const LoadingSpinner = ({ size = 'md', color = 'primary', className = '' }) => {
4
- const getDims = () => {
5
- switch (size) {
6
- case 'sm': return '16px';
7
- case 'lg': return '48px';
8
- case 'md':
9
- default: return '32px';
10
- }
11
- };
12
- const getStrokeWidth = () => size === 'sm' ? '3' : '4';
13
- const getColor = () => color === 'white' ? '#FFFFFF' : tokens.color.primary;
14
- const dims = getDims();
15
- return (_jsx("div", { style: { display: 'inline-flex', alignItems: 'center', justifyContent: 'center' }, className: className, children: _jsxs("svg", { width: dims, height: dims, viewBox: "0 0 50 50", style: { animation: 'ds-spin 1s linear infinite' }, children: [_jsx("circle", { cx: "25", cy: "25", r: "20", fill: "none", stroke: getColor(), strokeWidth: getStrokeWidth(), strokeDasharray: "90, 150", strokeLinecap: "round", style: { opacity: 1 } }), _jsx("style", { children: `
16
- @keyframes ds-spin {
17
- 100% { transform: rotate(360deg); }
18
- }
19
- ` })] }) }));
3
+ const SIZE_MAP = {
4
+ xs: '14px',
5
+ sm: '20px',
6
+ md: '32px',
7
+ lg: '48px',
8
+ xl: '64px',
9
+ };
10
+ const COLOR_MAP = {
11
+ primary: tokens.color.primary,
12
+ white: '#ffffff',
13
+ success: tokens.color.success,
14
+ warning: tokens.color.warning,
15
+ danger: tokens.color.danger,
16
+ info: tokens.color.info,
17
+ slate: tokens.color.slate400,
18
+ };
19
+ export const LoadingSpinner = ({ size = 'md', color = 'primary', label, className = '', style = {}, }) => {
20
+ const dims = SIZE_MAP[size] || '32px';
21
+ const strokeWidth = size === 'xs' || size === 'sm' ? '3' : size === 'xl' ? '5' : '4';
22
+ const resolvedColor = COLOR_MAP[color] || tokens.color.primary;
23
+ return (_jsxs("div", { style: {
24
+ display: 'inline-flex',
25
+ flexDirection: label ? 'column' : 'row',
26
+ alignItems: 'center',
27
+ justifyContent: 'center',
28
+ gap: label ? tokens.spacing[2] : 0,
29
+ ...style,
30
+ }, className: `ds-spinner ${className}`, children: [_jsxs("svg", { width: dims, height: dims, viewBox: "0 0 50 50", style: { animation: 'ds-spin 0.75s linear infinite', flexShrink: 0 }, "aria-hidden": "true", children: [_jsx("circle", { cx: "25", cy: "25", r: "20", fill: "none", stroke: "currentColor", strokeWidth: strokeWidth, style: { color: `${resolvedColor}20` } }), _jsx("circle", { cx: "25", cy: "25", r: "20", fill: "none", stroke: resolvedColor, strokeWidth: strokeWidth, strokeDasharray: "80, 150", strokeLinecap: "round", style: { transformOrigin: 'center' } }), _jsx("style", { children: `
31
+ @keyframes ds-spin {
32
+ 0% { transform: rotate(0deg); }
33
+ 100% { transform: rotate(360deg); }
34
+ }
35
+ ` })] }), label && (_jsx("span", { style: {
36
+ fontSize: size === 'xs' || size === 'sm' ? tokens.font.xs : tokens.font.sm,
37
+ fontWeight: tokens.font.weightMedium,
38
+ color: resolvedColor,
39
+ lineHeight: 1.4,
40
+ }, children: label }))] }));
41
+ };
42
+ export const LoadingOverlay = ({ visible = true, label, }) => {
43
+ if (!visible)
44
+ return null;
45
+ return (_jsxs("div", { style: {
46
+ position: 'absolute',
47
+ inset: 0,
48
+ display: 'flex',
49
+ flexDirection: 'column',
50
+ alignItems: 'center',
51
+ justifyContent: 'center',
52
+ gap: tokens.spacing[3],
53
+ backgroundColor: 'rgba(255, 255, 255, 0.75)',
54
+ backdropFilter: 'blur(3px)',
55
+ borderRadius: 'inherit',
56
+ zIndex: 10,
57
+ }, children: [_jsx(LoadingSpinner, { size: "md" }), label && (_jsx("span", { style: {
58
+ fontSize: tokens.font.sm,
59
+ fontWeight: tokens.font.weightMedium,
60
+ color: tokens.color.textMuted,
61
+ }, children: label }))] }));
20
62
  };
21
63
  //# sourceMappingURL=LoadingSpinner.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"LoadingSpinner.js","sourceRoot":"","sources":["../../../src/components/LoadingSpinner.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAQnC,MAAM,CAAC,MAAM,cAAc,GAAkC,CAAC,EAAE,IAAI,GAAG,IAAI,EAAE,KAAK,GAAG,SAAS,EAAE,SAAS,GAAG,EAAE,EAAE,EAAE,EAAE;IAClH,MAAM,OAAO,GAAG,GAAG,EAAE;QACnB,QAAO,IAAI,EAAE,CAAC;YACZ,KAAK,IAAI,CAAC,CAAC,OAAO,MAAM,CAAC;YACzB,KAAK,IAAI,CAAC,CAAC,OAAO,MAAM,CAAC;YACzB,KAAK,IAAI,CAAC;YACV,OAAO,CAAC,CAAC,OAAO,MAAM,CAAC;QACzB,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,cAAc,GAAG,GAAG,EAAE,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;IACvD,MAAM,QAAQ,GAAG,GAAG,EAAE,CAAC,KAAK,KAAK,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC;IAE5E,MAAM,IAAI,GAAG,OAAO,EAAE,CAAC;IAEvB,OAAO,CACL,cAAK,KAAK,EAAE,EAAE,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,QAAQ,EAAE,cAAc,EAAE,QAAQ,EAAE,EAAE,SAAS,EAAE,SAAS,YAC1G,eACE,KAAK,EAAE,IAAI,EACX,MAAM,EAAE,IAAI,EACZ,OAAO,EAAC,WAAW,EACnB,KAAK,EAAE,EAAE,SAAS,EAAE,4BAA4B,EAAE,aAElD,iBACE,EAAE,EAAC,IAAI,EACP,EAAE,EAAC,IAAI,EACP,CAAC,EAAC,IAAI,EACN,IAAI,EAAC,MAAM,EACX,MAAM,EAAE,QAAQ,EAAE,EAClB,WAAW,EAAE,cAAc,EAAE,EAC7B,eAAe,EAAC,SAAS,EACzB,aAAa,EAAC,OAAO,EACrB,KAAK,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,GACrB,EACF,0BAAQ;;;;SAIP,GAAS,IACN,GACF,CACP,CAAC;AACJ,CAAC,CAAC"}
1
+ {"version":3,"file":"LoadingSpinner.js","sourceRoot":"","sources":["../../../src/components/LoadingSpinner.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ import React from 'react';
2
+ export interface MultiSelectProps {
3
+ label?: string;
4
+ required?: boolean;
5
+ options: string[];
6
+ selectedValues: string[];
7
+ onChange: (values: string[]) => void;
8
+ onAddNew?: (value: string) => void;
9
+ placeholder?: string;
10
+ className?: string;
11
+ style?: React.CSSProperties;
12
+ error?: string;
13
+ }
14
+ export declare const MultiSelect: React.FC<MultiSelectProps>;
@@ -0,0 +1,142 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useState, useRef, useEffect } from 'react';
3
+ import { tokens } from '../tokens';
4
+ const floatingLabelStyle = {
5
+ position: 'absolute',
6
+ top: '-10px',
7
+ left: '14px',
8
+ backgroundColor: 'white',
9
+ padding: '0 6px',
10
+ fontSize: '10px',
11
+ fontWeight: tokens.font.weightBold,
12
+ color: tokens.color.slate400,
13
+ textTransform: 'uppercase',
14
+ letterSpacing: '0.1em',
15
+ zIndex: 10,
16
+ transition: tokens.transition.fast,
17
+ };
18
+ export const MultiSelect = ({ label, required, options, selectedValues, onChange, onAddNew, placeholder = 'Chọn...', className = '', style = {}, error }) => {
19
+ const [isOpen, setIsOpen] = useState(false);
20
+ const [searchValue, setSearchValue] = useState('');
21
+ const containerRef = useRef(null);
22
+ useEffect(() => {
23
+ const handleClickOutside = (event) => {
24
+ if (containerRef.current && !containerRef.current.contains(event.target)) {
25
+ setIsOpen(false);
26
+ setSearchValue('');
27
+ }
28
+ };
29
+ document.addEventListener('mousedown', handleClickOutside);
30
+ return () => document.removeEventListener('mousedown', handleClickOutside);
31
+ }, []);
32
+ const handleToggleValue = (value) => {
33
+ if (selectedValues.includes(value)) {
34
+ onChange(selectedValues.filter(v => v !== value));
35
+ }
36
+ else {
37
+ onChange([...selectedValues, value]);
38
+ }
39
+ };
40
+ const handleAddValue = () => {
41
+ if (!searchValue.trim())
42
+ return;
43
+ if (onAddNew) {
44
+ onAddNew(searchValue.trim());
45
+ }
46
+ else {
47
+ if (!options.includes(searchValue.trim())) {
48
+ // Fallback if onAddNew is not provided, we just add it to selection if it's not there
49
+ handleToggleValue(searchValue.trim());
50
+ }
51
+ }
52
+ setSearchValue('');
53
+ };
54
+ const filteredOptions = options.filter(opt => opt.toLowerCase().includes(searchValue.toLowerCase()));
55
+ return (_jsxs("div", { ref: containerRef, className: className, style: { position: 'relative', width: '100%', ...style }, children: [label && (_jsxs("label", { style: {
56
+ ...floatingLabelStyle,
57
+ color: isOpen ? tokens.color.borderFocus : (error ? tokens.color.danger : tokens.color.slate400)
58
+ }, children: [label, " ", required && _jsx("span", { style: { color: tokens.color.danger }, children: "*" })] })), _jsxs("div", { onClick: () => setIsOpen(!isOpen), style: {
59
+ minHeight: '46px',
60
+ padding: '10px 14px',
61
+ backgroundColor: tokens.color.white,
62
+ border: `1px solid ${error ? tokens.color.danger : (isOpen ? tokens.color.borderFocus : tokens.color.slate200)}`,
63
+ borderRadius: tokens.radius.lg,
64
+ display: 'flex',
65
+ flexWrap: 'wrap',
66
+ gap: '6px',
67
+ alignItems: 'center',
68
+ cursor: 'pointer',
69
+ transition: tokens.transition.fast,
70
+ boxShadow: isOpen ? '0 0 0 3px rgba(245, 158, 11, 0.1)' : tokens.shadow.sm,
71
+ }, children: [selectedValues.length > 0 ? (selectedValues.map(val => (_jsxs("span", { style: {
72
+ display: 'inline-flex',
73
+ alignItems: 'center',
74
+ gap: '6px',
75
+ padding: '2px 8px',
76
+ backgroundColor: tokens.color.slate100,
77
+ color: tokens.color.slate700,
78
+ borderRadius: '6px',
79
+ fontSize: '11px',
80
+ fontWeight: tokens.font.weightBold,
81
+ border: `1px solid ${tokens.color.slate200}`,
82
+ }, onClick: (e) => {
83
+ e.stopPropagation();
84
+ handleToggleValue(val);
85
+ }, children: [val, _jsxs("svg", { style: { width: '12px', height: '12px', opacity: 0.6 }, viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "3", strokeLinecap: "round", strokeLinejoin: "round", children: [_jsx("line", { x1: "18", y1: "6", x2: "6", y2: "18" }), _jsx("line", { x1: "6", y1: "6", x2: "18", y2: "18" })] })] }, val)))) : (_jsx("span", { style: { color: tokens.color.slate400, fontSize: tokens.font.sm, fontWeight: tokens.font.weightMedium }, children: placeholder })), _jsx("div", { style: { marginLeft: 'auto', color: tokens.color.slate300 }, children: _jsx("svg", { style: { width: '16px', height: '16px', transition: tokens.transition.fast, transform: isOpen ? 'rotate(180deg)' : 'none' }, viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2.5", strokeLinecap: "round", strokeLinejoin: "round", children: _jsx("polyline", { points: "6 9 12 15 18 9" }) }) })] }), isOpen && (_jsxs("div", { style: {
86
+ position: 'absolute',
87
+ top: '100%',
88
+ left: 0,
89
+ right: 0,
90
+ marginTop: '8px',
91
+ backgroundColor: tokens.color.white,
92
+ borderRadius: tokens.radius.xl,
93
+ boxShadow: tokens.shadow.xl,
94
+ border: `1px solid ${tokens.color.slate100}`,
95
+ zIndex: 1000,
96
+ overflow: 'hidden',
97
+ animation: 'reveal 0.2s ease-out'
98
+ }, children: [_jsxs("div", { style: { padding: '12px', borderBottom: `1px solid ${tokens.color.slate100}`, display: 'flex', gap: '8px' }, children: [_jsx("input", { type: "text", autoFocus: true, value: searchValue, onChange: (e) => setSearchValue(e.target.value), placeholder: "T\u00ECm ho\u1EB7c th\u00EAm m\u1EDBi...", style: {
99
+ flex: 1,
100
+ padding: '8px 12px',
101
+ fontSize: '12px',
102
+ backgroundColor: tokens.color.slate50,
103
+ border: 'none',
104
+ borderRadius: '12px',
105
+ outline: 'none',
106
+ }, onKeyDown: (e) => {
107
+ if (e.key === 'Enter') {
108
+ e.preventDefault();
109
+ handleAddValue();
110
+ }
111
+ } }), searchValue && !options.includes(searchValue) && (_jsx("button", { type: "button", onClick: handleAddValue, style: {
112
+ padding: '0 16px',
113
+ backgroundColor: tokens.color.warning,
114
+ color: 'white',
115
+ fontSize: '10px',
116
+ fontWeight: tokens.font.weightBold,
117
+ borderRadius: '12px',
118
+ border: 'none',
119
+ cursor: 'pointer'
120
+ }, children: "TH\u00CAM" }))] }), _jsx("div", { style: { maxHeight: '240px', overflowY: 'auto', padding: '4px' }, children: filteredOptions.length > 0 ? (filteredOptions.map(opt => {
121
+ const isSelected = selectedValues.includes(opt);
122
+ return (_jsxs("div", { onClick: () => handleToggleValue(opt), style: {
123
+ padding: '10px 16px',
124
+ fontSize: '13px',
125
+ cursor: 'pointer',
126
+ display: 'flex',
127
+ alignItems: 'center',
128
+ justifyContent: 'space-between',
129
+ borderRadius: '10px',
130
+ backgroundColor: isSelected ? 'transparent' : 'transparent',
131
+ transition: tokens.transition.fast,
132
+ fontWeight: isSelected ? tokens.font.weightBold : tokens.font.weightMedium,
133
+ color: isSelected ? tokens.color.slate800 : tokens.color.slate600,
134
+ }, onMouseEnter: (e) => e.currentTarget.style.backgroundColor = tokens.color.slate50, onMouseLeave: (e) => e.currentTarget.style.backgroundColor = 'transparent', children: [opt, isSelected && (_jsx("svg", { width: "16", height: "16", viewBox: "0 0 24 24", fill: "none", stroke: tokens.color.success, strokeWidth: "3", strokeLinecap: "round", strokeLinejoin: "round", children: _jsx("polyline", { points: "20 6 9 17 4 12" }) }))] }, opt));
135
+ })) : (_jsx("div", { style: { padding: '20px', textAlign: 'center', color: tokens.color.slate400, fontSize: '11px', fontStyle: 'italic' }, children: "Kh\u00F4ng t\u00ECm th\u1EA5y k\u1EBFt qu\u1EA3 ph\u00F9 h\u1EE3p" })) })] })), error && _jsx("p", { style: { fontSize: '11px', color: tokens.color.danger, marginTop: '6px', fontWeight: tokens.font.weightMedium }, children: error }), _jsx("style", { children: `
136
+ @keyframes reveal {
137
+ from { opacity: 0; transform: translateY(-8px); }
138
+ to { opacity: 1; transform: translateY(0); }
139
+ }
140
+ ` })] }));
141
+ };
142
+ //# sourceMappingURL=MultiSelect.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MultiSelect.js","sourceRoot":"","sources":["../../../src/components/MultiSelect.tsx"],"names":[],"mappings":"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"}
@@ -2,8 +2,12 @@ import React from 'react';
2
2
  export interface ProgressProps extends React.HTMLAttributes<HTMLDivElement> {
3
3
  value?: number;
4
4
  max?: number;
5
- color?: 'primary' | 'success' | 'warning' | 'danger' | 'info';
5
+ color?: 'primary' | 'success' | 'warning' | 'danger' | 'info' | 'gradient';
6
+ size?: 'xs' | 'sm' | 'md' | 'lg';
6
7
  height?: string;
7
8
  showLabel?: boolean;
9
+ label?: string;
10
+ striped?: boolean;
11
+ indeterminate?: boolean;
8
12
  }
9
13
  export declare const Progress: React.FC<ProgressProps>;
@@ -1,43 +1,75 @@
1
- import { jsxs as _jsxs, jsx as _jsx } from "react/jsx-runtime";
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { tokens } from '../tokens';
3
- export const Progress = ({ value = 0, max = 100, color = 'primary', height = '8px', className = '', style = {}, showLabel = false, ...props }) => {
4
- const percentage = Math.min(100, Math.max(0, (value / max) * 100));
5
- const getColor = () => {
6
- switch (color) {
7
- case 'success': return tokens.color.success;
8
- case 'warning': return tokens.color.warning;
9
- case 'danger': return tokens.color.danger;
10
- case 'info': return tokens.color.info;
11
- case 'primary':
12
- default: return tokens.color.primary;
3
+ const COLOR_MAP = {
4
+ success: tokens.color.success,
5
+ warning: tokens.color.warning,
6
+ danger: tokens.color.danger,
7
+ info: tokens.color.info,
8
+ primary: tokens.color.primary,
9
+ };
10
+ const SIZE_HEIGHT = {
11
+ xs: '4px',
12
+ sm: '6px',
13
+ md: '10px',
14
+ lg: '14px',
15
+ };
16
+ export const Progress = ({ value = 0, max = 100, color = 'primary', size = 'sm', height, className = '', style = {}, showLabel = false, label, striped = false, indeterminate = false, ...props }) => {
17
+ const percentage = indeterminate ? 100 : Math.min(100, Math.max(0, (value / max) * 100));
18
+ const barHeight = height || SIZE_HEIGHT[size] || '6px';
19
+ const getBarColor = () => {
20
+ if (color === 'gradient') {
21
+ return `linear-gradient(90deg, ${tokens.color.primary} 0%, ${tokens.color.info} 100%)`;
13
22
  }
23
+ return COLOR_MAP[color] || tokens.color.primary;
14
24
  };
15
- const containerStyle = {
16
- width: '100%',
17
- ...style
18
- };
25
+ const isGradient = color === 'gradient';
19
26
  const trackStyle = {
20
27
  width: '100%',
21
- height: height,
22
- backgroundColor: tokens.color.surfaceAlt,
28
+ height: barHeight,
29
+ backgroundColor: tokens.color.slate100,
23
30
  borderRadius: tokens.radius.full,
24
31
  overflow: 'hidden',
25
- border: `1px solid ${tokens.color.border}`,
26
32
  };
27
33
  const barStyle = {
28
- width: `${percentage}%`,
34
+ width: indeterminate ? '40%' : `${percentage}%`,
29
35
  height: '100%',
30
- backgroundColor: getColor(),
31
- transition: 'width 0.3s ease-in-out',
36
+ ...(isGradient
37
+ ? { background: getBarColor() }
38
+ : { backgroundColor: getBarColor() }),
32
39
  borderRadius: tokens.radius.full,
40
+ transition: indeterminate ? 'none' : 'width 0.4s cubic-bezier(0.4, 0, 0.2, 1)',
41
+ animation: indeterminate ? 'ds-progress-indeterminate 1.4s ease-in-out infinite' : undefined,
42
+ position: 'relative',
43
+ overflow: 'hidden',
44
+ ...(striped ? {
45
+ backgroundImage: `repeating-linear-gradient(
46
+ 45deg,
47
+ rgba(255,255,255,0.12) 0,
48
+ rgba(255,255,255,0.12) 6px,
49
+ transparent 6px,
50
+ transparent 12px
51
+ )`,
52
+ } : {}),
33
53
  };
34
- return (_jsxs("div", { style: containerStyle, className: className, ...props, children: [showLabel && (_jsx("div", { style: {
54
+ return (_jsxs("div", { style: { width: '100%', ...style }, className: `ds-progress ${className}`, ...props, children: [(showLabel || label) && (_jsxs("div", { style: {
35
55
  display: 'flex',
36
56
  justifyContent: 'space-between',
57
+ alignItems: 'center',
37
58
  marginBottom: tokens.spacing[1],
38
- fontSize: tokens.font.xs,
39
- fontWeight: tokens.font.weightBold,
40
- color: tokens.color.textMuted
41
- }, children: _jsxs("span", { children: [percentage.toFixed(0), "%"] }) })), _jsx("div", { style: trackStyle, children: _jsx("div", { style: barStyle }) })] }));
59
+ }, children: [label && (_jsx("span", { style: {
60
+ fontSize: tokens.font.xs,
61
+ fontWeight: tokens.font.weightSemibold,
62
+ color: tokens.color.textMuted,
63
+ letterSpacing: '0.02em',
64
+ }, children: label })), showLabel && !indeterminate && (_jsxs("span", { style: {
65
+ fontSize: tokens.font.xs,
66
+ fontWeight: tokens.font.weightBold,
67
+ color: COLOR_MAP[color] || tokens.color.primary,
68
+ }, children: [percentage.toFixed(0), "%"] }))] })), _jsx("div", { style: trackStyle, children: _jsx("div", { style: barStyle, children: _jsx("style", { children: `
69
+ @keyframes ds-progress-indeterminate {
70
+ 0% { transform: translateX(-200%); }
71
+ 100% { transform: translateX(400%); }
72
+ }
73
+ ` }) }) })] }));
42
74
  };
43
75
  //# sourceMappingURL=Progress.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Progress.js","sourceRoot":"","sources":["../../../src/components/Progress.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAUnC,MAAM,CAAC,MAAM,QAAQ,GAA4B,CAAC,EAChD,KAAK,GAAG,CAAC,EACT,GAAG,GAAG,GAAG,EACT,KAAK,GAAG,SAAS,EACjB,MAAM,GAAG,KAAK,EACd,SAAS,GAAG,EAAE,EACd,KAAK,GAAG,EAAE,EACV,SAAS,GAAG,KAAK,EACjB,GAAG,KAAK,EACT,EAAE,EAAE;IACH,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;IAEnE,MAAM,QAAQ,GAAG,GAAG,EAAE;QACpB,QAAQ,KAAK,EAAE,CAAC;YACd,KAAK,SAAS,CAAC,CAAC,OAAO,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC;YAC5C,KAAK,SAAS,CAAC,CAAC,OAAO,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC;YAC5C,KAAK,QAAQ,CAAC,CAAC,OAAO,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC;YAC1C,KAAK,MAAM,CAAC,CAAC,OAAO,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC;YACtC,KAAK,SAAS,CAAC;YACf,OAAO,CAAC,CAAC,OAAO,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC;QACvC,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,cAAc,GAAwB;QAC1C,KAAK,EAAE,MAAM;QACb,GAAG,KAAK;KACT,CAAC;IAEF,MAAM,UAAU,GAAwB;QACtC,KAAK,EAAE,MAAM;QACb,MAAM,EAAE,MAAM;QACd,eAAe,EAAE,MAAM,CAAC,KAAK,CAAC,UAAU;QACxC,YAAY,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI;QAChC,QAAQ,EAAE,QAAQ;QAClB,MAAM,EAAE,aAAa,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE;KAC3C,CAAC;IAEF,MAAM,QAAQ,GAAwB;QACpC,KAAK,EAAE,GAAG,UAAU,GAAG;QACvB,MAAM,EAAE,MAAM;QACd,eAAe,EAAE,QAAQ,EAAE;QAC3B,UAAU,EAAE,wBAAwB;QACpC,YAAY,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI;KACjC,CAAC;IAEF,OAAO,CACL,eAAK,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,SAAS,KAAM,KAAK,aACxD,SAAS,IAAI,CACZ,cAAK,KAAK,EAAE;oBACV,OAAO,EAAE,MAAM;oBACf,cAAc,EAAE,eAAe;oBAC/B,YAAY,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;oBAC/B,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE;oBACxB,UAAU,EAAE,MAAM,CAAC,IAAI,CAAC,UAAU;oBAClC,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,SAAS;iBAC9B,YACC,2BAAO,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,GACjC,CACP,EACD,cAAK,KAAK,EAAE,UAAU,YACpB,cAAK,KAAK,EAAE,QAAQ,GAAI,GACpB,IACF,CACP,CAAC;AACJ,CAAC,CAAC"}
1
+ {"version":3,"file":"Progress.js","sourceRoot":"","sources":["../../../src/components/Progress.tsx"],"names":[],"mappings":"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"}
@@ -2,11 +2,14 @@ import React from 'react';
2
2
  import { tokens } from '../tokens';
3
3
  export interface RadioProps {
4
4
  label?: React.ReactNode;
5
+ description?: string;
5
6
  checked: boolean;
6
7
  name?: string;
7
8
  value?: string | number;
8
9
  onChange?: React.ChangeEventHandler<HTMLInputElement>;
9
10
  disabled?: boolean;
11
+ size?: 'sm' | 'md' | 'lg';
12
+ color?: 'primary' | 'success' | 'warning' | 'danger';
10
13
  className?: string;
11
14
  style?: React.CSSProperties;
12
15
  }
@@ -15,6 +18,7 @@ export interface RadioGroupProps {
15
18
  children: React.ReactNode;
16
19
  direction?: 'row' | 'column';
17
20
  spacing?: keyof typeof tokens.spacing;
21
+ label?: string;
18
22
  className?: string;
19
23
  style?: React.CSSProperties;
20
24
  }
@@ -1,51 +1,77 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { tokens } from '../tokens';
3
- export const Radio = ({ label, checked, name, value, onChange, disabled = false, className = '', style = {}, }) => {
3
+ const COLOR_MAP = {
4
+ primary: tokens.color.primary,
5
+ success: tokens.color.success,
6
+ warning: tokens.color.warning,
7
+ danger: tokens.color.danger,
8
+ };
9
+ const SIZE_CONFIG = {
10
+ sm: { outer: '16px', inner: '8px' },
11
+ md: { outer: '20px', inner: '10px' },
12
+ lg: { outer: '24px', inner: '12px' },
13
+ };
14
+ export const Radio = ({ label, description, checked, name, value, onChange, disabled = false, size = 'md', color = 'primary', className = '', style = {}, }) => {
15
+ const activeColor = COLOR_MAP[color] || tokens.color.primary;
16
+ const sc = SIZE_CONFIG[size] || SIZE_CONFIG.md;
4
17
  const containerStyle = {
5
18
  display: 'inline-flex',
6
- alignItems: 'center',
19
+ alignItems: description ? 'flex-start' : 'center',
7
20
  gap: tokens.spacing['3'],
8
21
  cursor: disabled ? 'not-allowed' : 'pointer',
9
- opacity: disabled ? 0.6 : 1,
22
+ opacity: disabled ? 0.55 : 1,
10
23
  userSelect: 'none',
11
24
  ...style,
12
25
  };
13
26
  const radioBoxStyle = {
14
27
  position: 'relative',
15
- width: '20px',
16
- height: '20px',
28
+ width: sc.outer,
29
+ height: sc.outer,
17
30
  borderRadius: '50%',
18
- border: `2px solid ${checked ? tokens.color.primary : tokens.color.border}`,
31
+ border: `2px solid ${checked ? activeColor : tokens.color.slate300}`,
19
32
  backgroundColor: tokens.color.surface,
20
33
  display: 'flex',
21
34
  alignItems: 'center',
22
35
  justifyContent: 'center',
23
- transition: tokens.transition.fast,
36
+ transition: 'border-color 0.2s, box-shadow 0.2s',
24
37
  flexShrink: 0,
38
+ boxShadow: checked ? `0 0 0 3px ${activeColor}20` : 'none',
39
+ marginTop: description ? '2px' : '0',
25
40
  };
26
41
  const innerCircleStyle = {
27
- width: '10px',
28
- height: '10px',
42
+ width: sc.inner,
43
+ height: sc.inner,
29
44
  borderRadius: '50%',
30
- backgroundColor: tokens.color.primary,
45
+ backgroundColor: activeColor,
31
46
  transform: checked ? 'scale(1)' : 'scale(0)',
32
47
  opacity: checked ? 1 : 0,
33
- transition: tokens.transition.fast,
48
+ transition: 'transform 0.2s cubic-bezier(0.34, 1.56, 0.64, 1), opacity 0.15s ease',
34
49
  };
35
- return (_jsxs("label", { style: containerStyle, className: className, children: [_jsxs("div", { style: { position: 'relative', display: 'flex', alignItems: 'center' }, children: [_jsx("input", { type: "radio", name: name, value: value, checked: checked, onChange: onChange, disabled: disabled, style: { position: 'absolute', opacity: 0, width: 0, height: 0 } }), _jsx("div", { style: radioBoxStyle, children: _jsx("div", { style: innerCircleStyle }) })] }), label && (_jsx("span", { style: {
36
- fontSize: tokens.font.sm,
37
- fontWeight: tokens.font.weightMedium,
38
- color: tokens.color.text,
39
- }, children: label }))] }));
50
+ return (_jsxs("label", { style: containerStyle, className: `ds-radio ${className}`, children: [_jsxs("div", { style: { position: 'relative', display: 'flex', alignItems: 'center', flexShrink: 0 }, children: [_jsx("input", { type: "radio", name: name, value: value, checked: checked, onChange: onChange, disabled: disabled, style: { position: 'absolute', opacity: 0, width: 0, height: 0 } }), _jsx("div", { style: radioBoxStyle, children: _jsx("div", { style: innerCircleStyle }) })] }), (label || description) && (_jsxs("div", { style: { display: 'flex', flexDirection: 'column', gap: '2px' }, children: [label && (_jsx("span", { style: {
51
+ fontSize: tokens.font.sm,
52
+ fontWeight: tokens.font.weightSemibold,
53
+ color: disabled ? tokens.color.textDisabled : tokens.color.text,
54
+ lineHeight: 1.4,
55
+ }, children: label })), description && (_jsx("span", { style: {
56
+ fontSize: '11px',
57
+ fontWeight: tokens.font.weightMedium,
58
+ color: tokens.color.textMuted,
59
+ lineHeight: 1.4,
60
+ }, children: description }))] }))] }));
40
61
  };
41
- export const RadioGroup = ({ children, direction = 'column', spacing = '3', className = '', style = {}, }) => {
62
+ export const RadioGroup = ({ children, direction = 'column', spacing = '3', label, className = '', style = {}, }) => {
42
63
  var _a;
43
- const groupStyle = {
44
- display: 'flex',
45
- flexDirection: direction,
46
- gap: (_a = tokens.spacing[spacing]) !== null && _a !== void 0 ? _a : tokens.spacing['3'],
47
- ...style,
48
- };
49
- return (_jsx("div", { style: groupStyle, className: className, children: children }));
64
+ return (_jsxs("div", { role: "radiogroup", style: { ...style }, className: `ds-radio-group ${className}`, children: [label && (_jsx("div", { style: {
65
+ fontSize: tokens.font.xs,
66
+ fontWeight: tokens.font.weightBold,
67
+ color: tokens.color.slate500,
68
+ textTransform: 'uppercase',
69
+ letterSpacing: '0.07em',
70
+ marginBottom: tokens.spacing['2'],
71
+ }, children: label })), _jsx("div", { style: {
72
+ display: 'flex',
73
+ flexDirection: direction,
74
+ gap: (_a = tokens.spacing[spacing]) !== null && _a !== void 0 ? _a : tokens.spacing['3'],
75
+ }, children: children })] }));
50
76
  };
51
77
  //# sourceMappingURL=Radio.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Radio.js","sourceRoot":"","sources":["../../../src/components/Radio.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Radio.js","sourceRoot":"","sources":["../../../src/components/Radio.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAgBnC,MAAM,SAAS,GAA2B;IACxC,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,OAAO;IAC7B,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,OAAO;IAC7B,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,OAAO;IAC7B,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM;CAC5B,CAAC;AAEF,MAAM,WAAW,GAAG;IAClB,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE;IACnC,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE;IACpC,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE;CACrC,CAAC;AAEF,MAAM,CAAC,MAAM,KAAK,GAAyB,CAAC,EAC1C,KAAK,EACL,WAAW,EACX,OAAO,EACP,IAAI,EACJ,KAAK,EACL,QAAQ,EACR,QAAQ,GAAG,KAAK,EAChB,IAAI,GAAG,IAAI,EACX,KAAK,GAAG,SAAS,EACjB,SAAS,GAAG,EAAE,EACd,KAAK,GAAG,EAAE,GACX,EAAE,EAAE;IACH,MAAM,WAAW,GAAG,SAAS,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC;IAC7D,MAAM,EAAE,GAAG,WAAW,CAAC,IAAI,CAAC,IAAI,WAAW,CAAC,EAAE,CAAC;IAE/C,MAAM,cAAc,GAAwB;QAC1C,OAAO,EAAE,aAAa;QACtB,UAAU,EAAE,WAAW,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,QAAQ;QACjD,GAAG,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC;QACxB,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS;QAC5C,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC5B,UAAU,EAAE,MAAe;QAC3B,GAAG,KAAK;KACT,CAAC;IAEF,MAAM,aAAa,GAAwB;QACzC,QAAQ,EAAE,UAAU;QACpB,KAAK,EAAE,EAAE,CAAC,KAAK;QACf,MAAM,EAAE,EAAE,CAAC,KAAK;QAChB,YAAY,EAAE,KAAK;QACnB,MAAM,EAAE,aAAa,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE;QACpE,eAAe,EAAE,MAAM,CAAC,KAAK,CAAC,OAAO;QACrC,OAAO,EAAE,MAAM;QACf,UAAU,EAAE,QAAQ;QACpB,cAAc,EAAE,QAAQ;QACxB,UAAU,EAAE,oCAAoC;QAChD,UAAU,EAAE,CAAC;QACb,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC,aAAa,WAAW,IAAI,CAAC,CAAC,CAAC,MAAM;QAC1D,SAAS,EAAE,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG;KACrC,CAAC;IAEF,MAAM,gBAAgB,GAAwB;QAC5C,KAAK,EAAE,EAAE,CAAC,KAAK;QACf,MAAM,EAAE,EAAE,CAAC,KAAK;QAChB,YAAY,EAAE,KAAK;QACnB,eAAe,EAAE,WAAW;QAC5B,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU;QAC5C,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACxB,UAAU,EAAE,sEAAsE;KACnF,CAAC;IAEF,OAAO,CACL,iBAAO,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,YAAY,SAAS,EAAE,aAC9D,eAAK,KAAK,EAAE,EAAE,QAAQ,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,UAAU,EAAE,CAAC,EAAE,aACxF,gBACE,IAAI,EAAC,OAAO,EACZ,IAAI,EAAE,IAAI,EACV,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,QAAQ,EAClB,KAAK,EAAE,EAAE,QAAQ,EAAE,UAAU,EAAE,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,GAChE,EACF,cAAK,KAAK,EAAE,aAAa,YACvB,cAAK,KAAK,EAAE,gBAAgB,GAAI,GAC5B,IACF,EACL,CAAC,KAAK,IAAI,WAAW,CAAC,IAAI,CACzB,eAAK,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,GAAG,EAAE,KAAK,EAAE,aACjE,KAAK,IAAI,CACR,eAAM,KAAK,EAAE;4BACX,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE;4BACxB,UAAU,EAAE,MAAM,CAAC,IAAI,CAAC,cAAc;4BACtC,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI;4BAC/D,UAAU,EAAE,GAAG;yBAChB,YACE,KAAK,GACD,CACR,EACA,WAAW,IAAI,CACd,eAAM,KAAK,EAAE;4BACX,QAAQ,EAAE,MAAM;4BAChB,UAAU,EAAE,MAAM,CAAC,IAAI,CAAC,YAAY;4BACpC,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,SAAS;4BAC7B,UAAU,EAAE,GAAG;yBAChB,YACE,WAAW,GACP,CACR,IACG,CACP,IACK,CACT,CAAC;AACJ,CAAC,CAAC;AAWF,MAAM,CAAC,MAAM,UAAU,GAA8B,CAAC,EACpD,QAAQ,EACR,SAAS,GAAG,QAAQ,EACpB,OAAO,GAAG,GAAG,EACb,KAAK,EACL,SAAS,GAAG,EAAE,EACd,KAAK,GAAG,EAAE,GACX,EAAE,EAAE;;IAAC,OAAA,CACJ,eAAK,IAAI,EAAC,YAAY,EAAC,KAAK,EAAE,EAAE,GAAG,KAAK,EAAE,EAAE,SAAS,EAAE,kBAAkB,SAAS,EAAE,aACjF,KAAK,IAAI,CACR,cAAK,KAAK,EAAE;oBACV,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE;oBACxB,UAAU,EAAE,MAAM,CAAC,IAAI,CAAC,UAAU;oBAClC,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,QAAQ;oBAC5B,aAAa,EAAE,WAAoB;oBACnC,aAAa,EAAE,QAAQ;oBACvB,YAAY,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC;iBAClC,YACE,KAAK,GACF,CACP,EACD,cAAK,KAAK,EAAE;oBACV,OAAO,EAAE,MAAM;oBACf,aAAa,EAAE,SAAS;oBACxB,GAAG,EAAE,MAAA,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,mCAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC;iBACpD,YACE,QAAQ,GACL,IACF,CACP,CAAA;CAAA,CAAC"}
@@ -1,6 +1,11 @@
1
1
  import React from 'react';
2
2
  export interface ReadOnlyFieldProps extends React.HTMLAttributes<HTMLDivElement> {
3
3
  label: string;
4
- value?: string;
4
+ value?: React.ReactNode;
5
+ icon?: React.ReactNode;
6
+ copyable?: boolean;
7
+ placeholder?: string;
8
+ hint?: string;
9
+ layout?: 'floating' | 'stacked';
5
10
  }
6
11
  export declare const ReadOnlyField: React.FC<ReadOnlyFieldProps>;