ConfigProvider
ConfigProvider passes component configuration through a subtree.
@duskmoon-dev/components/config-provider Usage
When to use
- Use it to clarify state, metadata, content hierarchy, or loading without creating a new workflow.
- Pair it with semantic content so visual treatment never becomes the only source of meaning.
Implementation notes
Features
Focuses on status, metadata, empty/loading states, or content grouping without owning application state.
Uses DuskMoon tokens so the component follows the active docs theme.
ConfigProvider is most often configured through `component`, `prefixCls`, `iconPrefixCls`, `direction`.
Provides config values and root direction classes
Feature Demos
Feature demos are authored for the component page, then supplemented with behavior scenarios from the component test coverage.
Basic usage
Import the component stylesheet and ConfigProvider from its package subpath, then render it with the core props.
import "@duskmoon-dev/components/styles.css";
import { ConfigProvider } from "@duskmoon-dev/components/config-provider";
export function Example() {
return (<ConfigProvider>DuskMoon Config Provider</ConfigProvider>);
} Provides config values and root direction classes
test-backedConfigProvider scenario from the component test coverage: provides config values and root direction classes.
import "@duskmoon-dev/components/styles.css";
import { ConfigProvider } from "@duskmoon-dev/components/config-provider";
export function ConfigProviderProvidesConfigValuesAndDemo() {
return (<ConfigProvider>DuskMoon Config Provider</ConfigProvider>);
} Supports nested merge and fragment mode
test-backedConfigProvider scenario from the component test coverage: supports nested merge and fragment mode.
import "@duskmoon-dev/components/styles.css";
import { ConfigProvider } from "@duskmoon-dev/components/config-provider";
export function ConfigProviderSupportsNestedMergeAndDemo() {
return (<ConfigProvider>DuskMoon Config Provider</ConfigProvider>);
} Supports global config defaults
test-backedConfigProvider scenario from the component test coverage: supports global config defaults.
import "@duskmoon-dev/components/styles.css";
import { ConfigProvider } from "@duskmoon-dev/components/config-provider";
export function ConfigProviderSupportsGlobalConfigDefaultsDemo() {
return (<ConfigProvider>DuskMoon Config Provider</ConfigProvider>);
} Theme aware
Docs previews inherit the DuskMoon data-theme value. Use the header switch to compare light and dark rendering.
<div data-theme="sunshine">
<ConfigProvider>DuskMoon Config Provider</ConfigProvider>
</div>
<div data-theme="moonlight">
<ConfigProvider>DuskMoon Config Provider</ConfigProvider>
</div> API
The API reference below lists every parsed exported type or interface for ConfigProvider. Start with `component`, `prefixCls`, `iconPrefixCls`, `direction` for common usage.
packages/components/src/components/config-provider/ConfigProvider.types.ts
Scenarios: packages/components/src/components/config-provider/ConfigProvider.test.tsx | Prop | Type | Required | Description |
|---|---|---|---|
children | ReactNode | No | children configures ConfigProvider. |
className | string | No | className configures ConfigProvider. |
component | false | ElementType | No | component configures ConfigProvider. |
prefixCls | string | No | prefixCls configures ConfigProvider. |
iconPrefixCls | string | No | iconPrefixCls configures ConfigProvider. |
direction | ConfigDirection | No | direction configures ConfigProvider. |
locale | Record<string, unknown> | No | locale configures ConfigProvider. |
theme | ConfigProviderTheme | No | theme configures ConfigProvider. |
getPopupContainer | (triggerNode?: HTMLElement) => HTMLElement | No | getPopupContainer configures ConfigProvider. |
renderEmpty | (componentName?: string) => ReactNode | No | renderEmpty configures ConfigProvider. |
virtual | boolean | No | virtual configures ConfigProvider. |
wave | Record<string, unknown> | false | No | wave configures ConfigProvider. |
| Prop | Type | Required | Description |
|---|---|---|---|
token | Record<string, unknown> | No | token configures ConfigProvider. |
components | Record<string, unknown> | No | components configures ConfigProvider. |
algorithm | unknown | No | algorithm configures ConfigProvider. |
hashed | boolean | No | hashed configures ConfigProvider. |
cssVar | boolean | Record<string, unknown> | No | cssVar configures ConfigProvider. |
| Prop | Type | Required | Description |
|---|---|---|---|
prefixCls | string | Yes | prefixCls configures ConfigProvider. |
iconPrefixCls | string | Yes | iconPrefixCls configures ConfigProvider. |
direction | ConfigDirection | No | direction configures ConfigProvider. |
locale | Record<string, unknown> | No | locale configures ConfigProvider. |
theme | ConfigProviderTheme | No | theme configures ConfigProvider. |
getPopupContainer | (triggerNode?: HTMLElement) => HTMLElement | No | getPopupContainer configures ConfigProvider. |
renderEmpty | (componentName?: string) => ReactNode | No | renderEmpty configures ConfigProvider. |
virtual | boolean | No | virtual configures ConfigProvider. |
wave | Record<string, unknown> | false | No | wave configures ConfigProvider. |
| Prop | Type | Required | Description |
|---|---|---|---|
ConfigContext | Context<ConfigProviderContextValue> | Yes | ConfigContext configures ConfigProvider. |
useConfig | () => ConfigProviderContextValue | Yes | useConfig configures ConfigProvider. |
config | (config: Partial<ConfigProviderContextValue>) => void | Yes | config configures ConfigProvider. |
"ltr" | "rtl"