ConfigProvider 全局配置
为内部所有 ccui 组件提供统一的全局配置:尺寸、方向、品牌色、语言、类名前缀。
何时使用
- 应用根部统一覆盖:默认尺寸、文字方向、品牌色 token。
- 多语言场景下注入语言包。
- 与外部库共存时需要换
prefixCls避免类名冲突。
自定义品牌色
theme.token 接收 camelCase 形式的 token(如 colorPrimary),ConfigProvider 会把它映射为对应 CSS 变量并下传到子组件。
同时调多个 token
colorPrimary / borderRadius / colorError 等都可以一起传。
全局组件尺寸
component-size 让作用域内的 c-button / c-input 等组件默认走对应尺寸(仍可被组件自身的 size 覆盖)。
文字方向
direction="rtl" 让内部组件在阿拉伯语 / 希伯来语等场景下从右向左排布。
多个 ConfigProvider 嵌套
后代的 ConfigProvider 会覆盖外层配置;这样可以在页面局部使用不同主题。
切换语言
传入 locale 把内部组件的默认文案换成对应语言。ccui 内置 zhCN / enUS / jaJP / koKR 四个语言包,可从 @vaebe/ccui 直接导出;未覆盖的 namespace 会自动回退到 zhCN。切换 locale 时全局 dayjs.locale() 也会同步切换。
下面用 Pagination 演示四语言切换:
DatePicker / TimePicker / RangePicker / Calendar 的 placeholder、周名、面板标题、按钮文案同样会跟着 locale 切换:
在组件内读取配置
业务组件用组合 API useConfig 读当前生效的配置。
ts
import { useConfig } from '@vaebe/ccui'
const cfg = useConfig()
// cfg.componentSize / cfg.direction / cfg.locale / cfg.theme / cfg.prefixClsAPI
Props
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
| prefixCls | string | 'ccui' | 类名前缀 |
| componentSize | 'small' | 'middle' | 'large' | 'middle' | 默认组件尺寸 |
| direction | 'ltr' | 'rtl' | 'ltr' | 文字方向 |
| locale | Locale | — | 语言包 |
| theme | { token, algorithm } | — | 主题配置:token 用 camelCase(colorPrimary / borderRadius 等),自动映射为 CSS 变量并下传 |
| iconPrefixCls | string | 'ccui-icon' | 图标类名前缀 |
useConfig
返回当前生效的 ConfigContext:{ prefixCls, componentSize, direction, locale, theme, iconPrefixCls }。