DmLayout
DmLayout documents the DmLayout export from duskmoon.
@duskmoon-dev/components/dm-layout Usage
When to use
- Use it in DuskMoon application screens that need a packaged, opinionated workflow component.
- Reach for the lower-level standard component when the screen needs custom composition.
Implementation notes
Features
Wraps lower-level primitives into a higher-level DuskMoon-prefixed workflow API.
Examples show the defaults and composition points expected by internal DuskMoon app screens.
DmLayout is most often configured through `menus`, `selectedKey`, `openAllKeys`, `collapsed`.
Derives selected menu, open keys, breadcrumb, and tips
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 DmLayout from its package subpath, then render it with the core props.
import "@duskmoon-dev/components/styles.css";
import { DmLayout } from "@duskmoon-dev/components/dm-layout";
export function Example() {
return (<DmLayout>DuskMoon Dm Layout</DmLayout>);
} Derives selected menu, open keys, breadcrumb, and tips
test-backedDmLayout scenario from the component test coverage: derives selected menu, open keys, breadcrumb, and tips.
import "@duskmoon-dev/components/styles.css";
import { DmLayout } from "@duskmoon-dev/components/dm-layout";
export function DmLayoutDerivesSelectedMenuOpenDemo() {
return (<DmLayout>DuskMoon Dm Layout</DmLayout>);
} Renders composed menu, breadcrumb, tips, and content
test-backedDmLayout scenario from the component test coverage: renders composed menu, breadcrumb, tips, and content.
import "@duskmoon-dev/components/styles.css";
import { DmLayout } from "@duskmoon-dev/components/dm-layout";
export function DmLayoutRendersComposedMenuBreadcrumbDemo() {
return (<DmLayout>DuskMoon Dm Layout</DmLayout>);
} Supports menu clicks, collapse, and explicit breadcrumb items
test-backedDmLayout scenario from the component test coverage: supports menu clicks, collapse, and explicit breadcrumb items.
import "@duskmoon-dev/components/styles.css";
import { DmLayout } from "@duskmoon-dev/components/dm-layout";
export function DmLayoutSupportsMenuClicksCollapseDemo() {
return (<DmLayout>DuskMoon Dm Layout</DmLayout>);
} Theme aware
Docs previews inherit the DuskMoon data-theme value. Use the header switch to compare light and dark rendering.
<div data-theme="sunshine">
<DmLayout>DuskMoon Dm Layout</DmLayout>
</div>
<div data-theme="moonlight">
<DmLayout>DuskMoon Dm Layout</DmLayout>
</div> API
The API reference below lists every parsed exported type or interface for DmLayout. Start with `menus`, `selectedKey`, `openAllKeys`, `collapsed` for common usage.
packages/components/src/components/dm-layout/DmLayout.types.ts
Scenarios: packages/components/src/components/dm-layout/DmLayout.test.tsx | Prop | Type | Required | Description |
|---|---|---|---|
menus | DmMenuSchema[] | No | menus configures DmLayout. |
selectedKey | string | No | selectedKey configures DmLayout. |
openAllKeys | boolean | No | openAllKeys configures DmLayout. |
collapsed | boolean | No | collapsed configures DmLayout. |
defaultCollapsed | boolean | No | defaultCollapsed configures DmLayout. |
hideProductHeader | boolean | No | hideProductHeader configures DmLayout. |
productIcon | ReactNode | No | productIcon configures DmLayout. |
productTitle | ReactNode | No | productTitle configures DmLayout. |
breadcrumbItems | DmBreadcrumbItem[] | No | breadcrumbItems configures DmLayout. |
aheadBreadcrumbItems | DmBreadcrumbItem[] | No | aheadBreadcrumbItems configures DmLayout. |
behindBreadcrumbItems | DmBreadcrumbItem[] | No | behindBreadcrumbItems configures DmLayout. |
tips | ReactNode | No | tips configures DmLayout. |
locale | string | No | locale configures DmLayout. |
menuProps | Omit< | No | menuProps configures DmLayout. |
onCollapse | (collapsed: boolean) => void | No | onCollapse configures DmLayout. |
onMenuClick | (key: string, menu?: DmMenuSchema) => void | No | onMenuClick configures DmLayout. |
onBreadcrumbClick | (url: string) => void | No | onBreadcrumbClick configures DmLayout. |
children | ReactNode | No | children configures DmLayout. |
| Prop | Type | Required | Description |
|---|---|---|---|
selectedMenuKey | string | Yes | selectedMenuKey configures DmLayout. |
selectedBreadcrumbKey | string | Yes | selectedBreadcrumbKey configures DmLayout. |
openKeys | string[] | Yes | openKeys configures DmLayout. |
breadcrumbItems | DmBreadcrumbItem[] | Yes | breadcrumbItems configures DmLayout. |
tips | ReactNode | No | tips configures DmLayout. |