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,31 +1,60 @@
1
- import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
2
  import { tokens } from '../tokens';
3
- export const Breadcrumbs = ({ items = [], separator = '/', className = '', style = {} }) => {
4
- const containerStyle = {
5
- display: 'flex',
6
- alignItems: 'center',
7
- gap: tokens.spacing[2],
8
- fontSize: tokens.font.xs,
9
- color: tokens.color.textMuted,
10
- listStyle: 'none',
11
- padding: 0,
12
- margin: 0,
13
- ...style
14
- };
15
- const itemStyle = {
16
- display: 'flex',
17
- alignItems: 'center',
18
- gap: tokens.spacing[2],
19
- };
20
- const linkStyle = {
21
- color: 'inherit',
22
- textDecoration: 'none',
23
- cursor: 'pointer',
24
- transition: tokens.transition.fast,
25
- };
26
- return (_jsx("nav", { "aria-label": "Breadcrumb", className: className, children: _jsx("ol", { style: containerStyle, children: items.map((item, index) => {
27
- const isLast = index === items.length - 1;
28
- return (_jsx("li", { style: itemStyle, children: isLast ? (_jsx("span", { style: { fontWeight: tokens.font.weightBold, color: tokens.color.text }, children: item.label })) : (_jsxs(_Fragment, { children: [_jsx("span", { style: linkStyle, onClick: item.onClick, onMouseEnter: (e) => e.currentTarget.style.color = tokens.color.primary, onMouseLeave: (e) => e.currentTarget.style.color = 'inherit', children: item.label }), _jsx("span", { style: { opacity: 0.5, userSelect: 'none' }, children: separator })] })) }, index));
3
+ const ChevronSeparator = () => (_jsx("svg", { width: "14", height: "14", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: 2.5, strokeLinecap: "round", strokeLinejoin: "round", style: { opacity: 0.35, flexShrink: 0 }, children: _jsx("polyline", { points: "9 18 15 12 9 6" }) }));
4
+ export const Breadcrumbs = ({ items = [], separator, size = 'sm', maxItems, className = '', style = {}, }) => {
5
+ const fontSize = size === 'sm' ? tokens.font.xs : tokens.font.sm;
6
+ const resolvedSeparator = separator || _jsx(ChevronSeparator, {});
7
+ let displayItems = items;
8
+ if (maxItems && items.length > maxItems) {
9
+ const front = items.slice(0, 1);
10
+ const back = items.slice(-Math.max(1, maxItems - 2));
11
+ displayItems = [
12
+ ...front,
13
+ { label: '…' },
14
+ ...back,
15
+ ];
16
+ }
17
+ return (_jsx("nav", { "aria-label": "Breadcrumb", className: `ds-breadcrumbs ${className}`, children: _jsx("ol", { style: {
18
+ display: 'flex',
19
+ alignItems: 'center',
20
+ gap: tokens.spacing[1],
21
+ fontSize,
22
+ fontWeight: tokens.font.weightMedium,
23
+ color: tokens.color.textMuted,
24
+ listStyle: 'none',
25
+ padding: 0,
26
+ margin: 0,
27
+ flexWrap: 'wrap',
28
+ ...style,
29
+ }, children: displayItems.map((item, index) => {
30
+ const isLast = index === displayItems.length - 1;
31
+ return (_jsx("li", { style: { display: 'flex', alignItems: 'center', gap: tokens.spacing[1] }, children: isLast ? (_jsxs("span", { "aria-current": "page", style: {
32
+ fontWeight: tokens.font.weightSemibold,
33
+ color: tokens.color.slate700,
34
+ display: 'inline-flex',
35
+ alignItems: 'center',
36
+ gap: '4px',
37
+ maxWidth: '200px',
38
+ overflow: 'hidden',
39
+ textOverflow: 'ellipsis',
40
+ whiteSpace: 'nowrap',
41
+ }, children: [item.icon && _jsx("span", { style: { display: 'inline-flex', flexShrink: 0 }, children: item.icon }), item.label] })) : (_jsxs(_Fragment, { children: [_jsxs("span", { onClick: item.onClick, style: {
42
+ display: 'inline-flex',
43
+ alignItems: 'center',
44
+ gap: '4px',
45
+ color: 'inherit',
46
+ cursor: item.onClick ? 'pointer' : 'default',
47
+ transition: tokens.transition.fast,
48
+ borderRadius: tokens.radius.sm,
49
+ padding: '1px 3px',
50
+ margin: '-1px -3px',
51
+ }, onMouseEnter: (e) => {
52
+ if (item.onClick)
53
+ e.currentTarget.style.color = tokens.color.primary;
54
+ }, onMouseLeave: (e) => {
55
+ if (item.onClick)
56
+ e.currentTarget.style.color = '';
57
+ }, children: [item.icon && _jsx("span", { style: { display: 'inline-flex', flexShrink: 0 }, children: item.icon }), item.label] }), _jsx("span", { style: { display: 'inline-flex', alignItems: 'center' }, children: resolvedSeparator })] })) }, index));
29
58
  }) }) }));
30
59
  };
31
60
  //# sourceMappingURL=Breadcrumbs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Breadcrumbs.js","sourceRoot":"","sources":["../../../src/components/Breadcrumbs.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAYnC,MAAM,CAAC,MAAM,WAAW,GAA+B,CAAC,EACtD,KAAK,GAAG,EAAE,EACV,SAAS,GAAG,GAAG,EACf,SAAS,GAAG,EAAE,EACd,KAAK,GAAG,EAAE,EACX,EAAE,EAAE;IACH,MAAM,cAAc,GAAwB;QAC1C,OAAO,EAAE,MAAM;QACf,UAAU,EAAE,QAAQ;QACpB,GAAG,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;QACtB,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE;QACxB,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,SAAS;QAC7B,SAAS,EAAE,MAAM;QACjB,OAAO,EAAE,CAAC;QACV,MAAM,EAAE,CAAC;QACT,GAAG,KAAK;KACT,CAAC;IAEF,MAAM,SAAS,GAAwB;QACrC,OAAO,EAAE,MAAM;QACf,UAAU,EAAE,QAAQ;QACpB,GAAG,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;KACvB,CAAC;IAEF,MAAM,SAAS,GAAwB;QACrC,KAAK,EAAE,SAAS;QAChB,cAAc,EAAE,MAAM;QACtB,MAAM,EAAE,SAAS;QACjB,UAAU,EAAE,MAAM,CAAC,UAAU,CAAC,IAAI;KACnC,CAAC;IAEF,OAAO,CACL,4BAAgB,YAAY,EAAC,SAAS,EAAE,SAAS,YAC/C,aAAI,KAAK,EAAE,cAAc,YACtB,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;gBACzB,MAAM,MAAM,GAAG,KAAK,KAAK,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;gBAE1C,OAAO,CACL,aAAgB,KAAK,EAAE,SAAS,YAC7B,MAAM,CAAC,CAAC,CAAC,CACR,eAAM,KAAK,EAAE,EAAE,UAAU,EAAE,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,YAC1E,IAAI,CAAC,KAAK,GACN,CACR,CAAC,CAAC,CAAC,CACF,8BACE,eACE,KAAK,EAAE,SAAS,EAChB,OAAO,EAAE,IAAI,CAAC,OAAO,EACrB,YAAY,EAAE,CAAC,CAAC,EAAE,EAAE,CAAE,CAAC,CAAC,aAA6B,CAAC,KAAK,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,OAAO,EACxF,YAAY,EAAE,CAAC,CAAC,EAAE,EAAE,CAAE,CAAC,CAAC,aAA6B,CAAC,KAAK,CAAC,KAAK,GAAG,SAAS,YAE5E,IAAI,CAAC,KAAK,GACN,EACP,eAAM,KAAK,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,UAAU,EAAE,MAAe,EAAE,YAAG,SAAS,GAAQ,IAC7E,CACJ,IAjBM,KAAK,CAkBT,CACN,CAAC;YACJ,CAAC,CAAC,GACC,GACD,CACP,CAAC;AACJ,CAAC,CAAC"}
1
+ {"version":3,"file":"Breadcrumbs.js","sourceRoot":"","sources":["../../../src/components/Breadcrumbs.tsx"],"names":[],"mappings":"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"}
@@ -1,9 +1,11 @@
1
1
  import React from 'react';
2
2
  export interface ButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {
3
- variant?: 'primary' | 'secondary' | 'danger' | 'ghost' | 'amber';
4
- size?: 'sm' | 'md' | 'lg';
3
+ variant?: 'primary' | 'secondary' | 'danger' | 'ghost' | 'amber' | 'success' | 'outline';
4
+ size?: 'xs' | 'sm' | 'md' | 'lg';
5
5
  isActive?: boolean;
6
6
  startIcon?: React.ReactNode;
7
7
  endIcon?: React.ReactNode;
8
+ loading?: boolean;
9
+ fullWidth?: boolean;
8
10
  }
9
11
  export declare const Button: React.FC<ButtonProps>;
@@ -1,113 +1,117 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import React from 'react';
3
3
  import { tokens } from '../tokens';
4
- export const Button = ({ children, variant = 'primary', size = 'md', disabled = false, onClick, style = {}, className = '', isActive = false, startIcon, endIcon, ...props }) => {
4
+ const VARIANT_STYLES = {
5
+ primary: {
6
+ bg: tokens.color.white,
7
+ color: tokens.color.primary,
8
+ border: `1px solid rgba(37, 99, 235, 0.25)`,
9
+ shadow: tokens.shadow.sm,
10
+ hoverBg: 'transparent',
11
+ hoverColor: '#ffffff',
12
+ hoverBorder: tokens.color.primaryDark,
13
+ hoverShadow: `${tokens.shadow.md}, 0 0 0 3px rgba(37, 99, 235, 0.12)`,
14
+ gradient: `linear-gradient(135deg, ${tokens.color.primary} 0%, ${tokens.color.primaryDark} 100%)`,
15
+ },
16
+ secondary: {
17
+ bg: tokens.color.white,
18
+ color: tokens.color.slate600,
19
+ border: `1px solid ${tokens.color.slate200}`,
20
+ shadow: tokens.shadow.sm,
21
+ hoverBg: tokens.color.slate50,
22
+ hoverColor: tokens.color.slate800,
23
+ hoverBorder: tokens.color.slate300,
24
+ hoverShadow: tokens.shadow.sm,
25
+ },
26
+ danger: {
27
+ bg: tokens.color.white,
28
+ color: tokens.color.danger,
29
+ border: `1px solid rgba(220, 38, 38, 0.2)`,
30
+ shadow: tokens.shadow.sm,
31
+ hoverBg: tokens.color.danger,
32
+ hoverColor: '#ffffff',
33
+ hoverBorder: tokens.color.danger,
34
+ hoverShadow: `${tokens.shadow.md}, 0 0 0 3px rgba(220, 38, 38, 0.12)`,
35
+ },
36
+ success: {
37
+ bg: tokens.color.white,
38
+ color: tokens.color.success,
39
+ border: `1px solid rgba(5, 150, 105, 0.2)`,
40
+ shadow: tokens.shadow.sm,
41
+ hoverBg: tokens.color.success,
42
+ hoverColor: '#ffffff',
43
+ hoverBorder: tokens.color.success,
44
+ hoverShadow: `${tokens.shadow.md}, 0 0 0 3px rgba(5, 150, 105, 0.12)`,
45
+ },
46
+ amber: {
47
+ bg: tokens.color.white,
48
+ color: '#b45309',
49
+ border: `1px solid rgba(245, 158, 11, 0.25)`,
50
+ shadow: tokens.shadow.sm,
51
+ hoverBg: tokens.color.warning,
52
+ hoverColor: '#ffffff',
53
+ hoverBorder: tokens.color.warning,
54
+ hoverShadow: `${tokens.shadow.md}, 0 0 0 3px rgba(245, 158, 11, 0.12)`,
55
+ },
56
+ ghost: {
57
+ bg: 'transparent',
58
+ color: tokens.color.textMuted,
59
+ border: '1px solid transparent',
60
+ shadow: 'none',
61
+ hoverBg: tokens.color.slate100,
62
+ hoverColor: tokens.color.text,
63
+ hoverBorder: 'transparent',
64
+ hoverShadow: 'none',
65
+ },
66
+ outline: {
67
+ bg: 'transparent',
68
+ color: tokens.color.primary,
69
+ border: `1px solid ${tokens.color.primary}`,
70
+ shadow: 'none',
71
+ hoverBg: tokens.color.primaryLight,
72
+ hoverColor: tokens.color.primary,
73
+ hoverBorder: tokens.color.primary,
74
+ hoverShadow: 'none',
75
+ },
76
+ };
77
+ const SIZE_STYLES = {
78
+ xs: { padding: '2px 10px', fontSize: '11px', height: '26px', borderRadius: tokens.radius.md },
79
+ sm: { padding: `4px ${tokens.spacing[4]}`, fontSize: '12px', height: '32px', borderRadius: tokens.radius.md },
80
+ md: { padding: `${tokens.spacing[2]} ${tokens.spacing[6]}`, fontSize: tokens.font.sm, height: '40px', borderRadius: tokens.radius.lg },
81
+ lg: { padding: `${tokens.spacing[3]} ${tokens.spacing[8]}`, fontSize: tokens.font.md, height: '48px', borderRadius: tokens.radius.xl },
82
+ };
83
+ const SpinnerInline = ({ color }) => (_jsxs("svg", { width: "14", height: "14", viewBox: "0 0 50 50", style: { animation: 'ds-spin 0.7s linear infinite', flexShrink: 0 }, children: [_jsx("circle", { cx: "25", cy: "25", r: "20", fill: "none", stroke: color, strokeWidth: "5", strokeDasharray: "80,150", strokeLinecap: "round" }), _jsx("style", { children: `@keyframes ds-spin { to { transform: rotate(360deg); }}` })] }));
84
+ export const Button = ({ children, variant = 'primary', size = 'md', disabled = false, loading = false, fullWidth = false, onClick, style = {}, className = '', isActive = false, startIcon, endIcon, ...props }) => {
5
85
  const [isHovered, setIsHovered] = React.useState(false);
6
- const getVariantStyles = () => {
7
- switch (variant) {
8
- case 'secondary':
9
- return {
10
- backgroundColor: tokens.color.white,
11
- color: tokens.color.slate600,
12
- border: `1px solid ${tokens.color.slate200}`,
13
- boxShadow: tokens.shadow.sm,
14
- hoverBg: tokens.color.slate50,
15
- hoverColor: tokens.color.slate800,
16
- hoverBorder: tokens.color.slate300,
17
- };
18
- case 'danger':
19
- return {
20
- backgroundColor: tokens.color.white,
21
- color: tokens.color.danger,
22
- border: `1px solid ${tokens.color.dangerBg}`,
23
- boxShadow: tokens.shadow.sm,
24
- hoverBg: tokens.color.danger,
25
- hoverColor: tokens.color.white,
26
- hoverBorder: tokens.color.danger,
27
- };
28
- case 'amber':
29
- return {
30
- backgroundColor: tokens.color.white,
31
- color: tokens.color.warning,
32
- border: `1px solid ${tokens.color.warningBg}`,
33
- boxShadow: tokens.shadow.sm,
34
- hoverBg: tokens.color.warning,
35
- hoverColor: tokens.color.white,
36
- hoverBorder: tokens.color.warning,
37
- };
38
- case 'ghost':
39
- return {
40
- backgroundColor: 'transparent',
41
- color: tokens.color.textMuted,
42
- border: '1px solid transparent',
43
- boxShadow: 'none',
44
- hoverBg: tokens.color.slate100,
45
- hoverColor: tokens.color.text,
46
- hoverBorder: 'transparent',
47
- };
48
- case 'primary':
49
- default:
50
- return {
51
- backgroundColor: tokens.color.white,
52
- color: tokens.color.primary,
53
- border: `1px solid ${tokens.color.primary}33`, // Subtle transparent border
54
- boxShadow: tokens.shadow.sm,
55
- hoverBg: tokens.color.primary,
56
- gradient: `linear-gradient(135deg, ${tokens.color.primary}, ${tokens.color.primaryDark})`,
57
- hoverColor: tokens.color.white,
58
- hoverBorder: tokens.color.primary,
59
- };
60
- }
61
- };
62
- const getSizeStyles = () => {
63
- switch (size) {
64
- case 'sm':
65
- return {
66
- padding: `${tokens.spacing[1.5]} ${tokens.spacing[4]}`,
67
- fontSize: '12px',
68
- height: '32px'
69
- };
70
- case 'lg':
71
- return {
72
- padding: `${tokens.spacing[4]} ${tokens.spacing[10]}`,
73
- fontSize: tokens.font.md,
74
- height: '52px'
75
- };
76
- case 'md':
77
- default:
78
- return {
79
- padding: `${tokens.spacing[2.5]} ${tokens.spacing[6]}`,
80
- fontSize: tokens.font.sm,
81
- height: '42px'
82
- };
83
- }
84
- };
85
- const vStyles = getVariantStyles();
86
- const sStyles = getSizeStyles();
87
- const isAppliedHover = !disabled && (isHovered || isActive);
86
+ const vs = VARIANT_STYLES[variant] || VARIANT_STYLES.primary;
87
+ const ss = SIZE_STYLES[size] || SIZE_STYLES.md;
88
+ const isEffectivelyDisabled = disabled || loading;
89
+ const showHover = !isEffectivelyDisabled && (isHovered || isActive);
90
+ const isPrimaryHover = showHover && variant === 'primary';
88
91
  const baseStyle = {
89
92
  fontFamily: tokens.font.family,
90
93
  fontWeight: tokens.font.weightSemibold,
91
- borderRadius: tokens.radius.lg,
92
- cursor: disabled ? 'not-allowed' : 'pointer',
94
+ ...ss,
95
+ cursor: isEffectivelyDisabled ? 'not-allowed' : 'pointer',
93
96
  transition: 'all 0.2s cubic-bezier(0.4, 0, 0.2, 1)',
94
- display: 'inline-flex',
97
+ display: fullWidth ? 'flex' : 'inline-flex',
98
+ width: fullWidth ? '100%' : undefined,
95
99
  alignItems: 'center',
96
100
  justifyContent: 'center',
97
101
  gap: tokens.spacing[2],
98
102
  outline: 'none',
99
103
  userSelect: 'none',
100
- opacity: disabled ? 0.5 : 1,
101
- backgroundColor: isAppliedHover && variant === 'primary' ? undefined : (isAppliedHover ? vStyles.hoverBg : vStyles.backgroundColor),
102
- backgroundImage: isAppliedHover && variant === 'primary' ? vStyles.gradient : 'none',
103
- color: isAppliedHover ? vStyles.hoverColor : vStyles.color,
104
- border: isAppliedHover ? vStyles.hoverBorder : vStyles.border,
105
- boxShadow: isAppliedHover ? tokens.shadow.md : vStyles.boxShadow,
106
- transform: isAppliedHover ? 'translateY(-1px)' : 'translateY(0)',
104
+ opacity: isEffectivelyDisabled ? 0.5 : 1,
105
+ backgroundColor: isPrimaryHover ? 'transparent' : (showHover ? vs.hoverBg : vs.bg),
106
+ backgroundImage: isPrimaryHover ? vs.gradient : 'none',
107
+ color: showHover ? vs.hoverColor : vs.color,
108
+ border: showHover ? vs.hoverBorder : vs.border,
109
+ boxShadow: showHover ? vs.hoverShadow : vs.shadow,
110
+ transform: showHover && !isEffectivelyDisabled ? 'translateY(-1px)' : 'translateY(0)',
107
111
  whiteSpace: 'nowrap',
108
- ...sStyles,
112
+ letterSpacing: '0.01em',
109
113
  ...style,
110
114
  };
111
- return (_jsxs("button", { style: baseStyle, className: className, disabled: disabled, onClick: disabled ? undefined : onClick, onMouseEnter: () => !disabled && setIsHovered(true), onMouseLeave: () => !disabled && setIsHovered(false), ...props, children: [startIcon && _jsx("span", { style: { display: 'flex', alignItems: 'center' }, children: startIcon }), children, endIcon && _jsx("span", { style: { display: 'flex', alignItems: 'center' }, children: endIcon })] }));
115
+ return (_jsxs("button", { style: baseStyle, className: `ds-button ds-button--${variant} ds-button--${size} ${className}`, disabled: isEffectivelyDisabled, onClick: isEffectivelyDisabled ? undefined : onClick, onMouseEnter: () => !isEffectivelyDisabled && setIsHovered(true), onMouseLeave: () => !isEffectivelyDisabled && setIsHovered(false), ...props, children: [loading ? (_jsx(SpinnerInline, { color: showHover ? vs.hoverColor : vs.color })) : (startIcon && _jsx("span", { style: { display: 'flex', alignItems: 'center', flexShrink: 0 }, children: startIcon })), children, !loading && endIcon && (_jsx("span", { style: { display: 'flex', alignItems: 'center', flexShrink: 0 }, children: endIcon }))] }));
112
116
  };
113
117
  //# sourceMappingURL=Button.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Button.js","sourceRoot":"","sources":["../../../src/components/Button.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Button.js","sourceRoot":"","sources":["../../../src/components/Button.tsx"],"names":[],"mappings":"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"}
@@ -2,8 +2,13 @@ import React from 'react';
2
2
  export interface CardProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'title'> {
3
3
  title?: React.ReactNode;
4
4
  subtitle?: React.ReactNode;
5
+ avatar?: React.ReactNode;
6
+ headerAction?: React.ReactNode;
5
7
  footer?: React.ReactNode;
6
8
  padding?: 'none' | 'sm' | 'md' | 'lg' | 'xl';
7
- variant?: 'default' | 'accent' | 'outlined' | 'ghost';
9
+ variant?: 'default' | 'elevated' | 'flat' | 'outlined' | 'glass';
10
+ hoverable?: boolean;
11
+ loading?: boolean;
12
+ accentColor?: string;
8
13
  }
9
14
  export declare const Card: React.FC<CardProps>;
@@ -1,41 +1,129 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useState } from 'react';
2
3
  import { tokens } from '../tokens';
3
- export const Card = ({ children, title, subtitle, footer, className = '', style = {}, padding = 'lg', variant = 'default', ...props }) => {
4
+ export const Card = ({ children, title, subtitle, avatar, headerAction, footer, className = '', style = {}, padding = 'lg', variant = 'default', hoverable = false, loading = false, accentColor, ...props }) => {
5
+ const [hovered, setHovered] = useState(false);
4
6
  const getPadding = () => {
5
7
  switch (padding) {
6
8
  case 'none': return '0';
7
- case 'sm': return tokens.spacing[4];
8
- case 'md': return tokens.spacing[6];
9
+ case 'sm': return tokens.spacing[3];
10
+ case 'md': return tokens.spacing[4];
11
+ case 'lg': return tokens.spacing[6];
9
12
  case 'xl': return tokens.spacing[10];
10
- case 'lg':
11
- default: return tokens.spacing[8];
13
+ default: return tokens.spacing[6];
14
+ }
15
+ };
16
+ const getVariantStyles = () => {
17
+ switch (variant) {
18
+ case 'elevated':
19
+ return {
20
+ backgroundColor: tokens.color.surface,
21
+ border: `1px solid ${tokens.color.slate100}`,
22
+ boxShadow: hovered
23
+ ? tokens.shadow.xl
24
+ : `${tokens.shadow.lg}, inset 0 1px 0 rgba(255,255,255,0.8)`,
25
+ };
26
+ case 'flat':
27
+ return {
28
+ backgroundColor: tokens.color.slate50,
29
+ border: `1px solid ${tokens.color.slate100}`,
30
+ boxShadow: 'none',
31
+ };
32
+ case 'outlined':
33
+ return {
34
+ backgroundColor: tokens.color.surface,
35
+ border: `1px solid ${tokens.color.slate200}`,
36
+ boxShadow: 'none',
37
+ };
38
+ case 'glass':
39
+ return {
40
+ backgroundColor: 'rgba(255, 255, 255, 0.6)',
41
+ backdropFilter: 'blur(16px) saturate(180%)',
42
+ WebkitBackdropFilter: 'blur(16px) saturate(180%)',
43
+ border: `1px solid rgba(255, 255, 255, 0.7)`,
44
+ boxShadow: hovered
45
+ ? '0 20px 40px rgba(0,0,0,0.12)'
46
+ : '0 8px 32px rgba(0,0,0,0.08)',
47
+ };
48
+ case 'default':
49
+ default:
50
+ return {
51
+ backgroundColor: tokens.color.surface,
52
+ border: `1px solid ${tokens.color.slate100}`,
53
+ boxShadow: hovered
54
+ ? tokens.shadow.lg
55
+ : tokens.shadow.md,
56
+ };
12
57
  }
13
58
  };
14
59
  const containerStyle = {
15
- backgroundColor: variant === 'ghost' ? 'transparent' : tokens.color.surface,
16
- borderRadius: tokens.radius['2xl'],
17
- border: variant === 'ghost' ? 'none' : `1px solid ${tokens.color.slate100}`,
18
- boxShadow: variant === 'default' || variant === 'accent' ? tokens.shadow.sm : 'none',
60
+ borderRadius: tokens.radius.xl,
19
61
  overflow: 'hidden',
20
62
  display: 'flex',
21
63
  flexDirection: 'column',
22
- ...style
64
+ transition: tokens.transition.normal,
65
+ cursor: hoverable ? 'pointer' : 'default',
66
+ transform: hoverable && hovered ? 'translateY(-2px)' : 'translateY(0)',
67
+ position: 'relative',
68
+ ...getVariantStyles(),
69
+ ...style,
70
+ };
71
+ const headerStyle = {
72
+ padding: `${tokens.spacing[4]} ${getPadding()}`,
73
+ borderBottom: `1px solid ${tokens.color.slate100}`,
74
+ display: 'flex',
75
+ alignItems: 'center',
76
+ gap: tokens.spacing[3],
77
+ backgroundColor: variant === 'glass' ? 'rgba(255,255,255,0.4)' : tokens.color.white,
23
78
  };
24
79
  const bodyStyle = {
25
80
  padding: getPadding(),
26
- flex: 1
27
- };
28
- const headerStyle = {
29
- padding: `${tokens.spacing[5]} ${getPadding()}`,
30
- borderBottom: `1px solid ${tokens.color.slate50}`,
31
- backgroundColor: tokens.color.white,
32
- borderTop: variant === 'accent' ? `2px solid ${tokens.color.danger}` : 'none',
81
+ flex: 1,
33
82
  };
34
83
  const footerStyle = {
35
- padding: `${tokens.spacing[5]} ${getPadding()}`,
36
- borderTop: `1px solid ${tokens.color.slate50}`,
37
- backgroundColor: tokens.color.slate50,
84
+ padding: `${tokens.spacing[4]} ${getPadding()}`,
85
+ borderTop: `1px solid ${tokens.color.slate100}`,
86
+ backgroundColor: variant === 'glass' ? 'rgba(248,250,252,0.5)' : tokens.color.slate50,
38
87
  };
39
- return (_jsxs("div", { style: containerStyle, className: className, ...props, children: [(title || subtitle) && (_jsxs("div", { style: headerStyle, children: [title && _jsx("h3", { style: { margin: 0, fontSize: tokens.font.base, fontWeight: tokens.font.weightBold, color: tokens.color.slate800 }, children: title }), subtitle && _jsx("p", { style: { margin: `${tokens.spacing[1]} 0 0 0`, fontSize: tokens.font.xs, color: tokens.color.textMuted }, children: subtitle })] })), _jsx("div", { style: bodyStyle, children: children }), footer && (_jsx("div", { style: footerStyle, children: footer }))] }));
88
+ return (_jsxs("div", { style: containerStyle, className: `ds-card ds-card--${variant} ${className}`, onMouseEnter: () => { if (hoverable)
89
+ setHovered(true); }, onMouseLeave: () => { if (hoverable)
90
+ setHovered(false); }, ...props, children: [accentColor && (_jsx("div", { style: {
91
+ height: '3px',
92
+ background: accentColor,
93
+ flexShrink: 0,
94
+ } })), loading && (_jsx("div", { style: {
95
+ position: 'absolute',
96
+ inset: 0,
97
+ borderRadius: tokens.radius.xl,
98
+ background: 'rgba(255,255,255,0.6)',
99
+ backdropFilter: 'blur(2px)',
100
+ display: 'flex',
101
+ alignItems: 'center',
102
+ justifyContent: 'center',
103
+ zIndex: 10,
104
+ }, children: _jsx("div", { style: {
105
+ width: '28px',
106
+ height: '28px',
107
+ border: `3px solid ${tokens.color.slate200}`,
108
+ borderTopColor: tokens.color.primary,
109
+ borderRadius: '50%',
110
+ animation: 'ds-spin 0.7s linear infinite',
111
+ } }) })), (title || subtitle || avatar || headerAction) && (_jsxs("div", { style: headerStyle, children: [avatar && _jsx("div", { style: { flexShrink: 0 }, children: avatar }), _jsxs("div", { style: { flex: 1, minWidth: 0 }, children: [title && (_jsx("h3", { style: {
112
+ margin: 0,
113
+ fontSize: tokens.font.sm,
114
+ fontWeight: tokens.font.weightBold,
115
+ color: tokens.color.slate800,
116
+ letterSpacing: '-0.015em',
117
+ lineHeight: 1.3,
118
+ whiteSpace: 'nowrap',
119
+ overflow: 'hidden',
120
+ textOverflow: 'ellipsis',
121
+ }, children: title })), subtitle && (_jsx("p", { style: {
122
+ margin: `${tokens.spacing[1]} 0 0 0`,
123
+ fontSize: '11px',
124
+ color: tokens.color.textMuted,
125
+ fontWeight: tokens.font.weightMedium,
126
+ lineHeight: 1.4,
127
+ }, children: subtitle }))] }), headerAction && (_jsx("div", { style: { flexShrink: 0, marginLeft: tokens.spacing[2] }, children: headerAction }))] })), _jsx("div", { style: bodyStyle, children: children }), footer && (_jsx("div", { style: footerStyle, children: footer }))] }));
40
128
  };
41
129
  //# sourceMappingURL=Card.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Card.js","sourceRoot":"","sources":["../../../src/components/Card.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Card.js","sourceRoot":"","sources":["../../../src/components/Card.tsx"],"names":[],"mappings":";AAAA,OAAc,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACxC,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAenC,MAAM,CAAC,MAAM,IAAI,GAAwB,CAAC,EACxC,QAAQ,EACR,KAAK,EACL,QAAQ,EACR,MAAM,EACN,YAAY,EACZ,MAAM,EACN,SAAS,GAAG,EAAE,EACd,KAAK,GAAG,EAAE,EACV,OAAO,GAAG,IAAI,EACd,OAAO,GAAG,SAAS,EACnB,SAAS,GAAG,KAAK,EACjB,OAAO,GAAG,KAAK,EACf,WAAW,EACX,GAAG,KAAK,EACT,EAAE,EAAE;IACH,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAE9C,MAAM,UAAU,GAAG,GAAG,EAAE;QACtB,QAAQ,OAAO,EAAE,CAAC;YAChB,KAAK,MAAM,CAAC,CAAC,OAAO,GAAG,CAAC;YACxB,KAAK,IAAI,CAAC,CAAC,OAAO,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YACpC,KAAK,IAAI,CAAC,CAAC,OAAO,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YACpC,KAAK,IAAI,CAAC,CAAC,OAAO,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YACpC,KAAK,IAAI,CAAC,CAAC,OAAO,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YACrC,OAAO,CAAC,CAAC,OAAO,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QACpC,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,gBAAgB,GAAG,GAAwB,EAAE;QACjD,QAAQ,OAAO,EAAE,CAAC;YAChB,KAAK,UAAU;gBACb,OAAO;oBACL,eAAe,EAAE,MAAM,CAAC,KAAK,CAAC,OAAO;oBACrC,MAAM,EAAE,aAAa,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE;oBAC5C,SAAS,EAAE,OAAO;wBAChB,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE;wBAClB,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,uCAAuC;iBAC/D,CAAC;YACJ,KAAK,MAAM;gBACT,OAAO;oBACL,eAAe,EAAE,MAAM,CAAC,KAAK,CAAC,OAAO;oBACrC,MAAM,EAAE,aAAa,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE;oBAC5C,SAAS,EAAE,MAAM;iBAClB,CAAC;YACJ,KAAK,UAAU;gBACb,OAAO;oBACL,eAAe,EAAE,MAAM,CAAC,KAAK,CAAC,OAAO;oBACrC,MAAM,EAAE,aAAa,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE;oBAC5C,SAAS,EAAE,MAAM;iBAClB,CAAC;YACJ,KAAK,OAAO;gBACV,OAAO;oBACL,eAAe,EAAE,0BAA0B;oBAC3C,cAAc,EAAE,2BAA2B;oBAC3C,oBAAoB,EAAE,2BAA2B;oBACjD,MAAM,EAAE,oCAAoC;oBAC5C,SAAS,EAAE,OAAO;wBAChB,CAAC,CAAC,8BAA8B;wBAChC,CAAC,CAAC,6BAA6B;iBAClC,CAAC;YACJ,KAAK,SAAS,CAAC;YACf;gBACE,OAAO;oBACL,eAAe,EAAE,MAAM,CAAC,KAAK,CAAC,OAAO;oBACrC,MAAM,EAAE,aAAa,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE;oBAC5C,SAAS,EAAE,OAAO;wBAChB,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE;wBAClB,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE;iBACrB,CAAC;QACN,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,cAAc,GAAwB;QAC1C,YAAY,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE;QAC9B,QAAQ,EAAE,QAAQ;QAClB,OAAO,EAAE,MAAM;QACf,aAAa,EAAE,QAAQ;QACvB,UAAU,EAAE,MAAM,CAAC,UAAU,CAAC,MAAM;QACpC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS;QACzC,SAAS,EAAE,SAAS,IAAI,OAAO,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,eAAe;QACtE,QAAQ,EAAE,UAAU;QACpB,GAAG,gBAAgB,EAAE;QACrB,GAAG,KAAK;KACT,CAAC;IAEF,MAAM,WAAW,GAAwB;QACvC,OAAO,EAAE,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,UAAU,EAAE,EAAE;QAC/C,YAAY,EAAE,aAAa,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE;QAClD,OAAO,EAAE,MAAM;QACf,UAAU,EAAE,QAAQ;QACpB,GAAG,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;QACtB,eAAe,EAAE,OAAO,KAAK,OAAO,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK;KACpF,CAAC;IAEF,MAAM,SAAS,GAAwB;QACrC,OAAO,EAAE,UAAU,EAAE;QACrB,IAAI,EAAE,CAAC;KACR,CAAC;IAEF,MAAM,WAAW,GAAwB;QACvC,OAAO,EAAE,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,UAAU,EAAE,EAAE;QAC/C,SAAS,EAAE,aAAa,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE;QAC/C,eAAe,EAAE,OAAO,KAAK,OAAO,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO;KACtF,CAAC;IAEF,OAAO,CACL,eACE,KAAK,EAAE,cAAc,EACrB,SAAS,EAAE,oBAAoB,OAAO,IAAI,SAAS,EAAE,EACrD,YAAY,EAAE,GAAG,EAAE,GAAG,IAAI,SAAS;YAAE,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EACxD,YAAY,EAAE,GAAG,EAAE,GAAG,IAAI,SAAS;YAAE,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KACrD,KAAK,aAER,WAAW,IAAI,CACd,cAAK,KAAK,EAAE;oBACV,MAAM,EAAE,KAAK;oBACb,UAAU,EAAE,WAAW;oBACvB,UAAU,EAAE,CAAC;iBACd,GAAI,CACN,EAEA,OAAO,IAAI,CACV,cAAK,KAAK,EAAE;oBACV,QAAQ,EAAE,UAAU;oBACpB,KAAK,EAAE,CAAC;oBACR,YAAY,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE;oBAC9B,UAAU,EAAE,uBAAuB;oBACnC,cAAc,EAAE,WAAW;oBAC3B,OAAO,EAAE,MAAM;oBACf,UAAU,EAAE,QAAQ;oBACpB,cAAc,EAAE,QAAQ;oBACxB,MAAM,EAAE,EAAE;iBACX,YACC,cAAK,KAAK,EAAE;wBACV,KAAK,EAAE,MAAM;wBACb,MAAM,EAAE,MAAM;wBACd,MAAM,EAAE,aAAa,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE;wBAC5C,cAAc,EAAE,MAAM,CAAC,KAAK,CAAC,OAAO;wBACpC,YAAY,EAAE,KAAK;wBACnB,SAAS,EAAE,8BAA8B;qBAC1C,GAAI,GACD,CACP,EAEA,CAAC,KAAK,IAAI,QAAQ,IAAI,MAAM,IAAI,YAAY,CAAC,IAAI,CAChD,eAAK,KAAK,EAAE,WAAW,aACpB,MAAM,IAAI,cAAK,KAAK,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,YAAG,MAAM,GAAO,EACxD,eAAK,KAAK,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,aACjC,KAAK,IAAI,CACR,aAAI,KAAK,EAAE;oCACT,MAAM,EAAE,CAAC;oCACT,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE;oCACxB,UAAU,EAAE,MAAM,CAAC,IAAI,CAAC,UAAU;oCAClC,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,QAAQ;oCAC5B,aAAa,EAAE,UAAU;oCACzB,UAAU,EAAE,GAAG;oCACf,UAAU,EAAE,QAAQ;oCACpB,QAAQ,EAAE,QAAQ;oCAClB,YAAY,EAAE,UAAU;iCACzB,YACE,KAAK,GACH,CACN,EACA,QAAQ,IAAI,CACX,YAAG,KAAK,EAAE;oCACR,MAAM,EAAE,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ;oCACpC,QAAQ,EAAE,MAAM;oCAChB,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,SAAS;oCAC7B,UAAU,EAAE,MAAM,CAAC,IAAI,CAAC,YAAY;oCACpC,UAAU,EAAE,GAAG;iCAChB,YACE,QAAQ,GACP,CACL,IACG,EACL,YAAY,IAAI,CACf,cAAK,KAAK,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,UAAU,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,YACzD,YAAY,GACT,CACP,IACG,CACP,EAED,cAAK,KAAK,EAAE,SAAS,YAClB,QAAQ,GACL,EAEL,MAAM,IAAI,CACT,cAAK,KAAK,EAAE,WAAW,YACpB,MAAM,GACH,CACP,IACG,CACP,CAAC;AACJ,CAAC,CAAC"}
@@ -2,11 +2,14 @@ import React from 'react';
2
2
  export interface ConfirmModalProps {
3
3
  isOpen: boolean;
4
4
  title: string;
5
- message: string;
5
+ message: React.ReactNode;
6
6
  confirmText?: string;
7
7
  cancelText?: string;
8
8
  onConfirm: () => void;
9
9
  onCancel: () => void;
10
- variant?: 'danger' | 'primary';
10
+ variant?: 'danger' | 'primary' | 'warning';
11
+ icon?: React.ReactNode;
12
+ size?: 'sm' | 'md' | 'lg';
13
+ loading?: boolean;
11
14
  }
12
15
  export declare const ConfirmModal: React.FC<ConfirmModalProps>;