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:
co-authored by
Claude Opus 4.8
parent
be7bfd1f02
commit
1bc5a6a0ce
@@ -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;
|
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[] = [
|
export const BUILTIN_THEMES: InstalledTheme[] = [
|
||||||
{
|
{
|
||||||
id: 'builtin-vnclagoon',
|
id: 'builtin-vnclagoon',
|
||||||
@@ -1024,6 +1109,17 @@ export const BUILTIN_THEMES: InstalledTheme[] = [
|
|||||||
enabled: true,
|
enabled: true,
|
||||||
builtIn: 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',
|
id: 'builtin-qui',
|
||||||
name: 'Qui',
|
name: 'Qui',
|
||||||
|
|||||||
@@ -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 |
@@ -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/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 | `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 | `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
|
_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
|
data dir (`/app/data/*`); Vercel serverless has a read-only filesystem → crash
|
||||||
|
|||||||
Reference in New Issue
Block a user