3d-components/src/colors.ts
Luís Murta f7dac370b4
refactor: break down single html file
Scaffold project structure with vite.

src/
  types.ts    ← Node, Connection, ParseResult, PaletteEntry, BlockInfo, AppState
  parser.ts   ← parsePuml()
  colors.ts   ← PALETTE, guessColor()
  svg.ts      ← makeBlock(), makeArrow(), makeLine() (pure SVG helpers)
  main.ts     ← state, drawLevel(), updateNav(), render(), setBugData(), event wiring
  style.css   ← all styles
index.html    ← shell + default PlantUML example in textarea
package.json  ← vite + typescript devDeps
tsconfig.json ← strict mode, ESNext, bundler resolution
2026-03-14 14:17:16 +00:00

19 lines
847 B
TypeScript

import type { Node, PaletteEntry } from './types.ts';
export const PALETTE: Record<string, PaletteEntry> = {
ecu: { t: '--top-gray', l: '--left-gray', r: '--right-gray' },
conn: { t: '--top-teal', l: '--left-teal', r: '--right-teal' },
adp: { t: '--top-amber', l: '--left-amber', r: '--right-amber' },
logic: { t: '--top-purple', l: '--left-purple', r: '--right-purple' },
seq: { t: '--top-coral', l: '--left-coral', r: '--right-coral' },
};
export function guessColor(node: Node): PaletteEntry {
const l = node.label.toLowerCase();
if (l.startsWith('connector')) return PALETTE['conn']!;
if (l.startsWith('adapter')) return PALETTE['adp']!;
if (l === 'logic' || l === 'logic component') return PALETTE['logic']!;
if (node.label.length <= 2) return PALETTE['seq']!;
return PALETTE['ecu']!;
}