Reflexjs
文档模块库指南GitHub
/
,

主题规范

Reflexjs 主题基于 Theme UI 规范的扩展。


主题对象由以下数据类型组成:

  • 标尺:相关 CSS 属性的纯对象或值数组
  • 样式:通过 GlobalStyles 组件注入的全局样式。
  • 变体:组件可组合的变体。
  • 图标Icon 组件使用的 svg 图标库。

您可以在此处了解有关 Theme UI 主题规范的更多信息。

配置标志

可以在你的主题中启用以下配置标志。

标志默认描述
useCustomPropertiestrue启用 CSS 自有属性以帮助缓解再水化期间无样式的内容闪动
useRootStylesfalse<html> 元素中添加在 theme.styles.root 中定义的样式以及 colorbackground-color
useBodyStylestrue(将来会被废弃)在 <body> 元素中添加在 theme.styles.root 中定义的样式以及 colorbackground-color
initialColorModeName'default'用于 theme.colors 中顶级调色板的 key
useColorSchemeMediaQueryfalse根据 prefers-color-scheme 媒体查询初始化颜色模式
useBorderBoxtrue添加全局样式 box-sizing: border-box
useLocalStoragetruelocalStorage 中持久保存颜色模式

这些标志来自 Theme UI 规范。您可以在此处了解更多信息。

示例主题

theme.ts
import { 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>`,
},
}
创建 React 应用样式属性

© 2022 Reflexjs

文档方块库指南GitHub