Site Settings -> Branding now supports a Primary/Secondary/Accent brand color system applied site-wide (buttons, nav, hover states, links) and to outgoing email header/CTA colors, plus a favicon upload alongside the existing logo upload, a live preview panel (website/email x desktop/mobile), and logo-based color suggestions. The setup wizard's Branding step got the same treatment. Fixes two related bugs found along the way: the setup wizard's logo/favicon upload was missing its auth token, and a static favicon.ico in Next's special app/ convention path was silently overriding the dynamic one. Also replaces every "Hope Events"/"Hope Family Church" default (org name, email subjects, WhatsApp messages, report metadata, API docs) with a neutral "Cross Code" placeholder, and the optional legal settings (operator name, IO details, website URL, effective date) with obviously-generic placeholders instead of defaulting to real personal/organisational details -- since this platform is deployed for multiple organisations. Adds SETTINGS.md documenting every setting's default behaviour. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
75 lines
2.2 KiB
CSS
75 lines
2.2 KiB
CSS
@tailwind base;
|
|
@tailwind components;
|
|
@tailwind utilities;
|
|
|
|
/*
|
|
* Design tokens for shadcn/ui primitives (components.json: baseColor "slate",
|
|
* cssVariables: true). Base scale is shadcn's stock "slate" theme.
|
|
*
|
|
* --primary/--primary-foreground/--ring/--secondary/--secondary-foreground/
|
|
* --accent/--accent-foreground/--brand-50..900 below are DEFAULTS ONLY — used
|
|
* before any branding setting has been saved, or if the server-side settings
|
|
* fetch fails for a request. The real values come from the admin's saved
|
|
* primary_color/secondary_color/accent_color settings, computed via
|
|
* lib/colorScale.ts and injected per-request as a `<style id="brand-theme">`
|
|
* override in layout.tsx (see buildThemeCssVars). This intentionally reverses
|
|
* an earlier decision (commit 8e6cb542) that kept the accent color scoped to
|
|
* a single inline style on the navbar's org-name text — branding now flows
|
|
* through these same tokens site-wide and into outgoing emails.
|
|
*/
|
|
@layer base {
|
|
:root {
|
|
--background: 0 0% 100%;
|
|
--foreground: 222.2 84% 4.9%;
|
|
|
|
--card: 0 0% 100%;
|
|
--card-foreground: 222.2 84% 4.9%;
|
|
|
|
--popover: 0 0% 100%;
|
|
--popover-foreground: 222.2 84% 4.9%;
|
|
|
|
--primary: 243 75% 59%;
|
|
--primary-foreground: 210 40% 98%;
|
|
|
|
--secondary: 210 40% 96.1%;
|
|
--secondary-foreground: 222.2 47.4% 11.2%;
|
|
|
|
--muted: 210 40% 96.1%;
|
|
--muted-foreground: 215.4 16.3% 46.9%;
|
|
|
|
--accent: 210 40% 96.1%;
|
|
--accent-foreground: 222.2 47.4% 11.2%;
|
|
|
|
--destructive: 0 84.2% 60.2%;
|
|
--destructive-foreground: 210 40% 98%;
|
|
|
|
--border: 214.3 31.8% 91.4%;
|
|
--input: 214.3 31.8% 91.4%;
|
|
--ring: 243 75% 59%;
|
|
|
|
--radius: 0.5rem;
|
|
|
|
/* Fallback brand scale (matches the pre-branding-feature default indigo, brand-600 #4F46E5) */
|
|
--brand-50: #EEF2FF;
|
|
--brand-100: #E0E7FF;
|
|
--brand-200: #C7D2FE;
|
|
--brand-300: #A5B4FC;
|
|
--brand-400: #818CF8;
|
|
--brand-500: #6366F1;
|
|
--brand-600: #4F46E5;
|
|
--brand-700: #4338CA;
|
|
--brand-800: #3730A3;
|
|
--brand-900: #312E81;
|
|
}
|
|
}
|
|
|
|
@layer base {
|
|
* {
|
|
@apply border-border;
|
|
}
|
|
}
|
|
|
|
html {
|
|
scroll-behavior: smooth;
|
|
}
|