主题规范
Reflexjs 主题基于 Theme UI 规范的扩展。
主题对象由以下数据类型组成:
- 标尺:相关 CSS 属性的纯对象或值数组
- 样式:通过
GlobalStyles
组件注入的全局样式。 - 变体:组件可组合的变体。
- 图标:
Icon
组件使用的 svg 图标库。
您可以在此处了解有关 Theme UI 主题规范的更多信息。
配置标志
可以在你的主题中启用以下配置标志。
标志 | 默认 | 描述 |
---|---|---|
useCustomProperties | true | 启用 CSS 自有属性以帮助缓解再水化期间无样式的内容闪动 |
useRootStyles | false | 在 <html> 元素中添加在 theme.styles.root 中定义的样式以及 color 和 background-color |
useBodyStyles | true | (将来会被废弃)在 <body> 元素中添加在 theme.styles.root 中定义的样式以及 color 和 background-color |
initialColorModeName | 'default' | 用于 theme.colors 中顶级调色板的 key |
useColorSchemeMediaQuery | false | 根据 prefers-color-scheme 媒体查询初始化颜色模式 |
useBorderBox | true | 添加全局样式 box-sizing: border-box |
useLocalStorage | true | 在 localStorage 中持久保存颜色模式 |
这些标志来自 Theme UI 规范。您可以在此处了解更多信息。
示例主题
theme.tsimport { Theme } from "reflexjs"const theme: Theme = {breakpoints: ["640px", "768px", "1024px", "1280px"],colors: {text: "#111",background: "#fff",primary: "#06f",modes: {dark: {text: "#ededee",background: "#1a202c",primary: "#fb3640",},},},fonts: {body: "system-ui, sans-serif",heading: "system-ui, sans-serif",monospace: "Menlo, monospace",},fontWeights: {body: 400,heading: 700,bold: 700,},lineHeights: {body: 1.5,heading: 1.125,},styles: {// Global styles.root: {"*": {m: 0,p: 0,},},},// Variants// <p variant="text.lead" />text: {color: "text",fontFamily: "body",lead: {fontSize: "2xl",lineHeight: "normal",fontWeight: "normal",},},// Icons.// <Icon name="arrow-right" />icons: {"arrow-right": `<svg fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" ...></path></svg>`,},}