@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.
Files changed (74) hide show
  1. package/dist/CloseCircleOutlined-CMilRURi.js +3 -0
  2. package/dist/CloseCircleOutlined-CMilRURi.js.map +1 -0
  3. package/dist/CloseCircleOutlined-CSHx89Jn.js +3 -0
  4. package/dist/CloseCircleOutlined-CSHx89Jn.js.map +1 -0
  5. package/dist/InfoCircleOutlined-DR9DmuN-.js +5 -0
  6. package/dist/InfoCircleOutlined-DR9DmuN-.js.map +1 -0
  7. package/dist/InfoCircleOutlined-Hx86sClq.js +5 -0
  8. package/dist/InfoCircleOutlined-Hx86sClq.js.map +1 -0
  9. package/dist/alerts/index.cjs.js +1 -1
  10. package/dist/alerts/index.cjs.js.map +1 -1
  11. package/dist/alerts/index.js +1 -1
  12. package/dist/alerts/index.js.map +1 -1
  13. package/dist/dialogs/index.cjs.js +3 -1
  14. package/dist/dialogs/index.cjs.js.map +1 -1
  15. package/dist/dialogs/index.js +3 -1
  16. package/dist/dialogs/index.js.map +1 -1
  17. package/dist/index.cjs.js +1 -1
  18. package/dist/index.cjs.js.map +1 -1
  19. package/dist/index.esm.js +1 -1
  20. package/dist/index.esm.js.map +1 -1
  21. package/dist/notifications/index.cjs.js +1 -1
  22. package/dist/notifications/index.js +1 -1
  23. package/dist/providers.d.ts +2 -32
  24. package/dist/providers.js +3 -24
  25. package/dist/tembo-notify-BUN8_mKb.js +3 -0
  26. package/dist/tembo-notify-BUN8_mKb.js.map +1 -0
  27. package/dist/tembo-notify-D0uYvwZP.js +3 -0
  28. package/dist/tembo-notify-D0uYvwZP.js.map +1 -0
  29. package/dist/theme/deprecated/theme-provider.d.ts +100 -0
  30. package/dist/theme/deprecated/theme-provider.js +405 -0
  31. package/dist/theme/index.cjs.js +1 -1
  32. package/dist/theme/index.d.ts +3 -2
  33. package/dist/theme/index.js +1 -1
  34. package/dist/theme/theme-config.d.ts +6 -0
  35. package/dist/theme/theme-config.js +781 -0
  36. package/dist/theme/theme-provider.d.ts +14 -79
  37. package/dist/theme/theme-provider.js +24 -390
  38. package/dist/theme/tokens/color.d.ts +168 -0
  39. package/dist/theme/tokens/color.js +225 -0
  40. package/dist/theme/tokens/radius.d.ts +26 -0
  41. package/dist/theme/tokens/radius.js +17 -0
  42. package/dist/theme/tokens/shadow.d.ts +27 -0
  43. package/dist/theme/tokens/shadow.js +23 -0
  44. package/dist/theme/tokens/spacing.d.ts +47 -0
  45. package/dist/theme/tokens/spacing.js +32 -0
  46. package/dist/theme/tokens/typography.d.ts +43 -0
  47. package/dist/theme/tokens/typography.js +33 -0
  48. package/dist/theme-provider-BsQRkig_.js +11 -0
  49. package/dist/theme-provider-BsQRkig_.js.map +1 -0
  50. package/dist/theme-provider-C44BTeC4.js +11 -0
  51. package/dist/theme-provider-C44BTeC4.js.map +1 -0
  52. package/dist/validation/index.cjs.js.map +1 -1
  53. package/dist/validation/index.js.map +1 -1
  54. package/package.json +15 -16
  55. package/dist/InfoCircleOutlined-B7d2aRfV.js +0 -7
  56. package/dist/InfoCircleOutlined-B7d2aRfV.js.map +0 -1
  57. package/dist/InfoCircleOutlined-DYs90hdV.js +0 -7
  58. package/dist/InfoCircleOutlined-DYs90hdV.js.map +0 -1
  59. package/dist/ZoomOutOutlined-CW-jqBMI.js +0 -2
  60. package/dist/ZoomOutOutlined-CW-jqBMI.js.map +0 -1
  61. package/dist/ZoomOutOutlined-Pw8hpWWK.js +0 -2
  62. package/dist/ZoomOutOutlined-Pw8hpWWK.js.map +0 -1
  63. package/dist/tembo-notify-Bp14qngd.js +0 -2
  64. package/dist/tembo-notify-Bp14qngd.js.map +0 -1
  65. package/dist/tembo-notify-h5Xn66oA.js +0 -2
  66. package/dist/tembo-notify-h5Xn66oA.js.map +0 -1
  67. package/dist/theme-provider-Ca4P0Hcp.js +0 -11
  68. package/dist/theme-provider-Ca4P0Hcp.js.map +0 -1
  69. package/dist/theme-provider-RhAw3jw_.js +0 -11
  70. package/dist/theme-provider-RhAw3jw_.js.map +0 -1
  71. /package/dist/theme/{colors.d.ts → deprecated/colors.d.ts} +0 -0
  72. /package/dist/theme/{colors.js → deprecated/colors.js} +0 -0
  73. /package/dist/theme/{constants.d.ts → deprecated/constants.d.ts} +0 -0
  74. /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,17 @@
1
+ export const radius = {
2
+ none: 0,
3
+ sm: 4,
4
+ base: 8,
5
+ md: 12,
6
+ lg: 16,
7
+ xl: 24,
8
+ full: 9999,
9
+ };
10
+ export const componentRadius = {
11
+ button: 8,
12
+ input: 8,
13
+ card: 8,
14
+ modal: 12,
15
+ avatar: 9999,
16
+ badge: 4,
17
+ };
@@ -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
+ };