package web // Infra-stack display metadata (v0.126.0 Part B). The protected base stacks (infra.go: // traefik, cloudflared, filebrowser) carry no catalog metadata, so they rendered as bare // directory names on the dashboard and app cards. This map gives them curated Hungarian // identity — DISPLAY ONLY, keyed by stack name; it never affects protection, deploy or // backup logic. // // Linked marks the ONLY infra stack with a customer-facing UI (filebrowser → // files.). cloudflared and traefik have no customer UI — rendering an open link // for them is the guarded-wrong outcome (render test asserts absence). // InfraMeta is one protected infra stack's customer-facing identity. type InfraMeta struct { DisplayName string Description string Linked bool // has a customer-facing URL (subdomain via protectedStackSubdomains) } var infraMetaMap = map[string]InfraMeta{ "cloudflared": { DisplayName: "Cloudflare Tunnel", Description: "Biztonságos internetkapcsolat — a szerver portnyitás nélkül érhető el kívülről.", }, "traefik": { DisplayName: "Traefik", Description: "Forgalomirányító (reverse proxy) — a kéréseket a megfelelő alkalmazáshoz irányítja.", }, "filebrowser": { DisplayName: "FileBrowser", Description: "Fájlkezelő — a tárhely fájljainak böngészése a böngészőből.", Linked: true, }, // R-7: the LAN sharing stack has no web UI of its own (it is reached from Windows Intéző / // Mac Finder), so Linked stays false — it is configured on the „Megosztás" page. "samba": { DisplayName: "Hálózati megosztás", Description: "Fájlmegosztás a helyi hálózaton — a mappák a Windows Intézőben és a Mac Finderben jelennek meg.", }, } // infraMetaFor returns the curated metadata for a protected infra stack, nil for // everything else (templates branch on the nil). func infraMetaFor(stackName string) *InfraMeta { if m, ok := infraMetaMap[stackName]; ok { return &m } return nil } // InfraLogoSVG is the shared generic infra icon (Lucide-style "server", monochrome, // --text-2 stroke) — the last-resort icon for infra stacks whose logo asset is not // synced. Served at /static/infra-logo.svg; consumed via the app-row FallbackIcon slot. const InfraLogoSVG = `` // AppPlaceholderSVG is the generic APP placeholder icon — a 2×2 rounded-square app-grid, matching // InfraLogoSVG's monochrome --text-2 visual language but a distinct glyph (apps, not server racks). // It is the default FallbackIcon on every app-list row for a regular app whose logo asset is missing, // replacing the old visibility:hidden dead-end. NEVER the felhom brand mark: the brand is platform // identity, never an app stand-in (design ruling, CONTEXT.md). Served at /static/app-placeholder.svg. const AppPlaceholderSVG = ``