# DreamLake — Full documentation > DreamLake uikit is the React component library and design contract — surfaces, ink, semantic color, type, geometry, and the zebra-list patterns shared by every DreamLake page. Generated from https://uikit.dreamlake.ai. 55 pages. --- Source: https://uikit.dreamlake.ai # DreamLake UIkit Single source of truth for surfaces, ink, semantic color, type, geometry, and the zebra-list patterns shared by every DreamLake page — `ml-dash`, `dreamlake`, `dreamlake-pipelines`, `dreamlake-profile`, `dreamlake-timetravel`, `notebook`. These docs are the design contract: tokens that paint surfaces, six hues that color domain concepts, two typefaces that split identity from narrative, a fixed spacing and radius scale, layered shadows and z-index, and the zebra-list pattern every DreamLake list page reuses. ## Install ```bash file="terminal" npm install @dreamlake/uikit # or pnpm add @dreamlake/uikit ``` ## Style guide The complete contract on one page: [Style guide](/style-guide.md). Eight sections — Color, Typography, Spacing & layout, Iconography, Elevation & depth, Border & radius, Motion, and the Zebra-list four-band model — sourced from the same `staging/dreamlake-design-guide.html` and `staging/design.md` references. ## Components - [Button](/components/button.md) — primary + ghost variants, four states. The full atom catalog (Chip, Avatar, Status, Kbd, Dropdown, Panel, etc.) lives in the eventual `@dreamlake/uikit` npm package — not duplicated here. > **Note:** Every section in the style guide cites its design-guide reference > (`staging/dreamlake-design-guide.html`) and any cross-referenced reasoning > (`staging/design.md`, `staging/zebra-list-style-guide.md`). What you see is what > `@dreamlake/uikit` ships. --- Source: https://uikit.dreamlake.ai/components/avatar # Avatar A square avatar. Pass `image` to show a photo; without it (or if the image fails to load) the component shows initials taken from `name` (`"Ge Yang"` → `"GY"`, `"MIT CSAIL"` → `"MC"`), so callers pass the display name rather than precomputing initials. Color, font, and surface follow the design tokens and flip with the theme. ## Sizes Five sizes showing how the initials scale up and down with the avatar. ## Custom radius Pass `radius` (px) to override the simple form's default `3` (rounded square). Use `size / 2` for a perfect circle. ## Image Pass `image` to render a photo, cropped to fill the avatar and clipped to its radius. If the URL is missing or fails to load, the avatar falls back to initials — so `name` is always required as the fallback. ## Composed form You can also compose `` and `` as children. The image is hidden until it loads; if it's missing or errors, the fallback (usually initials) shows instead. This form defaults to a circle — pass `radius` to change it. ## Props | Prop | Type | Default | Description | | --- | --- | --- | --- | | `name` | `string` | — | Display name (simple form). Initials are derived automatically; used as the fallback when `image` is absent or fails to load. Optional when using the composed form. | | `image` | `string` | — | Avatar image URL. Cropped to fill the avatar; falls back to initials on missing/error. | | `size` | `number` | `32` / `24` | Avatar size in px. Defaults to `32` for the simple form and `24` for the composed form. The initials scale with the size. | | `radius` | `number` | `3` / circle | Border radius in px. The simple form defaults to `3` (rounded square); the composed form defaults to a circle. Use `size / 2` for a circle in the simple form. | | `className` | `string` | — | Extra classes on the root ``. | ### Composed sub-components | Component | Props | Description | | --- | --- | --- | | `AvatarImage` | native `` attributes (`src`, `alt`, …) | Image inside a composed ``. Hidden until it loads; on error the sibling `` takes over. | | `AvatarFallback` | native `` attributes | Fallback content (usually initials) shown until the image loads. | --- Source: https://uikit.dreamlake.ai/style-guide # Style Guide The complete design contract: surfaces and ink, the six-hue semantic palette, the type pairing, the spacing scale and page grid, the icon catalog, the shadow + z-index ladder, the radius scale and hairline weight, the motion vocabulary, and the zebra-list four-band model. Every DreamLake page reads from this contract. --- Source: https://uikit.dreamlake.ai/components/breadcrumb-tree # BreadcrumbTree A breadcrumb-style picker that opens a Finder-style Miller-column panel, anchored to the breadcrumb. The panel floats above any clipping ancestor. Children are fetched on demand with pagination, results are reused when you revisit a node, and the columns auto-scroll to the deepest level. ## Demo Click the chevron to open the panel. Drill into nodes by clicking rows. Click a breadcrumb item to navigate back (the panel closes). ## rootPath and fetchChildren When `rootPath` is provided (e.g. `"my-project"`), the component prepends it to every `fetchChildren` call: | Column depth | `path` argument to `fetchChildren` | | --- | --- | | Root | `"my-project"` | | After selecting "datasets" | `"my-project/datasets"` | | After selecting "droid-2024" | `"my-project/datasets/droid-2024"` | Without `rootPath`, the root call uses `""` (empty string) and sub-calls use `"datasets"`, `"datasets/droid-2024"`, etc. Results are reused when you drill into the same node twice, so revisiting a folder does not trigger a second request. ## Pagination Each column loads its first page on open. Scrolling to the bottom of a column loads the next page automatically. ## Floating panel The panel floats above the content, so it is not clipped by `overflow: hidden`, `transform`, or sticky containers. It tracks the trigger as the page scrolls or resizes. > **Controlled path** — `BreadcrumbTree` is fully controlled. Row clicks call > `onNavigate(node, newPath)`; the caller updates `path`. The panel stays open > after a row click and closes when a breadcrumb item is clicked. ## Props | Prop | Type | Default | Description | | --- | --- | --- | --- | | `path` | `BreadcrumbNode[]` | — | Controlled path from root to the selected node. Empty array = root. | | `onNavigate` | `(node, newPath) => void` | — | Fires on row click (panel stays open) and breadcrumb click (panel closes). Update `path` here. | | `fetchChildren` | `(path, page, limit) => Promise` | — | Async loader. `path` is slash-separated. Prepended with `rootPath` when set. | | `rootPath` | `string` | — | Root prefix shown as the first breadcrumb item. | | `renderEmpty` | `(parentNode) => ReactNode` | `"No items"` | Custom empty-state per column. Receives the parent node (`null` at root). | | `refreshKey` | `number` | `0` | Increment to re-fetch the deepest visible column. | | `refreshToken` | `number` | `0` | Increment to drop the whole cache after a host mutation (delete/rename). Open columns re-fetch immediately; otherwise they re-fetch fresh on next open. | | `placeholder` | `string` | `"Select folder"` | Shown when `path` is empty and `rootPath` is unset. | | `className` | `string` | — | Extra classes on the wrapper. | ### Types ```ts interface BreadcrumbNode { id: string name: string /** When false, hides the chevron — signals no sub-children exist. */ hasChildren?: boolean } interface FetchChildrenResult { items: BreadcrumbNode[] totalPages: number } // Per-column state, also exported for callers that inspect column status. interface ColumnData { items: BreadcrumbNode[] page: number totalPages: number hasMore: boolean loading: boolean error: Error | null } ``` --- Source: https://uikit.dreamlake.ai/llm-readable # LLM-Readable Docs These docs are built to be read by agents as easily as by people. Every page has a markdown twin, and the whole corpus is published in the formats LLM tooling already looks for — so you can point Claude (or any agent) at DreamLake uikit and have it answer accurately. ## Fetch a single page Append `.md` to any docs URL to get the raw markdown — no nav, no chrome: ```bash curl https://uikit.dreamlake.ai/style-guide.md ``` Every page also advertises its markdown twin in the HTML head: ```html ``` ## The whole site, two ways - **[`/llms.txt`](https://uikit.dreamlake.ai/llms.txt)** — a short, linked index of every page ([llmstxt.org](https://llmstxt.org) standard). The entry point an agent reads first to decide what to fetch. - **[`/llms-full.txt`](https://uikit.dreamlake.ai/llms-full.txt)** — every page concatenated into one markdown file. Drop the entire library into a context window in a single request. ## Import it as a skill The docs are also packaged as an [Agent Skill](https://uikit.dreamlake.ai/skills/dreamlake-uikit.zip) — a `SKILL.md` plus one markdown reference file per page. Install it so your agent loads DreamLake uikit knowledge on demand: ```bash # Claude Code: drop it into your project (or ~/.claude) skills directory curl -L https://uikit.dreamlake.ai/skills/dreamlake-uikit.zip -o dreamlake-uikit.zip unzip dreamlake-uikit.zip -d .claude/skills/ ``` > **Note:** **Always current.** Every surface above — the `.md` pages, both `llms` files, > and the skill — is generated from the same source on each deploy, so none of > them can drift from what you read on the site. --- Source: https://uikit.dreamlake.ai/components/button # Button A button for primary actions and form submits. Wraps a native `