/** * UI 样式基础配置 * 包含所有非颜色相关的样式:布局、大小、间距、圆角等。 * 默认风格服务后台工作台,不做展示页式大圆角、毛玻璃、浮动光效。 */ // 基础结构样式(不包含颜色) export const baseCardStyles = { // 基础卡片结构 base: 'rounded-lg border p-5 transition-colors duration-200', // 悬停卡片结构 hover: 'rounded-lg border p-5 transition-colors duration-200', // 大卡片结构 large: 'rounded-lg border p-6 transition-colors duration-200', // 扁平卡片结构 flat: 'rounded-lg border p-5 transition-colors duration-200', // 兼容旧 variant,实际降级为普通卡片 rainbow: 'rounded-lg border p-5 transition-colors duration-200', // 兼容旧 variant,实际降级为普通卡片 glass: 'rounded-lg border p-5 transition-colors duration-200', // 兼容旧 variant,实际降级为普通卡片 neon: 'rounded-lg border p-5 transition-colors duration-200', } as const export const baseButtonStyles = { // 主要按钮结构 primary: 'px-4 py-2 rounded-lg text-white font-medium transition-colors duration-200 disabled:opacity-50 disabled:cursor-not-allowed', // 次要按钮结构(hover 边框颜色在主题中定义) secondary: 'px-4 py-2 rounded-lg border font-medium transition-colors duration-200 disabled:opacity-50 disabled:cursor-not-allowed', // 幽灵按钮结构 ghost: 'px-4 py-2 rounded-lg font-medium transition-colors duration-200 disabled:opacity-50 disabled:cursor-not-allowed', // 危险按钮结构(不包含颜色,颜色由主题提供) danger: 'px-4 py-2 rounded-lg text-white font-medium transition-colors duration-200 disabled:opacity-50 disabled:cursor-not-allowed', // 成功按钮结构 success: 'px-4 py-2 rounded-lg text-white font-medium transition-colors duration-200 disabled:opacity-50 disabled:cursor-not-allowed', // 兼容旧 variant,实际降级为普通主按钮 rainbow: 'px-4 py-2 rounded-lg bg-slate-900 dark:bg-slate-100 text-white dark:text-slate-900 font-medium transition-colors duration-200 disabled:opacity-50 disabled:cursor-not-allowed', // 兼容旧 variant,实际降级为普通紧凑按钮 rainbowCompact: 'px-2 py-1 text-xs rounded-md bg-slate-900 dark:bg-slate-100 text-white dark:text-slate-900 font-medium transition-colors duration-200 disabled:opacity-50 disabled:cursor-not-allowed', // 兼容旧 variant,实际降级为普通主按钮 neon: 'px-4 py-2 rounded-lg bg-slate-900 dark:bg-slate-100 text-white dark:text-slate-900 font-medium transition-colors duration-200 disabled:opacity-50 disabled:cursor-not-allowed', // 兼容旧 variant,实际降级为普通次按钮 glass: 'px-4 py-2 rounded-lg border font-medium transition-colors duration-200 disabled:opacity-50 disabled:cursor-not-allowed', } as const export const baseInputStyles = { // 基础输入框结构(focus 颜色在主题中定义) base: 'w-full px-3 py-2 rounded-lg border focus:ring-2 outline-none transition-colors', // 错误输入框结构(focus 颜色在主题中定义) error: 'w-full px-3 py-2 rounded-lg border-2 focus:ring-2 outline-none transition-colors', } as const export const baseNavItemStyles = { // 基础导航项结构 base: 'px-3 py-2 rounded-lg border transition-colors duration-200', // 悬停导航项结构 hover: 'px-3 py-2 rounded-lg border transition-colors duration-200', // 激活导航项结构 active: 'px-3 py-2 rounded-lg border transition-colors duration-200', // 兼容旧 variant,实际降级为普通导航项 rainbow: 'px-3 py-2 rounded-lg border transition-colors duration-200', // 标签页导航项结构 tabBase: 'relative pb-4 px-5 font-medium transition-all duration-300 ease-out border-none bg-transparent', tabActive: 'relative pb-4 px-5 font-medium transition-all duration-300 ease-out border-none bg-transparent', } as const export const baseBadgeStyles = { base: 'px-3 py-1 rounded-lg text-xs font-medium', primary: 'px-3 py-1 rounded-lg text-xs font-medium', success: 'px-3 py-1 rounded-lg text-xs font-medium', warning: 'px-3 py-1 rounded-lg text-xs font-medium', danger: 'px-3 py-1 rounded-lg text-xs font-medium', } as const // 修饰符(不包含颜色) export const baseButtonModifiers = { compact: 'px-3 py-1.5 text-sm', compactXs: 'px-2 py-1 text-xs', icon: 'p-2 rounded-lg', block: 'w-full justify-center', pill: 'rounded-full', } as const export const baseInputModifiers = { compact: 'px-3 py-2 text-sm rounded-lg', compactXs: 'px-2.5 py-1.5 text-xs rounded-lg', } as const export const baseSpacingStyles = { section: 'space-y-8', // 区块间距 card: 'space-y-6', // 卡片内间距 form: 'space-y-4', // 表单元素间距 compact: 'space-y-2', // 紧密间距 } as const // Modal 基础样式(不包含颜色) export const baseModalStyles = { // 遮罩层 overlay: 'fixed inset-0 z-50 flex items-center justify-center px-4 py-8 sm:px-6 sm:py-12 lg:px-10 lg:py-16 bg-slate-950/45 dark:bg-black/65 transition-opacity duration-200', // 弹窗容器 container: 'relative w-auto max-w-full max-h-[80vh] sm:max-h-[75vh] overflow-hidden transition-opacity duration-200 flex-none rounded-lg', // 弹窗内容(阴影在主题颜色中定义,这里不重复定义) content: 'w-full rounded-lg bg-white dark:bg-slate-900 overflow-hidden transition-opacity duration-200', // 弹窗尺寸 sizes: { xs: 'max-w-[20rem]', small: 'max-w-sm', medium: 'max-w-md', large: 'max-w-lg', xlarge: 'max-w-2xl', xxlarge: 'max-w-7xl', fullscreen: 'max-w-full w-full h-full max-h-[85vh]', }, // 弹窗头部 header: 'px-8 py-5 border-b flex items-center justify-between bg-transparent', // 弹窗标题 title: 'text-lg font-semibold', // 弹窗关闭按钮 closeButton: 'p-1 rounded-lg hover:bg-opacity-10 transition-colors duration-200', // 弹窗主体 body: 'px-8 py-6 max-h-[60vh] sm:max-h-[55vh] overflow-y-auto bg-transparent', // 弹窗底部 footer: 'px-8 py-5 border-t flex items-center justify-end gap-3 bg-transparent', } as const // Section 显示动画样式(来自外观设置) export const baseSectionRevealStyles = { // 基础显示动画类 base: 'transition-opacity duration-300 ease-out', // 可见状态 visible: 'opacity-100', // 隐藏状态 hidden: 'opacity-0', } as const // Hero 区域样式(保留兼容,实际按普通页面区块处理) export const baseHeroStyles = { // Hero 卡片基础结构 card: 'relative overflow-hidden rounded-lg border transition-colors duration-200 p-5', // Hero 标题区域 header: 'relative z-10 flex flex-col gap-5 xl:flex-row xl:items-center xl:justify-between', // Hero 内容区域 content: 'space-y-3 max-w-2xl', } as const // 浮动光球样式(保留兼容,默认隐藏) export const baseFloatingOrbStyles = { // 光球基础样式 base: 'hidden', // 右上角光球 topRight: '', // 左下角光球 bottomLeft: '', } as const // 开关切换器样式(来自外观设置) export const baseToggleStyles = { // 开关容器 container: 'relative inline-flex items-center cursor-pointer', // 开关轨道(颜色在主题中定义) track: 'w-11 h-6 peer-focus:outline-none peer-focus:ring-4 rounded-full peer peer-checked:after:translate-x-full after:absolute after:top-[2px] after:left-[2px] after:rounded-full after:h-5 after:w-5 after:transition-all', // 开关输入(隐藏) input: 'sr-only peer', } as const