@temboplus/frontend-react-core 0.1.3-beta.13 → 0.1.3-beta.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.
Files changed (51) hide show
  1. package/dist/alerts/index.cjs.js +1 -1
  2. package/dist/alerts/index.cjs.js.map +1 -1
  3. package/dist/alerts/index.js +1 -1
  4. package/dist/alerts/index.js.map +1 -1
  5. package/dist/dialogs/index.cjs.js +3 -3
  6. package/dist/dialogs/index.cjs.js.map +1 -1
  7. package/dist/dialogs/index.js +3 -3
  8. package/dist/dialogs/index.js.map +1 -1
  9. package/dist/features/alerts/alert.js +18 -18
  10. package/dist/features/dialogs/tembo-confirm.js +11 -11
  11. package/dist/features/notifications/tembo-notify.d.ts +3 -2
  12. package/dist/features/notifications/toast-config.d.ts +4 -3
  13. package/dist/features/notifications/toast-config.js +7 -7
  14. package/dist/features/notifications/toast-container.js +2 -2
  15. package/dist/index.cjs.js +1 -1
  16. package/dist/index.cjs.js.map +1 -1
  17. package/dist/index.esm.js +1 -1
  18. package/dist/index.esm.js.map +1 -1
  19. package/dist/notifications/index.cjs.js +1 -1
  20. package/dist/notifications/index.js +1 -1
  21. package/dist/tembo-notify-60Hk7l5W.js +3 -0
  22. package/dist/tembo-notify-60Hk7l5W.js.map +1 -0
  23. package/dist/tembo-notify-BEEB2wEp.js +3 -0
  24. package/dist/tembo-notify-BEEB2wEp.js.map +1 -0
  25. package/dist/theme/index.cjs.js +1 -1
  26. package/dist/theme/index.js +1 -1
  27. package/dist/theme/theme-config.d.ts +10 -3
  28. package/dist/theme/theme-config.js +138 -286
  29. package/dist/theme/theme-provider.d.ts +3 -3
  30. package/dist/theme/theme-provider.js +5 -7
  31. package/dist/theme/tokens/{color.d.ts → colors.d.ts} +32 -17
  32. package/dist/theme/tokens/{color.js → colors.js} +65 -46
  33. package/dist/theme/tokens/constants.d.ts +15 -42
  34. package/dist/theme/tokens/constants.js +43 -40
  35. package/dist/theme-provider-BJjIEVwv.js +2 -0
  36. package/dist/theme-provider-BJjIEVwv.js.map +1 -0
  37. package/dist/theme-provider-CpPw8sUs.js +11 -0
  38. package/dist/theme-provider-CpPw8sUs.js.map +1 -0
  39. package/dist/theme-provider-D3-cveEd.js +2 -0
  40. package/dist/theme-provider-D3-cveEd.js.map +1 -0
  41. package/dist/theme-provider-xDEswLd1.js +11 -0
  42. package/dist/theme-provider-xDEswLd1.js.map +1 -0
  43. package/package.json +1 -1
  44. package/dist/tembo-notify-CW2KXwZW.js +0 -3
  45. package/dist/tembo-notify-CW2KXwZW.js.map +0 -1
  46. package/dist/tembo-notify-EJeawMJ_.js +0 -3
  47. package/dist/tembo-notify-EJeawMJ_.js.map +0 -1
  48. package/dist/theme-provider-BVd_oFrl.js +0 -11
  49. package/dist/theme-provider-BVd_oFrl.js.map +0 -1
  50. package/dist/theme-provider-dbf4ZeQO.js +0 -11
  51. package/dist/theme-provider-dbf4ZeQO.js.map +0 -1
@@ -1,13 +1,13 @@
1
1
  import React from 'react';
2
2
  import type { ThemeConfig } from 'antd';
3
- import { TemboUIConstants } from './tokens/constants.js';
4
- import { ColorPalette, ThemeMode } from './tokens/color.js';
3
+ import { UIConstants } from './tokens/constants.js';
4
+ import { ColorPalette, ThemeMode } from './tokens/colors.js';
5
5
  /**
6
6
  * Theme context value - now includes constants!
7
7
  */
8
8
  export interface TemboTheme {
9
9
  colors: ColorPalette;
10
- constants: TemboUIConstants;
10
+ constants: UIConstants;
11
11
  mode: ThemeMode;
12
12
  }
13
13
  /**
@@ -3,10 +3,10 @@ import React from 'react';
3
3
  import { ConfigProvider } from 'antd';
4
4
  import { defaultUIConstants } from './tokens/constants.js';
5
5
  import { buildAntDTheme } from './theme-config.js';
6
- import { buildColorPalette } from './tokens/color.js';
6
+ import { buildColorPalette } from './tokens/colors.js';
7
7
  const TemboThemeContext = React.createContext({
8
8
  colors: buildColorPalette('light'),
9
- constants: defaultUIConstants, // ← Added back!
9
+ constants: defaultUIConstants,
10
10
  mode: 'light',
11
11
  });
12
12
  /**
@@ -14,17 +14,15 @@ const TemboThemeContext = React.createContext({
14
14
  */
15
15
  export const TemboThemeProvider = ({ children, mode = 'light', antdThemeOverrides, }) => {
16
16
  const colors = React.useMemo(() => buildColorPalette(mode), [mode]);
17
- const constants = React.useMemo(() => defaultUIConstants, // Can be made configurable later
18
- []);
17
+ const constants = React.useMemo(() => defaultUIConstants, []);
19
18
  const antdTheme = React.useMemo(() => {
20
19
  var _a, _b;
21
- const baseTheme = buildAntDTheme(colors, constants); // ← Pass constants
20
+ const baseTheme = buildAntDTheme(colors, constants);
22
21
  if (!antdThemeOverrides)
23
22
  return baseTheme;
24
23
  return Object.assign(Object.assign({}, baseTheme), { token: Object.assign(Object.assign({}, baseTheme.token), ((_a = antdThemeOverrides.token) !== null && _a !== void 0 ? _a : {})), components: Object.assign(Object.assign({}, baseTheme.components), ((_b = antdThemeOverrides.components) !== null && _b !== void 0 ? _b : {})) });
25
24
  }, [colors, constants, antdThemeOverrides]);
26
- const contextValue = React.useMemo(() => ({ colors, constants, mode }), // Now includes constants
27
- [colors, constants, mode]);
25
+ const contextValue = React.useMemo(() => ({ colors, constants, mode }), [colors, constants, mode]);
28
26
  return (_jsx(TemboThemeContext.Provider, { value: contextValue, children: _jsx(ConfigProvider, { theme: antdTheme, children: children }) }));
29
27
  };
30
28
  /**
@@ -4,12 +4,10 @@
4
4
  * Monochrome-first design system with purposeful color usage.
5
5
  *
6
6
  * Philosophy:
7
- * - Monochrome foundation (4 neutral tones)
8
- * - Color used purposefully (semantic feedback, categories, data viz)
9
- * - Standard blue for links (web conventions)
7
+ * - 6 neutral tones for optimal contrast and clean mapping
8
+ * - Monochrome foundation with semantic color accents
9
+ * - Standard blue for links and focus states
10
10
  * - Theme-aware: entire system adapts to light/dark mode
11
- *
12
- * Inspired by: Wise, Linear, Apple HIG
13
11
  */
14
12
  export type ThemeMode = 'light' | 'dark';
15
13
  /**
@@ -30,19 +28,24 @@ export interface ColorScale {
30
28
  export interface ColorPalette {
31
29
  mode: ThemeMode;
32
30
  /**
33
- * Monochrome foundation - 4 neutral tones
31
+ * Monochrome foundation - 6 neutral tones
34
32
  * Theme-aware: inverts in dark mode
33
+ * Optimized for accessibility with proper contrast ratios
35
34
  *
36
- * 1 = Brightest (backgrounds)
37
- * 2 = Subtle (hover states, dividers)
38
- * 3 = Medium (borders, disabled text)
39
- * 4 = Darkest (text, primary elements)
35
+ * 1 = Brightest (pure backgrounds)
36
+ * 2 = Very light (page backgrounds)
37
+ * 3 = Light (hover states, subtle borders)
38
+ * 4 = Medium (default borders)
39
+ * 5 = Dark (secondary text, strong borders)
40
+ * 6 = Darkest (primary text, actions)
40
41
  */
41
42
  neutral: {
42
43
  1: string;
43
44
  2: string;
44
45
  3: string;
45
46
  4: string;
47
+ 5: string;
48
+ 6: string;
46
49
  };
47
50
  /**
48
51
  * Absolute colors - never change
@@ -53,7 +56,7 @@ export interface ColorPalette {
53
56
  };
54
57
  /**
55
58
  * Links - standard web colors
56
- * Same in both themes (chosen for universal contrast)
59
+ * Also used for focus rings (blue is universal web standard)
57
60
  */
58
61
  link: {
59
62
  /** Default link color - standard blue */
@@ -88,8 +91,7 @@ export interface ColorPalette {
88
91
  orange: ColorScale;
89
92
  };
90
93
  /**
91
- * Surface hierarchy - derived from neutral scale
92
- * Convenience tokens for common surfaces
94
+ * Surface hierarchy
93
95
  */
94
96
  surface: {
95
97
  /** Main page background */
@@ -106,18 +108,18 @@ export interface ColorPalette {
106
108
  nested: string;
107
109
  };
108
110
  /**
109
- * Border colors - derived from neutral scale
111
+ * Border colors
110
112
  */
111
113
  border: {
112
114
  /** Subtle borders - dividers, separators */
113
115
  subtle: string;
114
116
  /** Default borders - form inputs, cards */
115
117
  default: string;
116
- /** Strong borders - emphasis, focus alternative */
118
+ /** Strong borders - emphasis */
117
119
  strong: string;
118
120
  };
119
121
  /**
120
- * Text colors - derived from neutral scale
122
+ * Text colors
121
123
  */
122
124
  text: {
123
125
  /** Primary text - headlines, body copy */
@@ -131,6 +133,20 @@ export interface ColorPalette {
131
133
  /** Text on dark backgrounds */
132
134
  inverse: string;
133
135
  };
136
+ /**
137
+ * Monochrome actions - for buttons and interactive elements
138
+ * Inverts automatically with theme mode
139
+ */
140
+ action: {
141
+ /** Default action background */
142
+ default: string;
143
+ /** Hover state background */
144
+ hover: string;
145
+ /** Disabled state background */
146
+ disabled: string;
147
+ /** Text/icons on action backgrounds */
148
+ contrast: string;
149
+ };
134
150
  }
135
151
  /**
136
152
  * Build color palette for given theme mode
@@ -146,7 +162,6 @@ export declare const lightPalette: ColorPalette;
146
162
  export declare const darkPalette: ColorPalette;
147
163
  /**
148
164
  * Color palette overrides (for custom theming)
149
- * Allows partial overrides while maintaining type safety
150
165
  */
151
166
  export type ColorOverrides = {
152
167
  neutral?: Partial<ColorPalette['neutral']>;
@@ -4,47 +4,49 @@
4
4
  * Monochrome-first design system with purposeful color usage.
5
5
  *
6
6
  * Philosophy:
7
- * - Monochrome foundation (4 neutral tones)
8
- * - Color used purposefully (semantic feedback, categories, data viz)
9
- * - Standard blue for links (web conventions)
7
+ * - 6 neutral tones for optimal contrast and clean mapping
8
+ * - Monochrome foundation with semantic color accents
9
+ * - Standard blue for links and focus states
10
10
  * - Theme-aware: entire system adapts to light/dark mode
11
- *
12
- * Inspired by: Wise, Linear, Apple HIG
13
11
  */
14
12
  /**
15
- * Build light mode colors
13
+ * Build light mode colors with 6-tone neutral scale
16
14
  */
17
15
  const buildLightModeColors = () => ({
18
16
  mode: 'light',
17
+ // 6 neutral tones - optimized for accessibility
19
18
  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
19
+ 1: '#FFFFFF', // Pure white
20
+ 2: '#F5F7FA', // Very light gray - page backgrounds
21
+ 3: '#E5E7EB', // Light gray - hover, subtle borders
22
+ 4: '#D1D5DB', // Medium gray - default borders
23
+ 5: '#6B7280', // Dark gray - secondary text, strong borders
24
+ 6: '#111827', // Near black - primary text, actions
24
25
  },
25
26
  absolute: {
26
27
  black: '#000000',
27
28
  white: '#FFFFFF',
28
29
  },
30
+ // Standard blue for links and focus states
29
31
  link: {
30
32
  default: '#2563EB', // Standard web blue
31
33
  hover: '#1D4ED8', // Darker blue
32
- visited: '#7C3AED', // Purple (standard)
34
+ visited: '#7C3AED', // Purple (web standard)
33
35
  active: '#1E40AF', // Even darker blue
34
36
  },
35
37
  semantic: {
36
38
  success: {
37
- main: '#059669', // Dark green (readable on white)
39
+ main: '#059669', // Dark green (7.0:1 contrast)
38
40
  subtle: '#ECFDF5', // Very light green
39
41
  contrast: '#FFFFFF', // White text on main
40
42
  },
41
43
  error: {
42
- main: '#DC2626', // Dark red
44
+ main: '#DC2626', // Dark red (6.5:1 contrast)
43
45
  subtle: '#FEF2F2', // Very light red
44
46
  contrast: '#FFFFFF',
45
47
  },
46
48
  warning: {
47
- main: '#D97706', // Dark amber
49
+ main: '#D97706', // Dark amber (6.0:1 contrast)
48
50
  subtle: '#FFFBEB', // Very light yellow
49
51
  contrast: '#FFFFFF',
50
52
  },
@@ -86,40 +88,50 @@ const buildLightModeColors = () => ({
86
88
  contrast: '#FFFFFF',
87
89
  },
88
90
  },
89
- // Derived surface tokens
91
+ // Derived surface tokens (from 6-tone scale)
90
92
  surface: {
91
- page: '#F7F8F9', // neutral[2]
93
+ page: '#F5F7FA', // neutral[2]
92
94
  card: '#FFFFFF', // neutral[1]
93
95
  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]
96
+ interactive: '#E5E7EB', // neutral[3]
97
+ selected: '#E5E7EB', // neutral[3]
98
+ nested: '#FAFBFC', // Between neutral[1] and [2]
97
99
  },
98
100
  // Derived border tokens
99
101
  border: {
100
- subtle: '#F0F2F5', // Lighter than neutral[3]
101
- default: '#E1E4E8', // neutral[3]
102
- strong: '#C4CCD4', // Between neutral[3] and neutral[4]
102
+ subtle: '#E5E7EB', // neutral[3]
103
+ default: '#D1D5DB', // neutral[4]
104
+ strong: '#6B7280', // neutral[5]
103
105
  },
104
106
  // Derived text tokens
105
107
  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]
108
+ primary: '#111827', // neutral[6] - 16:1 contrast ✅
109
+ secondary: '#6B7280', // neutral[5] - 4.6:1 contrast ✅
110
+ tertiary: '#6B7280', // neutral[5] - same as secondary
111
+ disabled: '#D1D5DB', // neutral[4] - clear disabled state
110
112
  inverse: '#FFFFFF', // neutral[1]
111
113
  },
114
+ // Monochrome actions
115
+ action: {
116
+ default: '#111827', // neutral[6] - dark button
117
+ hover: '#1F2937', // Slightly lighter than neutral[6]
118
+ disabled: '#E5E7EB', // neutral[3] - light disabled
119
+ contrast: '#FFFFFF', // neutral[1] - white text
120
+ },
112
121
  });
113
122
  /**
114
- * Build dark mode colors
123
+ * Build dark mode colors with inverted 6-tone scale
115
124
  */
116
125
  const buildDarkModeColors = () => ({
117
126
  mode: 'dark',
127
+ // 6 neutral tones - inverted for dark mode
118
128
  neutral: {
119
- 1: '#1A1D21', // Dark background
120
- 2: '#2E3338', // Slightly lighter
121
- 3: '#4A5158', // Medium gray
122
- 4: '#F7F8F9', // Light text
129
+ 1: '#111827', // Near black
130
+ 2: '#1F2937', // Very dark gray
131
+ 3: '#374151', // Dark gray
132
+ 4: '#4B5563', // Medium gray
133
+ 5: '#9CA3AF', // Light gray
134
+ 6: '#F9FAFB', // Off white
123
135
  },
124
136
  absolute: {
125
137
  black: '#000000',
@@ -133,7 +145,7 @@ const buildDarkModeColors = () => ({
133
145
  },
134
146
  semantic: {
135
147
  success: {
136
- main: '#34D399', // Bright green (readable on dark)
148
+ main: '#34D399', // Bright green
137
149
  subtle: '#064E3B', // Dark green background
138
150
  contrast: '#000000', // Black text on bright
139
151
  },
@@ -187,26 +199,33 @@ const buildDarkModeColors = () => ({
187
199
  },
188
200
  // Derived surface tokens
189
201
  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]
202
+ page: '#1F2937', // neutral[2]
203
+ card: '#111827', // neutral[1]
204
+ overlay: '#1F2937', // neutral[2]
205
+ interactive: '#374151', // neutral[3]
206
+ selected: '#374151', // neutral[3]
207
+ nested: '#1A1F2E', // Between neutral[1] and [2]
196
208
  },
197
209
  // Derived border tokens
198
210
  border: {
199
- subtle: '#3A3F45', // Lighter than neutral[3]
200
- default: '#4A5158', // neutral[3]
201
- strong: '#5E6C7A', // Between neutral[3] and neutral[4]
211
+ subtle: '#374151', // neutral[3]
212
+ default: '#4B5563', // neutral[4]
213
+ strong: '#9CA3AF', // neutral[5]
202
214
  },
203
215
  // Derived text tokens
204
216
  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]
217
+ primary: '#F9FAFB', // neutral[6]
218
+ secondary: '#9CA3AF', // neutral[5]
219
+ tertiary: '#9CA3AF', // neutral[5]
220
+ disabled: '#4B5563', // neutral[4]
221
+ inverse: '#111827', // neutral[1]
222
+ },
223
+ // Monochrome actions (inverted)
224
+ action: {
225
+ default: '#F9FAFB', // neutral[6] - light button
226
+ hover: '#E5E7EB', // Slightly darker
227
+ disabled: '#374151', // neutral[3] - dark disabled
228
+ contrast: '#111827', // neutral[1] - dark text
210
229
  },
211
230
  });
212
231
  /**
@@ -1,32 +1,18 @@
1
1
  /**
2
2
  * Tembo Design System - Constants
3
3
  *
4
- * All non-color design tokens consolidated in one place.
5
- * Includes typography, spacing, radius, shadows, z-index, and transitions.
6
- *
7
- * @example
8
- * const { constants } = useTemboTheme();
9
- * style={{
10
- * borderRadius: constants.radius.base,
11
- * padding: constants.spacing.lg,
12
- * fontWeight: constants.typography.fontWeight.medium
13
- * }}
14
- */
15
- /**
16
- * Complete UI constants interface
4
+ * All non-color design tokens: typography, spacing, radius, shadows, etc.
5
+ * Bold rounded corners with subtle shadows for elevation.
17
6
  */
18
- export interface TemboUIConstants {
7
+ export interface UIConstants {
19
8
  /**
20
9
  * Typography tokens
21
- * Font families, sizes, weights, and line heights
22
10
  */
23
11
  typography: {
24
- /** Primary font stack used throughout the application */
25
12
  fontFamily: {
26
13
  base: string;
27
14
  mono: string;
28
15
  };
29
- /** Font size scale - use 'base' (14px) for body text */
30
16
  fontSize: {
31
17
  xs: number;
32
18
  sm: number;
@@ -58,9 +44,7 @@ export interface TemboUIConstants {
58
44
  };
59
45
  };
60
46
  /**
61
- * Spacing scale
62
- * Consistent spacing values for margins, padding, and gaps
63
- * Based on 4px grid system
47
+ * Spacing scale (4px base unit)
64
48
  */
65
49
  spacing: {
66
50
  0: number;
@@ -77,8 +61,8 @@ export interface TemboUIConstants {
77
61
  20: number;
78
62
  };
79
63
  /**
80
- * Border radius tokens - Apple-style rounded edges
81
- * Generous rounding for modern, friendly UI
64
+ * Border radius tokens
65
+ * Bold, smooth rounded corners throughout the design
82
66
  */
83
67
  radius: {
84
68
  none: number;
@@ -88,21 +72,16 @@ export interface TemboUIConstants {
88
72
  lg: number;
89
73
  xl: number;
90
74
  full: number;
91
- };
92
- /**
93
- * Component-specific radius
94
- */
95
- componentRadius: {
96
75
  button: number;
97
76
  input: number;
98
77
  card: number;
99
78
  modal: number;
100
79
  avatar: number;
101
- badge: number;
102
80
  };
103
81
  /**
104
82
  * Box shadow tokens
105
- * Minimal shadows for subtle elevation
83
+ * Subtle shadows for gentle elevation
84
+ * Inputs and buttons have no shadow - shadows only for raised/overlay elements
106
85
  */
107
86
  shadow: {
108
87
  none: string;
@@ -110,19 +89,14 @@ export interface TemboUIConstants {
110
89
  base: string;
111
90
  md: string;
112
91
  lg: string;
113
- };
114
- /**
115
- * Component-specific shadows
116
- */
117
- componentShadow: {
92
+ xl: string;
118
93
  card: string;
119
- dropdown: string;
120
94
  modal: string;
95
+ popover: string;
121
96
  tooltip: string;
122
97
  };
123
98
  /**
124
99
  * Z-index layers
125
- * Stacking order for overlays and floating elements
126
100
  */
127
101
  zIndex: {
128
102
  dropdown: number;
@@ -133,7 +107,6 @@ export interface TemboUIConstants {
133
107
  };
134
108
  /**
135
109
  * Transition timing
136
- * Animation durations for consistent motion
137
110
  */
138
111
  transition: {
139
112
  fast: string;
@@ -143,11 +116,11 @@ export interface TemboUIConstants {
143
116
  }
144
117
  /**
145
118
  * Default UI constants
146
- * Apple-inspired design with rounded edges and generous spacing
119
+ * Bold rounded corners with subtle shadows for elevation
147
120
  */
148
- export declare const defaultUIConstants: TemboUIConstants;
121
+ export declare const defaultUIConstants: UIConstants;
149
122
  /**
150
- * Dark mode shadow adjustments
151
- * In dark mode, borders often work better than shadows
123
+ * Dark mode adjustments
124
+ * Shadows are more subtle/absent in dark mode
152
125
  */
153
- export declare const buildDarkModeConstants: () => Pick<TemboUIConstants, "componentShadow">;
126
+ export declare const buildDarkModeConstants: () => Pick<UIConstants, "shadow">;
@@ -1,20 +1,12 @@
1
1
  /**
2
2
  * Tembo Design System - Constants
3
3
  *
4
- * All non-color design tokens consolidated in one place.
5
- * Includes typography, spacing, radius, shadows, z-index, and transitions.
6
- *
7
- * @example
8
- * const { constants } = useTemboTheme();
9
- * style={{
10
- * borderRadius: constants.radius.base,
11
- * padding: constants.spacing.lg,
12
- * fontWeight: constants.typography.fontWeight.medium
13
- * }}
4
+ * All non-color design tokens: typography, spacing, radius, shadows, etc.
5
+ * Bold rounded corners with subtle shadows for elevation.
14
6
  */
15
7
  /**
16
8
  * Default UI constants
17
- * Apple-inspired design with rounded edges and generous spacing
9
+ * Bold rounded corners with subtle shadows for elevation
18
10
  */
19
11
  export const defaultUIConstants = {
20
12
  typography: {
@@ -66,35 +58,39 @@ export const defaultUIConstants = {
66
58
  16: 64,
67
59
  20: 80,
68
60
  },
61
+ /**
62
+ * Bold rounded corners
63
+ */
69
64
  radius: {
70
65
  none: 0,
71
- sm: 6,
72
- base: 12, // Apple style
73
- md: 16,
74
- lg: 20,
75
- xl: 28,
66
+ sm: 12,
67
+ base: 24, // Bold default radius
68
+ md: 28,
69
+ lg: 32,
70
+ xl: 40,
76
71
  full: 9999,
72
+ // Alias tokens
73
+ button: 24, // base - bold rounded buttons
74
+ input: 24, // base - bold rounded inputs
75
+ card: 28, // md - smooth cards
76
+ modal: 32, // lg - prominent modals
77
+ avatar: 9999, // full - circular
77
78
  },
78
- componentRadius: {
79
- button: 12,
80
- input: 10,
81
- card: 16, // Apple-style rounded cards
82
- modal: 20,
83
- avatar: 9999,
84
- badge: 6,
85
- },
79
+ /**
80
+ * Subtle shadows - only for elevated/overlay elements
81
+ */
86
82
  shadow: {
87
83
  none: 'none',
88
84
  sm: '0 1px 2px 0 rgba(0, 0, 0, 0.05)',
89
- base: '0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px 0 rgba(0, 0, 0, 0.06)',
90
- md: '0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06)',
91
- lg: '0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05)',
92
- },
93
- componentShadow: {
94
- card: '0 1px 2px 0 rgba(0, 0, 0, 0.05)',
95
- dropdown: '0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px 0 rgba(0, 0, 0, 0.06)',
96
- modal: '0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06)',
97
- tooltip: '0 1px 2px 0 rgba(0, 0, 0, 0.05)',
85
+ base: '0 2px 4px 0 rgba(0, 0, 0, 0.06)',
86
+ md: '0 4px 8px 0 rgba(0, 0, 0, 0.08)',
87
+ lg: '0 8px 16px 0 rgba(0, 0, 0, 0.10)',
88
+ xl: '0 12px 24px 0 rgba(0, 0, 0, 0.12)',
89
+ // Alias tokens - semantic shadows
90
+ card: '0 2px 4px 0 rgba(0, 0, 0, 0.06)', // base - gentle
91
+ modal: '0 8px 16px 0 rgba(0, 0, 0, 0.10)', // lg - prominent
92
+ popover: '0 4px 8px 0 rgba(0, 0, 0, 0.08)', // md - medium
93
+ tooltip: '0 1px 2px 0 rgba(0, 0, 0, 0.05)', // sm - subtle
98
94
  },
99
95
  zIndex: {
100
96
  dropdown: 1000,
@@ -110,14 +106,21 @@ export const defaultUIConstants = {
110
106
  },
111
107
  };
112
108
  /**
113
- * Dark mode shadow adjustments
114
- * In dark mode, borders often work better than shadows
109
+ * Dark mode adjustments
110
+ * Shadows are more subtle/absent in dark mode
115
111
  */
116
112
  export const buildDarkModeConstants = () => ({
117
- componentShadow: {
118
- card: 'none', // Use border instead in dark mode
119
- dropdown: '0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px 0 rgba(0, 0, 0, 0.06)',
120
- modal: '0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06)',
121
- tooltip: '0 1px 2px 0 rgba(0, 0, 0, 0.05)',
113
+ shadow: {
114
+ none: 'none',
115
+ sm: '0 1px 2px 0 rgba(0, 0, 0, 0.2)',
116
+ base: '0 2px 4px 0 rgba(0, 0, 0, 0.25)',
117
+ md: '0 4px 8px 0 rgba(0, 0, 0, 0.3)',
118
+ lg: '0 8px 16px 0 rgba(0, 0, 0, 0.35)',
119
+ xl: '0 12px 24px 0 rgba(0, 0, 0, 0.4)',
120
+ // Alias tokens - adjusted for dark mode
121
+ card: 'none', // No shadow on cards in dark mode
122
+ modal: '0 8px 16px 0 rgba(0, 0, 0, 0.35)', // Stronger in dark
123
+ popover: '0 4px 8px 0 rgba(0, 0, 0, 0.3)', // Stronger in dark
124
+ tooltip: '0 1px 2px 0 rgba(0, 0, 0, 0.2)', // Stronger in dark
122
125
  },
123
126
  });
@@ -0,0 +1,2 @@
1
+ "use strict";var r=require("./theme-provider-xDEswLd1.js"),e=require("react"),o=require("antd"),t=require("lodash");function a(r){return r&&r.__esModule?r:{default:r}}var n=a(e);const i={neutral:{0:"#ffffff",1:"#fafafa",2:"#f5f5f5",3:"#f0f0f0",4:"#e5e5e5",5:"#d4d4d4",6:"#b3b3b3",7:"#999999",8:"#666666",9:"#1a1a1a",10:"#000000"}},l={neutral:{0:"#000000",1:"#1a1a1a",2:"#666666",3:"#999999",4:"#b3b3b3",5:"#d4d4d4",6:"#e5e5e5",7:"#f0f0f0",8:"#f5f5f5",9:"#fafafa",10:"#ffffff"}},d=r=>{const e="light"===r?i:l;return{primary:{main:"#000000",hover:"#1a1a1a",active:"#000000",light:"#666666",lighter:"#999999",contrast:"#FFFFFF"},action:{main:"#1a6985",hover:"#145268",active:"#0f3d4f",light:"#e8f2f5",lighter:"#f4f9fa",disabled:"#a3c9d6",contrast:"#FFFFFF"},absolute:{white:"#ffffff",black:"#000000"},neutral:{0:e.neutral[0],1:e.neutral[1],2:e.neutral[2],3:e.neutral[3],4:e.neutral[4],5:e.neutral[5],6:e.neutral[6],7:e.neutral[7],8:e.neutral[8],9:e.neutral[9],10:e.neutral[10],brightest:e.neutral[0],lightest:e.neutral[1],lighter:e.neutral[2],light:e.neutral[3],medium:e.neutral[5],dark:e.neutral[7],darker:e.neutral[8],darkest:e.neutral[9],dimmest:e.neutral[10]},success:{main:"#10b981",bg:"#ecfdf5",border:"#a7f3d0",text:"#047857"},error:{main:"#ef4444",bg:"#fef2f2",border:"#fecaca",text:"#dc2626"},warning:{main:"#f59e0b",bg:"#fffbeb",border:"#fde68a",text:"#d97706"},info:{main:"#1a6985",bg:"#e8f2f5",border:"#b8d9e6",text:"#0f3d4f"},surface:{background:e.neutral[0],main:e.neutral[0],elevated:e.neutral[0],hover:e.neutral[1],subtle:e.neutral[1]},text:{primary:e.neutral[10],secondary:e.neutral[8],tertiary:e.neutral[7],quaternary:e.neutral[6],disabled:e.neutral[5],inverse:e.neutral[0]},border:{main:e.neutral[4],light:e.neutral[3],strong:e.neutral[5],divider:e.neutral[4]},components:{button:{primary:{bg:"#1a6985",hover:"#145268",text:"#FFFFFF"},default:{bg:e.neutral[0],border:e.neutral[5],text:e.neutral[10],hover:e.neutral[1]}},input:{bg:e.neutral[0],border:e.neutral[5],borderHover:e.neutral[7],borderFocus:"#1a6985",placeholder:e.neutral[7]},table:{bg:e.neutral[0],headerBg:e.neutral[1],headerText:e.neutral[10],border:e.neutral[4],rowHover:e.neutral[1]},sidebar:{bg:"#000000",hover:"rgba(255, 255, 255, 0.08)",selected:"rgba(255, 255, 255, 0.12)",text:"#FFFFFF",textSecondary:"rgba(255, 255, 255, 0.65)"}},utility:{transparent:"transparent",link:"#1a6985",linkHover:"#145268",linkActive:"#0f3d4f"}}},s=d("light"),c=(r,e="light")=>{const o=d(e);if(!r)return o;const a=t.merge({},o,r);return a.neutral.brightest=a.neutral[0],a.neutral.lightest=a.neutral[1],a.neutral.lighter=a.neutral[2],a.neutral.light=a.neutral[3],a.neutral.medium=a.neutral[5],a.neutral.dark=a.neutral[7],a.neutral.darker=a.neutral[8],a.neutral.darkest=a.neutral[9],a.neutral.dimmest=a.neutral[10],a},u={typography:{fontFamily:"Avenir, MarkPro, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif",fontSize:{xs:12,sm:13,base:14,lg:16,xl:18},fontWeight:{normal:400,medium:500,semibold:600,bold:700},lineHeight:{tight:1.25,base:1.5715,relaxed:1.75}},spacing:{xs:4,sm:8,md:12,lg:16,xl:24,"2xl":32,"3xl":48},radius:{none:0,sm:8,base:12,md:14,lg:16,xl:20,full:9999,button:24,input:10,card:16},shadow:{sm:"0 1px 2px 0 rgba(0, 0, 0, 0.05)",base:"0 1px 3px 0 rgba(0, 0, 0, 0.08), 0 1px 2px -1px rgba(0, 0, 0, 0.08)",md:"0 4px 6px -1px rgba(0, 0, 0, 0.08), 0 2px 4px -2px rgba(0, 0, 0, 0.08)",lg:"0 10px 15px -3px rgba(0, 0, 0, 0.08), 0 4px 6px -4px rgba(0, 0, 0, 0.08)",xl:"0 20px 25px -5px rgba(0, 0, 0, 0.08), 0 8px 10px -6px rgba(0, 0, 0, 0.08)",card:"0 1px 2px 0 rgba(0, 0, 0, 0.05)",elevated:"0 4px 6px -1px rgba(0, 0, 0, 0.08), 0 2px 4px -2px rgba(0, 0, 0, 0.08)",dropdown:"0 10px 15px -3px rgba(0, 0, 0, 0.08), 0 4px 6px -4px rgba(0, 0, 0, 0.08)"},zIndex:{dropdown:1e3,modal:1050,popover:1060,tooltip:1070,notification:1080},transition:{fast:"150ms cubic-bezier(0.4, 0, 0.2, 1)",base:"200ms cubic-bezier(0.4, 0, 0.2, 1)",slow:"300ms cubic-bezier(0.4, 0, 0.2, 1)"}},b=r=>r?t.merge(u,r):u,g=n.default.createContext({colors:c(),constants:b(),mode:"light"});exports.LegacyTemboThemeProvider=({children:e,mode:t="light",colors:a,constants:i,themeOverrides:l})=>{const d=n.default.useMemo(()=>c(a,t),[a,t]),s=n.default.useMemo(()=>b(i),[i]),u=n.default.useMemo(()=>((r,e,o,t)=>{var a,n;const i={token:{colorPrimary:r.primary.main,colorPrimaryHover:r.primary.hover,colorPrimaryActive:r.primary.active,colorPrimaryBorder:r.primary.main,colorText:r.text.primary,colorTextSecondary:r.text.secondary,colorTextTertiary:r.text.tertiary,colorTextQuaternary:r.text.quaternary,colorTextDisabled:r.text.disabled,colorBgBase:r.surface.background,colorBgContainer:r.surface.main,colorBgElevated:r.surface.elevated,colorBgLayout:r.surface.background,colorBgSpotlight:r.surface.hover,colorBorder:r.border.main,colorBorderSecondary:r.border.light,colorSplit:r.border.divider,colorSuccess:r.success.main,colorSuccessBg:r.success.bg,colorSuccessBorder:r.success.border,colorSuccessText:r.success.text,colorError:r.error.main,colorErrorBg:r.error.bg,colorErrorBorder:r.error.border,colorErrorText:r.error.text,colorWarning:r.warning.main,colorWarningBg:r.warning.bg,colorWarningBorder:r.warning.border,colorWarningText:r.warning.text,colorInfo:r.info.main,colorInfoBg:r.info.bg,colorInfoBorder:r.info.border,colorInfoText:r.info.text,colorLink:r.utility.link,colorLinkHover:r.utility.linkHover,colorLinkActive:r.utility.linkActive,borderRadius:e.radius.base,borderRadiusLG:e.radius.lg,borderRadiusSM:e.radius.sm,borderRadiusXS:6,boxShadow:e.shadow.base,boxShadowSecondary:e.shadow.card,boxShadowTertiary:e.shadow.elevated,fontFamily:e.typography.fontFamily,fontSize:e.typography.fontSize.base,fontSizeHeading1:38,fontSizeHeading2:30,fontSizeHeading3:24,fontSizeHeading4:20,fontSizeHeading5:e.typography.fontSize.lg,fontWeightStrong:e.typography.fontWeight.medium,lineHeight:e.typography.lineHeight.base,lineHeightHeading1:1.21,lineHeightHeading2:1.27,lineHeightHeading3:1.33,lineHeightHeading4:1.4,lineHeightHeading5:1.5},components:{Button:{colorPrimary:r.components.button.primary.bg,colorPrimaryHover:r.components.button.primary.hover,colorPrimaryActive:r.action.active,colorPrimaryBorder:r.components.button.primary.bg,primaryColor:r.components.button.primary.text,colorBorder:r.components.button.default.border,colorBgContainer:r.components.button.default.bg,colorText:r.components.button.default.text,defaultBg:r.components.button.default.bg,defaultBorderColor:r.components.button.default.border,defaultColor:r.components.button.default.text,primaryShadow:"none",defaultShadow:"none",dangerShadow:"none",fontWeight:e.typography.fontWeight.medium,controlHeight:32,paddingContentHorizontal:e.spacing.lg,borderRadius:e.radius.button,borderRadiusLG:e.radius.button,borderRadiusSM:e.radius.sm+8},Input:{colorBgContainer:r.components.input.bg,colorBorder:r.components.input.border,hoverBorderColor:r.components.input.borderHover,activeBorderColor:r.components.input.borderFocus,colorPrimaryHover:r.components.input.borderFocus,colorTextPlaceholder:r.components.input.placeholder,borderRadius:e.radius.input,borderRadiusLG:e.radius.base,borderRadiusSM:e.radius.sm},Select:{colorBgContainer:r.components.input.bg,colorBorder:r.components.input.border,colorTextPlaceholder:r.components.input.placeholder,colorPrimaryHover:r.action.main,hoverBorderColor:r.components.input.borderHover,activeBorderColor:r.components.input.borderFocus,optionSelectedBg:r.action.main,optionSelectedColor:r.action.contrast,optionActiveBg:r.surface.hover,colorBgElevated:r.neutral.brightest,controlItemBgHover:r.surface.hover,boxShadowSecondary:e.shadow.elevated,borderRadius:e.radius.input,borderRadiusLG:e.radius.base,borderRadiusSM:e.radius.sm},Checkbox:{colorPrimary:r.action.main,colorPrimaryHover:r.action.hover,colorBorder:r.border.strong,borderRadiusSM:6},Radio:{colorPrimary:r.action.main,colorPrimaryHover:r.action.hover,colorBorder:r.border.strong},Switch:{colorPrimary:r.action.main,colorPrimaryHover:r.action.hover,colorTextQuaternary:r.text.quaternary},Form:{labelColor:r.text.primary,labelRequiredMarkColor:r.error.main,labelFontSize:e.typography.fontSize.base,itemMarginBottom:e.spacing.lg},DatePicker:{colorBgContainer:r.components.input.bg,colorBorder:r.components.input.border,hoverBorderColor:r.components.input.borderHover,activeBorderColor:r.components.input.borderFocus,colorPrimary:r.action.main,borderRadius:e.radius.input},InputNumber:{borderRadius:e.radius.input},Table:{colorBgContainer:r.components.table.bg,headerBg:r.components.table.headerBg,headerColor:r.components.table.headerText,borderColor:r.components.table.border,headerSplitColor:r.components.table.border,rowHoverBg:r.components.table.rowHover,rowSelectedBg:r.action.light,rowSelectedHoverBg:r.action.lighter,colorText:r.text.primary,colorTextHeading:r.text.primary,borderRadius:e.radius.base,borderRadiusLG:e.radius.lg},Card:{colorBgContainer:r.surface.main,colorBorder:r.border.main,colorBorderSecondary:r.border.light,boxShadowTertiary:e.shadow.card,borderRadius:e.radius.card,borderRadiusLG:e.radius.lg+4},Statistic:{contentFontSize:24,colorTextHeading:r.text.primary},Descriptions:{labelBg:r.surface.hover,colorTextSecondary:r.text.secondary,itemPaddingBottom:e.spacing.md},Badge:{colorError:r.error.main,colorSuccess:r.success.main,colorInfo:r.info.main,colorInfoBg:r.info.bg,borderRadiusSM:e.radius.input},Tag:{colorBorder:r.border.main,defaultBg:r.surface.hover,borderRadiusSM:e.radius.sm},Timeline:{dotBg:r.surface.main,tailColor:r.border.main},Alert:{colorSuccessBg:r.success.bg,colorSuccessBorder:r.success.border,colorErrorBg:r.error.bg,colorErrorBorder:r.error.border,colorWarningBg:r.warning.bg,colorWarningBorder:r.warning.border,colorInfoBg:r.info.bg,colorInfoBorder:r.info.border,borderRadiusLG:e.radius.base},Modal:{contentBg:r.surface.elevated,headerBg:r.surface.elevated,colorBgMask:"rgba(0, 0, 0, 0.45)",borderRadiusLG:e.radius.lg},Drawer:{colorBgElevated:r.surface.elevated,colorBgMask:"rgba(0, 0, 0, 0.45)",borderRadiusLG:e.radius.lg},Notification:{colorBgElevated:r.neutral.brightest,borderRadiusLG:e.radius.base},Message:{contentBg:r.neutral.brightest,borderRadiusLG:e.radius.base},Spin:{colorPrimary:r.primary.main},Progress:{colorSuccess:r.success.main,colorError:r.error.main,defaultColor:r.primary.main,borderRadius:100},Skeleton:{colorFill:r.neutral[2],colorFillContent:r.neutral[1],borderRadiusSM:e.radius.sm},Menu:{itemBg:"transparent",itemColor:r.text.primary,itemHoverBg:r.surface.hover,itemSelectedBg:r.action.lighter,itemSelectedColor:r.action.main,itemActiveBg:r.action.lighter,subMenuItemBg:"transparent",darkItemBg:r.components.sidebar.bg,darkSubMenuItemBg:r.components.sidebar.bg,darkItemColor:r.components.sidebar.text,darkItemHoverBg:r.components.sidebar.hover,darkItemSelectedBg:r.components.sidebar.selected,darkItemSelectedColor:r.primary.contrast,borderRadius:e.radius.input,borderRadiusLG:e.radius.base},Breadcrumb:{linkColor:r.utility.link,linkHoverColor:r.utility.linkHover,itemColor:r.text.secondary,lastItemColor:r.text.primary,separatorColor:r.text.tertiary,borderRadiusSM:6},Pagination:{colorPrimary:r.primary.main,colorPrimaryHover:r.primary.hover,itemActiveBg:r.primary.main,borderRadius:e.radius.sm},Steps:{colorPrimary:r.action.main,colorText:r.text.secondary,colorTextDescription:r.text.tertiary,borderRadiusSM:100},Tabs:{colorPrimary:r.action.main,colorBorderSecondary:r.border.main,itemColor:r.text.secondary,itemHoverColor:r.action.hover,itemSelectedColor:r.action.main,inkBarColor:r.action.main,borderRadiusSM:e.radius.sm},Layout:{colorBgBody:r.surface.background,colorBgHeader:r.neutral.brightest,colorBgTrigger:r.components.sidebar.bg,siderBg:r.components.sidebar.bg,headerBg:r.neutral.brightest,borderRadiusLG:0},Divider:{colorSplit:r.border.divider},Typography:{colorText:r.text.primary,colorTextSecondary:r.text.secondary,colorTextDescription:r.text.tertiary},Tooltip:{colorBgSpotlight:r.neutral.darkest,colorTextLightSolid:r.neutral.brightest,borderRadius:e.radius.sm},Popover:{colorBgElevated:r.neutral.brightest,borderRadiusLG:e.radius.base},Dropdown:{boxShadowSecondary:e.shadow.dropdown},Calendar:{colorBgContainer:r.neutral.brightest,colorPrimary:r.action.main,borderRadiusLG:e.radius.base}}};return t?Object.assign(Object.assign({},i),{token:Object.assign(Object.assign({},i.token),null!==(a=t.token)&&void 0!==a?a:{}),components:Object.assign(Object.assign({},i.components),null!==(n=t.components)&&void 0!==n?n:{})}):i})(d,s,0,l),[d,s,t,l]),m=n.default.useMemo(()=>({colors:d,constants:s,mode:t}),[d,s,t]);return r.jsxRuntimeExports.jsx(g.Provider,{value:m,children:r.jsxRuntimeExports.jsx(o.ConfigProvider,{theme:u,children:e})})},exports.buildColorPalette=c,exports.buildUIConstants=b,exports.defaultColorPalette=s,exports.defaultUIConstants=u,exports.useTemboTheme=()=>n.default.useContext(g);
2
+ //# sourceMappingURL=theme-provider-BJjIEVwv.js.map