// Package brand holds the small monochrome technology marks the site inlines // beside a technology name. // // A mark is path data for a 24x24 viewBox, drawn with fill="currentColor" so it // inherits the chip's colour and adds no request, no font and no layout shift. // Marks are opt-in: a technology with no published mark renders as text alone, // which is the honest default and keeps the chips from looking broken. // // The path data is vendored (see icons_gen.go and tools/gen_brand_icons.sh), // not fetched at build or request time. The marks are trademarks of their // owners and are used only to identify the technology named beside them. package brand import "strings" // slugs maps a technology label, lowercased, to its Simple Icons slug. Labels // are the ones the content uses; aliases point at the same mark. var slugs = map[string]string{ "javascript": "javascript", "php": "php", "python": "python", "home assistant": "homeassistant", "raspberry pi": "raspberrypi", "pi": "raspberrypi", "nixos": "nixos", "nix": "nixos", "qdrant": "qdrant", "prefect": "prefect", "n8n": "n8n", "mqtt": "mqtt", "langgraph": "langgraph", "langchain": "langchain", "ffmpeg": "ffmpeg", "zigbee": "zigbee", "three.js": "threedotjs", "react": "react", "proxmox": "proxmox", "mysql": "mysql", "postgres": "postgresql", "postgresql": "postgresql", "caddy": "caddy", "tailscale": "tailscale", "neovim": "neovim", "htmx": "htmx", "go": "go", "docker": "docker", "compose": "docker", "borg": "borgbackup", "sqlite": "sqlite", "spotify": "spotify", "rabbitmq": "rabbitmq", "openrouter": "openrouter", "obsidian": "obsidian", "niri": "niri", "gitea": "gitea", "ghostty": "ghostty", "gemini": "googlegemini", "deepseek": "deepseek", "c++": "cplusplus", "typescript": "typescript", "zsh": "zsh", "minimax": "minimax", "esp32": "espressif", "esp32-cam": "espressif", "grafana": "grafana", "wireguard": "wireguard", "nginx": "nginx", "linux": "linux", "zig": "zig", "huggingface": "huggingface", "ollama": "ollama", } // Mark returns the path data for a technology label and whether one exists. // The lookup is case-insensitive and tolerates the surrounding whitespace that // hand-written front-matter tends to carry. func Mark(label string) ([]string, bool) { slug, ok := slugs[strings.ToLower(strings.TrimSpace(label))] if !ok { return nil, false } paths, ok := marks[slug] return paths, ok } // Has reports whether a technology label has a published mark. func Has(label string) bool { _, ok := Mark(label) return ok }