feat(student-portal): 完整实现 student-portal 微前端

包含 src 全部实现、Dockerfile、配置文件、contracts 包等
This commit is contained in:
SpecialX
2026-07-10 19:10:36 +08:00
parent 24c2860b41
commit 74474a2d04
80 changed files with 17226 additions and 70 deletions

View 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()/#hexESLint 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: [],
};