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.
- package/dist/cjs/components/Button/Button.js +78 -0
- package/dist/cjs/components/Button/Button.js.map +1 -0
- package/dist/cjs/components/Input/Input.js +72 -0
- package/dist/cjs/components/Input/Input.js.map +1 -0
- package/dist/cjs/index.js +36 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/theme/ThemeProvider.js +34 -0
- package/dist/cjs/theme/ThemeProvider.js.map +1 -0
- package/dist/cjs/theme/theme.js +86 -0
- package/dist/cjs/theme/theme.js.map +1 -0
- package/dist/cjs/tokens/borders.js +53 -0
- package/dist/cjs/tokens/borders.js.map +1 -0
- package/dist/cjs/tokens/breakpoints.js +25 -0
- package/dist/cjs/tokens/breakpoints.js.map +1 -0
- package/dist/cjs/tokens/colors.js +97 -0
- package/dist/cjs/tokens/colors.js.map +1 -0
- package/dist/cjs/tokens/shadows.js +23 -0
- package/dist/cjs/tokens/shadows.js.map +1 -0
- package/dist/cjs/tokens/spacing.js +39 -0
- package/dist/cjs/tokens/spacing.js.map +1 -0
- package/dist/cjs/tokens/typography.js +82 -0
- package/dist/cjs/tokens/typography.js.map +1 -0
- package/dist/esm/components/Button/Button.js +76 -0
- package/dist/esm/components/Button/Button.js.map +1 -0
- package/dist/esm/components/Input/Input.js +70 -0
- package/dist/esm/components/Input/Input.js.map +1 -0
- package/dist/esm/index.js +11 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/theme/ThemeProvider.js +32 -0
- package/dist/esm/theme/ThemeProvider.js.map +1 -0
- package/dist/esm/theme/theme.js +83 -0
- package/dist/esm/theme/theme.js.map +1 -0
- package/dist/esm/tokens/borders.js +49 -0
- package/dist/esm/tokens/borders.js.map +1 -0
- package/dist/esm/tokens/breakpoints.js +23 -0
- package/dist/esm/tokens/breakpoints.js.map +1 -0
- package/dist/esm/tokens/colors.js +92 -0
- package/dist/esm/tokens/colors.js.map +1 -0
- package/dist/esm/tokens/shadows.js +21 -0
- package/dist/esm/tokens/shadows.js.map +1 -0
- package/dist/esm/tokens/spacing.js +37 -0
- package/dist/esm/tokens/spacing.js.map +1 -0
- package/dist/esm/tokens/typography.js +76 -0
- package/dist/esm/tokens/typography.js.map +1 -0
- package/dist/index.d.ts +459 -0
- 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;;;;;"}
|