my-npm-libb 0.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 (46) hide show
  1. package/dist/cjs/components/Button/Button.js +78 -0
  2. package/dist/cjs/components/Button/Button.js.map +1 -0
  3. package/dist/cjs/components/Input/Input.js +72 -0
  4. package/dist/cjs/components/Input/Input.js.map +1 -0
  5. package/dist/cjs/index.js +36 -0
  6. package/dist/cjs/index.js.map +1 -0
  7. package/dist/cjs/theme/ThemeProvider.js +34 -0
  8. package/dist/cjs/theme/ThemeProvider.js.map +1 -0
  9. package/dist/cjs/theme/theme.js +86 -0
  10. package/dist/cjs/theme/theme.js.map +1 -0
  11. package/dist/cjs/tokens/borders.js +53 -0
  12. package/dist/cjs/tokens/borders.js.map +1 -0
  13. package/dist/cjs/tokens/breakpoints.js +25 -0
  14. package/dist/cjs/tokens/breakpoints.js.map +1 -0
  15. package/dist/cjs/tokens/colors.js +97 -0
  16. package/dist/cjs/tokens/colors.js.map +1 -0
  17. package/dist/cjs/tokens/shadows.js +23 -0
  18. package/dist/cjs/tokens/shadows.js.map +1 -0
  19. package/dist/cjs/tokens/spacing.js +39 -0
  20. package/dist/cjs/tokens/spacing.js.map +1 -0
  21. package/dist/cjs/tokens/typography.js +82 -0
  22. package/dist/cjs/tokens/typography.js.map +1 -0
  23. package/dist/esm/components/Button/Button.js +76 -0
  24. package/dist/esm/components/Button/Button.js.map +1 -0
  25. package/dist/esm/components/Input/Input.js +70 -0
  26. package/dist/esm/components/Input/Input.js.map +1 -0
  27. package/dist/esm/index.js +11 -0
  28. package/dist/esm/index.js.map +1 -0
  29. package/dist/esm/theme/ThemeProvider.js +32 -0
  30. package/dist/esm/theme/ThemeProvider.js.map +1 -0
  31. package/dist/esm/theme/theme.js +83 -0
  32. package/dist/esm/theme/theme.js.map +1 -0
  33. package/dist/esm/tokens/borders.js +49 -0
  34. package/dist/esm/tokens/borders.js.map +1 -0
  35. package/dist/esm/tokens/breakpoints.js +23 -0
  36. package/dist/esm/tokens/breakpoints.js.map +1 -0
  37. package/dist/esm/tokens/colors.js +92 -0
  38. package/dist/esm/tokens/colors.js.map +1 -0
  39. package/dist/esm/tokens/shadows.js +21 -0
  40. package/dist/esm/tokens/shadows.js.map +1 -0
  41. package/dist/esm/tokens/spacing.js +37 -0
  42. package/dist/esm/tokens/spacing.js.map +1 -0
  43. package/dist/esm/tokens/typography.js +76 -0
  44. package/dist/esm/tokens/typography.js.map +1 -0
  45. package/dist/index.d.ts +459 -0
  46. package/package.json +103 -0
@@ -0,0 +1,78 @@
1
+ 'use strict';
2
+
3
+ var jsxRuntime = require('react/jsx-runtime');
4
+ var React = require('react');
5
+ var antd = require('antd');
6
+ var styled = require('styled-components');
7
+
8
+ // ============================================
9
+ // Styled Component
10
+ // ============================================
11
+ // Map ButtonSize sang Ant Design size
12
+ const antSizeMap = {
13
+ sm: 'small',
14
+ md: 'middle',
15
+ lg: 'large',
16
+ };
17
+ // Map ButtonVariant sang Ant Design type
18
+ const antTypeMap = {
19
+ primary: { type: 'primary' },
20
+ secondary: { type: 'default' },
21
+ outline: { type: 'default' },
22
+ ghost: { type: 'text' },
23
+ danger: { type: 'primary', danger: true },
24
+ };
25
+ const fullWidthStyle = styled.css `
26
+ width: 100%;
27
+ `;
28
+ const outlineStyle = styled.css `
29
+ &.ant-btn-default {
30
+ border-color: ${({ theme }) => theme.colors.brand.primary[500]};
31
+ color: ${({ theme }) => theme.colors.brand.primary[500]};
32
+
33
+ &:hover:not(:disabled) {
34
+ border-color: ${({ theme }) => theme.colors.brand.primary[400]};
35
+ color: ${({ theme }) => theme.colors.brand.primary[400]};
36
+ }
37
+
38
+ &:active:not(:disabled) {
39
+ border-color: ${({ theme }) => theme.colors.brand.primary[600]};
40
+ color: ${({ theme }) => theme.colors.brand.primary[600]};
41
+ }
42
+ }
43
+ `;
44
+ const secondaryStyle = styled.css `
45
+ &.ant-btn-default {
46
+ background: ${({ theme }) => theme.colors.neutral.gray[100]};
47
+ border-color: ${({ theme }) => theme.colors.neutral.gray[300]};
48
+ color: ${({ theme }) => theme.colors.neutral.gray[800]};
49
+
50
+ &:hover:not(:disabled) {
51
+ background: ${({ theme }) => theme.colors.neutral.gray[200]};
52
+ border-color: ${({ theme }) => theme.colors.neutral.gray[400]};
53
+ color: ${({ theme }) => theme.colors.neutral.gray[900]};
54
+ }
55
+ }
56
+ `;
57
+ const StyledButton = styled(antd.Button) `
58
+ /* Transition mượt cho tất cả states */
59
+ transition: all 0.2s ease;
60
+
61
+ /* fullWidth */
62
+ ${({ $fullWidth }) => $fullWidth && fullWidthStyle}
63
+
64
+ /* Variant-specific styles */
65
+ ${({ $variant }) => $variant === 'outline' && outlineStyle}
66
+ ${({ $variant }) => $variant === 'secondary' && secondaryStyle}
67
+ `;
68
+ // ============================================
69
+ // Component
70
+ // ============================================
71
+ const Button = React.forwardRef(({ variant = 'primary', size = 'md', fullWidth = false, loading = false, children, ...rest }, ref) => {
72
+ const antType = antTypeMap[variant];
73
+ return (jsxRuntime.jsx(StyledButton, { ref: ref, type: antType.type, danger: antType.danger, size: antSizeMap[size], loading: loading, "$variant": variant, "$fullWidth": fullWidth, ...rest, children: children }));
74
+ });
75
+ Button.displayName = 'Button';
76
+
77
+ exports.Button = Button;
78
+ //# sourceMappingURL=Button.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Button.js","sources":["../../../../../src/components/Button/Button.tsx"],"sourcesContent":[null],"names":["css","AntButton","_jsx"],"mappings":"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"}
@@ -0,0 +1,72 @@
1
+ 'use strict';
2
+
3
+ var jsxRuntime = require('react/jsx-runtime');
4
+ var React = require('react');
5
+ var antd = require('antd');
6
+ var styled = require('styled-components');
7
+
8
+ // ============================================
9
+ // Map sang Ant Design props
10
+ // ============================================
11
+ const antSizeMap = {
12
+ sm: 'small',
13
+ md: 'middle',
14
+ lg: 'large',
15
+ };
16
+ const antStatusMap = {
17
+ default: undefined,
18
+ error: 'error',
19
+ warning: 'warning',
20
+ };
21
+ // ============================================
22
+ // Styled Components
23
+ // ============================================
24
+ const fullWidthStyle = styled.css `
25
+ width: 100%;
26
+ `;
27
+ const InputWrapper = styled.div `
28
+ display: inline-flex;
29
+ flex-direction: column;
30
+ gap: ${({ theme }) => theme.spacing.xs}px;
31
+ ${({ $fullWidth }) => $fullWidth && fullWidthStyle}
32
+ `;
33
+ const Label = styled.label `
34
+ font-size: ${({ theme }) => theme.typography.fontSizes.sm}px;
35
+ font-weight: ${({ theme }) => theme.typography.fontWeights.medium};
36
+ color: ${({ theme }) => theme.colors.neutral.gray[700]};
37
+ line-height: ${({ theme }) => theme.typography.lineHeights.normal};
38
+ `;
39
+ const HelperText = styled.span `
40
+ font-size: ${({ theme }) => theme.typography.fontSizes.xs}px;
41
+ line-height: ${({ theme }) => theme.typography.lineHeights.normal};
42
+ color: ${({ theme, $status }) => {
43
+ switch ($status) {
44
+ case 'error':
45
+ return theme.colors.semantic.error.default;
46
+ case 'warning':
47
+ return theme.colors.semantic.warning.default;
48
+ default:
49
+ return theme.colors.neutral.gray[500];
50
+ }
51
+ }};
52
+ `;
53
+ const StyledAntInput = styled(antd.Input) `
54
+ ${({ $fullWidth }) => $fullWidth && fullWidthStyle}
55
+
56
+ &.ant-input-affix-wrapper,
57
+ &.ant-input {
58
+ transition: all 0.2s ease;
59
+ }
60
+ `;
61
+ // ============================================
62
+ // Component
63
+ // ============================================
64
+ const Input = React.forwardRef(({ size = 'md', status = 'default', label, helperText, fullWidth = false, id, ...rest }, ref) => {
65
+ // Tạo id tự động nếu có label nhưng không truyền id
66
+ const inputId = id !== null && id !== void 0 ? id : (label ? `input-${label.toLowerCase().replace(/\s+/g, '-')}` : undefined);
67
+ return (jsxRuntime.jsxs(InputWrapper, { "$fullWidth": fullWidth, children: [label && jsxRuntime.jsx(Label, { htmlFor: inputId, children: label }), jsxRuntime.jsx(StyledAntInput, { ref: ref, id: inputId, size: antSizeMap[size], status: antStatusMap[status], "$fullWidth": fullWidth, ...rest }), helperText && jsxRuntime.jsx(HelperText, { "$status": status, children: helperText })] }));
68
+ });
69
+ Input.displayName = 'Input';
70
+
71
+ exports.Input = Input;
72
+ //# sourceMappingURL=Input.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Input.js","sources":["../../../../../src/components/Input/Input.tsx"],"sourcesContent":[null],"names":["css","AntInput","_jsxs","_jsx"],"mappings":"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"}
@@ -0,0 +1,36 @@
1
+ 'use strict';
2
+
3
+ var colors = require('./tokens/colors.js');
4
+ var spacing = require('./tokens/spacing.js');
5
+ var typography = require('./tokens/typography.js');
6
+ var shadows = require('./tokens/shadows.js');
7
+ var borders = require('./tokens/borders.js');
8
+ var breakpoints = require('./tokens/breakpoints.js');
9
+ var ThemeProvider = require('./theme/ThemeProvider.js');
10
+ var theme = require('./theme/theme.js');
11
+ var Button = require('./components/Button/Button.js');
12
+ var Input = require('./components/Input/Input.js');
13
+
14
+
15
+
16
+ exports.brandColors = colors.brandColors;
17
+ exports.colors = colors.colors;
18
+ exports.neutralColors = colors.neutralColors;
19
+ exports.semanticColors = colors.semanticColors;
20
+ exports.spacing = spacing.spacing;
21
+ exports.fontFamilies = typography.fontFamilies;
22
+ exports.fontSizes = typography.fontSizes;
23
+ exports.fontWeights = typography.fontWeights;
24
+ exports.lineHeights = typography.lineHeights;
25
+ exports.typography = typography.typography;
26
+ exports.shadows = shadows.shadows;
27
+ exports.borderRadius = borders.borderRadius;
28
+ exports.borderWidth = borders.borderWidth;
29
+ exports.borders = borders.borders;
30
+ exports.breakpoints = breakpoints.breakpoints;
31
+ exports.ThemeProvider = ThemeProvider.ThemeProvider;
32
+ exports.antdTheme = theme.antdTheme;
33
+ exports.appTheme = theme.appTheme;
34
+ exports.Button = Button.Button;
35
+ exports.Input = Input.Input;
36
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -0,0 +1,34 @@
1
+ 'use strict';
2
+
3
+ var jsxRuntime = require('react/jsx-runtime');
4
+ var antd = require('antd');
5
+ var styled = require('styled-components');
6
+ var theme = require('./theme.js');
7
+
8
+ // ============================================
9
+ // ThemeProvider Component
10
+ // ============================================
11
+ const ThemeProvider = ({ children, antdThemeOverride, styledThemeOverride, }) => {
12
+ // Merge Ant Design theme
13
+ const mergedAntdTheme = antdThemeOverride
14
+ ? {
15
+ ...theme.antdTheme,
16
+ token: {
17
+ ...theme.antdTheme.token,
18
+ ...antdThemeOverride.token,
19
+ },
20
+ components: {
21
+ ...theme.antdTheme.components,
22
+ ...antdThemeOverride.components,
23
+ },
24
+ }
25
+ : theme.antdTheme;
26
+ // Merge styled-components theme
27
+ const mergedStyledTheme = styledThemeOverride
28
+ ? { ...theme.appTheme, ...styledThemeOverride }
29
+ : theme.appTheme;
30
+ return (jsxRuntime.jsx(antd.ConfigProvider, { theme: mergedAntdTheme, children: jsxRuntime.jsx(styled.ThemeProvider, { theme: mergedStyledTheme, children: children }) }));
31
+ };
32
+
33
+ exports.ThemeProvider = ThemeProvider;
34
+ //# sourceMappingURL=ThemeProvider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ThemeProvider.js","sources":["../../../../src/theme/ThemeProvider.tsx"],"sourcesContent":[null],"names":["antdTheme","appTheme","_jsx","ConfigProvider","StyledThemeProvider"],"mappings":";;;;;;;AA+BA;AACA;AACA;AAEO,MAAM,aAAa,GAAiC,CAAC,EAC1D,QAAQ,EACR,iBAAiB,EACjB,mBAAmB,GACpB,KAAI;;IAEH,MAAM,eAAe,GAAgB;AACnC,UAAE;AACE,YAAA,GAAGA,eAAS;AACZ,YAAA,KAAK,EAAE;gBACL,GAAGA,eAAS,CAAC,KAAK;gBAClB,GAAG,iBAAiB,CAAC,KAAK;AAC3B,aAAA;AACD,YAAA,UAAU,EAAE;gBACV,GAAGA,eAAS,CAAC,UAAU;gBACvB,GAAG,iBAAiB,CAAC,UAAU;AAChC,aAAA;AACF;UACDA,eAAS;;IAGb,MAAM,iBAAiB,GAAa;AAClC,UAAE,EAAE,GAAGC,cAAQ,EAAE,GAAG,mBAAmB;UACrCA,cAAQ;AAEZ,IAAA,QACEC,cAAA,CAACC,mBAAc,IAAC,KAAK,EAAE,eAAe,EAAA,QAAA,EACpCD,cAAA,CAACE,oBAAmB,EAAA,EAAC,KAAK,EAAE,iBAAiB,EAAA,QAAA,EAAG,QAAQ,EAAA,CAAuB,EAAA,CAChE;AAErB;;;;"}
@@ -0,0 +1,86 @@
1
+ 'use strict';
2
+
3
+ var colors = require('../tokens/colors.js');
4
+ var spacing = require('../tokens/spacing.js');
5
+ var typography = require('../tokens/typography.js');
6
+ var shadows = require('../tokens/shadows.js');
7
+ var borders = require('../tokens/borders.js');
8
+ var breakpoints = require('../tokens/breakpoints.js');
9
+
10
+ // ============================================
11
+ // Styled-components Theme Object
12
+ // ============================================
13
+ const appTheme = {
14
+ colors: {
15
+ brand: colors.brandColors,
16
+ neutral: colors.neutralColors,
17
+ semantic: colors.semanticColors,
18
+ },
19
+ spacing: spacing.spacing,
20
+ typography: {
21
+ fontFamilies: typography.fontFamilies,
22
+ fontSizes: typography.fontSizes,
23
+ fontWeights: typography.fontWeights,
24
+ lineHeights: typography.lineHeights,
25
+ },
26
+ shadows: shadows.shadows,
27
+ borderRadius: borders.borderRadius,
28
+ borderWidth: borders.borderWidth,
29
+ breakpoints: breakpoints.breakpoints,
30
+ };
31
+ // ============================================
32
+ // Ant Design Theme Config
33
+ // ============================================
34
+ // Map design tokens sang Ant Design Design Token System.
35
+ // Tham khảo: https://ant.design/docs/react/customize-theme
36
+ const antdTheme = {
37
+ token: {
38
+ // Brand colors
39
+ colorPrimary: colors.brandColors.primary[500],
40
+ colorLink: colors.brandColors.primary[500],
41
+ colorLinkHover: colors.brandColors.primary[400],
42
+ colorLinkActive: colors.brandColors.primary[600],
43
+ // Semantic colors
44
+ colorSuccess: colors.semanticColors.success.default,
45
+ colorWarning: colors.semanticColors.warning.default,
46
+ colorError: colors.semanticColors.error.default,
47
+ colorInfo: colors.semanticColors.info.default,
48
+ // Typography
49
+ fontFamily: typography.fontFamilies.base,
50
+ fontSize: typography.fontSizes.sm, // 14px — Ant Design default
51
+ fontSizeLG: typography.fontSizes.md, // 16px
52
+ fontSizeSM: typography.fontSizes.xs, // 12px
53
+ fontSizeXL: typography.fontSizes.lg, // 18px
54
+ // Spacing
55
+ padding: spacing.spacing.lg, // 16px
56
+ paddingSM: spacing.spacing.sm, // 8px
57
+ paddingXS: spacing.spacing.xs, // 4px
58
+ paddingLG: spacing.spacing['2xl'], // 24px
59
+ margin: spacing.spacing.lg, // 16px
60
+ marginSM: spacing.spacing.sm, // 8px
61
+ marginXS: spacing.spacing.xs, // 4px
62
+ marginLG: spacing.spacing['2xl'], // 24px
63
+ // Border
64
+ borderRadius: borders.borderRadius.lg, // 6px — Ant Design default
65
+ borderRadiusLG: borders.borderRadius.xl, // 8px
66
+ borderRadiusSM: borders.borderRadius.md, // 4px
67
+ lineWidth: borders.borderWidth.thin, // 1px
68
+ lineWidthFocus: borders.borderWidth.thick, // 4px — focus ring
69
+ // Neutral
70
+ colorText: colors.neutralColors.gray[800],
71
+ colorTextSecondary: colors.neutralColors.gray[600],
72
+ colorTextTertiary: colors.neutralColors.gray[500],
73
+ colorTextDisabled: colors.neutralColors.gray[400],
74
+ colorBgBase: colors.neutralColors.white,
75
+ colorBgLayout: colors.neutralColors.gray[50],
76
+ colorBorder: colors.neutralColors.gray[300],
77
+ colorBorderSecondary: colors.neutralColors.gray[200],
78
+ // Shadow
79
+ boxShadow: shadows.shadows.sm,
80
+ boxShadowSecondary: shadows.shadows.md,
81
+ },
82
+ };
83
+
84
+ exports.antdTheme = antdTheme;
85
+ exports.appTheme = appTheme;
86
+ //# sourceMappingURL=theme.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"theme.js","sources":["../../../../src/theme/theme.ts"],"sourcesContent":[null],"names":["brandColors","neutralColors","semanticColors","spacing","fontFamilies","fontSizes","fontWeights","lineHeights","shadows","borderRadius","borderWidth","breakpoints"],"mappings":";;;;;;;;;AAyCA;AACA;AACA;AAEO,MAAM,QAAQ,GAAa;AAChC,IAAA,MAAM,EAAE;AACN,QAAA,KAAK,EAAEA,kBAAW;AAClB,QAAA,OAAO,EAAEC,oBAAa;AACtB,QAAA,QAAQ,EAAEC,qBAAc;AACzB,KAAA;aACDC,eAAO;AACP,IAAA,UAAU,EAAE;sBACVC,uBAAY;mBACZC,oBAAS;qBACTC,sBAAW;qBACXC,sBAAW;AACZ,KAAA;aACDC,eAAO;kBACPC,oBAAY;iBACZC,mBAAW;iBACXC,uBAAW;;AAGb;AACA;AACA;AACA;AACA;AAEO,MAAM,SAAS,GAAgB;AACpC,IAAA,KAAK,EAAE;;AAEL,QAAA,YAAY,EAAEX,kBAAW,CAAC,OAAO,CAAC,GAAG,CAAC;AACtC,QAAA,SAAS,EAAEA,kBAAW,CAAC,OAAO,CAAC,GAAG,CAAC;AACnC,QAAA,cAAc,EAAEA,kBAAW,CAAC,OAAO,CAAC,GAAG,CAAC;AACxC,QAAA,eAAe,EAAEA,kBAAW,CAAC,OAAO,CAAC,GAAG,CAAC;;AAGzC,QAAA,YAAY,EAAEE,qBAAc,CAAC,OAAO,CAAC,OAAO;AAC5C,QAAA,YAAY,EAAEA,qBAAc,CAAC,OAAO,CAAC,OAAO;AAC5C,QAAA,UAAU,EAAEA,qBAAc,CAAC,KAAK,CAAC,OAAO;AACxC,QAAA,SAAS,EAAEA,qBAAc,CAAC,IAAI,CAAC,OAAO;;QAGtC,UAAU,EAAEE,uBAAY,CAAC,IAAI;AAC7B,QAAA,QAAQ,EAAEC,oBAAS,CAAC,EAAE;AACtB,QAAA,UAAU,EAAEA,oBAAS,CAAC,EAAE;AACxB,QAAA,UAAU,EAAEA,oBAAS,CAAC,EAAE;AACxB,QAAA,UAAU,EAAEA,oBAAS,CAAC,EAAE;;AAGxB,QAAA,OAAO,EAAEF,eAAO,CAAC,EAAE;AACnB,QAAA,SAAS,EAAEA,eAAO,CAAC,EAAE;AACrB,QAAA,SAAS,EAAEA,eAAO,CAAC,EAAE;AACrB,QAAA,SAAS,EAAEA,eAAO,CAAC,KAAK,CAAC;AACzB,QAAA,MAAM,EAAEA,eAAO,CAAC,EAAE;AAClB,QAAA,QAAQ,EAAEA,eAAO,CAAC,EAAE;AACpB,QAAA,QAAQ,EAAEA,eAAO,CAAC,EAAE;AACpB,QAAA,QAAQ,EAAEA,eAAO,CAAC,KAAK,CAAC;;AAGxB,QAAA,YAAY,EAAEM,oBAAY,CAAC,EAAE;AAC7B,QAAA,cAAc,EAAEA,oBAAY,CAAC,EAAE;AAC/B,QAAA,cAAc,EAAEA,oBAAY,CAAC,EAAE;AAC/B,QAAA,SAAS,EAAEC,mBAAW,CAAC,IAAI;AAC3B,QAAA,cAAc,EAAEA,mBAAW,CAAC,KAAK;;AAGjC,QAAA,SAAS,EAAET,oBAAa,CAAC,IAAI,CAAC,GAAG,CAAC;AAClC,QAAA,kBAAkB,EAAEA,oBAAa,CAAC,IAAI,CAAC,GAAG,CAAC;AAC3C,QAAA,iBAAiB,EAAEA,oBAAa,CAAC,IAAI,CAAC,GAAG,CAAC;AAC1C,QAAA,iBAAiB,EAAEA,oBAAa,CAAC,IAAI,CAAC,GAAG,CAAC;QAC1C,WAAW,EAAEA,oBAAa,CAAC,KAAK;AAChC,QAAA,aAAa,EAAEA,oBAAa,CAAC,IAAI,CAAC,EAAE,CAAC;AACrC,QAAA,WAAW,EAAEA,oBAAa,CAAC,IAAI,CAAC,GAAG,CAAC;AACpC,QAAA,oBAAoB,EAAEA,oBAAa,CAAC,IAAI,CAAC,GAAG,CAAC;;QAG7C,SAAS,EAAEO,eAAO,CAAC,EAAE;QACrB,kBAAkB,EAAEA,eAAO,CAAC,EAAE;AAC/B,KAAA;;;;;;"}
@@ -0,0 +1,53 @@
1
+ 'use strict';
2
+
3
+ /**
4
+ * Border Tokens
5
+ *
6
+ * Bao gồm border-radius và border-width.
7
+ */
8
+ // ============================================
9
+ // Border Radius
10
+ // ============================================
11
+ const borderRadius = {
12
+ /** 0px — Không bo góc */
13
+ none: 0,
14
+ /** 2px — Bo góc rất nhẹ */
15
+ sm: 2,
16
+ /** 4px — Bo góc nhẹ */
17
+ md: 4,
18
+ /** 6px — Ant Design default */
19
+ lg: 6,
20
+ /** 8px — Bo góc trung bình */
21
+ xl: 8,
22
+ /** 12px — Bo góc lớn */
23
+ '2xl': 12,
24
+ /** 16px — Bo góc rất lớn */
25
+ '3xl': 16,
26
+ /** 9999px — Bo tròn hoàn toàn (pill shape) */
27
+ full: 9999,
28
+ };
29
+ // ============================================
30
+ // Border Width
31
+ // ============================================
32
+ const borderWidth = {
33
+ /** 0px */
34
+ none: 0,
35
+ /** 1px — Default border */
36
+ thin: 1,
37
+ /** 2px — Medium border */
38
+ medium: 2,
39
+ /** 4px — Thick border (ví dụ: focus ring) */
40
+ thick: 4,
41
+ };
42
+ // ============================================
43
+ // Export gộp
44
+ // ============================================
45
+ const borders = {
46
+ radius: borderRadius,
47
+ width: borderWidth,
48
+ };
49
+
50
+ exports.borderRadius = borderRadius;
51
+ exports.borderWidth = borderWidth;
52
+ exports.borders = borders;
53
+ //# sourceMappingURL=borders.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"borders.js","sources":["../../../../src/tokens/borders.ts"],"sourcesContent":[null],"names":[],"mappings":";;AAAA;;;;AAIG;AAEH;AACA;AACA;AAEO,MAAM,YAAY,GAAG;;AAE1B,IAAA,IAAI,EAAE,CAAC;;AAEP,IAAA,EAAE,EAAE,CAAC;;AAEL,IAAA,EAAE,EAAE,CAAC;;AAEL,IAAA,EAAE,EAAE,CAAC;;AAEL,IAAA,EAAE,EAAE,CAAC;;AAEL,IAAA,KAAK,EAAE,EAAE;;AAET,IAAA,KAAK,EAAE,EAAE;;AAET,IAAA,IAAI,EAAE,IAAI;;AAGZ;AACA;AACA;AAEO,MAAM,WAAW,GAAG;;AAEzB,IAAA,IAAI,EAAE,CAAC;;AAEP,IAAA,IAAI,EAAE,CAAC;;AAEP,IAAA,MAAM,EAAE,CAAC;;AAET,IAAA,KAAK,EAAE,CAAC;;AAGV;AACA;AACA;AAEO,MAAM,OAAO,GAAG;AACrB,IAAA,MAAM,EAAE,YAAY;AACpB,IAAA,KAAK,EAAE,WAAW;;;;;;;"}
@@ -0,0 +1,25 @@
1
+ 'use strict';
2
+
3
+ /**
4
+ * Breakpoint Tokens
5
+ *
6
+ * Các breakpoint responsive theo chuẩn phổ biến.
7
+ * Giá trị tính bằng pixel, dùng mobile-first (min-width).
8
+ */
9
+ const breakpoints = {
10
+ /** 480px — Mobile landscape */
11
+ xs: 480,
12
+ /** 576px — Small tablet */
13
+ sm: 576,
14
+ /** 768px — Tablet */
15
+ md: 768,
16
+ /** 992px — Small desktop */
17
+ lg: 992,
18
+ /** 1200px — Desktop */
19
+ xl: 1200,
20
+ /** 1600px — Large desktop */
21
+ '2xl': 1600,
22
+ };
23
+
24
+ exports.breakpoints = breakpoints;
25
+ //# sourceMappingURL=breakpoints.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"breakpoints.js","sources":["../../../../src/tokens/breakpoints.ts"],"sourcesContent":[null],"names":[],"mappings":";;AAAA;;;;;AAKG;AAEI,MAAM,WAAW,GAAG;;AAEzB,IAAA,EAAE,EAAE,GAAG;;AAEP,IAAA,EAAE,EAAE,GAAG;;AAEP,IAAA,EAAE,EAAE,GAAG;;AAEP,IAAA,EAAE,EAAE,GAAG;;AAEP,IAAA,EAAE,EAAE,IAAI;;AAER,IAAA,KAAK,EAAE,IAAI;;;;;"}
@@ -0,0 +1,97 @@
1
+ 'use strict';
2
+
3
+ /**
4
+ * Color Tokens
5
+ *
6
+ * Hệ thống màu sắc được chia thành 3 nhóm:
7
+ * - Brand: Màu thương hiệu (primary, secondary)
8
+ * - Neutral: Màu trung tính (text, background, border)
9
+ * - Semantic: Màu mang ý nghĩa (success, warning, error, info)
10
+ */
11
+ // ============================================
12
+ // Brand Colors
13
+ // ============================================
14
+ const brandColors = {
15
+ primary: {
16
+ 50: '#E6F1FF',
17
+ 100: '#BAD9FF',
18
+ 200: '#8DC1FF',
19
+ 300: '#61A8FF',
20
+ 400: '#3490FF',
21
+ 500: '#1677FF', // Ant Design primary mặc định
22
+ 600: '#0958D9',
23
+ 700: '#003EB3',
24
+ 800: '#002C8C',
25
+ 900: '#001D66',
26
+ },
27
+ secondary: {
28
+ 50: '#F0E6FF',
29
+ 100: '#D3B8FF',
30
+ 200: '#B58AFF',
31
+ 300: '#985CFF',
32
+ 400: '#7A2EFF',
33
+ 500: '#6C2BD9',
34
+ 600: '#5A24B3',
35
+ 700: '#481D8C',
36
+ 800: '#361666',
37
+ 900: '#240F40',
38
+ },
39
+ };
40
+ // ============================================
41
+ // Neutral Colors
42
+ // ============================================
43
+ const neutralColors = {
44
+ white: '#FFFFFF',
45
+ black: '#000000',
46
+ gray: {
47
+ 50: '#FAFAFA',
48
+ 100: '#F5F5F5',
49
+ 200: '#F0F0F0',
50
+ 300: '#D9D9D9',
51
+ 400: '#BFBFBF',
52
+ 500: '#8C8C8C',
53
+ 600: '#595959',
54
+ 700: '#434343',
55
+ 800: '#262626',
56
+ 900: '#141414',
57
+ },
58
+ };
59
+ // ============================================
60
+ // Semantic Colors
61
+ // ============================================
62
+ const semanticColors = {
63
+ success: {
64
+ light: '#F6FFED',
65
+ default: '#52C41A',
66
+ dark: '#389E0D',
67
+ },
68
+ warning: {
69
+ light: '#FFFBE6',
70
+ default: '#FAAD14',
71
+ dark: '#D48806',
72
+ },
73
+ error: {
74
+ light: '#FFF2F0',
75
+ default: '#FF4D4F',
76
+ dark: '#CF1322',
77
+ },
78
+ info: {
79
+ light: '#E6F4FF',
80
+ default: '#1677FF',
81
+ dark: '#0958D9',
82
+ },
83
+ };
84
+ // ============================================
85
+ // Export gộp
86
+ // ============================================
87
+ const colors = {
88
+ brand: brandColors,
89
+ neutral: neutralColors,
90
+ semantic: semanticColors,
91
+ };
92
+
93
+ exports.brandColors = brandColors;
94
+ exports.colors = colors;
95
+ exports.neutralColors = neutralColors;
96
+ exports.semanticColors = semanticColors;
97
+ //# sourceMappingURL=colors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"colors.js","sources":["../../../../src/tokens/colors.ts"],"sourcesContent":[null],"names":[],"mappings":";;AAAA;;;;;;;AAOG;AAEH;AACA;AACA;AAEO,MAAM,WAAW,GAAG;AACzB,IAAA,OAAO,EAAE;AACP,QAAA,EAAE,EAAE,SAAS;AACb,QAAA,GAAG,EAAE,SAAS;AACd,QAAA,GAAG,EAAE,SAAS;AACd,QAAA,GAAG,EAAE,SAAS;AACd,QAAA,GAAG,EAAE,SAAS;QACd,GAAG,EAAE,SAAS;AACd,QAAA,GAAG,EAAE,SAAS;AACd,QAAA,GAAG,EAAE,SAAS;AACd,QAAA,GAAG,EAAE,SAAS;AACd,QAAA,GAAG,EAAE,SAAS;AACf,KAAA;AACD,IAAA,SAAS,EAAE;AACT,QAAA,EAAE,EAAE,SAAS;AACb,QAAA,GAAG,EAAE,SAAS;AACd,QAAA,GAAG,EAAE,SAAS;AACd,QAAA,GAAG,EAAE,SAAS;AACd,QAAA,GAAG,EAAE,SAAS;AACd,QAAA,GAAG,EAAE,SAAS;AACd,QAAA,GAAG,EAAE,SAAS;AACd,QAAA,GAAG,EAAE,SAAS;AACd,QAAA,GAAG,EAAE,SAAS;AACd,QAAA,GAAG,EAAE,SAAS;AACf,KAAA;;AAGH;AACA;AACA;AAEO,MAAM,aAAa,GAAG;AAC3B,IAAA,KAAK,EAAE,SAAS;AAChB,IAAA,KAAK,EAAE,SAAS;AAEhB,IAAA,IAAI,EAAE;AACJ,QAAA,EAAE,EAAE,SAAS;AACb,QAAA,GAAG,EAAE,SAAS;AACd,QAAA,GAAG,EAAE,SAAS;AACd,QAAA,GAAG,EAAE,SAAS;AACd,QAAA,GAAG,EAAE,SAAS;AACd,QAAA,GAAG,EAAE,SAAS;AACd,QAAA,GAAG,EAAE,SAAS;AACd,QAAA,GAAG,EAAE,SAAS;AACd,QAAA,GAAG,EAAE,SAAS;AACd,QAAA,GAAG,EAAE,SAAS;AACf,KAAA;;AAGH;AACA;AACA;AAEO,MAAM,cAAc,GAAG;AAC5B,IAAA,OAAO,EAAE;AACP,QAAA,KAAK,EAAE,SAAS;AAChB,QAAA,OAAO,EAAE,SAAS;AAClB,QAAA,IAAI,EAAE,SAAS;AAChB,KAAA;AACD,IAAA,OAAO,EAAE;AACP,QAAA,KAAK,EAAE,SAAS;AAChB,QAAA,OAAO,EAAE,SAAS;AAClB,QAAA,IAAI,EAAE,SAAS;AAChB,KAAA;AACD,IAAA,KAAK,EAAE;AACL,QAAA,KAAK,EAAE,SAAS;AAChB,QAAA,OAAO,EAAE,SAAS;AAClB,QAAA,IAAI,EAAE,SAAS;AAChB,KAAA;AACD,IAAA,IAAI,EAAE;AACJ,QAAA,KAAK,EAAE,SAAS;AAChB,QAAA,OAAO,EAAE,SAAS;AAClB,QAAA,IAAI,EAAE,SAAS;AAChB,KAAA;;AAGH;AACA;AACA;AAEO,MAAM,MAAM,GAAG;AACpB,IAAA,KAAK,EAAE,WAAW;AAClB,IAAA,OAAO,EAAE,aAAa;AACtB,IAAA,QAAQ,EAAE,cAAc;;;;;;;;"}
@@ -0,0 +1,23 @@
1
+ 'use strict';
2
+
3
+ /**
4
+ * Shadow Tokens
5
+ *
6
+ * Hệ thống shadow tạo cảm giác elevation (độ nổi).
7
+ * Càng cao → shadow càng lớn và mờ → element trông càng "nổi" lên.
8
+ */
9
+ const shadows = {
10
+ /** Không có shadow */
11
+ none: 'none',
12
+ /** Shadow nhẹ — Cards, containers */
13
+ sm: '0 1px 2px 0 rgba(0, 0, 0, 0.05)',
14
+ /** Shadow trung bình — Dropdowns, popovers */
15
+ md: '0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -2px rgba(0, 0, 0, 0.1)',
16
+ /** Shadow lớn — Modals, dialogs */
17
+ lg: '0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -4px rgba(0, 0, 0, 0.1)',
18
+ /** Shadow rất lớn — Elements nổi bật nhất */
19
+ xl: '0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 8px 10px -6px rgba(0, 0, 0, 0.1)',
20
+ };
21
+
22
+ exports.shadows = shadows;
23
+ //# sourceMappingURL=shadows.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shadows.js","sources":["../../../../src/tokens/shadows.ts"],"sourcesContent":[null],"names":[],"mappings":";;AAAA;;;;;AAKG;AAEI,MAAM,OAAO,GAAG;;AAErB,IAAA,IAAI,EAAE,MAAM;;AAEZ,IAAA,EAAE,EAAE,iCAAiC;;AAErC,IAAA,EAAE,EAAE,sEAAsE;;AAE1E,IAAA,EAAE,EAAE,wEAAwE;;AAE5E,IAAA,EAAE,EAAE,yEAAyE;;;;;"}
@@ -0,0 +1,39 @@
1
+ 'use strict';
2
+
3
+ /**
4
+ * Spacing Tokens
5
+ *
6
+ * Hệ thống spacing dựa trên base unit 4px (4-point grid system).
7
+ * Mỗi bậc nhân đôi hoặc tăng dần đều → tạo nhịp điệu thị giác nhất quán.
8
+ *
9
+ * Quy ước đặt tên: xs, sm, md, lg, xl, 2xl, 3xl
10
+ */
11
+ const spacing = {
12
+ /** 0px */
13
+ none: 0,
14
+ /** 2px — Khoảng cách rất nhỏ (ví dụ: gap giữa icon và text nhỏ) */
15
+ xxs: 2,
16
+ /** 4px — Khoảng cách nhỏ */
17
+ xs: 4,
18
+ /** 8px — Khoảng cách cơ bản */
19
+ sm: 8,
20
+ /** 12px */
21
+ md: 12,
22
+ /** 16px — Padding mặc định */
23
+ lg: 16,
24
+ /** 20px */
25
+ xl: 20,
26
+ /** 24px — Padding lớn */
27
+ '2xl': 24,
28
+ /** 32px */
29
+ '3xl': 32,
30
+ /** 40px */
31
+ '4xl': 40,
32
+ /** 48px */
33
+ '5xl': 48,
34
+ /** 64px */
35
+ '6xl': 64,
36
+ };
37
+
38
+ exports.spacing = spacing;
39
+ //# sourceMappingURL=spacing.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spacing.js","sources":["../../../../src/tokens/spacing.ts"],"sourcesContent":[null],"names":[],"mappings":";;AAAA;;;;;;;AAOG;AAEI,MAAM,OAAO,GAAG;;AAErB,IAAA,IAAI,EAAE,CAAC;;AAEP,IAAA,GAAG,EAAE,CAAC;;AAEN,IAAA,EAAE,EAAE,CAAC;;AAEL,IAAA,EAAE,EAAE,CAAC;;AAEL,IAAA,EAAE,EAAE,EAAE;;AAEN,IAAA,EAAE,EAAE,EAAE;;AAEN,IAAA,EAAE,EAAE,EAAE;;AAEN,IAAA,KAAK,EAAE,EAAE;;AAET,IAAA,KAAK,EAAE,EAAE;;AAET,IAAA,KAAK,EAAE,EAAE;;AAET,IAAA,KAAK,EAAE,EAAE;;AAET,IAAA,KAAK,EAAE,EAAE;;;;;"}