Promotes the Forge visual language from the Stacks feature into a global design system used across the app: - app.css: Forge utilities (dot-grid backdrop, eyebrow, ember, display/lede, status pills, stat grid, panels, registration marks, alert, terminal, buttons). CSS variables alias the forge display font to the app's standard sans stack (Inter, now properly self-hosted via @fontsource/inter). - +layout.svelte: reskinned sidebar brand, active nav rail, mobile top bar, global h1/h2 typography overrides, main dot-grid backdrop. - Shared components reskinned: EmptyState (breathing-ember empty mark), StatusBadge (mono pills with pulse), ConfirmDialog (registration marks + forge buttons). - Dashboard (+page.svelte): ForgeHero header, forge-stat-grid, Instrument-style section titles with accent. - New ForgeHero component for reusable hero headers. Stacks feature fully localized (EN + RU): - 80+ keys under stacks.* covering list, new, detail, revisions, logs, errors, status labels, delete/rollback dialogs. - Russian uses forge vocabulary (куются/наковальня/куём/etc). - $t() wired through all three Stacks pages.
This commit is contained in:
@@ -890,5 +890,127 @@
|
||||
"language": {
|
||||
"en": "English",
|
||||
"ru": "Russian"
|
||||
},
|
||||
"stacks": {
|
||||
"eyebrow": "THE FORGE",
|
||||
"title": "Stacks",
|
||||
"lede": "Compose blueprints, forged as <em>atomic units</em>. Spin up services, iterate on revisions, roll back without breaking a sweat.",
|
||||
"newStack": "New stack",
|
||||
"refresh": "Refresh",
|
||||
"total": "Total",
|
||||
"running": "Running",
|
||||
"deploying": "Forging",
|
||||
"failed": "Failed",
|
||||
"stopped": "Cold",
|
||||
"empty": {
|
||||
"title": "The anvil is cold.",
|
||||
"desc": "Upload a docker-compose.yml to forge your first stack."
|
||||
},
|
||||
"card": {
|
||||
"noDescription": "No description",
|
||||
"updated": "Updated",
|
||||
"start": "Start",
|
||||
"stop": "Stop",
|
||||
"delete": "Delete",
|
||||
"open": "Open"
|
||||
},
|
||||
"new": {
|
||||
"eyebrow": "NEW BLUEPRINT",
|
||||
"title": "Forge a new stack.",
|
||||
"lede": "Upload or paste a <code>docker-compose.yml</code>. All services in the blueprint deploy as a single atomic unit.",
|
||||
"back": "Stacks",
|
||||
"name": "Name",
|
||||
"namePlaceholder": "my-app-stack",
|
||||
"nameHint": "Lowercase, hyphenated. Used as the compose project name.",
|
||||
"description": "Description",
|
||||
"descriptionPlaceholder": "What does this stack do?",
|
||||
"composeYaml": "Compose YAML",
|
||||
"required": "required",
|
||||
"optional": "optional",
|
||||
"loadSample": "Load sample",
|
||||
"uploadFile": "Upload file",
|
||||
"dropHere": "Drop a docker-compose.yml here",
|
||||
"dropSub": "or click to browse · or use <strong>Load sample</strong> above",
|
||||
"lines": "{n} lines",
|
||||
"bytes": "{n} bytes",
|
||||
"clear": "Clear",
|
||||
"deployImmediate": "Deploy immediately",
|
||||
"deployHint": "Strike while the iron's hot. If unchecked, the stack is saved cold.",
|
||||
"cancel": "Cancel",
|
||||
"forging": "Forging…",
|
||||
"forgeAndDeploy": "Forge & deploy",
|
||||
"saveBlueprint": "Save blueprint",
|
||||
"errorRequired": "Name and compose YAML are required.",
|
||||
"errorCreate": "Failed to create stack"
|
||||
},
|
||||
"detail": {
|
||||
"manifest": "MANIFEST",
|
||||
"loading": "Loading blueprint…",
|
||||
"composeProject": "COMPOSE PROJECT",
|
||||
"noDescription": "No description",
|
||||
"refresh": "Refresh",
|
||||
"start": "Start",
|
||||
"stop": "Stop",
|
||||
"delete": "Delete",
|
||||
"fault": "FAULT",
|
||||
"err": "ERR",
|
||||
"stats": {
|
||||
"services": "Services",
|
||||
"servicesSub": "in blueprint",
|
||||
"running": "Running",
|
||||
"runningSub": "active containers",
|
||||
"revisions": "Revisions",
|
||||
"revisionsSub": "in history",
|
||||
"current": "Current",
|
||||
"currentSub": "deployed"
|
||||
},
|
||||
"services": {
|
||||
"title": "Services",
|
||||
"count": "{n} on the floor",
|
||||
"empty": "— no containers running —"
|
||||
},
|
||||
"tabs": {
|
||||
"blueprint": "Blueprint",
|
||||
"revisions": "Revisions",
|
||||
"logs": "Logs"
|
||||
},
|
||||
"yaml": {
|
||||
"currentRevision": "Current revision",
|
||||
"edit": "Edit & redeploy",
|
||||
"cancel": "Cancel",
|
||||
"forging": "Forging…",
|
||||
"deployNew": "Deploy new revision"
|
||||
},
|
||||
"revisions": {
|
||||
"current": "CURRENT",
|
||||
"by": "by",
|
||||
"rollback": "← Rollback to this revision",
|
||||
"rollbackTitle": "Rollback to revision?",
|
||||
"rollbackMessage": "Create a new revision from rev {n} and redeploy the stack.",
|
||||
"rollbackConfirm": "Rollback"
|
||||
},
|
||||
"logs": {
|
||||
"service": "Service:",
|
||||
"allServices": "All services",
|
||||
"fetching": "Fetching…",
|
||||
"fetch": "Fetch logs",
|
||||
"empty": "— no logs loaded. tap fetch. —"
|
||||
},
|
||||
"delete": {
|
||||
"title": "Delete stack?",
|
||||
"messageBase": "This runs 'docker compose down' and removes \"{name}\".",
|
||||
"messageVolumes": " Named volumes will also be removed.",
|
||||
"confirm": "Delete"
|
||||
},
|
||||
"errors": {
|
||||
"load": "Failed to load stack",
|
||||
"stop": "Stop failed",
|
||||
"start": "Start failed",
|
||||
"update": "Update failed",
|
||||
"rollback": "Rollback failed",
|
||||
"delete": "Delete failed",
|
||||
"fetchLogs": "Failed to load logs"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user