# Curriculum

> A course or book curriculum: parts with their totals, each a list of numbered lessons a visitor can open to see the subtopics or a preview link, under an optional totals row, so "what's inside" reads at a glance and in depth without leaving the page.

```ts
import { Curriculum } from "@sdxc/ui/landing";
```

Lays the optional summary over the parts, and opens a heading scope so part titles sit
one level under the band's title.

## Examples

```tsx
<Curriculum summary={<StatStrip>{totals}</StatStrip>}>
	<Curriculum.Part title={t("part.one")} meta="5 chapters · 112 pages">
		<Curriculum.Lesson number="01" title={t("ch.one")} meta="18 pages" badge="Free" />
	</Curriculum.Part>
</Curriculum>
```

## Props

| Prop | Type | Description |
| --- | --- | --- |
| `layout?` | `"columns" \| "stack"` | Arrangement. Defaults to DEFAULT_LAYOUT. |
| `summary?` | `RemixNode` | Totals above the parts, such as a `StatStrip` of chapters, pages and hours. |
| `children` | `RemixNode` | Curriculum.Part children. |

Also accepts everything in `TagProps<"div">`.


### Curriculum.Part

One part: its title and totals over a ruled list of lessons.

| Prop | Type | Description |
| --- | --- | --- |
| `title` | `RemixNode` | The part's title, rendered as a heading at the ambient depth. |
| `meta?` | `RemixNode` | The part's totals, such as "5 chapters · 112 pages". |
| `children` | `RemixNode` | Curriculum.Lesson children. |

Also accepts everything in `Omit<TagProps<"section">, "title">`.


### Curriculum.Lesson

One lesson as a native disclosure row: the summary shows the chevron, number, title, badge and meta; the children open under the title and the chevron turns while open.

| Prop | Type | Description |
| --- | --- | --- |
| `number` | `RemixNode` | The lesson's number as shown, such as "01". |
| `title` | `RemixNode` | The lesson's title. |
| `meta?` | `RemixNode` | Length at the row's inline end, such as "18 pages" or "12 min". |
| `badge?` | `RemixNode` | A short flag after the title, such as "Free" or "Preview", drawn as a Badge. |
| `open?` | `boolean` | Starts the lesson expanded. |
| `children?` | `RemixNode` | What opens under the row: subtopics, usually a `CheckList`, and a preview link. Without children the row is static and draws no chevron. |

Also accepts everything in `Omit<TagProps<"li">, "title">`.


## Types

| Name | Values | What it decides |
| --- | --- | --- |
| `Layout` | `"columns" \| "stack"` | How parts sit: side by side from the `lg` container (`columns`), or one under the other at every width (`stack`) for a course with many or long parts. |
