import chalk, { type ChalkInstance } from "chalk"; export class ColorPalette { constructor(private mapping: Record) {} getColor(name: string): ChalkInstance { return this.mapping[name] ?? chalk.white; } } export const langPalette = new ColorPalette({ Astro: chalk.hex("#FF5A03"), C: chalk.hex("#555555"), "C#": chalk.hex("#178600"), "C++": chalk.hex("#F34B7D"), Clojure: chalk.hex("#DB5855"), CoffeeScript: chalk.hex("#244776"), Crystal: chalk.hex("#000100"), CSS: chalk.hex("#663399"), Dart: chalk.hex("#00B4AB"), Dockerfile: chalk.hex("#384D54"), EJS: chalk.hex("#A91E50"), Elixir: chalk.hex("#6E4A7E"), Elm: chalk.hex("#60B5CC"), Env: chalk.hex("#E5D559"), Erlang: chalk.hex("#B83998"), "F#": chalk.hex("#B845FC"), Gitignore: chalk.hex("#F44D27"), Gleam: chalk.hex("#FFAFF3"), Go: chalk.hex("#00ADD8"), GraphQL: chalk.hex("#E10098"), Groovy: chalk.hex("#4298B8"), HTML: chalk.hex("#E34C26"), Handlebars: chalk.hex("#F7931E"), Haskell: chalk.hex("#5E5086"), Java: chalk.hex("#B07219"), JavaScript: chalk.hex("#F1E05A"), Jinja: chalk.hex("#A52A22"), JSON: chalk.hex("#292929"), Julia: chalk.hex("#A270BA"), Kotlin: chalk.hex("#A97BFF"), Less: chalk.hex("#1D365D"), Liquid: chalk.hex("#67B8DE"), Lua: chalk.hex("#000080"), Markdown: chalk.hex("#083FA1"), Mustache: chalk.hex("#724B3B"), Nix: chalk.hex("#7E7EFF"), Nunjucks: chalk.hex("#3D8137"), "Objective-C": chalk.hex("#438EFF"), PHP: chalk.hex("#4F5D95"), Perl: chalk.hex("#0298C3"), PowerShell: chalk.hex("#012456"), Prisma: chalk.hex("#0C344B"), Protobuf: chalk.hex("#652D90"), Pug: chalk.hex("#A86454"), Python: chalk.hex("#3572A5"), QML: chalk.hex("#44A51C"), R: chalk.hex("#198CE7"), Raku: chalk.hex("#0000FB"), Ruby: chalk.hex("#701516"), Rust: chalk.hex("#DEA584"), SCSS: chalk.hex("#C6538C"), SQL: chalk.hex("#E38C00"), Scala: chalk.hex("#C22D40"), Shell: chalk.hex("#89E051"), Solidity: chalk.hex("#AA6746"), Svelte: chalk.hex("#FF3E00"), Stylus: chalk.hex("#FF6347"), Swift: chalk.hex("#F05138"), TOML: chalk.hex("#9C4221"), Terraform: chalk.hex("#844FBA"), TypeScript: chalk.hex("#3178C6"), Twig: chalk.hex("#C1D026"), Vue: chalk.hex("#41B883"), "Visual Basic .NET": chalk.hex("#945DB7"), WebAssembly: chalk.hex("#04133B"), XML: chalk.hex("#0060AC"), YAML: chalk.hex("#CB171E"), Zig: chalk.hex("#EC915C"), }); // based on https://pi.dev/models export const modelPalette = new ColorPalette({ "amazon-bedrock": chalk.hex("#FF9900"), "ant-ling": chalk.hex("#0d66fd"), anthropic: chalk.hex("#d66545"), "azure-openai-responses": chalk.hex("#0078D4"), cerebras: chalk.hex("#7CFF00"), "cloudflare-ai-gateway": chalk.hex("#F38020"), "cloudflare-workers-ai": chalk.hex("#F38020"), deepseek: chalk.hex("#4D6BFE"), fireworks: chalk.hex("#FD6F3E"), "github-copilot": chalk.hex("#93f5eb"), google: chalk.hex("#4285F4"), "google-vertex": chalk.hex("#4285F4"), groq: chalk.hex("#F55036"), huggingface: chalk.hex("#FFD21E"), "kimi-coding": chalk.hex("#1F6BFF"), minimax: chalk.hex("#5B6CFF"), "minimax-cn": chalk.hex("#5B6CFF"), mistral: chalk.hex("#FA520F"), moonshotai: chalk.hex("#4F46E5"), "moonshotai-cn": chalk.hex("#4F46E5"), nvidia: chalk.hex("#76B900"), openai: chalk.hex("#0f9f7c"), "openai-codex": chalk.hex("#009aa2"), opencode: chalk.hex("#d0cfce"), "opencode-go": chalk.hex("#d0cfce"), openrouter: chalk.hex("#7C3AED"), together: chalk.hex("#0F6FFF"), "vercel-ai-gateway": chalk.hex("#d1caf3"), xai: chalk.hex("#ffffff"), xiaomi: chalk.hex("#FF6900"), "xiaomi-token-plan-cn": chalk.hex("#FF6900"), "xiaomi-token-plan-ams": chalk.hex("#FF6900"), "xiaomi-token-plan-sgp": chalk.hex("#FF6900"), zai: chalk.hex("#2563EB"), "zai-coding-cn": chalk.hex("#2563EB"), });