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.
Files changed (78) hide show
  1. package/README.md +258 -0
  2. package/dist/components/Alert.d.ts +9 -0
  3. package/dist/components/Alert.js +58 -0
  4. package/dist/components/Alert.js.map +1 -0
  5. package/dist/components/Avatar.d.ts +8 -0
  6. package/dist/components/Avatar.js +43 -0
  7. package/dist/components/Avatar.js.map +1 -0
  8. package/dist/components/Badge.d.ts +5 -0
  9. package/dist/components/Badge.js +55 -0
  10. package/dist/components/Badge.js.map +1 -0
  11. package/dist/components/Breadcrumbs.d.ts +10 -0
  12. package/dist/components/Breadcrumbs.js +31 -0
  13. package/dist/components/Breadcrumbs.js.map +1 -0
  14. package/dist/components/Button.d.ts +7 -0
  15. package/dist/components/Button.js +77 -0
  16. package/dist/components/Button.js.map +1 -0
  17. package/dist/components/Card.d.ts +8 -0
  18. package/dist/components/Card.js +39 -0
  19. package/dist/components/Card.js.map +1 -0
  20. package/dist/components/ConfirmModal.d.ts +12 -0
  21. package/dist/components/ConfirmModal.js +53 -0
  22. package/dist/components/ConfirmModal.js.map +1 -0
  23. package/dist/components/Divider.d.ts +6 -0
  24. package/dist/components/Divider.js +35 -0
  25. package/dist/components/Divider.js.map +1 -0
  26. package/dist/components/InputComponents.d.ts +23 -0
  27. package/dist/components/InputComponents.js +83 -0
  28. package/dist/components/InputComponents.js.map +1 -0
  29. package/dist/components/ListComponents.d.ts +13 -0
  30. package/dist/components/ListComponents.js +28 -0
  31. package/dist/components/ListComponents.js.map +1 -0
  32. package/dist/components/LoadingSpinner.d.ts +7 -0
  33. package/dist/components/LoadingSpinner.js +21 -0
  34. package/dist/components/LoadingSpinner.js.map +1 -0
  35. package/dist/components/Progress.d.ts +9 -0
  36. package/dist/components/Progress.js +43 -0
  37. package/dist/components/Progress.js.map +1 -0
  38. package/dist/components/Radio.d.ts +21 -0
  39. package/dist/components/Radio.js +51 -0
  40. package/dist/components/Radio.js.map +1 -0
  41. package/dist/components/ReadOnlyField.d.ts +6 -0
  42. package/dist/components/ReadOnlyField.js +21 -0
  43. package/dist/components/ReadOnlyField.js.map +1 -0
  44. package/dist/components/Skeleton.d.ts +7 -0
  45. package/dist/components/Skeleton.js +28 -0
  46. package/dist/components/Skeleton.js.map +1 -0
  47. package/dist/components/Stack.d.ts +9 -0
  48. package/dist/components/Stack.js +28 -0
  49. package/dist/components/Stack.js.map +1 -0
  50. package/dist/components/Steps.d.ts +14 -0
  51. package/dist/components/Steps.js +84 -0
  52. package/dist/components/Steps.js.map +1 -0
  53. package/dist/components/Switch.d.ts +5 -0
  54. package/dist/components/Switch.js +39 -0
  55. package/dist/components/Switch.js.map +1 -0
  56. package/dist/components/Table.d.ts +31 -0
  57. package/dist/components/Table.js +54 -0
  58. package/dist/components/Table.js.map +1 -0
  59. package/dist/components/Tabs.d.ts +15 -0
  60. package/dist/components/Tabs.js +42 -0
  61. package/dist/components/Tabs.js.map +1 -0
  62. package/dist/components/Tag.d.ts +7 -0
  63. package/dist/components/Tag.js +43 -0
  64. package/dist/components/Tag.js.map +1 -0
  65. package/dist/components/Tooltip.d.ts +6 -0
  66. package/dist/components/Tooltip.js +43 -0
  67. package/dist/components/Tooltip.js.map +1 -0
  68. package/dist/components/Typography.d.ts +16 -0
  69. package/dist/components/Typography.js +68 -0
  70. package/dist/components/Typography.js.map +1 -0
  71. package/dist/index.d.ts +48 -0
  72. package/dist/index.js +29 -0
  73. package/dist/index.js.map +1 -0
  74. package/dist/tokens.d.ts +69 -0
  75. package/dist/tokens.js +69 -0
  76. package/dist/tokens.js.map +1 -0
  77. package/package.json +45 -0
  78. 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,6 @@
1
+ import React from 'react';
2
+ export interface DividerProps extends React.HTMLAttributes<HTMLElement> {
3
+ orientation?: 'horizontal' | 'vertical';
4
+ margin?: 'none' | 'sm' | 'md' | 'lg';
5
+ }
6
+ export declare const Divider: React.FC<DividerProps>;
@@ -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":";AACA,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAEnC,MAAM,UAAU,GAAwB;IACtC,OAAO,EAAE,OAAO;IAChB,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE;IACxB,UAAU,EAAE,MAAM,CAAC,IAAI,CAAC,YAAY;IACpC,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,SAAS;IAC7B,YAAY,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;CAChC,CAAC;AAEF,MAAM,cAAc,GAAwB;IAC1C,KAAK,EAAE,MAAM;IACb,OAAO,EAAE,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;IACpD,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE;IACxB,YAAY,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE;IAC9B,MAAM,EAAE,aAAa,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE;IAC1C,eAAe,EAAE,MAAM,CAAC,KAAK,CAAC,OAAO;IACrC,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,IAAI;IACxB,OAAO,EAAE,MAAM;IACf,UAAU,EAAE,MAAM,CAAC,UAAU,CAAC,IAAI;IAClC,UAAU,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM;CAC/B,CAAC;AAQF,MAAM,CAAC,MAAM,KAAK,GAAyB,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,GAAG,EAAE,EAAE,KAAK,GAAG,EAAE,EAAE,GAAG,KAAK,EAAE,EAAE,EAAE;IAC9G,OAAO,CACL,eAAK,SAAS,EAAE,SAAS,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,aAChD,KAAK,IAAI,CACR,iBAAO,KAAK,EAAE,UAAU,aACrB,KAAK,OAAG,QAAQ,IAAI,eAAM,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,kBAAU,IACpE,CACT,EACD,gBACE,KAAK,EAAE;oBACL,GAAG,cAAc;oBACjB,WAAW,EAAE,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM;oBAC9D,GAAG,KAAK;iBACT,KACG,KAAK,GACT,EACD,KAAK,IAAI,YAAG,KAAK,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,YAAG,KAAK,GAAK,IAC/F,CACP,CAAC;AACJ,CAAC,CAAC;AAQF,MAAM,CAAC,MAAM,QAAQ,GAA4B,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,GAAG,EAAE,EAAE,KAAK,GAAG,EAAE,EAAE,GAAG,KAAK,EAAE,EAAE,EAAE;IACpH,OAAO,CACL,eAAK,SAAS,EAAE,SAAS,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,aAChD,KAAK,IAAI,CACR,iBAAO,KAAK,EAAE,UAAU,aACrB,KAAK,OAAG,QAAQ,IAAI,eAAM,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,kBAAU,IACpE,CACT,EACD,mBACE,KAAK,EAAE;oBACL,GAAG,cAAc;oBACjB,SAAS,EAAE,MAAM;oBACjB,MAAM,EAAE,UAAU;oBAClB,WAAW,EAAE,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM;oBAC9D,GAAG,KAAK;iBACT,KACG,KAAK,GACT,EACD,KAAK,IAAI,YAAG,KAAK,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,YAAG,KAAK,GAAK,IAC/F,CACP,CAAC;AACJ,CAAC,CAAC;AAQF,MAAM,CAAC,MAAM,MAAM,GAA0B,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,GAAG,EAAE,EAAE,KAAK,GAAG,EAAE,EAAE,GAAG,KAAK,EAAE,EAAE,EAAE;IAC1H,OAAO,CACL,eAAK,SAAS,EAAE,SAAS,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,aAChD,KAAK,IAAI,CACR,iBAAO,KAAK,EAAE,UAAU,aACrB,KAAK,OAAG,QAAQ,IAAI,eAAM,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,kBAAU,IACpE,CACT,EACD,eAAK,KAAK,EAAE,EAAE,QAAQ,EAAE,UAAU,EAAE,aAClC,iBACE,KAAK,EAAE;4BACL,GAAG,cAAc;4BACjB,UAAU,EAAE,MAAM;4BAClB,YAAY,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;4BAC/B,WAAW,EAAE,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM;4BAC9D,GAAG,KAAK;yBACT,KACG,KAAK,YAER,QAAQ,GACF,EACT,cAAK,KAAK,EAAE;4BACV,QAAQ,EAAE,UAAU;4BACpB,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;4BACxB,GAAG,EAAE,KAAK;4BACV,SAAS,EAAE,kBAAkB;4BAC7B,aAAa,EAAE,MAAM;4BACrB,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,SAAS;yBAC9B,YACC,cAAK,KAAK,EAAC,IAAI,EAAC,MAAM,EAAC,IAAI,EAAC,OAAO,EAAC,WAAW,EAAC,IAAI,EAAC,MAAM,EAAC,MAAM,EAAC,cAAc,EAAC,WAAW,EAAC,GAAG,EAAC,aAAa,EAAC,OAAO,EAAC,cAAc,EAAC,OAAO,YAC5I,mBAAU,MAAM,EAAC,gBAAgB,GAAY,GACzC,GACF,IACF,EACL,KAAK,IAAI,YAAG,KAAK,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,YAAG,KAAK,GAAK,IAC/F,CACP,CAAC;AACJ,CAAC,CAAC;AAMF,MAAM,CAAC,MAAM,QAAQ,GAA4B,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,GAAG,EAAE,EAAE,KAAK,GAAG,EAAE,EAAE,GAAG,KAAK,EAAE,EAAE,EAAE;IAC5G,OAAO,CACL,iBAAO,SAAS,EAAE,SAAS,EAAE,KAAK,EAAE;YAClC,OAAO,EAAE,aAAa;YACtB,UAAU,EAAE,QAAQ;YACpB,GAAG,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;YACtB,MAAM,EAAE,SAAS;YACjB,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE;YACxB,UAAU,EAAE,MAAM,CAAC,IAAI,CAAC,YAAY;YACpC,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,IAAI;YACxB,GAAG,KAAK;SACT,aACC,eAAK,KAAK,EAAE,EAAE,QAAQ,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,aACzE,gBACE,IAAI,EAAC,UAAU,EACf,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE;4BACL,UAAU,EAAE,MAAM;4BAClB,KAAK,EAAE,MAAM;4BACb,MAAM,EAAE,MAAM;4BACd,YAAY,EAAE,KAAK;4BACnB,MAAM,EAAE,aAAa,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE;4BAC3E,eAAe,EAAE,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,aAAa;4BAC/D,MAAM,EAAE,SAAS;4BACjB,UAAU,EAAE,MAAM,CAAC,UAAU,CAAC,IAAI;yBACnC,KACG,KAAK,GACT,EACD,OAAO,IAAI,CACV,cAAK,KAAK,EAAE;4BACV,QAAQ,EAAE,UAAU;4BACpB,IAAI,EAAE,KAAK;4BACX,GAAG,EAAE,KAAK;4BACV,KAAK,EAAE,MAAM;4BACb,MAAM,EAAE,MAAM;4BACd,KAAK,EAAE,OAAO;4BACd,aAAa,EAAE,MAAM;yBACtB,EAAE,OAAO,EAAC,WAAW,EAAC,IAAI,EAAC,MAAM,EAAC,MAAM,EAAC,cAAc,EAAC,WAAW,EAAC,GAAG,EAAC,aAAa,EAAC,OAAO,EAAC,cAAc,EAAC,OAAO,YACnH,mBAAU,MAAM,EAAC,gBAAgB,GAAY,GACzC,CACP,IACG,EACL,KAAK,IACA,CACT,CAAC;AACJ,CAAC,CAAC"}
@@ -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,7 @@
1
+ import React from 'react';
2
+ export interface LoadingSpinnerProps {
3
+ size?: 'sm' | 'md' | 'lg';
4
+ color?: 'primary' | 'white';
5
+ className?: string;
6
+ }
7
+ export declare const LoadingSpinner: React.FC<LoadingSpinnerProps>;
@@ -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,6 @@
1
+ import React from 'react';
2
+ export interface ReadOnlyFieldProps extends React.HTMLAttributes<HTMLDivElement> {
3
+ label: string;
4
+ value?: string;
5
+ }
6
+ export declare const ReadOnlyField: React.FC<ReadOnlyFieldProps>;
@@ -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>;