feat(theme): add SRC brand theme (Swiss red/white), keep VNClagoon default

Second builtin theme builtin-src (red #D52B1E light-first, #EF4444 dark) + SRC
mountain logo asset. VNClagoon remains the default theme. Placeholder logo.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
Bernd Rodler
2026-08-03 18:16:54 +02:00
co-authored by Claude Opus 4.8
parent be7bfd1f02
commit 1bc5a6a0ce
3 changed files with 107 additions and 0 deletions
+96
View File
@@ -1010,6 +1010,91 @@ body[data-theme-skin="builtin-vnclagoon"] .rounded-2xl.border.bg-background\\/80
background-image: radial-gradient(56rem 38rem at 50% -12%, rgba(0, 212, 255, 0.10), transparent 60%) !important;
}`;
// "SRC" — SRC Advisory brand. Swiss red (#D52B1E) on white, light-first, with a
// near-black stone-grey neutral. Dark variant brightens the red (#EF4444) on a
// warm near-black. Info stays blue so it never collides with the red accent.
const srcCSS = `
:root {
--color-border: #e7e5e4;
--color-input: #e7e5e4;
--color-ring: #d52b1e;
--color-background: #ffffff;
--color-foreground: #1c1917;
--color-primary: #d52b1e;
--color-primary-foreground: #ffffff;
--color-secondary: #f5f5f4;
--color-secondary-foreground: #1c1917;
--color-muted: #f5f5f4;
--color-muted-foreground: #78716c;
--color-accent: #fdecea;
--color-accent-foreground: #a91b12;
--color-destructive: #b91c1c;
--color-destructive-foreground: #ffffff;
--color-popover: #ffffff;
--color-popover-foreground: #1c1917;
--color-sidebar: #fafaf9;
--color-sidebar-foreground: #1c1917;
--color-sidebar-border: #e7e5e4;
--color-sidebar-accent: #f5f5f4;
--color-sidebar-accent-foreground: #1c1917;
--color-card: #ffffff;
--color-card-foreground: #1c1917;
--color-success: #16a34a;
--color-success-foreground: #ffffff;
--color-warning: #ca8a04;
--color-warning-foreground: #ffffff;
--color-info: #2563eb;
--color-info-foreground: #ffffff;
--color-selection: #fdecea;
--color-selection-foreground: #a91b12;
--color-unread: #d52b1e;
--color-chart-1: #d52b1e;
--color-chart-2: #2563eb;
--color-chart-3: #ca8a04;
--color-chart-4: #16a34a;
--color-chart-5: #7c3aed;
}
.dark {
--color-border: #292524;
--color-input: #292524;
--color-ring: #ef4444;
--color-background: #1c1917;
--color-foreground: #f5f5f4;
--color-primary: #ef4444;
--color-primary-foreground: #ffffff;
--color-secondary: #292524;
--color-secondary-foreground: #f5f5f4;
--color-muted: #292524;
--color-muted-foreground: #a8a29e;
--color-accent: #3a1e1b;
--color-accent-foreground: #fca5a5;
--color-destructive: #dc2626;
--color-destructive-foreground: #ffffff;
--color-popover: #262322;
--color-popover-foreground: #f5f5f4;
--color-sidebar: #171412;
--color-sidebar-foreground: #f5f5f4;
--color-sidebar-border: #292524;
--color-sidebar-accent: #292524;
--color-sidebar-accent-foreground: #f5f5f4;
--color-card: #242120;
--color-card-foreground: #f5f5f4;
--color-success: #22c55e;
--color-success-foreground: #ffffff;
--color-warning: #eab308;
--color-warning-foreground: #1c1917;
--color-info: #60a5fa;
--color-info-foreground: #1c1917;
--color-selection: rgba(213, 43, 30, 0.25);
--color-selection-foreground: #fca5a5;
--color-unread: #ef4444;
--color-chart-1: #ef4444;
--color-chart-2: #60a5fa;
--color-chart-3: #eab308;
--color-chart-4: #22c55e;
--color-chart-5: #a78bfa;
}`;
export const BUILTIN_THEMES: InstalledTheme[] = [
{
id: 'builtin-vnclagoon',
@@ -1024,6 +1109,17 @@ export const BUILTIN_THEMES: InstalledTheme[] = [
enabled: true,
builtIn: true,
},
{
id: 'builtin-src',
name: 'SRC',
version: '1.0.0',
author: 'VNC',
description: 'SRC Advisory brand theme — Swiss red on white, light-first',
css: srcCSS,
variants: ['light', 'dark'],
enabled: true,
builtIn: true,
},
{
id: 'builtin-qui',
name: 'Qui',
+9
View File
@@ -0,0 +1,9 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100" role="img" aria-label="SRC">
<!-- Placeholder SRC mark — red ring, pale-red field, white peaks. Swap for the official styleguide SVG when available. -->
<defs><clipPath id="src-clip"><circle cx="50" cy="50" r="45"/></clipPath></defs>
<circle cx="50" cy="50" r="45" fill="#f8d7d2"/>
<g clip-path="url(#src-clip)">
<path d="M0 80 L28 46 L39 58 L52 39 L61 50 L72 36 L100 80 Z" fill="#ffffff"/>
</g>
<circle cx="50" cy="50" r="45" fill="none" stroke="#e0342b" stroke-width="8"/>
</svg>

After

Width:  |  Height:  |  Size: 562 B

+2
View File
@@ -30,6 +30,8 @@ that merging new upstream releases stays a triage exercise, not an archaeology d
| 2026-08-03 | `lib/builtin-themes.ts` | add `builtin-vnclagoon` theme (navy+cyan, DM Sans/Syne, @font-face) | VNClagoon brand theme |
| 2026-08-03 | `lib/admin/types.ts` | `DEFAULT_THEME_POLICY.defaultThemeId``builtin-vnclagoon` | make VNClagoon the default theme |
| 2026-08-03 | `stores/theme-store.ts` | default `theme`/`resolvedTheme``dark` | dark-first per VNClagoon styleguide |
| 2026-08-03 | `lib/builtin-themes.ts` | add `builtin-src` theme (Swiss red on white, light-first) | 2nd brand theme (SRC Advisory); VNClagoon stays default |
| 2026-08-03 | `public/branding/src-logo.svg` (new) | SRC mountain mark | SRC brand (placeholder — swap official) |
_Note: Vercel was tried and **abandoned** on 2026-08-03. Bulwark writes to a local
data dir (`/app/data/*`); Vercel serverless has a read-only filesystem → crash