import { ReactNode } from 'react'; import { OverrideProps } from '@bifrostui/types'; import { BaseLang } from '../locales/base'; export interface Breakpoints { /** * 超小屏幕 (小于 576px,实际为了处理临界值,断点值为 575.98px) * @default '575.98px' */ xs?: string; /** * 小屏幕 * @default '576px' */ sm?: string; /** * 中等屏幕 * @default '768px' */ md?: string; /** * 大屏幕 * @default '992px' */ lg?: string; /** * 超大屏幕 * @default '1200px' */ xl?: string; } /** * 响应式屏幕断点配置 */ interface ResponsiveTokenOptions { /** * 超小屏幕 (小于 576px,实际为了处理临界值,断点值为 575.98px) */ xs?: Record; /** * 小屏幕 (≥ 576px) */ sm?: Record; /** * 中等屏幕 (≥ 768px) */ md?: Record; /** * 大屏幕 (≥ 992px) */ lg?: Record; /** * 超大屏幕 (≥ 1200px) */ xl?: Record; } interface ThemeProps { /** * 当前ThemeProvider是否为最顶层 * 若当前应用会出现嵌套的ThemeProvider,则需要将最外层的ThemeProvider isRoot属性设置为true * TODO 不通过属性判断 * @default false */ isRoot?: boolean; /** * 挂载的容器 * @default root */ container?: ReactNode; /** * 挂载容器的id */ containerId?: string; /** * 语言 */ locale?: BaseLang; /** * 响应式屏幕断点配置 */ responsive?: ResponsiveTokenOptions; /** * 默认高亮主题Token */ defaultLightToken?: Record; /** * 默认暗黑主题Token */ defaultDarkToken?: Record; /** * 大麦高亮主题Token */ dmLightToken?: Record; /** * 大麦暗黑主题Token */ dmDarkToken?: Record; /** * 组件全局Token */ token?: Record; } /** * 复写内置主题Tokens */ type BuiltInThemesTokenOptions = Pick; /** * 挂载组件自定义Tokens参数 */ export type MountComponentsTokenOptions = Pick; /** * 挂载响应式Tokens参数 */ type componentsTokenOptions = Pick; export type MountResponsiveTokenOptions = Pick & { breakpoints?: Breakpoints; }; /** * 更新Tokens */ export type UpdateTokensOptions = Pick & { rootString: string; }; export type ThemeProviderProps = OverrideProps<{ props: P & ThemeProps; defaultComponent: D; }, D>; export { BaseLang, ResponsiveTokenOptions, ThemeProps, BuiltInThemesTokenOptions, componentsTokenOptions, };