shared-design-system 1.8.0 → 1.10.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 (35) hide show
  1. package/README.md +40 -9
  2. package/dist/src/colors.d.ts +32 -45
  3. package/dist/src/colors.js +50 -57
  4. package/dist/src/colors.js.map +1 -1
  5. package/dist/src/components/Badge.d.ts +2 -1
  6. package/dist/src/components/Badge.js +14 -6
  7. package/dist/src/components/Badge.js.map +1 -1
  8. package/dist/src/components/Button.d.ts +1 -1
  9. package/dist/src/components/Button.js +42 -22
  10. package/dist/src/components/Button.js.map +1 -1
  11. package/dist/src/components/Card.d.ts +2 -1
  12. package/dist/src/components/Card.js +18 -16
  13. package/dist/src/components/Card.js.map +1 -1
  14. package/dist/src/components/InputComponents.d.ts +2 -0
  15. package/dist/src/components/InputComponents.js +100 -29
  16. package/dist/src/components/InputComponents.js.map +1 -1
  17. package/dist/src/components/ListComponents.d.ts +8 -3
  18. package/dist/src/components/ListComponents.js +47 -12
  19. package/dist/src/components/ListComponents.js.map +1 -1
  20. package/dist/src/components/Table.d.ts +22 -0
  21. package/dist/src/components/Table.js +34 -20
  22. package/dist/src/components/Table.js.map +1 -1
  23. package/dist/src/components/Tabs.d.ts +11 -3
  24. package/dist/src/components/Tabs.js +71 -19
  25. package/dist/src/components/Tabs.js.map +1 -1
  26. package/dist/src/components/Typography.d.ts +1 -1
  27. package/dist/src/components/Typography.js +2 -0
  28. package/dist/src/components/Typography.js.map +1 -1
  29. package/dist/src/index.d.ts +3 -3
  30. package/dist/src/index.js +1 -1
  31. package/dist/src/index.js.map +1 -1
  32. package/dist/src/tokens.d.ts +12 -0
  33. package/dist/src/tokens.js +35 -20
  34. package/dist/src/tokens.js.map +1 -1
  35. package/package.json +1 -1
@@ -1,4 +1,5 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import React from 'react';
2
3
  import { tokens } from '../tokens';
3
4
  const labelStyle = {
4
5
  display: 'block',
@@ -7,49 +8,119 @@ const labelStyle = {
7
8
  color: tokens.color.textMuted,
8
9
  marginBottom: tokens.spacing[1],
9
10
  };
11
+ const filterLabelStyle = {
12
+ position: 'absolute',
13
+ top: '-10px',
14
+ left: '16px',
15
+ backgroundColor: 'white',
16
+ padding: '0 6px',
17
+ fontSize: '11px',
18
+ fontWeight: tokens.font.weightSemibold,
19
+ color: tokens.color.slate400,
20
+ textTransform: 'uppercase',
21
+ letterSpacing: '0.05em',
22
+ zIndex: 1,
23
+ };
10
24
  const inputBaseStyle = {
11
25
  width: '100%',
12
- padding: `${tokens.spacing[2]} ${tokens.spacing[3]}`,
26
+ padding: `${tokens.spacing[3]} ${tokens.spacing[5]}`,
13
27
  fontSize: tokens.font.sm,
14
- borderRadius: tokens.radius.md,
15
- border: `1px solid ${tokens.color.border}`,
16
- backgroundColor: tokens.color.surface,
17
- color: tokens.color.text,
28
+ borderRadius: tokens.radius.lg,
29
+ border: `1px solid ${tokens.color.slate200}`,
30
+ backgroundColor: tokens.color.white,
31
+ color: tokens.color.slate800,
18
32
  outline: 'none',
19
33
  transition: tokens.transition.fast,
20
34
  fontFamily: tokens.font.family,
35
+ fontWeight: tokens.font.weightMedium,
21
36
  };
22
- export const Input = ({ label, required, error, className = '', style = {}, ...props }) => {
23
- return (_jsxs("div", { className: className, style: { width: '100%' }, children: [label && (_jsxs("label", { style: labelStyle, children: [label, " ", required && _jsx("span", { style: { color: tokens.color.danger }, children: "*" })] })), _jsx("input", { style: {
24
- ...inputBaseStyle,
25
- borderColor: error ? tokens.color.danger : tokens.color.border,
26
- ...style
27
- }, ...props }), error && _jsx("p", { style: { fontSize: '11px', color: tokens.color.danger, marginTop: '4px' }, children: error })] }));
37
+ export const Input = ({ label, required, error, variant = 'default', className = '', style = {}, onFocus, onBlur, ...props }) => {
38
+ const [isFocused, setIsFocused] = React.useState(false);
39
+ const isFilter = variant === 'filter';
40
+ const containerStyle = {
41
+ position: 'relative',
42
+ width: '100%',
43
+ ...(isFilter && {
44
+ border: `1px solid ${isFocused ? tokens.color.borderFocus : tokens.color.slate200}`,
45
+ borderRadius: tokens.radius.lg,
46
+ padding: '12px 16px',
47
+ backgroundColor: tokens.color.white,
48
+ transition: tokens.transition.fast,
49
+ })
50
+ };
51
+ const fieldStyle = {
52
+ ...inputBaseStyle,
53
+ ...(isFilter && {
54
+ border: 'none',
55
+ padding: '4px 0 0 0',
56
+ backgroundColor: 'transparent',
57
+ }),
58
+ ...(isFocused && !isFilter && {
59
+ borderColor: tokens.color.borderFocus,
60
+ backgroundColor: tokens.color.white,
61
+ }),
62
+ ...style
63
+ };
64
+ return (_jsxs("div", { className: className, style: { width: '100%', position: 'relative' }, children: [label && !isFilter && (_jsxs("label", { style: labelStyle, children: [label, " ", required && _jsx("span", { style: { color: tokens.color.danger }, children: "*" })] })), _jsxs("div", { style: containerStyle, children: [label && isFilter && (_jsx("label", { style: { ...filterLabelStyle, color: isFocused ? tokens.color.borderFocus : tokens.color.slate400 }, children: label })), _jsx("input", { style: fieldStyle, onFocus: (e) => {
65
+ setIsFocused(true);
66
+ onFocus === null || onFocus === void 0 ? void 0 : onFocus(e);
67
+ }, onBlur: (e) => {
68
+ setIsFocused(false);
69
+ onBlur === null || onBlur === void 0 ? void 0 : onBlur(e);
70
+ }, ...props })] }), error && _jsx("p", { style: { fontSize: '11px', color: tokens.color.danger, marginTop: '4px' }, children: error })] }));
28
71
  };
29
72
  export const Textarea = ({ label, required, error, className = '', style = {}, ...props }) => {
30
73
  return (_jsxs("div", { className: className, style: { width: '100%' }, children: [label && (_jsxs("label", { style: labelStyle, children: [label, " ", required && _jsx("span", { style: { color: tokens.color.danger }, children: "*" })] })), _jsx("textarea", { style: {
31
74
  ...inputBaseStyle,
32
75
  minHeight: '80px',
33
76
  resize: 'vertical',
34
- borderColor: error ? tokens.color.danger : tokens.color.border,
35
77
  ...style
36
78
  }, ...props }), error && _jsx("p", { style: { fontSize: '11px', color: tokens.color.danger, marginTop: '4px' }, children: error })] }));
37
79
  };
38
- export const Select = ({ label, required, children, error, className = '', style = {}, ...props }) => {
39
- return (_jsxs("div", { className: className, style: { width: '100%' }, children: [label && (_jsxs("label", { style: labelStyle, children: [label, " ", required && _jsx("span", { style: { color: tokens.color.danger }, children: "*" })] })), _jsxs("div", { style: { position: 'relative' }, children: [_jsx("select", { style: {
40
- ...inputBaseStyle,
41
- appearance: 'none',
42
- paddingRight: tokens.spacing[8],
43
- borderColor: error ? tokens.color.danger : tokens.color.border,
44
- ...style
45
- }, ...props, children: children }), _jsx("div", { style: {
46
- position: 'absolute',
47
- right: tokens.spacing[3],
48
- top: '50%',
49
- transform: 'translateY(-50%)',
50
- pointerEvents: 'none',
51
- color: tokens.color.textMuted
52
- }, children: _jsx("svg", { width: "12", height: "12", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "3", strokeLinecap: "round", strokeLinejoin: "round", children: _jsx("polyline", { points: "6 9 12 15 18 9" }) }) })] }), error && _jsx("p", { style: { fontSize: '11px', color: tokens.color.danger, marginTop: '4px' }, children: error })] }));
80
+ export const Select = ({ label, required, children, error, variant = 'default', className = '', style = {}, onFocus, onBlur, ...props }) => {
81
+ const [isFocused, setIsFocused] = React.useState(false);
82
+ const isFilter = variant === 'filter';
83
+ const containerStyle = {
84
+ position: 'relative',
85
+ width: '100%',
86
+ ...(isFilter && {
87
+ border: `1px solid ${isFocused ? tokens.color.borderFocus : tokens.color.slate200}`,
88
+ borderRadius: tokens.radius.lg,
89
+ padding: '12px 16px',
90
+ backgroundColor: tokens.color.white,
91
+ transition: tokens.transition.fast,
92
+ })
93
+ };
94
+ const fieldStyle = {
95
+ ...inputBaseStyle,
96
+ appearance: 'none',
97
+ paddingRight: tokens.spacing[10],
98
+ ...(isFilter && {
99
+ border: 'none',
100
+ padding: '4px 0 0 0',
101
+ backgroundColor: 'transparent',
102
+ }),
103
+ ...(isFocused && !isFilter && {
104
+ borderColor: tokens.color.borderFocus,
105
+ backgroundColor: tokens.color.white,
106
+ }),
107
+ ...style
108
+ };
109
+ return (_jsxs("div", { className: className, style: { width: '100%', position: 'relative' }, children: [label && !isFilter && (_jsxs("label", { style: labelStyle, children: [label, " ", required && _jsx("span", { style: { color: tokens.color.danger }, children: "*" })] })), _jsxs("div", { style: containerStyle, children: [label && isFilter && (_jsx("label", { style: { ...filterLabelStyle, color: isFocused ? tokens.color.borderFocus : tokens.color.slate400 }, children: label })), _jsxs("div", { style: { position: 'relative' }, children: [_jsx("select", { style: fieldStyle, onFocus: (e) => {
110
+ setIsFocused(true);
111
+ onFocus === null || onFocus === void 0 ? void 0 : onFocus(e);
112
+ }, onBlur: (e) => {
113
+ setIsFocused(false);
114
+ onBlur === null || onBlur === void 0 ? void 0 : onBlur(e);
115
+ }, ...props, children: children }), _jsx("div", { style: {
116
+ position: 'absolute',
117
+ right: isFilter ? '0' : tokens.spacing[4],
118
+ top: '50%',
119
+ transform: 'translateY(-50%)',
120
+ pointerEvents: 'none',
121
+ color: tokens.color.slate300,
122
+ marginTop: isFilter ? '2px' : '0'
123
+ }, children: _jsx("svg", { width: "14", height: "14", 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" }) }) })] })] }), error && _jsx("p", { style: { fontSize: '11px', color: tokens.color.danger, marginTop: '4px' }, children: error })] }));
53
124
  };
54
125
  export const Checkbox = ({ label, checked, className = '', style = {}, ...props }) => {
55
126
  return (_jsxs("label", { className: className, style: {
@@ -59,14 +130,14 @@ export const Checkbox = ({ label, checked, className = '', style = {}, ...props
59
130
  cursor: 'pointer',
60
131
  fontSize: tokens.font.sm,
61
132
  fontWeight: tokens.font.weightMedium,
62
- color: tokens.color.text,
133
+ color: tokens.color.slate800,
63
134
  ...style
64
135
  }, children: [_jsxs("div", { style: { position: 'relative', display: 'flex', alignItems: 'center' }, children: [_jsx("input", { type: "checkbox", checked: checked, style: {
65
136
  appearance: 'none',
66
137
  width: '20px',
67
138
  height: '20px',
68
139
  borderRadius: '6px',
69
- border: `1px solid ${checked ? tokens.color.primary : tokens.color.border}`,
140
+ border: `1px solid ${checked ? tokens.color.primary : tokens.color.slate200}`,
70
141
  backgroundColor: checked ? tokens.color.primary : 'transparent',
71
142
  cursor: 'pointer',
72
143
  transition: tokens.transition.fast,
@@ -1 +1 @@
1
- {"version":3,"file":"InputComponents.js","sourceRoot":"","sources":["../../../src/components/InputComponents.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"InputComponents.js","sourceRoot":"","sources":["../../../src/components/InputComponents.tsx"],"names":[],"mappings":"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"}
@@ -1,13 +1,18 @@
1
1
  import React from 'react';
2
- export interface ListProps extends React.HTMLAttributes<HTMLUListElement> {
3
- children: React.ReactNode;
2
+ export interface ListProps<T = any> extends Omit<React.HTMLAttributes<HTMLUListElement>, 'children'> {
3
+ children?: React.ReactNode;
4
+ items?: T[];
5
+ renderItem?: (item: T, index: number) => React.ReactNode;
6
+ variant?: 'default' | 'sidebar' | 'ghost';
7
+ spacing?: 'sm' | 'md' | 'lg';
4
8
  }
5
- export declare const List: React.FC<ListProps>;
9
+ export declare const List: <T extends any>({ children, items, renderItem, className, style, variant, spacing, ...props }: ListProps<T>) => import("react/jsx-runtime").JSX.Element;
6
10
  export interface ListItemProps extends React.HTMLAttributes<HTMLLIElement> {
7
11
  children: React.ReactNode;
8
12
  icon?: React.ReactNode;
9
13
  action?: React.ReactNode;
10
14
  divider?: boolean;
11
15
  active?: boolean;
16
+ variant?: 'default' | 'sidebar' | 'ghost';
12
17
  }
13
18
  export declare const ListItem: React.FC<ListItemProps>;
@@ -1,28 +1,63 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import React from 'react';
2
3
  import { tokens } from '../tokens';
3
- export const List = ({ children, className = '', style = {} }) => (_jsx("ul", { style: {
4
+ export const List = ({ children, items, renderItem, className = '', style = {}, variant = 'default', spacing = 'sm', ...props }) => {
5
+ const getSpacing = () => {
6
+ switch (spacing) {
7
+ case 'sm': return '4px';
8
+ case 'md': return '8px';
9
+ case 'lg': return '12px';
10
+ default: return '4px';
11
+ }
12
+ };
13
+ const containerStyle = {
4
14
  listStyle: 'none',
5
15
  padding: 0,
6
16
  margin: 0,
7
- border: `1px solid ${tokens.color.border}`,
8
- borderRadius: tokens.radius.lg,
17
+ display: 'flex',
18
+ flexDirection: 'column',
19
+ gap: variant === 'sidebar' || variant === 'ghost' ? getSpacing() : '0',
20
+ border: variant === 'default' ? `1px solid ${tokens.color.slate100}` : 'none',
21
+ borderRadius: variant === 'default' ? tokens.radius.lg : '0',
9
22
  overflow: 'hidden',
10
- backgroundColor: tokens.color.surface,
23
+ backgroundColor: variant === 'default' ? tokens.color.white : 'transparent',
11
24
  ...style
12
- }, className: className, children: children }));
13
- export const ListItem = ({ children, icon, action, onClick, className = '', style = {}, divider = true, active = false, ...props }) => {
25
+ };
26
+ return (_jsx("ul", { style: containerStyle, className: className, ...props, children: items && renderItem ? items.map((item, index) => _jsx(React.Fragment, { children: renderItem(item, index) }, index)) : children }));
27
+ };
28
+ export const ListItem = ({ children, icon, action, onClick, className = '', style = {}, divider = false, active = false, variant = 'sidebar', ...props }) => {
29
+ const isSidebar = variant === 'sidebar';
14
30
  const itemStyle = {
15
31
  display: 'flex',
16
32
  alignItems: 'center',
17
- padding: `${tokens.spacing[3]} ${tokens.spacing[4]}`,
18
- gap: tokens.spacing[4],
33
+ padding: isSidebar ? '12px 16px' : '12px 16px',
34
+ gap: tokens.spacing[3],
19
35
  cursor: onClick ? 'pointer' : 'default',
20
- backgroundColor: active ? tokens.color.primaryLight : (onClick ? tokens.color.surface : 'transparent'),
21
- borderBottom: divider ? `1px solid ${tokens.color.surfaceAlt}` : 'none',
36
+ borderRadius: isSidebar ? tokens.radius.md : '0',
22
37
  transition: tokens.transition.fast,
23
- color: active ? tokens.color.primary : tokens.color.text,
38
+ border: isSidebar ? `1px solid ${active ? tokens.color.borderFocus : 'transparent'}` : 'none',
39
+ backgroundColor: active && isSidebar ? 'rgba(255, 251, 235, 0.5)' : 'transparent',
40
+ color: active ? tokens.color.warning : tokens.color.slate500,
41
+ borderBottom: divider && !isSidebar ? `1px solid ${tokens.color.slate50}` : 'none',
42
+ fontWeight: active ? tokens.font.weightSemibold : tokens.font.weightMedium,
24
43
  ...style
25
44
  };
26
- return (_jsxs("li", { style: itemStyle, className: className, onClick: onClick, onMouseEnter: onClick ? (e) => e.currentTarget.style.backgroundColor = active ? tokens.color.primaryLight : tokens.color.surfaceAlt : undefined, onMouseLeave: onClick ? (e) => e.currentTarget.style.backgroundColor = active ? tokens.color.primaryLight : tokens.color.surface : undefined, ...props, children: [icon && _jsx("div", { style: { flexShrink: 0, color: active ? tokens.color.primary : tokens.color.textMuted }, children: icon }), _jsx("div", { style: { flex: 1, fontSize: tokens.font.sm, fontWeight: active ? tokens.font.weightBold : tokens.font.weightMedium }, children: children }), action && _jsx("div", { style: { flexShrink: 0 }, children: action })] }));
45
+ const iconStyle = {
46
+ display: 'flex',
47
+ flexShrink: 0,
48
+ color: active ? tokens.color.warning : tokens.color.slate400,
49
+ transition: tokens.transition.fast,
50
+ };
51
+ return (_jsxs("li", { style: itemStyle, className: className, onClick: onClick, onMouseEnter: onClick ? (e) => {
52
+ if (!active) {
53
+ e.currentTarget.style.backgroundColor = 'rgba(248, 250, 252, 1)';
54
+ e.currentTarget.style.color = tokens.color.slate700;
55
+ }
56
+ } : undefined, onMouseLeave: onClick ? (e) => {
57
+ if (!active) {
58
+ e.currentTarget.style.backgroundColor = 'transparent';
59
+ e.currentTarget.style.color = tokens.color.slate500;
60
+ }
61
+ } : undefined, ...props, children: [icon && _jsx("div", { style: iconStyle, children: icon }), _jsx("div", { style: { flex: 1, fontSize: '13px' }, children: children }), action && _jsx("div", { style: { flexShrink: 0 }, children: action })] }));
27
62
  };
28
63
  //# sourceMappingURL=ListComponents.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ListComponents.js","sourceRoot":"","sources":["../../../src/components/ListComponents.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ListComponents.js","sourceRoot":"","sources":["../../../src/components/ListComponents.tsx"],"names":[],"mappings":"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"}
@@ -1,4 +1,24 @@
1
1
  import React from 'react';
2
+ export interface TableColumn<T = any> {
3
+ key: string | number;
4
+ label: React.ReactNode;
5
+ width?: string | number;
6
+ align?: 'left' | 'center' | 'right';
7
+ render?: (value: any, record: T, index: number) => React.ReactNode;
8
+ headerStyle?: React.CSSProperties;
9
+ cellStyle?: React.CSSProperties;
10
+ }
11
+ export interface TableProps<T = any> {
12
+ columns: TableColumn<T>[];
13
+ data: T[];
14
+ onRowClick?: (record: T, index: number) => void;
15
+ className?: string;
16
+ style?: React.CSSProperties;
17
+ headerStyle?: React.CSSProperties;
18
+ rowStyle?: React.CSSProperties | ((record: T, index: number) => React.CSSProperties);
19
+ emptyText?: React.ReactNode;
20
+ }
21
+ export declare const Table: <T extends Record<string, any>>({ columns, data, onRowClick, className, style, headerStyle, rowStyle, emptyText, }: TableProps<T>) => import("react/jsx-runtime").JSX.Element;
2
22
  export interface TableContainerProps {
3
23
  children: React.ReactNode;
4
24
  className?: string;
@@ -17,6 +37,8 @@ export interface TRProps {
17
37
  children: React.ReactNode;
18
38
  onClick?: React.MouseEventHandler<HTMLTableRowElement>;
19
39
  active?: boolean;
40
+ header?: boolean;
41
+ style?: React.CSSProperties;
20
42
  }
21
43
  export declare const TR: React.FC<TRProps>;
22
44
  export interface THProps {
@@ -1,11 +1,24 @@
1
- import { 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 Table = ({ columns, data, onRowClick, className = '', style = {}, headerStyle = {}, rowStyle = {}, emptyText = 'Không tìm thấy dữ liệu liên quan', }) => {
4
+ return (_jsxs(TableContainer, { className: className, style: style, children: [_jsx(THead, { children: _jsx(TR, { header: true, children: columns.map((col) => (_jsx(TH, { style: {
5
+ textAlign: col.align || 'left',
6
+ width: col.width,
7
+ ...col.headerStyle,
8
+ ...headerStyle,
9
+ }, children: col.label }, col.key.toString()))) }) }), _jsx(TBody, { children: data.length > 0 ? (data.map((record, rowIndex) => (_jsx(TR, { onClick: onRowClick ? () => onRowClick(record, rowIndex) : undefined, style: typeof rowStyle === 'function' ? rowStyle(record, rowIndex) : rowStyle, children: columns.map((col) => (_jsx(TD, { style: {
10
+ textAlign: col.align || 'left',
11
+ ...col.cellStyle,
12
+ }, children: col.render
13
+ ? col.render(record[col.key], record, rowIndex)
14
+ : record[col.key] }, col.key.toString()))) }, record.id || record.key || rowIndex)))) : (_jsx(TR, { children: _jsxs(TD, { style: { textAlign: 'center', padding: tokens.spacing[12], color: tokens.color.slate400, fontStyle: 'italic' }, children: [_jsx("div", { style: { fontSize: '2rem', marginBottom: tokens.spacing[4] }, children: "\uD83D\uDCE6" }), emptyText] }) })) })] }));
15
+ };
3
16
  export const TableContainer = ({ children, className = '', style = {} }) => (_jsx("div", { style: {
4
17
  width: '100%',
5
18
  overflowX: 'auto',
6
- backgroundColor: tokens.color.surface,
7
- borderRadius: tokens.radius.xl,
8
- border: `1px solid ${tokens.color.border}`,
19
+ backgroundColor: tokens.color.white,
20
+ borderRadius: tokens.radius['2xl'],
21
+ border: `1px solid ${tokens.color.slate100}`,
9
22
  boxShadow: tokens.shadow.sm,
10
23
  ...style,
11
24
  }, className: className, children: _jsx("table", { style: {
@@ -16,39 +29,40 @@ export const TableContainer = ({ children, className = '', style = {} }) => (_js
16
29
  fontFamily: tokens.font.family,
17
30
  }, children: children }) }));
18
31
  export const THead = ({ children }) => (_jsx("thead", { style: {
19
- backgroundColor: tokens.color.surfaceAlt,
20
- borderBottom: `2px solid ${tokens.color.border}`,
32
+ backgroundColor: 'rgba(248, 250, 252, 0.5)', // Slate 50/50
21
33
  }, children: children }));
22
- export const TBody = ({ children }) => (_jsx("tbody", { style: { backgroundColor: tokens.color.surface }, children: children }));
23
- export const TR = ({ children, onClick, active = false }) => (_jsx("tr", { onClick: onClick, style: {
24
- borderBottom: `1px solid ${tokens.color.surfaceAlt}`,
25
- backgroundColor: active ? tokens.color.primaryLight + '44' : 'transparent',
34
+ export const TBody = ({ children }) => (_jsx("tbody", { style: { backgroundColor: tokens.color.white }, children: children }));
35
+ export const TR = ({ children, onClick, active = false, header = false, style = {} }) => (_jsx("tr", { onClick: onClick, style: {
36
+ borderBottom: `1px solid ${tokens.color.slate50}`,
37
+ backgroundColor: active ? tokens.color.primaryLight : 'transparent',
26
38
  transition: tokens.transition.fast,
27
39
  cursor: onClick ? 'pointer' : 'default',
28
- }, onMouseEnter: onClick
40
+ ...style,
41
+ }, onMouseEnter: !header
29
42
  ? (e) => {
30
- e.currentTarget.style.backgroundColor = tokens.color.surfaceAlt;
43
+ e.currentTarget.style.backgroundColor = 'rgba(248, 250, 252, 0.3)';
31
44
  }
32
- : undefined, onMouseLeave: onClick
45
+ : undefined, onMouseLeave: !header
33
46
  ? (e) => {
34
47
  e.currentTarget.style.backgroundColor = active
35
- ? tokens.color.primaryLight + '44'
48
+ ? tokens.color.primaryLight
36
49
  : 'transparent';
37
50
  }
38
51
  : undefined, children: children }));
39
52
  export const TH = ({ children, style = {} }) => (_jsx("th", { style: {
40
- padding: `${tokens.spacing['4']} ${tokens.spacing['4']}`,
53
+ padding: `${tokens.spacing[5]} ${tokens.spacing[6]}`,
41
54
  fontWeight: tokens.font.weightBold,
42
- color: tokens.color.textMuted,
55
+ color: tokens.color.slate400,
43
56
  textTransform: 'uppercase',
44
- letterSpacing: '0.05em',
45
- fontSize: tokens.font.xs,
57
+ letterSpacing: '0.15em',
58
+ fontSize: '11px',
46
59
  ...style,
47
60
  }, children: children }));
48
61
  export const TD = ({ children, style = {} }) => (_jsx("td", { style: {
49
- padding: `${tokens.spacing['4']} ${tokens.spacing['4']}`,
50
- color: tokens.color.text,
62
+ padding: `${tokens.spacing[6]} ${tokens.spacing[6]}`,
63
+ color: tokens.color.slate600,
51
64
  verticalAlign: 'middle',
65
+ fontSize: tokens.font.sm,
52
66
  ...style,
53
67
  }, children: children }));
54
68
  //# sourceMappingURL=Table.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Table.js","sourceRoot":"","sources":["../../../src/components/Table.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Table.js","sourceRoot":"","sources":["../../../src/components/Table.tsx"],"names":[],"mappings":"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"}
@@ -4,12 +4,20 @@ export interface TabProps extends React.HTMLAttributes<HTMLDivElement> {
4
4
  value: any;
5
5
  icon?: React.ReactNode;
6
6
  active?: boolean;
7
- variant?: 'standard' | 'pills';
7
+ variant?: 'standard' | 'pills' | 'dashboard';
8
8
  }
9
- export interface TabsProps extends React.HTMLAttributes<HTMLDivElement> {
9
+ export interface TabItem {
10
+ label: string;
11
+ value: any;
12
+ icon?: React.ReactNode;
13
+ }
14
+ export interface TabsProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'onChange'> {
10
15
  value: any;
11
16
  onChange: (value: any) => void;
12
- variant?: 'standard' | 'pills';
17
+ variant?: 'standard' | 'pills' | 'dashboard';
18
+ items?: TabItem[];
19
+ children?: React.ReactNode;
20
+ columns?: number;
13
21
  }
14
22
  export declare const Tabs: React.FC<TabsProps>;
15
23
  export declare const Tab: React.FC<TabProps>;
@@ -1,16 +1,18 @@
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 Tabs = ({ value, onChange, children, variant = 'standard', className = '', style = {} }) => {
4
+ export const Tabs = ({ value, onChange, items, children, variant = 'standard', columns = 4, className = '', style = {} }) => {
5
5
  const containerStyle = {
6
- display: 'flex',
7
- borderBottom: variant === 'standard' ? `1px solid ${tokens.color.border}` : 'none',
8
- gap: tokens.spacing[4],
6
+ display: variant === 'dashboard' ? 'grid' : 'flex',
7
+ gridTemplateColumns: variant === 'dashboard' ? `repeat(${columns}, 1fr)` : 'none',
8
+ borderBottom: variant === 'standard' ? `1px solid ${tokens.color.slate100}` : 'none',
9
+ gap: variant === 'dashboard' ? tokens.spacing[4] : tokens.spacing[4],
9
10
  width: '100%',
10
11
  overflowX: 'auto',
12
+ paddingBottom: variant === 'dashboard' ? tokens.spacing[2] : '0',
11
13
  ...style
12
14
  };
13
- return (_jsx("div", { style: containerStyle, className: className, children: React.Children.map(children, child => {
15
+ return (_jsx("div", { style: containerStyle, className: className, children: items ? items.map((item, index) => (_jsx(Tab, { label: item.label, value: item.value, icon: item.icon, active: item.value === value, onClick: () => onChange(item.value), variant: variant }, index))) : React.Children.map(children, child => {
14
16
  if (!React.isValidElement(child))
15
17
  return null;
16
18
  return React.cloneElement(child, {
@@ -21,22 +23,72 @@ export const Tabs = ({ value, onChange, children, variant = 'standard', classNam
21
23
  }) }));
22
24
  };
23
25
  export const Tab = ({ label, value, icon, active, onClick, variant, className = '', style = {} }) => {
24
- const tabStyle = {
25
- display: 'flex',
26
- alignItems: 'center',
27
- gap: tokens.spacing[2],
28
- padding: `${tokens.spacing[3]} ${tokens.spacing[4]}`,
26
+ const getTabStyle = () => {
27
+ switch (variant) {
28
+ case 'dashboard':
29
+ return {
30
+ position: 'relative',
31
+ cursor: 'pointer',
32
+ backgroundColor: tokens.color.white,
33
+ borderRadius: tokens.radius.xl,
34
+ padding: tokens.spacing[5],
35
+ boxShadow: active ? tokens.shadow.md : tokens.shadow.sm,
36
+ borderTop: `2px solid ${active ? tokens.color.danger : 'transparent'}`,
37
+ transition: tokens.transition.normal,
38
+ display: 'flex',
39
+ alignItems: 'center',
40
+ gap: tokens.spacing[3],
41
+ flex: 1,
42
+ borderBottom: 'none',
43
+ ...style
44
+ };
45
+ case 'pills':
46
+ return {
47
+ display: 'flex',
48
+ alignItems: 'center',
49
+ gap: tokens.spacing[2],
50
+ padding: `${tokens.spacing[3]} ${tokens.spacing[4]}`,
51
+ fontSize: tokens.font.sm,
52
+ fontWeight: active ? tokens.font.weightBold : tokens.font.weightMedium,
53
+ color: active ? tokens.color.primary : tokens.color.textMuted,
54
+ cursor: 'pointer',
55
+ transition: tokens.transition.fast,
56
+ backgroundColor: active ? tokens.color.primaryLight : 'transparent',
57
+ borderRadius: tokens.radius.md,
58
+ whiteSpace: 'nowrap',
59
+ ...style
60
+ };
61
+ case 'standard':
62
+ default:
63
+ return {
64
+ display: 'flex',
65
+ alignItems: 'center',
66
+ gap: tokens.spacing[2],
67
+ padding: `${tokens.spacing[3]} ${tokens.spacing[4]}`,
68
+ fontSize: tokens.font.sm,
69
+ fontWeight: active ? tokens.font.weightBold : tokens.font.weightMedium,
70
+ color: active ? tokens.color.primary : tokens.color.textMuted,
71
+ cursor: 'pointer',
72
+ borderBottom: `2px solid ${active ? tokens.color.primary : 'transparent'}`,
73
+ transition: tokens.transition.fast,
74
+ whiteSpace: 'nowrap',
75
+ ...style
76
+ };
77
+ }
78
+ };
79
+ const textStyle = {
29
80
  fontSize: tokens.font.sm,
30
- fontWeight: active ? tokens.font.weightBold : tokens.font.weightMedium,
31
- color: active ? tokens.color.primary : tokens.color.textMuted,
32
- cursor: 'pointer',
33
- borderBottom: active && variant === 'standard' ? `2px solid ${tokens.color.primary}` : '2px solid transparent',
81
+ fontWeight: tokens.font.weightSemibold,
82
+ color: active ? tokens.color.slate800 : tokens.color.slate500,
83
+ transition: tokens.transition.fast,
84
+ };
85
+ const iconStyle = {
86
+ display: 'flex',
87
+ padding: tokens.spacing[2],
88
+ borderRadius: tokens.radius.md,
89
+ color: active ? tokens.color.warning : tokens.color.slate400,
34
90
  transition: tokens.transition.fast,
35
- backgroundColor: active && variant === 'pills' ? tokens.color.primaryLight : 'transparent',
36
- borderRadius: variant === 'pills' ? tokens.radius.md : '0',
37
- whiteSpace: 'nowrap',
38
- ...style
39
91
  };
40
- return (_jsxs("div", { style: tabStyle, onClick: onClick, className: className, children: [icon && _jsx("span", { style: { display: 'flex' }, children: icon }), label] }));
92
+ return (_jsxs("div", { style: getTabStyle(), onClick: onClick, className: className, children: [icon && _jsx("span", { style: variant === 'dashboard' ? iconStyle : { display: 'flex' }, children: icon }), variant === 'dashboard' ? (_jsx("span", { style: textStyle, children: label })) : label] }));
41
93
  };
42
94
  //# sourceMappingURL=Tabs.js.map