@yuva-devlab/tokens 0.1.2 → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +15 -181
- package/package.json +12 -29
- package/src/preset.css +159 -0
- package/src/styles.css +2 -0
- package/src/themes/theme-finai.css +110 -0
- package/src/themes/theme-orchestrai.css +45 -0
- package/.prettierignore +0 -12
- package/.turbo/turbo-build.log +0 -18
- package/CHANGELOG.md +0 -35
- package/dist/breakpoints.css.d.ts +0 -13
- package/dist/breakpoints.css.d.ts.map +0 -1
- package/dist/colors.css.d.ts +0 -99
- package/dist/colors.css.d.ts.map +0 -1
- package/dist/index.cjs +0 -1
- package/dist/index.d.ts +0 -11
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js +0 -15
- package/dist/palettes.css.d.ts +0 -109
- package/dist/palettes.css.d.ts.map +0 -1
- package/dist/radii.css.d.ts +0 -15
- package/dist/radii.css.d.ts.map +0 -1
- package/dist/shadows.css.d.ts +0 -15
- package/dist/shadows.css.d.ts.map +0 -1
- package/dist/spacing.css.d.ts +0 -17
- package/dist/spacing.css.d.ts.map +0 -1
- package/dist/themes.css.d.ts +0 -7
- package/dist/themes.css.d.ts.map +0 -1
- package/dist/tokens.css +0 -1
- package/dist/transitions.css.d.ts +0 -20
- package/dist/transitions.css.d.ts.map +0 -1
- package/dist/typography.css.d.ts +0 -40
- package/dist/typography.css.d.ts.map +0 -1
- package/dist/utils/color-generator.d.ts +0 -39
- package/dist/utils/color-generator.d.ts.map +0 -1
- package/dist/zindex.css.d.ts +0 -16
- package/dist/zindex.css.d.ts.map +0 -1
- package/eslint.config.js +0 -8
- package/prettier.config.js +0 -1
- package/src/breakpoints.css.ts +0 -23
- package/src/colors.css.ts +0 -73
- package/src/index.ts +0 -16
- package/src/palettes.css.ts +0 -122
- package/src/radii.css.ts +0 -28
- package/src/shadows.css.ts +0 -28
- package/src/spacing.css.ts +0 -31
- package/src/themes.css.ts +0 -181
- package/src/transitions.css.ts +0 -38
- package/src/typography.css.ts +0 -77
- package/src/utils/color-generator.ts +0 -90
- package/src/zindex.css.ts +0 -29
- package/tsconfig.json +0 -12
- package/vite.config.ts +0 -31
package/src/palettes.css.ts
DELETED
|
@@ -1,122 +0,0 @@
|
|
|
1
|
-
import { createGlobalTheme, createThemeContract } from "@vanilla-extract/css";
|
|
2
|
-
|
|
3
|
-
import { generateTonalPalette } from "./utils/color-generator";
|
|
4
|
-
|
|
5
|
-
/**
|
|
6
|
-
* Seed colors for tonal palette generation
|
|
7
|
-
* These are the basis for the entire tonal system.
|
|
8
|
-
*/
|
|
9
|
-
export const SEEDS = {
|
|
10
|
-
primary: "#3e6a4d",
|
|
11
|
-
secondary: "#516350",
|
|
12
|
-
tertiary: "#3b6470",
|
|
13
|
-
error: "#ba1a1a",
|
|
14
|
-
neutral: "#5e615b",
|
|
15
|
-
neutralVariant: "#5d6259",
|
|
16
|
-
};
|
|
17
|
-
|
|
18
|
-
/**
|
|
19
|
-
* Complete tonal palette system with 13 levels per color (0-100)
|
|
20
|
-
* These are the foundation colors that semantic tokens map to
|
|
21
|
-
*/
|
|
22
|
-
export const palettes = createThemeContract({
|
|
23
|
-
primary: {
|
|
24
|
-
0: null,
|
|
25
|
-
10: null,
|
|
26
|
-
20: null,
|
|
27
|
-
30: null,
|
|
28
|
-
40: null,
|
|
29
|
-
50: null,
|
|
30
|
-
60: null,
|
|
31
|
-
70: null,
|
|
32
|
-
80: null,
|
|
33
|
-
90: null,
|
|
34
|
-
95: null,
|
|
35
|
-
99: null,
|
|
36
|
-
100: null,
|
|
37
|
-
},
|
|
38
|
-
secondary: {
|
|
39
|
-
0: null,
|
|
40
|
-
10: null,
|
|
41
|
-
20: null,
|
|
42
|
-
30: null,
|
|
43
|
-
40: null,
|
|
44
|
-
50: null,
|
|
45
|
-
60: null,
|
|
46
|
-
70: null,
|
|
47
|
-
80: null,
|
|
48
|
-
90: null,
|
|
49
|
-
95: null,
|
|
50
|
-
99: null,
|
|
51
|
-
100: null,
|
|
52
|
-
},
|
|
53
|
-
tertiary: {
|
|
54
|
-
0: null,
|
|
55
|
-
10: null,
|
|
56
|
-
20: null,
|
|
57
|
-
30: null,
|
|
58
|
-
40: null,
|
|
59
|
-
50: null,
|
|
60
|
-
60: null,
|
|
61
|
-
70: null,
|
|
62
|
-
80: null,
|
|
63
|
-
90: null,
|
|
64
|
-
95: null,
|
|
65
|
-
99: null,
|
|
66
|
-
100: null,
|
|
67
|
-
},
|
|
68
|
-
error: {
|
|
69
|
-
0: null,
|
|
70
|
-
10: null,
|
|
71
|
-
20: null,
|
|
72
|
-
30: null,
|
|
73
|
-
40: null,
|
|
74
|
-
50: null,
|
|
75
|
-
60: null,
|
|
76
|
-
70: null,
|
|
77
|
-
80: null,
|
|
78
|
-
90: null,
|
|
79
|
-
95: null,
|
|
80
|
-
99: null,
|
|
81
|
-
100: null,
|
|
82
|
-
},
|
|
83
|
-
neutral: {
|
|
84
|
-
0: null,
|
|
85
|
-
10: null,
|
|
86
|
-
20: null,
|
|
87
|
-
30: null,
|
|
88
|
-
40: null,
|
|
89
|
-
50: null,
|
|
90
|
-
60: null,
|
|
91
|
-
70: null,
|
|
92
|
-
80: null,
|
|
93
|
-
90: null,
|
|
94
|
-
95: null,
|
|
95
|
-
99: null,
|
|
96
|
-
100: null,
|
|
97
|
-
},
|
|
98
|
-
neutralVariant: {
|
|
99
|
-
0: null,
|
|
100
|
-
10: null,
|
|
101
|
-
20: null,
|
|
102
|
-
30: null,
|
|
103
|
-
40: null,
|
|
104
|
-
50: null,
|
|
105
|
-
60: null,
|
|
106
|
-
70: null,
|
|
107
|
-
80: null,
|
|
108
|
-
90: null,
|
|
109
|
-
95: null,
|
|
110
|
-
99: null,
|
|
111
|
-
100: null,
|
|
112
|
-
},
|
|
113
|
-
});
|
|
114
|
-
|
|
115
|
-
createGlobalTheme(":root", palettes, {
|
|
116
|
-
primary: generateTonalPalette(SEEDS.primary),
|
|
117
|
-
secondary: generateTonalPalette(SEEDS.secondary),
|
|
118
|
-
tertiary: generateTonalPalette(SEEDS.tertiary),
|
|
119
|
-
error: generateTonalPalette(SEEDS.error),
|
|
120
|
-
neutral: generateTonalPalette(SEEDS.neutral),
|
|
121
|
-
neutralVariant: generateTonalPalette(SEEDS.neutralVariant),
|
|
122
|
-
});
|
package/src/radii.css.ts
DELETED
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
import { createGlobalTheme, createThemeContract } from "@vanilla-extract/css";
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* Border radius tokens for modern rounded aesthetic.
|
|
5
|
-
*/
|
|
6
|
-
export const radii = createThemeContract({
|
|
7
|
-
none: null,
|
|
8
|
-
xs: null,
|
|
9
|
-
sm: null,
|
|
10
|
-
md: null,
|
|
11
|
-
lg: null,
|
|
12
|
-
xl: null,
|
|
13
|
-
"2xl": null,
|
|
14
|
-
"3xl": null,
|
|
15
|
-
full: null,
|
|
16
|
-
});
|
|
17
|
-
|
|
18
|
-
createGlobalTheme(":root", radii, {
|
|
19
|
-
none: "0",
|
|
20
|
-
xs: "2px",
|
|
21
|
-
sm: "4px",
|
|
22
|
-
md: "8px",
|
|
23
|
-
lg: "12px",
|
|
24
|
-
xl: "16px",
|
|
25
|
-
"2xl": "20px",
|
|
26
|
-
"3xl": "24px",
|
|
27
|
-
full: "9999px",
|
|
28
|
-
});
|
package/src/shadows.css.ts
DELETED
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
import { createGlobalTheme, createThemeContract } from "@vanilla-extract/css";
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* Provides depth and hierarchy through layered shadows.
|
|
5
|
-
*/
|
|
6
|
-
export const shadows = createThemeContract({
|
|
7
|
-
none: null,
|
|
8
|
-
xs: null,
|
|
9
|
-
sm: null,
|
|
10
|
-
md: null,
|
|
11
|
-
lg: null,
|
|
12
|
-
xl: null,
|
|
13
|
-
"2xl": null,
|
|
14
|
-
inner: null,
|
|
15
|
-
focus: null, // Accessible focus indicator
|
|
16
|
-
});
|
|
17
|
-
|
|
18
|
-
createGlobalTheme(":root", shadows, {
|
|
19
|
-
none: "none",
|
|
20
|
-
xs: "0 1px 2px 0 rgba(60, 64, 67, 0.15)",
|
|
21
|
-
sm: "0 1px 3px 0 rgba(60, 64, 67, 0.15), 0 1px 2px 0 rgba(60, 64, 67, 0.10)",
|
|
22
|
-
md: "0 4px 6px -1px rgba(60, 64, 67, 0.15), 0 2px 4px -1px rgba(60, 64, 67, 0.10)",
|
|
23
|
-
lg: "0 10px 15px -3px rgba(60, 64, 67, 0.15), 0 4px 6px -2px rgba(60, 64, 67, 0.10)",
|
|
24
|
-
xl: "0 20px 25px -5px rgba(60, 64, 67, 0.15), 0 10px 10px -5px rgba(60, 64, 67, 0.10)",
|
|
25
|
-
"2xl": "0 25px 50px -12px rgba(60, 64, 67, 0.25)",
|
|
26
|
-
inner: "inset 0 2px 4px 0 rgba(60, 64, 67, 0.10)",
|
|
27
|
-
focus: "0 0 0 3px rgba(26, 115, 232, 0.2)",
|
|
28
|
-
});
|
package/src/spacing.css.ts
DELETED
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
import { createGlobalTheme, createThemeContract } from "@vanilla-extract/css";
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* Spacing tokens using 4px base unit for consistent rhythm.
|
|
5
|
-
* Expanded scale for granular control.
|
|
6
|
-
*/
|
|
7
|
-
export const spacing = createThemeContract({
|
|
8
|
-
"2xs": null,
|
|
9
|
-
xs: null,
|
|
10
|
-
sm: null,
|
|
11
|
-
md: null,
|
|
12
|
-
lg: null,
|
|
13
|
-
xl: null,
|
|
14
|
-
"2xl": null,
|
|
15
|
-
"3xl": null,
|
|
16
|
-
"4xl": null,
|
|
17
|
-
"5xl": null,
|
|
18
|
-
});
|
|
19
|
-
|
|
20
|
-
createGlobalTheme(":root", spacing, {
|
|
21
|
-
"2xs": "2px",
|
|
22
|
-
xs: "4px",
|
|
23
|
-
sm: "8px",
|
|
24
|
-
md: "12px",
|
|
25
|
-
lg: "16px",
|
|
26
|
-
xl: "24px",
|
|
27
|
-
"2xl": "32px",
|
|
28
|
-
"3xl": "48px",
|
|
29
|
-
"4xl": "64px",
|
|
30
|
-
"5xl": "96px",
|
|
31
|
-
});
|
package/src/themes.css.ts
DELETED
|
@@ -1,181 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
createGlobalTheme,
|
|
3
|
-
createTheme,
|
|
4
|
-
globalStyle,
|
|
5
|
-
} from "@vanilla-extract/css";
|
|
6
|
-
|
|
7
|
-
import { colors } from "./colors.css";
|
|
8
|
-
import { palettes } from "./palettes.css";
|
|
9
|
-
import {
|
|
10
|
-
generateSemanticShades,
|
|
11
|
-
type SemanticShades,
|
|
12
|
-
type TonalPalette,
|
|
13
|
-
} from "./utils/color-generator";
|
|
14
|
-
|
|
15
|
-
/**
|
|
16
|
-
* Semantic Color Mapping
|
|
17
|
-
* Instead of hardcoding hex codes, we map semantic roles to specific tones
|
|
18
|
-
* in our foundation palettes. This ensures that changing a foundation seed
|
|
19
|
-
* updates the entire theme consistently.
|
|
20
|
-
*/
|
|
21
|
-
const mapTones = (
|
|
22
|
-
palette: TonalPalette,
|
|
23
|
-
mainTone: keyof TonalPalette,
|
|
24
|
-
onMainTone: keyof TonalPalette,
|
|
25
|
-
containerTone: keyof TonalPalette,
|
|
26
|
-
onContainerTone: keyof TonalPalette,
|
|
27
|
-
): SemanticShades => ({
|
|
28
|
-
main: palette[mainTone],
|
|
29
|
-
onMain: palette[onMainTone],
|
|
30
|
-
container: palette[containerTone],
|
|
31
|
-
onContainer: palette[onContainerTone],
|
|
32
|
-
// Tonal generation for interaction states
|
|
33
|
-
// Note: These can also be mapped if we add more tones to our foundation
|
|
34
|
-
hover: palette[mainTone === 40 ? 50 : 70], // Dynamic hover
|
|
35
|
-
active: palette[mainTone === 40 ? 60 : 60], // Dynamic active
|
|
36
|
-
subtle: palette[95],
|
|
37
|
-
});
|
|
38
|
-
|
|
39
|
-
/**
|
|
40
|
-
* ============================================================================
|
|
41
|
-
* SEMANTIC COLOR THEMES
|
|
42
|
-
* ============================================================================
|
|
43
|
-
* Developer-friendly API that maps to palette values
|
|
44
|
-
*/
|
|
45
|
-
|
|
46
|
-
const primaryPalette = mapTones(palettes.primary, 40, 100, 90, 10);
|
|
47
|
-
const secondaryPalette = mapTones(palettes.secondary, 40, 100, 90, 10);
|
|
48
|
-
const tertiaryPalette = mapTones(palettes.tertiary, 40, 100, 90, 10);
|
|
49
|
-
const errorPalette = mapTones(palettes.error, 40, 100, 90, 10);
|
|
50
|
-
|
|
51
|
-
// We keep these as generated for now as they are distinct semantic scales
|
|
52
|
-
const successPalette = generateSemanticShades("#3e6a4d");
|
|
53
|
-
const warningPalette = generateSemanticShades("#815600");
|
|
54
|
-
const infoPalette = generateSemanticShades("#006682");
|
|
55
|
-
|
|
56
|
-
/**
|
|
57
|
-
* Light Theme - Semantic Colors
|
|
58
|
-
* Maps semantic tokens to appropriate palette tones globally on :root.
|
|
59
|
-
*/
|
|
60
|
-
createGlobalTheme(":root", colors, {
|
|
61
|
-
brand: {
|
|
62
|
-
primary: primaryPalette,
|
|
63
|
-
secondary: secondaryPalette,
|
|
64
|
-
tertiary: tertiaryPalette,
|
|
65
|
-
danger: errorPalette,
|
|
66
|
-
success: successPalette,
|
|
67
|
-
warning: warningPalette,
|
|
68
|
-
info: infoPalette,
|
|
69
|
-
},
|
|
70
|
-
|
|
71
|
-
text: {
|
|
72
|
-
primary: palettes.neutral[10],
|
|
73
|
-
secondary: palettes.neutralVariant[30],
|
|
74
|
-
tertiary: palettes.neutralVariant[50],
|
|
75
|
-
disabled: palettes.neutral[80],
|
|
76
|
-
onPrimary: palettes.primary[100],
|
|
77
|
-
onColor: palettes.primary[100],
|
|
78
|
-
inverse: palettes.neutral[95],
|
|
79
|
-
},
|
|
80
|
-
|
|
81
|
-
bg: {
|
|
82
|
-
body: palettes.neutral[99],
|
|
83
|
-
surface: palettes.neutral[99],
|
|
84
|
-
surfaceHover: palettes.neutral[95],
|
|
85
|
-
surfaceActive: palettes.neutral[90],
|
|
86
|
-
surfaceRaised: palettes.neutral[100],
|
|
87
|
-
surfaceOverlay: palettes.neutral[100],
|
|
88
|
-
canvas: palettes.neutral[95],
|
|
89
|
-
subtle: palettes.primary[95],
|
|
90
|
-
disabled: palettes.neutral[90],
|
|
91
|
-
},
|
|
92
|
-
|
|
93
|
-
border: {
|
|
94
|
-
subtle: palettes.neutralVariant[90],
|
|
95
|
-
default: palettes.neutralVariant[50],
|
|
96
|
-
strong: palettes.neutralVariant[30],
|
|
97
|
-
interactive: palettes.primary[40],
|
|
98
|
-
disabled: palettes.neutralVariant[80],
|
|
99
|
-
},
|
|
100
|
-
|
|
101
|
-
interaction: {
|
|
102
|
-
focusRing: `0 0 0 3px ${palettes.primary[90]}`,
|
|
103
|
-
overlay: "rgba(0, 0, 0, 0.12)",
|
|
104
|
-
},
|
|
105
|
-
});
|
|
106
|
-
|
|
107
|
-
export const lightTheme = "light-theme";
|
|
108
|
-
|
|
109
|
-
/**
|
|
110
|
-
* Dark Theme - Semantic Colors
|
|
111
|
-
* Maps semantic tokens to appropriate palette tones for dark mode
|
|
112
|
-
*/
|
|
113
|
-
const darkPrimaryPalette = mapTones(palettes.primary, 80, 20, 30, 90);
|
|
114
|
-
const darkSecondaryPalette = mapTones(palettes.secondary, 80, 20, 30, 90);
|
|
115
|
-
const darkTertiaryPalette = mapTones(palettes.tertiary, 80, 20, 30, 90);
|
|
116
|
-
const darkErrorPalette = mapTones(palettes.error, 80, 20, 30, 90);
|
|
117
|
-
|
|
118
|
-
const darkSuccessPalette = generateSemanticShades("#3e6a4d", "dark");
|
|
119
|
-
const darkWarningPalette = generateSemanticShades("#815600", "dark");
|
|
120
|
-
const darkInfoPalette = generateSemanticShades("#006682", "dark");
|
|
121
|
-
|
|
122
|
-
export const darkTheme = createTheme(colors, {
|
|
123
|
-
brand: {
|
|
124
|
-
primary: darkPrimaryPalette,
|
|
125
|
-
secondary: darkSecondaryPalette,
|
|
126
|
-
tertiary: darkTertiaryPalette,
|
|
127
|
-
danger: darkErrorPalette,
|
|
128
|
-
success: darkSuccessPalette,
|
|
129
|
-
warning: darkWarningPalette,
|
|
130
|
-
info: darkInfoPalette,
|
|
131
|
-
},
|
|
132
|
-
|
|
133
|
-
text: {
|
|
134
|
-
primary: palettes.neutral[90],
|
|
135
|
-
secondary: palettes.neutralVariant[80],
|
|
136
|
-
tertiary: palettes.neutralVariant[60],
|
|
137
|
-
disabled: palettes.neutral[30],
|
|
138
|
-
onPrimary: palettes.primary[20],
|
|
139
|
-
onColor: palettes.primary[10],
|
|
140
|
-
inverse: palettes.neutral[10],
|
|
141
|
-
},
|
|
142
|
-
|
|
143
|
-
bg: {
|
|
144
|
-
body: palettes.neutral[10],
|
|
145
|
-
surface: palettes.neutral[10],
|
|
146
|
-
surfaceHover: palettes.neutral[20],
|
|
147
|
-
surfaceActive: palettes.neutral[20],
|
|
148
|
-
surfaceRaised: palettes.neutral[20],
|
|
149
|
-
surfaceOverlay: palettes.neutral[20],
|
|
150
|
-
canvas: palettes.neutral[0],
|
|
151
|
-
subtle: palettes.primary[20],
|
|
152
|
-
disabled: palettes.neutral[20],
|
|
153
|
-
},
|
|
154
|
-
|
|
155
|
-
border: {
|
|
156
|
-
subtle: palettes.neutralVariant[30],
|
|
157
|
-
default: palettes.neutralVariant[60],
|
|
158
|
-
strong: palettes.neutralVariant[80],
|
|
159
|
-
interactive: palettes.primary[80],
|
|
160
|
-
disabled: palettes.neutralVariant[20],
|
|
161
|
-
},
|
|
162
|
-
|
|
163
|
-
interaction: {
|
|
164
|
-
focusRing: `0 0 0 3px ${palettes.primary[40]}`,
|
|
165
|
-
overlay: "rgba(255, 255, 255, 0.08)",
|
|
166
|
-
},
|
|
167
|
-
});
|
|
168
|
-
|
|
169
|
-
/**
|
|
170
|
-
* Default theme exports
|
|
171
|
-
*/
|
|
172
|
-
export const defaultTheme = lightTheme;
|
|
173
|
-
|
|
174
|
-
/**
|
|
175
|
-
* Global Styles
|
|
176
|
-
* These ensure the core brand experience (like text selection) is consistent.
|
|
177
|
-
*/
|
|
178
|
-
globalStyle("::selection", {
|
|
179
|
-
backgroundColor: colors.brand.primary.container,
|
|
180
|
-
color: colors.brand.primary.onContainer,
|
|
181
|
-
});
|
package/src/transitions.css.ts
DELETED
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
import { createGlobalTheme, createThemeContract } from "@vanilla-extract/css";
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* Transition and animation tokens.
|
|
5
|
-
*/
|
|
6
|
-
export const transitions = createThemeContract({
|
|
7
|
-
duration: {
|
|
8
|
-
instant: null,
|
|
9
|
-
fast: null,
|
|
10
|
-
normal: null,
|
|
11
|
-
slow: null,
|
|
12
|
-
slower: null,
|
|
13
|
-
},
|
|
14
|
-
easing: {
|
|
15
|
-
standard: null, // Deceleration curve
|
|
16
|
-
emphasized: null, // emphasized easing
|
|
17
|
-
decelerate: null, // Exit animations
|
|
18
|
-
accelerate: null, // Enter animations
|
|
19
|
-
linear: null,
|
|
20
|
-
},
|
|
21
|
-
});
|
|
22
|
-
|
|
23
|
-
createGlobalTheme(":root", transitions, {
|
|
24
|
-
duration: {
|
|
25
|
-
instant: "0ms",
|
|
26
|
-
fast: "100ms",
|
|
27
|
-
normal: "200ms",
|
|
28
|
-
slow: "300ms",
|
|
29
|
-
slower: "500ms",
|
|
30
|
-
},
|
|
31
|
-
easing: {
|
|
32
|
-
standard: "cubic-bezier(0.4, 0.0, 0.2, 1)", // Deceleration
|
|
33
|
-
emphasized: "cubic-bezier(0.2, 0.0, 0, 1)", // emphasized
|
|
34
|
-
decelerate: "cubic-bezier(0.0, 0.0, 0.2, 1)", // Exit
|
|
35
|
-
accelerate: "cubic-bezier(0.4, 0.0, 1, 1)", // Enter
|
|
36
|
-
linear: "linear",
|
|
37
|
-
},
|
|
38
|
-
});
|
package/src/typography.css.ts
DELETED
|
@@ -1,77 +0,0 @@
|
|
|
1
|
-
import { createGlobalTheme, createThemeContract } from "@vanilla-extract/css";
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* Typography tokens using modern font stack.
|
|
5
|
-
* Expanded scale for modern web applications.
|
|
6
|
-
*/
|
|
7
|
-
export const typography = createThemeContract({
|
|
8
|
-
fonts: {
|
|
9
|
-
sans: null,
|
|
10
|
-
mono: null,
|
|
11
|
-
display: null,
|
|
12
|
-
},
|
|
13
|
-
fontSizes: {
|
|
14
|
-
xs: null,
|
|
15
|
-
sm: null,
|
|
16
|
-
md: null,
|
|
17
|
-
lg: null,
|
|
18
|
-
xl: null,
|
|
19
|
-
"2xl": null,
|
|
20
|
-
"3xl": null,
|
|
21
|
-
"4xl": null,
|
|
22
|
-
"5xl": null,
|
|
23
|
-
"6xl": null,
|
|
24
|
-
},
|
|
25
|
-
fontWeights: {
|
|
26
|
-
regular: null,
|
|
27
|
-
medium: null,
|
|
28
|
-
semibold: null,
|
|
29
|
-
bold: null,
|
|
30
|
-
},
|
|
31
|
-
lineHeights: {
|
|
32
|
-
tight: null,
|
|
33
|
-
normal: null,
|
|
34
|
-
relaxed: null,
|
|
35
|
-
},
|
|
36
|
-
letterSpacing: {
|
|
37
|
-
tight: null,
|
|
38
|
-
normal: null,
|
|
39
|
-
wide: null,
|
|
40
|
-
},
|
|
41
|
-
});
|
|
42
|
-
|
|
43
|
-
createGlobalTheme(":root", typography, {
|
|
44
|
-
fonts: {
|
|
45
|
-
sans: '"Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif',
|
|
46
|
-
mono: '"Roboto Mono", "SF Mono", Monaco, "Cascadia Code", "Courier New", monospace',
|
|
47
|
-
display: '"Inter", -apple-system, BlinkMacSystemFont, sans-serif',
|
|
48
|
-
},
|
|
49
|
-
fontSizes: {
|
|
50
|
-
xs: "0.75rem", // 12px
|
|
51
|
-
sm: "0.875rem", // 14px
|
|
52
|
-
md: "1rem", // 16px
|
|
53
|
-
lg: "1.125rem", // 18px
|
|
54
|
-
xl: "1.25rem", // 20px
|
|
55
|
-
"2xl": "1.5rem", // 24px
|
|
56
|
-
"3xl": "1.875rem", // 30px
|
|
57
|
-
"4xl": "2.25rem", // 36px
|
|
58
|
-
"5xl": "3rem", // 48px
|
|
59
|
-
"6xl": "3.75rem", // 60px
|
|
60
|
-
},
|
|
61
|
-
fontWeights: {
|
|
62
|
-
regular: "400",
|
|
63
|
-
medium: "500",
|
|
64
|
-
semibold: "600",
|
|
65
|
-
bold: "700",
|
|
66
|
-
},
|
|
67
|
-
lineHeights: {
|
|
68
|
-
tight: "1.25",
|
|
69
|
-
normal: "1.5",
|
|
70
|
-
relaxed: "1.75",
|
|
71
|
-
},
|
|
72
|
-
letterSpacing: {
|
|
73
|
-
tight: "-0.01em",
|
|
74
|
-
normal: "0",
|
|
75
|
-
wide: "0.025em",
|
|
76
|
-
},
|
|
77
|
-
});
|
|
@@ -1,90 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
generate,
|
|
3
|
-
hexToRgb,
|
|
4
|
-
rgbToHsl,
|
|
5
|
-
hslToRgb,
|
|
6
|
-
rgbToHex,
|
|
7
|
-
} from "@yuva-devlab/colors";
|
|
8
|
-
|
|
9
|
-
export interface TonalPalette {
|
|
10
|
-
0: string;
|
|
11
|
-
10: string;
|
|
12
|
-
20: string;
|
|
13
|
-
30: string;
|
|
14
|
-
40: string;
|
|
15
|
-
50: string;
|
|
16
|
-
60: string;
|
|
17
|
-
70: string;
|
|
18
|
-
80: string;
|
|
19
|
-
90: string;
|
|
20
|
-
95: string;
|
|
21
|
-
99: string;
|
|
22
|
-
100: string;
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
export interface SemanticShades {
|
|
26
|
-
main: string;
|
|
27
|
-
onMain: string;
|
|
28
|
-
container: string;
|
|
29
|
-
onContainer: string;
|
|
30
|
-
hover: string;
|
|
31
|
-
active: string;
|
|
32
|
-
subtle: string;
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
/**
|
|
36
|
-
* Generates semantic shades (main, hover, active, subtle) from a single seed hex color.
|
|
37
|
-
*
|
|
38
|
-
* Mapping logic based on @yuva-devlab/colors LIGHTNESS_MAP:
|
|
39
|
-
* - main: Index 5 (Primary)
|
|
40
|
-
* - hover: Index 6 (Darker)
|
|
41
|
-
* - active: Index 7 (Even darker)
|
|
42
|
-
* - subtle: Index 0 (Very light)
|
|
43
|
-
*/
|
|
44
|
-
export const generateSemanticShades = (
|
|
45
|
-
hex: string,
|
|
46
|
-
theme: "light" | "dark" = "light",
|
|
47
|
-
overrides?: Partial<Omit<SemanticShades, "hover" | "active" | "subtle">>,
|
|
48
|
-
): SemanticShades => {
|
|
49
|
-
const palette = generate(hex, { theme });
|
|
50
|
-
|
|
51
|
-
// Fallback generation based on standard tonal maps
|
|
52
|
-
const base = {
|
|
53
|
-
main: theme === "light" ? palette[5] : palette[5],
|
|
54
|
-
onMain: theme === "light" ? "#ffffff" : "#000000",
|
|
55
|
-
container: theme === "light" ? palette[1] : palette[1],
|
|
56
|
-
onContainer: theme === "light" ? palette[9] : palette[9],
|
|
57
|
-
hover: theme === "light" ? palette[6] : palette[6],
|
|
58
|
-
active: theme === "light" ? palette[7] : palette[7],
|
|
59
|
-
subtle: palette[0],
|
|
60
|
-
};
|
|
61
|
-
|
|
62
|
-
return {
|
|
63
|
-
...base,
|
|
64
|
-
...overrides,
|
|
65
|
-
};
|
|
66
|
-
};
|
|
67
|
-
|
|
68
|
-
/**
|
|
69
|
-
* Generates a full MD3-compatible 13-shade tonal palette (0-100) from a seed color.
|
|
70
|
-
*/
|
|
71
|
-
export const generateTonalPalette = (hex: string): TonalPalette => {
|
|
72
|
-
const tones = [0, 10, 20, 30, 40, 50, 60, 70, 80, 90, 95, 99, 100] as const;
|
|
73
|
-
const rgb = hexToRgb(hex);
|
|
74
|
-
const hsl = rgbToHsl(rgb);
|
|
75
|
-
|
|
76
|
-
const palette: Record<number, string> = {};
|
|
77
|
-
|
|
78
|
-
tones.forEach((tone) => {
|
|
79
|
-
// MD3 Tones are essentially lightness values
|
|
80
|
-
const newHsl = {
|
|
81
|
-
h: hsl.h,
|
|
82
|
-
s: hsl.s,
|
|
83
|
-
l: tone,
|
|
84
|
-
};
|
|
85
|
-
|
|
86
|
-
palette[tone] = rgbToHex(hslToRgb(newHsl));
|
|
87
|
-
});
|
|
88
|
-
|
|
89
|
-
return palette as unknown as TonalPalette;
|
|
90
|
-
};
|
package/src/zindex.css.ts
DELETED
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
import { createGlobalTheme, createThemeContract } from "@vanilla-extract/css";
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* Z-index layering system for predictable stacking.
|
|
5
|
-
* Semantic names for common UI layers.
|
|
6
|
-
*/
|
|
7
|
-
export const zIndex = createThemeContract({
|
|
8
|
-
base: null,
|
|
9
|
-
dropdown: null,
|
|
10
|
-
sticky: null,
|
|
11
|
-
fixed: null,
|
|
12
|
-
overlay: null,
|
|
13
|
-
modal: null,
|
|
14
|
-
popover: null,
|
|
15
|
-
tooltip: null,
|
|
16
|
-
toast: null,
|
|
17
|
-
});
|
|
18
|
-
|
|
19
|
-
createGlobalTheme(":root", zIndex, {
|
|
20
|
-
base: "0",
|
|
21
|
-
dropdown: "1000",
|
|
22
|
-
sticky: "1100",
|
|
23
|
-
fixed: "1200",
|
|
24
|
-
overlay: "1300",
|
|
25
|
-
modal: "1400",
|
|
26
|
-
popover: "1500",
|
|
27
|
-
tooltip: "1600",
|
|
28
|
-
toast: "1700",
|
|
29
|
-
});
|
package/tsconfig.json
DELETED
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"extends": "@yuva-devlab/typescript-config/base.json",
|
|
3
|
-
"compilerOptions": {
|
|
4
|
-
"outDir": "./dist",
|
|
5
|
-
"rootDir": "./src",
|
|
6
|
-
"declaration": true,
|
|
7
|
-
"declarationMap": true,
|
|
8
|
-
"types": ["vite/client"]
|
|
9
|
-
},
|
|
10
|
-
"include": ["src"],
|
|
11
|
-
"exclude": ["node_modules", "dist"]
|
|
12
|
-
}
|
package/vite.config.ts
DELETED
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
import { resolve } from "path";
|
|
2
|
-
|
|
3
|
-
import { vanillaExtractPlugin } from "@vanilla-extract/vite-plugin";
|
|
4
|
-
import { defineConfig } from "vite";
|
|
5
|
-
import dts from "vite-plugin-dts";
|
|
6
|
-
|
|
7
|
-
export default defineConfig({
|
|
8
|
-
plugins: [
|
|
9
|
-
vanillaExtractPlugin(),
|
|
10
|
-
dts({
|
|
11
|
-
include: ["src/**/*.ts"],
|
|
12
|
-
exclude: ["src/**/*.test.ts"],
|
|
13
|
-
insertTypesEntry: true,
|
|
14
|
-
}),
|
|
15
|
-
],
|
|
16
|
-
build: {
|
|
17
|
-
lib: {
|
|
18
|
-
entry: resolve(__dirname, "src/index.ts"),
|
|
19
|
-
name: "YuvaDevlabTokens",
|
|
20
|
-
formats: ["es", "cjs"],
|
|
21
|
-
fileName: (format) => `index.${format === "es" ? "js" : "cjs"}`,
|
|
22
|
-
},
|
|
23
|
-
rollupOptions: {
|
|
24
|
-
external: ["@vanilla-extract/css"],
|
|
25
|
-
output: {
|
|
26
|
-
preserveModules: false,
|
|
27
|
-
exports: "named",
|
|
28
|
-
},
|
|
29
|
-
},
|
|
30
|
-
},
|
|
31
|
-
});
|