shared-design-system 1.2.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.
- package/README.md +258 -0
- package/dist/components/Alert.d.ts +9 -0
- package/dist/components/Alert.js +58 -0
- package/dist/components/Alert.js.map +1 -0
- package/dist/components/Avatar.d.ts +8 -0
- package/dist/components/Avatar.js +43 -0
- package/dist/components/Avatar.js.map +1 -0
- package/dist/components/Badge.d.ts +5 -0
- package/dist/components/Badge.js +55 -0
- package/dist/components/Badge.js.map +1 -0
- package/dist/components/Breadcrumbs.d.ts +10 -0
- package/dist/components/Breadcrumbs.js +31 -0
- package/dist/components/Breadcrumbs.js.map +1 -0
- package/dist/components/Button.d.ts +7 -0
- package/dist/components/Button.js +77 -0
- package/dist/components/Button.js.map +1 -0
- package/dist/components/Card.d.ts +8 -0
- package/dist/components/Card.js +39 -0
- package/dist/components/Card.js.map +1 -0
- package/dist/components/ConfirmModal.d.ts +12 -0
- package/dist/components/ConfirmModal.js +53 -0
- package/dist/components/ConfirmModal.js.map +1 -0
- package/dist/components/Divider.d.ts +6 -0
- package/dist/components/Divider.js +35 -0
- package/dist/components/Divider.js.map +1 -0
- package/dist/components/InputComponents.d.ts +23 -0
- package/dist/components/InputComponents.js +83 -0
- package/dist/components/InputComponents.js.map +1 -0
- package/dist/components/ListComponents.d.ts +13 -0
- package/dist/components/ListComponents.js +28 -0
- package/dist/components/ListComponents.js.map +1 -0
- package/dist/components/LoadingSpinner.d.ts +7 -0
- package/dist/components/LoadingSpinner.js +21 -0
- package/dist/components/LoadingSpinner.js.map +1 -0
- package/dist/components/Progress.d.ts +9 -0
- package/dist/components/Progress.js +43 -0
- package/dist/components/Progress.js.map +1 -0
- package/dist/components/Radio.d.ts +21 -0
- package/dist/components/Radio.js +51 -0
- package/dist/components/Radio.js.map +1 -0
- package/dist/components/ReadOnlyField.d.ts +6 -0
- package/dist/components/ReadOnlyField.js +21 -0
- package/dist/components/ReadOnlyField.js.map +1 -0
- package/dist/components/Skeleton.d.ts +7 -0
- package/dist/components/Skeleton.js +28 -0
- package/dist/components/Skeleton.js.map +1 -0
- package/dist/components/Stack.d.ts +9 -0
- package/dist/components/Stack.js +28 -0
- package/dist/components/Stack.js.map +1 -0
- package/dist/components/Steps.d.ts +14 -0
- package/dist/components/Steps.js +84 -0
- package/dist/components/Steps.js.map +1 -0
- package/dist/components/Switch.d.ts +5 -0
- package/dist/components/Switch.js +39 -0
- package/dist/components/Switch.js.map +1 -0
- package/dist/components/Table.d.ts +31 -0
- package/dist/components/Table.js +54 -0
- package/dist/components/Table.js.map +1 -0
- package/dist/components/Tabs.d.ts +15 -0
- package/dist/components/Tabs.js +42 -0
- package/dist/components/Tabs.js.map +1 -0
- package/dist/components/Tag.d.ts +7 -0
- package/dist/components/Tag.js +43 -0
- package/dist/components/Tag.js.map +1 -0
- package/dist/components/Tooltip.d.ts +6 -0
- package/dist/components/Tooltip.js +43 -0
- package/dist/components/Tooltip.js.map +1 -0
- package/dist/components/Typography.d.ts +16 -0
- package/dist/components/Typography.js +68 -0
- package/dist/components/Typography.js.map +1 -0
- package/dist/index.d.ts +48 -0
- package/dist/index.js +29 -0
- package/dist/index.js.map +1 -0
- package/dist/tokens.d.ts +69 -0
- package/dist/tokens.js +69 -0
- package/dist/tokens.js.map +1 -0
- package/package.json +45 -0
- package/tailwind.preset.js +23 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Card.js","sourceRoot":"","sources":["../../src/components/Card.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AASnC,MAAM,CAAC,MAAM,IAAI,GAAwB,CAAC,EACxC,QAAQ,EACR,KAAK,EACL,QAAQ,EACR,MAAM,EACN,SAAS,GAAG,EAAE,EACd,KAAK,GAAG,EAAE,EACV,OAAO,GAAG,IAAI,EACd,GAAG,KAAK,EACT,EAAE,EAAE;IACH,MAAM,UAAU,GAAG,GAAG,EAAE;QACtB,QAAO,OAAO,EAAE,CAAC;YACf,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;YACV,OAAO,CAAC,CAAC,OAAO,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QACpC,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,cAAc,GAAwB;QAC1C,eAAe,EAAE,MAAM,CAAC,KAAK,CAAC,OAAO;QACrC,YAAY,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE;QAC9B,MAAM,EAAE,aAAa,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE;QAC1C,SAAS,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE;QAC3B,QAAQ,EAAE,QAAQ;QAClB,OAAO,EAAE,MAAM;QACf,aAAa,EAAE,QAAQ;QACvB,GAAG,KAAK;KACT,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,YAAY,EAAE,aAAa,MAAM,CAAC,KAAK,CAAC,UAAU,EAAE;QACpD,eAAe,EAAE,MAAM,CAAC,KAAK,CAAC,UAAU;QACxC,SAAS,EAAE,aAAa,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE;KAC/C,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,MAAM,EAAE;QAC7C,eAAe,EAAE,MAAM,CAAC,KAAK,CAAC,UAAU;KACzC,CAAC;IAEF,OAAO,CACL,eAAK,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,SAAS,KAAM,KAAK,aACxD,CAAC,KAAK,IAAI,QAAQ,CAAC,IAAI,CACtB,eAAK,KAAK,EAAE,WAAW,aACpB,KAAK,IAAI,aAAI,KAAK,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,UAAU,EAAE,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,YAAG,KAAK,GAAM,EACvI,QAAQ,IAAI,YAAG,KAAK,EAAE,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,SAAS,EAAE,YAAG,QAAQ,GAAK,IACpI,CACP,EACD,cAAK,KAAK,EAAE,SAAS,YAClB,QAAQ,GACL,EACL,MAAM,IAAI,CACT,cAAK,KAAK,EAAE,WAAW,YACpB,MAAM,GACH,CACP,IACG,CACP,CAAC;AACJ,CAAC,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
export interface ConfirmModalProps {
|
|
3
|
+
isOpen: boolean;
|
|
4
|
+
title: string;
|
|
5
|
+
message: string;
|
|
6
|
+
confirmText?: string;
|
|
7
|
+
cancelText?: string;
|
|
8
|
+
onConfirm: () => void;
|
|
9
|
+
onCancel: () => void;
|
|
10
|
+
variant?: 'danger' | 'primary';
|
|
11
|
+
}
|
|
12
|
+
export declare const ConfirmModal: React.FC<ConfirmModalProps>;
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { Button } from './Button';
|
|
3
|
+
import { tokens } from '../tokens';
|
|
4
|
+
export const ConfirmModal = ({ isOpen, title, message, confirmText = 'Xác nhận', cancelText = 'Hủy bỏ', onConfirm, onCancel, variant = 'primary', }) => {
|
|
5
|
+
if (!isOpen)
|
|
6
|
+
return null;
|
|
7
|
+
const overlayStyle = {
|
|
8
|
+
position: 'fixed',
|
|
9
|
+
top: 0,
|
|
10
|
+
left: 0,
|
|
11
|
+
width: '100%',
|
|
12
|
+
height: '100%',
|
|
13
|
+
backgroundColor: tokens.color.overlay,
|
|
14
|
+
display: 'flex',
|
|
15
|
+
alignItems: 'center',
|
|
16
|
+
justifyContent: 'center',
|
|
17
|
+
zIndex: 1000,
|
|
18
|
+
backdropFilter: 'blur(4px)',
|
|
19
|
+
fontFamily: tokens.font.family,
|
|
20
|
+
};
|
|
21
|
+
const modalStyle = {
|
|
22
|
+
backgroundColor: tokens.color.surface,
|
|
23
|
+
borderRadius: tokens.radius.xl,
|
|
24
|
+
padding: tokens.spacing[8],
|
|
25
|
+
width: '420px',
|
|
26
|
+
maxWidth: '90%',
|
|
27
|
+
boxShadow: tokens.shadow.xl,
|
|
28
|
+
animation: 'ds-fade-in 0.25s ease-out',
|
|
29
|
+
};
|
|
30
|
+
return (_jsxs("div", { style: overlayStyle, onClick: onCancel, children: [_jsxs("div", { style: modalStyle, onClick: e => e.stopPropagation(), children: [_jsx("h3", { style: {
|
|
31
|
+
marginTop: 0,
|
|
32
|
+
marginBottom: tokens.spacing[3],
|
|
33
|
+
fontSize: tokens.font.xl,
|
|
34
|
+
fontWeight: tokens.font.weightBold,
|
|
35
|
+
color: tokens.color.text
|
|
36
|
+
}, children: title }), _jsx("p", { style: {
|
|
37
|
+
marginTop: 0,
|
|
38
|
+
marginBottom: tokens.spacing[8],
|
|
39
|
+
fontSize: tokens.font.base,
|
|
40
|
+
lineHeight: 1.6,
|
|
41
|
+
color: tokens.color.textMuted
|
|
42
|
+
}, children: message }), _jsxs("div", { style: {
|
|
43
|
+
display: 'flex',
|
|
44
|
+
justifyContent: 'flex-end',
|
|
45
|
+
gap: tokens.spacing[3]
|
|
46
|
+
}, children: [_jsx(Button, { variant: "ghost", onClick: onCancel, children: cancelText }), _jsx(Button, { variant: variant, onClick: onConfirm, children: confirmText })] })] }), _jsx("style", { children: `
|
|
47
|
+
@keyframes ds-fade-in {
|
|
48
|
+
from { opacity: 0; transform: scale(0.95); }
|
|
49
|
+
to { opacity: 1; transform: scale(1); }
|
|
50
|
+
}
|
|
51
|
+
` })] }));
|
|
52
|
+
};
|
|
53
|
+
//# sourceMappingURL=ConfirmModal.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ConfirmModal.js","sourceRoot":"","sources":["../../src/components/ConfirmModal.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAanC,MAAM,CAAC,MAAM,YAAY,GAAgC,CAAC,EACxD,MAAM,EACN,KAAK,EACL,OAAO,EACP,WAAW,GAAG,UAAU,EACxB,UAAU,GAAG,QAAQ,EACrB,SAAS,EACT,QAAQ,EACR,OAAO,GAAG,SAAS,GACpB,EAAE,EAAE;IACH,IAAI,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC;IAEzB,MAAM,YAAY,GAAwB;QACxC,QAAQ,EAAE,OAAO;QACjB,GAAG,EAAE,CAAC;QACN,IAAI,EAAE,CAAC;QACP,KAAK,EAAE,MAAM;QACb,MAAM,EAAE,MAAM;QACd,eAAe,EAAE,MAAM,CAAC,KAAK,CAAC,OAAO;QACrC,OAAO,EAAE,MAAM;QACf,UAAU,EAAE,QAAQ;QACpB,cAAc,EAAE,QAAQ;QACxB,MAAM,EAAE,IAAI;QACZ,cAAc,EAAE,WAAW;QAC3B,UAAU,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM;KAC/B,CAAC;IAEF,MAAM,UAAU,GAAwB;QACtC,eAAe,EAAE,MAAM,CAAC,KAAK,CAAC,OAAO;QACrC,YAAY,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE;QAC9B,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;QAC1B,KAAK,EAAE,OAAO;QACd,QAAQ,EAAE,KAAK;QACf,SAAS,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE;QAC3B,SAAS,EAAE,2BAA2B;KACvC,CAAC;IAEF,OAAO,CACL,eAAK,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,QAAQ,aACzC,eAAK,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,eAAe,EAAE,aACvD,aAAI,KAAK,EAAE;4BACT,SAAS,EAAE,CAAC;4BACZ,YAAY,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;4BAC/B,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE;4BACxB,UAAU,EAAE,MAAM,CAAC,IAAI,CAAC,UAAU;4BAClC,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,IAAI;yBACzB,YACE,KAAK,GACH,EACL,YAAG,KAAK,EAAE;4BACR,SAAS,EAAE,CAAC;4BACZ,YAAY,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;4BAC/B,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI;4BAC1B,UAAU,EAAE,GAAG;4BACf,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,SAAS;yBAC9B,YACE,OAAO,GACN,EACJ,eAAK,KAAK,EAAE;4BACV,OAAO,EAAE,MAAM;4BACf,cAAc,EAAE,UAAU;4BAC1B,GAAG,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;yBACvB,aACC,KAAC,MAAM,IAAC,OAAO,EAAC,OAAO,EAAC,OAAO,EAAE,QAAQ,YACtC,UAAU,GACJ,EACT,KAAC,MAAM,IAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,YACzC,WAAW,GACL,IACL,IACF,EACN,0BAAQ;;;;;OAKP,GAAS,IACN,CACP,CAAC;AACJ,CAAC,CAAC"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { tokens } from '../tokens';
|
|
3
|
+
export const Divider = ({ orientation = 'horizontal', margin = 'md', className = '', style = {} }) => {
|
|
4
|
+
const getMargin = () => {
|
|
5
|
+
switch (margin) {
|
|
6
|
+
case 'none': return '0';
|
|
7
|
+
case 'sm': return tokens.spacing[2];
|
|
8
|
+
case 'lg': return tokens.spacing[8];
|
|
9
|
+
case 'md':
|
|
10
|
+
default: return tokens.spacing[4];
|
|
11
|
+
}
|
|
12
|
+
};
|
|
13
|
+
const baseStyle = {
|
|
14
|
+
backgroundColor: tokens.color.border,
|
|
15
|
+
border: 'none',
|
|
16
|
+
...style
|
|
17
|
+
};
|
|
18
|
+
if (orientation === 'vertical') {
|
|
19
|
+
return (_jsx("div", { style: {
|
|
20
|
+
...baseStyle,
|
|
21
|
+
width: '1px',
|
|
22
|
+
height: '100%',
|
|
23
|
+
margin: `0 ${getMargin()}`,
|
|
24
|
+
display: 'inline-block',
|
|
25
|
+
verticalAlign: 'middle'
|
|
26
|
+
}, className: className }));
|
|
27
|
+
}
|
|
28
|
+
return (_jsx("hr", { style: {
|
|
29
|
+
...baseStyle,
|
|
30
|
+
width: '100%',
|
|
31
|
+
height: '1px',
|
|
32
|
+
margin: `${getMargin()} 0`
|
|
33
|
+
}, className: className }));
|
|
34
|
+
};
|
|
35
|
+
//# sourceMappingURL=Divider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Divider.js","sourceRoot":"","sources":["../../src/components/Divider.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAOnC,MAAM,CAAC,MAAM,OAAO,GAA2B,CAAC,EAC9C,WAAW,GAAG,YAAY,EAC1B,MAAM,GAAG,IAAI,EACb,SAAS,GAAG,EAAE,EACd,KAAK,GAAG,EAAE,EACX,EAAE,EAAE;IACH,MAAM,SAAS,GAAG,GAAG,EAAE;QACrB,QAAO,MAAM,EAAE,CAAC;YACd,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;YACV,OAAO,CAAC,CAAC,OAAO,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QACpC,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,SAAS,GAAwB;QACrC,eAAe,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM;QACpC,MAAM,EAAE,MAAM;QACd,GAAG,KAAK;KACT,CAAC;IAEF,IAAI,WAAW,KAAK,UAAU,EAAE,CAAC;QAC/B,OAAO,CACL,cACE,KAAK,EAAE;gBACL,GAAG,SAAS;gBACZ,KAAK,EAAE,KAAK;gBACZ,MAAM,EAAE,MAAM;gBACd,MAAM,EAAE,KAAK,SAAS,EAAE,EAAE;gBAC1B,OAAO,EAAE,cAAc;gBACvB,aAAa,EAAE,QAAQ;aACxB,EACD,SAAS,EAAE,SAAS,GACpB,CACH,CAAC;IACJ,CAAC;IAED,OAAO,CACL,aACE,KAAK,EAAE;YACL,GAAG,SAAS;YACZ,KAAK,EAAE,MAAM;YACb,MAAM,EAAE,KAAK;YACb,MAAM,EAAE,GAAG,SAAS,EAAE,IAAI;SAC3B,EACD,SAAS,EAAE,SAAS,GACpB,CACH,CAAC;AACJ,CAAC,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
export interface InputProps extends React.InputHTMLAttributes<HTMLInputElement> {
|
|
3
|
+
label?: string;
|
|
4
|
+
required?: boolean;
|
|
5
|
+
error?: string;
|
|
6
|
+
}
|
|
7
|
+
export declare const Input: React.FC<InputProps>;
|
|
8
|
+
export interface TextareaProps extends React.TextareaHTMLAttributes<HTMLTextAreaElement> {
|
|
9
|
+
label?: string;
|
|
10
|
+
required?: boolean;
|
|
11
|
+
error?: string;
|
|
12
|
+
}
|
|
13
|
+
export declare const Textarea: React.FC<TextareaProps>;
|
|
14
|
+
export interface SelectProps extends React.SelectHTMLAttributes<HTMLSelectElement> {
|
|
15
|
+
label?: string;
|
|
16
|
+
required?: boolean;
|
|
17
|
+
error?: string;
|
|
18
|
+
}
|
|
19
|
+
export declare const Select: React.FC<SelectProps>;
|
|
20
|
+
export interface CheckboxProps extends React.InputHTMLAttributes<HTMLInputElement> {
|
|
21
|
+
label?: string;
|
|
22
|
+
}
|
|
23
|
+
export declare const Checkbox: React.FC<CheckboxProps>;
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { tokens } from '../tokens';
|
|
3
|
+
const labelStyle = {
|
|
4
|
+
display: 'block',
|
|
5
|
+
fontSize: tokens.font.xs,
|
|
6
|
+
fontWeight: tokens.font.weightMedium,
|
|
7
|
+
color: tokens.color.textMuted,
|
|
8
|
+
marginBottom: tokens.spacing[1],
|
|
9
|
+
};
|
|
10
|
+
const inputBaseStyle = {
|
|
11
|
+
width: '100%',
|
|
12
|
+
padding: `${tokens.spacing[2]} ${tokens.spacing[3]}`,
|
|
13
|
+
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,
|
|
18
|
+
outline: 'none',
|
|
19
|
+
transition: tokens.transition.fast,
|
|
20
|
+
fontFamily: tokens.font.family,
|
|
21
|
+
};
|
|
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 })] }));
|
|
28
|
+
};
|
|
29
|
+
export const Textarea = ({ label, required, error, className = '', style = {}, ...props }) => {
|
|
30
|
+
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
|
+
...inputBaseStyle,
|
|
32
|
+
minHeight: '80px',
|
|
33
|
+
resize: 'vertical',
|
|
34
|
+
borderColor: error ? tokens.color.danger : tokens.color.border,
|
|
35
|
+
...style
|
|
36
|
+
}, ...props }), error && _jsx("p", { style: { fontSize: '11px', color: tokens.color.danger, marginTop: '4px' }, children: error })] }));
|
|
37
|
+
};
|
|
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 })] }));
|
|
53
|
+
};
|
|
54
|
+
export const Checkbox = ({ label, checked, className = '', style = {}, ...props }) => {
|
|
55
|
+
return (_jsxs("label", { className: className, style: {
|
|
56
|
+
display: 'inline-flex',
|
|
57
|
+
alignItems: 'center',
|
|
58
|
+
gap: tokens.spacing[3],
|
|
59
|
+
cursor: 'pointer',
|
|
60
|
+
fontSize: tokens.font.sm,
|
|
61
|
+
fontWeight: tokens.font.weightMedium,
|
|
62
|
+
color: tokens.color.text,
|
|
63
|
+
...style
|
|
64
|
+
}, children: [_jsxs("div", { style: { position: 'relative', display: 'flex', alignItems: 'center' }, children: [_jsx("input", { type: "checkbox", checked: checked, style: {
|
|
65
|
+
appearance: 'none',
|
|
66
|
+
width: '20px',
|
|
67
|
+
height: '20px',
|
|
68
|
+
borderRadius: '6px',
|
|
69
|
+
border: `1px solid ${checked ? tokens.color.primary : tokens.color.border}`,
|
|
70
|
+
backgroundColor: checked ? tokens.color.primary : 'transparent',
|
|
71
|
+
cursor: 'pointer',
|
|
72
|
+
transition: tokens.transition.fast,
|
|
73
|
+
}, ...props }), checked && (_jsx("svg", { style: {
|
|
74
|
+
position: 'absolute',
|
|
75
|
+
left: '3px',
|
|
76
|
+
top: '3px',
|
|
77
|
+
width: '14px',
|
|
78
|
+
height: '14px',
|
|
79
|
+
color: 'white',
|
|
80
|
+
pointerEvents: 'none'
|
|
81
|
+
}, viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "4", strokeLinecap: "round", strokeLinejoin: "round", children: _jsx("polyline", { points: "20 6 9 17 4 12" }) }))] }), label] }));
|
|
82
|
+
};
|
|
83
|
+
//# sourceMappingURL=InputComponents.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"InputComponents.js","sourceRoot":"","sources":["../../src/components/InputComponents.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
export interface ListProps extends React.HTMLAttributes<HTMLUListElement> {
|
|
3
|
+
children: React.ReactNode;
|
|
4
|
+
}
|
|
5
|
+
export declare const List: React.FC<ListProps>;
|
|
6
|
+
export interface ListItemProps extends React.HTMLAttributes<HTMLLIElement> {
|
|
7
|
+
children: React.ReactNode;
|
|
8
|
+
icon?: React.ReactNode;
|
|
9
|
+
action?: React.ReactNode;
|
|
10
|
+
divider?: boolean;
|
|
11
|
+
active?: boolean;
|
|
12
|
+
}
|
|
13
|
+
export declare const ListItem: React.FC<ListItemProps>;
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { tokens } from '../tokens';
|
|
3
|
+
export const List = ({ children, className = '', style = {} }) => (_jsx("ul", { style: {
|
|
4
|
+
listStyle: 'none',
|
|
5
|
+
padding: 0,
|
|
6
|
+
margin: 0,
|
|
7
|
+
border: `1px solid ${tokens.color.border}`,
|
|
8
|
+
borderRadius: tokens.radius.lg,
|
|
9
|
+
overflow: 'hidden',
|
|
10
|
+
backgroundColor: tokens.color.surface,
|
|
11
|
+
...style
|
|
12
|
+
}, className: className, children: children }));
|
|
13
|
+
export const ListItem = ({ children, icon, action, onClick, className = '', style = {}, divider = true, active = false, ...props }) => {
|
|
14
|
+
const itemStyle = {
|
|
15
|
+
display: 'flex',
|
|
16
|
+
alignItems: 'center',
|
|
17
|
+
padding: `${tokens.spacing[3]} ${tokens.spacing[4]}`,
|
|
18
|
+
gap: tokens.spacing[4],
|
|
19
|
+
cursor: onClick ? 'pointer' : 'default',
|
|
20
|
+
backgroundColor: active ? tokens.color.primaryLight : (onClick ? tokens.color.surface : 'transparent'),
|
|
21
|
+
borderBottom: divider ? `1px solid ${tokens.color.surfaceAlt}` : 'none',
|
|
22
|
+
transition: tokens.transition.fast,
|
|
23
|
+
color: active ? tokens.color.primary : tokens.color.text,
|
|
24
|
+
...style
|
|
25
|
+
};
|
|
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 })] }));
|
|
27
|
+
};
|
|
28
|
+
//# sourceMappingURL=ListComponents.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ListComponents.js","sourceRoot":"","sources":["../../src/components/ListComponents.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
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
|
+
` })] }) }));
|
|
20
|
+
};
|
|
21
|
+
//# sourceMappingURL=LoadingSpinner.js.map
|
|
@@ -0,0 +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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
export interface ProgressProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
3
|
+
value?: number;
|
|
4
|
+
max?: number;
|
|
5
|
+
color?: 'primary' | 'success' | 'warning' | 'danger' | 'info';
|
|
6
|
+
height?: string;
|
|
7
|
+
showLabel?: boolean;
|
|
8
|
+
}
|
|
9
|
+
export declare const Progress: React.FC<ProgressProps>;
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { jsxs as _jsxs, jsx as _jsx } from "react/jsx-runtime";
|
|
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;
|
|
13
|
+
}
|
|
14
|
+
};
|
|
15
|
+
const containerStyle = {
|
|
16
|
+
width: '100%',
|
|
17
|
+
...style
|
|
18
|
+
};
|
|
19
|
+
const trackStyle = {
|
|
20
|
+
width: '100%',
|
|
21
|
+
height: height,
|
|
22
|
+
backgroundColor: tokens.color.surfaceAlt,
|
|
23
|
+
borderRadius: tokens.radius.full,
|
|
24
|
+
overflow: 'hidden',
|
|
25
|
+
border: `1px solid ${tokens.color.border}`,
|
|
26
|
+
};
|
|
27
|
+
const barStyle = {
|
|
28
|
+
width: `${percentage}%`,
|
|
29
|
+
height: '100%',
|
|
30
|
+
backgroundColor: getColor(),
|
|
31
|
+
transition: 'width 0.3s ease-in-out',
|
|
32
|
+
borderRadius: tokens.radius.full,
|
|
33
|
+
};
|
|
34
|
+
return (_jsxs("div", { style: containerStyle, className: className, ...props, children: [showLabel && (_jsx("div", { style: {
|
|
35
|
+
display: 'flex',
|
|
36
|
+
justifyContent: 'space-between',
|
|
37
|
+
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 }) })] }));
|
|
42
|
+
};
|
|
43
|
+
//# sourceMappingURL=Progress.js.map
|
|
@@ -0,0 +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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { tokens } from '../tokens';
|
|
3
|
+
export interface RadioProps {
|
|
4
|
+
label?: React.ReactNode;
|
|
5
|
+
checked: boolean;
|
|
6
|
+
name?: string;
|
|
7
|
+
value?: string | number;
|
|
8
|
+
onChange?: React.ChangeEventHandler<HTMLInputElement>;
|
|
9
|
+
disabled?: boolean;
|
|
10
|
+
className?: string;
|
|
11
|
+
style?: React.CSSProperties;
|
|
12
|
+
}
|
|
13
|
+
export declare const Radio: React.FC<RadioProps>;
|
|
14
|
+
export interface RadioGroupProps {
|
|
15
|
+
children: React.ReactNode;
|
|
16
|
+
direction?: 'row' | 'column';
|
|
17
|
+
spacing?: keyof typeof tokens.spacing;
|
|
18
|
+
className?: string;
|
|
19
|
+
style?: React.CSSProperties;
|
|
20
|
+
}
|
|
21
|
+
export declare const RadioGroup: React.FC<RadioGroupProps>;
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { tokens } from '../tokens';
|
|
3
|
+
export const Radio = ({ label, checked, name, value, onChange, disabled = false, className = '', style = {}, }) => {
|
|
4
|
+
const containerStyle = {
|
|
5
|
+
display: 'inline-flex',
|
|
6
|
+
alignItems: 'center',
|
|
7
|
+
gap: tokens.spacing['3'],
|
|
8
|
+
cursor: disabled ? 'not-allowed' : 'pointer',
|
|
9
|
+
opacity: disabled ? 0.6 : 1,
|
|
10
|
+
userSelect: 'none',
|
|
11
|
+
...style,
|
|
12
|
+
};
|
|
13
|
+
const radioBoxStyle = {
|
|
14
|
+
position: 'relative',
|
|
15
|
+
width: '20px',
|
|
16
|
+
height: '20px',
|
|
17
|
+
borderRadius: '50%',
|
|
18
|
+
border: `2px solid ${checked ? tokens.color.primary : tokens.color.border}`,
|
|
19
|
+
backgroundColor: tokens.color.surface,
|
|
20
|
+
display: 'flex',
|
|
21
|
+
alignItems: 'center',
|
|
22
|
+
justifyContent: 'center',
|
|
23
|
+
transition: tokens.transition.fast,
|
|
24
|
+
flexShrink: 0,
|
|
25
|
+
};
|
|
26
|
+
const innerCircleStyle = {
|
|
27
|
+
width: '10px',
|
|
28
|
+
height: '10px',
|
|
29
|
+
borderRadius: '50%',
|
|
30
|
+
backgroundColor: tokens.color.primary,
|
|
31
|
+
transform: checked ? 'scale(1)' : 'scale(0)',
|
|
32
|
+
opacity: checked ? 1 : 0,
|
|
33
|
+
transition: tokens.transition.fast,
|
|
34
|
+
};
|
|
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 }))] }));
|
|
40
|
+
};
|
|
41
|
+
export const RadioGroup = ({ children, direction = 'column', spacing = '3', className = '', style = {}, }) => {
|
|
42
|
+
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 }));
|
|
50
|
+
};
|
|
51
|
+
//# sourceMappingURL=Radio.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Radio.js","sourceRoot":"","sources":["../../src/components/Radio.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { tokens } from '../tokens';
|
|
3
|
+
export const ReadOnlyField = ({ label, value, className = '', style = {} }) => (_jsxs("div", { style: { display: 'flex', flexDirection: 'column', gap: tokens.spacing[1], ...style }, className: className, children: [_jsx("label", { style: {
|
|
4
|
+
fontSize: tokens.font.xs,
|
|
5
|
+
fontWeight: tokens.font.weightBold,
|
|
6
|
+
color: tokens.color.textMuted,
|
|
7
|
+
textTransform: 'uppercase',
|
|
8
|
+
letterSpacing: '0.05em'
|
|
9
|
+
}, children: label }), _jsx("div", { style: {
|
|
10
|
+
fontSize: tokens.font.sm,
|
|
11
|
+
fontWeight: tokens.font.weightSemibold,
|
|
12
|
+
color: tokens.color.text,
|
|
13
|
+
backgroundColor: tokens.color.surfaceAlt,
|
|
14
|
+
padding: `${tokens.spacing[2]} ${tokens.spacing[3]}`,
|
|
15
|
+
borderRadius: tokens.radius.md,
|
|
16
|
+
border: `1px solid ${tokens.color.border}`,
|
|
17
|
+
minHeight: '38px',
|
|
18
|
+
display: 'flex',
|
|
19
|
+
alignItems: 'center'
|
|
20
|
+
}, children: value || 'N/A' })] }));
|
|
21
|
+
//# sourceMappingURL=ReadOnlyField.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ReadOnlyField.js","sourceRoot":"","sources":["../../src/components/ReadOnlyField.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAOnC,MAAM,CAAC,MAAM,aAAa,GAAiC,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,GAAG,EAAE,EAAE,KAAK,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC,CAC3G,eAAK,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,KAAK,EAAE,EAAE,SAAS,EAAE,SAAS,aAC9G,gBAAO,KAAK,EAAE;gBACZ,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE;gBACxB,UAAU,EAAE,MAAM,CAAC,IAAI,CAAC,UAAU;gBAClC,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,SAAS;gBAC7B,aAAa,EAAE,WAAoB;gBACnC,aAAa,EAAE,QAAQ;aACxB,YACE,KAAK,GACA,EACR,cAAK,KAAK,EAAE;gBACV,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE;gBACxB,UAAU,EAAE,MAAM,CAAC,IAAI,CAAC,cAAc;gBACtC,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,IAAI;gBACxB,eAAe,EAAE,MAAM,CAAC,KAAK,CAAC,UAAU;gBACxC,OAAO,EAAE,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;gBACpD,YAAY,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE;gBAC9B,MAAM,EAAE,aAAa,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE;gBAC1C,SAAS,EAAE,MAAM;gBACjB,OAAO,EAAE,MAAM;gBACf,UAAU,EAAE,QAAQ;aACrB,YACE,KAAK,IAAI,KAAK,GACX,IACF,CACP,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
export interface SkeletonProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
3
|
+
variant?: 'text' | 'circle' | 'rectangular';
|
|
4
|
+
width?: string | number;
|
|
5
|
+
height?: string | number;
|
|
6
|
+
}
|
|
7
|
+
export declare const Skeleton: React.FC<SkeletonProps>;
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { tokens } from '../tokens';
|
|
3
|
+
export const Skeleton = ({ variant = 'text', width, height, className = '', style = {} }) => {
|
|
4
|
+
const getDims = () => {
|
|
5
|
+
if (variant === 'circle')
|
|
6
|
+
return { width: width || '40px', height: height || '40px', borderRadius: '50%' };
|
|
7
|
+
if (variant === 'rectangular')
|
|
8
|
+
return { width: width || '100%', height: height || '100px', borderRadius: tokens.radius.md };
|
|
9
|
+
// text
|
|
10
|
+
return { width: width || '100%', height: height || '1em', borderRadius: '4px' };
|
|
11
|
+
};
|
|
12
|
+
const dims = getDims();
|
|
13
|
+
return (_jsx("div", { style: {
|
|
14
|
+
...dims,
|
|
15
|
+
backgroundColor: tokens.color.surfaceAlt,
|
|
16
|
+
position: 'relative',
|
|
17
|
+
overflow: 'hidden',
|
|
18
|
+
animation: 'ds-pulse 1.5s ease-in-out infinite',
|
|
19
|
+
...style
|
|
20
|
+
}, className: className, children: _jsx("style", { children: `
|
|
21
|
+
@keyframes ds-pulse {
|
|
22
|
+
0% { opacity: 1; }
|
|
23
|
+
50% { opacity: 0.4; }
|
|
24
|
+
100% { opacity: 1; }
|
|
25
|
+
}
|
|
26
|
+
` }) }));
|
|
27
|
+
};
|
|
28
|
+
//# sourceMappingURL=Skeleton.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Skeleton.js","sourceRoot":"","sources":["../../src/components/Skeleton.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAQnC,MAAM,CAAC,MAAM,QAAQ,GAA4B,CAAC,EAChD,OAAO,GAAG,MAAM,EAChB,KAAK,EACL,MAAM,EACN,SAAS,GAAG,EAAE,EACd,KAAK,GAAG,EAAE,EACX,EAAE,EAAE;IACH,MAAM,OAAO,GAAG,GAAG,EAAE;QACnB,IAAI,OAAO,KAAK,QAAQ;YAAE,OAAO,EAAE,KAAK,EAAE,KAAK,IAAI,MAAM,EAAE,MAAM,EAAE,MAAM,IAAI,MAAM,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC;QAC3G,IAAI,OAAO,KAAK,aAAa;YAAE,OAAO,EAAE,KAAK,EAAE,KAAK,IAAI,MAAM,EAAE,MAAM,EAAE,MAAM,IAAI,OAAO,EAAE,YAAY,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;QAC5H,OAAO;QACP,OAAO,EAAE,KAAK,EAAE,KAAK,IAAI,MAAM,EAAE,MAAM,EAAE,MAAM,IAAI,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC;IAClF,CAAC,CAAC;IAEF,MAAM,IAAI,GAAG,OAAO,EAAE,CAAC;IAEvB,OAAO,CACL,cACE,KAAK,EAAE;YACL,GAAG,IAAI;YACP,eAAe,EAAE,MAAM,CAAC,KAAK,CAAC,UAAU;YACxC,QAAQ,EAAE,UAAU;YACpB,QAAQ,EAAE,QAAQ;YAClB,SAAS,EAAE,oCAAoC;YAC/C,GAAG,KAAK;SACT,EACD,SAAS,EAAE,SAAS,YAEpB,0BAAQ;;;;;;OAMP,GAAS,GACN,CACP,CAAC;AACJ,CAAC,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { tokens } from '../tokens';
|
|
3
|
+
export interface StackProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
4
|
+
direction?: 'row' | 'column' | 'row-reverse' | 'column-reverse';
|
|
5
|
+
spacing?: keyof typeof tokens.spacing | number;
|
|
6
|
+
align?: 'start' | 'center' | 'end' | 'stretch' | 'baseline';
|
|
7
|
+
justify?: 'start' | 'center' | 'end' | 'between' | 'around' | 'evenly';
|
|
8
|
+
}
|
|
9
|
+
export declare const Stack: React.FC<StackProps>;
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { tokens } from '../tokens';
|
|
3
|
+
export const Stack = ({ direction = 'column', spacing = 'md', align = 'stretch', justify = 'start', children, className = '', style = {}, ...props }) => {
|
|
4
|
+
const getSpacing = () => {
|
|
5
|
+
if (typeof spacing === 'number')
|
|
6
|
+
return `${spacing}px`;
|
|
7
|
+
return tokens.spacing[spacing] || tokens.spacing.md;
|
|
8
|
+
};
|
|
9
|
+
const getJustify = () => {
|
|
10
|
+
if (justify === 'between')
|
|
11
|
+
return 'space-between';
|
|
12
|
+
if (justify === 'around')
|
|
13
|
+
return 'space-around';
|
|
14
|
+
if (justify === 'evenly')
|
|
15
|
+
return 'space-evenly';
|
|
16
|
+
return justify;
|
|
17
|
+
};
|
|
18
|
+
const baseStyle = {
|
|
19
|
+
display: 'flex',
|
|
20
|
+
flexDirection: direction,
|
|
21
|
+
gap: getSpacing(),
|
|
22
|
+
alignItems: align,
|
|
23
|
+
justifyContent: getJustify(),
|
|
24
|
+
...style
|
|
25
|
+
};
|
|
26
|
+
return (_jsx("div", { style: baseStyle, className: className, ...props, children: children }));
|
|
27
|
+
};
|
|
28
|
+
//# sourceMappingURL=Stack.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Stack.js","sourceRoot":"","sources":["../../src/components/Stack.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AASnC,MAAM,CAAC,MAAM,KAAK,GAAyB,CAAC,EAC1C,SAAS,GAAG,QAAQ,EACpB,OAAO,GAAG,IAAI,EACd,KAAK,GAAG,SAAS,EACjB,OAAO,GAAG,OAAO,EACjB,QAAQ,EACR,SAAS,GAAG,EAAE,EACd,KAAK,GAAG,EAAE,EACV,GAAG,KAAK,EACT,EAAE,EAAE;IACH,MAAM,UAAU,GAAG,GAAG,EAAE;QACtB,IAAI,OAAO,OAAO,KAAK,QAAQ;YAAE,OAAO,GAAG,OAAO,IAAI,CAAC;QACvD,OAAO,MAAM,CAAC,OAAO,CAAC,OAAiB,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;IAChE,CAAC,CAAC;IAEF,MAAM,UAAU,GAAG,GAAG,EAAE;QACtB,IAAI,OAAO,KAAK,SAAS;YAAE,OAAO,eAAe,CAAC;QAClD,IAAI,OAAO,KAAK,QAAQ;YAAE,OAAO,cAAc,CAAC;QAChD,IAAI,OAAO,KAAK,QAAQ;YAAE,OAAO,cAAc,CAAC;QAChD,OAAO,OAAO,CAAC;IACjB,CAAC,CAAC;IAEF,MAAM,SAAS,GAAwB;QACrC,OAAO,EAAE,MAAM;QACf,aAAa,EAAE,SAAS;QACxB,GAAG,EAAE,UAAU,EAAE;QACjB,UAAU,EAAE,KAAK;QACjB,cAAc,EAAE,UAAU,EAAE;QAC5B,GAAG,KAAK;KACT,CAAC;IAEF,OAAO,CACL,cAAK,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,KAAM,KAAK,YACnD,QAAQ,GACL,CACP,CAAC;AACJ,CAAC,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
export type StepStatus = 'finish' | 'process' | 'wait';
|
|
3
|
+
export interface StepItem {
|
|
4
|
+
title: string;
|
|
5
|
+
description?: string;
|
|
6
|
+
}
|
|
7
|
+
export interface StepsProps {
|
|
8
|
+
current?: number;
|
|
9
|
+
items?: StepItem[];
|
|
10
|
+
direction?: 'horizontal' | 'vertical';
|
|
11
|
+
className?: string;
|
|
12
|
+
style?: React.CSSProperties;
|
|
13
|
+
}
|
|
14
|
+
export declare const Steps: React.FC<StepsProps>;
|