@temboplus/frontend-react-core 0.1.3-beta.10 → 0.1.3-beta.12
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/CloseCircleOutlined-CMilRURi.js +3 -0
- package/dist/CloseCircleOutlined-CMilRURi.js.map +1 -0
- package/dist/CloseCircleOutlined-CSHx89Jn.js +3 -0
- package/dist/CloseCircleOutlined-CSHx89Jn.js.map +1 -0
- package/dist/InfoCircleOutlined-DR9DmuN-.js +5 -0
- package/dist/InfoCircleOutlined-DR9DmuN-.js.map +1 -0
- package/dist/InfoCircleOutlined-Hx86sClq.js +5 -0
- package/dist/InfoCircleOutlined-Hx86sClq.js.map +1 -0
- package/dist/alerts/index.cjs.js +1 -1
- package/dist/alerts/index.cjs.js.map +1 -1
- package/dist/alerts/index.js +1 -1
- package/dist/alerts/index.js.map +1 -1
- package/dist/dialogs/index.cjs.js +3 -1
- package/dist/dialogs/index.cjs.js.map +1 -1
- package/dist/dialogs/index.js +3 -1
- package/dist/dialogs/index.js.map +1 -1
- package/dist/index.cjs.js +1 -1
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.esm.js +1 -1
- package/dist/index.esm.js.map +1 -1
- package/dist/notifications/index.cjs.js +1 -1
- package/dist/notifications/index.js +1 -1
- package/dist/providers.d.ts +2 -32
- package/dist/providers.js +3 -24
- package/dist/tembo-notify-BUN8_mKb.js +3 -0
- package/dist/tembo-notify-BUN8_mKb.js.map +1 -0
- package/dist/tembo-notify-D0uYvwZP.js +3 -0
- package/dist/tembo-notify-D0uYvwZP.js.map +1 -0
- package/dist/theme/deprecated/theme-provider.d.ts +100 -0
- package/dist/theme/deprecated/theme-provider.js +405 -0
- package/dist/theme/index.cjs.js +1 -1
- package/dist/theme/index.d.ts +3 -2
- package/dist/theme/index.js +1 -1
- package/dist/theme/theme-config.d.ts +6 -0
- package/dist/theme/theme-config.js +781 -0
- package/dist/theme/theme-provider.d.ts +14 -79
- package/dist/theme/theme-provider.js +24 -390
- package/dist/theme/tokens/color.d.ts +168 -0
- package/dist/theme/tokens/color.js +225 -0
- package/dist/theme/tokens/radius.d.ts +26 -0
- package/dist/theme/tokens/radius.js +17 -0
- package/dist/theme/tokens/shadow.d.ts +27 -0
- package/dist/theme/tokens/shadow.js +23 -0
- package/dist/theme/tokens/spacing.d.ts +47 -0
- package/dist/theme/tokens/spacing.js +32 -0
- package/dist/theme/tokens/typography.d.ts +43 -0
- package/dist/theme/tokens/typography.js +33 -0
- package/dist/theme-provider-BsQRkig_.js +11 -0
- package/dist/theme-provider-BsQRkig_.js.map +1 -0
- package/dist/theme-provider-C44BTeC4.js +11 -0
- package/dist/theme-provider-C44BTeC4.js.map +1 -0
- package/dist/validation/index.cjs.js.map +1 -1
- package/dist/validation/index.js.map +1 -1
- package/package.json +15 -16
- package/dist/InfoCircleOutlined-B7d2aRfV.js +0 -7
- package/dist/InfoCircleOutlined-B7d2aRfV.js.map +0 -1
- package/dist/InfoCircleOutlined-DYs90hdV.js +0 -7
- package/dist/InfoCircleOutlined-DYs90hdV.js.map +0 -1
- package/dist/ZoomOutOutlined-CW-jqBMI.js +0 -2
- package/dist/ZoomOutOutlined-CW-jqBMI.js.map +0 -1
- package/dist/ZoomOutOutlined-Pw8hpWWK.js +0 -2
- package/dist/ZoomOutOutlined-Pw8hpWWK.js.map +0 -1
- package/dist/tembo-notify-Bp14qngd.js +0 -2
- package/dist/tembo-notify-Bp14qngd.js.map +0 -1
- package/dist/tembo-notify-h5Xn66oA.js +0 -2
- package/dist/tembo-notify-h5Xn66oA.js.map +0 -1
- package/dist/theme-provider-Ca4P0Hcp.js +0 -11
- package/dist/theme-provider-Ca4P0Hcp.js.map +0 -1
- package/dist/theme-provider-RhAw3jw_.js +0 -11
- package/dist/theme-provider-RhAw3jw_.js.map +0 -1
- /package/dist/theme/{colors.d.ts → deprecated/colors.d.ts} +0 -0
- /package/dist/theme/{colors.js → deprecated/colors.js} +0 -0
- /package/dist/theme/{constants.d.ts → deprecated/constants.d.ts} +0 -0
- /package/dist/theme/{constants.js → deprecated/constants.js} +0 -0
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tembo Design System - Color Tokens
|
|
3
|
+
*
|
|
4
|
+
* Monochrome-first design system with purposeful color usage.
|
|
5
|
+
*
|
|
6
|
+
* Philosophy:
|
|
7
|
+
* - Monochrome foundation (4 neutral tones)
|
|
8
|
+
* - Color used purposefully (semantic feedback, categories, data viz)
|
|
9
|
+
* - Standard blue for links (web conventions)
|
|
10
|
+
* - Theme-aware: entire system adapts to light/dark mode
|
|
11
|
+
*
|
|
12
|
+
* Inspired by: Wise, Linear, Apple HIG
|
|
13
|
+
*/
|
|
14
|
+
export type ThemeMode = 'light' | 'dark';
|
|
15
|
+
/**
|
|
16
|
+
* Color scale interface
|
|
17
|
+
* Used for semantic and secondary colors
|
|
18
|
+
*/
|
|
19
|
+
export interface ColorScale {
|
|
20
|
+
/** Main color - primary usage */
|
|
21
|
+
main: string;
|
|
22
|
+
/** Subtle background variant */
|
|
23
|
+
subtle: string;
|
|
24
|
+
/** Text color that contrasts with main */
|
|
25
|
+
contrast: string;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Complete color palette
|
|
29
|
+
*/
|
|
30
|
+
export interface ColorPalette {
|
|
31
|
+
mode: ThemeMode;
|
|
32
|
+
/**
|
|
33
|
+
* Monochrome foundation - 4 neutral tones
|
|
34
|
+
* Theme-aware: inverts in dark mode
|
|
35
|
+
*
|
|
36
|
+
* 1 = Brightest (backgrounds)
|
|
37
|
+
* 2 = Subtle (hover states, dividers)
|
|
38
|
+
* 3 = Medium (borders, disabled text)
|
|
39
|
+
* 4 = Darkest (text, primary elements)
|
|
40
|
+
*/
|
|
41
|
+
neutral: {
|
|
42
|
+
1: string;
|
|
43
|
+
2: string;
|
|
44
|
+
3: string;
|
|
45
|
+
4: string;
|
|
46
|
+
};
|
|
47
|
+
/**
|
|
48
|
+
* Absolute colors - never change
|
|
49
|
+
*/
|
|
50
|
+
absolute: {
|
|
51
|
+
black: string;
|
|
52
|
+
white: string;
|
|
53
|
+
};
|
|
54
|
+
/**
|
|
55
|
+
* Links - standard web colors
|
|
56
|
+
* Same in both themes (chosen for universal contrast)
|
|
57
|
+
*/
|
|
58
|
+
link: {
|
|
59
|
+
/** Default link color - standard blue */
|
|
60
|
+
default: string;
|
|
61
|
+
/** Hover state */
|
|
62
|
+
hover: string;
|
|
63
|
+
/** Visited link color */
|
|
64
|
+
visited: string;
|
|
65
|
+
/** Active/pressed state */
|
|
66
|
+
active: string;
|
|
67
|
+
};
|
|
68
|
+
/**
|
|
69
|
+
* Semantic colors - purpose-driven feedback
|
|
70
|
+
* Theme-aware: adapts for optimal contrast
|
|
71
|
+
*/
|
|
72
|
+
semantic: {
|
|
73
|
+
success: ColorScale;
|
|
74
|
+
error: ColorScale;
|
|
75
|
+
warning: ColorScale;
|
|
76
|
+
info: ColorScale;
|
|
77
|
+
};
|
|
78
|
+
/**
|
|
79
|
+
* Secondary colors - for categories and data visualization
|
|
80
|
+
* Main color works in both themes, subtle backgrounds adapt
|
|
81
|
+
*/
|
|
82
|
+
secondary: {
|
|
83
|
+
blue: ColorScale;
|
|
84
|
+
purple: ColorScale;
|
|
85
|
+
pink: ColorScale;
|
|
86
|
+
amber: ColorScale;
|
|
87
|
+
emerald: ColorScale;
|
|
88
|
+
orange: ColorScale;
|
|
89
|
+
};
|
|
90
|
+
/**
|
|
91
|
+
* Surface hierarchy - derived from neutral scale
|
|
92
|
+
* Convenience tokens for common surfaces
|
|
93
|
+
*/
|
|
94
|
+
surface: {
|
|
95
|
+
/** Main page background */
|
|
96
|
+
page: string;
|
|
97
|
+
/** Cards, panels, elevated content */
|
|
98
|
+
card: string;
|
|
99
|
+
/** Modals, popovers, dropdowns */
|
|
100
|
+
overlay: string;
|
|
101
|
+
/** Hover state for interactive surfaces */
|
|
102
|
+
interactive: string;
|
|
103
|
+
/** Selected state backgrounds */
|
|
104
|
+
selected: string;
|
|
105
|
+
/** Nested/subtle backgrounds */
|
|
106
|
+
nested: string;
|
|
107
|
+
};
|
|
108
|
+
/**
|
|
109
|
+
* Border colors - derived from neutral scale
|
|
110
|
+
*/
|
|
111
|
+
border: {
|
|
112
|
+
/** Subtle borders - dividers, separators */
|
|
113
|
+
subtle: string;
|
|
114
|
+
/** Default borders - form inputs, cards */
|
|
115
|
+
default: string;
|
|
116
|
+
/** Strong borders - emphasis, focus alternative */
|
|
117
|
+
strong: string;
|
|
118
|
+
};
|
|
119
|
+
/**
|
|
120
|
+
* Text colors - derived from neutral scale
|
|
121
|
+
*/
|
|
122
|
+
text: {
|
|
123
|
+
/** Primary text - headlines, body copy */
|
|
124
|
+
primary: string;
|
|
125
|
+
/** Secondary text - labels, supporting info */
|
|
126
|
+
secondary: string;
|
|
127
|
+
/** Tertiary text - captions, helper text */
|
|
128
|
+
tertiary: string;
|
|
129
|
+
/** Disabled state */
|
|
130
|
+
disabled: string;
|
|
131
|
+
/** Text on dark backgrounds */
|
|
132
|
+
inverse: string;
|
|
133
|
+
};
|
|
134
|
+
}
|
|
135
|
+
/**
|
|
136
|
+
* Build color palette for given theme mode
|
|
137
|
+
*/
|
|
138
|
+
export declare const buildColorPalette: (mode?: ThemeMode) => ColorPalette;
|
|
139
|
+
/**
|
|
140
|
+
* Default light mode palette
|
|
141
|
+
*/
|
|
142
|
+
export declare const lightPalette: ColorPalette;
|
|
143
|
+
/**
|
|
144
|
+
* Default dark mode palette
|
|
145
|
+
*/
|
|
146
|
+
export declare const darkPalette: ColorPalette;
|
|
147
|
+
/**
|
|
148
|
+
* Color palette overrides (for custom theming)
|
|
149
|
+
* Allows partial overrides while maintaining type safety
|
|
150
|
+
*/
|
|
151
|
+
export type ColorOverrides = {
|
|
152
|
+
neutral?: Partial<ColorPalette['neutral']>;
|
|
153
|
+
link?: Partial<ColorPalette['link']>;
|
|
154
|
+
semantic?: {
|
|
155
|
+
success?: Partial<ColorScale>;
|
|
156
|
+
error?: Partial<ColorScale>;
|
|
157
|
+
warning?: Partial<ColorScale>;
|
|
158
|
+
info?: Partial<ColorScale>;
|
|
159
|
+
};
|
|
160
|
+
secondary?: {
|
|
161
|
+
blue?: Partial<ColorScale>;
|
|
162
|
+
purple?: Partial<ColorScale>;
|
|
163
|
+
pink?: Partial<ColorScale>;
|
|
164
|
+
amber?: Partial<ColorScale>;
|
|
165
|
+
emerald?: Partial<ColorScale>;
|
|
166
|
+
orange?: Partial<ColorScale>;
|
|
167
|
+
};
|
|
168
|
+
};
|
|
@@ -0,0 +1,225 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tembo Design System - Color Tokens
|
|
3
|
+
*
|
|
4
|
+
* Monochrome-first design system with purposeful color usage.
|
|
5
|
+
*
|
|
6
|
+
* Philosophy:
|
|
7
|
+
* - Monochrome foundation (4 neutral tones)
|
|
8
|
+
* - Color used purposefully (semantic feedback, categories, data viz)
|
|
9
|
+
* - Standard blue for links (web conventions)
|
|
10
|
+
* - Theme-aware: entire system adapts to light/dark mode
|
|
11
|
+
*
|
|
12
|
+
* Inspired by: Wise, Linear, Apple HIG
|
|
13
|
+
*/
|
|
14
|
+
/**
|
|
15
|
+
* Build light mode colors
|
|
16
|
+
*/
|
|
17
|
+
const buildLightModeColors = () => ({
|
|
18
|
+
mode: 'light',
|
|
19
|
+
neutral: {
|
|
20
|
+
1: '#FFFFFF', // Pure white - cards, inputs
|
|
21
|
+
2: '#F7F8F9', // Light gray - page backgrounds, hover
|
|
22
|
+
3: '#E1E4E8', // Medium gray - borders
|
|
23
|
+
4: '#2E3338', // Dark gray - text, primary elements
|
|
24
|
+
},
|
|
25
|
+
absolute: {
|
|
26
|
+
black: '#000000',
|
|
27
|
+
white: '#FFFFFF',
|
|
28
|
+
},
|
|
29
|
+
link: {
|
|
30
|
+
default: '#2563EB', // Standard web blue
|
|
31
|
+
hover: '#1D4ED8', // Darker blue
|
|
32
|
+
visited: '#7C3AED', // Purple (standard)
|
|
33
|
+
active: '#1E40AF', // Even darker blue
|
|
34
|
+
},
|
|
35
|
+
semantic: {
|
|
36
|
+
success: {
|
|
37
|
+
main: '#059669', // Dark green (readable on white)
|
|
38
|
+
subtle: '#ECFDF5', // Very light green
|
|
39
|
+
contrast: '#FFFFFF', // White text on main
|
|
40
|
+
},
|
|
41
|
+
error: {
|
|
42
|
+
main: '#DC2626', // Dark red
|
|
43
|
+
subtle: '#FEF2F2', // Very light red
|
|
44
|
+
contrast: '#FFFFFF',
|
|
45
|
+
},
|
|
46
|
+
warning: {
|
|
47
|
+
main: '#D97706', // Dark amber
|
|
48
|
+
subtle: '#FFFBEB', // Very light yellow
|
|
49
|
+
contrast: '#FFFFFF',
|
|
50
|
+
},
|
|
51
|
+
info: {
|
|
52
|
+
main: '#2563EB', // Blue (matches link color)
|
|
53
|
+
subtle: '#EFF6FF', // Very light blue
|
|
54
|
+
contrast: '#FFFFFF',
|
|
55
|
+
},
|
|
56
|
+
},
|
|
57
|
+
secondary: {
|
|
58
|
+
blue: {
|
|
59
|
+
main: '#3B82F6', // Bright blue
|
|
60
|
+
subtle: '#EFF6FF',
|
|
61
|
+
contrast: '#FFFFFF',
|
|
62
|
+
},
|
|
63
|
+
purple: {
|
|
64
|
+
main: '#A855F7', // Bright purple
|
|
65
|
+
subtle: '#FAF5FF',
|
|
66
|
+
contrast: '#FFFFFF',
|
|
67
|
+
},
|
|
68
|
+
pink: {
|
|
69
|
+
main: '#EC4899', // Bright pink
|
|
70
|
+
subtle: '#FDF2F8',
|
|
71
|
+
contrast: '#FFFFFF',
|
|
72
|
+
},
|
|
73
|
+
amber: {
|
|
74
|
+
main: '#F59E0B', // Bright amber
|
|
75
|
+
subtle: '#FFFBEB',
|
|
76
|
+
contrast: '#FFFFFF',
|
|
77
|
+
},
|
|
78
|
+
emerald: {
|
|
79
|
+
main: '#10B981', // Bright emerald
|
|
80
|
+
subtle: '#ECFDF5',
|
|
81
|
+
contrast: '#FFFFFF',
|
|
82
|
+
},
|
|
83
|
+
orange: {
|
|
84
|
+
main: '#F97316', // Bright orange
|
|
85
|
+
subtle: '#FFF7ED',
|
|
86
|
+
contrast: '#FFFFFF',
|
|
87
|
+
},
|
|
88
|
+
},
|
|
89
|
+
// Derived surface tokens
|
|
90
|
+
surface: {
|
|
91
|
+
page: '#F7F8F9', // neutral[2]
|
|
92
|
+
card: '#FFFFFF', // neutral[1]
|
|
93
|
+
overlay: '#FFFFFF', // neutral[1]
|
|
94
|
+
interactive: '#F0F2F5', // Between neutral[1] and neutral[2]
|
|
95
|
+
selected: '#F7F8F9', // neutral[2]
|
|
96
|
+
nested: '#FAFBFC', // Between neutral[1] and neutral[2]
|
|
97
|
+
},
|
|
98
|
+
// Derived border tokens
|
|
99
|
+
border: {
|
|
100
|
+
subtle: '#F0F2F5', // Lighter than neutral[3]
|
|
101
|
+
default: '#E1E4E8', // neutral[3]
|
|
102
|
+
strong: '#C4CCD4', // Between neutral[3] and neutral[4]
|
|
103
|
+
},
|
|
104
|
+
// Derived text tokens
|
|
105
|
+
text: {
|
|
106
|
+
primary: '#2E3338', // neutral[4]
|
|
107
|
+
secondary: '#5E6C7A', // ~70% opacity of neutral[4]
|
|
108
|
+
tertiary: '#8A96A3', // ~50% opacity of neutral[4]
|
|
109
|
+
disabled: '#C4CCD4', // ~30% opacity of neutral[4]
|
|
110
|
+
inverse: '#FFFFFF', // neutral[1]
|
|
111
|
+
},
|
|
112
|
+
});
|
|
113
|
+
/**
|
|
114
|
+
* Build dark mode colors
|
|
115
|
+
*/
|
|
116
|
+
const buildDarkModeColors = () => ({
|
|
117
|
+
mode: 'dark',
|
|
118
|
+
neutral: {
|
|
119
|
+
1: '#1A1D21', // Dark background
|
|
120
|
+
2: '#2E3338', // Slightly lighter
|
|
121
|
+
3: '#4A5158', // Medium gray
|
|
122
|
+
4: '#F7F8F9', // Light text
|
|
123
|
+
},
|
|
124
|
+
absolute: {
|
|
125
|
+
black: '#000000',
|
|
126
|
+
white: '#FFFFFF',
|
|
127
|
+
},
|
|
128
|
+
link: {
|
|
129
|
+
default: '#3B82F6', // Brighter blue for dark bg
|
|
130
|
+
hover: '#60A5FA', // Even brighter
|
|
131
|
+
visited: '#A78BFA', // Purple
|
|
132
|
+
active: '#2563EB', // Standard blue
|
|
133
|
+
},
|
|
134
|
+
semantic: {
|
|
135
|
+
success: {
|
|
136
|
+
main: '#34D399', // Bright green (readable on dark)
|
|
137
|
+
subtle: '#064E3B', // Dark green background
|
|
138
|
+
contrast: '#000000', // Black text on bright
|
|
139
|
+
},
|
|
140
|
+
error: {
|
|
141
|
+
main: '#F87171', // Bright red
|
|
142
|
+
subtle: '#7F1D1D', // Dark red background
|
|
143
|
+
contrast: '#000000',
|
|
144
|
+
},
|
|
145
|
+
warning: {
|
|
146
|
+
main: '#FBBF24', // Bright amber
|
|
147
|
+
subtle: '#78350F', // Dark amber background
|
|
148
|
+
contrast: '#000000',
|
|
149
|
+
},
|
|
150
|
+
info: {
|
|
151
|
+
main: '#3B82F6', // Bright blue
|
|
152
|
+
subtle: '#1E3A8A', // Dark blue background
|
|
153
|
+
contrast: '#FFFFFF',
|
|
154
|
+
},
|
|
155
|
+
},
|
|
156
|
+
secondary: {
|
|
157
|
+
blue: {
|
|
158
|
+
main: '#3B82F6', // Same bright blue
|
|
159
|
+
subtle: '#1E3A8A', // Dark blue background
|
|
160
|
+
contrast: '#FFFFFF',
|
|
161
|
+
},
|
|
162
|
+
purple: {
|
|
163
|
+
main: '#A855F7', // Same bright purple
|
|
164
|
+
subtle: '#581C87', // Dark purple background
|
|
165
|
+
contrast: '#FFFFFF',
|
|
166
|
+
},
|
|
167
|
+
pink: {
|
|
168
|
+
main: '#EC4899', // Same bright pink
|
|
169
|
+
subtle: '#831843', // Dark pink background
|
|
170
|
+
contrast: '#FFFFFF',
|
|
171
|
+
},
|
|
172
|
+
amber: {
|
|
173
|
+
main: '#F59E0B', // Same bright amber
|
|
174
|
+
subtle: '#78350F', // Dark amber background
|
|
175
|
+
contrast: '#FFFFFF',
|
|
176
|
+
},
|
|
177
|
+
emerald: {
|
|
178
|
+
main: '#10B981', // Same bright emerald
|
|
179
|
+
subtle: '#064E3B', // Dark emerald background
|
|
180
|
+
contrast: '#FFFFFF',
|
|
181
|
+
},
|
|
182
|
+
orange: {
|
|
183
|
+
main: '#F97316', // Same bright orange
|
|
184
|
+
subtle: '#7C2D12', // Dark orange background
|
|
185
|
+
contrast: '#FFFFFF',
|
|
186
|
+
},
|
|
187
|
+
},
|
|
188
|
+
// Derived surface tokens
|
|
189
|
+
surface: {
|
|
190
|
+
page: '#1A1D21', // neutral[1]
|
|
191
|
+
card: '#2E3338', // neutral[2]
|
|
192
|
+
overlay: '#2E3338', // neutral[2]
|
|
193
|
+
interactive: '#3A3F45', // Between neutral[2] and neutral[3]
|
|
194
|
+
selected: '#2E3338', // neutral[2]
|
|
195
|
+
nested: '#242729', // Between neutral[1] and neutral[2]
|
|
196
|
+
},
|
|
197
|
+
// Derived border tokens
|
|
198
|
+
border: {
|
|
199
|
+
subtle: '#3A3F45', // Lighter than neutral[3]
|
|
200
|
+
default: '#4A5158', // neutral[3]
|
|
201
|
+
strong: '#5E6C7A', // Between neutral[3] and neutral[4]
|
|
202
|
+
},
|
|
203
|
+
// Derived text tokens
|
|
204
|
+
text: {
|
|
205
|
+
primary: '#F7F8F9', // neutral[4]
|
|
206
|
+
secondary: '#B4BCC5', // ~75% opacity
|
|
207
|
+
tertiary: '#8A96A3', // ~55% opacity
|
|
208
|
+
disabled: '#5E6C7A', // ~35% opacity
|
|
209
|
+
inverse: '#1A1D21', // neutral[1]
|
|
210
|
+
},
|
|
211
|
+
});
|
|
212
|
+
/**
|
|
213
|
+
* Build color palette for given theme mode
|
|
214
|
+
*/
|
|
215
|
+
export const buildColorPalette = (mode = 'light') => {
|
|
216
|
+
return mode === 'light' ? buildLightModeColors() : buildDarkModeColors();
|
|
217
|
+
};
|
|
218
|
+
/**
|
|
219
|
+
* Default light mode palette
|
|
220
|
+
*/
|
|
221
|
+
export const lightPalette = buildLightModeColors();
|
|
222
|
+
/**
|
|
223
|
+
* Default dark mode palette
|
|
224
|
+
*/
|
|
225
|
+
export const darkPalette = buildDarkModeColors();
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Border radius system
|
|
3
|
+
* Consistent 8px base (Wise standard)
|
|
4
|
+
*/
|
|
5
|
+
export interface RadiusScale {
|
|
6
|
+
none: number;
|
|
7
|
+
sm: number;
|
|
8
|
+
base: number;
|
|
9
|
+
md: number;
|
|
10
|
+
lg: number;
|
|
11
|
+
xl: number;
|
|
12
|
+
full: number;
|
|
13
|
+
}
|
|
14
|
+
export declare const radius: RadiusScale;
|
|
15
|
+
/**
|
|
16
|
+
* Component-specific radius
|
|
17
|
+
*/
|
|
18
|
+
export interface ComponentRadius {
|
|
19
|
+
button: number;
|
|
20
|
+
input: number;
|
|
21
|
+
card: number;
|
|
22
|
+
modal: number;
|
|
23
|
+
avatar: number;
|
|
24
|
+
badge: number;
|
|
25
|
+
}
|
|
26
|
+
export declare const componentRadius: ComponentRadius;
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shadow system
|
|
3
|
+
* Minimal shadows (Wise approach)
|
|
4
|
+
*/
|
|
5
|
+
export interface ShadowScale {
|
|
6
|
+
none: string;
|
|
7
|
+
sm: string;
|
|
8
|
+
base: string;
|
|
9
|
+
md: string;
|
|
10
|
+
lg: string;
|
|
11
|
+
}
|
|
12
|
+
export declare const shadows: ShadowScale;
|
|
13
|
+
/**
|
|
14
|
+
* Component-specific shadows
|
|
15
|
+
*/
|
|
16
|
+
export interface ComponentShadows {
|
|
17
|
+
card: string;
|
|
18
|
+
dropdown: string;
|
|
19
|
+
modal: string;
|
|
20
|
+
tooltip: string;
|
|
21
|
+
}
|
|
22
|
+
export declare const componentShadows: ComponentShadows;
|
|
23
|
+
/**
|
|
24
|
+
* Dark mode adjustments
|
|
25
|
+
* In dark mode, borders often work better than shadows
|
|
26
|
+
*/
|
|
27
|
+
export declare const buildDarkModeShadows: () => ComponentShadows;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
export const shadows = {
|
|
2
|
+
none: 'none',
|
|
3
|
+
sm: '0 1px 2px 0 rgba(0, 0, 0, 0.05)',
|
|
4
|
+
base: '0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px 0 rgba(0, 0, 0, 0.06)',
|
|
5
|
+
md: '0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06)',
|
|
6
|
+
lg: '0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05)',
|
|
7
|
+
};
|
|
8
|
+
export const componentShadows = {
|
|
9
|
+
card: shadows.sm,
|
|
10
|
+
dropdown: shadows.base,
|
|
11
|
+
modal: shadows.md,
|
|
12
|
+
tooltip: shadows.sm,
|
|
13
|
+
};
|
|
14
|
+
/**
|
|
15
|
+
* Dark mode adjustments
|
|
16
|
+
* In dark mode, borders often work better than shadows
|
|
17
|
+
*/
|
|
18
|
+
export const buildDarkModeShadows = () => ({
|
|
19
|
+
card: 'none', // Use border instead
|
|
20
|
+
dropdown: shadows.base,
|
|
21
|
+
modal: shadows.md,
|
|
22
|
+
tooltip: shadows.sm,
|
|
23
|
+
});
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Spacing scale
|
|
3
|
+
*
|
|
4
|
+
* Based on 4px base unit for flexibility
|
|
5
|
+
* Named by size for clarity
|
|
6
|
+
*/
|
|
7
|
+
export interface SpacingScale {
|
|
8
|
+
0: number;
|
|
9
|
+
1: number;
|
|
10
|
+
2: number;
|
|
11
|
+
3: number;
|
|
12
|
+
4: number;
|
|
13
|
+
5: number;
|
|
14
|
+
6: number;
|
|
15
|
+
8: number;
|
|
16
|
+
10: number;
|
|
17
|
+
12: number;
|
|
18
|
+
16: number;
|
|
19
|
+
20: number;
|
|
20
|
+
}
|
|
21
|
+
export declare const spacing: SpacingScale;
|
|
22
|
+
/**
|
|
23
|
+
* Component-specific spacing
|
|
24
|
+
*/
|
|
25
|
+
export interface ComponentSpacing {
|
|
26
|
+
/** Button padding */
|
|
27
|
+
button: {
|
|
28
|
+
horizontal: number;
|
|
29
|
+
vertical: number;
|
|
30
|
+
};
|
|
31
|
+
/** Card padding */
|
|
32
|
+
card: {
|
|
33
|
+
sm: number;
|
|
34
|
+
md: number;
|
|
35
|
+
lg: number;
|
|
36
|
+
};
|
|
37
|
+
/** Form spacing */
|
|
38
|
+
form: {
|
|
39
|
+
itemGap: number;
|
|
40
|
+
labelGap: number;
|
|
41
|
+
};
|
|
42
|
+
/** Section spacing */
|
|
43
|
+
section: {
|
|
44
|
+
gap: number;
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
export declare const componentSpacing: ComponentSpacing;
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
export const spacing = {
|
|
2
|
+
0: 0,
|
|
3
|
+
1: 4,
|
|
4
|
+
2: 8,
|
|
5
|
+
3: 12,
|
|
6
|
+
4: 16,
|
|
7
|
+
5: 20,
|
|
8
|
+
6: 24,
|
|
9
|
+
8: 32,
|
|
10
|
+
10: 40,
|
|
11
|
+
12: 48,
|
|
12
|
+
16: 64,
|
|
13
|
+
20: 80,
|
|
14
|
+
};
|
|
15
|
+
export const componentSpacing = {
|
|
16
|
+
button: {
|
|
17
|
+
horizontal: 16,
|
|
18
|
+
vertical: 8,
|
|
19
|
+
},
|
|
20
|
+
card: {
|
|
21
|
+
sm: 16,
|
|
22
|
+
md: 24,
|
|
23
|
+
lg: 32,
|
|
24
|
+
},
|
|
25
|
+
form: {
|
|
26
|
+
itemGap: 16,
|
|
27
|
+
labelGap: 8,
|
|
28
|
+
},
|
|
29
|
+
section: {
|
|
30
|
+
gap: 32,
|
|
31
|
+
},
|
|
32
|
+
};
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Typography system
|
|
3
|
+
*/
|
|
4
|
+
export interface TypographySystem {
|
|
5
|
+
fontFamily: {
|
|
6
|
+
/** Primary font stack */
|
|
7
|
+
base: string;
|
|
8
|
+
/** Monospace for code */
|
|
9
|
+
mono: string;
|
|
10
|
+
};
|
|
11
|
+
/** Font sizes */
|
|
12
|
+
fontSize: {
|
|
13
|
+
xs: number;
|
|
14
|
+
sm: number;
|
|
15
|
+
base: number;
|
|
16
|
+
lg: number;
|
|
17
|
+
xl: number;
|
|
18
|
+
'2xl': number;
|
|
19
|
+
'3xl': number;
|
|
20
|
+
'4xl': number;
|
|
21
|
+
'5xl': number;
|
|
22
|
+
};
|
|
23
|
+
/** Font weights */
|
|
24
|
+
fontWeight: {
|
|
25
|
+
regular: number;
|
|
26
|
+
medium: number;
|
|
27
|
+
semibold: number;
|
|
28
|
+
bold: number;
|
|
29
|
+
};
|
|
30
|
+
/** Line heights */
|
|
31
|
+
lineHeight: {
|
|
32
|
+
tight: number;
|
|
33
|
+
base: number;
|
|
34
|
+
relaxed: number;
|
|
35
|
+
};
|
|
36
|
+
/** Letter spacing */
|
|
37
|
+
letterSpacing: {
|
|
38
|
+
tight: string;
|
|
39
|
+
base: string;
|
|
40
|
+
wide: string;
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
export declare const typography: TypographySystem;
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
export const typography = {
|
|
2
|
+
fontFamily: {
|
|
3
|
+
base: "Avenir, MarkPro, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif",
|
|
4
|
+
mono: "'SF Mono', 'Monaco', 'Inconsolata', 'Fira Mono', monospace",
|
|
5
|
+
},
|
|
6
|
+
fontSize: {
|
|
7
|
+
xs: 12,
|
|
8
|
+
sm: 13,
|
|
9
|
+
base: 14,
|
|
10
|
+
lg: 16,
|
|
11
|
+
xl: 18,
|
|
12
|
+
'2xl': 20,
|
|
13
|
+
'3xl': 24,
|
|
14
|
+
'4xl': 30,
|
|
15
|
+
'5xl': 36,
|
|
16
|
+
},
|
|
17
|
+
fontWeight: {
|
|
18
|
+
regular: 400,
|
|
19
|
+
medium: 500,
|
|
20
|
+
semibold: 600,
|
|
21
|
+
bold: 700,
|
|
22
|
+
},
|
|
23
|
+
lineHeight: {
|
|
24
|
+
tight: 1.25,
|
|
25
|
+
base: 1.5,
|
|
26
|
+
relaxed: 1.75,
|
|
27
|
+
},
|
|
28
|
+
letterSpacing: {
|
|
29
|
+
tight: '-0.01em',
|
|
30
|
+
base: '0',
|
|
31
|
+
wide: '0.025em',
|
|
32
|
+
},
|
|
33
|
+
};
|