@temboplus/frontend-react-core 0.1.3-beta.15 → 0.1.3-beta.17

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 (36) hide show
  1. package/dist/alerts/index.cjs.js +1 -1
  2. package/dist/alerts/index.js +1 -1
  3. package/dist/dialogs/index.cjs.js +1 -1
  4. package/dist/dialogs/index.js +1 -1
  5. package/dist/features/notifications/toast-config.js +4 -4
  6. package/dist/index.cjs.js +1 -1
  7. package/dist/index.esm.js +1 -1
  8. package/dist/notifications/index.cjs.js +1 -1
  9. package/dist/notifications/index.js +1 -1
  10. package/dist/tembo-notify-BenAoNw-.js +3 -0
  11. package/dist/tembo-notify-BenAoNw-.js.map +1 -0
  12. package/dist/tembo-notify-CuJvpJPy.js +3 -0
  13. package/dist/tembo-notify-CuJvpJPy.js.map +1 -0
  14. package/dist/theme/index.cjs.js +1 -1
  15. package/dist/theme/index.js +1 -1
  16. package/dist/theme/theme-config.d.ts +6 -5
  17. package/dist/theme/theme-config.js +211 -124
  18. package/dist/theme/tokens/colors.d.ts +23 -99
  19. package/dist/theme/tokens/colors.js +217 -228
  20. package/dist/{theme-provider-D3-cveEd.js → theme-provider-B7KHfeIX.js} +2 -2
  21. package/dist/{theme-provider-D3-cveEd.js.map → theme-provider-B7KHfeIX.js.map} +1 -1
  22. package/dist/theme-provider-CfK4hGOK.js +11 -0
  23. package/dist/theme-provider-CfK4hGOK.js.map +1 -0
  24. package/dist/{theme-provider-BJjIEVwv.js → theme-provider-DC5n7LPe.js} +2 -2
  25. package/dist/{theme-provider-BJjIEVwv.js.map → theme-provider-DC5n7LPe.js.map} +1 -1
  26. package/dist/theme-provider-Dsjd08Jn.js +11 -0
  27. package/dist/theme-provider-Dsjd08Jn.js.map +1 -0
  28. package/package.json +1 -1
  29. package/dist/tembo-notify-60Hk7l5W.js +0 -3
  30. package/dist/tembo-notify-60Hk7l5W.js.map +0 -1
  31. package/dist/tembo-notify-BEEB2wEp.js +0 -3
  32. package/dist/tembo-notify-BEEB2wEp.js.map +0 -1
  33. package/dist/theme-provider-CpPw8sUs.js +0 -11
  34. package/dist/theme-provider-CpPw8sUs.js.map +0 -1
  35. package/dist/theme-provider-xDEswLd1.js +0 -11
  36. package/dist/theme-provider-xDEswLd1.js.map +0 -1
@@ -2,34 +2,35 @@
2
2
  * Build comprehensive Ant Design theme from Tembo tokens
3
3
  *
4
4
  * Design principles:
5
- * - Set sizing/spacing once at token level, not per component
6
- * - Components inherit global tokens unless they need specific overrides
7
- * - Bold rounded corners (24px buttons/inputs, 28px cards, 32px modals)
8
- * - Zero shadows on flat elements (buttons, inputs)
9
- * - Gentle shadows on elevated elements (cards, modals, popovers)
5
+ * - Monochrome-first: Primary actions use neutral[8] (near-black/near-white)
6
+ * - Single accent: Blue for links, focus states, and interactive feedback
7
+ * - Semantic colors: Only for critical feedback (success, error, warning)
8
+ * - Consistent spacing: Set once at token level, inherited by components
9
+ * - Bold rounded corners: 24px inputs/buttons, 28px cards, 32px modals
10
+ * - Smart shadows: None on flat elements, subtle on elevated surfaces
10
11
  */
11
12
  export const buildAntDTheme = (colors, constants) => {
12
13
  const isDark = colors.mode === 'dark';
13
14
  return {
14
15
  token: {
15
16
  // ============================================
16
- // COLOR TOKENS
17
+ // COLOR SYSTEM
17
18
  // ============================================
18
- // Primary (monochrome - using action tokens implicitly)
19
+ // Primary = Monochrome actions (near-black/near-white)
19
20
  colorPrimary: colors.action.default,
20
21
  colorPrimaryHover: colors.action.hover,
21
22
  colorPrimaryActive: colors.action.default,
22
- colorPrimaryBg: colors.neutral[2],
23
+ colorPrimaryBg: colors.neutral[3],
23
24
  colorPrimaryBgHover: colors.surface.interactive,
24
25
  colorPrimaryBorder: colors.action.default,
25
- colorPrimaryBorderHover: colors.action.default,
26
+ colorPrimaryBorderHover: colors.action.hover,
26
27
  colorPrimaryText: colors.action.default,
27
- colorPrimaryTextHover: colors.text.secondary,
28
+ colorPrimaryTextHover: colors.action.hover,
28
29
  colorPrimaryTextActive: colors.action.default,
29
- // Links (standard web blue + focus rings)
30
- colorLink: colors.link.default,
31
- colorLinkHover: colors.link.hover,
32
- colorLinkActive: colors.link.active,
30
+ // Links = Accent blue (only color in monochrome system)
31
+ colorLink: colors.accent.default,
32
+ colorLinkHover: colors.accent.hover,
33
+ colorLinkActive: colors.accent.active,
33
34
  // Text hierarchy
34
35
  colorText: colors.text.primary,
35
36
  colorTextSecondary: colors.text.secondary,
@@ -49,20 +50,19 @@ export const buildAntDTheme = (colors, constants) => {
49
50
  colorBgSpotlight: colors.surface.interactive,
50
51
  colorBgMask: isDark ? 'rgba(0, 0, 0, 0.65)' : 'rgba(0, 0, 0, 0.45)',
51
52
  colorBgTextHover: colors.surface.interactive,
52
- colorBgTextActive: colors.surface.interactive,
53
- // Disabled backgrounds
53
+ colorBgTextActive: colors.surface.selected,
54
54
  colorBgContainerDisabled: colors.action.disabled,
55
55
  // Borders
56
56
  colorBorder: colors.border.default,
57
57
  colorBorderBg: colors.surface.card,
58
58
  colorBorderSecondary: colors.border.subtle,
59
59
  colorSplit: colors.border.subtle,
60
- // Fill colors
61
- colorFill: colors.neutral[2],
62
- colorFillSecondary: colors.neutral[2],
60
+ // Fill colors (for backgrounds, progress bars, etc.)
61
+ colorFill: colors.neutral[3],
62
+ colorFillSecondary: colors.neutral[3],
63
63
  colorFillTertiary: colors.neutral[2],
64
64
  colorFillQuaternary: colors.surface.interactive,
65
- // Semantic colors
65
+ // Semantic colors - modern, vibrant
66
66
  colorSuccess: colors.semantic.success.main,
67
67
  colorSuccessBg: colors.semantic.success.subtle,
68
68
  colorSuccessBgHover: colors.semantic.success.subtle,
@@ -119,7 +119,7 @@ export const buildAntDTheme = (colors, constants) => {
119
119
  lineHeightHeading4: constants.typography.lineHeight.tight,
120
120
  lineHeightHeading5: constants.typography.lineHeight.tight,
121
121
  // ============================================
122
- // SPACING & SIZING - SET ONCE HERE
122
+ // SPACING & SIZING
123
123
  // ============================================
124
124
  padding: constants.spacing[4],
125
125
  paddingXS: constants.spacing[2],
@@ -132,24 +132,24 @@ export const buildAntDTheme = (colors, constants) => {
132
132
  marginLG: constants.spacing[5],
133
133
  marginXL: constants.spacing[6],
134
134
  marginXXL: constants.spacing[8],
135
- // Control heights - SET ONCE, components inherit
136
- controlHeight: 40, // Default height for all controls
137
- controlHeightLG: 48, // Large variant
138
- controlHeightSM: 32, // Small variant
139
- controlHeightXS: 24, // Extra small variant
135
+ // Control heights - consistent across all inputs
136
+ controlHeight: 40,
137
+ controlHeightLG: 48,
138
+ controlHeightSM: 32,
139
+ controlHeightXS: 24,
140
140
  // ============================================
141
141
  // BORDER RADIUS - Bold rounded corners
142
142
  // ============================================
143
- borderRadius: constants.radius.base, // 24px - default bold
144
- borderRadiusLG: constants.radius.md, // 28px
145
- borderRadiusSM: constants.radius.sm, // 12px
146
- borderRadiusXS: constants.radius.sm, // 12px
143
+ borderRadius: constants.radius.base,
144
+ borderRadiusLG: constants.radius.md,
145
+ borderRadiusSM: constants.radius.sm,
146
+ borderRadiusXS: constants.radius.sm,
147
147
  // ============================================
148
- // SHADOWS - Zero on flat, gentle on elevated
148
+ // SHADOWS - Flat elements have none
149
149
  // ============================================
150
- boxShadow: constants.shadow.none, // Default: no shadow
151
- boxShadowSecondary: constants.shadow.none, // No shadow
152
- boxShadowTertiary: constants.shadow.card, // Gentle card shadow
150
+ boxShadow: constants.shadow.none,
151
+ boxShadowSecondary: constants.shadow.none,
152
+ boxShadowTertiary: constants.shadow.card,
153
153
  // ============================================
154
154
  // MOTION
155
155
  // ============================================
@@ -166,33 +166,40 @@ export const buildAntDTheme = (colors, constants) => {
166
166
  },
167
167
  components: {
168
168
  // ========================================
169
- // BUTTON - Monochrome actions, zero shadow
169
+ // BUTTONS - Monochrome actions
170
170
  // ========================================
171
171
  Button: {
172
- // Action colors
172
+ // Monochrome primary button (near-black/near-white)
173
173
  colorPrimary: colors.action.default,
174
174
  colorPrimaryHover: colors.action.hover,
175
175
  colorPrimaryActive: colors.action.default,
176
176
  colorPrimaryBorder: colors.action.default,
177
177
  primaryColor: colors.action.contrast,
178
- // Disabled
179
- colorBgContainerDisabled: colors.action.disabled,
180
- colorTextDisabled: colors.text.secondary,
181
- borderColorDisabled: colors.action.disabled,
182
- // Default button
178
+ // Default button (outlined)
183
179
  defaultBg: colors.surface.card,
184
180
  defaultBorderColor: colors.border.default,
185
181
  defaultColor: colors.text.primary,
186
182
  defaultHoverBg: colors.surface.interactive,
187
183
  defaultHoverBorderColor: colors.border.strong,
184
+ defaultHoverColor: colors.text.primary,
185
+ defaultActiveBg: colors.surface.selected,
188
186
  defaultActiveBorderColor: colors.action.default,
189
- // Link button
190
- colorLink: colors.link.default,
191
- colorLinkHover: colors.link.hover,
192
- colorLinkActive: colors.link.active,
193
- // Danger button
187
+ defaultActiveColor: colors.action.default,
188
+ // Link button (uses accent color)
189
+ colorLink: colors.accent.default,
190
+ colorLinkHover: colors.accent.hover,
191
+ colorLinkActive: colors.accent.active,
192
+ // Text button
193
+ textHoverBg: colors.surface.interactive,
194
+ // Danger button (uses semantic red)
194
195
  dangerColor: colors.semantic.error.main,
195
- // Zero shadows on all buttons
196
+ colorErrorHover: colors.semantic.error.main,
197
+ colorErrorActive: colors.semantic.error.main,
198
+ // Disabled state
199
+ colorBgContainerDisabled: colors.action.disabled,
200
+ colorTextDisabled: colors.text.disabled,
201
+ borderColorDisabled: colors.action.disabled,
202
+ // No shadows on buttons (flat design)
196
203
  primaryShadow: 'none',
197
204
  defaultShadow: 'none',
198
205
  dangerShadow: 'none',
@@ -200,32 +207,34 @@ export const buildAntDTheme = (colors, constants) => {
200
207
  borderRadius: constants.radius.button,
201
208
  borderRadiusLG: constants.radius.button,
202
209
  borderRadiusSM: constants.radius.button,
210
+ // Typography
211
+ fontWeight: constants.typography.fontWeight.medium,
203
212
  // Padding
204
213
  paddingContentHorizontal: constants.spacing[4],
205
214
  paddingContentVertical: constants.spacing[2],
206
- // Typography
207
- fontWeight: constants.typography.fontWeight.medium,
208
- // Heights inherited from token.controlHeight automatically ✅
215
+ // Heights inherited from token.controlHeight ✅
209
216
  },
210
217
  // ========================================
211
- // INPUTS - Bold rounded, zero shadow, blue focus ring
218
+ // INPUTS - Blue accent for focus states
212
219
  // ========================================
213
220
  Input: {
214
- // Colors
215
- colorBgContainer: colors.surface.card,
221
+ colorBgContainer: colors.surface.input,
216
222
  colorBorder: colors.border.default,
217
223
  colorText: colors.text.primary,
218
224
  colorTextPlaceholder: colors.text.tertiary,
219
- // Icons - subtle
225
+ // Icons
220
226
  colorIcon: colors.text.tertiary,
221
227
  colorIconHover: colors.text.secondary,
222
- // States
228
+ // Hover state
229
+ hoverBg: colors.surface.card,
223
230
  hoverBorderColor: colors.border.strong,
224
- activeBorderColor: colors.link.default,
225
- activeShadow: `0 0 0 2px ${colors.semantic.info.subtle}`, // Blue focus ring
226
- // Error/warning rings
227
- errorActiveShadow: `0 0 0 2px ${colors.semantic.error.subtle}`,
228
- warningActiveShadow: `0 0 0 2px ${colors.semantic.warning.subtle}`,
231
+ // Focus state - blue accent ring
232
+ activeBg: colors.surface.card,
233
+ activeBorderColor: colors.accent.default,
234
+ activeShadow: `0 0 0 2px ${colors.accent.subtle}`,
235
+ // Disabled
236
+ colorBgContainerDisabled: colors.surface.nested,
237
+ colorTextDisabled: colors.text.disabled,
229
238
  // Bold rounded
230
239
  borderRadius: constants.radius.input,
231
240
  borderRadiusLG: constants.radius.input,
@@ -234,25 +243,29 @@ export const buildAntDTheme = (colors, constants) => {
234
243
  paddingBlock: constants.spacing[2],
235
244
  paddingInline: constants.spacing[3],
236
245
  paddingInlineLG: constants.spacing[4],
237
- // Heights inherited from token.controlHeight automatically ✅
238
246
  },
239
247
  InputNumber: {
248
+ colorBgContainer: colors.surface.input,
240
249
  colorIcon: colors.text.tertiary,
241
250
  colorIconHover: colors.text.secondary,
242
- activeBorderColor: colors.link.default,
243
- activeShadow: `0 0 0 2px ${colors.semantic.info.subtle}`,
251
+ activeBorderColor: colors.accent.default,
252
+ activeShadow: `0 0 0 2px ${colors.accent.subtle}`,
244
253
  borderRadius: constants.radius.input,
245
254
  handleVisible: true,
246
255
  },
247
256
  Select: {
257
+ colorBgContainer: colors.surface.input,
248
258
  colorBgElevated: colors.surface.overlay,
249
259
  colorIcon: colors.text.tertiary,
250
260
  colorIconHover: colors.text.secondary,
251
- activeBorderColor: colors.link.default,
252
- boxShadow: `0 0 0 2px ${colors.semantic.info.subtle}`,
261
+ // Focus - blue accent
262
+ activeBorderColor: colors.accent.default,
263
+ boxShadow: `0 0 0 2px ${colors.accent.subtle}`,
264
+ // Options
253
265
  optionSelectedBg: colors.surface.selected,
254
266
  optionActiveBg: colors.surface.interactive,
255
267
  controlItemBgHover: colors.surface.interactive,
268
+ controlItemBgActive: colors.surface.selected,
256
269
  borderRadius: constants.radius.input,
257
270
  borderRadiusLG: constants.radius.input,
258
271
  borderRadiusSM: constants.radius.input,
@@ -260,59 +273,71 @@ export const buildAntDTheme = (colors, constants) => {
260
273
  boxShadowSecondary: constants.shadow.popover,
261
274
  },
262
275
  DatePicker: {
276
+ colorBgContainer: colors.surface.input,
263
277
  colorIcon: colors.text.tertiary,
264
278
  colorIconHover: colors.text.secondary,
265
- activeBorderColor: colors.link.default,
266
- activeShadow: `0 0 0 2px ${colors.semantic.info.subtle}`,
279
+ activeBorderColor: colors.accent.default,
280
+ activeShadow: `0 0 0 2px ${colors.accent.subtle}`,
267
281
  cellHoverBg: colors.surface.interactive,
268
- cellActiveWithRangeBg: colors.semantic.info.subtle,
269
- colorPrimary: colors.link.default,
282
+ cellActiveWithRangeBg: colors.accent.subtle,
283
+ colorPrimary: colors.accent.default,
270
284
  borderRadius: constants.radius.input,
271
285
  },
286
+ // ========================================
287
+ // FORM CONTROLS - Use accent for selected state
288
+ // ========================================
272
289
  Checkbox: {
273
- colorPrimary: colors.link.default,
274
- colorPrimaryHover: colors.link.hover,
290
+ colorPrimary: colors.accent.default,
291
+ colorPrimaryHover: colors.accent.hover,
292
+ colorPrimaryBorder: colors.border.default,
275
293
  borderRadiusSM: constants.radius.sm,
276
294
  },
277
295
  Radio: {
278
- colorPrimary: colors.link.default,
279
- colorPrimaryHover: colors.link.hover,
296
+ colorPrimary: colors.accent.default,
297
+ colorPrimaryHover: colors.accent.hover,
298
+ colorBorder: colors.border.default,
280
299
  },
281
300
  Switch: {
282
- colorPrimary: colors.link.default,
283
- colorPrimaryHover: colors.link.hover,
301
+ colorPrimary: colors.accent.default,
302
+ colorPrimaryHover: colors.accent.hover,
303
+ colorTextQuaternary: colors.neutral[4],
304
+ colorTextTertiary: colors.neutral[5],
284
305
  handleSize: 18,
285
306
  },
286
307
  Slider: {
287
- colorPrimary: colors.link.default,
288
- colorPrimaryBorder: colors.link.default,
289
- colorPrimaryBorderHover: colors.link.hover,
308
+ colorPrimary: colors.accent.default,
309
+ colorPrimaryBorder: colors.accent.default,
310
+ colorPrimaryBorderHover: colors.accent.hover,
290
311
  handleColor: colors.surface.card,
291
312
  handleActiveColor: colors.surface.card,
292
- railBg: colors.neutral[2],
293
- railHoverBg: colors.neutral[3],
294
- trackBg: colors.link.default,
295
- trackHoverBg: colors.link.hover,
313
+ railBg: colors.neutral[3],
314
+ railHoverBg: colors.neutral[4],
315
+ trackBg: colors.accent.default,
316
+ trackHoverBg: colors.accent.hover,
296
317
  dotBorderColor: colors.border.default,
297
- dotActiveBorderColor: colors.link.default,
318
+ dotActiveBorderColor: colors.accent.default,
298
319
  },
320
+ // ========================================
321
+ // FORM LAYOUT
322
+ // ========================================
299
323
  Form: {
300
324
  labelColor: colors.text.primary,
301
325
  labelFontSize: constants.typography.fontSize.base,
326
+ labelRequiredMarkColor: colors.semantic.error.main,
302
327
  itemMarginBottom: constants.spacing[4],
303
328
  verticalLabelPadding: `0 0 ${constants.spacing[2]}px`,
304
- labelRequiredMarkColor: colors.semantic.error.main,
305
329
  },
306
330
  // ========================================
307
331
  // DATA DISPLAY
308
332
  // ========================================
309
333
  Table: {
310
- // Colors
311
334
  colorBgContainer: colors.surface.card,
312
335
  headerBg: colors.surface.page,
313
336
  headerColor: colors.text.secondary,
337
+ colorText: colors.text.primary,
338
+ colorTextHeading: colors.text.secondary,
314
339
  borderColor: colors.border.subtle,
315
- // States
340
+ // Interactive states
316
341
  rowHoverBg: colors.surface.interactive,
317
342
  rowSelectedBg: colors.surface.selected,
318
343
  rowExpandedBg: colors.surface.nested,
@@ -321,21 +346,27 @@ export const buildAntDTheme = (colors, constants) => {
321
346
  borderRadiusLG: constants.radius.card,
322
347
  headerBorderRadius: constants.radius.card,
323
348
  // Padding
324
- cellPaddingBlock: constants.spacing[4],
349
+ cellPaddingBlock: constants.spacing[3],
325
350
  cellPaddingInline: constants.spacing[4],
326
351
  cellPaddingBlockSM: constants.spacing[2],
327
352
  cellPaddingInlineSM: constants.spacing[3],
353
+ // Typography
354
+ cellFontSize: constants.typography.fontSize.base,
355
+ headerSortActiveBg: colors.surface.interactive,
328
356
  },
329
357
  Descriptions: {
330
358
  labelBg: colors.surface.page,
331
359
  titleColor: colors.text.primary,
332
360
  contentColor: colors.text.primary,
333
361
  extraColor: colors.text.secondary,
334
- itemPaddingBottom: constants.spacing[4],
362
+ colorSplit: colors.border.subtle,
363
+ itemPaddingBottom: constants.spacing[3],
335
364
  },
336
365
  Card: {
337
366
  colorBgContainer: colors.surface.card,
338
367
  colorBorderSecondary: colors.border.default,
368
+ colorTextHeading: colors.text.primary,
369
+ colorTextDescription: colors.text.secondary,
339
370
  // Gentle shadow on cards
340
371
  boxShadowTertiary: constants.shadow.card,
341
372
  // Smooth rounded
@@ -345,17 +376,19 @@ export const buildAntDTheme = (colors, constants) => {
345
376
  paddingLG: constants.spacing[6],
346
377
  },
347
378
  Statistic: {
348
- titleFontSize: constants.typography.fontSize.base,
379
+ titleFontSize: constants.typography.fontSize.sm,
349
380
  contentFontSize: constants.typography.fontSize['4xl'],
350
381
  },
351
382
  Timeline: {
352
383
  tailColor: colors.border.default,
353
384
  tailWidth: 2,
354
385
  dotBg: colors.surface.card,
355
- itemPaddingBottom: constants.spacing[5],
386
+ dotBorderWidth: 2,
387
+ itemPaddingBottom: constants.spacing[4],
356
388
  },
357
389
  Tag: {
358
390
  defaultBg: colors.neutral[2],
391
+ defaultColor: colors.text.primary,
359
392
  borderRadiusSM: constants.radius.sm,
360
393
  fontSize: constants.typography.fontSize.sm,
361
394
  fontSizeSM: constants.typography.fontSize.xs,
@@ -364,20 +397,22 @@ export const buildAntDTheme = (colors, constants) => {
364
397
  colorBorderBg: colors.surface.card,
365
398
  colorError: colors.semantic.error.main,
366
399
  colorSuccess: colors.semantic.success.main,
367
- colorInfo: colors.semantic.info.main,
400
+ colorInfo: colors.accent.default,
368
401
  colorWarning: colors.semantic.warning.main,
369
402
  textFontSize: constants.typography.fontSize.xs,
403
+ textFontWeight: constants.typography.fontWeight.medium,
370
404
  },
371
405
  Avatar: {
372
- colorBgContainer: colors.neutral[2],
406
+ colorBgContainer: colors.neutral[3],
407
+ colorTextPlaceholder: colors.text.secondary,
373
408
  borderRadius: constants.radius.avatar,
374
409
  groupOverlapping: -8,
375
410
  groupSpace: constants.spacing[1],
376
411
  },
377
412
  Calendar: {
378
413
  colorBgContainer: colors.surface.card,
379
- colorPrimary: colors.link.default,
380
- itemActiveBg: colors.semantic.info.subtle,
414
+ colorPrimary: colors.accent.default,
415
+ itemActiveBg: colors.accent.subtle,
381
416
  borderRadius: constants.radius.card,
382
417
  },
383
418
  Collapse: {
@@ -390,13 +425,13 @@ export const buildAntDTheme = (colors, constants) => {
390
425
  Tree: {
391
426
  nodeHoverBg: colors.surface.interactive,
392
427
  nodeSelectedBg: colors.surface.selected,
428
+ directoryNodeSelectedBg: colors.surface.selected,
393
429
  borderRadius: constants.radius.sm,
394
430
  },
395
431
  // ========================================
396
432
  // FEEDBACK - Elevated with shadows
397
433
  // ========================================
398
434
  Alert: {
399
- // Semantic colors
400
435
  colorSuccessBg: colors.semantic.success.subtle,
401
436
  colorSuccessBorder: colors.semantic.success.main,
402
437
  colorSuccessText: colors.semantic.success.main,
@@ -411,11 +446,14 @@ export const buildAntDTheme = (colors, constants) => {
411
446
  colorInfoText: colors.semantic.info.main,
412
447
  defaultPadding: `${constants.spacing[3]}px ${constants.spacing[4]}px`,
413
448
  borderRadiusLG: constants.radius.card,
449
+ withDescriptionPadding: `${constants.spacing[4]}px ${constants.spacing[5]}px`,
414
450
  },
415
451
  Modal: {
416
452
  contentBg: colors.surface.overlay,
417
453
  headerBg: colors.surface.overlay,
418
454
  footerBg: colors.surface.overlay,
455
+ titleColor: colors.text.primary,
456
+ titleFontSize: constants.typography.fontSize.xl,
419
457
  colorBgMask: isDark ? 'rgba(0, 0, 0, 0.65)' : 'rgba(0, 0, 0, 0.45)',
420
458
  // Prominent shadow
421
459
  boxShadow: constants.shadow.modal,
@@ -424,6 +462,7 @@ export const buildAntDTheme = (colors, constants) => {
424
462
  },
425
463
  Drawer: {
426
464
  colorBgElevated: colors.surface.overlay,
465
+ colorText: colors.text.primary,
427
466
  colorBgMask: isDark ? 'rgba(0, 0, 0, 0.65)' : 'rgba(0, 0, 0, 0.45)',
428
467
  borderRadiusLG: constants.radius.modal,
429
468
  footerPaddingBlock: constants.spacing[4],
@@ -431,6 +470,8 @@ export const buildAntDTheme = (colors, constants) => {
431
470
  },
432
471
  Notification: {
433
472
  colorBgElevated: colors.surface.overlay,
473
+ colorText: colors.text.primary,
474
+ colorTextHeading: colors.text.primary,
434
475
  // Shadow on notification
435
476
  boxShadow: constants.shadow.popover,
436
477
  borderRadiusLG: constants.radius.card,
@@ -445,14 +486,16 @@ export const buildAntDTheme = (colors, constants) => {
445
486
  },
446
487
  Popconfirm: {
447
488
  colorBgElevated: colors.surface.overlay,
489
+ colorText: colors.text.primary,
490
+ colorTextHeading: colors.text.primary,
448
491
  boxShadowSecondary: constants.shadow.popover,
449
492
  borderRadiusLG: constants.radius.card,
450
493
  },
451
494
  Progress: {
452
- defaultColor: colors.link.default,
495
+ defaultColor: colors.accent.default,
453
496
  colorSuccess: colors.semantic.success.main,
454
497
  colorError: colors.semantic.error.main,
455
- remainingColor: colors.neutral[2],
498
+ remainingColor: colors.neutral[3],
456
499
  borderRadius: 100,
457
500
  lineBorderRadius: 100,
458
501
  },
@@ -460,68 +503,85 @@ export const buildAntDTheme = (colors, constants) => {
460
503
  titleFontSize: constants.typography.fontSize['3xl'],
461
504
  subtitleFontSize: constants.typography.fontSize.base,
462
505
  iconFontSize: constants.typography.fontSize['5xl'],
506
+ colorSuccess: colors.semantic.success.main,
507
+ colorError: colors.semantic.error.main,
508
+ colorInfo: colors.accent.default,
509
+ colorWarning: colors.semantic.warning.main,
463
510
  },
464
511
  Skeleton: {
465
512
  colorFill: colors.neutral[2],
466
- colorFillContent: colors.neutral[1],
513
+ colorFillContent: colors.neutral[3],
467
514
  borderRadiusSM: constants.radius.sm,
468
515
  },
469
516
  Spin: {
470
- colorPrimary: colors.link.default,
517
+ colorPrimary: colors.accent.default,
471
518
  },
472
519
  // ========================================
473
- // NAVIGATION
520
+ // NAVIGATION - Accent for active states
474
521
  // ========================================
475
522
  Menu: {
476
523
  itemBg: 'transparent',
477
524
  itemColor: colors.text.primary,
478
525
  itemHoverBg: colors.surface.interactive,
526
+ itemHoverColor: colors.text.primary,
479
527
  itemSelectedBg: colors.surface.selected,
528
+ itemSelectedColor: colors.accent.default,
529
+ itemActiveBg: colors.surface.selected,
480
530
  // Dark sidebar
481
531
  darkItemBg: colors.absolute.black,
482
532
  darkSubMenuItemBg: colors.absolute.black,
483
533
  darkItemColor: colors.absolute.white,
484
534
  darkItemHoverBg: 'rgba(255, 255, 255, 0.08)',
485
- darkItemSelectedBg: colors.link.default,
535
+ darkItemSelectedBg: colors.accent.default,
486
536
  darkItemSelectedColor: colors.absolute.white,
487
- itemBorderRadius: constants.radius.input,
488
- itemPaddingInline: constants.spacing[4],
537
+ itemBorderRadius: constants.radius.sm,
538
+ itemMarginInline: constants.spacing[1],
539
+ itemPaddingInline: constants.spacing[3],
489
540
  },
490
541
  Breadcrumb: {
491
542
  itemColor: colors.text.secondary,
492
543
  lastItemColor: colors.text.primary,
493
- linkColor: colors.link.default,
494
- linkHoverColor: colors.link.hover,
544
+ linkColor: colors.accent.default,
545
+ linkHoverColor: colors.accent.hover,
495
546
  separatorColor: colors.text.tertiary,
496
547
  separatorMargin: constants.spacing[2],
548
+ fontSize: constants.typography.fontSize.sm,
497
549
  },
498
550
  Pagination: {
499
- colorPrimary: colors.link.default,
500
- colorPrimaryHover: colors.link.hover,
501
- itemActiveBg: colors.link.default,
551
+ colorPrimary: colors.accent.default,
552
+ colorPrimaryHover: colors.accent.hover,
553
+ itemActiveBg: colors.accent.default,
554
+ itemBg: colors.surface.card,
555
+ itemLinkBg: colors.surface.card,
556
+ itemInputBg: colors.surface.card,
502
557
  borderRadius: constants.radius.sm,
503
558
  },
504
559
  Steps: {
505
- colorPrimary: colors.link.default,
560
+ colorPrimary: colors.accent.default,
506
561
  colorText: colors.text.secondary,
507
562
  colorTextDescription: colors.text.tertiary,
563
+ colorFillContent: colors.neutral[3],
508
564
  },
509
565
  Tabs: {
510
- colorPrimary: colors.link.default,
566
+ colorPrimary: colors.accent.default,
511
567
  itemColor: colors.text.secondary,
512
- itemHoverColor: colors.link.hover,
513
- itemSelectedColor: colors.link.default,
514
- inkBarColor: colors.link.default,
568
+ itemHoverColor: colors.accent.hover,
569
+ itemSelectedColor: colors.accent.default,
570
+ itemActiveColor: colors.accent.default,
571
+ inkBarColor: colors.accent.default,
572
+ colorBgContainer: colors.surface.card,
515
573
  cardPadding: `${constants.spacing[2]}px ${constants.spacing[4]}px`,
516
574
  horizontalItemPadding: `${constants.spacing[3]}px 0`,
575
+ horizontalItemGutter: constants.spacing[8],
517
576
  },
518
577
  Anchor: {
519
- colorPrimary: colors.link.default,
578
+ colorPrimary: colors.accent.default,
520
579
  linkPaddingBlock: constants.spacing[1],
521
580
  linkPaddingInlineStart: constants.spacing[4],
522
581
  },
523
582
  Dropdown: {
524
583
  colorBgElevated: colors.surface.overlay,
584
+ colorText: colors.text.primary,
525
585
  controlItemBgHover: colors.surface.interactive,
526
586
  controlItemBgActive: colors.surface.selected,
527
587
  // Shadow on dropdown
@@ -535,30 +595,35 @@ export const buildAntDTheme = (colors, constants) => {
535
595
  Layout: {
536
596
  colorBgBody: colors.surface.page,
537
597
  colorBgHeader: colors.surface.card,
598
+ colorBgTrigger: colors.surface.interactive,
538
599
  headerBg: colors.surface.card,
600
+ headerColor: colors.text.primary,
539
601
  siderBg: colors.absolute.black,
602
+ triggerBg: colors.surface.interactive,
603
+ triggerColor: colors.text.primary,
540
604
  headerPadding: `0 ${constants.spacing[6]}px`,
541
605
  footerPadding: `${constants.spacing[6]}px ${constants.spacing[12]}px`,
542
606
  },
543
607
  Divider: {
544
608
  colorSplit: colors.border.subtle,
545
609
  colorText: colors.text.tertiary,
610
+ colorTextHeading: colors.text.secondary,
546
611
  verticalMarginInline: constants.spacing[2],
547
612
  },
548
613
  // ========================================
549
- // OTHER
614
+ // OVERLAYS
550
615
  // ========================================
551
616
  Typography: {
552
617
  colorText: colors.text.primary,
553
618
  colorTextSecondary: colors.text.secondary,
554
- colorLink: colors.link.default,
555
- colorLinkHover: colors.link.hover,
556
- colorLinkActive: colors.link.active,
619
+ colorLink: colors.accent.default,
620
+ colorLinkHover: colors.accent.hover,
621
+ colorLinkActive: colors.accent.active,
557
622
  titleMarginBottom: constants.spacing[2],
558
623
  titleMarginTop: constants.spacing[4],
559
624
  },
560
625
  Tooltip: {
561
- colorBgSpotlight: colors.neutral[4],
626
+ colorBgSpotlight: colors.neutral[8],
562
627
  colorTextLightSolid: colors.text.inverse,
563
628
  // Subtle shadow
564
629
  boxShadowSecondary: constants.shadow.tooltip,
@@ -566,31 +631,43 @@ export const buildAntDTheme = (colors, constants) => {
566
631
  },
567
632
  Popover: {
568
633
  colorBgElevated: colors.surface.overlay,
634
+ colorText: colors.text.primary,
635
+ colorTextHeading: colors.text.primary,
569
636
  // Shadow on popover
570
637
  boxShadowSecondary: constants.shadow.popover,
571
638
  borderRadiusLG: constants.radius.card,
572
639
  padding: constants.spacing[3],
573
640
  },
641
+ // ========================================
642
+ // OTHER COMPONENTS
643
+ // ========================================
574
644
  Upload: {
575
645
  colorFillAlter: colors.surface.interactive,
576
- actionsColor: colors.link.default,
646
+ colorBorder: colors.border.default,
647
+ actionsColor: colors.accent.default,
577
648
  },
578
649
  Tour: {
579
650
  colorBgElevated: colors.surface.overlay,
580
- colorPrimary: colors.link.default,
651
+ colorPrimary: colors.accent.default,
652
+ colorText: colors.text.primary,
581
653
  boxShadowSecondary: constants.shadow.popover,
582
654
  borderRadius: constants.radius.card,
583
655
  },
584
656
  FloatButton: {
585
657
  colorBgElevated: colors.surface.overlay,
586
- colorPrimary: colors.link.default,
658
+ colorPrimary: colors.accent.default,
659
+ colorText: colors.text.primary,
587
660
  boxShadow: constants.shadow.popover,
588
661
  borderRadiusLG: constants.radius.avatar,
589
662
  },
590
663
  Segmented: {
591
664
  colorBgLayout: colors.neutral[2],
665
+ itemColor: colors.text.secondary,
666
+ itemHoverColor: colors.text.primary,
592
667
  itemHoverBg: colors.surface.interactive,
593
668
  itemSelectedBg: colors.surface.card,
669
+ itemSelectedColor: colors.text.primary,
670
+ itemActiveBg: colors.surface.card,
594
671
  borderRadius: constants.radius.base,
595
672
  borderRadiusSM: constants.radius.sm,
596
673
  },
@@ -604,24 +681,34 @@ export const buildAntDTheme = (colors, constants) => {
604
681
  colorBgElevated: colors.surface.overlay,
605
682
  controlItemBgHover: colors.surface.interactive,
606
683
  optionSelectedBg: colors.surface.selected,
684
+ colorPrimary: colors.accent.default,
607
685
  },
608
686
  TreeSelect: {
609
687
  colorBgElevated: colors.surface.overlay,
610
688
  nodeHoverBg: colors.surface.interactive,
611
689
  nodeSelectedBg: colors.surface.selected,
612
690
  },
691
+ Transfer: {
692
+ colorBgContainer: colors.surface.card,
693
+ controlItemBgHover: colors.surface.interactive,
694
+ controlItemBgActive: colors.surface.selected,
695
+ },
613
696
  Rate: {
614
697
  colorFillContent: colors.neutral[3],
615
698
  starColor: '#FADB14',
699
+ starBg: colors.neutral[3],
616
700
  },
617
701
  Empty: {
618
702
  colorText: colors.text.secondary,
619
703
  colorTextDescription: colors.text.tertiary,
704
+ colorTextDisabled: colors.text.disabled,
620
705
  },
621
706
  List: {
622
707
  colorBorder: colors.border.subtle,
623
- itemPadding: `${constants.spacing[3]}px ${constants.spacing[6]}px`,
624
- itemPaddingSM: `${constants.spacing[2]}px ${constants.spacing[4]}px`,
708
+ colorText: colors.text.primary,
709
+ colorTextDescription: colors.text.secondary,
710
+ itemPadding: `${constants.spacing[3]}px 0`,
711
+ itemPaddingSM: `${constants.spacing[2]}px ${constants.spacing[3]}px`,
625
712
  itemPaddingLG: `${constants.spacing[4]}px ${constants.spacing[6]}px`,
626
713
  metaMarginBottom: constants.spacing[2],
627
714
  avatarMarginRight: constants.spacing[4],