Layout & structure
The logo, containers, page scaffolding, steppers, and timelines for structuring documentation pages and sequential walkthroughs.
Logo
The dcupl mark (two arcs) and the "dcupl" wordmark in semibold Hanken Grotesk, as on the website, with an optional mono suffix. It draws in currentColor, so it works on light, dark and inverted surfaces. Inputs: size (the wordmark's font size in px, default 22; the mark scales with it) and suffix. The top navigation uses suffix="docs".
Usage
<docs-logo suffix="docs" />
<docs-logo [size]="32" />Card
A flat card with 6px corners and no shadow. Where a link grid can be rule-topped columns (Box Grid, Next Steps), prefer those; use a card when a boxed panel is really needed. Renders as a router link when href is set.
Variants
default
A panel framed by the 1.5px rule (landing looks the same).
bordered
A quieter panel with a hairline border.
Link cards
A hairline border that turns into the rule on hover, with an arrow in the corner that nudges right.
Usage
<docs-card variant="link" href="/path" padding="md">
<h4>Card Title</h4>
<p>Card description</p>
</docs-card>Section header
A section heading on the docs scale (docs-h2: 32px semibold, tight tracking) with an optional gray subtitle.
Example
Key capabilities
How it works
Three simple steps to get started with dcupl
Centered header
This header is centered for hero sections
Usage
<docs-section-header
title="Section Title"
subtitle="Optional subtitle text"
[centered]="true"
/>Step card
A numbered step as a rule-topped column: a big semibold number, a title and a gray description, with projected content (e.g. a snippet) underneath. For "How it works" rows.
Example
Define models
Create typed schemas with properties, relationships, and validation rules.
dcupl.models.set({
key: 'Product',
properties: [...]
});Load data
Inline arrays, fetch from APIs, or use the Loader with Console.
dcupl.data.set(products, {
model: 'Product'
});Query instantly
Filter, sort, aggregate, and analyze — all in-memory, indexed.
dcupl.lists.create({
modelKey: 'Product'
});Usage
<docs-step-card
[step]="1"
title="Step Title"
description="Step description"
>
<!-- Optional content -->
</docs-step-card>Box grid
A responsive grid of rule-topped columns, like the website's feature rows — the unified pattern for pillars, lifecycle/step flows, feature grids and link grids. Toggle numbered for big semibold numbers and connectors for arrows between columns. Set columns to 2, 3, or 4. Each DocsBoxItem also supports an optional meta field — a small pill in the top-right corner (e.g. a duration).
Numbered (pillars)
Machine-readable output
Every command accepts a global --json flag, so agents parse structured output instead of scraping text.
--jsonAn explicit lifecycle
Mutations stage changes that you apply with a build step, so state stays predictable and inspectable.
dcupl app buildThe dcupl skill
A Claude Code plugin that encodes dcupl domain knowledge, command patterns, and the non-obvious gotchas.
Numbered with connectors (lifecycle)
create
Start a daemon (an in-memory SDK instance)
mutate
Ingest data — stages changes
build
Apply staged changes (or use --auto-update)
query
Query, facet & aggregate — then destroy
Compact (dense step row)
Tighter padding and a smaller number for dense, scannable sequences.
create
Start a daemon (an in-memory SDK instance)
mutate
Ingest data — stages changes
build
Apply staged changes (or use --auto-update)
query
Query, facet & aggregate — then destroy
Plain (feature grid)
Machine-readable output
Every command accepts a global --json flag, so agents parse structured output instead of scraping text.
--jsonAn explicit lifecycle
Mutations stage changes that you apply with a build step, so state stays predictable and inspectable.
dcupl app buildThe dcupl skill
A Claude Code plugin that encodes dcupl domain knowledge, command patterns, and the non-obvious gotchas.
With icons
Each item can carry an icon (in an icon badge) instead of a number.
Fast
In-memory, indexed queries that return instantly.
Secure
Scoped access with per-model permissions.
Composable
Models, lists, and references that build up.
Link cards
Add an href to make a column a router link: an arrow follows the title and nudges right on hover, and the title underlines.
Usage
<!-- Numbered pillars (default 3 columns) -->
<docs-box-grid [items]="pillars" numbered />
<!-- Lifecycle: 4 columns, numbered, with arrow connectors -->
<docs-box-grid [items]="lifecycle" [columns]="4" numbered connectors />
<!-- Compact: denser padding + smaller number for tight step rows -->
<docs-box-grid [items]="lifecycle" [columns]="4" numbered connectors compact />
<!-- Plain feature grid -->
<docs-box-grid [items]="features" [columns]="2" />
// item shape:
// {
// title: string;
// body?: string;
// code?: string; // inline code chip
// icon?: IconName; // shown instead of a number
// href?: string; // makes the column a router link (arrow after the title)
// meta?: string; // small pill in the top-right corner (e.g. a duration)
// }Page header
The standard header for .page.ts pages: the h1 on the docs-h1 scale and a projected lead paragraph (which keeps its own inline links). There is no label above the title: the layout's breadcrumb says where the page sits. Used across the CLI and Agentic guide pages.
Example page
The lead paragraph is projected, so it can contain markup and links.
Usage
<docs-page-header title="Quickstart">
<p class="max-w-2xl text-lg text-text-secondary">
Lead paragraph with <a routerLink="/cli">links</a> preserved.
</p>
</docs-page-header>Concept page shell
The standard shell for SDK concept pages: a DocsPageHeader (title + lead), the section layout, and a DocsNextSteps footer, so page files only declare their sections and next-step links. Each section (docs-scroll-sync-split-layout) reads like a markdown section: an h2 under the 1.5px rule, text in the prose styles (17px ink, square bullets, ruled tables), then the section's code block at full column width — one column at every width, since the 56rem column is too narrow to set code beside text. A section can add a preview (ConceptModelPreview): a docs-model-preview under its code, linked to the property lines, as on SDK › Models. The headings carry the section ids, so the layout's "On this page" list tracks them. Inputs: title, lead, sections (ConceptSection[]), nextSteps (NextStepLink[]), and nextStepsHeading. It needs page data, so there is no live demo here.
Usage
<docs-concept-page-shell
title="Models"
lead="Define the structure and schema of your data."
[sections]="sections"
[nextSteps]="nextSteps"
/>
// sections: ConceptSection[] = [{
// id: 'what-is-model',
// title: 'What is a Model?',
// content: '<p>…</p>',
// code: productModelSource,
// codeLanguage: 'typescript',
// codeFilename: 'product.model.ts',
// preview: { model: 'Product', properties, rows, note: 'Prices are ints, in cents.' },
// }];Timeline
A two-column timeline for milestone or process narratives: a hairline down the middle, steps alternating left and right, the step number in a square marker on the line (mint for variant="highlight"). Compose docs-timeline with docs-timeline-step children. Step inputs: step, badge, title, description (required), plus contentOrder (left | right), variant (default | highlight), and isLast. Project a visual slot for the opposite column and an optional link slot. The center rail and alternating layout appear at md and up.
Example
Model your data
Define typed schemas with properties, relationships, and validation.
dcupl generate model ProductQuery instantly
Run indexed, faceted queries in memory, without a round trip to a server.
catalog.getList('products')Usage
<docs-timeline>
<docs-timeline-step
[step]="1"
badge="Step one"
title="Model your data"
description="Define typed schemas with validation."
contentOrder="left"
>
<docs-code-block visual code="dcupl generate model Product" language="bash" />
</docs-timeline-step>
<docs-timeline-step
[step]="2"
badge="Step two"
title="Query instantly"
description="Run indexed, faceted queries."
contentOrder="right"
variant="highlight"
[isLast]="true"
>
<docs-code-block visual code="catalog.getList('products')" language="ts" />
</docs-timeline-step>
</docs-timeline>Stepper
A vertical numbered stepper for sequential walkthroughs — a hairline left rail with square ink number markers and arbitrary projected content per step. Replaces the hand-rolled <ol class="… border-l … pl-8"> + absolute number-badge markup duplicated across guide pages. Compose docs-stepper with docs-stepper-step children; step inputs: step (number) and title. Titles render as real <h2> elements so they still feed the page's table of contents.
Example
Scaffold a project
Create a new project from the default starter.
dcupl init my-projectRun the dev server
Start the local development server on port 8083.
Usage
<docs-stepper>
<docs-stepper-step [step]="1" title="Scaffold a project">
<p>Create a new project from the default starter.</p>
<docs-code-block code="dcupl init my-project" language="bash" theme="dark" />
</docs-stepper-step>
<docs-stepper-step [step]="2" title="Run the dev server">
<p>Start the local development server on port 8083.</p>
</docs-stepper-step>
</docs-stepper>