1const EXAMPLE_NAMES = {2 plantuml: 'Tandem task sync',3 mermaid: 'Shared task flow',4 graphviz: 'Tandem collaboration graph',5 d2: 'Connection styles',6 c4plantuml: 'Tandem system context',7 blockdiag: 'Tandem block flow',8 seqdiag: 'Tandem task sequence',9 actdiag: 'Tandem delivery activities',10 nwdiag: 'Network layout',11 packetdiag: 'TCP packet structure',12 rackdiag: 'Rack layout',13 squaring: 'Order 9 squared rectangle',14 bpmn: 'Agent-assisted review',15 bytefield: 'Byte field layout',16 dbml: 'Database schema',17 diagramsnet: 'Venn diagram',18 ditaa: 'Tandem ASCII architecture',19 erd: 'Data model',20 excalidraw: 'Venn sketch',21 goat: 'Component shapes',22 nomnoml: 'Pirate class diagram',23 pikchr: 'Cardinal points',24 structurizr: 'Tandem landscape',25 svgbob: 'Cloud network',26 symbolator: 'Hardware component',27 tikz: 'Periodic table',28 trn: 'Zenith',29 umlet: 'UML example',30 vega: 'Bar chart',31 vegalite: 'Discretizing scale',32 wavedrom: 'Timing diagram',33 wireviz: 'Wiring harness',34}3536export function namedExample(type) {37 return {38 meta: {39 title: EXAMPLE_NAMES[type] ?? 'Diagram example',40 description: '',41 },42 presentation: {43 background: '',44 padding: 0,45 frame: false,46 appearance: 'raw',47 },48 }49}5051export function exampleStateForTheme(state, theme) {52 if (!['light', 'dark'].includes(theme)) throw new Error('Example theme must be light or dark.')53 return {54 ...state,55 presentation: {56 ...state.presentation,57 background: '',58 padding: 0,59 frame: false,60 appearance: `${theme}-transparent`,61 },62 }63}6465export function refreshMatchingExampleMetadata(state, exampleState) {66 if (state?.source !== exampleState?.source || state?.meta?.title?.trim()) return state6768 return {69 ...state,70 meta: {71 ...state.meta,72 title: exampleState.meta.title,73 },74 }75}