# types/block.types.ts

> 163 lines of code and 26 definitions.

Tree: Site tree
Language: typescript
Layer: infrastructure
Canonical: https://banes-lab.com/anatomy/tree#file-types-block-types-ts
Source text: https://banes-lab.com/assets/sources/source.65c108f970749cc9c5ae0dac108dd2896228fca071f6ba98049761eb6394708c.generated.txt

## Definitions

- `TextBlock` (interface_declaration, line 4, exported)
- `ListBlock` (interface_declaration, line 10, exported)
- `GlossaryEntry` (interface_declaration, line 17, exported)
- `GlossaryBlock` (interface_declaration, line 27, exported)
- `TableTone` (type_alias_declaration, line 32, exported)
- `TableBlock` (interface_declaration, line 34, exported)
- `GroupEntry` (interface_declaration, line 41, exported)
- `GroupBlock` (interface_declaration, line 48, exported)
- `LinkEntry` (interface_declaration, line 54, exported)
- `LinkBlock` (interface_declaration, line 61, exported)
- `CodeBlock` (interface_declaration, line 67, exported)
- `CardAction` (interface_declaration, line 74, exported)
- `CardFile` (interface_declaration, line 79, exported)
- `Card` (interface_declaration, line 86, exported)
- `CardBlock` (interface_declaration, line 100, exported)
- `FigureBlock` (interface_declaration, line 105, exported)
- `WidePanel` (interface_declaration, line 111, exported)
- `MermaidBlock` (interface_declaration, line 115, exported)
- `LessonBlock` (interface_declaration, line 121, exported)
- `WalkBlock` (interface_declaration, line 133, exported)
- `Metric` (interface_declaration, line 139, exported)
- `MetricBlock` (interface_declaration, line 144, exported)
- `SourceBlock` (interface_declaration, line 150, exported)
- `MarkdownBlock` (interface_declaration, line 158, exported)
- `DefinitionBlock` (interface_declaration, line 165, exported)
- `Block` (type_alias_declaration, line 172, exported)

## Source

```typescript
import type { GrammarBlock } from "#types/grammar.types";
import type { WalkRef } from "#types/anatomy.types";

export interface TextBlock {
    readonly kind: "text";
    readonly note?: boolean;
    readonly text: string;
}

export interface ListBlock {
    readonly items: readonly string[];
    readonly kind: "list";
    readonly label?: string;
    readonly ordered?: boolean;
}

export interface GlossaryEntry {
    readonly code?: string;
    readonly description: string;
    readonly domains?: readonly string[];
    readonly href?: string;
    readonly icon?: string;
    readonly id?: string;
    readonly term: string;
}

export interface GlossaryBlock {
    readonly entries: readonly GlossaryEntry[];
    readonly kind: "glossary";
}

export type TableTone = "contrast" | "keyword" | "role";

export interface TableBlock {
    readonly headers: readonly string[];
    readonly kind: "table";
    readonly rows: readonly (readonly string[])[];
    readonly tone?: TableTone;
}

export interface GroupEntry {
    readonly content?: string;
    readonly entries?: readonly GlossaryEntry[];
    readonly items?: readonly string[];
    readonly title?: string;
}

export interface GroupBlock {
    readonly groups: readonly GroupEntry[];
    readonly kind: "group";
    readonly tone?: string;
}

export interface LinkEntry {
    readonly description?: string;
    readonly href: string;
    readonly icon?: string;
    readonly text: string;
}

export interface LinkBlock {
    readonly button?: boolean;
    readonly kind: "link";
    readonly links: readonly LinkEntry[];
}

export interface CodeBlock {
    readonly code: string;
    readonly kind: "code";
    readonly language: string;
    readonly title: string;
}

export interface CardAction {
    readonly href: string;
    readonly text: string;
}

export interface CardFile {
    readonly href: string;
    readonly icon: string;
    readonly name: string;
    readonly title: string;
}

export interface Card {
    readonly accent: string;
    readonly action?: CardAction;
    readonly description: string;
    readonly files?: readonly CardFile[];
    readonly icon: string;
    readonly id: string;
    readonly permitted: readonly string[];
    readonly restricted: readonly string[];
    readonly spdx: string;
    readonly status: string;
    readonly title: string;
}

export interface CardBlock {
    readonly cards: readonly Card[];
    readonly kind: "card";
}

export interface FigureBlock {
    readonly caption: string;
    readonly figure: CodeBlock | GrammarBlock;
    readonly kind: "figure";
}

export interface WidePanel {
    readonly wide?: boolean;
}

export interface MermaidBlock extends WidePanel {
    readonly caption?: string;
    readonly kind: "mermaid";
    readonly text: string;
}

export interface LessonBlock {
    readonly application: string;
    readonly boundary?: string;
    readonly cause: string;
    readonly decision: string;
    readonly failureMode: string;
    readonly kind: "lesson";
    readonly principle: string;
    readonly problem: string;
    readonly validation: string;
}

export interface WalkBlock extends WidePanel {
    readonly caption: string;
    readonly kind: "walk";
    readonly walk: WalkRef;
}

export interface Metric {
    readonly label: string;
    readonly value: string;
}

export interface MetricBlock extends WidePanel {
    readonly caption: string;
    readonly kind: "metric";
    readonly metrics: readonly Metric[];
}

export interface SourceBlock {
    readonly kind: "source";
    readonly language: string;
    readonly path: string;
    readonly source: string;
    readonly title: string;
}

export interface MarkdownBlock {
    readonly kind: "markdown";
    readonly path: string;
    readonly source: string;
    readonly title: string;
}

export interface DefinitionBlock {
    readonly file: string | null;
    readonly kind: "definition";
    readonly name: string;
    readonly title: string;
}

export type Block =
    | CardBlock
    | CodeBlock
    | DefinitionBlock
    | FigureBlock
    | GlossaryBlock
    | GrammarBlock
    | GroupBlock
    | LessonBlock
    | LinkBlock
    | ListBlock
    | MarkdownBlock
    | MermaidBlock
    | MetricBlock
    | SourceBlock
    | TableBlock
    | TextBlock
    | WalkBlock;
```
