Files
dezky/apps/website/utils/landingTokens.ts
T
Ronni Baslund 4c57d41350 feat(website): rewrite hero headline and switch brand domain to .eu
Hero headline was a broken comma-splice ("Den produktivitetssuite, dine data
bliver i Danmark med."); replace with a clean two-sentence line in both
languages:
  da: "Din digitale arbejdsplads. Data der bliver i EU."
  en: "Your digital workplace. Data that stays in the EU."

Also move all brand references off the unowned dezky.com to dezky.eu
(status page, app dashboard mockup, config/comments). External domains
(zulip.com, Google Fonts) are left untouched.
2026-06-05 12:29:50 +02:00

80 lines
2.1 KiB
TypeScript

// Dezky landing — brand palette, locked logo geometry, and theme helper.
// Ported from the Claude Design handoff (landing-sections.jsx). The marketing
// site is self-contained colour-wise: it does NOT consume the app's tokens.css
// dark/light variables — it threads a `theme` object through components exactly
// like the prototype did, so the handoff stays pixel-faithful.
export const C = {
carbon: '#0A0A0A',
signal: '#D4FF3A',
bone: '#F4F3EE',
slate: '#3D3D38',
fog: '#E6E4DC',
paper: '#FAFAF7',
ok: '#1F8A5B',
warn: '#E89A1F',
bad: '#E23030',
} as const
// Locked Node-mark geometry — the values the user dialled in via Tweaks and
// then froze (chat1). Every NodeMark usage in the design passed exactly these.
export const LOCKED = {
bowlR: 14,
stemW: 7,
contR: 22,
dStyle: 'donut',
dotPos: 'corner',
dotR: 4,
} as const
export interface DezkyTheme {
bg: string
bgAlt: string
surface: string
surfaceAlt: string
border: string
borderStrong: string
fg: string
fgMuted: string
fgDim: string
invert: string
invertFg: string
signal: string
}
export function makeTheme(dark: boolean): DezkyTheme {
return dark
? {
bg: '#0A0A0A',
bgAlt: '#121211',
surface: '#171715',
surfaceAlt: '#1F1F1C',
border: 'rgba(255,255,255,0.08)',
borderStrong: 'rgba(255,255,255,0.18)',
fg: '#F4F3EE',
fgMuted: 'rgba(244,243,238,0.62)',
fgDim: 'rgba(244,243,238,0.42)',
invert: '#F4F3EE',
invertFg: '#0A0A0A',
signal: C.signal,
}
: {
bg: C.paper,
bgAlt: C.bone,
surface: '#FFFFFF',
surfaceAlt: C.bone,
border: C.fog,
borderStrong: 'rgba(10,10,10,0.14)',
fg: C.carbon,
fgMuted: 'rgba(10,10,10,0.62)',
fgDim: 'rgba(10,10,10,0.42)',
invert: C.carbon,
invertFg: C.bone,
signal: C.signal,
}
}
// The destination the nav/login CTA points at. Production is app.dezky.eu;
// locally the portal runs at app.dezky.local.
export const APP_URL = 'https://app.dezky.local'