@cdx-ui/components 0.0.1-alpha.14 → 0.0.1-alpha.15
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/lib/commonjs/components/Box/Box.js +1 -0
- package/lib/commonjs/components/Box/Box.js.map +1 -1
- package/lib/commonjs/components/Button/index.js +28 -13
- package/lib/commonjs/components/Button/index.js.map +1 -1
- package/lib/commonjs/components/Button/styles.js +324 -140
- package/lib/commonjs/components/Button/styles.js.map +1 -1
- package/lib/commonjs/components/Checkbox/index.js +18 -11
- package/lib/commonjs/components/Checkbox/index.js.map +1 -1
- package/lib/commonjs/components/Checkbox/styles.js +17 -16
- package/lib/commonjs/components/Checkbox/styles.js.map +1 -1
- package/lib/commonjs/components/Heading/index.js.map +1 -1
- package/lib/commonjs/components/Heading/styles.js +3 -2
- package/lib/commonjs/components/Heading/styles.js.map +1 -1
- package/lib/commonjs/components/Icon/index.js +2 -1
- package/lib/commonjs/components/Icon/index.js.map +1 -1
- package/lib/commonjs/components/Input/index.js +10 -16
- package/lib/commonjs/components/Input/index.js.map +1 -1
- package/lib/commonjs/components/Input/styles.js +16 -30
- package/lib/commonjs/components/Input/styles.js.map +1 -1
- package/lib/commonjs/components/Link/styles.js +6 -1
- package/lib/commonjs/components/Link/styles.js.map +1 -1
- package/lib/commonjs/components/Select/index.js +11 -12
- package/lib/commonjs/components/Select/index.js.map +1 -1
- package/lib/commonjs/components/Select/styles.js +29 -53
- package/lib/commonjs/components/Select/styles.js.map +1 -1
- package/lib/commonjs/components/Stack/styles.js +2 -14
- package/lib/commonjs/components/Stack/styles.js.map +1 -1
- package/lib/commonjs/components/Text/index.js.map +1 -1
- package/lib/commonjs/components/Text/styles.js +3 -2
- package/lib/commonjs/components/Text/styles.js.map +1 -1
- package/lib/commonjs/styles/index.js +17 -0
- package/lib/commonjs/styles/index.js.map +1 -0
- package/lib/commonjs/styles/primitives.js +123 -0
- package/lib/commonjs/styles/primitives.js.map +1 -0
- package/lib/module/components/Box/Box.js +1 -0
- package/lib/module/components/Box/Box.js.map +1 -1
- package/lib/module/components/Button/index.js +29 -14
- package/lib/module/components/Button/index.js.map +1 -1
- package/lib/module/components/Button/styles.js +323 -139
- package/lib/module/components/Button/styles.js.map +1 -1
- package/lib/module/components/Checkbox/index.js +19 -12
- package/lib/module/components/Checkbox/index.js.map +1 -1
- package/lib/module/components/Checkbox/styles.js +17 -16
- package/lib/module/components/Checkbox/styles.js.map +1 -1
- package/lib/module/components/Heading/index.js.map +1 -1
- package/lib/module/components/Heading/styles.js +3 -2
- package/lib/module/components/Heading/styles.js.map +1 -1
- package/lib/module/components/Icon/index.js +2 -1
- package/lib/module/components/Icon/index.js.map +1 -1
- package/lib/module/components/Input/index.js +10 -16
- package/lib/module/components/Input/index.js.map +1 -1
- package/lib/module/components/Input/styles.js +16 -30
- package/lib/module/components/Input/styles.js.map +1 -1
- package/lib/module/components/Link/styles.js +6 -1
- package/lib/module/components/Link/styles.js.map +1 -1
- package/lib/module/components/Select/index.js +12 -13
- package/lib/module/components/Select/index.js.map +1 -1
- package/lib/module/components/Select/styles.js +29 -53
- package/lib/module/components/Select/styles.js.map +1 -1
- package/lib/module/components/Stack/styles.js +2 -14
- package/lib/module/components/Stack/styles.js.map +1 -1
- package/lib/module/components/Text/index.js.map +1 -1
- package/lib/module/components/Text/styles.js +3 -2
- package/lib/module/components/Text/styles.js.map +1 -1
- package/lib/module/styles/index.js +4 -0
- package/lib/module/styles/index.js.map +1 -0
- package/lib/module/styles/primitives.js +119 -0
- package/lib/module/styles/primitives.js.map +1 -0
- package/lib/typescript/components/Box/Box.d.ts +1 -0
- package/lib/typescript/components/Box/Box.d.ts.map +1 -1
- package/lib/typescript/components/Button/index.d.ts +6 -3
- package/lib/typescript/components/Button/index.d.ts.map +1 -1
- package/lib/typescript/components/Button/styles.d.ts +14 -8
- package/lib/typescript/components/Button/styles.d.ts.map +1 -1
- package/lib/typescript/components/Checkbox/index.d.ts +6 -4
- package/lib/typescript/components/Checkbox/index.d.ts.map +1 -1
- package/lib/typescript/components/Checkbox/styles.d.ts +4 -4
- package/lib/typescript/components/Checkbox/styles.d.ts.map +1 -1
- package/lib/typescript/components/Heading/index.d.ts +6 -2
- package/lib/typescript/components/Heading/index.d.ts.map +1 -1
- package/lib/typescript/components/Heading/styles.d.ts.map +1 -1
- package/lib/typescript/components/Icon/index.d.ts +1 -2
- package/lib/typescript/components/Icon/index.d.ts.map +1 -1
- package/lib/typescript/components/Input/index.d.ts +6 -4
- package/lib/typescript/components/Input/index.d.ts.map +1 -1
- package/lib/typescript/components/Input/styles.d.ts +5 -7
- package/lib/typescript/components/Input/styles.d.ts.map +1 -1
- package/lib/typescript/components/Link/styles.d.ts.map +1 -1
- package/lib/typescript/components/Select/index.d.ts +6 -3
- package/lib/typescript/components/Select/index.d.ts.map +1 -1
- package/lib/typescript/components/Select/styles.d.ts +6 -8
- package/lib/typescript/components/Select/styles.d.ts.map +1 -1
- package/lib/typescript/components/Stack/styles.d.ts.map +1 -1
- package/lib/typescript/components/Text/index.d.ts +6 -2
- package/lib/typescript/components/Text/index.d.ts.map +1 -1
- package/lib/typescript/components/Text/styles.d.ts.map +1 -1
- package/lib/typescript/styles/index.d.ts +2 -0
- package/lib/typescript/styles/index.d.ts.map +1 -0
- package/lib/typescript/styles/primitives.d.ts +85 -0
- package/lib/typescript/styles/primitives.d.ts.map +1 -0
- package/package.json +4 -4
- package/src/components/Box/Box.tsx +1 -0
- package/src/components/Button/index.tsx +23 -15
- package/src/components/Button/styles.ts +353 -149
- package/src/components/Checkbox/index.tsx +15 -21
- package/src/components/Checkbox/styles.ts +33 -24
- package/src/components/Heading/index.tsx +4 -1
- package/src/components/Heading/styles.tsx +3 -2
- package/src/components/Icon/index.tsx +7 -2
- package/src/components/Input/index.tsx +9 -20
- package/src/components/Input/styles.ts +42 -37
- package/src/components/Link/styles.ts +10 -1
- package/src/components/Select/index.tsx +12 -11
- package/src/components/Select/styles.ts +63 -74
- package/src/components/Stack/styles.ts +2 -14
- package/src/components/Text/index.tsx +2 -1
- package/src/components/Text/styles.tsx +3 -2
- package/src/styles/index.ts +1 -0
- package/src/styles/primitives.ts +107 -0
|
@@ -1,58 +1,58 @@
|
|
|
1
1
|
import { Platform } from 'react-native';
|
|
2
2
|
import { cva, type VariantProps } from 'class-variance-authority';
|
|
3
|
+
import {
|
|
4
|
+
COLOR_BG_PRIMARY,
|
|
5
|
+
COLOR_BORDER_DEFAULT,
|
|
6
|
+
COLOR_TEXT_MUTED,
|
|
7
|
+
COLOR_TEXT_PRIMARY,
|
|
8
|
+
DISABLED_CURSOR,
|
|
9
|
+
DISABLED_OPACITY,
|
|
10
|
+
RADIUS_SM,
|
|
11
|
+
RADIUS_MD,
|
|
12
|
+
SHADOW_SM,
|
|
13
|
+
SHADOW_MD,
|
|
14
|
+
SIZE_SCALE,
|
|
15
|
+
TRANSITION_COLORS,
|
|
16
|
+
} from '../../styles/primitives';
|
|
3
17
|
|
|
4
18
|
// ── Trigger ─────────────────────────────────────────────────
|
|
5
19
|
|
|
6
20
|
export const selectTriggerVariants = cva(
|
|
7
21
|
[
|
|
8
22
|
'flex-row items-center justify-between',
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
23
|
+
RADIUS_SM,
|
|
24
|
+
SHADOW_SM,
|
|
25
|
+
TRANSITION_COLORS,
|
|
26
|
+
COLOR_BG_PRIMARY,
|
|
27
|
+
`border ${COLOR_BORDER_DEFAULT}`,
|
|
28
|
+
DISABLED_OPACITY,
|
|
29
|
+
DISABLED_CURSOR,
|
|
12
30
|
'data-[readonly=true]:cursor-default',
|
|
13
|
-
'data-[
|
|
31
|
+
'data-[state=open]:border-slate-900',
|
|
32
|
+
'data-[invalid=true]:border-red-500',
|
|
33
|
+
'data-[readonly=true]:bg-slate-50',
|
|
34
|
+
Platform.select({
|
|
35
|
+
default: 'data-[active=true]:border-slate-300',
|
|
36
|
+
web: [
|
|
37
|
+
'data-[hover=true]:border-slate-300 data-[active=true]:data-[hover=true]:border-slate-400',
|
|
38
|
+
'data-[focus-visible=true]:ring-2 data-[focus-visible=true]:ring-slate-400/50 data-[focus-visible=true]:ring-offset-2',
|
|
39
|
+
'data-[state=open]:ring-2 data-[state=open]:ring-slate-400/50',
|
|
40
|
+
].join(' '),
|
|
41
|
+
}),
|
|
14
42
|
],
|
|
15
43
|
{
|
|
16
44
|
variants: {
|
|
17
45
|
variant: {
|
|
18
|
-
outline: [
|
|
19
|
-
'bg-white border border-gray-300',
|
|
20
|
-
Platform.select({
|
|
21
|
-
default: 'data-[active=true]:border-gray-400',
|
|
22
|
-
web: 'data-[hover=true]:border-gray-400 data-[active=true]:data-[hover=true]:border-gray-500',
|
|
23
|
-
}),
|
|
24
|
-
'data-[state=open]:data-[invalid=false]:border-blue-500',
|
|
25
|
-
'data-[invalid=true]:border-red-500',
|
|
26
|
-
'data-[readonly=true]:bg-gray-50',
|
|
27
|
-
],
|
|
28
|
-
filled: [
|
|
29
|
-
'bg-gray-100 border border-transparent',
|
|
30
|
-
Platform.select({
|
|
31
|
-
default: 'data-[active=true]:bg-gray-200',
|
|
32
|
-
web: 'data-[hover=true]:bg-gray-200 data-[active=true]:data-[hover=true]:bg-gray-300',
|
|
33
|
-
}),
|
|
34
|
-
'data-[state=open]:border-blue-500',
|
|
35
|
-
'data-[invalid=true]:border-red-500 data-[invalid=true]:border',
|
|
36
|
-
'data-[readonly=true]:bg-gray-200',
|
|
37
|
-
],
|
|
38
|
-
ghost: [
|
|
39
|
-
'bg-transparent border border-transparent',
|
|
40
|
-
Platform.select({
|
|
41
|
-
default: 'data-[active=true]:bg-gray-100',
|
|
42
|
-
web: 'data-[hover=true]:bg-gray-50 data-[active=true]:data-[hover=true]:bg-gray-100',
|
|
43
|
-
}),
|
|
44
|
-
'data-[invalid=true]:border-red-500 data-[invalid=true]:border',
|
|
45
|
-
],
|
|
46
|
+
outline: [],
|
|
46
47
|
},
|
|
47
48
|
size: {
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
lg: 'h-12 px-4 gap-2.5',
|
|
49
|
+
default: `${SIZE_SCALE.default.height} ${SIZE_SCALE.default.px} ${SIZE_SCALE.default.gap}`,
|
|
50
|
+
small: `${SIZE_SCALE.small.height} ${SIZE_SCALE.small.px} ${SIZE_SCALE.small.gap}`,
|
|
51
51
|
},
|
|
52
52
|
},
|
|
53
53
|
defaultVariants: {
|
|
54
54
|
variant: 'outline',
|
|
55
|
-
size: '
|
|
55
|
+
size: 'default',
|
|
56
56
|
},
|
|
57
57
|
},
|
|
58
58
|
);
|
|
@@ -60,23 +60,21 @@ export const selectTriggerVariants = cva(
|
|
|
60
60
|
// ── Value ───────────────────────────────────────────────────
|
|
61
61
|
|
|
62
62
|
export const selectValueVariants = cva(
|
|
63
|
-
[
|
|
63
|
+
[
|
|
64
|
+
'flex-1',
|
|
65
|
+
'data-[placeholder=true]:text-slate-400',
|
|
66
|
+
'data-[invalid=true]:text-red-600',
|
|
67
|
+
COLOR_TEXT_PRIMARY,
|
|
68
|
+
],
|
|
64
69
|
{
|
|
65
70
|
variants: {
|
|
66
|
-
variant: {
|
|
67
|
-
outline: 'text-gray-900',
|
|
68
|
-
filled: 'text-gray-900',
|
|
69
|
-
ghost: 'text-gray-900',
|
|
70
|
-
},
|
|
71
71
|
size: {
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
lg: 'text-lg',
|
|
72
|
+
default: SIZE_SCALE.default.text,
|
|
73
|
+
small: SIZE_SCALE.small.text,
|
|
75
74
|
},
|
|
76
75
|
},
|
|
77
76
|
defaultVariants: {
|
|
78
|
-
|
|
79
|
-
size: 'md',
|
|
77
|
+
size: 'default',
|
|
80
78
|
},
|
|
81
79
|
},
|
|
82
80
|
);
|
|
@@ -84,23 +82,16 @@ export const selectValueVariants = cva(
|
|
|
84
82
|
// ── Icon ────────────────────────────────────────────────────
|
|
85
83
|
|
|
86
84
|
export const selectIconVariants = cva(
|
|
87
|
-
['items-center justify-center', 'data-[invalid=true]:text-red-500'],
|
|
85
|
+
['items-center justify-center', COLOR_TEXT_MUTED, 'data-[invalid=true]:text-red-500'],
|
|
88
86
|
{
|
|
89
87
|
variants: {
|
|
90
|
-
variant: {
|
|
91
|
-
outline: 'text-gray-500',
|
|
92
|
-
filled: 'text-gray-500',
|
|
93
|
-
ghost: 'text-gray-400',
|
|
94
|
-
},
|
|
95
88
|
size: {
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
lg: 'h-6 w-6',
|
|
89
|
+
default: 'h-5 w-5',
|
|
90
|
+
small: 'h-4 w-4',
|
|
99
91
|
},
|
|
100
92
|
},
|
|
101
93
|
defaultVariants: {
|
|
102
|
-
|
|
103
|
-
size: 'md',
|
|
94
|
+
size: 'default',
|
|
104
95
|
},
|
|
105
96
|
},
|
|
106
97
|
);
|
|
@@ -108,12 +99,12 @@ export const selectIconVariants = cva(
|
|
|
108
99
|
// ── Content ─────────────────────────────────────────────────
|
|
109
100
|
|
|
110
101
|
export const selectContentVariants = cva([
|
|
111
|
-
|
|
112
|
-
|
|
102
|
+
COLOR_BG_PRIMARY,
|
|
103
|
+
`border ${COLOR_BORDER_DEFAULT}`,
|
|
113
104
|
'overflow-hidden',
|
|
114
|
-
|
|
105
|
+
RADIUS_MD,
|
|
115
106
|
Platform.select({
|
|
116
|
-
web:
|
|
107
|
+
web: SHADOW_MD,
|
|
117
108
|
default: '',
|
|
118
109
|
}),
|
|
119
110
|
'max-h-60',
|
|
@@ -127,22 +118,21 @@ export const selectItemVariants = cva(
|
|
|
127
118
|
'flex-row items-center',
|
|
128
119
|
'transition-colors duration-100',
|
|
129
120
|
'data-[disabled=true]:opacity-50 data-[disabled=true]:pointer-events-none',
|
|
130
|
-
'data-[state=checked]:bg-
|
|
121
|
+
'data-[state=checked]:bg-slate-50 data-[state=checked]:font-medium',
|
|
131
122
|
Platform.select({
|
|
132
|
-
default: 'data-[active=true]:bg-
|
|
133
|
-
web: 'data-[hover=true]:bg-
|
|
123
|
+
default: 'data-[active=true]:bg-slate-100',
|
|
124
|
+
web: 'data-[hover=true]:bg-slate-50 data-[active=true]:data-[hover=true]:bg-slate-100 data-[highlighted=true]:bg-slate-50',
|
|
134
125
|
}),
|
|
135
126
|
],
|
|
136
127
|
{
|
|
137
128
|
variants: {
|
|
138
129
|
size: {
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
lg: 'px-4 py-2.5',
|
|
130
|
+
default: 'px-3 py-2',
|
|
131
|
+
small: 'px-2.5 py-1.5',
|
|
142
132
|
},
|
|
143
133
|
},
|
|
144
134
|
defaultVariants: {
|
|
145
|
-
size: '
|
|
135
|
+
size: 'default',
|
|
146
136
|
},
|
|
147
137
|
},
|
|
148
138
|
);
|
|
@@ -150,17 +140,16 @@ export const selectItemVariants = cva(
|
|
|
150
140
|
// ── ItemLabel ───────────────────────────────────────────────
|
|
151
141
|
|
|
152
142
|
export const selectItemLabelVariants = cva(
|
|
153
|
-
[
|
|
143
|
+
[COLOR_TEXT_PRIMARY, 'data-[state=checked]:font-medium'],
|
|
154
144
|
{
|
|
155
145
|
variants: {
|
|
156
146
|
size: {
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
lg: 'text-lg',
|
|
147
|
+
default: SIZE_SCALE.default.text,
|
|
148
|
+
small: SIZE_SCALE.small.text,
|
|
160
149
|
},
|
|
161
150
|
},
|
|
162
151
|
defaultVariants: {
|
|
163
|
-
size: '
|
|
152
|
+
size: 'default',
|
|
164
153
|
},
|
|
165
154
|
},
|
|
166
155
|
);
|
|
@@ -16,13 +16,7 @@ export const hStackRootVariants = cva([], {
|
|
|
16
16
|
true: 'flex-row-reverse',
|
|
17
17
|
false: 'flex-row',
|
|
18
18
|
},
|
|
19
|
-
space:
|
|
20
|
-
xs: spaceMap.xs,
|
|
21
|
-
sm: spaceMap.sm,
|
|
22
|
-
md: spaceMap.md,
|
|
23
|
-
lg: spaceMap.lg,
|
|
24
|
-
xl: spaceMap.xl,
|
|
25
|
-
},
|
|
19
|
+
space: spaceMap,
|
|
26
20
|
},
|
|
27
21
|
defaultVariants: {
|
|
28
22
|
reversed: false,
|
|
@@ -35,13 +29,7 @@ export const vStackRootVariants = cva([], {
|
|
|
35
29
|
true: 'flex-col-reverse',
|
|
36
30
|
false: 'flex-col',
|
|
37
31
|
},
|
|
38
|
-
space:
|
|
39
|
-
xs: spaceMap.xs,
|
|
40
|
-
sm: spaceMap.sm,
|
|
41
|
-
md: spaceMap.md,
|
|
42
|
-
lg: spaceMap.lg,
|
|
43
|
-
xl: spaceMap.xl,
|
|
44
|
-
},
|
|
32
|
+
space: spaceMap,
|
|
45
33
|
},
|
|
46
34
|
defaultVariants: {
|
|
47
35
|
reversed: false,
|
|
@@ -3,7 +3,8 @@ import { Text as RNText } from 'react-native';
|
|
|
3
3
|
import { cn } from '@cdx-ui/utils';
|
|
4
4
|
import { textStyle, TextVariantProps } from './styles';
|
|
5
5
|
|
|
6
|
-
export type TextProps = TextVariantProps &
|
|
6
|
+
export type TextProps = TextVariantProps &
|
|
7
|
+
ComponentPropsWithoutRef<typeof RNText> & { className?: string };
|
|
7
8
|
|
|
8
9
|
export const Text = forwardRef<ComponentRef<typeof RNText>, TextProps>(function Text(
|
|
9
10
|
{ className, size = 'md', ...props },
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
import { Platform } from 'react-native';
|
|
2
2
|
import { cva, type VariantProps } from 'class-variance-authority';
|
|
3
|
+
import { COLOR_TEXT_PRIMARY } from '../../styles/primitives';
|
|
3
4
|
|
|
4
5
|
export const textStyle = cva(
|
|
5
6
|
[
|
|
6
|
-
|
|
7
|
+
`${COLOR_TEXT_PRIMARY} font-normal`,
|
|
7
8
|
Platform.select({
|
|
8
|
-
web: 'font-sans
|
|
9
|
+
web: 'font-sans my-0 bg-transparent display-inline no-underline',
|
|
9
10
|
default: '',
|
|
10
11
|
}),
|
|
11
12
|
],
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './primitives';
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
// packages/components/src/styles/primitives.ts
|
|
2
|
+
// Semantic constants for CDX UI component styling.
|
|
3
|
+
// See docs/visual-revamp-plan.md for rationale and usage.
|
|
4
|
+
|
|
5
|
+
// ─── Colors ──────────────────────────────────────────────
|
|
6
|
+
// Surface & background
|
|
7
|
+
export const COLOR_BG_PRIMARY = 'bg-white';
|
|
8
|
+
export const COLOR_BG_SUBTLE = 'bg-slate-50';
|
|
9
|
+
export const COLOR_BG_MUTED = 'bg-slate-100';
|
|
10
|
+
export const COLOR_BG_INVERSE = 'bg-slate-900';
|
|
11
|
+
|
|
12
|
+
// Border
|
|
13
|
+
export const COLOR_BORDER_DEFAULT = 'border-slate-200';
|
|
14
|
+
export const COLOR_BORDER_STRONG = 'border-slate-300';
|
|
15
|
+
export const COLOR_BORDER_FOCUS = 'border-slate-900';
|
|
16
|
+
export const COLOR_BORDER_INVALID = 'border-red-500';
|
|
17
|
+
|
|
18
|
+
// Text
|
|
19
|
+
export const COLOR_TEXT_PRIMARY = 'text-slate-900';
|
|
20
|
+
export const COLOR_TEXT_SECONDARY = 'text-slate-500';
|
|
21
|
+
export const COLOR_TEXT_MUTED = 'text-slate-400';
|
|
22
|
+
export const COLOR_TEXT_INVERSE = 'text-white';
|
|
23
|
+
export const COLOR_TEXT_PLACEHOLDER = 'text-slate-400';
|
|
24
|
+
export const COLOR_TEXT_INVALID = 'text-red-600';
|
|
25
|
+
|
|
26
|
+
// Brand / Action
|
|
27
|
+
export const COLOR_BRAND_DEFAULT = 'bg-slate-900';
|
|
28
|
+
export const COLOR_BRAND_HOVER = 'bg-slate-800';
|
|
29
|
+
export const COLOR_BRAND_ACTIVE = 'bg-slate-700';
|
|
30
|
+
|
|
31
|
+
// Accent (for checked states, active indicators)
|
|
32
|
+
export const COLOR_ACCENT_DEFAULT = 'bg-slate-900';
|
|
33
|
+
export const COLOR_ACCENT_BORDER = 'border-slate-900';
|
|
34
|
+
|
|
35
|
+
// Semantic colors (danger, warning, success, info)
|
|
36
|
+
// Kept for Button's 5-color system
|
|
37
|
+
export const SEMANTIC_COLORS = {
|
|
38
|
+
action: {
|
|
39
|
+
bg: 'bg-slate-900',
|
|
40
|
+
bgHover: 'bg-slate-800',
|
|
41
|
+
bgActive: 'bg-slate-700',
|
|
42
|
+
border: 'border-slate-900',
|
|
43
|
+
text: 'text-slate-900',
|
|
44
|
+
ring: 'ring-slate-400/50',
|
|
45
|
+
},
|
|
46
|
+
danger: {
|
|
47
|
+
bg: 'bg-red-600',
|
|
48
|
+
bgHover: 'bg-red-700',
|
|
49
|
+
bgActive: 'bg-red-800',
|
|
50
|
+
border: 'border-red-600',
|
|
51
|
+
text: 'text-red-600',
|
|
52
|
+
ring: 'ring-red-400/50',
|
|
53
|
+
},
|
|
54
|
+
warning: {
|
|
55
|
+
bg: 'bg-amber-500',
|
|
56
|
+
bgHover: 'bg-amber-600',
|
|
57
|
+
bgActive: 'bg-amber-700',
|
|
58
|
+
border: 'border-amber-500',
|
|
59
|
+
text: 'text-amber-600',
|
|
60
|
+
ring: 'ring-amber-400/50',
|
|
61
|
+
},
|
|
62
|
+
success: {
|
|
63
|
+
bg: 'bg-green-600',
|
|
64
|
+
bgHover: 'bg-green-700',
|
|
65
|
+
bgActive: 'bg-green-800',
|
|
66
|
+
border: 'border-green-600',
|
|
67
|
+
text: 'text-green-600',
|
|
68
|
+
ring: 'ring-green-400/50',
|
|
69
|
+
},
|
|
70
|
+
info: {
|
|
71
|
+
bg: 'bg-sky-500',
|
|
72
|
+
bgHover: 'bg-sky-600',
|
|
73
|
+
bgActive: 'bg-sky-700',
|
|
74
|
+
border: 'border-sky-500',
|
|
75
|
+
text: 'text-sky-600',
|
|
76
|
+
ring: 'ring-sky-400/50',
|
|
77
|
+
},
|
|
78
|
+
} as const;
|
|
79
|
+
|
|
80
|
+
// ─── Focus ───────────────────────────────────────────────
|
|
81
|
+
export const FOCUS_RING = 'ring-2 ring-slate-400/50 ring-offset-2';
|
|
82
|
+
|
|
83
|
+
// ─── Radius ──────────────────────────────────────────────
|
|
84
|
+
export const RADIUS_SM = 'rounded-lg'; // buttons, inputs, checkboxes
|
|
85
|
+
export const RADIUS_MD = 'rounded-xl'; // cards, dropdowns, modals
|
|
86
|
+
export const RADIUS_FULL = 'rounded-full'; // pills, avatars, switches
|
|
87
|
+
|
|
88
|
+
// ─── Shadows ─────────────────────────────────────────────
|
|
89
|
+
export const SHADOW_SM = 'shadow-sm';
|
|
90
|
+
export const SHADOW_MD = 'shadow-md';
|
|
91
|
+
|
|
92
|
+
// ─── Sizing ──────────────────────────────────────────────
|
|
93
|
+
// Unified size scale for interactive/form components (Button, Input, Select, Checkbox).
|
|
94
|
+
// Only two sizes: 'default' (regular) and 'small' (compact).
|
|
95
|
+
// NOTE: Text and Heading use a separate typography scale (xs/sm/md/lg/xl) — not this.
|
|
96
|
+
export const SIZE_SCALE = {
|
|
97
|
+
default: { height: 'h-10', px: 'px-4', gap: 'gap-2', text: 'text-base' },
|
|
98
|
+
small: { height: 'h-8', px: 'px-3', gap: 'gap-1.5', text: 'text-sm' },
|
|
99
|
+
} as const;
|
|
100
|
+
|
|
101
|
+
// ─── Transitions ─────────────────────────────────────────
|
|
102
|
+
export const TRANSITION_COLORS = 'transition-colors duration-150';
|
|
103
|
+
|
|
104
|
+
// ─── Disabled ────────────────────────────────────────────
|
|
105
|
+
export const DISABLED_OPACITY = 'data-[disabled=true]:opacity-50';
|
|
106
|
+
export const DISABLED_CURSOR =
|
|
107
|
+
'data-[disabled=true]:cursor-not-allowed data-[disabled=true]:pointer-events-none';
|