/** * Shared entity → snippet planning. Both the Vite plugin (URL generation) * and the CLI app-gen (pre-computed rollup inputs) derive snippet slugs * from this module, so build inputs always byte-match plugin output. */ import type { SdocEntity } from '../language/index.js'; import type { ComponentStatus, DocNote, TodoItem } from '../types.js'; import { exampleSlug, previewSlug } from '../language/parser.js'; export type SnippetRole = 'preview' | 'example' | 'content' | 'prose'; export interface PlannedSnippet { name: string; slug: string; role: SnippetRole; /** Full body — block script/style included (display/formatting form) */ body: string; /** Markup between the block script and style (the runtime fragment) */ markup: string; /** Block-level