@temboplus/frontend-react-core 0.1.3-beta.38 → 0.1.3-beta.39

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 (105) hide show
  1. package/README.md +72 -338
  2. package/dist/index.cjs.js +15 -1
  3. package/dist/index.cjs.js.map +1 -1
  4. package/dist/index.d.ts +1 -1
  5. package/dist/index.esm.js +4 -1
  6. package/dist/index.esm.js.map +1 -1
  7. package/dist/timezone/index.cjs.js +16 -0
  8. package/dist/{notifications → timezone}/index.cjs.js.map +1 -1
  9. package/dist/timezone/index.d.ts +3 -0
  10. package/dist/timezone/index.js +5 -0
  11. package/dist/{notifications → timezone}/index.js.map +1 -1
  12. package/dist/timezone/use-format-date.d.ts +22 -0
  13. package/dist/timezone/use-timezone-date.d.ts +17 -0
  14. package/dist/timezone/use-timezone.d.ts +19 -0
  15. package/dist/use-format-date--9gcnP7_.js +82 -0
  16. package/dist/use-format-date--9gcnP7_.js.map +1 -0
  17. package/dist/use-format-date-BvwtJTnU.js +89 -0
  18. package/dist/use-format-date-BvwtJTnU.js.map +1 -0
  19. package/package.json +23 -51
  20. package/dist/InfoCircleOutlined-B4_-Z3H4.js +0 -6
  21. package/dist/InfoCircleOutlined-B4_-Z3H4.js.map +0 -1
  22. package/dist/InfoCircleOutlined-pKxRobXG.js +0 -6
  23. package/dist/InfoCircleOutlined-pKxRobXG.js.map +0 -1
  24. package/dist/alerts/index.cjs.js +0 -2
  25. package/dist/alerts/index.cjs.js.map +0 -1
  26. package/dist/alerts/index.d.ts +0 -1
  27. package/dist/alerts/index.js +0 -2
  28. package/dist/alerts/index.js.map +0 -1
  29. package/dist/dialogs/index.cjs.js +0 -2
  30. package/dist/dialogs/index.cjs.js.map +0 -1
  31. package/dist/dialogs/index.d.ts +0 -1
  32. package/dist/dialogs/index.js +0 -2
  33. package/dist/dialogs/index.js.map +0 -1
  34. package/dist/features/alerts/alert.d.ts +0 -12
  35. package/dist/features/alerts/alert.js +0 -95
  36. package/dist/features/alerts/index.d.ts +0 -1
  37. package/dist/features/alerts/index.js +0 -1
  38. package/dist/features/dialogs/index.d.ts +0 -1
  39. package/dist/features/dialogs/index.js +0 -1
  40. package/dist/features/dialogs/modal-provider.d.ts +0 -3
  41. package/dist/features/dialogs/modal-provider.js +0 -6
  42. package/dist/features/dialogs/tembo-confirm.d.ts +0 -63
  43. package/dist/features/dialogs/tembo-confirm.js +0 -98
  44. package/dist/features/input-validation/account-name-validator.d.ts +0 -13
  45. package/dist/features/input-validation/account-name-validator.js +0 -28
  46. package/dist/features/input-validation/account-number-validator.d.ts +0 -13
  47. package/dist/features/input-validation/account-number-validator.js +0 -65
  48. package/dist/features/input-validation/amount-validator.d.ts +0 -78
  49. package/dist/features/input-validation/amount-validator.js +0 -100
  50. package/dist/features/input-validation/index.d.ts +0 -5
  51. package/dist/features/input-validation/index.js +0 -5
  52. package/dist/features/input-validation/phone-number-validator.d.ts +0 -25
  53. package/dist/features/input-validation/phone-number-validator.js +0 -79
  54. package/dist/features/input-validation/swift-code-validator.d.ts +0 -13
  55. package/dist/features/input-validation/swift-code-validator.js +0 -38
  56. package/dist/features/notifications/index.d.ts +0 -3
  57. package/dist/features/notifications/index.js +0 -3
  58. package/dist/features/notifications/tembo-notify.d.ts +0 -51
  59. package/dist/features/notifications/tembo-notify.js +0 -140
  60. package/dist/features/notifications/toast-config.d.ts +0 -13
  61. package/dist/features/notifications/toast-config.js +0 -60
  62. package/dist/features/notifications/toast-container.d.ts +0 -19
  63. package/dist/features/notifications/toast-container.js +0 -104
  64. package/dist/index.js +0 -1
  65. package/dist/notifications/index.cjs.js +0 -2
  66. package/dist/notifications/index.d.ts +0 -1
  67. package/dist/notifications/index.js +0 -2
  68. package/dist/providers.d.ts +0 -7
  69. package/dist/providers.js +0 -11
  70. package/dist/tembo-notify-By9oLCSX.js +0 -3
  71. package/dist/tembo-notify-By9oLCSX.js.map +0 -1
  72. package/dist/tembo-notify-CssdTeIP.js +0 -3
  73. package/dist/tembo-notify-CssdTeIP.js.map +0 -1
  74. package/dist/theme/deprecated/colors.d.ts +0 -278
  75. package/dist/theme/deprecated/colors.js +0 -212
  76. package/dist/theme/deprecated/constants.d.ts +0 -143
  77. package/dist/theme/deprecated/constants.js +0 -82
  78. package/dist/theme/deprecated/theme-provider.d.ts +0 -100
  79. package/dist/theme/deprecated/theme-provider.js +0 -405
  80. package/dist/theme/index.cjs.js +0 -2
  81. package/dist/theme/index.cjs.js.map +0 -1
  82. package/dist/theme/index.d.ts +0 -4
  83. package/dist/theme/index.js +0 -2
  84. package/dist/theme/index.js.map +0 -1
  85. package/dist/theme/theme-config.d.ts +0 -15
  86. package/dist/theme/theme-config.js +0 -735
  87. package/dist/theme/theme-provider.d.ts +0 -29
  88. package/dist/theme/theme-provider.js +0 -32
  89. package/dist/theme/tokens/colors.d.ts +0 -153
  90. package/dist/theme/tokens/colors.js +0 -306
  91. package/dist/theme/tokens/constants.d.ts +0 -136
  92. package/dist/theme/tokens/constants.js +0 -137
  93. package/dist/theme-provider-XqWasApp.js +0 -11
  94. package/dist/theme-provider-XqWasApp.js.map +0 -1
  95. package/dist/theme-provider-c4R_KW4X.js +0 -2
  96. package/dist/theme-provider-c4R_KW4X.js.map +0 -1
  97. package/dist/theme-provider-slJZwhTc.js +0 -11
  98. package/dist/theme-provider-slJZwhTc.js.map +0 -1
  99. package/dist/theme-provider-slTbQLX5.js +0 -2
  100. package/dist/theme-provider-slTbQLX5.js.map +0 -1
  101. package/dist/validation/index.cjs.js +0 -2
  102. package/dist/validation/index.cjs.js.map +0 -1
  103. package/dist/validation/index.d.ts +0 -1
  104. package/dist/validation/index.js +0 -2
  105. package/dist/validation/index.js.map +0 -1
@@ -1,735 +0,0 @@
1
- /**
2
- * Build comprehensive Ant Design theme from Tembo tokens
3
- *
4
- * Design principles:
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
11
- */
12
- export const buildAntDTheme = (colors, constants) => {
13
- const isDark = colors.mode === 'dark';
14
- return {
15
- token: {
16
- // ============================================
17
- // COLOR SYSTEM
18
- // ============================================
19
- // Primary = Monochrome actions (near-black/near-white)
20
- colorPrimary: colors.action.default,
21
- colorPrimaryHover: colors.action.hover,
22
- colorPrimaryActive: colors.action.default,
23
- colorPrimaryBg: colors.neutral[3],
24
- colorPrimaryBgHover: colors.surface.interactive,
25
- colorPrimaryBorder: colors.action.default,
26
- colorPrimaryBorderHover: colors.action.hover,
27
- colorPrimaryText: colors.action.default,
28
- colorPrimaryTextHover: colors.action.hover,
29
- colorPrimaryTextActive: colors.action.default,
30
- // Links = Accent blue (only color in monochrome system)
31
- colorLink: colors.accent.default,
32
- colorLinkHover: colors.accent.hover,
33
- colorLinkActive: colors.accent.active,
34
- // Text hierarchy
35
- colorText: colors.text.primary,
36
- colorTextSecondary: colors.text.secondary,
37
- colorTextTertiary: colors.text.tertiary,
38
- colorTextQuaternary: colors.text.tertiary,
39
- colorTextDescription: colors.text.secondary,
40
- colorTextDisabled: colors.text.disabled,
41
- colorTextHeading: colors.text.primary,
42
- colorTextLabel: colors.text.secondary,
43
- colorTextPlaceholder: colors.text.tertiary,
44
- colorTextLightSolid: colors.text.inverse,
45
- // Backgrounds
46
- colorBgBase: colors.surface.page,
47
- colorBgContainer: colors.surface.card,
48
- colorBgElevated: colors.surface.overlay,
49
- colorBgLayout: colors.surface.page,
50
- colorBgSpotlight: colors.surface.interactive,
51
- colorBgMask: isDark ? 'rgba(0, 0, 0, 0.65)' : 'rgba(0, 0, 0, 0.45)',
52
- colorBgTextHover: colors.surface.interactive,
53
- colorBgTextActive: colors.surface.selected,
54
- colorBgContainerDisabled: colors.action.disabled,
55
- // Borders
56
- colorBorder: colors.border.default,
57
- colorBorderBg: colors.surface.card,
58
- colorBorderSecondary: colors.border.subtle,
59
- colorSplit: colors.border.subtle,
60
- // Fill colors (for backgrounds, progress bars, etc.)
61
- colorFill: colors.neutral[3],
62
- colorFillSecondary: colors.neutral[3],
63
- colorFillTertiary: colors.neutral[2],
64
- colorFillQuaternary: colors.surface.interactive,
65
- // Semantic colors - modern, vibrant
66
- colorSuccess: colors.semantic.success.main,
67
- colorSuccessBg: colors.semantic.success.subtle,
68
- colorSuccessBgHover: colors.semantic.success.subtle,
69
- colorSuccessBorder: colors.semantic.success.main,
70
- colorSuccessBorderHover: colors.semantic.success.main,
71
- colorSuccessText: colors.semantic.success.main,
72
- colorSuccessTextHover: colors.semantic.success.main,
73
- colorSuccessTextActive: colors.semantic.success.main,
74
- colorError: colors.semantic.error.main,
75
- colorErrorBg: colors.semantic.error.subtle,
76
- colorErrorBgHover: colors.semantic.error.subtle,
77
- colorErrorBorder: colors.semantic.error.main,
78
- colorErrorBorderHover: colors.semantic.error.main,
79
- colorErrorText: colors.semantic.error.main,
80
- colorErrorTextHover: colors.semantic.error.main,
81
- colorErrorTextActive: colors.semantic.error.main,
82
- colorWarning: colors.semantic.warning.main,
83
- colorWarningBg: colors.semantic.warning.subtle,
84
- colorWarningBgHover: colors.semantic.warning.subtle,
85
- colorWarningBorder: colors.semantic.warning.main,
86
- colorWarningBorderHover: colors.semantic.warning.main,
87
- colorWarningText: colors.semantic.warning.main,
88
- colorWarningTextHover: colors.semantic.warning.main,
89
- colorWarningTextActive: colors.semantic.warning.main,
90
- colorInfo: colors.semantic.info.main,
91
- colorInfoBg: colors.semantic.info.subtle,
92
- colorInfoBgHover: colors.semantic.info.subtle,
93
- colorInfoBorder: colors.semantic.info.main,
94
- colorInfoBorderHover: colors.semantic.info.main,
95
- colorInfoText: colors.semantic.info.main,
96
- colorInfoTextHover: colors.semantic.info.main,
97
- colorInfoTextActive: colors.semantic.info.main,
98
- // ============================================
99
- // TYPOGRAPHY
100
- // ============================================
101
- fontFamily: constants.typography.fontFamily.base,
102
- fontFamilyCode: constants.typography.fontFamily.mono,
103
- fontSize: constants.typography.fontSize.base,
104
- fontSizeSM: constants.typography.fontSize.sm,
105
- fontSizeLG: constants.typography.fontSize.lg,
106
- fontSizeXL: constants.typography.fontSize.xl,
107
- fontSizeHeading1: constants.typography.fontSize['5xl'],
108
- fontSizeHeading2: constants.typography.fontSize['4xl'],
109
- fontSizeHeading3: constants.typography.fontSize['3xl'],
110
- fontSizeHeading4: constants.typography.fontSize['2xl'],
111
- fontSizeHeading5: constants.typography.fontSize.xl,
112
- fontWeightStrong: constants.typography.fontWeight.semibold,
113
- lineHeight: constants.typography.lineHeight.base,
114
- lineHeightSM: constants.typography.lineHeight.base,
115
- lineHeightLG: constants.typography.lineHeight.relaxed,
116
- lineHeightHeading1: constants.typography.lineHeight.tight,
117
- lineHeightHeading2: constants.typography.lineHeight.tight,
118
- lineHeightHeading3: constants.typography.lineHeight.tight,
119
- lineHeightHeading4: constants.typography.lineHeight.tight,
120
- lineHeightHeading5: constants.typography.lineHeight.tight,
121
- // ============================================
122
- // SPACING & SIZING
123
- // ============================================
124
- padding: constants.spacing[4],
125
- paddingXS: constants.spacing[2],
126
- paddingSM: constants.spacing[3],
127
- paddingLG: constants.spacing[5],
128
- paddingXL: constants.spacing[6],
129
- margin: constants.spacing[4],
130
- marginXS: constants.spacing[2],
131
- marginSM: constants.spacing[3],
132
- marginLG: constants.spacing[5],
133
- marginXL: constants.spacing[6],
134
- marginXXL: constants.spacing[8],
135
- // Control heights - consistent across all inputs
136
- controlHeight: 40,
137
- controlHeightLG: 48,
138
- controlHeightSM: 32,
139
- controlHeightXS: 24,
140
- // ============================================
141
- // BORDER RADIUS - Bold rounded corners
142
- // ============================================
143
- borderRadius: constants.radius.base,
144
- borderRadiusLG: constants.radius.md,
145
- borderRadiusSM: constants.radius.base,
146
- borderRadiusXS: constants.radius.base,
147
- // ============================================
148
- // SHADOWS - Flat elements have none
149
- // ============================================
150
- boxShadow: constants.shadow.none,
151
- boxShadowSecondary: constants.shadow.none,
152
- boxShadowTertiary: constants.shadow.card,
153
- // ============================================
154
- // MOTION
155
- // ============================================
156
- motionUnit: 0.1,
157
- motionBase: 0,
158
- motionEaseInOut: constants.transition.base,
159
- motionEaseOut: constants.transition.base,
160
- motionEaseInBack: constants.transition.base,
161
- // ============================================
162
- // Z-INDEX
163
- // ============================================
164
- zIndexBase: 0,
165
- zIndexPopupBase: constants.zIndex.dropdown,
166
- },
167
- components: {
168
- // ========================================
169
- // BUTTONS - Monochrome actions
170
- // ========================================
171
- Button: {
172
- // Monochrome primary button (near-black/near-white)
173
- colorPrimary: colors.action.default,
174
- colorPrimaryHover: colors.action.hover,
175
- colorPrimaryActive: colors.action.default,
176
- colorPrimaryBorder: colors.action.default,
177
- primaryColor: colors.action.contrast,
178
- // Default button (outlined)
179
- defaultBg: colors.surface.card,
180
- defaultBorderColor: colors.border.default,
181
- defaultColor: colors.text.primary,
182
- defaultHoverBg: colors.surface.interactive,
183
- defaultHoverBorderColor: colors.border.strong,
184
- defaultHoverColor: colors.text.primary,
185
- defaultActiveBg: colors.surface.selected,
186
- defaultActiveBorderColor: colors.action.default,
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)
195
- dangerColor: colors.semantic.error.main,
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)
203
- primaryShadow: 'none',
204
- defaultShadow: 'none',
205
- dangerShadow: 'none',
206
- // Bold rounded corners
207
- borderRadius: constants.radius.button,
208
- borderRadiusLG: constants.radius.button,
209
- borderRadiusSM: constants.radius.button,
210
- // Typography
211
- fontWeight: constants.typography.fontWeight.medium,
212
- // Padding
213
- paddingContentHorizontal: constants.spacing[4],
214
- paddingContentVertical: constants.spacing[2],
215
- // Heights inherited from token.controlHeight ✅
216
- },
217
- // ========================================
218
- // INPUTS - Blue accent for focus states
219
- // ========================================
220
- Input: {
221
- colorBgContainer: colors.surface.input,
222
- colorBorder: colors.border.default,
223
- colorText: colors.text.input,
224
- colorTextPlaceholder: colors.text.tertiary,
225
- // Icons
226
- colorIcon: colors.text.tertiary,
227
- colorIconHover: colors.text.secondary,
228
- // Hover state
229
- hoverBg: colors.surface.card,
230
- hoverBorderColor: colors.border.strong,
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
- // Error/warning focus rings
236
- errorActiveShadow: `0 0 0 2px ${colors.semantic.error.subtle}`,
237
- warningActiveShadow: `0 0 0 2px ${colors.semantic.warning.subtle}`,
238
- // Disabled
239
- colorBgContainerDisabled: colors.surface.nested,
240
- colorTextDisabled: colors.text.disabled,
241
- // Bold rounded
242
- borderRadius: constants.radius.input,
243
- borderRadiusLG: constants.radius.input,
244
- borderRadiusSM: constants.radius.input,
245
- // Padding
246
- paddingBlock: constants.spacing[2],
247
- paddingInline: constants.spacing[3],
248
- paddingInlineLG: constants.spacing[4],
249
- // Font weight - 500 for input text
250
- fontWeightStrong: constants.typography.fontWeight.medium,
251
- },
252
- InputNumber: {
253
- colorBgContainer: colors.surface.input,
254
- colorText: colors.text.input,
255
- colorTextPlaceholder: colors.text.tertiary,
256
- colorIcon: colors.text.tertiary,
257
- colorIconHover: colors.text.secondary,
258
- activeBorderColor: colors.accent.default,
259
- activeShadow: `0 0 0 2px ${colors.accent.subtle}`,
260
- borderRadius: constants.radius.input,
261
- handleVisible: true,
262
- fontWeightStrong: constants.typography.fontWeight.medium,
263
- },
264
- Select: {
265
- colorBgContainer: colors.surface.input,
266
- colorBgElevated: colors.surface.overlay,
267
- colorText: colors.text.input,
268
- colorTextPlaceholder: colors.text.tertiary,
269
- colorIcon: colors.text.tertiary,
270
- colorIconHover: colors.text.secondary,
271
- // Focus - blue accent
272
- activeBorderColor: colors.accent.default,
273
- boxShadow: `0 0 0 2px ${colors.accent.subtle}`,
274
- // Options
275
- optionSelectedBg: colors.surface.selected,
276
- optionActiveBg: colors.surface.interactive,
277
- controlItemBgHover: colors.surface.interactive,
278
- controlItemBgActive: colors.surface.selected,
279
- borderRadius: constants.radius.input,
280
- borderRadiusLG: constants.radius.input,
281
- borderRadiusSM: constants.radius.input,
282
- // Dropdown has shadow
283
- boxShadowSecondary: constants.shadow.popover,
284
- fontWeightStrong: constants.typography.fontWeight.medium,
285
- },
286
- DatePicker: {
287
- colorBgContainer: colors.surface.input,
288
- colorText: colors.text.input,
289
- colorTextPlaceholder: colors.text.tertiary,
290
- colorIcon: colors.text.tertiary,
291
- colorIconHover: colors.text.secondary,
292
- activeBorderColor: colors.accent.default,
293
- activeShadow: `0 0 0 2px ${colors.accent.subtle}`,
294
- cellHoverBg: colors.surface.interactive,
295
- cellActiveWithRangeBg: colors.accent.subtle,
296
- colorPrimary: colors.accent.default,
297
- borderRadius: constants.radius.input,
298
- fontWeightStrong: constants.typography.fontWeight.medium,
299
- },
300
- // ========================================
301
- // FORM CONTROLS - Use accent for selected state
302
- // ========================================
303
- Checkbox: {
304
- colorPrimary: colors.accent.default,
305
- colorPrimaryHover: colors.accent.hover,
306
- colorPrimaryBorder: colors.border.default,
307
- borderRadiusSM: constants.radius.sm,
308
- },
309
- Radio: {
310
- colorPrimary: colors.accent.default,
311
- colorPrimaryHover: colors.accent.hover,
312
- colorBorder: colors.border.default,
313
- },
314
- Switch: {
315
- colorPrimary: colors.accent.default,
316
- colorPrimaryHover: colors.accent.hover,
317
- colorTextQuaternary: colors.neutral[4],
318
- colorTextTertiary: colors.neutral[5],
319
- handleSize: 18,
320
- },
321
- Slider: {
322
- colorPrimary: colors.accent.default,
323
- colorPrimaryBorder: colors.accent.default,
324
- colorPrimaryBorderHover: colors.accent.hover,
325
- handleColor: colors.surface.card,
326
- handleActiveColor: colors.surface.card,
327
- railBg: colors.neutral[3],
328
- railHoverBg: colors.neutral[4],
329
- trackBg: colors.accent.default,
330
- trackHoverBg: colors.accent.hover,
331
- dotBorderColor: colors.border.default,
332
- dotActiveBorderColor: colors.accent.default,
333
- },
334
- // ========================================
335
- // FORM LAYOUT
336
- // ========================================
337
- Form: {
338
- labelColor: colors.text.primary,
339
- labelFontSize: constants.typography.fontSize.base,
340
- labelRequiredMarkColor: colors.semantic.error.main,
341
- itemMarginBottom: constants.spacing[4],
342
- verticalLabelPadding: `0 0 ${constants.spacing[2]}px`,
343
- },
344
- // ========================================
345
- // DATA DISPLAY
346
- // ========================================
347
- Table: {
348
- colorBgContainer: colors.surface.card,
349
- headerBg: colors.surface.page,
350
- headerColor: colors.text.secondary,
351
- colorText: colors.text.primary,
352
- colorTextHeading: colors.text.secondary,
353
- borderColor: colors.border.subtle,
354
- // Interactive states
355
- rowHoverBg: colors.surface.interactive,
356
- rowSelectedBg: colors.surface.selected,
357
- rowExpandedBg: colors.surface.nested,
358
- // Smooth rounded
359
- borderRadius: constants.radius.card,
360
- borderRadiusLG: constants.radius.card,
361
- headerBorderRadius: constants.radius.card,
362
- // Padding
363
- cellPaddingBlock: constants.spacing[3],
364
- cellPaddingInline: constants.spacing[4],
365
- cellPaddingBlockSM: constants.spacing[2],
366
- cellPaddingInlineSM: constants.spacing[3],
367
- // Typography
368
- cellFontSize: constants.typography.fontSize.base,
369
- headerSortActiveBg: colors.surface.interactive,
370
- },
371
- Descriptions: {
372
- labelBg: colors.surface.page,
373
- titleColor: colors.text.primary,
374
- contentColor: colors.text.primary,
375
- extraColor: colors.text.secondary,
376
- colorSplit: colors.border.subtle,
377
- itemPaddingBottom: constants.spacing[3],
378
- },
379
- Card: {
380
- colorBgContainer: colors.surface.card,
381
- colorBorderSecondary: colors.border.default,
382
- colorTextHeading: colors.text.primary,
383
- colorTextDescription: colors.text.secondary,
384
- // Gentle shadow on cards
385
- boxShadowTertiary: constants.shadow.card,
386
- // Smooth rounded
387
- borderRadius: constants.radius.card,
388
- borderRadiusLG: constants.radius.card,
389
- padding: constants.spacing[4],
390
- paddingLG: constants.spacing[6],
391
- },
392
- Statistic: {
393
- titleFontSize: constants.typography.fontSize.sm,
394
- contentFontSize: constants.typography.fontSize['4xl'],
395
- },
396
- Timeline: {
397
- tailColor: colors.border.default,
398
- tailWidth: 2,
399
- dotBg: colors.surface.card,
400
- dotBorderWidth: 2,
401
- itemPaddingBottom: constants.spacing[4],
402
- },
403
- Tag: {
404
- defaultBg: colors.neutral[2],
405
- defaultColor: colors.text.primary,
406
- borderRadiusSM: constants.radius.sm,
407
- fontSize: constants.typography.fontSize.sm,
408
- fontSizeSM: constants.typography.fontSize.xs,
409
- },
410
- Badge: {
411
- colorBorderBg: colors.surface.card,
412
- colorError: colors.semantic.error.main,
413
- colorSuccess: colors.semantic.success.main,
414
- colorInfo: colors.accent.default,
415
- colorWarning: colors.semantic.warning.main,
416
- textFontSize: constants.typography.fontSize.xs,
417
- textFontWeight: constants.typography.fontWeight.medium,
418
- },
419
- Avatar: {
420
- colorBgContainer: colors.neutral[3],
421
- colorTextPlaceholder: colors.text.secondary,
422
- borderRadius: constants.radius.avatar,
423
- groupOverlapping: -8,
424
- groupSpace: constants.spacing[1],
425
- },
426
- Calendar: {
427
- colorBgContainer: colors.surface.card,
428
- colorPrimary: colors.accent.default,
429
- itemActiveBg: colors.accent.subtle,
430
- borderRadius: constants.radius.card,
431
- },
432
- Collapse: {
433
- colorBgContainer: colors.surface.card,
434
- headerBg: colors.surface.page,
435
- headerPadding: `${constants.spacing[3]}px ${constants.spacing[4]}px`,
436
- contentPadding: `${constants.spacing[4]}px ${constants.spacing[4]}px`,
437
- borderRadiusLG: constants.radius.card,
438
- },
439
- Tree: {
440
- nodeHoverBg: colors.surface.interactive,
441
- nodeSelectedBg: colors.surface.selected,
442
- directoryNodeSelectedBg: colors.surface.selected,
443
- borderRadius: constants.radius.sm,
444
- },
445
- // ========================================
446
- // FEEDBACK - Elevated with shadows
447
- // ========================================
448
- Alert: {
449
- colorSuccessBg: colors.semantic.success.subtle,
450
- colorSuccessBorder: colors.semantic.success.main,
451
- colorSuccessText: colors.semantic.success.main,
452
- colorErrorBg: colors.semantic.error.subtle,
453
- colorErrorBorder: colors.semantic.error.main,
454
- colorErrorText: colors.semantic.error.main,
455
- colorWarningBg: colors.semantic.warning.subtle,
456
- colorWarningBorder: colors.semantic.warning.main,
457
- colorWarningText: colors.semantic.warning.main,
458
- colorInfoBg: colors.semantic.info.subtle,
459
- colorInfoBorder: colors.semantic.info.main,
460
- colorInfoText: colors.semantic.info.main,
461
- defaultPadding: `${constants.spacing[3]}px ${constants.spacing[4]}px`,
462
- borderRadiusLG: constants.radius.card,
463
- withDescriptionPadding: `${constants.spacing[4]}px ${constants.spacing[5]}px`,
464
- },
465
- Modal: {
466
- contentBg: colors.surface.overlay,
467
- headerBg: colors.surface.overlay,
468
- footerBg: colors.surface.overlay,
469
- titleColor: colors.text.primary,
470
- titleFontSize: constants.typography.fontSize.xl,
471
- colorBgMask: isDark ? 'rgba(0, 0, 0, 0.65)' : 'rgba(0, 0, 0, 0.45)',
472
- // Prominent shadow
473
- boxShadow: constants.shadow.modal,
474
- // Generous rounding
475
- borderRadiusLG: constants.radius.modal,
476
- },
477
- Drawer: {
478
- colorBgElevated: colors.surface.overlay,
479
- colorText: colors.text.primary,
480
- colorBgMask: isDark ? 'rgba(0, 0, 0, 0.65)' : 'rgba(0, 0, 0, 0.45)',
481
- borderRadiusLG: constants.radius.modal,
482
- footerPaddingBlock: constants.spacing[4],
483
- footerPaddingInline: constants.spacing[6],
484
- },
485
- Notification: {
486
- colorBgElevated: colors.surface.overlay,
487
- colorText: colors.text.primary,
488
- colorTextHeading: colors.text.primary,
489
- // Shadow on notification
490
- boxShadow: constants.shadow.popover,
491
- borderRadiusLG: constants.radius.card,
492
- padding: constants.spacing[4],
493
- },
494
- Message: {
495
- contentBg: colors.surface.overlay,
496
- contentPadding: `${constants.spacing[2]}px ${constants.spacing[4]}px`,
497
- // Shadow on message
498
- boxShadow: constants.shadow.popover,
499
- borderRadiusLG: constants.radius.card,
500
- },
501
- Popconfirm: {
502
- colorBgElevated: colors.surface.overlay,
503
- colorText: colors.text.primary,
504
- colorTextHeading: colors.text.primary,
505
- boxShadowSecondary: constants.shadow.popover,
506
- borderRadiusLG: constants.radius.card,
507
- },
508
- Progress: {
509
- defaultColor: colors.accent.default,
510
- colorSuccess: colors.semantic.success.main,
511
- colorError: colors.semantic.error.main,
512
- remainingColor: colors.neutral[3],
513
- borderRadius: 100,
514
- lineBorderRadius: 100,
515
- },
516
- Result: {
517
- titleFontSize: constants.typography.fontSize['3xl'],
518
- subtitleFontSize: constants.typography.fontSize.base,
519
- iconFontSize: constants.typography.fontSize['5xl'],
520
- colorSuccess: colors.semantic.success.main,
521
- colorError: colors.semantic.error.main,
522
- colorInfo: colors.accent.default,
523
- colorWarning: colors.semantic.warning.main,
524
- },
525
- Skeleton: {
526
- colorFill: colors.neutral[2],
527
- colorFillContent: colors.neutral[3],
528
- borderRadiusSM: constants.radius.sm,
529
- },
530
- Spin: {
531
- colorPrimary: colors.accent.default,
532
- },
533
- // ========================================
534
- // NAVIGATION - Accent for active states
535
- // ========================================
536
- Menu: {
537
- itemBg: 'transparent',
538
- itemColor: colors.text.primary,
539
- itemHoverBg: colors.surface.interactive,
540
- itemHoverColor: colors.text.primary,
541
- itemSelectedBg: colors.surface.selected,
542
- itemSelectedColor: colors.accent.default,
543
- itemActiveBg: colors.surface.selected,
544
- // Dark sidebar
545
- darkItemBg: colors.absolute.black,
546
- darkSubMenuItemBg: colors.absolute.black,
547
- darkItemColor: colors.absolute.white,
548
- darkItemHoverBg: 'rgba(255, 255, 255, 0.08)',
549
- darkItemSelectedBg: colors.accent.default,
550
- darkItemSelectedColor: colors.absolute.white,
551
- itemBorderRadius: constants.radius.sm,
552
- itemMarginInline: constants.spacing[1],
553
- itemPaddingInline: constants.spacing[3],
554
- },
555
- Breadcrumb: {
556
- itemColor: colors.text.secondary,
557
- lastItemColor: colors.text.primary,
558
- linkColor: colors.accent.default,
559
- linkHoverColor: colors.accent.hover,
560
- separatorColor: colors.text.tertiary,
561
- separatorMargin: constants.spacing[2],
562
- fontSize: constants.typography.fontSize.sm,
563
- },
564
- Pagination: {
565
- colorPrimary: colors.accent.default,
566
- colorPrimaryHover: colors.accent.hover,
567
- itemActiveBg: colors.accent.default,
568
- itemBg: colors.surface.card,
569
- itemLinkBg: colors.surface.card,
570
- itemInputBg: colors.surface.card,
571
- borderRadius: constants.radius.sm,
572
- },
573
- Steps: {
574
- colorPrimary: colors.accent.default,
575
- colorText: colors.text.secondary,
576
- colorTextDescription: colors.text.tertiary,
577
- colorFillContent: colors.neutral[3],
578
- },
579
- Tabs: {
580
- colorPrimary: colors.accent.default,
581
- itemColor: colors.text.secondary,
582
- itemHoverColor: colors.accent.hover,
583
- itemSelectedColor: colors.accent.default,
584
- itemActiveColor: colors.accent.default,
585
- inkBarColor: colors.accent.default,
586
- colorBgContainer: colors.surface.card,
587
- cardPadding: `${constants.spacing[2]}px ${constants.spacing[4]}px`,
588
- horizontalItemPadding: `${constants.spacing[3]}px 0`,
589
- horizontalItemGutter: constants.spacing[8],
590
- },
591
- Anchor: {
592
- colorPrimary: colors.accent.default,
593
- linkPaddingBlock: constants.spacing[1],
594
- linkPaddingInlineStart: constants.spacing[4],
595
- },
596
- Dropdown: {
597
- colorBgElevated: colors.surface.overlay,
598
- colorText: colors.text.primary,
599
- controlItemBgHover: colors.surface.interactive,
600
- controlItemBgActive: colors.surface.selected,
601
- // Shadow on dropdown
602
- boxShadowSecondary: constants.shadow.popover,
603
- borderRadiusLG: constants.radius.card,
604
- paddingBlock: constants.spacing[1],
605
- },
606
- // ========================================
607
- // LAYOUT
608
- // ========================================
609
- Layout: {
610
- colorBgBody: colors.surface.page,
611
- colorBgHeader: colors.surface.card,
612
- colorBgTrigger: colors.surface.interactive,
613
- headerBg: colors.surface.card,
614
- headerColor: colors.text.primary,
615
- siderBg: colors.absolute.black,
616
- triggerBg: colors.surface.interactive,
617
- triggerColor: colors.text.primary,
618
- headerPadding: `0 ${constants.spacing[6]}px`,
619
- footerPadding: `${constants.spacing[6]}px ${constants.spacing[12]}px`,
620
- },
621
- Divider: {
622
- colorSplit: colors.border.subtle,
623
- colorText: colors.text.tertiary,
624
- colorTextHeading: colors.text.secondary,
625
- verticalMarginInline: constants.spacing[2],
626
- },
627
- // ========================================
628
- // OVERLAYS
629
- // ========================================
630
- Typography: {
631
- colorText: colors.text.primary,
632
- colorTextSecondary: colors.text.secondary,
633
- colorLink: colors.accent.default,
634
- colorLinkHover: colors.accent.hover,
635
- colorLinkActive: colors.accent.active,
636
- titleMarginBottom: constants.spacing[2],
637
- titleMarginTop: constants.spacing[4],
638
- },
639
- Tooltip: {
640
- colorBgSpotlight: colors.neutral[8],
641
- colorTextLightSolid: colors.text.inverse,
642
- // Subtle shadow
643
- boxShadowSecondary: constants.shadow.tooltip,
644
- borderRadius: constants.radius.sm,
645
- },
646
- Popover: {
647
- colorBgElevated: colors.surface.overlay,
648
- colorText: colors.text.primary,
649
- colorTextHeading: colors.text.primary,
650
- // Shadow on popover
651
- boxShadowSecondary: constants.shadow.popover,
652
- borderRadiusLG: constants.radius.card,
653
- padding: constants.spacing[3],
654
- },
655
- // ========================================
656
- // OTHER COMPONENTS
657
- // ========================================
658
- Upload: {
659
- colorFillAlter: colors.surface.interactive,
660
- colorBorder: colors.border.default,
661
- actionsColor: colors.accent.default,
662
- },
663
- Tour: {
664
- colorBgElevated: colors.surface.overlay,
665
- colorPrimary: colors.accent.default,
666
- colorText: colors.text.primary,
667
- boxShadowSecondary: constants.shadow.popover,
668
- borderRadius: constants.radius.card,
669
- },
670
- FloatButton: {
671
- colorBgElevated: colors.surface.overlay,
672
- colorPrimary: colors.accent.default,
673
- colorText: colors.text.primary,
674
- boxShadow: constants.shadow.popover,
675
- borderRadiusLG: constants.radius.avatar,
676
- },
677
- Segmented: {
678
- colorBgLayout: colors.neutral[2],
679
- itemColor: colors.text.secondary,
680
- itemHoverColor: colors.text.primary,
681
- itemHoverBg: colors.surface.interactive,
682
- itemSelectedBg: colors.surface.card,
683
- itemSelectedColor: colors.text.primary,
684
- itemActiveBg: colors.surface.card,
685
- borderRadius: constants.radius.base,
686
- borderRadiusSM: constants.radius.sm,
687
- borderRadiusLG: constants.radius.lg,
688
- fontWeightStrong: constants.typography.fontWeight.medium,
689
- },
690
- Mentions: {
691
- colorBgElevated: colors.surface.overlay,
692
- controlItemBgHover: colors.surface.interactive,
693
- controlItemBgActive: colors.surface.selected,
694
- boxShadowSecondary: constants.shadow.popover,
695
- },
696
- Cascader: {
697
- colorBgElevated: colors.surface.overlay,
698
- controlItemBgHover: colors.surface.interactive,
699
- optionSelectedBg: colors.surface.selected,
700
- colorPrimary: colors.accent.default,
701
- },
702
- TreeSelect: {
703
- colorBgElevated: colors.surface.overlay,
704
- nodeHoverBg: colors.surface.interactive,
705
- nodeSelectedBg: colors.surface.selected,
706
- },
707
- Transfer: {
708
- colorBgContainer: colors.surface.card,
709
- controlItemBgHover: colors.surface.interactive,
710
- controlItemBgActive: colors.surface.selected,
711
- },
712
- Rate: {
713
- colorFillContent: colors.neutral[3],
714
- starColor: '#FADB14',
715
- starBg: colors.neutral[3],
716
- },
717
- Empty: {
718
- colorText: colors.text.secondary,
719
- colorTextDescription: colors.text.tertiary,
720
- colorTextDisabled: colors.text.disabled,
721
- },
722
- List: {
723
- colorBorder: colors.border.subtle,
724
- colorText: colors.text.primary,
725
- colorTextDescription: colors.text.secondary,
726
- itemPadding: `${constants.spacing[3]}px 0`,
727
- itemPaddingSM: `${constants.spacing[2]}px ${constants.spacing[3]}px`,
728
- itemPaddingLG: `${constants.spacing[4]}px ${constants.spacing[6]}px`,
729
- metaMarginBottom: constants.spacing[2],
730
- avatarMarginRight: constants.spacing[4],
731
- titleMarginBottom: constants.spacing[1],
732
- },
733
- },
734
- };
735
- };