@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,781 @@
1
+ import { spacing, componentSpacing } from './tokens/spacing.js';
2
+ import { typography } from './tokens/typography.js';
3
+ import { radius, componentRadius } from './tokens/radius.js';
4
+ import { buildDarkModeShadows, componentShadows, shadows } from './tokens/shadow.js';
5
+ /**
6
+ * Build comprehensive Ant Design theme from Tembo tokens
7
+ */
8
+ export const buildAntDTheme = (colors) => {
9
+ const isDark = colors.mode === 'dark';
10
+ const componentShadow = isDark ? buildDarkModeShadows() : componentShadows;
11
+ return {
12
+ token: {
13
+ // ============================================
14
+ // COLOR TOKENS
15
+ // ============================================
16
+ // Primary (monochrome - using darkest neutral)
17
+ colorPrimary: colors.neutral[4],
18
+ colorPrimaryHover: colors.text.secondary,
19
+ colorPrimaryActive: colors.neutral[4],
20
+ colorPrimaryBg: colors.neutral[2],
21
+ colorPrimaryBgHover: colors.surface.interactive,
22
+ colorPrimaryBorder: colors.neutral[4],
23
+ colorPrimaryBorderHover: colors.neutral[4],
24
+ colorPrimaryText: colors.neutral[4],
25
+ colorPrimaryTextHover: colors.text.secondary,
26
+ colorPrimaryTextActive: colors.neutral[4],
27
+ // Links (standard web colors)
28
+ colorLink: colors.link.default,
29
+ colorLinkHover: colors.link.hover,
30
+ colorLinkActive: colors.link.active,
31
+ // Text
32
+ colorText: colors.text.primary,
33
+ colorTextSecondary: colors.text.secondary,
34
+ colorTextTertiary: colors.text.tertiary,
35
+ colorTextQuaternary: colors.text.tertiary,
36
+ colorTextDescription: colors.text.secondary,
37
+ colorTextDisabled: colors.text.disabled,
38
+ colorTextHeading: colors.text.primary,
39
+ colorTextLabel: colors.text.secondary,
40
+ colorTextPlaceholder: colors.text.tertiary,
41
+ colorTextLightSolid: colors.text.inverse,
42
+ // Backgrounds
43
+ colorBgBase: colors.surface.page,
44
+ colorBgContainer: colors.surface.card,
45
+ colorBgElevated: colors.surface.overlay,
46
+ colorBgLayout: colors.surface.page,
47
+ colorBgSpotlight: colors.surface.interactive,
48
+ colorBgMask: isDark ? 'rgba(0, 0, 0, 0.65)' : 'rgba(0, 0, 0, 0.45)',
49
+ colorBgTextHover: colors.surface.interactive,
50
+ colorBgTextActive: colors.surface.interactive,
51
+ // Borders
52
+ colorBorder: colors.border.default,
53
+ colorBorderBg: colors.surface.card,
54
+ colorBorderSecondary: colors.border.subtle,
55
+ colorSplit: colors.border.subtle,
56
+ // Fill (backgrounds of components)
57
+ colorFill: colors.neutral[2],
58
+ colorFillSecondary: colors.neutral[2],
59
+ colorFillTertiary: colors.neutral[2],
60
+ colorFillQuaternary: colors.surface.interactive,
61
+ // Semantic colors
62
+ colorSuccess: colors.semantic.success.main,
63
+ colorSuccessBg: colors.semantic.success.subtle,
64
+ colorSuccessBgHover: colors.semantic.success.subtle,
65
+ colorSuccessBorder: colors.semantic.success.main,
66
+ colorSuccessBorderHover: colors.semantic.success.main,
67
+ colorSuccessText: colors.semantic.success.main,
68
+ colorSuccessTextHover: colors.semantic.success.main,
69
+ colorSuccessTextActive: colors.semantic.success.main,
70
+ colorError: colors.semantic.error.main,
71
+ colorErrorBg: colors.semantic.error.subtle,
72
+ colorErrorBgHover: colors.semantic.error.subtle,
73
+ colorErrorBorder: colors.semantic.error.main,
74
+ colorErrorBorderHover: colors.semantic.error.main,
75
+ colorErrorText: colors.semantic.error.main,
76
+ colorErrorTextHover: colors.semantic.error.main,
77
+ colorErrorTextActive: colors.semantic.error.main,
78
+ colorWarning: colors.semantic.warning.main,
79
+ colorWarningBg: colors.semantic.warning.subtle,
80
+ colorWarningBgHover: colors.semantic.warning.subtle,
81
+ colorWarningBorder: colors.semantic.warning.main,
82
+ colorWarningBorderHover: colors.semantic.warning.main,
83
+ colorWarningText: colors.semantic.warning.main,
84
+ colorWarningTextHover: colors.semantic.warning.main,
85
+ colorWarningTextActive: colors.semantic.warning.main,
86
+ colorInfo: colors.semantic.info.main,
87
+ colorInfoBg: colors.semantic.info.subtle,
88
+ colorInfoBgHover: colors.semantic.info.subtle,
89
+ colorInfoBorder: colors.semantic.info.main,
90
+ colorInfoBorderHover: colors.semantic.info.main,
91
+ colorInfoText: colors.semantic.info.main,
92
+ colorInfoTextHover: colors.semantic.info.main,
93
+ colorInfoTextActive: colors.semantic.info.main,
94
+ // ============================================
95
+ // TYPOGRAPHY
96
+ // ============================================
97
+ fontFamily: typography.fontFamily.base,
98
+ fontFamilyCode: typography.fontFamily.mono,
99
+ fontSize: typography.fontSize.base,
100
+ fontSizeHeading1: typography.fontSize['5xl'],
101
+ fontSizeHeading2: typography.fontSize['4xl'],
102
+ fontSizeHeading3: typography.fontSize['3xl'],
103
+ fontSizeHeading4: typography.fontSize['2xl'],
104
+ fontSizeHeading5: typography.fontSize.xl,
105
+ fontSizeSM: typography.fontSize.sm,
106
+ fontSizeLG: typography.fontSize.lg,
107
+ fontSizeXL: typography.fontSize.xl,
108
+ fontWeightStrong: typography.fontWeight.semibold,
109
+ lineHeight: typography.lineHeight.base,
110
+ lineHeightHeading1: typography.lineHeight.tight,
111
+ lineHeightHeading2: typography.lineHeight.tight,
112
+ lineHeightHeading3: typography.lineHeight.tight,
113
+ lineHeightHeading4: typography.lineHeight.tight,
114
+ lineHeightHeading5: typography.lineHeight.tight,
115
+ lineHeightLG: typography.lineHeight.relaxed,
116
+ lineHeightSM: typography.lineHeight.base,
117
+ // ============================================
118
+ // SPACING & SIZING
119
+ // ============================================
120
+ padding: spacing[4],
121
+ paddingXS: spacing[2],
122
+ paddingSM: spacing[3],
123
+ paddingLG: spacing[5],
124
+ paddingXL: spacing[6],
125
+ margin: spacing[4],
126
+ marginXS: spacing[2],
127
+ marginSM: spacing[3],
128
+ marginLG: spacing[5],
129
+ marginXL: spacing[6],
130
+ marginXXL: spacing[8],
131
+ controlHeight: 40,
132
+ controlHeightLG: 48,
133
+ controlHeightSM: 32,
134
+ controlHeightXS: 24,
135
+ // ============================================
136
+ // BORDER RADIUS
137
+ // ============================================
138
+ borderRadius: radius.base,
139
+ borderRadiusLG: radius.md,
140
+ borderRadiusSM: radius.sm,
141
+ borderRadiusXS: radius.sm,
142
+ // ============================================
143
+ // SHADOWS
144
+ // ============================================
145
+ boxShadow: shadows.none,
146
+ boxShadowSecondary: shadows.none,
147
+ boxShadowTertiary: componentShadow.card,
148
+ // ============================================
149
+ // MOTION
150
+ // ============================================
151
+ motionUnit: 0.1,
152
+ motionBase: 0,
153
+ motionEaseInOut: 'cubic-bezier(0.4, 0, 0.2, 1)',
154
+ motionEaseOut: 'cubic-bezier(0.0, 0, 0.2, 1)',
155
+ motionEaseInBack: 'cubic-bezier(0.4, 0, 1, 1)',
156
+ // ============================================
157
+ // Z-INDEX
158
+ // ============================================
159
+ zIndexBase: 0,
160
+ zIndexPopupBase: 1000,
161
+ },
162
+ components: {
163
+ // ========================================
164
+ // BUTTON - Monochrome with clear states
165
+ // ========================================
166
+ Button: {
167
+ // Primary button (inverted monochrome)
168
+ colorPrimary: colors.neutral[4],
169
+ colorPrimaryHover: colors.text.secondary,
170
+ colorPrimaryActive: colors.neutral[4],
171
+ colorPrimaryBorder: colors.neutral[4],
172
+ primaryColor: colors.neutral[1],
173
+ primaryShadow: 'none',
174
+ // Default button (outlined)
175
+ defaultBg: colors.surface.card,
176
+ defaultBorderColor: colors.border.default,
177
+ defaultColor: colors.text.primary,
178
+ defaultHoverBg: colors.surface.interactive,
179
+ defaultHoverBorderColor: colors.border.strong,
180
+ defaultHoverColor: colors.text.primary,
181
+ defaultActiveBg: colors.surface.interactive,
182
+ defaultActiveBorderColor: colors.neutral[4],
183
+ defaultActiveColor: colors.text.primary,
184
+ defaultShadow: 'none',
185
+ // Text button
186
+ textHoverBg: colors.surface.interactive,
187
+ textTextColor: colors.text.primary,
188
+ textTextHoverColor: colors.text.primary,
189
+ // Link button
190
+ linkHoverBg: 'transparent',
191
+ colorLink: colors.link.default,
192
+ colorLinkHover: colors.link.hover,
193
+ colorLinkActive: colors.link.active,
194
+ // Danger button
195
+ dangerColor: colors.semantic.error.main,
196
+ colorErrorHover: colors.semantic.error.main,
197
+ colorErrorActive: colors.semantic.error.main,
198
+ dangerShadow: 'none',
199
+ // Sizing
200
+ controlHeight: 40,
201
+ controlHeightLG: 48,
202
+ controlHeightSM: 32,
203
+ paddingContentHorizontal: spacing[4],
204
+ paddingContentVertical: spacing[2],
205
+ // Styling
206
+ borderRadius: componentRadius.button,
207
+ borderRadiusLG: componentRadius.button,
208
+ borderRadiusSM: componentRadius.button,
209
+ fontWeight: typography.fontWeight.medium,
210
+ fontSize: typography.fontSize.base,
211
+ },
212
+ // ========================================
213
+ // INPUT & FORM CONTROLS
214
+ // ========================================
215
+ Input: {
216
+ colorBgContainer: colors.surface.card,
217
+ colorBorder: colors.border.default,
218
+ colorText: colors.text.primary,
219
+ colorTextPlaceholder: colors.text.tertiary,
220
+ colorIcon: colors.text.tertiary,
221
+ colorIconHover: colors.text.secondary,
222
+ hoverBorderColor: colors.border.strong,
223
+ activeBorderColor: colors.link.default,
224
+ activeShadow: `0 0 0 2px ${colors.semantic.info.subtle}`,
225
+ errorActiveShadow: `0 0 0 2px ${colors.semantic.error.subtle}`,
226
+ warningActiveShadow: `0 0 0 2px ${colors.semantic.warning.subtle}`,
227
+ controlHeight: 40,
228
+ controlHeightLG: 48,
229
+ controlHeightSM: 32,
230
+ paddingBlock: spacing[2],
231
+ paddingInline: spacing[3],
232
+ paddingInlineLG: spacing[4],
233
+ borderRadius: componentRadius.input,
234
+ borderRadiusLG: componentRadius.input,
235
+ borderRadiusSM: componentRadius.input,
236
+ },
237
+ InputNumber: {
238
+ colorBgContainer: colors.surface.card,
239
+ colorBorder: colors.border.default,
240
+ hoverBorderColor: colors.border.strong,
241
+ activeBorderColor: colors.link.default,
242
+ colorIcon: colors.text.tertiary,
243
+ colorIconHover: colors.text.secondary,
244
+ activeShadow: `0 0 0 2px ${colors.semantic.info.subtle}`,
245
+ controlHeight: 40,
246
+ borderRadius: componentRadius.input,
247
+ handleVisible: true,
248
+ },
249
+ Select: {
250
+ colorBgContainer: colors.surface.card,
251
+ colorBgElevated: colors.surface.overlay,
252
+ colorBorder: colors.border.default,
253
+ colorText: colors.text.primary,
254
+ colorTextPlaceholder: colors.text.tertiary,
255
+ colorIcon: colors.text.tertiary,
256
+ colorIconHover: colors.text.secondary,
257
+ hoverBorderColor: colors.border.strong,
258
+ controlItemBgHover: colors.surface.interactive,
259
+ activeBorderColor: colors.link.default,
260
+ optionSelectedBg: colors.surface.selected,
261
+ optionSelectedColor: colors.text.primary,
262
+ optionActiveBg: colors.surface.interactive,
263
+ controlHeight: 40,
264
+ controlHeightLG: 48,
265
+ controlHeightSM: 32,
266
+ borderRadius: componentRadius.input,
267
+ borderRadiusLG: componentRadius.input,
268
+ borderRadiusSM: componentRadius.input,
269
+ boxShadowSecondary: componentShadow.dropdown,
270
+ },
271
+ DatePicker: {
272
+ colorBgContainer: colors.surface.card,
273
+ colorBorder: colors.border.default,
274
+ hoverBorderColor: colors.border.strong,
275
+ activeBorderColor: colors.link.default,
276
+ colorIcon: colors.text.tertiary,
277
+ colorIconHover: colors.text.secondary,
278
+ activeShadow: `0 0 0 2px ${colors.semantic.info.subtle}`,
279
+ cellHoverBg: colors.surface.interactive,
280
+ cellActiveWithRangeBg: colors.semantic.info.subtle,
281
+ colorPrimary: colors.link.default,
282
+ controlHeight: 40,
283
+ borderRadius: componentRadius.input,
284
+ },
285
+ Checkbox: {
286
+ colorPrimary: colors.link.default,
287
+ colorPrimaryHover: colors.link.hover,
288
+ colorBorder: colors.border.default,
289
+ colorBgContainer: colors.surface.card,
290
+ colorIcon: colors.text.tertiary,
291
+ colorIconHover: colors.text.secondary,
292
+ borderRadiusSM: radius.sm,
293
+ },
294
+ Radio: {
295
+ colorPrimary: colors.link.default,
296
+ colorPrimaryHover: colors.link.hover,
297
+ colorBorder: colors.border.default,
298
+ colorBgContainer: colors.surface.card,
299
+ colorIcon: colors.text.tertiary,
300
+ colorIconHover: colors.text.secondary,
301
+ dotSize: 8,
302
+ },
303
+ Switch: {
304
+ colorPrimary: colors.link.default,
305
+ colorPrimaryHover: colors.link.hover,
306
+ colorTextQuaternary: colors.text.disabled,
307
+ colorTextTertiary: colors.text.tertiary,
308
+ colorIcon: colors.text.tertiary,
309
+ colorIconHover: colors.text.secondary,
310
+ handleSize: 18,
311
+ },
312
+ Slider: {
313
+ colorPrimary: colors.link.default,
314
+ colorPrimaryBorder: colors.link.default,
315
+ colorPrimaryBorderHover: colors.link.hover,
316
+ colorIcon: colors.text.tertiary,
317
+ colorIconHover: colors.text.secondary,
318
+ handleColor: colors.surface.card,
319
+ handleActiveColor: colors.surface.card,
320
+ railBg: colors.neutral[2],
321
+ railHoverBg: colors.neutral[3],
322
+ trackBg: colors.link.default,
323
+ trackHoverBg: colors.link.hover,
324
+ dotBorderColor: colors.border.default,
325
+ dotActiveBorderColor: colors.link.default,
326
+ },
327
+ Form: {
328
+ labelColor: colors.text.primary,
329
+ labelFontSize: typography.fontSize.base,
330
+ labelHeight: 32,
331
+ labelColonMarginInlineEnd: spacing[2],
332
+ labelColonMarginInlineStart: spacing[1],
333
+ itemMarginBottom: componentSpacing.form.itemGap,
334
+ verticalLabelPadding: `0 0 ${componentSpacing.form.labelGap}px`,
335
+ labelRequiredMarkColor: colors.semantic.error.main,
336
+ colorIcon: colors.text.tertiary,
337
+ colorIconHover: colors.text.secondary,
338
+ },
339
+ // ========================================
340
+ // DATA DISPLAY
341
+ // ========================================
342
+ Table: {
343
+ colorBgContainer: colors.surface.card,
344
+ colorText: colors.text.primary,
345
+ colorTextHeading: colors.text.primary,
346
+ headerBg: colors.surface.page,
347
+ headerColor: colors.text.secondary,
348
+ headerSortActiveBg: colors.surface.interactive,
349
+ headerSortHoverBg: colors.surface.interactive,
350
+ headerSplitColor: colors.border.subtle,
351
+ borderColor: colors.border.subtle,
352
+ rowHoverBg: colors.surface.interactive,
353
+ rowSelectedBg: colors.surface.selected,
354
+ rowSelectedHoverBg: colors.surface.selected,
355
+ rowExpandedBg: colors.surface.nested,
356
+ cellPaddingBlock: spacing[4],
357
+ cellPaddingInline: spacing[4],
358
+ cellPaddingBlockSM: spacing[2],
359
+ cellPaddingInlineSM: spacing[3],
360
+ borderRadius: componentRadius.card,
361
+ borderRadiusLG: componentRadius.card,
362
+ headerBorderRadius: componentRadius.card,
363
+ footerBg: colors.surface.page,
364
+ },
365
+ Descriptions: {
366
+ labelBg: colors.surface.page,
367
+ titleColor: colors.text.primary,
368
+ contentColor: colors.text.primary,
369
+ extraColor: colors.text.secondary,
370
+ itemPaddingBottom: spacing[4],
371
+ colonMarginLeft: spacing[1],
372
+ colonMarginRight: spacing[2],
373
+ },
374
+ Card: {
375
+ colorBgContainer: colors.surface.card,
376
+ colorBorderSecondary: colors.border.default,
377
+ colorTextHeading: colors.text.primary,
378
+ colorTextDescription: colors.text.secondary,
379
+ boxShadowTertiary: componentShadow.card,
380
+ borderRadius: componentRadius.card,
381
+ borderRadiusLG: componentRadius.card,
382
+ paddingLG: componentSpacing.card.md,
383
+ padding: componentSpacing.card.sm,
384
+ },
385
+ Statistic: {
386
+ titleFontSize: typography.fontSize.base,
387
+ contentFontSize: typography.fontSize['4xl'],
388
+ colorTextHeading: colors.text.primary,
389
+ colorTextDescription: colors.text.secondary,
390
+ },
391
+ Timeline: {
392
+ tailColor: colors.border.default,
393
+ tailWidth: 2,
394
+ dotBg: colors.surface.card,
395
+ dotBorderWidth: 2,
396
+ itemPaddingBottom: spacing[5],
397
+ },
398
+ Tag: {
399
+ defaultBg: colors.neutral[2],
400
+ defaultColor: colors.text.primary,
401
+ colorBorder: colors.border.default,
402
+ colorText: colors.text.primary,
403
+ borderRadiusSM: componentRadius.badge,
404
+ fontSize: typography.fontSize.sm,
405
+ fontSizeSM: typography.fontSize.xs,
406
+ },
407
+ Badge: {
408
+ colorBorderBg: colors.surface.card,
409
+ colorError: colors.semantic.error.main,
410
+ colorSuccess: colors.semantic.success.main,
411
+ colorInfo: colors.semantic.info.main,
412
+ colorWarning: colors.semantic.warning.main,
413
+ textFontSize: typography.fontSize.xs,
414
+ textFontSizeSM: 10,
415
+ indicatorHeight: 6,
416
+ indicatorHeightSM: 6,
417
+ },
418
+ Avatar: {
419
+ colorBgContainer: colors.neutral[2],
420
+ colorText: colors.text.secondary,
421
+ colorTextLightSolid: colors.text.inverse,
422
+ containerSize: 32,
423
+ containerSizeLG: 40,
424
+ containerSizeSM: 24,
425
+ borderRadius: componentRadius.avatar,
426
+ groupOverlapping: -8,
427
+ groupSpace: spacing[1],
428
+ },
429
+ Calendar: {
430
+ colorBgContainer: colors.surface.card,
431
+ colorPrimary: colors.link.default,
432
+ fullBg: colors.surface.card,
433
+ fullPanelBg: colors.surface.card,
434
+ itemActiveBg: colors.semantic.info.subtle,
435
+ borderRadius: componentRadius.card,
436
+ },
437
+ Collapse: {
438
+ colorBgContainer: colors.surface.card,
439
+ colorBorder: colors.border.default,
440
+ headerBg: colors.surface.page,
441
+ headerPadding: `${spacing[3]}px ${spacing[4]}px`,
442
+ contentPadding: `${spacing[4]}px ${spacing[4]}px`,
443
+ borderRadiusLG: componentRadius.card,
444
+ },
445
+ Carousel: {
446
+ colorBgContainer: colors.surface.card,
447
+ dotWidth: 8,
448
+ dotHeight: 8,
449
+ dotActiveWidth: 24,
450
+ },
451
+ Tree: {
452
+ colorBgContainer: colors.surface.card,
453
+ nodeHoverBg: colors.surface.interactive,
454
+ nodeSelectedBg: colors.surface.selected,
455
+ titleHeight: 32,
456
+ borderRadius: radius.sm,
457
+ },
458
+ // ========================================
459
+ // FEEDBACK
460
+ // ========================================
461
+ Alert: {
462
+ colorSuccessBg: colors.semantic.success.subtle,
463
+ colorSuccessBorder: colors.semantic.success.main,
464
+ colorSuccessText: colors.semantic.success.main,
465
+ colorErrorBg: colors.semantic.error.subtle,
466
+ colorErrorBorder: colors.semantic.error.main,
467
+ colorErrorText: colors.semantic.error.main,
468
+ colorWarningBg: colors.semantic.warning.subtle,
469
+ colorWarningBorder: colors.semantic.warning.main,
470
+ colorWarningText: colors.semantic.warning.main,
471
+ colorInfoBg: colors.semantic.info.subtle,
472
+ colorInfoBorder: colors.semantic.info.main,
473
+ colorInfoText: colors.semantic.info.main,
474
+ defaultPadding: `${spacing[3]}px ${spacing[4]}px`,
475
+ withDescriptionPadding: `${spacing[4]}px ${spacing[5]}px`,
476
+ borderRadiusLG: componentRadius.card,
477
+ },
478
+ Modal: {
479
+ contentBg: colors.surface.overlay,
480
+ headerBg: colors.surface.overlay,
481
+ footerBg: colors.surface.overlay,
482
+ titleColor: colors.text.primary,
483
+ colorBgMask: isDark ? 'rgba(0, 0, 0, 0.65)' : 'rgba(0, 0, 0, 0.45)',
484
+ borderRadiusLG: componentRadius.modal,
485
+ boxShadow: componentShadow.modal,
486
+ },
487
+ Drawer: {
488
+ colorBgElevated: colors.surface.overlay,
489
+ colorBgMask: isDark ? 'rgba(0, 0, 0, 0.65)' : 'rgba(0, 0, 0, 0.45)',
490
+ borderRadiusLG: componentRadius.modal,
491
+ footerPaddingBlock: spacing[4],
492
+ footerPaddingInline: spacing[6],
493
+ },
494
+ Notification: {
495
+ colorBgElevated: colors.surface.overlay,
496
+ colorText: colors.text.primary,
497
+ colorTextHeading: colors.text.primary,
498
+ borderRadiusLG: componentRadius.card,
499
+ boxShadow: componentShadow.dropdown,
500
+ padding: spacing[4],
501
+ paddingContentHorizontal: spacing[4],
502
+ },
503
+ Message: {
504
+ contentBg: colors.surface.overlay,
505
+ contentPadding: `${spacing[2]}px ${spacing[4]}px`,
506
+ borderRadiusLG: componentRadius.card,
507
+ boxShadow: componentShadow.dropdown,
508
+ },
509
+ Popconfirm: {
510
+ colorBgElevated: colors.surface.overlay,
511
+ colorWarning: colors.semantic.warning.main,
512
+ borderRadiusLG: componentRadius.card,
513
+ boxShadowSecondary: componentShadow.dropdown,
514
+ },
515
+ Progress: {
516
+ defaultColor: colors.link.default,
517
+ colorSuccess: colors.semantic.success.main,
518
+ colorError: colors.semantic.error.main,
519
+ remainingColor: colors.neutral[2],
520
+ circleTextColor: colors.text.primary,
521
+ borderRadius: 100,
522
+ lineBorderRadius: 100,
523
+ },
524
+ Result: {
525
+ titleFontSize: typography.fontSize['3xl'],
526
+ subtitleFontSize: typography.fontSize.base,
527
+ iconFontSize: typography.fontSize['5xl'],
528
+ extraMargin: `${spacing[8]}px 0 0`,
529
+ },
530
+ Skeleton: {
531
+ colorFill: colors.neutral[2],
532
+ colorFillContent: colors.neutral[1],
533
+ borderRadiusSM: radius.sm,
534
+ },
535
+ Spin: {
536
+ colorPrimary: colors.link.default,
537
+ dotSize: 20,
538
+ dotSizeLG: 32,
539
+ dotSizeSM: 14,
540
+ },
541
+ // ========================================
542
+ // NAVIGATION
543
+ // ========================================
544
+ Menu: {
545
+ itemBg: 'transparent',
546
+ itemColor: colors.text.primary,
547
+ itemHoverBg: colors.surface.interactive,
548
+ itemHoverColor: colors.text.primary,
549
+ itemSelectedBg: colors.surface.selected,
550
+ itemSelectedColor: colors.text.primary,
551
+ itemActiveBg: colors.surface.selected,
552
+ subMenuItemBg: 'transparent',
553
+ // Dark menu (for sidebars)
554
+ darkItemBg: colors.absolute.black,
555
+ darkSubMenuItemBg: colors.absolute.black,
556
+ darkItemColor: colors.absolute.white,
557
+ darkItemHoverBg: 'rgba(255, 255, 255, 0.08)',
558
+ darkItemHoverColor: colors.absolute.white,
559
+ darkItemSelectedBg: colors.link.default,
560
+ darkItemSelectedColor: colors.absolute.white,
561
+ itemBorderRadius: componentRadius.input,
562
+ itemHeight: 40,
563
+ itemPaddingInline: spacing[4],
564
+ iconSize: 16,
565
+ collapsedIconSize: 16,
566
+ collapsedWidth: 64,
567
+ },
568
+ Breadcrumb: {
569
+ itemColor: colors.text.secondary,
570
+ lastItemColor: colors.text.primary,
571
+ linkColor: colors.link.default,
572
+ linkHoverColor: colors.link.hover,
573
+ separatorColor: colors.text.tertiary,
574
+ separatorMargin: spacing[2],
575
+ iconFontSize: typography.fontSize.base,
576
+ fontSize: typography.fontSize.base,
577
+ },
578
+ Pagination: {
579
+ colorPrimary: colors.link.default,
580
+ colorPrimaryHover: colors.link.hover,
581
+ itemActiveBg: colors.link.default,
582
+ itemActiveBgDisabled: colors.neutral[2],
583
+ itemBg: colors.surface.card,
584
+ itemLinkBg: colors.surface.card,
585
+ itemInputBg: colors.surface.card,
586
+ itemSize: 32,
587
+ itemSizeSM: 24,
588
+ borderRadius: radius.sm,
589
+ },
590
+ Steps: {
591
+ colorPrimary: colors.link.default,
592
+ colorText: colors.text.secondary,
593
+ colorTextDescription: colors.text.tertiary,
594
+ colorBorderSecondary: colors.border.default,
595
+ dotSize: 8,
596
+ iconSize: 32,
597
+ iconSizeSM: 24,
598
+ },
599
+ Tabs: {
600
+ colorPrimary: colors.link.default,
601
+ itemColor: colors.text.secondary,
602
+ itemHoverColor: colors.link.hover,
603
+ itemSelectedColor: colors.link.default,
604
+ itemActiveColor: colors.link.default,
605
+ inkBarColor: colors.link.default,
606
+ colorBorderSecondary: colors.border.default,
607
+ titleFontSize: typography.fontSize.base,
608
+ titleFontSizeLG: typography.fontSize.lg,
609
+ titleFontSizeSM: typography.fontSize.sm,
610
+ cardBg: colors.surface.card,
611
+ cardPadding: `${spacing[2]}px ${spacing[4]}px`,
612
+ horizontalItemPadding: `${spacing[3]}px 0`,
613
+ horizontalItemMargin: `0 ${spacing[8]}px 0 0`,
614
+ },
615
+ Anchor: {
616
+ colorPrimary: colors.link.default,
617
+ linkPaddingBlock: spacing[1],
618
+ linkPaddingInlineStart: spacing[4],
619
+ },
620
+ Dropdown: {
621
+ colorBgElevated: colors.surface.overlay,
622
+ controlItemBgHover: colors.surface.interactive,
623
+ controlItemBgActive: colors.surface.selected,
624
+ boxShadowSecondary: componentShadow.dropdown,
625
+ paddingBlock: spacing[1],
626
+ borderRadiusLG: componentRadius.card,
627
+ },
628
+ // ========================================
629
+ // LAYOUT
630
+ // ========================================
631
+ Layout: {
632
+ colorBgBody: colors.surface.page,
633
+ colorBgHeader: colors.surface.card,
634
+ colorBgTrigger: colors.absolute.black,
635
+ siderBg: colors.absolute.black,
636
+ headerBg: colors.surface.card,
637
+ headerHeight: 64,
638
+ headerPadding: `0 ${spacing[6]}px`,
639
+ footerBg: colors.surface.card,
640
+ footerPadding: `${spacing[6]}px ${spacing[12]}px`,
641
+ bodyBg: colors.surface.page,
642
+ triggerHeight: 48,
643
+ triggerBg: colors.absolute.black,
644
+ triggerColor: colors.absolute.white,
645
+ zeroTriggerWidth: 36,
646
+ zeroTriggerHeight: 42,
647
+ lightSiderBg: colors.surface.card,
648
+ lightTriggerBg: colors.surface.card,
649
+ lightTriggerColor: colors.text.primary,
650
+ },
651
+ Divider: {
652
+ colorSplit: colors.border.subtle,
653
+ colorText: colors.text.tertiary,
654
+ orientationMargin: 0.05,
655
+ verticalMarginInline: spacing[2],
656
+ },
657
+ // ========================================
658
+ // OTHER
659
+ // ========================================
660
+ Typography: {
661
+ colorText: colors.text.primary,
662
+ colorTextSecondary: colors.text.secondary,
663
+ colorTextDescription: colors.text.tertiary,
664
+ colorLink: colors.link.default,
665
+ colorLinkHover: colors.link.hover,
666
+ colorLinkActive: colors.link.active,
667
+ titleMarginBottom: spacing[2],
668
+ titleMarginTop: spacing[4],
669
+ fontSizeHeading1: typography.fontSize['5xl'],
670
+ fontSizeHeading2: typography.fontSize['4xl'],
671
+ fontSizeHeading3: typography.fontSize['3xl'],
672
+ fontSizeHeading4: typography.fontSize['2xl'],
673
+ fontSizeHeading5: typography.fontSize.xl,
674
+ lineHeightHeading1: typography.lineHeight.tight,
675
+ lineHeightHeading2: typography.lineHeight.tight,
676
+ lineHeightHeading3: typography.lineHeight.tight,
677
+ lineHeightHeading4: typography.lineHeight.tight,
678
+ lineHeightHeading5: typography.lineHeight.tight,
679
+ },
680
+ Tooltip: {
681
+ colorBgSpotlight: colors.neutral[4],
682
+ colorTextLightSolid: colors.text.inverse,
683
+ borderRadius: radius.sm,
684
+ boxShadowSecondary: componentShadow.tooltip,
685
+ },
686
+ Popover: {
687
+ colorBgElevated: colors.surface.overlay,
688
+ colorText: colors.text.primary,
689
+ borderRadiusLG: componentRadius.card,
690
+ boxShadowSecondary: componentShadow.dropdown,
691
+ padding: spacing[3],
692
+ },
693
+ Image: {
694
+ previewOperationColor: colors.absolute.white,
695
+ previewOperationColorDisabled: 'rgba(255, 255, 255, 0.25)',
696
+ },
697
+ Upload: {
698
+ colorBorder: colors.border.default,
699
+ colorFillAlter: colors.surface.interactive,
700
+ colorText: colors.text.primary,
701
+ colorTextDescription: colors.text.secondary,
702
+ colorTextHeading: colors.text.primary,
703
+ actionsColor: colors.link.default,
704
+ },
705
+ QRCode: {
706
+ colorBgContainer: colors.surface.card,
707
+ },
708
+ Tour: {
709
+ colorBgElevated: colors.surface.overlay,
710
+ colorPrimary: colors.link.default,
711
+ borderRadius: componentRadius.card,
712
+ boxShadowSecondary: componentShadow.dropdown,
713
+ },
714
+ FloatButton: {
715
+ colorBgElevated: colors.surface.overlay,
716
+ colorPrimary: colors.link.default,
717
+ borderRadiusLG: componentRadius.avatar,
718
+ boxShadow: componentShadow.dropdown,
719
+ },
720
+ Segmented: {
721
+ colorBgLayout: colors.neutral[2],
722
+ itemColor: colors.text.primary,
723
+ itemHoverColor: colors.text.primary,
724
+ itemHoverBg: colors.surface.interactive,
725
+ itemSelectedBg: colors.surface.card,
726
+ itemSelectedColor: colors.text.primary,
727
+ borderRadius: radius.base,
728
+ borderRadiusSM: radius.sm,
729
+ },
730
+ Mentions: {
731
+ colorBgContainer: colors.surface.card,
732
+ colorBgElevated: colors.surface.overlay,
733
+ colorBorder: colors.border.default,
734
+ controlItemBgHover: colors.surface.interactive,
735
+ controlItemBgActive: colors.surface.selected,
736
+ boxShadowSecondary: componentShadow.dropdown,
737
+ },
738
+ Transfer: {
739
+ colorBgContainer: colors.surface.card,
740
+ colorBorder: colors.border.default,
741
+ itemPaddingBlock: spacing[1],
742
+ },
743
+ Cascader: {
744
+ colorBgContainer: colors.surface.card,
745
+ colorBgElevated: colors.surface.overlay,
746
+ colorBorder: colors.border.default,
747
+ controlItemBgHover: colors.surface.interactive,
748
+ optionSelectedBg: colors.surface.selected,
749
+ },
750
+ TreeSelect: {
751
+ colorBgContainer: colors.surface.card,
752
+ colorBgElevated: colors.surface.overlay,
753
+ colorBorder: colors.border.default,
754
+ nodeHoverBg: colors.surface.interactive,
755
+ nodeSelectedBg: colors.surface.selected,
756
+ },
757
+ Rate: {
758
+ colorFillContent: colors.neutral[3],
759
+ starColor: '#FADB14',
760
+ },
761
+ Empty: {
762
+ colorText: colors.text.secondary,
763
+ colorTextDescription: colors.text.tertiary,
764
+ fontSize: typography.fontSize.base,
765
+ },
766
+ List: {
767
+ colorBorder: colors.border.subtle,
768
+ colorSplit: colors.border.subtle,
769
+ itemPadding: `${spacing[3]}px ${spacing[6]}px`,
770
+ itemPaddingSM: `${spacing[2]}px ${spacing[4]}px`,
771
+ itemPaddingLG: `${spacing[4]}px ${spacing[6]}px`,
772
+ headerBg: 'transparent',
773
+ footerBg: 'transparent',
774
+ emptyTextPadding: spacing[4],
775
+ metaMarginBottom: spacing[2],
776
+ avatarMarginRight: spacing[4],
777
+ titleMarginBottom: spacing[1],
778
+ },
779
+ },
780
+ };
781
+ };