布局

NextUI 的插件提供了多种布局自定义选项。更改间距单位、字体大小、行高、半径等,以根据您的喜好个性化每个主题。

使用布局令牌,您可以在所有组件中确保统一的美观,而无需覆盖默认的 Tailwind CSS 配置。

module.exports = {
plugins: [
nextui({
layout: {}, // common layout options
themes: {
light: {
layout: {}, // light theme layout options
// ...
},
dark: {
layout: {}, // dark theme layout options
// ...
},
// ... custom themes
},
}),
],
};

布局选项应用于所有组件。

默认布局

布局令牌的默认值为

module.exports = {
plugins: [
nextui({
layout: {
dividerWeight: "1px", // h-divider the default height applied to the divider component
disabledOpacity: 0.5, // this value is applied as opacity-[value] when the component is disabled
fontSize: {
tiny: "0.75rem", // text-tiny
small: "0.875rem", // text-small
medium: "1rem", // text-medium
large: "1.125rem", // text-large
},
lineHeight: {
tiny: "1rem", // text-tiny
small: "1.25rem", // text-small
medium: "1.5rem", // text-medium
large: "1.75rem", // text-large
},
radius: {
small: "8px", // rounded-small
medium: "12px", // rounded-medium
large: "14px", // rounded-large
},
borderWidth: {
small: "1px", // border-small
medium: "2px", // border-medium (default)
large: "3px", // border-large
},
},
themes: {
light: {
layout: {
hoverOpacity: 0.8, // this value is applied as opacity-[value] when the component is hovered
boxShadow: {
// shadow-small
small:
"0px 0px 5px 0px rgb(0 0 0 / 0.02), 0px 2px 10px 0px rgb(0 0 0 / 0.06), 0px 0px 1px 0px rgb(0 0 0 / 0.3)",
// shadow-medium
medium:
"0px 0px 15px 0px rgb(0 0 0 / 0.03), 0px 2px 30px 0px rgb(0 0 0 / 0.08), 0px 0px 1px 0px rgb(0 0 0 / 0.3)",
// shadow-large
large:
"0px 0px 30px 0px rgb(0 0 0 / 0.04), 0px 30px 60px 0px rgb(0 0 0 / 0.12), 0px 0px 1px 0px rgb(0 0 0 / 0.3)",
},
},
},
dark: {
layout: {
hoverOpacity: 0.9, // this value is applied as opacity-[value] when the component is hovered
boxShadow: {
// shadow-small
small:
"0px 0px 5px 0px rgb(0 0 0 / 0.05), 0px 2px 10px 0px rgb(0 0 0 / 0.2), inset 0px 0px 1px 0px rgb(255 255 255 / 0.15)",
// shadow-medium
medium:
"0px 0px 15px 0px rgb(0 0 0 / 0.06), 0px 2px 30px 0px rgb(0 0 0 / 0.22), inset 0px 0px 1px 0px rgb(255 255 255 / 0.15)",
// shadow-large
large:
"0px 0px 30px 0px rgb(0 0 0 / 0.07), 0px 30px 60px 0px rgb(0 0 0 / 0.26), inset 0px 0px 1px 0px rgb(255 255 255 / 0.15)",
},
},
},
},
}),
],
};

CSS 变量

NextUI 使用格式 --prefix-prop-name-scale 为每个布局令牌创建 CSS 变量。默认情况下,前缀为 nextui,但你可以使用 prefix 选项进行更改。

module.exports = {
plugins: [
nextui({
prefix: "myapp",
}),
],
};

然后你可以在 CSS 文件中使用 CSS 变量。

/* With default prefix */
.my-button {
font-size: var(--nextui-font-size-small);
line-height: var(--nextui-line-height-small);
border-radius: var(--nextui-radius-medium);
}
/* With custom prefix */
.my-component {
font-size: var(--myapp-font-size-small);
line-height: var(--myapp-line-height-small);
border-radius: var(--myapp-radius-medium);
}

API 参考

属性类型说明
hoverOpacity字符串、数字当组件悬停时应用为 opacity-[value] 的 0 到 1 之间的一个数字。
disabledOpacity字符串、数字当组件禁用时应用为 opacity-[value] 的 0 到 1 之间的一个数字。
dividerWeight字符串应用于分隔符组件的默认高度。我们建议使用 px 单位。
fontSizeFontThemeUnit应用于所有组件的默认字体大小。
lineHeightFontThemeUnit应用于所有组件的默认行高。
radiusBaseThemeUnit应用于所有组件的默认半径。我们建议使用 rem 单位。
borderWidthBaseThemeUnit应用于所有组件的边框宽度。
boxShadowBaseThemeUnit应用于所有组件的盒子阴影。

BaseThemeUnit

export type BaseThemeUnit = {
small?: string;
medium?: string;
large?: string;
};

FontThemeUnit

export type FontThemeUnit = {
small?: string;
medium?: string;
large?: string;
tiny?: string;
};