feat(student-portal): 完整实现 student-portal 微前端
包含 src 全部实现、Dockerfile、配置文件、contracts 包等
This commit is contained in:
78
apps/student-portal/tailwind.config.js
Normal file
78
apps/student-portal/tailwind.config.js
Normal file
@@ -0,0 +1,78 @@
|
||||
/**
|
||||
* student-portal Tailwind 配置(ai14)
|
||||
*
|
||||
* 设计令牌三层规范(project_rules §3.10):
|
||||
* - Layer 1 Primitive:原始色板/字号/间距(src/styles/primitive.css)
|
||||
* - Layer 2 Semantic:语义令牌(src/styles/semantic.css)
|
||||
* - Layer 3 Tailwind Theme:@theme inline 映射(本文件)
|
||||
*
|
||||
* 与 teacher-portal Shell 令牌对齐(paper/ink/accent/rule)
|
||||
* 禁止硬编码 hsl()/#hex(ESLint no-restricted-syntax 强制)
|
||||
*/
|
||||
|
||||
/** @type {import('tailwindcss').Config} */
|
||||
module.exports = {
|
||||
content: ['./src/**/*.{js,ts,jsx,tsx}'],
|
||||
theme: {
|
||||
extend: {
|
||||
colors: {
|
||||
// 语义令牌:引用 CSS 变量(Layer 2 → Layer 3)
|
||||
paper: 'var(--color-paper)',
|
||||
ink: {
|
||||
DEFAULT: 'var(--color-ink)',
|
||||
muted: 'var(--color-ink-muted)',
|
||||
subtle: 'var(--color-ink-subtle)',
|
||||
},
|
||||
accent: {
|
||||
DEFAULT: 'var(--color-accent)',
|
||||
hover: 'var(--color-accent-hover)',
|
||||
muted: 'var(--color-accent-muted)',
|
||||
},
|
||||
rule: 'var(--color-rule)',
|
||||
success: 'var(--color-success)',
|
||||
warning: 'var(--color-warning)',
|
||||
danger: 'var(--color-danger)',
|
||||
info: 'var(--color-info)',
|
||||
},
|
||||
fontFamily: {
|
||||
serif: ['var(--font-serif)', 'Georgia', 'serif'],
|
||||
sans: ['var(--font-sans)', 'system-ui', 'sans-serif'],
|
||||
mono: ['var(--font-mono)', 'monospace'],
|
||||
},
|
||||
fontSize: {
|
||||
// 对齐 var(--font-size-1~9) 语义令牌
|
||||
xs: 'var(--font-size-1)',
|
||||
sm: 'var(--font-size-2)',
|
||||
base: 'var(--font-size-3)',
|
||||
lg: 'var(--font-size-4)',
|
||||
xl: 'var(--font-size-5)',
|
||||
'2xl': 'var(--font-size-6)',
|
||||
'3xl': 'var(--font-size-7)',
|
||||
'4xl': 'var(--font-size-8)',
|
||||
'5xl': 'var(--font-size-9)',
|
||||
},
|
||||
spacing: {
|
||||
// 语义间距令牌
|
||||
'xs': 'var(--space-xs)',
|
||||
'sm': 'var(--space-sm)',
|
||||
'md': 'var(--space-md)',
|
||||
'lg': 'var(--space-lg)',
|
||||
'xl': 'var(--space-xl)',
|
||||
'2xl': 'var(--space-2xl)',
|
||||
'3xl': 'var(--space-3xl)',
|
||||
},
|
||||
borderRadius: {
|
||||
DEFAULT: 'var(--radius-base)',
|
||||
sm: 'var(--radius-sm)',
|
||||
md: 'var(--radius-md)',
|
||||
lg: 'var(--radius-lg)',
|
||||
},
|
||||
boxShadow: {
|
||||
paper: 'var(--shadow-paper)',
|
||||
card: 'var(--shadow-card)',
|
||||
focus: 'var(--shadow-focus)',
|
||||
},
|
||||
},
|
||||
},
|
||||
plugins: [],
|
||||
};
|
||||
Reference in New Issue
Block a user