2026-10-18 19:39:59 +03:30
|
|
|
import type { ThemeConfig } from 'ant-design-vue/es/config-provider/context';
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Central Ant Design Vue v4 theme for Montact.
|
|
|
|
|
* Migrated pages must consume this via App ConfigProvider — do not fork in views.
|
|
|
|
|
*
|
|
|
|
|
* controlHeight: 36 is the system default (Ant derives SM/LG).
|
|
|
|
|
* Do not set controlHeight* under components — inherit the token.
|
|
|
|
|
*/
|
2026-11-03 16:51:51 +03:30
|
|
|
/** Tailwind gray-50 / gray-100 / gray-200 — layout fill, segmented track, borders */
|
2026-10-18 19:39:59 +03:30
|
|
|
const GRAY_50 = '#f9fafb';
|
2026-11-03 16:51:51 +03:30
|
|
|
const GRAY_100 = '#f3f4f6';
|
2026-10-18 19:39:59 +03:30
|
|
|
const GRAY_200 = '#e5e7eb';
|
|
|
|
|
|
|
|
|
|
export const antdTheme = {
|
|
|
|
|
token: {
|
|
|
|
|
colorPrimary: '#10b981',
|
|
|
|
|
fontFamily: '"IRANSans", Tahoma, sans-serif',
|
|
|
|
|
|
|
|
|
|
/** Page / subtle surface fill */
|
|
|
|
|
colorBgLayout: GRAY_50,
|
|
|
|
|
colorFillQuaternary: GRAY_50,
|
|
|
|
|
colorFillAlter: GRAY_50,
|
|
|
|
|
|
|
|
|
|
/** Control, card, and divider borders */
|
|
|
|
|
colorBorder: GRAY_200,
|
|
|
|
|
colorBorderSecondary: GRAY_200,
|
|
|
|
|
|
|
|
|
|
borderRadius: 8,
|
|
|
|
|
borderRadiusSM: 6,
|
|
|
|
|
borderRadiusLG: 12,
|
|
|
|
|
|
|
|
|
|
/** Default Ant control size for the whole app (buttons, inputs, selects, …). */
|
|
|
|
|
controlHeight: 36,
|
|
|
|
|
|
|
|
|
|
/* Spacing scale: 8, 12, 16, 20, 24 */
|
|
|
|
|
paddingXXS: 4,
|
|
|
|
|
paddingXS: 8,
|
|
|
|
|
paddingSM: 12,
|
|
|
|
|
padding: 16,
|
|
|
|
|
paddingMD: 20,
|
|
|
|
|
paddingLG: 24,
|
|
|
|
|
paddingXL: 32,
|
|
|
|
|
|
|
|
|
|
marginXXS: 4,
|
|
|
|
|
marginXS: 8,
|
|
|
|
|
marginSM: 12,
|
|
|
|
|
margin: 16,
|
|
|
|
|
marginMD: 20,
|
|
|
|
|
marginLG: 24,
|
|
|
|
|
marginXL: 32,
|
|
|
|
|
|
|
|
|
|
boxShadow:
|
|
|
|
|
'0 1px 2px 0 rgba(15, 23, 42, 0.04), 0 1px 6px -1px rgba(15, 23, 42, 0.06), 0 2px 4px 0 rgba(15, 23, 42, 0.04)',
|
|
|
|
|
boxShadowSecondary:
|
|
|
|
|
'0 6px 16px 0 rgba(15, 23, 42, 0.08), 0 3px 6px -4px rgba(15, 23, 42, 0.1), 0 9px 28px 8px rgba(15, 23, 42, 0.05)',
|
|
|
|
|
},
|
|
|
|
|
components: {
|
|
|
|
|
Card: {
|
|
|
|
|
paddingLG: 24,
|
|
|
|
|
headerBg: 'transparent',
|
|
|
|
|
},
|
|
|
|
|
Collapse: {
|
|
|
|
|
headerBg: GRAY_50,
|
|
|
|
|
contentBg: GRAY_50,
|
|
|
|
|
colorBorder: GRAY_200,
|
|
|
|
|
},
|
2026-11-03 16:51:51 +03:30
|
|
|
/**
|
|
|
|
|
* Segmented track uses colorBgLayout. Page chrome is gray-50, so the
|
|
|
|
|
* default track disappears. Keep the track on gray-100 for every Segmented.
|
|
|
|
|
*/
|
|
|
|
|
Segmented: {
|
|
|
|
|
colorBgLayout: GRAY_100,
|
|
|
|
|
trackBg: GRAY_100,
|
|
|
|
|
},
|
2026-10-18 19:39:59 +03:30
|
|
|
Input: {
|
|
|
|
|
colorBorder: GRAY_200,
|
|
|
|
|
},
|
|
|
|
|
Select: {
|
|
|
|
|
colorBorder: GRAY_200,
|
|
|
|
|
},
|
|
|
|
|
Form: {
|
|
|
|
|
itemMarginBottom: 18,
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
} as ThemeConfig;
|